limo
Oct 26, 2017
visibility 8316
star star star star star
(2 votes)

Hiding properties in the built-in Link dialog

What I wanted to do was to hide the Title property in the built-in Link dialog.

Image linkdialog.png

When searching here on World I found several posts that talk about extending EpiLink with custom properties, such as:

But if I only need to hide a property, could this not be done using an EditorDescriptor instead of creating a custom dojo editor, overriding the LinkModel and all the rest?...

I was happy when I discovered that the answer is Yes :) 

I tried some variations of the below before finding the correct TargetType and way to get at the properties. This solution worked for me in a site that runs CMS 10.7:

    [EditorDescriptorRegistration(
        TargetType = typeof(LinkModel),
        EditorDescriptorBehavior = EditorDescriptorBehavior.ExtendBase)]
    public class EpiLinkEditorDescriptor : EditorDescriptor
    {
        public override void ModifyMetadata(ExtendedMetadata metadata, IEnumerable<Attribute> attributes)
        {
            base.ModifyMetadata(metadata, attributes);
            foreach (var prop in metadata.Properties)
            {
                if (prop.PropertyName == "Title")
                {
                    prop.ShowForEdit = false;
                }
            }
        }
    }

This hides the property both in the Link dialog that opens when adding a link in the TinyMCE editor and in the Link dialog used when adding a LinkItem (the same model is used in both cases).

Image linkdialog_notitlefield.PNG

If there is a better way of doing this, please let me know!

Oct 26, 2017

Comments

Petra Liljecrantz
Petra Liljecrantz Oct 26, 2017 01:54 PM

Nice! I will definitely try this out to hide stuff from editors :) Thanks!

error Please login to comment.
Latest blogs
Extending a Contract: What You Can Override

Contracts share fields across content types — but not every field setting can be overridden. Push the same contract onto several components, and CM...

Chirag Khanna | Sep 18, 2026 |

Building a Blazor Server UI Inside the Optimizely CMS 13 Admin Shell

What I learned shipping a Blazor Server UI inside Optimizely CMS 13 — Razor components in a NuGet package, the Blazor hub next to MapContent(),...

Stanisław Szołkowski | Sep 17, 2026 |

Giving Optimizely 13 Content Types Meaningful Icons and Thumbnails

When working with an Optimizely CMS solution that has evolved over time, it is common to end up with many content types. As the number grows, the...

Pär Wissmark | Sep 16, 2026 |

force-dynamic vs connection() for Optimizely Graph

If you have built an Optimizely CMS SDK site, you already know getContentByPath on a catch-all. This post is about the part that file never says ou...

Chirag Khanna | Sep 16, 2026 |

I built a thing - nOSC & nOCP - an experiment?

I don't think I'm always that convensional . And that's where this starts... So firstly, I was lucky enough to see OCP UI extensions for Optimizey...

Matt Pallatt | Sep 15, 2026

A day in the life of an Optimizely OMVP: OptiA11y: accessibility help for Optimizely editors that refuses to lie to them

Most accessibility tooling in the CMS space has the same shape. A crawler walks your published site, renders each page, runs axe-core over the DOM,...

Graham Carr | Sep 15, 2026