From 734fa047bf81a14498f978b48a974c7fa269f492 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Thu, 13 Mar 2014 14:13:57 -0700 Subject: [PATCH] Adding MaxPageSize to ISite --- .../Stubs/StubWorkContextAccessor.cs | 7 +++++- .../Drivers/SiteSettingsPartDriver.cs | 2 ++ .../Core/Settings/Models/SiteSettingsPart.cs | 5 ++++ .../ViewModels/SiteSettingsPartViewModel.cs | 5 ++++ .../Parts.Settings.SiteSettingsPart.cshtml | 23 ++++++++++++------- .../Modules/Orchard.Setup/SetupMode.cs | 5 ++++ .../Tests/StubWorkContextAccessor.cs | 5 ++++ src/Orchard/Settings/ISite.cs | 1 + src/Orchard/UI/Navigation/Pager.cs | 4 ++++ 9 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/Orchard.Tests/Stubs/StubWorkContextAccessor.cs b/src/Orchard.Tests/Stubs/StubWorkContextAccessor.cs index b739d6c6b..2bff2ff7a 100644 --- a/src/Orchard.Tests/Stubs/StubWorkContextAccessor.cs +++ b/src/Orchard.Tests/Stubs/StubWorkContextAccessor.cs @@ -76,7 +76,12 @@ namespace Orchard.Tests.Stubs { set { throw new NotImplementedException(); } } - public int PageSize{ + public int PageSize { + get { throw new NotImplementedException(); } + set { throw new NotImplementedException(); } + } + + public int MaxPageSize { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } } diff --git a/src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs b/src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs index a2b3e7585..d33776cb3 100644 --- a/src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs +++ b/src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs @@ -71,6 +71,7 @@ namespace Orchard.Core.Settings.Drivers { var previousBaseUrl = model.Site.BaseUrl; var previousSuperUser = model.Site.SuperUser; + var previousMaxPageSize = model.Site.MaxPageSize; updater.TryUpdateModel(model, Prefix, null, null); @@ -90,6 +91,7 @@ namespace Orchard.Core.Settings.Drivers { } else { model.Site.SuperUser = previousSuperUser; + model.Site.MaxPageSize = previousMaxPageSize; } // ensure the base url is absolute if provided diff --git a/src/Orchard.Web/Core/Settings/Models/SiteSettingsPart.cs b/src/Orchard.Web/Core/Settings/Models/SiteSettingsPart.cs index a9b3a1a3f..0d96cf192 100644 --- a/src/Orchard.Web/Core/Settings/Models/SiteSettingsPart.cs +++ b/src/Orchard.Web/Core/Settings/Models/SiteSettingsPart.cs @@ -50,6 +50,11 @@ namespace Orchard.Core.Settings.Models { set { this.Store(x => x.PageSize, value); } } + public int MaxPageSize { + get { return this.Retrieve(x => x.MaxPageSize); } + set { this.Store(x => x.MaxPageSize, value); } + } + public string SiteTimeZone { get { return this.Retrieve(x => x.SiteTimeZone); } set { this.Store(x => x.SiteTimeZone, value); } diff --git a/src/Orchard.Web/Core/Settings/ViewModels/SiteSettingsPartViewModel.cs b/src/Orchard.Web/Core/Settings/ViewModels/SiteSettingsPartViewModel.cs index 270f879c5..bc8594485 100644 --- a/src/Orchard.Web/Core/Settings/ViewModels/SiteSettingsPartViewModel.cs +++ b/src/Orchard.Web/Core/Settings/ViewModels/SiteSettingsPartViewModel.cs @@ -51,6 +51,11 @@ namespace Orchard.Core.Settings.ViewModels { set { Site.PageSize = value; } } + public int MaxPageSize { + get { return Site.MaxPageSize; } + set { Site.MaxPageSize = value; } + } + public string BaseUrl { get { return Site.BaseUrl; } set { Site.BaseUrl = value; } diff --git a/src/Orchard.Web/Core/Settings/Views/EditorTemplates/Parts.Settings.SiteSettingsPart.cshtml b/src/Orchard.Web/Core/Settings/Views/EditorTemplates/Parts.Settings.SiteSettingsPart.cshtml index ddcacb6ec..aee0e3d32 100644 --- a/src/Orchard.Web/Core/Settings/Views/EditorTemplates/Parts.Settings.SiteSettingsPart.cshtml +++ b/src/Orchard.Web/Core/Settings/Views/EditorTemplates/Parts.Settings.SiteSettingsPart.cshtml @@ -45,14 +45,14 @@ @Html.EditorFor(x => x.PageTitleSeparator) @Html.ValidationMessage("PageTitleSeparator", "*") - @if (AuthorizedFor(Orchard.Security.StandardPermissions.SiteOwner)) { -
- - @Html.EditorFor(x => x.SuperUser) - @Html.ValidationMessage("SuperUser", "*") - @T("Enter an existing account name, or nothing if you don't want a Super user account") -
- } +@if (AuthorizedFor(Orchard.Security.StandardPermissions.SiteOwner)) { +
+ + @Html.EditorFor(x => x.SuperUser) + @Html.ValidationMessage("SuperUser", "*") + @T("Enter an existing account name, or nothing if you don't want a Super user account") +
+}
@Html.DropDownList("ResourceDebugMode", resourceDebugMode) @@ -63,4 +63,11 @@ @Html.TextBoxFor(m => m.PageSize, new { @class = "text small" }) @T("Determines the default number of items that are shown per page.")
+@if (AuthorizedFor(Orchard.Security.StandardPermissions.SiteOwner)) { +
+ + @Html.TextBoxFor(m => m.MaxPageSize, new {@class = "text small"}) + @T("Determines the maximum number of items that are shown per page. Leave 0 for unlimited.") +
+} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs b/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs index b2fbafa8d..b7c8a38b2 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs @@ -191,6 +191,11 @@ namespace Orchard.Setup { set { throw new NotImplementedException(); } } + public int MaxPageSize { + get { return SiteSettingsPart.DefaultPageSize; } + set { throw new NotImplementedException(); } + } + public string BaseUrl { get { return ""; } } diff --git a/src/Orchard.Web/Modules/Orchard.Tokens/Tests/StubWorkContextAccessor.cs b/src/Orchard.Web/Modules/Orchard.Tokens/Tests/StubWorkContextAccessor.cs index 0668b9689..bdb1a8950 100644 --- a/src/Orchard.Web/Modules/Orchard.Tokens/Tests/StubWorkContextAccessor.cs +++ b/src/Orchard.Web/Modules/Orchard.Tokens/Tests/StubWorkContextAccessor.cs @@ -85,6 +85,11 @@ namespace Orchard.Tokens.Tests { set { throw new NotImplementedException(); } } + public int MaxPageSize { + get { throw new NotImplementedException(); } + set { throw new NotImplementedException(); } + } + public string BaseUrl { get; set; } public string SiteTimeZone { diff --git a/src/Orchard/Settings/ISite.cs b/src/Orchard/Settings/ISite.cs index 7d6f52720..a194fe05a 100644 --- a/src/Orchard/Settings/ISite.cs +++ b/src/Orchard/Settings/ISite.cs @@ -14,6 +14,7 @@ namespace Orchard.Settings { string SiteCalendar { get; set; } ResourceDebugMode ResourceDebugMode { get; set; } int PageSize { get; set; } + int MaxPageSize { get; set; } string BaseUrl { get; } string SiteTimeZone { get; } } diff --git a/src/Orchard/UI/Navigation/Pager.cs b/src/Orchard/UI/Navigation/Pager.cs index 9783e6ed8..53d9081f3 100644 --- a/src/Orchard/UI/Navigation/Pager.cs +++ b/src/Orchard/UI/Navigation/Pager.cs @@ -25,6 +25,10 @@ namespace Orchard.UI.Navigation { public Pager(ISite site, int? page, int? pageSize) { Page = (int) (page != null ? (page > 0 ? page : PageDefault) : PageDefault); PageSize = pageSize ?? site.PageSize; + + if (site.MaxPageSize > 0 && PageSize > site.MaxPageSize) { + PageSize = site.MaxPageSize; + } } ///