public AdminTree GetMediaCategoryNodes(int?id) { AdminTree adminTree = GetSimpleAdminTree <MediaCategory>(id, "glyphicon glyphicon-picture"); adminTree.RootContoller = "MediaCategory"; return(adminTree); }
public AdminTree GetLayoutNodes(int?id) { AdminTree adminTree = GetSimpleAdminTree <Layout>(id, "glyphicon glyphicon-th-large"); adminTree.RootContoller = "Layout"; return(adminTree); }
public async Task SaveAsync(AdminTree tree) { var adminTreeList = await GetAdminTreeList(); var session = GetSession(); var preexisting = adminTreeList.AdminTrees.Where(x => x.Id == tree.Id).FirstOrDefault(); // it's new? add it if (preexisting == null) { adminTreeList.AdminTrees.Add(tree); } else // not new: replace it { var index = adminTreeList.AdminTrees.IndexOf(preexisting); adminTreeList.AdminTrees[index] = tree; } session.Save(adminTreeList); _memoryCache.Set(AdminTreesCacheKey, adminTreeList); _signal.SignalToken(AdminTreesCacheKey); }
public AdminTree GetTree(int?id) { AdminTree adminTree = new AdminTree { RootContoller = "Webpage" }; IQueryOver <Webpage, Webpage> query = _session.QueryOver <Webpage>().Where(x => x.Parent.Id == id); int maxChildNodes = 1000; if (id.HasValue) { Webpage parent = _session.Get <Webpage>(id); if (parent != null) { DocumentMetadata metaData = parent.GetMetadata(); maxChildNodes = metaData.MaxChildNodes; query = ApplySort(metaData, query); } } else { adminTree.IsRootRequest = true; query = query.OrderBy(x => x.DisplayOrder).Asc; } int rowCount = query.Cacheable().RowCount(); query.Take(maxChildNodes).Cacheable().List().ForEach(doc => { DocumentMetadata documentMetadata = doc.GetMetadata(); AdminTreeNode node = new AdminTreeNode { Id = doc.Id, ParentId = doc.ParentId, Name = doc.Name, IconClass = documentMetadata.IconClass, NodeType = "Webpage", Type = documentMetadata.Type.FullName, HasChildren = _treeNavService.GetWebpageNodes(doc.Id).Nodes.Any(), Sortable = documentMetadata.Sortable, CanAddChild = _validWebpageChildrenService.AnyValidWebpageDocumentTypes(doc), IsPublished = doc.Published, RevealInNavigation = doc.RevealInNavigation, Url = _urlHelper.Action("Edit", "Webpage", new { id = doc.Id }) }; adminTree.Nodes.Add(node); }); if (rowCount > maxChildNodes) { adminTree.Nodes.Add(new AdminTreeNode { IconClass = "glyphicon glyphicon-plus", IsMoreLink = true, ParentId = id, Name = (rowCount - maxChildNodes) + " More", Url = _urlHelper.Action("Search", "WebpageSearch", new { parentId = id }), }); } return(adminTree); }
public async Task <int> DeleteAsync(AdminTree tree) { var adminTreeList = await GetAdminTreeList(); var session = GetSession(); var count = adminTreeList.AdminTrees.RemoveAll(x => String.Equals(x.Id, tree.Id)); session.Save(adminTreeList); _memoryCache.Set(AdminTreesCacheKey, adminTreeList); _signal.SignalToken(AdminTreesCacheKey); return(count); }
private async Task BuildTreeAsync(AdminTree tree, NavigationBuilder builder) { foreach (MenuItem node in tree.MenuItems) { var nodeBuilder = _nodeBuilders.Where(x => x.Name == node.GetType().Name).FirstOrDefault(); if (nodeBuilder != null) { await nodeBuilder.BuildNavigationAsync(node, builder, _nodeBuilders); } else { Logger.LogError("No Builder registered for admin node of type '{TreeNodeName}'", node.GetType().Name); } } }
public AdminTree GetTree(int?id) { Webpage parent = id.HasValue ? _session.Get <Webpage>(id) : null; var adminTree = new AdminTree { RootContoller = "Webpage", IsRootRequest = parent == null }; int maxChildNodes = parent == null ? 1000 : parent.GetMetadata().MaxChildNodes; IQueryOver <Webpage, Webpage> query = GetQuery(parent); int rowCount = GetRowCount(query); query.Take(maxChildNodes).Cacheable().List().ForEach(doc => { DocumentMetadata documentMetadata = doc.GetMetadata(); var node = new AdminTreeNode { Id = doc.Id, ParentId = doc.ParentId, Name = doc.Name, IconClass = documentMetadata.IconClass, NodeType = "Webpage", Type = documentMetadata.Type.FullName, HasChildren = _treeNavService.WebpageHasChildren(doc.Id), Sortable = documentMetadata.Sortable, CanAddChild = _validWebpageChildrenService.AnyValidWebpageDocumentTypes(doc), IsPublished = doc.Published, RevealInNavigation = doc.RevealInNavigation, Url = _urlHelper.Action("Edit", "Webpage", new { id = doc.Id }) }; adminTree.Nodes.Add(node); }); if (rowCount > maxChildNodes) { adminTree.Nodes.Add(new AdminTreeNode { IconClass = "glyphicon glyphicon-plus", IsMoreLink = true, ParentId = id, Name = (rowCount - maxChildNodes) + " More", Url = _urlHelper.Action("Search", "WebpageSearch", new { parentId = id }), }); } return(adminTree); }
public async Task <IActionResult> Create(AdminTreeCreateViewModel model) { if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageAdminTree)) { return(Unauthorized()); } if (ModelState.IsValid) { var tree = new AdminTree { Name = model.Name }; await _adminTreeService.SaveAsync(tree); return(RedirectToAction(nameof(List))); } return(View(model)); }
private async Task <AdminNodeListViewModel> BuildDisplayViewModel(AdminTree tree) { var thumbnails = new Dictionary <string, dynamic>(); foreach (var factory in _factories) { var treeNode = factory.Create(); dynamic thumbnail = await _displayManager.BuildDisplayAsync(treeNode, this, "TreeThumbnail"); thumbnail.TreeNode = treeNode; thumbnails.Add(factory.Name, thumbnail); } var model = new AdminNodeListViewModel { AdminTree = tree, Thumbnails = thumbnails, }; return(model); }
private AdminTree GetSimpleAdminTree <T>(int?id, string iconClass) where T : Document { AdminTree adminTree = new AdminTree(); if (!id.HasValue) { adminTree.IsRootRequest = true; } IList <T> query = _session.QueryOver <T>() .Where(x => x.Parent.Id == id && (x.HideInAdminNav == false || x.HideInAdminNav == null)) .OrderBy(x => x.Name) .Asc.Cacheable() .List(); query.ForEach(doc => { Type type = typeof(T); AdminTreeNode node = new AdminTreeNode { Id = doc.Id, ParentId = doc.ParentId, Name = doc.Name, IconClass = iconClass, NodeType = type.Name, Type = type.FullName, HasChildren = _session.QueryOver <T>().Where(arg => arg.Parent.Id == doc.Id).Cacheable().Any(), CanAddChild = true, IsPublished = true, RevealInNavigation = true, Url = _urlHelper.Action(typeof(T) == typeof(Layout) ? "Edit" : "Show", type.Name, new { id = doc.Id }) }; adminTree.Nodes.Add(node); }); return(adminTree); }
public PartialViewResult LayoutTree(int?id) { AdminTree admintree = _treeNavService.GetLayoutNodes(id); return(PartialView("TreeList", admintree)); }
public PartialViewResult MediaTree(int?id) { AdminTree admintree = _treeNavService.GetMediaCategoryNodes(id); return(PartialView("TreeList", admintree)); }
public PartialViewResult WebSiteTree(int?id) { AdminTree admintree = _treeNavService.GetWebpageNodes(id); return(PartialView("TreeList", admintree)); }