public static IEnumerable <Element> GetNamespaceAndFormElements(ElementProviderContext context, string ns) { using (var data = new DataConnection()) { var allModelReferences = data.Get <IModelReference>(); var folders = new List <string>(); var formElements = new List <Element>(); if (String.IsNullOrEmpty(ns)) { var homepageIds = data.Get <IPageStructure>().Where(s => s.ParentId == Guid.Empty).Select(s => s.Id); if (homepageIds.Count() > 1) { folders.AddRange(homepageIds .Select(id => PageManager.GetPageById(id)) .Select(page => SanatizeFormName(page.Title))); } } else { allModelReferences = allModelReferences.Where(def => def.Name.StartsWith(ns + ".")); } foreach (var modelReference in allModelReferences) { var label = modelReference.Name; if (!String.IsNullOrEmpty(ns)) { label = label.Remove(0, ns.Length + 1); } var split = label.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (split.Length > 1) { var folder = split[0]; if (!folders.Contains(folder)) { folders.Add(folder); } } else if (split.Length == 1) { var token = modelReference.GetDataEntityToken(); var elementHandle = context.CreateElementHandle(token); var formElement = new Element(elementHandle) { VisualData = new ElementVisualizedData { Label = label, ToolTip = label, HasChildren = true, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; formElements.Add(formElement); } } foreach (var folder in folders.OrderBy(f => f)) { var handleNamespace = folder; if (!String.IsNullOrEmpty(ns)) { handleNamespace = ns + "." + handleNamespace; } var folderElement = NamespaceFolderEntityToken.CreateElement(context, typeof(FormBuilderElementProvider).Name, folder, handleNamespace); yield return(folderElement); } foreach (var form in formElements) { yield return(form); } } }
private static IEnumerable <Element> GetNamespaceAndResourceElements(ElementProviderContext context, string ns) { var resources = LocalizationsFacade.GetResourceKeys(ns); var folders = new List <string>(); var elements = new List <Element>(); foreach (var key in resources) { var label = key.Key; if (label == ns) { continue; } var labelParts = label.Split('.'); if (!String.IsNullOrEmpty(ns)) { var nsParts = ns.Split('.'); if (nsParts.Length > labelParts.Length) { continue; } labelParts = labelParts.Skip(nsParts.Length).ToArray(); label = String.Join(".", labelParts); } if (labelParts.Length > 1) { var folder = labelParts[0]; if (!folders.Contains(folder)) { folders.Add(folder); } } else if (labelParts.Length == 1) { var token = key.GetDataEntityToken(); var dragAndDropInfo = new ElementDragAndDropInfo(typeof(IResourceKey)); dragAndDropInfo.AddDropType(typeof(NamespaceFolderEntityToken)); dragAndDropInfo.SupportsIndexedPosition = false; var elementHandle = context.CreateElementHandle(token); var element = new Element(elementHandle, dragAndDropInfo) { VisualData = new ElementVisualizedData { Label = label, ToolTip = label, HasChildren = false, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var editActionToken = new WorkflowActionToken(typeof(EditResourceWorkflow), new[] { PermissionType.Edit }); element.AddAction(new ElementAction(new ActionHandle(editActionToken)) { VisualData = new ActionVisualizedData { Label = "Edit", ToolTip = "Edit", Icon = new ResourceHandle("Composite.Icons", "generated-type-data-edit"), ActionLocation = Actions.ActionLocation } }); var deleteActionToken = new ConfirmWorkflowActionToken("Are you sure?", typeof(DeleteResourceActionToken)); element.AddAction(new ElementAction(new ActionHandle(deleteActionToken)) { VisualData = new ActionVisualizedData { Label = "Delete", ToolTip = "Delete", Icon = new ResourceHandle("Composite.Icons", "generated-type-data-delete"), ActionLocation = Actions.ActionLocation } }); elements.Add(element); } } foreach (var folder in folders.OrderBy(f => f)) { var handleNamespace = folder; if (!String.IsNullOrEmpty(ns)) { handleNamespace = ns + "." + handleNamespace; } var folderElement = NamespaceFolderEntityToken.CreateElement(context, folder, handleNamespace); var deleteActionToken = new ConfirmWorkflowActionToken("Are you sure?", typeof(DeleteNamespaceActionToken)); folderElement.AddAction(new ElementAction(new ActionHandle(deleteActionToken)) { VisualData = new ActionVisualizedData { Label = "Delete", ToolTip = "Delete", Icon = new ResourceHandle("Composite.Icons", "generated-type-data-delete"), ActionLocation = Actions.ActionLocation } }); folderElement.AddAction(Actions.GetAddAction()); folderElement.AddAction(Actions.GetExportAction()); yield return(folderElement); } foreach (var el in elements) { yield return(el); } }