Пример #1
0
        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 }));
        }
Пример #2
0
        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" }));
                    }
                });
            }
        }