Exemplo n.º 1
0
        public ActionResult List(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            var pager     = new Pager(_siteService.GetSiteSettings(), pagerParameters);
            var container = model.ContainerId.HasValue ? _contentManager.GetLatest((int)model.ContainerId) : null;

            if (container == null || !container.Has <ContainerPart>())
            {
                return(HttpNotFound());
            }

            var restrictedContentType = container.As <ContainerPart>().Record.ItemContentType;
            var hasRestriction        = !string.IsNullOrEmpty(restrictedContentType);

            if (hasRestriction)
            {
                model.FilterByContentType = restrictedContentType;
            }
            model.Options.SelectedFilter = model.FilterByContentType;

            model.ContainerDisplayName = container.ContentManager.GetItemMetadata(container).DisplayText;
            if (string.IsNullOrEmpty(model.ContainerDisplayName))
            {
                model.ContainerDisplayName = container.ContentType;
            }

            var query = GetListContentItemQuery(model.ContainerId.Value, model.FilterByContentType, model.Options.OrderBy);

            if (query == null)
            {
                return(HttpNotFound());
            }

            model.Options.FilterOptions = GetContainableTypes()
                                          .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                          .ToList().OrderBy(kvp => kvp.Key);

            var pagerShape         = Shape.Pager(pager).TotalItemCount(query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            var list = Shape.List();

            list.AddRange(pageOfContentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            dynamic viewModel = Shape.ViewModel()
                                .ContentItems(list)
                                .Pager(pagerShape)
                                .ContainerId(model.ContainerId)
                                .Options(model.Options)
                                .ContainerDisplayName(model.ContainerDisplayName)
                                .HasRestriction(hasRestriction)
                                .ContainerContentType(container.ContentType)
                                .ContainerItemContentType(hasRestriction ? restrictedContentType : (model.FilterByContentType ?? ""))
                                .OtherLists(_contentManager.Query <ContainerPart>(VersionOptions.Latest).List()
                                            .Select(part => part.ContentItem)
                                            .Where(item => item != container)
                                            .OrderBy(item => item.As <CommonPart>().VersionPublishedUtc));

            // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
            return(View((object)viewModel));
        }
Exemplo n.º 2
0
        public async Task FilterAsync(IQuery <ContentItem> query, ListContentsViewModel model, PagerParameters pagerParameters, IUpdateModel updateModel)
        {
            var viewModel = new ListPartContentAdminFilterModel();

            if (await updateModel.TryUpdateModelAsync(viewModel, ""))
            {
                // Show list content items
                if (viewModel.ShowListContentTypes)
                {
                    var listableTypes = _contentDefinitionManager
                                        .ListTypeDefinitions()
                                        .Where(x =>
                                               x.Parts.Any(p =>
                                                           p.PartDefinition.Name == nameof(ListPart)))
                                        .Select(x => x.Name);

                    query.With <ContentItemIndex>(x => x.ContentType.IsIn(listableTypes));
                }

                // Show contained elements for the specified list
                else if (viewModel.ListContentItemId != null)
                {
                    query.With <ContainedPartIndex>(x => x.ListContentItemId == viewModel.ListContentItemId);
                }
            }
        }
Exemplo n.º 3
0
        public ActionResult List(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);
            var query = _contentManager.Query <ProductPart, ProductPartRecord>(VersionOptions.Latest);

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query.OrderByDescending <CommonPartRecord>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query.OrderByDescending <CommonPartRecord>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query.OrderByDescending <CommonPartRecord>(cr => cr.CreatedUtc);
                break;
            }

            var pagerShape         = Shape.Pager(pager).TotalItemCount(query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            var list = Shape.List();

            list.AddRange(pageOfContentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            dynamic viewModel = Shape.ViewModel()
                                .ContentItems(list)
                                .Pager(pagerShape)
                                .Options(model.Options);

            // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
            return(View((object)viewModel));
        }
Exemplo n.º 4
0
        public ActionResult Index(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);

            var query = Services.ContentManager.Query(VersionOptions.Latest, GetCreatableTypes(false).Select(ctd => ctd.Name).ToArray());

            if (!string.IsNullOrEmpty(model.Options.SelectedFilter))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.Options.SelectedFilter);
                if (contentTypeDefinition == null)
                {
                    return(HttpNotFound());
                }

                model.TypeDisplayName = !string.IsNullOrWhiteSpace(contentTypeDefinition.DisplayName)
                                            ? contentTypeDefinition.DisplayName
                                            : contentTypeDefinition.Name;
                query = query.ForType(model.Options.SelectedFilter);
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query = query.OrderByDescending <CommonPartRecord, DateTime?>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending <CommonPartRecord, DateTime?>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query = query.OrderByDescending <CommonPartRecord, DateTime?>(cr => cr.CreatedUtc);
                break;
            }

            model.Options.FilterOptions = GetCreatableTypes(false)
                                          .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                          .ToList().OrderBy(kvp => kvp.Value);

            var pagerShape         = Services.New.Pager(pager).TotalItemCount(query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            var list = Services.New.List();

            list.AddRange(pageOfContentItems.Select(ci => Services.ContentManager.BuildDisplay(ci, "SummaryAdmin")));

            foreach (IShape item in list.Items)
            {
                item.Metadata.Type = "ContentPicker";
            }

            dynamic tab = Services.New.RecentContentTab()
                          .ContentItems(list)
                          .Pager(pagerShape)
                          .Options(model.Options)
                          .TypeDisplayName(model.TypeDisplayName ?? "");

            return(new ShapeResult(this, Services.New.ContentPicker().Tab(tab)));
        }
        public ActionResult List(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            Pager pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);

            var query = _contentManager.Query(VersionOptions.Latest, GetCreatableTypes(false).Select(ctd => ctd.Name).ToArray());

            if (!string.IsNullOrEmpty(model.TypeName))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.TypeName);
                if (contentTypeDefinition == null)
                {
                    return(HttpNotFound());
                }

                model.TypeDisplayName = !string.IsNullOrWhiteSpace(contentTypeDefinition.DisplayName)
                                            ? contentTypeDefinition.DisplayName
                                            : contentTypeDefinition.Name;
                query = query.ForType(model.TypeName);
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                //query = query.OrderByDescending<ContentPartRecord, int>(ci => ci.ContentItemRecord.Versions.Single(civr => civr.Latest).Id);
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                //query = query.OrderByDescending<ContentPartRecord, int>(ci => ci.Id);
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.CreatedUtc);
                break;
            }

            model.Options.SelectedFilter = model.TypeName;
            model.Options.FilterOptions  = GetCreatableTypes(false)
                                           .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                           .ToList().OrderBy(kvp => kvp.Value);

            var pagerShape         = Shape.Pager(pager).TotalItemCount(query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            var list = Shape.List();

            list.AddRange(pageOfContentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            dynamic viewModel = Shape.ViewModel()
                                .ContentItems(list)
                                .Pager(pagerShape)
                                .Options(model.Options)
                                .TypeDisplayName(model.TypeDisplayName ?? "");

            // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
            return(View((object)viewModel));
        }
Exemplo n.º 6
0
        public ActionResult List(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            if (!Services.Authorizer.Authorize(Permissions.ManageTemplates, T("Not authorized to manage templates")))
            {
                return(new HttpUnauthorizedResult());
            }

            var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);
            var query = _contentManager.Query(VersionOptions.Latest, GetShapeTypes().Select(ctd => ctd.Name).ToArray());

            if (!string.IsNullOrEmpty(model.TypeName))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.TypeName);
                if (contentTypeDefinition == null)
                {
                    return(HttpNotFound());
                }

                model.TypeDisplayName = !string.IsNullOrWhiteSpace(contentTypeDefinition.DisplayName)
                                            ? contentTypeDefinition.DisplayName
                                            : contentTypeDefinition.Name;
                query = query.ForType(model.TypeName);
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.CreatedUtc);
                break;
            }

            model.Options.SelectedFilter = model.TypeName;
            model.Options.FilterOptions  = GetShapeTypes()
                                           .Select(x => new KeyValuePair <string, string>(x.Name, x.DisplayName))
                                           .ToList().OrderBy(x => x.Value);

            var pagerShape         = Shape.Pager(pager).TotalItemCount(query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();
            var list = Shape.List();

            list.AddRange(pageOfContentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            var viewModel = Shape.ViewModel()
                            .ContentItems(list)
                            .Pager(pagerShape)
                            .Options(model.Options)
                            .TypeDisplayName(model.TypeDisplayName ?? "");

            return(View(viewModel));
        }
Exemplo n.º 7
0
 public ActionResult ListFilterPOST(ListContentsViewModel model)
 {
     return(RedirectToAction("List", new RouteValueDictionary {
         { "Options.OrderBy", model.Options.OrderBy },
         { "Options.ContentsStatus", model.Options.ContentsStatus },
         { "Options.SelectedContentType", model.Options.SelectedContentType },
         { "Options.DisplayText", model.Options.DisplayText }
     }));
 }
Exemplo n.º 8
0
        public ActionResult List(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            Pager pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);

            var query = _contentManager.Query();

            //if (!string.IsNullOrEmpty(model.TypeName))
            //{
            //    var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.TypeName);
            //    if (contentTypeDefinition == null)
            //        return HttpNotFound();

            //    model.TypeDisplayName = !string.IsNullOrWhiteSpace(contentTypeDefinition.DisplayName)
            //                                ? contentTypeDefinition.DisplayName
            //                                : contentTypeDefinition.Name;
            //    query = query.ForType(model.TypeName);
            //}

            //query=query.OrderByDescending<ContentItemRecord>()
            //switch (model.Options.OrderBy)
            //{
            //    case ContentsOrder.Modified:
            //        //query = query.OrderByDescending<ContentPartRecord, int>(ci => ci.ContentItemRecord.Versions.Single(civr => civr.Latest).Id);
            //        query = query.OrderByDescending<CommonPartRecord>(cr => cr.ModifiedUtc);
            //        break;
            //    case ContentsOrder.Published:
            //        query = query.OrderByDescending<CommonPartRecord>(cr => cr.PublishedUtc);
            //        break;
            //    case ContentsOrder.Created:
            //        //query = query.OrderByDescending<ContentPartRecord, int>(ci => ci.Id);
            //        query = query.OrderByDescending<CommonPartRecord>(cr => cr.CreatedUtc);
            //        break;
            //}

            var maxPagedCount = _siteService.GetSiteSettings().MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }
            pager.Total = query.Count();
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            model.Pager = pager;
            model.Items = pageOfContentItems;
            return(View(model));
        }
        public async Task <IActionResult> ListContainerWorkBookTemplates(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            //get types  based on the unique alias name

            var siteSettings = await _siteService.GetSiteSettingsAsync();

            var contentItemAliasSettings            = siteSettings.As <ContainerItemAliasSettings>();
            IEnumerable <string> contentItemAliases = new List <string>();

            if (!String.IsNullOrEmpty(contentItemAliasSettings?.ContentTypes))
            {
                contentItemAliases = contentItemAliasSettings.ContentTypes
                                     .Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
            }

            //get content itemids by alias name

            List <String> contentItemIds = new List <string>();

            foreach (var contentItemAliase in contentItemAliases)
            {
                string contentItemId = !string.IsNullOrEmpty(contentItemAliase) ? await _contentAliasManager.GetContentItemIdAsync("alias:" + contentItemAliase) : "NotFound";

                if (contentItemId != "NotFound")
                {
                    contentItemIds.Add(contentItemId);
                }
            }



            var query = _session.Query <ContentItem, ContentItemIndex>().Where(x => x.ContentItemId.IsIn(contentItemIds) && x.Latest);

            var contentItemsBag = await PrepareQuery(query, model, pagerParameters);

            dynamic pagerShape = contentItemsBag.PageShape;

            var viewModel = (await New.ViewModel())
                            .ContentItems(contentItemsBag.ContentItemSummaries)
                            .Pager(pagerShape)
                            .Options(model.Options)
                            //  .TypeDisplayName(model.TypeDisplayName ?? "")
            ;

            return(View(viewModel));
        }
Exemplo n.º 10
0
        public async Task <IActionResult> Index(PagerParameters pagerParameters) //ListContentsViewModel model,
        {
            var siteSettings = await _siteService.GetSiteSettingsAsync();

            var pager = new Pager(pagerParameters, siteSettings.PageSize);

            var query = _session.Query <ContentItem, ContentItemIndex>();

            query = query.With <ContentItemIndex>(x => x.ContentType == contentType);
            query = query.With <ContentItemIndex>(x => x.Published);
            query = query.OrderByDescending(x => x.PublishedUtc);

            var maxPagedCount = siteSettings.MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }

            var routeData  = new RouteData();
            var pagerShape = (await New.Pager(pager)).TotalItemCount(maxPagedCount > 0 ? maxPagedCount : await query.CountAsync()).RouteData(routeData);

            var pageOfContentItems = await query.Skip(pager.GetStartIndex()).Take(pager.PageSize).ListAsync();

            IEnumerable <ContentItem> model = await query.ListAsync();

            // Prepare the content items Summary Admin shape
            var contentItemSummaries = new List <dynamic>();

            foreach (var contentItem in pageOfContentItems)
            {
                contentItemSummaries.Add(await _contentItemDisplayManager.BuildDisplayAsync(contentItem, _updateModelAccessor.ModelUpdater, "Summary"));
            }

            var viewModel = new ListContentsViewModel
            {
                ContentItems = contentItemSummaries,
                Pager        = pagerShape
                               //Options = model.Options
            };

            return(View(viewModel));
        }
Exemplo n.º 11
0
        public ActionResult List(ListContentsViewModel model)
        {
            if (!Services.Authorizer.Authorize(Permissions.ManageTemplates, T("Not allowed to manage templates.")))
            {
                return(new HttpUnauthorizedResult());
            }

            var contentItems = _templateService.GetTemplates(model.Options.OrderBy);

            var list = Shape.List();

            list.AddRange(contentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            dynamic viewModel = Shape.ViewModel(
                ContentItems: list,
                Options: model.Options);

            // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
            return(View((object)viewModel));
        }
Exemplo n.º 12
0
        public ActionResult Index(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);

            var query = Services.ContentManager.Query(VersionOptions.Latest, GetBlogPostTypes().Select(ctd => ctd.Name).ToArray( ));

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query = query.OrderByDescending <CommonPartRecord, DateTime?>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending <CommonPartRecord, DateTime?>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query = query.OrderByDescending <CommonPartRecord, DateTime?>(cr => cr.CreatedUtc);
                break;
            }

            var pagerShape         = Services.New.Pager(pager).TotalItemCount(query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            var list = Services.New.List();

            list.AddRange(pageOfContentItems.Select(ci => Services.ContentManager.BuildDisplay(ci, "SummaryAdmin")));

            foreach (IShape item in list.Items)
            {
                item.Metadata.Type = "BlogPostPicker";
            }

            dynamic tab = Services.New.RecentBlogPostTab()
                          .ContentItems(list)
                          .Pager(pagerShape)
                          .Options(model.Options)
                          .TypeDisplayName(model.TypeDisplayName ?? "");

            return(new ShapeResult(this, Services.New.BlogPostPicker().Tab(tab)));
        }
Exemplo n.º 13
0
        public ActionResult Rates(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            if (!Services.Authorizer.Authorize(OShopPermissions.ManageShopSettings, T("Not allowed to manage VAT rates")))
            {
                return(new HttpUnauthorizedResult());
            }

            var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);
            var query = _contentManager.Query <VatRatePart, VatRatePartRecord>(VersionOptions.Latest);

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query.OrderByDescending <CommonPartRecord>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query.OrderByDescending <CommonPartRecord>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query.OrderByDescending <CommonPartRecord>(cr => cr.CreatedUtc);
                break;
            }

            var pagerShape         = Shape.Pager(pager).TotalItemCount(query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            var list = Shape.List();

            list.AddRange(pageOfContentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            var viewModel = Shape.ViewModel()
                            .ContentItems(list)
                            .Pager(pagerShape)
                            .Options(model.Options);

            // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
            return(View(viewModel));
        }
Exemplo n.º 14
0
        public async Task <ActionResult <IEnumerable <object> > > GetContentItemsList(string contentTypes,
                                                                                      string contentType = "")
        {
            //todo need to incorporate pager and sort settings
            var query = _session.Query <ContentItem, ContentItemIndex>();
            var model = new ListContentsViewModel();

            if (!string.IsNullOrEmpty(contentType))
            {
                model.Options.SelectedContentType = contentType;
            }

            if (!string.IsNullOrEmpty(model.Options.SelectedContentType))
            {
                var contentTypeDefinition =
                    _contentDefinitionManager.GetTypeDefinition(model.Options.SelectedContentType);
                if (contentTypeDefinition == null)
                {
                    return(NotFound());
                }

                // We display a specific type even if it's not listable so that admin pages
                // can reuse the Content list page for specific types.
                query = query.With <ContentItemIndex>(x => x.ContentType == model.Options.SelectedContentType);
            }
            else
            {
                var validContentTypes = contentTypes.Split(',').ToList();
                if (validContentTypes.Any())
                {
                    query = query.With <ContentItemIndex>(x => x.ContentType.IsIn(validContentTypes));
                }
            }

            var pageOfContentItems = await query.Skip(0).Take(100).ListAsync();

            return(pageOfContentItems?.Select(CreateContentItemResult).ToArray());
        }
Exemplo n.º 15
0
        public ActionResult Index(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            if (!Services.Authorizer.Authorize(Permissions.OShopPermissions.AccessShopPanel, T("Not allowed to manage products")))
            {
                return(new HttpUnauthorizedResult());
            }

            var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);

            var versionOptions = VersionOptions.Latest;

            switch (model.Options.ContentsStatus)
            {
            case ContentsStatus.Published:
                versionOptions = VersionOptions.Published;
                break;

            case ContentsStatus.Draft:
                versionOptions = VersionOptions.Draft;
                break;

            case ContentsStatus.AllVersions:
                versionOptions = VersionOptions.AllVersions;
                break;

            default:
                versionOptions = VersionOptions.Latest;
                break;
            }

            var productTypes = GetProductTypes();

            if (productTypes.Count() == 0)
            {
                Services.Notifier.Information(T("There is no product enabled content type. Please create one."));
                return(RedirectToAction("Index", "Admin", new { Area = "Orchard.ContentTypes" }));
            }

            var query = _contentManager.Query(versionOptions, productTypes.Select(ctd => ctd.Name).ToArray());

            if (!string.IsNullOrEmpty(model.TypeName))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.TypeName);
                if (contentTypeDefinition == null)
                {
                    return(HttpNotFound());
                }

                model.TypeDisplayName = !string.IsNullOrWhiteSpace(contentTypeDefinition.DisplayName)
                                            ? contentTypeDefinition.DisplayName
                                            : contentTypeDefinition.Name;
                query = query.ForType(model.TypeName);
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.CreatedUtc);
                break;
            }

            model.Options.SelectedFilter = model.TypeName;
            model.Options.FilterOptions  = GetProductTypes()
                                           .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                           .ToList().OrderBy(kvp => kvp.Value);

            var pagerShape         = Shape.Pager(pager).TotalItemCount(query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            var list = Shape.List();

            list.AddRange(pageOfContentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            var viewModel = Shape.ViewModel()
                            .ContentItems(list)
                            .Pager(pagerShape)
                            .Options(model.Options);

            return(View(viewModel));
        }
Exemplo n.º 16
0
        public async Task <ActionResult> List(ListContentsViewModel model, PagerParameters pagerParameters, string contentTypeId = "")
        {
            if (model.PageCount == 0)
            {
                model.PageCount = 999;
            }

            List <ContentItem> contentItems;
            var siteSettings = await siteService.GetSiteSettingsAsync();

            var pager = new Pager(pagerParameters, model.PageCount);
            var query = await session.Query <ContentItem, ContentItemIndex>()
                        .Where(x => x.ContentType == "CommentPost" && x.Latest == true && x.Published == true)
                        .ListAsync();

            /* Get all comments for Document */
            contentItems = query.Where(x => BelongsToDocument(x, contentTypeId)).ToList();

            /* Group By */
            switch (model.Options.GroupBy)
            {
            case ContentsGrouping.Thread:
                /* Update Child Count */
                foreach (var contentItem in contentItems)
                {
                    string parentId = contentItem.ContentItemId;
                    contentItem.Content.CommentPost.ChildCount.Value = contentItems.Count(comment => IsChildOf(parentId, comment));
                }
                if (!model.OnlySubComments)
                {
                    contentItems = contentItems.Where(x => IsParentComment(x)).ToList();
                }
                break;

            case ContentsGrouping.Single:
                contentItems = contentItems.ToList();
                break;

            default:
                contentItems = contentItems.ToList();
                break;
            }


            /* Get Only Sub Comments */
            if (model.OnlySubComments && !string.IsNullOrEmpty(model.ParentId))
            {
                contentItems = contentItems.Where(x => IsChildOf(model.ParentId, x)).ToList();
            }

            /* Order By */
            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Date:
                logger.LogInformation("Order By Date");
                contentItems = contentItems.OrderByDescending(x => x.PublishedUtc).ToList();
                break;

            case ContentsOrder.Rank:
                logger.LogInformation("Order By Rank");
                break;

            default:
                logger.LogInformation("No Order");
                contentItems = contentItems.OrderByDescending(x => x.PublishedUtc).ToList();
                break;
            }

            for (int i = 0; i < contentItems.Count; i++)
            {
                contentItems[i] = await contentManager.LoadAsync(contentItems[i]);
            }

            /* Prepare Pager */
            var maxPagedCount = siteSettings.MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }

            var pagerShape         = (await New.Pager(pager)).TotalItemCount(maxPagedCount > 0 ? maxPagedCount : contentItems.Count());
            var pageOfContentItems = contentItems.Skip(pager.GetStartIndex()).Take(model.PageCount);

            var contentItemSummaries = new List <dynamic>();

            foreach (var contentItem in pageOfContentItems)
            {
                contentItemSummaries.Add(await contentItemDisplayManager.BuildDisplayAsync(contentItem, updateModelAccessor.ModelUpdater));
            }

            var viewModel = new ListContentsViewModel
            {
                ContentItems    = contentItemSummaries,
                Options         = model.Options,
                PageCount       = model.PageCount,
                Pager           = pagerShape,
                OnlySubComments = model.OnlySubComments
            };

            return(PartialView(viewModel));
        }
Exemplo n.º 17
0
        public ActionResult List(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            Pager pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);

            var versionOptions = VersionOptions.Latest;

            switch (model.Options.ContentsStatus)
            {
            case ContentsStatus.Published:
                versionOptions = VersionOptions.Published;
                break;

            case ContentsStatus.Draft:
                versionOptions = VersionOptions.Draft;
                break;

            case ContentsStatus.AllVersions:
                versionOptions = VersionOptions.AllVersions;
                break;

            default:
                versionOptions = VersionOptions.Latest;
                break;
            }

            var query = _contentManager.Query(versionOptions, GetListableTypes(false).Select(ctd => ctd.Name).ToArray());
            ContentTypeDefinition contentTypeDefinition = null;

            if (!string.IsNullOrEmpty(model.TypeName))
            {
                contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.TypeName);
                if (contentTypeDefinition == null)
                {
                    return(HttpNotFound());
                }

                model.TypeDisplayName = !string.IsNullOrWhiteSpace(contentTypeDefinition.DisplayName)
                                            ? contentTypeDefinition.DisplayName
                                            : contentTypeDefinition.Name;

                // We display a specific type even if it's not listable so that admin pages
                // can reuse the Content list page for specific types.
                query = _contentManager.Query(versionOptions, model.TypeName);
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                //query = query.OrderByDescending<ContentPartRecord, int>(ci => ci.ContentItemRecord.Versions.Single(civr => civr.Latest).Id);
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                //query = query.OrderByDescending<ContentPartRecord, int>(ci => ci.Id);
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.CreatedUtc);
                break;
            }

            if (!String.IsNullOrWhiteSpace(model.Options.SelectedCulture))
            {
                query = _cultureFilter.FilterCulture(query, model.Options.SelectedCulture);
            }

            if (model.Options.ContentsStatus == ContentsStatus.Owner)
            {
                query = query.Where <CommonPartRecord>(cr => cr.OwnerId == Services.WorkContext.CurrentUser.Id);
            }

            model.Options.SelectedFilter = model.TypeName;
            model.Options.FilterOptions  = GetListableTypes(false)
                                           .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                           .ToList().OrderBy(kvp => kvp.Value);

            model.Options.Cultures = _cultureManager.ListCultures();

            var maxPagedCount = _siteService.GetSiteSettings().MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }
            var pagerShape         = Shape.Pager(pager).TotalItemCount(maxPagedCount > 0 ? maxPagedCount : query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            var list = Shape.List();

            list.AddRange(pageOfContentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            var viewModel = Shape.ViewModel(ContentType: contentTypeDefinition)
                            .ContentItems(list)
                            .Pager(pagerShape)
                            .Options(model.Options)
                            .TypeDisplayName(model.TypeDisplayName ?? "");

            return(View(viewModel));
        }
Exemplo n.º 18
0
        public ActionResult Index(ListContentsViewModel model, PagerParameters pagerParameters, string part, string field, string types)
        {
            var menuItems             = _navigationManager.BuildMenu("content-picker").ToList();
            var contentPickerMenuItem = menuItems.FirstOrDefault();

            if (contentPickerMenuItem == null)
            {
                return(HttpNotFound());
            }

            if (contentPickerMenuItem.Items.All(x => x.Text.TextHint != "Recent Content"))
            {
                // the default tab should not be displayed, redirect to the next one
                var root = menuItems.FirstOrDefault();
                if (root == null)
                {
                    return(HttpNotFound());
                }

                var firstChild = root.Items.First();
                if (firstChild == null)
                {
                    return(HttpNotFound());
                }

                var routeData   = new RouteValueDictionary(firstChild.RouteValues);
                var queryString = Request.QueryString;
                foreach (var key in queryString.AllKeys)
                {
                    if (!String.IsNullOrEmpty(key))
                    {
                        routeData[key] = queryString[key];
                    }
                }

                return(RedirectToRoute(routeData));
            }

            ContentPickerFieldSettings settings = null;

            // if the picker is loaded for a specific field, apply custom settings
            if (!String.IsNullOrEmpty(part) && !String.IsNullOrEmpty(field))
            {
                var definition = _contentDefinitionManager.GetPartDefinition(part).Fields.FirstOrDefault(x => x.Name == field);
                if (definition != null)
                {
                    settings = definition.Settings.GetModel <ContentPickerFieldSettings>();
                }
            }

            if (settings != null && !String.IsNullOrEmpty(settings.DisplayedContentTypes))
            {
                types = settings.DisplayedContentTypes;
            }

            IEnumerable <ContentTypeDefinition> contentTypes;

            if (!String.IsNullOrEmpty(types))
            {
                var rawTypes = types.Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                contentTypes = _contentDefinitionManager
                               .ListTypeDefinitions()
                               .Where(x => x.Parts.Any(p => rawTypes.Contains(p.PartDefinition.Name)) || rawTypes.Contains(x.Name))
                               .ToArray();
            }
            else
            {
                contentTypes = GetCreatableTypes(false).ToList();
            }

            var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);
            var query = Services.ContentManager.Query(VersionOptions.Latest, contentTypes.Select(ctd => ctd.Name).ToArray());

            if (!string.IsNullOrEmpty(model.Options.SelectedFilter))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.Options.SelectedFilter);
                if (contentTypeDefinition == null)
                {
                    return(HttpNotFound());
                }

                model.TypeDisplayName = !string.IsNullOrWhiteSpace(contentTypeDefinition.DisplayName)
                                            ? contentTypeDefinition.DisplayName
                                            : contentTypeDefinition.Name;
                query = query.ForType(model.Options.SelectedFilter);
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.CreatedUtc);
                break;
            }

            model.Options.FilterOptions = contentTypes
                                          .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                          .ToList().OrderBy(kvp => kvp.Value);

            var pagerShape         = Services.New.Pager(pager).TotalItemCount(query.Count());
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();
            var list = Services.New.List();

            list.AddRange(pageOfContentItems.Select(ci => Services.ContentManager.BuildDisplay(ci, "SummaryAdmin")));

            foreach (IShape item in list.Items)
            {
                item.Metadata.Type = "ContentPicker";
            }

            var tab = Services.New.RecentContentTab()
                      .ContentItems(list)
                      .Pager(pagerShape)
                      .Options(model.Options)
                      .TypeDisplayName(model.TypeDisplayName ?? "");

            // retain the parameter in the pager links
            RouteData.Values["Options.SelectedFilter"] = model.Options.SelectedFilter;
            RouteData.Values["Options.OrderBy"]        = model.Options.OrderBy.ToString();
            RouteData.Values["Options.ContentsStatus"] = model.Options.ContentsStatus.ToString();

            return(new ShapeResult(this, Services.New.ContentPicker().Tab(tab)));
        }
Exemplo n.º 19
0
        public ActionResult List(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            Pager pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);

            var versionOptions = VersionOptions.Latest;

            switch (model.Options.ContentsStatus)
            {
            case ContentsStatus.Published:
                versionOptions = VersionOptions.Published;
                break;

            case ContentsStatus.Draft:
                versionOptions = VersionOptions.Draft;
                break;

            case ContentsStatus.AllVersions:
                versionOptions = VersionOptions.AllVersions;
                break;

            default:
                versionOptions = VersionOptions.Latest;
                break;
            }

            var query = _contentManager.Query(versionOptions, GetCreatableTypes(false).Select(ctd => ctd.Name).ToArray());

            if (!string.IsNullOrEmpty(model.TypeName))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.TypeName);
                if (contentTypeDefinition == null)
                {
                    return(HttpNotFound());
                }

                model.TypeDisplayName = !string.IsNullOrWhiteSpace(contentTypeDefinition.DisplayName)
                                            ? contentTypeDefinition.DisplayName
                                            : contentTypeDefinition.Name;
                query = query.ForType(model.TypeName);
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                //query = query.OrderByDescending<ContentPartRecord, int>(ci => ci.ContentItemRecord.Versions.Single(civr => civr.Latest).Id);
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                //query = query.OrderByDescending<ContentPartRecord, int>(ci => ci.Id);
                query = query.OrderByDescending <CommonPartRecord>(cr => cr.CreatedUtc);
                break;
            }
            //query.Where(p => Authorizer.Authorize(Authorizer.Permissions.EditContent, p));


            //if (!Services.Authorizer.Authorize(Permissions.EditContent, T("Not authorized to list users")))

            model.Options.SelectedFilter = model.TypeName;
            model.Options.FilterOptions  = GetCreatableTypes(false)
                                           .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                           .ToList().OrderBy(kvp => kvp.Value);



            var pagerShape         = Shape.Pager(pager).TotalItemCount(query.List().Count(p => Services.Authorizer.Authorize(Permissions.EditContent, p)));
            var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();

            var list = Shape.List();

            list.AddRange(pageOfContentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            var viewModel = Shape.ViewModel()
                            .ContentItems(list)
                            .Pager(pagerShape)
                            .Options(model.Options)
                            .TypeDisplayName(model.TypeDisplayName ?? "");

            return(View(viewModel));
        }
Exemplo n.º 20
0
        public async Task <IActionResult> List(ListContentsViewModel model, PagerParameters pagerParameters, string contentTypeId = "")
        {
            var context = _httpContextAccessor.HttpContext;
            var contentTypeDefinitions = _contentDefinitionManager.ListTypeDefinitions()
                                         .Where(ctd => ctd.GetSettings <ContentTypeSettings>().Creatable&& ctd.GetSettings <ContentTypeSettings>().Enabled)
                                         .OrderBy(ctd => ctd.DisplayName);

            if (!await _authorizationService.AuthorizeContentTypeDefinitionsAsync(User, CommonPermissions.EditContent, contentTypeDefinitions, _contentManager))
            {
                return(Forbid());
            }

            var siteSettings = await _siteService.GetSiteSettingsAsync();

            var pager = new Pager(pagerParameters, siteSettings.PageSize);

            // This is used by the AdminMenus so needs to be passed into the options.
            if (!String.IsNullOrEmpty(contentTypeId))
            {
                model.Options.SelectedContentType = contentTypeId;
            }

            // Populate the creatable types.
            if (!String.IsNullOrEmpty(model.Options.SelectedContentType))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.Options.SelectedContentType);
                if (contentTypeDefinition == null)
                {
                    return(NotFound());
                }

                var creatableList = new List <SelectListItem>();

                // Allows non creatable types to be created by another admin page.
                if (contentTypeDefinition.GetSettings <ContentTypeSettings>().Creatable || model.Options.CanCreateSelectedContentType)
                {
                    creatableList.Add(new SelectListItem(new LocalizedString(contentTypeDefinition.DisplayName, contentTypeDefinition.DisplayName).Value, contentTypeDefinition.Name));
                }

                model.Options.CreatableTypes = creatableList;
            }

            if (model.Options.CreatableTypes == null)
            {
                var creatableList = new List <SelectListItem>();
                if (contentTypeDefinitions.Any())
                {
                    foreach (var contentTypeDefinition in contentTypeDefinitions)
                    {
                        var contentItem = await _contentManager.NewAsync(contentTypeDefinition.Name);

                        contentItem.Owner = context.User.FindFirstValue(ClaimTypes.NameIdentifier);

                        if (await _authorizationService.AuthorizeAsync(context.User, CommonPermissions.EditContent, contentItem))
                        {
                            creatableList.Add(new SelectListItem(new LocalizedString(contentTypeDefinition.DisplayName, contentTypeDefinition.DisplayName).Value, contentTypeDefinition.Name));
                        }
                    }
                }

                model.Options.CreatableTypes = creatableList;
            }

            // We populate the remaining SelectLists.
            model.Options.ContentStatuses = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = S["Latest"], Value = nameof(ContentsStatus.Latest)
                },
                new SelectListItem()
                {
                    Text = S["Published"], Value = nameof(ContentsStatus.Published)
                },
                new SelectListItem()
                {
                    Text = S["Unpublished"], Value = nameof(ContentsStatus.Draft)
                },
                new SelectListItem()
                {
                    Text = S["All versions"], Value = nameof(ContentsStatus.AllVersions)
                }
            };

            if (await _authorizationService.AuthorizeAsync(context.User, Permissions.ListContent))
            {
                model.Options.ContentStatuses.Insert(1, new SelectListItem()
                {
                    Text = S["Owned by me"], Value = nameof(ContentsStatus.Owner)
                });
            }

            model.Options.ContentSorts = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = S["Recently created"], Value = nameof(ContentsOrder.Created)
                },
                new SelectListItem()
                {
                    Text = S["Recently modified"], Value = nameof(ContentsOrder.Modified)
                },
                new SelectListItem()
                {
                    Text = S["Recently published"], Value = nameof(ContentsOrder.Published)
                },
                new SelectListItem()
                {
                    Text = S["Title"], Value = nameof(ContentsOrder.Title)
                }
            };

            model.Options.ContentsBulkAction = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = S["Publish Now"], Value = nameof(ContentsBulkAction.PublishNow)
                },
                new SelectListItem()
                {
                    Text = S["Unpublish"], Value = nameof(ContentsBulkAction.Unpublish)
                },
                new SelectListItem()
                {
                    Text = S["Delete"], Value = nameof(ContentsBulkAction.Remove)
                }
            };

            if ((String.IsNullOrEmpty(model.Options.SelectedContentType) || String.IsNullOrEmpty(contentTypeId)) && model.Options.ContentTypeOptions == null)
            {
                var listableTypes = new List <ContentTypeDefinition>();
                foreach (var ctd in _contentDefinitionManager.ListTypeDefinitions())
                {
                    if (ctd.GetSettings <ContentTypeSettings>().Listable)
                    {
                        var contentItem = await _contentManager.NewAsync(ctd.Name);

                        contentItem.Owner = context.User.FindFirstValue(ClaimTypes.NameIdentifier);
                        var authorized = await _authorizationService.AuthorizeAsync(User, CommonPermissions.EditContent, contentItem);

                        if (authorized)
                        {
                            listableTypes.Add(ctd);
                        }
                    }
                }

                var contentTypeOptions = listableTypes
                                         .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                         .ToList().OrderBy(kvp => kvp.Value);

                model.Options.ContentTypeOptions = new List <SelectListItem>
                {
                    new SelectListItem()
                    {
                        Text = S["All content types"], Value = ""
                    }
                };

                foreach (var option in contentTypeOptions)
                {
                    model.Options.ContentTypeOptions.Add(new SelectListItem()
                    {
                        Text = option.Value, Value = option.Key, Selected = (option.Value == model.Options.SelectedContentType)
                    });
                }
            }

            // If ContentTypeOptions is not initialized by query string or by the code above, initialize it
            if (model.Options.ContentTypeOptions == null)
            {
                model.Options.ContentTypeOptions = new List <SelectListItem>();
            }

            // With the model populated we filter the query, allowing the filters to alter the model.
            var query = await _contentsAdminListQueryService.QueryAsync(model.Options, _updateModelAccessor.ModelUpdater);

            var maxPagedCount = siteSettings.MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }

            // We prepare the pager
            var routeData = new RouteData();

            routeData.Values.Add("DisplayText", model.Options.DisplayText);

            var pagerShape         = (await New.Pager(pager)).TotalItemCount(maxPagedCount > 0 ? maxPagedCount : await query.CountAsync()).RouteData(routeData);
            var pageOfContentItems = await query.Skip(pager.GetStartIndex()).Take(pager.PageSize).ListAsync();

            // We prepare the content items SummaryAdmin shape
            var contentItemSummaries = new List <dynamic>();

            foreach (var contentItem in pageOfContentItems)
            {
                contentItemSummaries.Add(await _contentItemDisplayManager.BuildDisplayAsync(contentItem, _updateModelAccessor.ModelUpdater, "SummaryAdmin"));
            }

            // Populate options pager summary values.
            var startIndex = (pagerShape.Page - 1) * (pagerShape.PageSize) + 1;

            model.Options.StartIndex        = startIndex;
            model.Options.EndIndex          = startIndex + contentItemSummaries.Count - 1;
            model.Options.ContentItemsCount = contentItemSummaries.Count;
            model.Options.TotalItemCount    = pagerShape.TotalItemCount;

            var header = await _contentOptionsDisplayManager.BuildEditorAsync(model.Options, _updateModelAccessor.ModelUpdater, false);

            var shapeViewModel = await _shapeFactory.CreateAsync <ListContentsViewModel>("ContentsAdminList", viewModel =>
            {
                viewModel.ContentItems = contentItemSummaries;
                viewModel.Pager        = pagerShape;
                viewModel.Options      = model.Options;
                viewModel.Header       = header;
            });

            return(View(shapeViewModel));
        }
        private async Task <ContentItemsBag> PrepareQuery(IQuery <ContentItem, ContentItemIndex> query, ListContentsViewModel model, PagerParameters pagerParameters)
        {
            var siteSettings = await _siteService.GetSiteSettingsAsync();

            Pager pager = new Pager(pagerParameters, siteSettings.PageSize);

            switch (model.Options.ContentsStatus)
            {
            case ContentsStatus.Published:
                query = query.With <ContentItemIndex>(x => x.Published);
                break;

            case ContentsStatus.Draft:
                query = query.With <ContentItemIndex>(x => x.Latest && !x.Published);
                break;

            case ContentsStatus.AllVersions:
                query = query.With <ContentItemIndex>(x => x.Latest);
                break;

            default:
                query = query.With <ContentItemIndex>(x => x.Latest);
                break;
            }



            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query = query.OrderByDescending(x => x.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query = query.OrderByDescending(cr => cr.CreatedUtc);
                break;

            default:
                query = query.OrderByDescending(cr => cr.ModifiedUtc);
                break;
            }



            // Invoke any service that could alter the query
            //await _contentAdminFilters.InvokeAsync(x => x.FilterAsync(query, model, pagerParameters, this), Logger);


            var maxPagedCount = siteSettings.MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }

            var pagerShape         = (await New.Pager(pager)).TotalItemCount(maxPagedCount > 0 ? maxPagedCount : await query.CountAsync());
            var pageOfContentItems = await query.Skip(pager.GetStartIndex()).Take(pager.PageSize).ListAsync();

            var contentItemSummaries = new List <dynamic>();

            foreach (var contentItem in pageOfContentItems)
            {
                contentItemSummaries.Add(await _contentItemDisplayManager.BuildDisplayAsync(contentItem, this, "SummaryAdmin"));
            }
            return(new ContentItemsBag
            {
                PageShape = pagerShape,
                ContentItemSummaries = contentItemSummaries// pageOfContentItems
            });
        }
Exemplo n.º 22
0
        public async Task <IActionResult> List(ListContentsViewModel model, PagerParameters pagerParameters, string contentTypeId = "")
        {
            var siteSettings = await _siteService.GetSiteSettingsAsync();

            var pager = new Pager(pagerParameters, siteSettings.PageSize);

            var query = _session.Query <ContentItem, ContentItemIndex>();

            if (!string.IsNullOrEmpty(model.Options.DisplayText))
            {
                query = query.With <ContentItemIndex>(x => x.DisplayText.Contains(model.Options.DisplayText));
            }

            switch (model.Options.ContentsStatus)
            {
            case ContentsStatus.Published:
                query = query.With <ContentItemIndex>(x => x.Published);
                break;

            case ContentsStatus.Draft:
                query = query.With <ContentItemIndex>(x => x.Latest && !x.Published);
                break;

            case ContentsStatus.AllVersions:
                query = query.With <ContentItemIndex>(x => x.Latest);
                break;

            default:
                query = query.With <ContentItemIndex>(x => x.Latest);
                break;
            }

            if (model.Options.ContentsStatus == ContentsStatus.Owner)
            {
                query = query.With <ContentItemIndex>(x => x.Owner == HttpContext.User.Identity.Name);
            }

            if (!string.IsNullOrEmpty(contentTypeId))
            {
                model.Options.SelectedContentType = contentTypeId;
            }

            IEnumerable <ContentTypeDefinition> contentTypeDefinitions = new List <ContentTypeDefinition>();

            if (!string.IsNullOrEmpty(model.Options.SelectedContentType))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.Options.SelectedContentType);

                if (contentTypeDefinition == null)
                {
                    return(NotFound());
                }

                contentTypeDefinitions = contentTypeDefinitions.Append(contentTypeDefinition);

                // We display a specific type even if it's not listable so that admin pages
                // can reuse the Content list page for specific types.
                query = query.With <ContentItemIndex>(x => x.ContentType == model.Options.SelectedContentType);

                // Allows non creatable types to be created by another admin page.
                if (model.Options.CanCreateSelectedContentType)
                {
                    model.Options.CreatableTypes = new List <SelectListItem>
                    {
                        new SelectListItem(new LocalizedString(contentTypeDefinition.DisplayName, contentTypeDefinition.DisplayName).Value, contentTypeDefinition.Name)
                    };
                }
            }
            else
            {
                contentTypeDefinitions = _contentDefinitionManager.ListTypeDefinitions();

                var listableTypes = (await GetListableTypesAsync()).Select(t => t.Name).ToArray();
                if (listableTypes.Any())
                {
                    query = query.With <ContentItemIndex>(x => x.ContentType.IsIn(listableTypes));
                }
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query = query.OrderByDescending(x => x.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query = query.OrderByDescending(cr => cr.CreatedUtc);
                break;

            case ContentsOrder.Title:
                query = query.OrderBy(cr => cr.DisplayText);
                break;

            default:
                query = query.OrderByDescending(cr => cr.ModifiedUtc);
                break;
            }

            // Allow parameters to define creatable types.
            if (model.Options.CreatableTypes == null)
            {
                var contentTypes  = contentTypeDefinitions.Where(ctd => ctd.GetSettings <ContentTypeSettings>().Creatable).OrderBy(ctd => ctd.DisplayName);
                var creatableList = new List <SelectListItem>();
                if (contentTypes.Any())
                {
                    foreach (var contentTypeDefinition in contentTypes)
                    {
                        creatableList.Add(new SelectListItem(new LocalizedString(contentTypeDefinition.DisplayName, contentTypeDefinition.DisplayName).Value, contentTypeDefinition.Name));
                    }
                }

                model.Options.CreatableTypes = creatableList;
            }

            // Invoke any service that could alter the query
            await _contentAdminFilters.InvokeAsync((filter, query, model, pagerParameters, updateModel) => filter.FilterAsync(query, model, pagerParameters, updateModel), query, model, pagerParameters, _updateModelAccessor.ModelUpdater, _logger);

            var maxPagedCount = siteSettings.MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }

            //We prepare the pager
            var routeData = new RouteData();

            routeData.Values.Add("DisplayText", model.Options.DisplayText);

            var pagerShape         = (await New.Pager(pager)).TotalItemCount(maxPagedCount > 0 ? maxPagedCount : await query.CountAsync()).RouteData(routeData);
            var pageOfContentItems = await query.Skip(pager.GetStartIndex()).Take(pager.PageSize).ListAsync();

            //We prepare the content items SummaryAdmin shape
            var contentItemSummaries = new List <dynamic>();

            foreach (var contentItem in pageOfContentItems)
            {
                contentItemSummaries.Add(await _contentItemDisplayManager.BuildDisplayAsync(contentItem, _updateModelAccessor.ModelUpdater, "SummaryAdmin"));
            }

            //We populate the SelectLists
            model.Options.ContentStatuses = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = S["Latest"], Value = nameof(ContentsStatus.Latest)
                },
                new SelectListItem()
                {
                    Text = S["Owned by me"], Value = nameof(ContentsStatus.Owner)
                },
                new SelectListItem()
                {
                    Text = S["Published"], Value = nameof(ContentsStatus.Published)
                },
                new SelectListItem()
                {
                    Text = S["Unpublished"], Value = nameof(ContentsStatus.Draft)
                },
                new SelectListItem()
                {
                    Text = S["All versions"], Value = nameof(ContentsStatus.AllVersions)
                }
            };

            model.Options.ContentSorts = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = S["Recently created"], Value = nameof(ContentsOrder.Created)
                },
                new SelectListItem()
                {
                    Text = S["Recently modified"], Value = nameof(ContentsOrder.Modified)
                },
                new SelectListItem()
                {
                    Text = S["Recently published"], Value = nameof(ContentsOrder.Published)
                },
                new SelectListItem()
                {
                    Text = S["Title"], Value = nameof(ContentsOrder.Title)
                }
            };

            model.Options.ContentsBulkAction = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = S["Publish Now"], Value = nameof(ContentsBulkAction.PublishNow)
                },
                new SelectListItem()
                {
                    Text = S["Unpublish"], Value = nameof(ContentsBulkAction.Unpublish)
                },
                new SelectListItem()
                {
                    Text = S["Delete"], Value = nameof(ContentsBulkAction.Remove)
                }
            };

            var ContentTypeOptions = (await GetListableTypesAsync())
                                     .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                     .ToList().OrderBy(kvp => kvp.Value);

            model.Options.ContentTypeOptions = new List <SelectListItem>();
            model.Options.ContentTypeOptions.Add(new SelectListItem()
            {
                Text = S["All content types"], Value = ""
            });
            foreach (var option in ContentTypeOptions)
            {
                model.Options.ContentTypeOptions.Add(new SelectListItem()
                {
                    Text = option.Value, Value = option.Key
                });
            }

            var viewModel = new ListContentsViewModel
            {
                ContentItems = contentItemSummaries,
                Pager        = pagerShape,
                Options      = model.Options
            };

            return(View(viewModel));
        }
Exemplo n.º 23
0
        public async Task <IActionResult> List(ListContentsViewModel model, PagerParameters pagerParameters)
        {
            var siteSettings = await _siteService.GetSiteSettingsAsync();

            Pager pager = new Pager(pagerParameters, siteSettings.PageSize);

            var query = _session.Query <ContentItem, ContentItemIndex>();

            switch (model.Options.ContentsStatus)
            {
            case ContentsStatus.Published:
                query = query.With <ContentItemIndex>(x => x.Published);
                break;

            case ContentsStatus.Draft:
                query = query.With <ContentItemIndex>(x => x.Latest && !x.Published);
                break;

            case ContentsStatus.AllVersions:
                query = query.With <ContentItemIndex>(x => x.Latest);
                break;

            default:
                query = query.With <ContentItemIndex>(x => x.Latest);
                break;
            }

            if (!string.IsNullOrEmpty(model.TypeName))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.TypeName);
                if (contentTypeDefinition == null)
                {
                    return(NotFound());
                }

                model.TypeDisplayName = contentTypeDefinition.ToString();

                // We display a specific type even if it's not listable so that admin pages
                // can reuse the Content list page for specific types.
                query = query.With <ContentItemIndex>(x => x.ContentType == model.TypeName);
            }
            else
            {
                var listableTypes = (await GetListableTypesAsync()).Select(t => t.Name).ToArray();
                if (listableTypes.Any())
                {
                    query = query.With <ContentItemIndex>(x => x.ContentType.IsIn(listableTypes));
                }
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query = query.OrderByDescending(x => x.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query = query.OrderByDescending(cr => cr.CreatedUtc);
                break;

            default:
                query = query.OrderByDescending(cr => cr.ModifiedUtc);
                break;
            }

            //if (!String.IsNullOrWhiteSpace(model.Options.SelectedCulture))
            //{
            //    query = _cultureFilter.FilterCulture(query, model.Options.SelectedCulture);
            //}

            //if (model.Options.ContentsStatus == ContentsStatus.Owner)
            //{
            //    query = query.Where<CommonPartRecord>(cr => cr.OwnerId == Services.WorkContext.CurrentUser.Id);
            //}

            model.Options.SelectedFilter = model.TypeName;
            model.Options.FilterOptions  = (await GetListableTypesAsync())
                                           .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                           .ToList().OrderBy(kvp => kvp.Value);

            //model.Options.Cultures = _cultureManager.ListCultures();

            // Invoke any service that could alter the query
            await _contentAdminFilters.InvokeAsync(x => x.FilterAsync(query, model, pagerParameters, this), Logger);

            var maxPagedCount = siteSettings.MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }

            var pagerShape         = (await New.Pager(pager)).TotalItemCount(maxPagedCount > 0 ? maxPagedCount : await query.CountAsync());
            var pageOfContentItems = await query.Skip(pager.GetStartIndex()).Take(pager.PageSize).ListAsync();

            var contentItemSummaries = new List <dynamic>();

            foreach (var contentItem in pageOfContentItems)
            {
                contentItemSummaries.Add(await _contentItemDisplayManager.BuildDisplayAsync(contentItem, this, "SummaryAdmin"));
            }

            var viewModel = (await New.ViewModel())
                            .ContentItems(contentItemSummaries)
                            .Pager(pagerShape)
                            .Options(model.Options)
                            .TypeDisplayName(model.TypeDisplayName ?? "");

            return(View(viewModel));
        }
Exemplo n.º 24
0
        public async Task <ActionResult> ListFilterPOST(ListContentsViewModel model)
        {
            await _contentOptionsDisplayManager.UpdateEditorAsync(model.Options, _updateModelAccessor.ModelUpdater, false);

            return(RedirectToAction("List", model.Options.RouteValues));
        }
        public async Task <IActionResult> List(ListContentsViewModel model, PagerParameters pagerParameters, string containedContentItemId)
        {
            var containedContentItem = await _contentManager.GetAsync(containedContentItemId, VersionOptions.Published);

            // var hascontainedPart = containedContentItem.Has("ContainedPart");
            // if (hascontainedPart == false)
            //     return  NotFound("Content Item does have attached contained Part");
            if (containedContentItem == null)
            {
                return(NotFound());
            }

            //1 Candidates are all content types that have a list part and list part settings has the current content type as eligible
            //get



            var siteSettings = await _siteService.GetSiteSettingsAsync();

            var pager = new Pager(pagerParameters, siteSettings.PageSize);



/*
 *          var query = _session.Query<ContentItem, ContentItemIndex>();
 *
 *          if (!string.IsNullOrEmpty(model.Options.DisplayText))
 *          {
 *              query = query.With<ContentItemIndex>(x => x.DisplayText.Contains(model.Options.DisplayText));
 *          }
 *
 *          switch (model.Options.ContentsStatus)
 *          {
 *              case ContentsStatus.Published:
 *                  query = query.With<ContentItemIndex>(x => x.Published);
 *                  break;
 *              case ContentsStatus.Draft:
 *                  query = query.With<ContentItemIndex>(x => x.Latest && !x.Published);
 *                  break;
 *              case ContentsStatus.AllVersions:
 *                  query = query.With<ContentItemIndex>(x => x.Latest);
 *                  break;
 *              default:
 *                  query = query.With<ContentItemIndex>(x => x.Latest);
 *                  break;
 *          }
 *
 *          if (model.Options.ContentsStatus == ContentsStatus.Owner)
 *          {
 *              query = query.With<ContentItemIndex>(x => x.Owner == HttpContext.User.Identity.Name);
 *          }
 *
 *
 */
            /*if (!string.IsNullOrEmpty(contentTypeId))
             * {
             *  model.Options.SelectedContentType = contentTypeId;
             * }*/



/*
 *          switch (model.Options.OrderBy)
 *          {
 *              case ContentsOrder.Modified:
 *                  query = query.OrderByDescending(x => x.ModifiedUtc);
 *                  break;
 *              case ContentsOrder.Published:
 *                  query = query.OrderByDescending(cr => cr.PublishedUtc);
 *                  break;
 *              case ContentsOrder.Created:
 *                  query = query.OrderByDescending(cr => cr.CreatedUtc);
 *                  break;
 *              case ContentsOrder.Title:
 *                  query = query.OrderBy(cr => cr.DisplayText);
 *                  break;
 *              default:
 *                  query = query.OrderByDescending(cr => cr.ModifiedUtc);
 *                  break;
 *          }
 */
            // Allow parameters to define creatable types.

            /*if (model.Options.CreatableTypes == null)
             * {
             *  var contentTypes = contentTypeDefinitions
             *      .Where(ctd =>
             *          ctd.GetSettings<ContentTypeSettings>().Creatable &&
             *          ctd.GetSettings<ContentTypeSettings>().Enabled).OrderBy(ctd => ctd.DisplayName);
             *  var creatableList = new List<SelectListItem>();
             *  if (contentTypes.Any())
             *  {
             *      foreach (var contentTypeDefinition in contentTypes)
             *      {
             *          creatableList.Add(new SelectListItem(
             *              new LocalizedString(contentTypeDefinition.DisplayName, contentTypeDefinition.DisplayName)
             *                  .Value, contentTypeDefinition.Name));
             *      }
             *  }
             *
             *  model.Options.CreatableTypes = creatableList;
             * }*/

            // We populate the remaining SelectLists.
            model.Options.ContentStatuses = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = S["Latest"], Value = nameof(ContentsStatus.Latest)
                },
                new SelectListItem()
                {
                    Text = S["Owned by me"], Value = nameof(ContentsStatus.Owner)
                },
                new SelectListItem()
                {
                    Text = S["Published"], Value = nameof(ContentsStatus.Published)
                },
                new SelectListItem()
                {
                    Text = S["Unpublished"], Value = nameof(ContentsStatus.Draft)
                },
                new SelectListItem()
                {
                    Text = S["All versions"], Value = nameof(ContentsStatus.AllVersions)
                }
            };

            model.Options.ContentSorts = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = S["Recently created"], Value = nameof(ContentsOrder.Created)
                },
                new SelectListItem()
                {
                    Text = S["Recently modified"], Value = nameof(ContentsOrder.Modified)
                },
                new SelectListItem()
                {
                    Text = S["Recently published"], Value = nameof(ContentsOrder.Published)
                },
                new SelectListItem()
                {
                    Text = S["Title"], Value = nameof(ContentsOrder.Title)
                }
            };

            model.Options.ContentsBulkAction = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = S["Publish Now"], Value = nameof(ContentsBulkAction.PublishNow)
                },
                new SelectListItem()
                {
                    Text = S["Unpublish"], Value = nameof(ContentsBulkAction.Unpublish)
                },
                new SelectListItem()
                {
                    Text = S["Delete"], Value = nameof(ContentsBulkAction.Remove)
                }
            };

            // Invoke any service that could alter the query
            // await _contentAdminFilters.InvokeAsync(
            //     (filter, query, model, pagerParameters, updateModel) =>
            //         filter.FilterAsync(query, model, pagerParameters, updateModel), query, model, pagerParameters,
            //     _updateModelAccessor.ModelUpdater, _logger);
            // With the model populated we filter the query, allowing the filters to alter the model.
            var query = await _contentsAdminListQueryService.QueryAsync(model.Options, _updateModelAccessor.ModelUpdater);

            IEnumerable <ContentTypeDefinition> contentTypeDefinitions = new List <ContentTypeDefinition>();
            var eligibleContentTypes = new List <string>();

            if (!string.IsNullOrEmpty(model.Options.SelectedContentType))
            {
                var contentTypeDefinition =
                    _contentDefinitionManager.GetTypeDefinition(model.Options.SelectedContentType);
                if (contentTypeDefinition == null)
                {
                    return(NotFound());
                }
                contentTypeDefinitions = contentTypeDefinitions.Append(contentTypeDefinition);

                // We display a specific type even if it's not listable so that admin pages
                // can reuse the Content list page for specific types.
                query = query.With <ContentItemIndex>(x => x.ContentType == model.Options.SelectedContentType);

                // Allows non creatable types to be created by another admin page.

                /*if (model.Options.CanCreateSelectedContentType)
                 * {
                 *  model.Options.CreatableTypes = new List<SelectListItem>
                 *  {
                 *      new SelectListItem(
                 *          new LocalizedString(contentTypeDefinition.DisplayName,
                 *              contentTypeDefinition.DisplayName).Value, contentTypeDefinition.Name)
                 *  };
                 * }*/
            }
            else
            {
                //eligible content types
                //Get ContentTypes with ListPart
                //and that can accept as child element the current contained content item type
                contentTypeDefinitions = _contentDefinitionManager
                                         .ListTypeDefinitions()
                                         .Where(x =>
                                                x.Parts.Any(p =>
                                                            p.PartDefinition.Name == "ListPart"))
                ;



                foreach (var contentTypeDefintion in contentTypeDefinitions)
                {
                    var containedContentTypes =
                        _contentAssignParentContainerFilter
                        .GetContainedContentTypeDefinitions(contentTypeDefintion.Name).ToList();

                    if (containedContentTypes.Any())
                    {
                        if (containedContentTypes.Any(x => x.Name == containedContentItem.ContentType))
                        {
                            //is eligible
                            eligibleContentTypes.Add(contentTypeDefintion.Name);
                        }
                    }
                    else
                    {
                        //if zero this means that all content types are valid , so add it
                        eligibleContentTypes.Add(contentTypeDefintion.Name);
                    }
                }



                query.With <ContentItemIndex>(x => x.ContentType.IsIn(eligibleContentTypes));

                /*contentTypeDefinitions = _contentDefinitionManager.ListTypeDefinitions();
                 *
                 * var listableTypes = (await GetListableTypesAsync()).Select(t => t.Name).ToArray();
                 * if (listableTypes.Any())
                 * {
                 *  query = query.With<ContentItemIndex>(x => x.ContentType.IsIn(listableTypes));
                 * }*/
            }

            var contentTypeOptions = contentTypeDefinitions.Where(x => eligibleContentTypes.Any(s => s == x.Name))  //(await GetListableTypesAsync())
                                     .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                     .ToList().OrderBy(kvp => kvp.Value);

            model.Options.ContentTypeOptions = new List <SelectListItem>();
            model.Options.ContentTypeOptions.Add(new SelectListItem()
            {
                Text = S["All content types"], Value = ""
            });
            foreach (var option in contentTypeOptions)
            {
                model.Options.ContentTypeOptions.Add(new SelectListItem()
                {
                    Text = option.Value, Value = option.Key
                });
            }

            var maxPagedCount = siteSettings.MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }

            //We prepare the pager
            var routeData = new RouteData();

            routeData.Values.Add("DisplayText", model.Options.DisplayText);

            var pagerShape = (await New.Pager(pager))
                             .TotalItemCount(maxPagedCount > 0 ? maxPagedCount : await query.CountAsync()).RouteData(routeData);
            var pageOfContentItems = await query.Skip(pager.GetStartIndex()).Take(pager.PageSize).ListAsync();

            //We prepare the content items SummaryAdmin shape
            var contentItemSummaries = new List <dynamic>();

            foreach (var contentItem in pageOfContentItems)
            {
                contentItemSummaries.Add(await _contentItemDisplayManager.BuildDisplayAsync(contentItem,
                                                                                            _updateModelAccessor.ModelUpdater, "SummaryAdmin"));
            }



            var viewModel = new ListContentsViewModel
            {
                ContentItems = contentItemSummaries, Pager = pagerShape, Options = model.Options
            };

            ViewData["ContainedContentItem"] = containedContentItem;
            return(View(viewModel));
        }
Exemplo n.º 26
0
        public async Task <IActionResult> List(ListContentsViewModel model, PagerParameters pagerParameters, string contentTypeName = "")
        {
            var siteSettings = await _siteService.GetSiteSettingsAsync();

            var pager = new Pager(pagerParameters, siteSettings.PageSize);

            var query = _session.Query <ContentItem, ContentItemIndex>();

            if (!string.IsNullOrEmpty(model.Options.DisplayText))
            {
                query = query.With <ContentItemIndex>(x => x.DisplayText.Contains(model.Options.DisplayText));
            }

            switch (model.Options.ContentsStatus)
            {
            case ContentsStatus.Published:
                query = query.With <ContentItemIndex>(x => x.Published);
                break;

            case ContentsStatus.Draft:
                query = query.With <ContentItemIndex>(x => x.Latest && !x.Published);
                break;

            case ContentsStatus.AllVersions:
                query = query.With <ContentItemIndex>(x => x.Latest);
                break;

            default:
                query = query.With <ContentItemIndex>(x => x.Latest);
                break;
            }

            if (contentTypeName != "")
            {
                model.Options.SelectedContentType = contentTypeName;
            }

            if (!string.IsNullOrEmpty(model.Options.SelectedContentType))
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.Options.SelectedContentType);
                if (contentTypeDefinition == null)
                {
                    return(NotFound());
                }

                // We display a specific type even if it's not listable so that admin pages
                // can reuse the Content list page for specific types.
                query = query.With <ContentItemIndex>(x => x.ContentType == model.Options.SelectedContentType);
            }
            else
            {
                var listableTypes = (await GetListableTypesAsync()).Select(t => t.Name).ToArray();
                if (listableTypes.Any())
                {
                    query = query.With <ContentItemIndex>(x => x.ContentType.IsIn(listableTypes));
                }
            }

            switch (model.Options.OrderBy)
            {
            case ContentsOrder.Modified:
                query = query.OrderByDescending(x => x.ModifiedUtc);
                break;

            case ContentsOrder.Published:
                query = query.OrderByDescending(cr => cr.PublishedUtc);
                break;

            case ContentsOrder.Created:
                query = query.OrderByDescending(cr => cr.CreatedUtc);
                break;

            case ContentsOrder.Title:
                query = query.OrderBy(cr => cr.DisplayText);
                break;

            default:
                query = query.OrderByDescending(cr => cr.ModifiedUtc);
                break;
            }

            //if (!String.IsNullOrWhiteSpace(model.Options.SelectedCulture))
            //{
            //    query = _cultureFilter.FilterCulture(query, model.Options.SelectedCulture);
            //}

            //if (model.Options.ContentsStatus == ContentsStatus.Owner)
            //{
            //    query = query.Where<CommonPartRecord>(cr => cr.OwnerId == Services.WorkContext.CurrentUser.Id);
            //}

            //model.Options.Cultures = _cultureManager.ListCultures();

            // Invoke any service that could alter the query
            await _contentAdminFilters.InvokeAsync(x => x.FilterAsync(query, model, pagerParameters, this), Logger);

            var maxPagedCount = siteSettings.MaxPagedCount;

            if (maxPagedCount > 0 && pager.PageSize > maxPagedCount)
            {
                pager.PageSize = maxPagedCount;
            }

            //We prepare the pager
            var routeData = new RouteData();

            routeData.Values.Add("DisplayText", model.Options.DisplayText);

            var pagerShape         = (await New.Pager(pager)).TotalItemCount(maxPagedCount > 0 ? maxPagedCount : await query.CountAsync()).RouteData(routeData);
            var pageOfContentItems = await query.Skip(pager.GetStartIndex()).Take(pager.PageSize).ListAsync();

            //We prepare the content items SummaryAdmin shape
            var contentItemSummaries = new List <dynamic>();

            foreach (var contentItem in pageOfContentItems)
            {
                contentItemSummaries.Add(await _contentItemDisplayManager.BuildDisplayAsync(contentItem, this, "SummaryAdmin"));
            }

            //We populate the SelectLists
            model.Options.ContentStatuses = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = T["latest"].Value, Value = ContentsStatus.Latest.ToString()
                },
                new SelectListItem()
                {
                    Text = T["owned by me"].Value, Value = ContentsStatus.Owner.ToString()
                },
                new SelectListItem()
                {
                    Text = T["published"].Value, Value = ContentsStatus.Published.ToString()
                },
                new SelectListItem()
                {
                    Text = T["unpublished"].Value, Value = ContentsStatus.Draft.ToString()
                },
                new SelectListItem()
                {
                    Text = T["all versions"].Value, Value = ContentsStatus.AllVersions.ToString()
                }
            };

            model.Options.ContentSorts = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = T["recently created"].Value, Value = ContentsOrder.Created.ToString()
                },
                new SelectListItem()
                {
                    Text = T["recently modified"].Value, Value = ContentsOrder.Modified.ToString()
                },
                new SelectListItem()
                {
                    Text = T["recently published"].Value, Value = ContentsOrder.Published.ToString()
                },
                new SelectListItem()
                {
                    Text = T["title"].Value, Value = ContentsOrder.Title.ToString()
                }
            };

            model.Options.ContentsBulkAction = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = T["Publish Now"].Value, Value = ContentsBulkAction.PublishNow.ToString()
                },
                new SelectListItem()
                {
                    Text = T["Unpublish"].Value, Value = ContentsBulkAction.Unpublish.ToString()
                },
                new SelectListItem()
                {
                    Text = T["Delete"].Value, Value = ContentsBulkAction.Remove.ToString()
                }
            };

            var ContentTypeOptions = (await GetListableTypesAsync())
                                     .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName))
                                     .ToList().OrderBy(kvp => kvp.Value);

            model.Options.ContentTypeOptions = new List <SelectListItem>();
            model.Options.ContentTypeOptions.Add(new SelectListItem()
            {
                Text = T["All content types"].Value, Value = ""
            });
            foreach (var option in ContentTypeOptions)
            {
                model.Options.ContentTypeOptions.Add(new SelectListItem()
                {
                    Text = option.Value, Value = option.Key
                });
            }

            var viewModel = new ListContentsViewModel
            {
                ContentItems = contentItemSummaries,
                Pager        = pagerShape,
                Options      = model.Options
            };

            return(View(viewModel));
        }