Esempio n. 1
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" }));
                    }
                });
            }
        }
Esempio n. 2
0
        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));
        }