Attaching elements
Step 15 - Adding Workflow Action to Page Elements
Our final step, is adding a workflow action to the page elements.
The creation of workflows is beyond the scope of the tutorial, so we use reuse the existing edit page workflow.
[ConfigurationElementType(typeof(NonConfigurableElementAttachingProvider))] public sealed class MyElementAttachingProvider : IElementAttachingProvider { // ...the code skipped for readability - see Step 3, 7, 10, 14 private static readonly ActionGroup ActionGroup = new ActionGroup("My tasks", ActionGroupPriority.PrimaryLow); private static ResourceHandle EditPage = GetIconHandle("page-edit-page"); // ...the code skipped for readability - see Step 3, 7, 10, 14 public IEnumerable<Element> GetChildren(EntityToken parentEntityToken, Dictionary<string, string> piggybag) { using (DataConnection connection = new DataConnection()) { if ((parentEntityToken is MyRootEntityToken) == true) { // ...the code skipped for readability - see Step 3, 7, 10, 14 } else { // ...the code skipped for readability - see Step 3, 7, 10, 14 foreach (IPage page in pages) { Element element = new Element(this.Context.CreateElementHandle(page.GetDataEntityToken())) { VisualData = new ElementVisualizedData { Label = page.Title, ToolTip = page.Title, HasChildren = false, Icon = icon } }; // ...the code skipped for readability - see Step 3, 7, 10, 14 element.AddAction( new ElementAction(new ActionHandle(new WorkflowActionToken( WorkflowFacade.GetWorkflowType( "Composite.StandardPlugins.Elements.ElementProviders.PageElementProvider.EditPageWorkflow"), new PermissionType[] { PermissionType.Administrate }))) { VisualData = new ActionVisualizedData { Label = "Edit page", ToolTip = "Eidt page", Icon = EditPage, Disabled = false, ActionLocation = new ActionLocation { ActionType = ActionType.Edit, IsInFolder = false, IsInToolbar = true, ActionGroup = ActionGroup } } }); yield return element; } } } } // ...the code skipped for readability - see Step 3, 7, 10, 14 }
Adding a workflow action is similar to adding our URL action. It’s just done with a different action token type.