diff --git a/src/Orchard.Web/Core/Containers/Controllers/ItemController.cs b/src/Orchard.Web/Core/Containers/Controllers/ItemController.cs index d5684923a..433c57c39 100644 --- a/src/Orchard.Web/Core/Containers/Controllers/ItemController.cs +++ b/src/Orchard.Web/Core/Containers/Controllers/ItemController.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Web.Mvc; using Orchard.ContentManagement; using Orchard.Core.Common.Models; +using Orchard.Core.Containers.Extensions; using Orchard.Core.Containers.Models; using Orchard.Core.Routable.Models; using Orchard.DisplayManagement; @@ -48,34 +49,23 @@ namespace Orchard.Core.Containers.Controllers { .Join().Where(cr => cr.Container.Id == container.Id); var descendingOrder = container.As().Record.OrderByDirection == (int) OrderByDirection.Descending; - //todo: (heskew) order by custom part properties - switch (container.As().Record.OrderByProperty) { - case "RoutePart.Title": - query = descendingOrder - ? query.OrderByDescending(record => record.Title) - : query.OrderBy(record => record.Title); - break; - case "RoutePart.Slug": - query = descendingOrder - ? query.OrderByDescending(record => record.Slug) - : query.OrderBy(record => record.Slug); - break; - default: // "CommonPart.PublishedUtc" - query = descendingOrder - ? query.OrderByDescending(record => record.PublishedUtc) - : query.OrderBy(record => record.PublishedUtc); - break; - } + query = query.OrderBy(container.As().Record.OrderByProperty, descendingOrder); + pager.PageSize = pager.PageSize != Pager.PageSizeDefault && container.As().Record.Paginated + ? pager.PageSize + : container.As().Record.PageSize; var pagerShape = Shape.Pager(pager).TotalItemCount(query.Count()); - var pageOfItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList(); + + var startIndex = container.As().Record.Paginated ? pager.GetStartIndex() : 0; + var pageOfItems = query.Slice(startIndex, pager.PageSize).ToList(); var list = Shape.List(); list.AddRange(pageOfItems.Select(item => _contentManager.BuildDisplay(item, "Summary"))); var viewModel = Shape.ViewModel() .ContentItems(list) - .Pager(pagerShape); + .Pager(pagerShape) + .ShowPager(container.As().Record.Paginated); return View(viewModel); } diff --git a/src/Orchard.Web/Core/Containers/Views/Item/Display.cshtml b/src/Orchard.Web/Core/Containers/Views/Item/Display.cshtml index a4494f9a4..52d1f8ad9 100644 --- a/src/Orchard.Web/Core/Containers/Views/Item/Display.cshtml +++ b/src/Orchard.Web/Core/Containers/Views/Item/Display.cshtml @@ -1,2 +1,4 @@ @Display(Model.ContentItems) -@Display(Model.Pager) \ No newline at end of file +@if (Model.ShowPager) { + @Display(Model.Pager) +} \ No newline at end of file diff --git a/src/Orchard/UI/Navigation/Pager.cs b/src/Orchard/UI/Navigation/Pager.cs index 27aa646db..2adaef763 100644 --- a/src/Orchard/UI/Navigation/Pager.cs +++ b/src/Orchard/UI/Navigation/Pager.cs @@ -1,7 +1,7 @@ namespace Orchard.UI.Navigation { public class Pager { private const int PageDefault = 1; - private const int PageSizeDefault = 10; + public const int PageSizeDefault = 10; private int _pageSize; private int _size;