public async Task FilterAsync(ContentOptionsViewModel model, IQuery <ContentItem> query, IUpdateModel updater)
        {
            var viewModel = new ListPartContentsAdminFilterViewModel();

            if (await updater.TryUpdateModelAsync(viewModel, nameof(ListPart)))
            {
                // 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);
                }
            }
        }
Example #2
0
        public override async Task <IDisplayResult> UpdateAsync(ContentOptionsViewModel model, IUpdateModel updater)
        {
            var viewModel = new ListPartContentsAdminFilterViewModel();

            if (await updater.TryUpdateModelAsync(viewModel, nameof(ListPart)))
            {
                if (viewModel.ShowListContentTypes)
                {
                    model.RouteValues.TryAdd("ListPart.ShowListContentTypes", viewModel.ShowListContentTypes);
                }

                if (!string.IsNullOrEmpty(viewModel.ListContentItemId))
                {
                    model.RouteValues.TryAdd("ListPart.ListContentItemId", viewModel.ListContentItemId);
                }
            }

            return(Edit(model, updater));
        }