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]); }
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); })); }