private void CreateListMenuItems(NavigationBuilder builder) { var containers = _containerService .GetContainersQuery(VersionOptions.Latest) .Where <ContainerPartRecord>(x => x.ShowOnAdminMenu) .List() .Where(x => _authorizationService.TryCheckAccess(Orchard.Core.Contents.Permissions.EditContent, _workContextAccessor.GetContext().CurrentUser, x)) .ToList(); foreach (var container in containers) { var closureContainer = container; if (!String.IsNullOrWhiteSpace(container.AdminMenuImageSet)) { builder.AddImageSet(container.AdminMenuImageSet.Trim()); } builder.Add(T(container.AdminMenuText), container.AdminMenuPosition, item => { var containedItems = _containerService.GetContentItems(closureContainer.Id, VersionOptions.Latest).ToList(); var actualContainer = closureContainer; var position = 0; // If the list has just a single item that happens to be a container itself, // we will treat that one as the actual container to provide a nice & quick way to manage that list. if (containedItems.Count == 1) { var containedItem = containedItems.First().As <ContainerPart>(); if (containedItem != null) { actualContainer = containedItem; foreach (var itemContentType in containedItem.ItemContentTypes) { var closureItemContentType = itemContentType; item.Add(T("New {0}", itemContentType.DisplayName), String.Format("1.{0}", position++), subItem => subItem .Action("Create", "Admin", new { id = closureItemContentType.Name, containerid = containedItem.Id, area = "Contents" })); } } } var containerMetadata = _contentManager.GetItemMetadata(actualContainer); item.Action(containerMetadata.AdminRouteValues); item.Action(containerMetadata.AdminRouteValues); item.AddClass("nav-list"); item.AddClass(closureContainer.AdminMenuText.HtmlClassify()); item.LinkToFirstChild(false); foreach (var itemContentType in closureContainer.ItemContentTypes) { var closureItemContentType = itemContentType; item.Add(T("New {0}", itemContentType.DisplayName), String.Format("1.{0}", position++), subItem => subItem .Action("Create", "Admin", new { id = closureItemContentType.Name, containerid = container.Id, area = "Contents" })); } }); } }
public ActionResult Index(Core.Contents.ViewModels.ListContentsViewModel model, PagerParameters pagerParameters) { var query = _containerService.GetContainersQuery(VersionOptions.Latest); 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 = _containerService.GetContainerTypes() .Select(ctd => new KeyValuePair <string, string>(ctd.Name, ctd.DisplayName)) .ToList().OrderBy(kvp => kvp.Value); var pager = new Pager(_services.WorkContext.CurrentSite, pagerParameters); var pagerShape = Shape.Pager(pager).TotalItemCount(query.Count()); var pageOfLists = query.Slice(pager.GetStartIndex(), pager.PageSize); var listsShape = Shape.List(); listsShape.AddRange(pageOfLists.Select(x => _contentManager.BuildDisplay(x, "SummaryAdmin")).ToList()); var viewModel = Shape.ViewModel() .Lists(listsShape) .Pager(pagerShape) .Options(model.Options); return(View(viewModel)); }