示例#1
0
        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));
        }
示例#2
0
        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 }
            }
示例#3
0
 public virtual IContentList <IContent> Create(IEnumerable <ContentReference> roots, IListSettings settings)
 {
     return(this.Create <IContent>(roots, settings));
 }
示例#4
0
        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));
        }
示例#5
0
 public virtual IContentList <IContent> Create(ContentReference root, IListSettings settings)
 {
     return(this.Create <IContent>(root, settings));
 }