Programmatically move or hide Episerver Forms Actors in Edit View
The built-in "Send Email"-Actor in Episerver Forms lives on the Settings tab in Edit View by default.
My customer wanted to move everything to do with sending a form to a separate tab, including the actors, and hide the webhook actor.
The only solution I found online was to do it from the Admin interface, but I wanted to do this programmatically to avoid having to change the property setting from Admin after deploy to our various environments.
I tried using an Editor Descriptor but could not quite get it to work, so I asked the Episerver Developer Support and got the following solution from them that worked perfectly:
[EditorDescriptorRegistration(
TargetType = typeof(IEnumerable<EmailTemplateActorModel>),
UIHint = "EmailTemplateActorEditor",
EditorDescriptorBehavior = EditorDescriptorBehavior.OverrideDefault)]
public class EmailTemplateActorEditorDescriptor : CollectionEditorDescriptor<EmailTemplateActorModel>
{
public EmailTemplateActorEditorDescriptor()
{
ClientEditingClass = "epi-forms/contentediting/editors/EmailTemplateActorEditor";
}
public override void ModifyMetadata(ExtendedMetadata metadata, IEnumerable<Attribute> attributes)
{
GridDefinition.GridSettings["richTextColumns"] = new[] { "body" };
base.ModifyMetadata(metadata, attributes);
metadata.GroupName = GlobalSettings.GroupNames.SendTab;
metadata.Order = 50;
//...if you want to hide the actor, set metadata.ShowForEdit = false;
}
}
(The Send Email actor contains a rich text editor, which is why the GridDefinition settings are needed when overriding the Metadata function above.)
I hope this can help others that would like to do the same thing.
Comments