private async Task <ContentTreeItem> BuildContentTree(ContentItem contentItem, string selectedContentItemId) { if (contentItem != null) { var childContentItems = await _listContainerService.GetChildContentItems(contentItem.ContentItemId, VersionOptions.Latest); var vm = new ContentTreeItem() { Id = contentItem.ContentItemId, ContentItem = contentItem, Name = contentItem.DisplayText }; vm.Href = await GetContentItemDisplayUrl(contentItem); vm.IsActive = !string.IsNullOrEmpty(selectedContentItemId) && selectedContentItemId == contentItem.ContentItemId; vm.ContentItemState.Selected = vm.IsActive; vm.ContentItemState.Expanded = vm.IsActive; if (childContentItems != null) { foreach (var child in childContentItems) { await WalkTree(child, vm, selectedContentItemId); } } return(vm); } return(null); }
public async Task <dynamic> DisplayAsync(ContentTreeItem tree, bool isRoot, string linksmode, bool showActionsMenu) { List <dynamic> children = new List <dynamic>(); if (tree.Children.Count > 0) { foreach (var child in tree.Children) { children.Add(await DisplayAsync(child, false, linksmode, showActionsMenu)); } } dynamic treeNodeShape; if (isRoot) //IS ROOT // if (tree.ContentItem.ContentItemId == "4r7gn6nnc1bnw39tch07xxgcdx") //IS ROOT { treeNodeShape = await _shapeFactory.ListView_RootTreeItem( Content : tree.ContentItem, Title : $"{tree.Name}", // Path: tree.Path, //Level: tree.Level, IsActive : tree.IsActive, LinksMode : linksmode // Editable: false ); if (showActionsMenu) { treeNodeShape.Actions = await _shapeFactory.ListView_TreeItemActions(ContentItem : tree.ContentItem, HasChildren : tree.Children.Count > 0); } } else { treeNodeShape = await _shapeFactory.ListView_TreeItem( Content : tree.ContentItem, Title : $"{tree.Name}", // Title: String.Format("{0} ({1})", tree.Title, tree.ContentItem.ContentType), // Path: tree.Path, //Level: tree.Level, IsActive : tree.IsActive, LinksMode : linksmode // Editable: _treePermissionProviders.All(p => p.Editable(tree.ContentItem).Result) // Actions: await _shapeFactory.ListView_TreeItemActions(ContentItem: tree.ContentItem, // HasChildren: tree.Children.Count > 0) ); if (showActionsMenu) { treeNodeShape.Actions = await _shapeFactory.ListView_TreeItemActions(ContentItem : tree.ContentItem, HasChildren : tree.Children.Count > 0); } } // treeNodeShape.NoHide = treeNodeShape.Editable || children.Any(c => c.Editable || c.NoHide); treeNodeShape.Children = children; return(treeNodeShape); }
private async Task WalkTreeFromInMemoryCollection(ContentItem contentItem, ContentTreeItem vm, string selectedContentItemId, IEnumerable <ContentItem> inMemoryCollection) { //add root var node = new ContentTreeItem() { Id = contentItem.ContentItemId, ContentItem = contentItem, Name = contentItem.DisplayText }; node.Href = await GetContentItemDisplayUrl(contentItem); node.IsActive = !string.IsNullOrEmpty(selectedContentItemId) && selectedContentItemId == contentItem.ContentItemId; node.ContentItemState.Selected = node.IsActive; node.ContentItemState.Expanded = node.IsActive; vm.Children.Add(node); var childContentItems = await _listContainerService.GetChildContentItems(contentItem.ContentItemId, VersionOptions.Latest); // var childContentItems = inMemoryCollection.Where(x=> x.l) (contentItem.ContentItemId, VersionOptions.Latest); if (childContentItems != null) { foreach (var childterm in childContentItems) { await WalkTreeFromInMemoryCollection(childterm, node, selectedContentItemId, inMemoryCollection); } } }
public async Task <ContentTreeItem> BuildContentTreeForListableContentTypesAsync() { //1 .Get ContentTypes with ListPart var contentTreeItem = new ContentTreeItem(); var listableContentTypeDefinitions = _contentDefinitionManager .ListTypeDefinitions() .Where(x => x.Parts.Any(p => p.PartDefinition.Name == "ListPart")) ; var urlHelperFactory = _serviceProvider.GetRequiredService <IUrlHelperFactory>(); _urlHelper = urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext); foreach (var listableContentTypeDefintion in listableContentTypeDefinitions) { //2 Get all content items for this content type (eg Policy content type => get all policies) //3 for each policy get children //add list content type definition var listContentTypeDefinition = new ContentTreeItem() { Id = listableContentTypeDefintion.Name, ContentItem = null, Name = listableContentTypeDefintion.DisplayName }; var listableContentItems = await(_session .Query <ContentItem, ContentItemIndex>() .Where(x => x.ContentType == listableContentTypeDefintion.Name && x.Published) .ListAsync()); foreach (var contentItem in listableContentItems) { var vm = new ContentTreeItem() { Id = contentItem.ContentItemId, ContentItem = contentItem, Name = contentItem.DisplayText }; vm.Href = await GetContentItemDisplayUrl(contentItem); // vm.IsActive = !string.IsNullOrEmpty(selectedContentItemId) && selectedContentItemId == contentItem.ContentItemId; vm.ContentItemState.Selected = vm.IsActive; vm.ContentItemState.Expanded = vm.IsActive; listContentTypeDefinition.Children.Add(vm); } contentTreeItem.Children.Add(listContentTypeDefinition); } return(contentTreeItem); }
public dynamic Display(ContentTreeItem tree) { List <dynamic> children = new List <dynamic>(); if (tree.Children.Count > 0) { foreach (var child in tree.Children) { children.Add(Display(child)); } } dynamic shape; if (tree.Content == null) { shape = _shapeFactory.Parts_TreePlaceholder( Title: String.Format("{0}*", tree.Title), Path: tree.Path, Level: tree.Level, Editable: false ); } else { shape = _shapeFactory.Parts_TreeItem( Content: tree.Content, Title: String.Format("{0} ({1})", tree.Title, tree.Content.ContentItem.ContentType), Path: tree.Path, Level: tree.Level, Editable: _treePermissionProviders.All(p => p.Editable(tree.Content)), Actions: _shapeFactory.Parts_TreeItemActions(ContentPart: tree.Content, HasChildren: tree.Children.Count > 0) ); } shape.NoHide = shape.Editable || children.Any(c => c.Editable || c.NoHide); shape.Children = children; return(shape); }
public void Discover(ShapeTableBuilder builder) { builder.Describe("TreeMap") .OnProcessing(async context => // .OnDisplaying(async context => { dynamic shape = context.Shape; ContentTreeItem contentTree = shape.ContentTree; // string selectedContentItemId =shape.SelectedContentItemId.ToString(); bool showActionsMenu = Convert.ToBoolean(shape.ShowActionsMenu); string linksmode = Convert.ToString(shape.LinksMode); // bool showRootNode = Convert.ToBoolean( shape.ShowRootNode); if (contentTree == null) { return; } shape.Classes.Add("tree-map-content-item"); // Menu population is executed when processing the shape so that its value // can be cached. IShapeDisplayEvents is called before the ShapeDescriptor // events and thus this code can be cached. var contentTreeService = context.ServiceProvider.GetRequiredService <IContentTreeService>(); var treeMapShape = await contentTreeService.DisplayAsync(contentTree, true, linksmode, showActionsMenu); // Don't use Items.Add() or the collection won't be sorted //shape.TreeMapShape = treeMapShape; shape.Add(treeMapShape); }); }