public ActionResult ListOperation(int containerId, ListOperation operation, SortBy?sortBy, SortDirection?sortByDirection, PagerParameters pagerParameters) { var items = _containerService.GetContentItems(containerId, VersionOptions.Latest).Select(x => x.As <ContainablePart>()); switch (operation) { case ViewModels.ListOperation.Reverse: _containerService.Reverse(items); _services.Notifier.Success(T("The list has been reversed.")); break; case ViewModels.ListOperation.Shuffle: _containerService.Shuffle(items); _services.Notifier.Success(T("The list has been shuffled.")); break; case ViewModels.ListOperation.Sort: _containerService.Sort(items, sortBy.GetValueOrDefault(), sortByDirection.GetValueOrDefault()); _services.Notifier.Success(T("The list has been sorted.")); break; default: _services.Notifier.Error(T("Please select an operation to perform on the list.")); break; } return(RedirectToAction("List", new { containerId, page = pagerParameters.Page, pageSize = pagerParameters.PageSize })); }
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" })); } }); } }