diff --git a/src/Orchard.Web/Core/Containers/Controllers/ItemController.cs b/src/Orchard.Web/Core/Containers/Controllers/ItemController.cs deleted file mode 100644 index 3a67992d0..000000000 --- a/src/Orchard.Web/Core/Containers/Controllers/ItemController.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Linq; -using System.Web.Mvc; -using System.Web.Routing; -using Orchard.ContentManagement; -using Orchard.Core.Common.Models; -using Orchard.Core.Containers.Extensions; -using Orchard.Core.Containers.Models; -using Orchard.Core.Contents; -using Orchard.Core.Feeds; -using Orchard.DisplayManagement; -using Orchard.Mvc; -using Orchard.Themes; -using Orchard.UI.Navigation; -using Orchard.Settings; -using Orchard.Localization; - -namespace Orchard.Core.Containers.Controllers { - - public class ItemController : Controller { - private readonly IContentManager _contentManager; - private readonly ISiteService _siteService; - private readonly IFeedManager _feedManager; - - public ItemController( - IContentManager contentManager, - IShapeFactory shapeFactory, - ISiteService siteService, - IFeedManager feedManager, - IOrchardServices services) { - - _contentManager = contentManager; - _siteService = siteService; - _feedManager = feedManager; - Shape = shapeFactory; - Services = services; - T = NullLocalizer.Instance; - } - - dynamic Shape { get; set; } - public IOrchardServices Services { get; private set; } - - public Localizer T { get; set; } - [Themed] - public ActionResult Display(int id, PagerParameters pagerParameters) { - var container = _contentManager - .Get(id, VersionOptions.Published) - .As(); - - if (container == null) { - return HttpNotFound(T("Container not found").Text); - } - - if (!Services.Authorizer.Authorize(Permissions.ViewContent, container, T("Cannot view content"))) { - return new HttpUnauthorizedResult(); - } - - // TODO: (PH) Find a way to apply PagerParameters via a driver so we can lose this controller - container.PagerParameters = pagerParameters; - var model = _contentManager.BuildDisplay(container); - - return new ShapeResult(this, model); - } - - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Containers/Drivers/ContainerPartDriver.cs b/src/Orchard.Web/Core/Containers/Drivers/ContainerPartDriver.cs index 5682a512a..3de8e78e6 100644 --- a/src/Orchard.Web/Core/Containers/Drivers/ContainerPartDriver.cs +++ b/src/Orchard.Web/Core/Containers/Drivers/ContainerPartDriver.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using System.Xml; using Orchard.ContentManagement; @@ -27,8 +28,8 @@ namespace Orchard.Core.Containers.Drivers { private readonly IContainerService _containerService; public ContainerPartDriver( - IContentDefinitionManager contentDefinitionManager, - IOrchardServices orchardServices, + IContentDefinitionManager contentDefinitionManager, + IOrchardServices orchardServices, ISiteService siteService, IFeedManager feedManager, IContainerService containerService) { _contentDefinitionManager = contentDefinitionManager; @@ -47,7 +48,7 @@ namespace Orchard.Core.Containers.Drivers { if (!part.ItemsShown) return null; - return ContentShape("Parts_Container_Contained", () => { + return ContentShape("Parts_Container_Contained", () => { var container = part.ContentItem; var query = _contentManager .Query(VersionOptions.Published) @@ -55,13 +56,26 @@ namespace Orchard.Core.Containers.Drivers { .Join().OrderByDescending(x => x.Position); var metadata = container.ContentManager.GetItemMetadata(container); - if (metadata!=null) - _feedManager.Register(metadata.DisplayText, "rss", new RouteValueDictionary { { "containerid", container.Id } }); + if (metadata != null) { + _feedManager.Register(metadata.DisplayText, "rss", new RouteValueDictionary {{"containerid", container.Id}}); + } - var pager = new Pager(_siteService.GetSiteSettings(), part.PagerParameters); - pager.PageSize = part.PagerParameters.PageSize != null && part.Paginated - ? pager.PageSize - : part.PageSize; + // Retrieving pager parameters. + var queryString = _orchardServices.WorkContext.HttpContext.Request.QueryString; + + var page = 0; + // Don't try to page if not necessary. + if (part.Paginated && queryString["page"] != null) { + Int32.TryParse(queryString["page"], out page); + } + + var pageSize = part.PageSize; + // If the container is paginated and pageSize is provided in the query string then retrieve it. + if (part.Paginated && queryString["pageSize"] != null) { + Int32.TryParse(queryString["pageSize"], out pageSize); + } + + var pager = new Pager(_siteService.GetSiteSettings(), page, pageSize); var pagerShape = shapeHelper.Pager(pager).TotalItemCount(query.Count()); var startIndex = part.Paginated ? pager.GetStartIndex() : 0; @@ -88,7 +102,7 @@ namespace Orchard.Core.Containers.Drivers { protected override DriverResult Editor(ContainerPart part, IUpdateModel updater, dynamic shapeHelper) { return ContentShape("Parts_Container_Edit", () => { - if(!part.ContainerSettings.DisplayContainerEditor) { + if (!part.ContainerSettings.DisplayContainerEditor) { return null; } @@ -107,7 +121,7 @@ namespace Orchard.Core.Containers.Drivers { EnablePositioning = part.Record.EnablePositioning, OverrideEnablePositioning = part.ContainerSettings.EnablePositioning == null }; - + if (updater != null) { if (updater.TryUpdateModel(model, "Container", null, new[] { "OverrideEnablePositioning" })) { part.AdminMenuPosition = model.AdminMenuPosition; @@ -127,7 +141,7 @@ namespace Orchard.Core.Containers.Drivers { } } } - + return shapeHelper.EditorTemplate(TemplateName: "Container", Model: model, Prefix: "Container"); }); } diff --git a/src/Orchard.Web/Core/Containers/Handlers/ContainerPartHandler.cs b/src/Orchard.Web/Core/Containers/Handlers/ContainerPartHandler.cs index 5ab7aeb90..6ae00d7e6 100644 --- a/src/Orchard.Web/Core/Containers/Handlers/ContainerPartHandler.cs +++ b/src/Orchard.Web/Core/Containers/Handlers/ContainerPartHandler.cs @@ -7,7 +7,6 @@ using Orchard.Core.Containers.Models; using Orchard.Core.Containers.Services; using Orchard.Core.Containers.Settings; using Orchard.Data; -using System.Web.Routing; namespace Orchard.Core.Containers.Handlers { public class ContainerPartHandler : ContentHandler { @@ -35,14 +34,6 @@ namespace Orchard.Core.Containers.Handlers { }); - OnGetContentItemMetadata((context, part) => { - context.Metadata.DisplayRouteValues = new RouteValueDictionary { - {"Area", "Containers"}, - {"Controller", "Item"}, - {"Action", "Display"}, - {"id", context.ContentItem.Id} - }; - }); OnActivated((context, part) => { part.ContainerSettingsField.Loader(() => part.Settings.GetModel()); diff --git a/src/Orchard.Web/Core/Containers/Models/ContainerPart.cs b/src/Orchard.Web/Core/Containers/Models/ContainerPart.cs index f456f4e2c..b55b954da 100644 --- a/src/Orchard.Web/Core/Containers/Models/ContainerPart.cs +++ b/src/Orchard.Web/Core/Containers/Models/ContainerPart.cs @@ -71,12 +71,6 @@ namespace Orchard.Core.Containers.Models { get { return Record.ItemCount; } set { Record.ItemCount = value; } } - - public PagerParameters PagerParameters { get; set; } - - public ContainerPart() { - PagerParameters = new PagerParameters(); - } } public class ContainerPartRecord : ContentPartRecord { diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj index de06e4c2c..8526c49fc 100644 --- a/src/Orchard.Web/Core/Orchard.Core.csproj +++ b/src/Orchard.Web/Core/Orchard.Core.csproj @@ -119,7 +119,6 @@ -