Exemplo n.º 1
0
        public AdminTree GetMediaCategoryNodes(int?id)
        {
            AdminTree adminTree = GetSimpleAdminTree <MediaCategory>(id, "glyphicon glyphicon-picture");

            adminTree.RootContoller = "MediaCategory";
            return(adminTree);
        }
Exemplo n.º 2
0
        public AdminTree GetLayoutNodes(int?id)
        {
            AdminTree adminTree = GetSimpleAdminTree <Layout>(id, "glyphicon glyphicon-th-large");

            adminTree.RootContoller = "Layout";
            return(adminTree);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
 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);
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        public PartialViewResult LayoutTree(int?id)
        {
            AdminTree admintree = _treeNavService.GetLayoutNodes(id);

            return(PartialView("TreeList", admintree));
        }
Exemplo n.º 12
0
        public PartialViewResult MediaTree(int?id)
        {
            AdminTree admintree = _treeNavService.GetMediaCategoryNodes(id);

            return(PartialView("TreeList", admintree));
        }
Exemplo n.º 13
0
        public PartialViewResult WebSiteTree(int?id)
        {
            AdminTree admintree = _treeNavService.GetWebpageNodes(id);

            return(PartialView("TreeList", admintree));
        }