Esempio n. 1
0
        public IEnumerable <TreeNode> GetChildren(string nodeType, string nodeId)
        {
            switch (nodeType)
            {
            case "root":
                return(new[] {
                    GetTaxonomiesNode()
                });

            case "taxonomies":
                return(_taxonomyService.GetTaxonomies()
                       .Select(GetTaxonomyNode)
                       .OrderBy(n => n.Title)
                       .ToList());

            case "taxonomy":
                var taxonomyId = int.Parse(nodeId);
                return(_taxonomyService.GetTerms(taxonomyId)
                       .Where(t => t.Path.Trim('/') == "")
                       .Select(
                           t => new TreeNode {
                    Title = t.Name,
                    Type = "taxonomy-term",
                    Id = t.Id.ToString(CultureInfo.InvariantCulture),
                    Url = _url.ItemEditUrl(t)
                }
                           )
                       .OrderBy(n => n.Title)
                       .ToList());

            case "taxonomy-term":
                var termId         = int.Parse(nodeId);
                var term           = _taxonomyService.GetTerm(termId);
                var childTermNodes = _taxonomyService
                                     .GetChildren(term)
                                     .Select(GetTermNode)
                                     .OrderBy(n => n.Title);
                var childItems = _taxonomyService
                                 .GetContentItemsQuery(term)
                                 .Where(i => i.Terms.Any(tr => tr.TermRecord.Id == term.Id))
                                 .List()
                                 .Select(GetContentItemNode)
                                 .OrderBy(n => n.Title);
                return(childTermNodes
                       .Union(childItems)

                       .ToList());
            }
            return(new TreeNode[0]);
        }
Esempio n. 2
0
        protected override DriverResult Display(TermWidgetPart part, string displayType, dynamic shapeHelper)
        {
            return(ContentShape("Parts_TermWidget_List",
                                () => {
                var termPart = _taxonomyService.GetTerm(part.TermPartRecord.Id);
                var query = _taxonomyService.GetContentItemsQuery(termPart, part.FieldName);

                Expression <Func <CommonPartRecord, DateTime?> > orderBy = d => d.CreatedUtc;
                switch (part.OrderBy)
                {
                case "Created": orderBy = d => d.CreatedUtc; break;

                case "Published": orderBy = d => d.PublishedUtc; break;

                case "Modified": orderBy = d => d.ModifiedUtc; break;
                }

                var results = query.Join <CommonPartRecord>().OrderByDescending(orderBy);

                if (!String.IsNullOrWhiteSpace(part.ContentType))
                {
                    results = results.Where(x => x.ContentItemRecord.ContentType.Name == part.ContentType);
                }

                // build the Summary display for each content item
                var list = shapeHelper.List();
                list.AddRange(
                    results
                    .Slice(0, part.Count)
                    .ToList()
                    .Select(tp => _contentManager.BuildDisplay(tp.ContentItem, "Summary"))
                    );

                return shapeHelper.Parts_TermWidget_List(ContentPart: part, ContentItems: list);
            }));
        }