public static void RenderContentStartNodes(int userId, TreeControllerBase sender, TreeNodesRenderingEventArgs e) { StartNodeCollection startNodes = StartNodeRepository.GetCachedStartNodesByUserId(userId, sender.ApplicationContext, sender.DatabaseContext); if (startNodes.Content == null) { return; } if (startNodes.Content.Any()) { // Remove default start nodes e.Nodes.Clear(); IEnumerable <IUmbracoEntity> startNodesEntities = sender.Services.EntityService.GetAll(Umbraco.Core.Models.UmbracoObjectTypes.Document, startNodes.Content); // Feels like a lot of duct tape. A lot taken from: // https://github.com/umbraco/Umbraco-CMS/blob/5397f2c53acbdeb0805e1fe39fda938f571d295a/src/Umbraco.Web/Trees/ContentTreeController.cs#L75 foreach (IUmbracoEntity startNodeEntity in startNodesEntities) { UmbracoEntity entity = (UmbracoEntity)startNodeEntity; // Not as safe as the approach in core // https://github.com/umbraco/Umbraco-CMS/blob/5397f2c53acbdeb0805e1fe39fda938f571d295a/src/Umbraco.Core/Models/UmbracoEntityExtensions.cs#L34 bool isContainer = (entity.AdditionalData.ContainsKey("IsContainer") && entity.AdditionalData["IsContainer"].ToString() == "True"); TreeNode node = sender.CreateTreeNode( startNodeEntity.Id.ToInvariantString(), "-1", e.QueryStrings, startNodeEntity.Name, entity.ContentTypeIcon, entity.HasChildren && (isContainer == false) ); AddQueryStringsToAdditionalData(node, e.QueryStrings); if (e.QueryStrings.Get("isDialog") == "true") { node.RoutePath = "#"; } // TODO: How should we order nodes? e.Nodes.Add(node); } } }
public static void RenderMediaStartNodes(int userId, TreeControllerBase sender, TreeNodesRenderingEventArgs e) { StartNodeCollection startNodes = StartNodeRepository.GetCachedStartNodesByUserId(userId, sender.ApplicationContext, sender.DatabaseContext); if (startNodes.Media == null) { return; } if (startNodes.Media.Any()) { // Remove default start nodes e.Nodes.Clear(); IEnumerable <IUmbracoEntity> startNodesEntities = sender.Services.EntityService.GetAll(Umbraco.Core.Models.UmbracoObjectTypes.Media, startNodes.Media); foreach (IUmbracoEntity startNodeEntity in startNodesEntities) { UmbracoEntity entity = (UmbracoEntity)startNodeEntity; bool isContainer = (entity.AdditionalData.ContainsKey("IsContainer") && entity.AdditionalData["IsContainer"].ToString() == "True"); TreeNode node = sender.CreateTreeNode( startNodeEntity.Id.ToInvariantString(), "-1", e.QueryStrings, startNodeEntity.Name, entity.ContentTypeIcon, entity.HasChildren && (isContainer == false) ); node.AdditionalData.Add("contentType", entity.ContentTypeAlias); if (isContainer) { node.SetContainerStyle(); node.AdditionalData.Add("isContainer", true); } // TODO: How should we order nodes? e.Nodes.Add(node); } } }
void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e) { if (sender.TreeAlias == "vendr" && e.QueryStrings["nodeType"] == Vendr.Core.Constants.Entities.EntityTypes.Store) { var index = e.Nodes.Count; var mainRoute = "commerce/vendrreviews"; var storeId = e.QueryStrings["id"]; var id = Constants.Trees.Reviews.Id; var reviewsNode = sender.CreateTreeNode(id, storeId, e.QueryStrings, "Reviews", Constants.Trees.Reviews.Icon, false, $"{mainRoute}/review-list/{storeId}"); reviewsNode.Path = $"-1,{storeId},{id}"; reviewsNode.NodeType = Constants.Trees.Reviews.NodeType; reviewsNode.AdditionalData.Add("storeId", storeId); reviewsNode.AdditionalData.Add("tree", Vendr.Web.Constants.Trees.Stores.Alias); reviewsNode.AdditionalData.Add("application", Vendr.Web.Constants.Sections.Commerce); e.Nodes.Insert(index, reviewsNode); } }
void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e) { if (sender.TreeAlias == Vendr.Core.Constants.System.ProductAlias && e.QueryStrings["nodeType"] == Vendr.Core.Constants.Entities.EntityTypes.Store) { var mainRoute = Vendr.Umbraco.Constants.Sections.Commerce + "/" + Constants.System.ProductAlias; var storeId = e.QueryStrings["id"]; var id = Constants.Trees.Reviews.Id; var reviewsNode = sender.CreateTreeNode(id, storeId, e.QueryStrings, "Reviews", Constants.Trees.Reviews.Icon, false, $"{mainRoute}/review-list/{storeId}"); reviewsNode.Path = $"-1,{storeId},{id}"; reviewsNode.NodeType = Constants.Trees.Reviews.NodeType; reviewsNode.AdditionalData.Add("storeId", storeId); reviewsNode.AdditionalData.Add("tree", Vendr.Umbraco.Constants.Trees.Stores.Alias); reviewsNode.AdditionalData.Add("application", Vendr.Umbraco.Constants.Sections.Commerce); var optNodeIndex = e.Nodes.FindIndex(x => x.NodeType == "Options"); var index = optNodeIndex >= 0 ? optNodeIndex : e.Nodes.Count; e.Nodes.Insert(index, reviewsNode); } }