コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }