public virtual IContentList <T> Create <T>(ContentReference root, IListSettings settings) where T : IContent { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } return(this.Create <T>(this.GetContents(root, settings), settings)); }
protected internal virtual IEnumerable <IContent> GetContents(ContentReference root, IListSettings settings) { var contents = this.GetDescendants(0, root, settings); if ((settings?.IncludeRoot ?? false) && this.ContentLoader.TryGet <IContent>(root, out var rootContent)) { contents = new[] { rootContent } }
public virtual IContentList <IContent> Create(IEnumerable <ContentReference> roots, IListSettings settings) { return(this.Create <IContent>(roots, settings)); }
protected internal virtual IContentList <T> Create <T>(IEnumerable <IContent> contents, IListSettings settings) where T : IContent { var typedContents = (contents ?? Enumerable.Empty <IContent>()) .OfType <T>() .DuplicateHandled(settings) .Filter(settings) .Sort(settings) .Take(settings?.MaximumNumberOfItems ?? int.MaxValue) .ToArray(); var pagination = this.PaginationFactory.Create(settings?.Pagination?.MaximumNumberOfDisplayedPages ?? this.DefaultMaximumNumberOfDisplayedPages, typedContents.Length, this.GetPageIndexKey(settings), this.GetPageSize(settings), this.GetUrl()); return(new ContentList <T>(typedContents.Skip(pagination.Skip).Take(pagination.Take), pagination)); }
public virtual IContentList <IContent> Create(ContentReference root, IListSettings settings) { return(this.Create <IContent>(root, settings)); }