From 12725bbbf6db75c6ab69acca926f90df5a1d2611 Mon Sep 17 00:00:00 2001 From: Christiaan Swiers Date: Mon, 5 Jan 2015 16:41:30 +0100 Subject: [PATCH] wsp-10294 In System settings added option to configure the paging. Enable/ disable and the amount of packages per page. At the home page of a customer the paging itself has been added as well. --- WebsitePanel/Sources/VersionInfo.cs | 30 +------- WebsitePanel/Sources/VersionInfo.vb | 10 +-- .../System/SystemSettings.cs | 3 +- .../App_Themes/Default/Styles/Skin.css | 5 +- .../SystemSettings.ascx.resx | 9 +++ .../Code/Helpers/PackagesHelper.cs | 17 +++++ .../WebsitePanel/SystemSettings.ascx | 16 +++++ .../WebsitePanel/SystemSettings.ascx.cs | 23 +++++++ .../SystemSettings.ascx.designer.cs | 64 +++++++++-------- .../WebsitePanel/UserSpaces.ascx | 8 +++ .../WebsitePanel/UserSpaces.ascx.cs | 69 +++++++++++++++++-- .../WebsitePanel/UserSpaces.ascx.designer.cs | 9 +++ 12 files changed, 192 insertions(+), 71 deletions(-) diff --git a/WebsitePanel/Sources/VersionInfo.cs b/WebsitePanel/Sources/VersionInfo.cs index eafbfbf3..df25dde8 100644 --- a/WebsitePanel/Sources/VersionInfo.cs +++ b/WebsitePanel/Sources/VersionInfo.cs @@ -1,35 +1,7 @@ -// Copyright (c) 2014, Outercurve Foundation. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// - Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// - Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// - Neither the name of the Outercurve Foundation nor the names of its -// contributors may be used to endorse or promote products derived from this -// software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18051 +// Runtime Version:4.0.30319.34014 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. diff --git a/WebsitePanel/Sources/VersionInfo.vb b/WebsitePanel/Sources/VersionInfo.vb index bf02a9da..d14bcc16 100644 --- a/WebsitePanel/Sources/VersionInfo.vb +++ b/WebsitePanel/Sources/VersionInfo.vb @@ -1,7 +1,7 @@ '------------------------------------------------------------------------------ ' ' This code was generated by a tool. -' Runtime Version:4.0.30319.18051 +' Runtime Version:4.0.30319.34014 ' ' Changes to this file may cause incorrect behavior and will be lost if ' the code is regenerated. @@ -15,9 +15,9 @@ Imports System Imports System.Reflection Imports System.Runtime.CompilerServices Imports System.Runtime.InteropServices - diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs index 14cd1dfe..5375fd69 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs @@ -43,7 +43,8 @@ namespace WebsitePanel.EnterpriseServer public const string SETUP_SETTINGS = "SetupSettings"; public const string WPI_SETTINGS = "WpiSettings"; public const string FILEMANAGER_SETTINGS = "FileManagerSettings"; - + public const string PACKAGE_DISPLAY_SETTINGS = "PackageDisplaySettings"; + // key to access to wpi main & custom feed in wpi settings public const string WPI_MAIN_FEED_KEY = "WpiMainFeedUrl"; public const string FEED_ULS_KEY = "FeedUrls"; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css index 36f2ac89..dc9bab11 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css @@ -293,4 +293,7 @@ UL.ActionButtons LI {margin-bottom: 12px;} p.warningText {font-size:14px; color:Red; text-align:center;} .Hidden {display: none;} .LinkText {color:#428bca;} -.WrapText { white-space: normal;} \ No newline at end of file +.WrapText { white-space: normal;} +.activePageBlock, .pageBlock { display: inline-block; height: 24px; margin: 0 2px; width: 26px; font-size: 11px; line-height: 23px; text-align: center; white-space:nowrap; } +.activePageBlock { border: none; color: #222; font-weight: 600; } +.pageBlock { border: 1px solid #e6e6e6; border-radius: 1px; cursor: pointer; } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SystemSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SystemSettings.ascx.resx index d0dd8013..4c601438 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SystemSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SystemSettings.ascx.resx @@ -162,4 +162,13 @@ (One (1) extension per line) + + Package Display Settings + + + Display packages per page + + + Use paging on package overview + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs index a4c7f180..328a1b07 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs @@ -28,12 +28,14 @@ using System; using System.Data; +using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Caching; using WebsitePanel.EnterpriseServer; +using System.Collections; namespace WebsitePanel.Portal { @@ -162,6 +164,21 @@ namespace WebsitePanel.Portal return ES.Services.Packages.GetRawMyPackages(PanelSecurity.SelectedUserId); } + public Hashtable GetMyPackages(int index, int PackagesPerPage) + { + Hashtable ret = new Hashtable(); + + DataTable table = ES.Services.Packages.GetRawMyPackages(PanelSecurity.SelectedUserId).Tables[0]; + System.Collections.Generic.IEnumerable dr = table.AsEnumerable().Skip(PackagesPerPage * index - PackagesPerPage).Take(PackagesPerPage); + + DataSet set = new DataSet(); + set.Tables.Add(dr.CopyToDataTable()); + + ret.Add("DataSet", set); + ret.Add("RowCount", table.Rows.Count); + return ret; + } + #region Packages Paged ODS Methods DataSet dsPackagesPaged; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx index 24542dbe..c222013d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx @@ -41,6 +41,22 @@ + + + + + + + + + + + + +
+
+ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs index 151adbf9..e26e82a9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs @@ -50,6 +50,8 @@ namespace WebsitePanel.Portal public const string SMTP_PASSWORD = "SmtpPassword"; public const string SMTP_ENABLE_SSL = "SmtpEnableSsl"; public const string BACKUPS_PATH = "BackupsPath"; + public const string PACKAGE_USE_PAGING = "PackageUsePaging"; + public const string PACKAGES_PER_PAGE = "PackagesPerPage"; public const string FILE_MANAGER_EDITABLE_EXTENSIONS = "EditableExtensions"; /* @@ -95,6 +97,15 @@ namespace WebsitePanel.Portal txtBackupsPath.Text = settings["BackupsPath"]; } + // PACKAGE DISPLAY + settings = ES.Services.System.GetSystemSettings( + WSP.SystemSettings.PACKAGE_DISPLAY_SETTINGS); + + if(settings != null) + { + chkPackageUsePaging.Checked = Utils.ParseBool(settings[PACKAGE_USE_PAGING], false); + txtPackagePackagesPerPage.Text = settings[PACKAGES_PER_PAGE]; + } // WPI settings = ES.Services.System.GetSystemSettings(WSP.SystemSettings.WPI_SETTINGS); @@ -174,6 +185,18 @@ namespace WebsitePanel.Portal return; } + settings = new WSP.SystemSettings(); + settings[PACKAGE_USE_PAGING] = chkPackageUsePaging.Checked.ToString(); + settings[PACKAGES_PER_PAGE] = txtPackagePackagesPerPage.Text; + + result = ES.Services.System.SetSystemSettings( + WSP.SystemSettings.PACKAGE_DISPLAY_SETTINGS, settings); + + if(result < 0) { + ShowResultMessage(result); + return; + } + // WPI /* diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.designer.cs index b5894df1..cb3bf389 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.designer.cs @@ -1,31 +1,3 @@ -// Copyright (c) 2014, Outercurve Foundation. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// - Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// - Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// - Neither the name of the Outercurve Foundation nor the names of its -// contributors may be used to endorse or promote products derived from this -// software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -139,6 +111,42 @@ namespace WebsitePanel.Portal { /// protected global::System.Web.UI.WebControls.TextBox txtBackupsPath; + /// + /// lclPackageDisplaySettings control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.CollapsiblePanel lclPackageDisplaySettings; + + /// + /// PackageDisplaySettings control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel PackageDisplaySettings; + + /// + /// chkPackageUsePaging control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkPackageUsePaging; + + /// + /// txtPackagePackagesPerPage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtPackagePackagesPerPage; + /// /// lclWpiSettings control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx index de03cce4..67162da1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx @@ -60,6 +60,14 @@ + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs index 849ec12e..6ba28a05 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs @@ -36,6 +36,7 @@ using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; +using WSP = WebsitePanel.EnterpriseServer; using WebsitePanel.EnterpriseServer; using System.Xml; @@ -47,8 +48,21 @@ namespace WebsitePanel.Portal { XmlNodeList xmlIcons = null; + bool UsePaging = false; + int PackagesPerPage; + int currentPage = 1; + protected void Page_Load(object sender, EventArgs e) { + // PACKAGE DISPLAY SETTINGS + WSP.SystemSettings settings = ES.Services.System.GetSystemSettings( + WSP.SystemSettings.PACKAGE_DISPLAY_SETTINGS); + if(Utils.ParseBool(settings[SystemSettings.PACKAGE_USE_PAGING], false)) + { + UsePaging = true; + PackagesPerPage = Utils.ParseInt(settings[SystemSettings.PACKAGES_PER_PAGE]); + } + // check for user bool isUser = PanelSecurity.SelectedUser.Role == UserRole.User; @@ -56,16 +70,26 @@ namespace WebsitePanel.Portal xmlIcons = this.Module.SelectNodes("Group"); if (isUser && xmlIcons != null) - { + { // USER UserPackagesPanel.Visible = true; - PackagesList.DataSource = new PackagesHelper().GetMyPackages(); - PackagesList.DataBind(); - - if (PackagesList.Items.Count == 0) + if(!UsePaging) + { + PackagesList.DataSource = new PackagesHelper().GetMyPackages(); + PackagesList.DataBind(); + if (PackagesList.Items.Count == 0) + { + litEmptyList.Text = GetLocalizedString("gvPackages.Empty"); + EmptyPackagesList.Visible = true; + } + } + else { - litEmptyList.Text = GetLocalizedString("gvPackages.Empty"); - EmptyPackagesList.Visible = true; + if(!IsPostBack) + { + ListPackagesWithPaging(); + packagePaging.Visible = true; + } } } else @@ -223,5 +247,36 @@ namespace WebsitePanel.Portal { return node.Attributes[name] != null ? node.Attributes[name].Value : null; } + + private void ListPackagesWithPaging() + { + Hashtable ht = new PackagesHelper().GetMyPackages(currentPage, PackagesPerPage); + PackagesList.DataSource = ht["DataSet"]; + PackagesList.DataBind(); + if(PackagesList.Items.Count == 0) { + litEmptyList.Text = GetLocalizedString("gvPackages.Emtpy"); + EmptyPackagesList.Visible = true; + } + else + { + int pageCount = (int)Math.Ceiling(Convert.ToDecimal(ht["RowCount"]) / Convert.ToDecimal(PackagesPerPage)); + List pages = new List(); + if(pageCount > 0) + { + for(int i = 1; i <= pageCount; i++) + { + pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage)); + } + } + packagePaging.DataSource = pages; + packagePaging.DataBind(); + } + } + + public void Page_Changed(Object sender, EventArgs e) + { + currentPage = Utils.ParseInt(((LinkButton)sender).CommandArgument); + ListPackagesWithPaging(); + } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs index cc9a065a..7b9b8440 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs @@ -48,6 +48,15 @@ namespace WebsitePanel.Portal { /// protected global::System.Web.UI.WebControls.Repeater PackagesList; + /// + /// packagePaging control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Repeater packagePaging; + /// /// EmptyPackagesList control. ///