/// <summary> /// Need to check if the node being requested is a file, if so, return the rules for it, otherwise process as per normal /// </summary> /// <param name="parentId"></param> /// <param name="queryStrings"></param> /// <returns></returns> protected override UmbracoTreeResult GetTreeData(HiveId parentId, FormCollection queryStrings) { using (var uow = Hive.CreateReadonly()) { var stylesheet = uow.Repositories.Get <File>(parentId); if (!stylesheet.IsContainer) { var rules = StylesheetHelper.ParseRules(stylesheet); if (rules.Any()) { foreach (var rule in rules) { var hiveId = new HiveId(new Uri(HiveUriRouteMatch), string.Empty, new HiveIdValue(parentId.Value + "/" + rule.Name.Replace(" ", "__s__"))); var node = CreateTreeNode(hiveId, null, rule.Name, Url.GetEditorUrl("EditRule", hiveId, EditorControllerId, BackOfficeRequestContext.RegisteredComponents, BackOfficeRequestContext.Application.Settings), false, "tree-css-item"); node.AddEditorMenuItem <Delete>(this, "deleteUrl", "DeleteRule"); NodeCollection.Add(node); } } return(UmbracoTree()); } } return(base.GetTreeData(parentId, queryStrings)); }
protected override RebelTreeResult GetTreeData(HiveId parentId, FormCollection queryStrings) { using (var uow = Hive.CreateReadonly()) { var repo = uow.Repositories; var files = repo.GetAll <File>().Where(x => !x.IsContainer); // Create map of files based upon Layout properties var fileMap = TemplateHelper.CreateLayoutFileMap(files); // Choose the tree depth to render var currentKey = "None"; if (parentId != RootNodeId) { var parentFile = files.SingleOrDefault(x => x.Id == parentId); currentKey = Server.MapPath(parentFile.RootRelativePath); } // Construct tree nodes var treeNodes = fileMap[currentKey].Select(f => new { treeNode = CreateTreeNode( f.Id, queryStrings, f.GetFileNameForDisplay(), GetEditorUrl(f.Id, queryStrings), fileMap.ContainsKey(Server.MapPath(f.RootRelativePath)), f.Name.ToLower().StartsWith("_viewstart.") ? "tree-viewstart-template" : f.Name.StartsWith("_") || f.RelationProxies.GetChildRelations(FixedRelationTypes.DefaultRelationType).Any() ? "tree-master-template" : "tree-template" ), entity = f }); foreach (var file in treeNodes) { // Set menu items file.treeNode.AddEditorMenuItem <CreateItem>(this, "createUrl", "CreateNew"); file.treeNode.AddEditorMenuItem <Delete>(this, "deleteUrl", "Delete"); file.treeNode.AddMenuItem <Reload>(); // Set tree expand url if (file.treeNode.HasChildren) { file.treeNode.JsonUrl = Url.GetTreeUrl(GetType(), file.treeNode.HiveId, queryStrings); } // Add to node collection NodeCollection.Add(file.treeNode); } } return(RebelTree()); }
protected override RebelTreeResult GetTreeData(HiveId parentId, FormCollection queryStrings) { using (var uow = Hive.CreateReadonly()) { var repo = uow.Repositories; IEnumerable <File> files; //First node - get the root entities if (parentId == RootNodeId) { files = repo.GetAll <File>(); } else { //get entities from the current depth var fileRelations = repo.GetLazyChildRelations(parentId, FixedRelationTypes.DefaultRelationType); files = fileRelations.Select(x => x.Destination).OfType <File>(); } var treeNodes = files.Select(f => new { treeNode = CreateTreeNode( f.Id, queryStrings, f.GetFileNameForDisplay(), f.IsContainer ? GetDashboardUrl() : GetEditorUrl(f.Id, queryStrings) ), entity = f } ); foreach (var file in treeNodes) { if (file.entity.IsContainer) { //If container then see if it has children file.treeNode.HasChildren = repo.GetChildRelations(file.entity.Id, FixedRelationTypes.DefaultRelationType).Any(); CustomizeFolderNode(file.treeNode, queryStrings); } else { CustomizeFileNode(file.treeNode, queryStrings); } NodeCollection.Add(file.treeNode); } } return(RebelTree()); }
protected override void CustomizeFileNode(TreeNode n, FormCollection queryStrings) { n.AddEditorMenuItem <CreateItem>(this, "createUrl", "EditRule"); base.CustomizeFileNode(n, queryStrings); n.AddMenuItem <Reload>(); n.Icon = "tree-css"; using (var uow = Hive.CreateReadonly()) { var stylesheet = uow.Repositories.Get <File>(n.HiveId); var rules = StylesheetHelper.ParseRules(stylesheet); n.HasChildren = rules.Count() > 0; if (n.HasChildren) { n.JsonUrl = Url.GetTreeUrl(GetType(), n.HiveId, queryStrings); } } }