From 12725bbbf6db75c6ab69acca926f90df5a1d2611 Mon Sep 17 00:00:00 2001 From: Christiaan Swiers Date: Mon, 5 Jan 2015 16:41:30 +0100 Subject: [PATCH 1/9] 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. /// From 9584fb2dd71c559c6dff79b7cacac1ef071b837d Mon Sep 17 00:00:00 2001 From: Christiaan Swiers Date: Sun, 11 Jan 2015 11:30:32 +0100 Subject: [PATCH 2/9] Added a check to see if the current user has any packages in his account. If not return an empty hashtable. --- .../WebsitePanel/Code/Helpers/PackagesHelper.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) 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 328a1b07..cd047414 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs @@ -169,13 +169,15 @@ namespace WebsitePanel.Portal 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); + if(table.Rows.Count > 0) { + System.Collections.Generic.IEnumerable dr = table.AsEnumerable().Skip(PackagesPerPage * index - PackagesPerPage).Take(PackagesPerPage); + + DataSet set = new DataSet(); + set.Tables.Add(dr.CopyToDataTable()); - DataSet set = new DataSet(); - set.Tables.Add(dr.CopyToDataTable()); - - ret.Add("DataSet", set); - ret.Add("RowCount", table.Rows.Count); + ret.Add("DataSet", set); + ret.Add("RowCount", table.Rows.Count); + } return ret; } From a810e3c78b3c684508a5b67e21e56fac09f54845 Mon Sep 17 00:00:00 2001 From: Christiaan Swiers Date: Tue, 13 Jan 2015 17:39:35 +0100 Subject: [PATCH 3/9] Changes following the mail correspondence with Omar, changing the paging on the home page of the customer to a dropdownlist. --- .../App_Themes/Default/Styles/chosen.min.css | 2 + .../Default/Styles/images/chosen-sprite.png | Bin 0 -> 538 bytes .../SystemSettings.ascx.resx | 9 -- .../Code/Helpers/PackagesHelper.cs | 10 ++ .../WebsitePanel/SystemSettings.ascx | 16 --- .../WebsitePanel/SystemSettings.ascx.cs | 24 +--- .../SystemSettings.ascx.designer.cs | 36 ------ .../WebsitePanel/UserSpaces.ascx | 103 +++++++++--------- .../WebsitePanel/UserSpaces.ascx.cs | 79 ++++---------- .../WebsitePanel/UserSpaces.ascx.designer.cs | 18 +-- .../JavaScript/chosen.min.js | 2 + 11 files changed, 96 insertions(+), 203 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/chosen.min.css create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/images/chosen-sprite.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/JavaScript/chosen.min.js diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/chosen.min.css b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/chosen.min.css new file mode 100644 index 00000000..08fc2cd6 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/chosen.min.css @@ -0,0 +1,2 @@ +/* Chosen v1.3.0 | (c) 2011-2014 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */ +.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;*display:inline;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(images/chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:#fff url(images/chosen-sprite.png) no-repeat 100% -20px;background:url(images/chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:transparent!important;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:0;background:transparent}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single-nosearch .chosen-search,.chosen-rtl .chosen-drop{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:0}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:#fff url(images/chosen-sprite.png) no-repeat -30px -20px;background:url(images/chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-rtl .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-container-single .chosen-search input[type=text],.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span{background-image:url(chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/images/chosen-sprite.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/images/chosen-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..c57da70b4b5b1e08a6977ddde182677af0e5e1b8 GIT binary patch literal 538 zcmV+#0_FXQP)cz2)-WJLkv8J@4bb5L`rsE?Kc|FrXHkKz)ov z76MHYM&Apx%05P7orE!>9=yZ~6O0^V?1%{=1UASqa<2Pgnk7fs!OIs9gh{NCN+@=) z>Gfttd5uq;oeR{%NHjtqV~jEQeY?tDff=(jqx>~SZ_e+iN26HR*`0Q!Re)~HD85p> zbL()Mw}bI^#`7wp0+cv&7*LhrtOmR)?PK>(-BeLm#jL5Jfogv-QS(TBnUb;))Krqm zD}uDDeVLNhm1G*pFB`O?iA=dnWBEpqHk8Yh%Qu45EIG=&F-dDmt|;|nN@|3lOkVZ7>z*~a1?_t?U)c+&|JFJke1`&0-a z#PjhRlg?=$KTo4|rU@NyV_fzDy@>h!lVyKShsO8>V>$xyIXRbHK%H~^Aaz=s$Jz^V zlb?KfaKdZqu3^#m$mintvgJ15@j`sb2Zr%69Sn=xN01Tm5r)NQanT=jhwm7zqj2>O cEB}D~0$b-QdD7|v=>Px#07*qoM6N<$g6AXnUH||9 literal 0 HcmV?d00001 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 4c601438..d0dd8013 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,13 +162,4 @@ (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 cd047414..a9d6d1fd 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs @@ -181,6 +181,16 @@ namespace WebsitePanel.Portal return ret; } + public DataSet GetMyPackage(int packageid) { + DataSet ret = new DataSet(); + DataTable table = ES.Services.Packages.GetRawMyPackages(PanelSecurity.SelectedUserId).Tables[0]; + if(table.Rows.Count > 0) { + DataTable t = table.Select("PackageID = " + packageid).CopyToDataTable(); + ret.Tables.Add(t); + } + 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 c222013d..24542dbe 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx @@ -41,22 +41,6 @@ - - - - - - - - - - - - -
-
- diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs index e26e82a9..2e213004 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs @@ -50,8 +50,6 @@ 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"; /* @@ -97,16 +95,7 @@ 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); @@ -185,17 +174,6 @@ 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 cb3bf389..d2f6687e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.designer.cs @@ -111,42 +111,6 @@ 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 67162da1..4802f422 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx @@ -5,69 +5,66 @@ <%@ Register Src="UserOrganization.ascx" TagName="UserOrganization" TagPrefix="wsp" %> <%@ Import Namespace="WebsitePanel.Portal" %> + + + + - + - - - -
-
- - <%# Eval("PackageName") %> - -
-
+
+
+ +
+ + +
+ + - - + - + + + + +
+ <%# Eval("Text") %> +
+ +
    + + +
  • <%# Eval("Text") %>
  • +
    +
    +
+
+ +
+
- - - - -
- <%# Eval("Text") %> -
- -
    - - -
  • <%# Eval("Text") %>
  • -
    -
    -
-
- -
-
+
+
-
-
- -
-
- - - - - - - - - - - +
+ + + + + +
+ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs index 6ba28a05..3a9e0524 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs @@ -47,22 +47,10 @@ namespace WebsitePanel.Portal public partial class UserSpaces : WebsitePanelModuleBase { XmlNodeList xmlIcons = null; - - bool UsePaging = false; - int PackagesPerPage; - int currentPage = 1; - + DataSet myPackages; 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; @@ -70,25 +58,28 @@ namespace WebsitePanel.Portal xmlIcons = this.Module.SelectNodes("Group"); if (isUser && xmlIcons != null) - { + { + + if(!IsPostBack) + { + myPackages = new PackagesHelper().GetMyPackages(); + ddlPackageSelect.DataSource = myPackages.Tables[0].DefaultView; + ddlPackageSelect.DataTextField = myPackages.Tables[0].Columns[2].ColumnName; + ddlPackageSelect.DataValueField = myPackages.Tables[0].Columns[0].ColumnName; + ddlPackageSelect.DataBind(); + } // USER UserPackagesPanel.Visible = true; - if(!UsePaging) - { - PackagesList.DataSource = new PackagesHelper().GetMyPackages(); - PackagesList.DataBind(); - if (PackagesList.Items.Count == 0) - { + if(!IsPostBack) + { + if(ddlPackageSelect.Items.Count == 0) { litEmptyList.Text = GetLocalizedString("gvPackages.Empty"); EmptyPackagesList.Visible = true; - } - } - else - { - if(!IsPostBack) - { - ListPackagesWithPaging(); - packagePaging.Visible = true; + } else { + ddlPackageSelect.Visible = true; + myPackages = new PackagesHelper().GetMyPackage(int.Parse(ddlPackageSelect.SelectedValue)); + PackagesList.DataSource = myPackages; + PackagesList.DataBind(); } } } @@ -248,35 +239,9 @@ 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"]; + public void openSelectedPackage(Object sender, EventArgs e) { + PackagesList.DataSource = new PackagesHelper().GetMyPackage(int.Parse(ddlPackageSelect.SelectedValue)); 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 7b9b8440..c1af8244 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs @@ -39,6 +39,15 @@ namespace WebsitePanel.Portal { /// protected global::System.Web.UI.WebControls.Panel UserPackagesPanel; + /// + /// ddlPackageSelect control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlPackageSelect; + /// /// PackagesList control. /// @@ -48,15 +57,6 @@ 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. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/JavaScript/chosen.min.js b/WebsitePanel/Sources/WebsitePanel.WebPortal/JavaScript/chosen.min.js new file mode 100644 index 00000000..f24ac426 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/JavaScript/chosen.min.js @@ -0,0 +1,2 @@ +/* Chosen v1.3.0 | (c) 2011-2014 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */ +!function () { var a, AbstractChosen, Chosen, SelectParser, b, c = {}.hasOwnProperty, d = function (a, b) { function d() { this.constructor = a } for (var e in b) c.call(b, e) && (a[e] = b[e]); return d.prototype = b.prototype, a.prototype = new d, a.__super__ = b.prototype, a }; SelectParser = function () { function SelectParser() { this.options_index = 0, this.parsed = [] } return SelectParser.prototype.add_node = function (a) { return "OPTGROUP" === a.nodeName.toUpperCase() ? this.add_group(a) : this.add_option(a) }, SelectParser.prototype.add_group = function (a) { var b, c, d, e, f, g; for (b = this.parsed.length, this.parsed.push({ array_index: b, group: !0, label: this.escapeExpression(a.label), children: 0, disabled: a.disabled, classes: a.className }), f = a.childNodes, g = [], d = 0, e = f.length; e > d; d++) c = f[d], g.push(this.add_option(c, b, a.disabled)); return g }, SelectParser.prototype.add_option = function (a, b, c) { return "OPTION" === a.nodeName.toUpperCase() ? ("" !== a.text ? (null != b && (this.parsed[b].children += 1), this.parsed.push({ array_index: this.parsed.length, options_index: this.options_index, value: a.value, text: a.text, html: a.innerHTML, selected: a.selected, disabled: c === !0 ? c : a.disabled, group_array_index: b, classes: a.className, style: a.style.cssText })) : this.parsed.push({ array_index: this.parsed.length, options_index: this.options_index, empty: !0 }), this.options_index += 1) : void 0 }, SelectParser.prototype.escapeExpression = function (a) { var b, c; return null == a || a === !1 ? "" : /[\&\<\>\"\'\`]/.test(a) ? (b = { "<": "<", ">": ">", '"': """, "'": "'", "`": "`" }, c = /&(?!\w+;)|[\<\>\"\'\`]/g, a.replace(c, function (a) { return b[a] || "&" })) : a }, SelectParser }(), SelectParser.select_to_array = function (a) { var b, c, d, e, f; for (c = new SelectParser, f = a.childNodes, d = 0, e = f.length; e > d; d++) b = f[d], c.add_node(b); return c.parsed }, AbstractChosen = function () { function AbstractChosen(a, b) { this.form_field = a, this.options = null != b ? b : {}, AbstractChosen.browser_is_supported() && (this.is_multiple = this.form_field.multiple, this.set_default_text(), this.set_default_values(), this.setup(), this.set_up_html(), this.register_observers(), this.on_ready()) } return AbstractChosen.prototype.set_default_values = function () { var a = this; return this.click_test_action = function (b) { return a.test_active_click(b) }, this.activate_action = function (b) { return a.activate_field(b) }, this.active_field = !1, this.mouse_on_container = !1, this.results_showing = !1, this.result_highlighted = null, this.allow_single_deselect = null != this.options.allow_single_deselect && null != this.form_field.options[0] && "" === this.form_field.options[0].text ? this.options.allow_single_deselect : !1, this.disable_search_threshold = this.options.disable_search_threshold || 0, this.disable_search = this.options.disable_search || !1, this.enable_split_word_search = null != this.options.enable_split_word_search ? this.options.enable_split_word_search : !0, this.group_search = null != this.options.group_search ? this.options.group_search : !0, this.search_contains = this.options.search_contains || !1, this.single_backstroke_delete = null != this.options.single_backstroke_delete ? this.options.single_backstroke_delete : !0, this.max_selected_options = this.options.max_selected_options || 1 / 0, this.inherit_select_classes = this.options.inherit_select_classes || !1, this.display_selected_options = null != this.options.display_selected_options ? this.options.display_selected_options : !0, this.display_disabled_options = null != this.options.display_disabled_options ? this.options.display_disabled_options : !0 }, AbstractChosen.prototype.set_default_text = function () { return this.default_text = this.form_field.getAttribute("data-placeholder") ? this.form_field.getAttribute("data-placeholder") : this.is_multiple ? this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text : this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text, this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text }, AbstractChosen.prototype.mouse_enter = function () { return this.mouse_on_container = !0 }, AbstractChosen.prototype.mouse_leave = function () { return this.mouse_on_container = !1 }, AbstractChosen.prototype.input_focus = function () { var a = this; if (this.is_multiple) { if (!this.active_field) return setTimeout(function () { return a.container_mousedown() }, 50) } else if (!this.active_field) return this.activate_field() }, AbstractChosen.prototype.input_blur = function () { var a = this; return this.mouse_on_container ? void 0 : (this.active_field = !1, setTimeout(function () { return a.blur_test() }, 100)) }, AbstractChosen.prototype.results_option_build = function (a) { var b, c, d, e, f; for (b = "", f = this.results_data, d = 0, e = f.length; e > d; d++) c = f[d], b += c.group ? this.result_add_group(c) : this.result_add_option(c), (null != a ? a.first : void 0) && (c.selected && this.is_multiple ? this.choice_build(c) : c.selected && !this.is_multiple && this.single_set_selected_text(c.text)); return b }, AbstractChosen.prototype.result_add_option = function (a) { var b, c; return a.search_match ? this.include_option_in_results(a) ? (b = [], a.disabled || a.selected && this.is_multiple || b.push("active-result"), !a.disabled || a.selected && this.is_multiple || b.push("disabled-result"), a.selected && b.push("result-selected"), null != a.group_array_index && b.push("group-option"), "" !== a.classes && b.push(a.classes), c = document.createElement("li"), c.className = b.join(" "), c.style.cssText = a.style, c.setAttribute("data-option-array-index", a.array_index), c.innerHTML = a.search_text, this.outerHTML(c)) : "" : "" }, AbstractChosen.prototype.result_add_group = function (a) { var b, c; return a.search_match || a.group_match ? a.active_options > 0 ? (b = [], b.push("group-result"), a.classes && b.push(a.classes), c = document.createElement("li"), c.className = b.join(" "), c.innerHTML = a.search_text, this.outerHTML(c)) : "" : "" }, AbstractChosen.prototype.results_update_field = function () { return this.set_default_text(), this.is_multiple || this.results_reset_cleanup(), this.result_clear_highlight(), this.results_build(), this.results_showing ? this.winnow_results() : void 0 }, AbstractChosen.prototype.reset_single_select_options = function () { var a, b, c, d, e; for (d = this.results_data, e = [], b = 0, c = d.length; c > b; b++) a = d[b], a.selected ? e.push(a.selected = !1) : e.push(void 0); return e }, AbstractChosen.prototype.results_toggle = function () { return this.results_showing ? this.results_hide() : this.results_show() }, AbstractChosen.prototype.results_search = function () { return this.results_showing ? this.winnow_results() : this.results_show() }, AbstractChosen.prototype.winnow_results = function () { var a, b, c, d, e, f, g, h, i, j, k, l; for (this.no_results_clear(), d = 0, f = this.get_search_text(), a = f.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), i = new RegExp(a, "i"), c = this.get_search_regex(a), l = this.results_data, j = 0, k = l.length; k > j; j++) b = l[j], b.search_match = !1, e = null, this.include_option_in_results(b) && (b.group && (b.group_match = !1, b.active_options = 0), null != b.group_array_index && this.results_data[b.group_array_index] && (e = this.results_data[b.group_array_index], 0 === e.active_options && e.search_match && (d += 1), e.active_options += 1), (!b.group || this.group_search) && (b.search_text = b.group ? b.label : b.text, b.search_match = this.search_string_match(b.search_text, c), b.search_match && !b.group && (d += 1), b.search_match ? (f.length && (g = b.search_text.search(i), h = b.search_text.substr(0, g + f.length) + "" + b.search_text.substr(g + f.length), b.search_text = h.substr(0, g) + "" + h.substr(g)), null != e && (e.group_match = !0)) : null != b.group_array_index && this.results_data[b.group_array_index].search_match && (b.search_match = !0))); return this.result_clear_highlight(), 1 > d && f.length ? (this.update_results_content(""), this.no_results(f)) : (this.update_results_content(this.results_option_build()), this.winnow_results_set_highlight()) }, AbstractChosen.prototype.get_search_regex = function (a) { var b; return b = this.search_contains ? "" : "^", new RegExp(b + a, "i") }, AbstractChosen.prototype.search_string_match = function (a, b) { var c, d, e, f; if (b.test(a)) return !0; if (this.enable_split_word_search && (a.indexOf(" ") >= 0 || 0 === a.indexOf("[")) && (d = a.replace(/\[|\]/g, "").split(" "), d.length)) for (e = 0, f = d.length; f > e; e++) if (c = d[e], b.test(c)) return !0 }, AbstractChosen.prototype.choices_count = function () { var a, b, c, d; if (null != this.selected_option_count) return this.selected_option_count; for (this.selected_option_count = 0, d = this.form_field.options, b = 0, c = d.length; c > b; b++) a = d[b], a.selected && (this.selected_option_count += 1); return this.selected_option_count }, AbstractChosen.prototype.choices_click = function (a) { return a.preventDefault(), this.results_showing || this.is_disabled ? void 0 : this.results_show() }, AbstractChosen.prototype.keyup_checker = function (a) { var b, c; switch (b = null != (c = a.which) ? c : a.keyCode, this.search_field_scale(), b) { case 8: if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) return this.keydown_backstroke(); if (!this.pending_backstroke) return this.result_clear_highlight(), this.results_search(); break; case 13: if (a.preventDefault(), this.results_showing) return this.result_select(a); break; case 27: return this.results_showing && this.results_hide(), !0; case 9: case 38: case 40: case 16: case 91: case 17: break; default: return this.results_search() } }, AbstractChosen.prototype.clipboard_event_checker = function () { var a = this; return setTimeout(function () { return a.results_search() }, 50) }, AbstractChosen.prototype.container_width = function () { return null != this.options.width ? this.options.width : "" + this.form_field.offsetWidth + "px" }, AbstractChosen.prototype.include_option_in_results = function (a) { return this.is_multiple && !this.display_selected_options && a.selected ? !1 : !this.display_disabled_options && a.disabled ? !1 : a.empty ? !1 : !0 }, AbstractChosen.prototype.search_results_touchstart = function (a) { return this.touch_started = !0, this.search_results_mouseover(a) }, AbstractChosen.prototype.search_results_touchmove = function (a) { return this.touch_started = !1, this.search_results_mouseout(a) }, AbstractChosen.prototype.search_results_touchend = function (a) { return this.touch_started ? this.search_results_mouseup(a) : void 0 }, AbstractChosen.prototype.outerHTML = function (a) { var b; return a.outerHTML ? a.outerHTML : (b = document.createElement("div"), b.appendChild(a), b.innerHTML) }, AbstractChosen.browser_is_supported = function () { return "Microsoft Internet Explorer" === window.navigator.appName ? document.documentMode >= 8 : /iP(od|hone)/i.test(window.navigator.userAgent) ? !1 : /Android/i.test(window.navigator.userAgent) && /Mobile/i.test(window.navigator.userAgent) ? !1 : !0 }, AbstractChosen.default_multiple_text = "Select Some Options", AbstractChosen.default_single_text = "Select an Option", AbstractChosen.default_no_result_text = "No results match", AbstractChosen }(), a = jQuery, a.fn.extend({ chosen: function (b) { return AbstractChosen.browser_is_supported() ? this.each(function () { var c, d; c = a(this), d = c.data("chosen"), "destroy" === b && d instanceof Chosen ? d.destroy() : d instanceof Chosen || c.data("chosen", new Chosen(this, b)) }) : this } }), Chosen = function (c) { function Chosen() { return b = Chosen.__super__.constructor.apply(this, arguments) } return d(Chosen, c), Chosen.prototype.setup = function () { return this.form_field_jq = a(this.form_field), this.current_selectedIndex = this.form_field.selectedIndex, this.is_rtl = this.form_field_jq.hasClass("chosen-rtl") }, Chosen.prototype.set_up_html = function () { var b, c; return b = ["chosen-container"], b.push("chosen-container-" + (this.is_multiple ? "multi" : "single")), this.inherit_select_classes && this.form_field.className && b.push(this.form_field.className), this.is_rtl && b.push("chosen-rtl"), c = { "class": b.join(" "), style: "width: " + this.container_width() + ";", title: this.form_field.title }, this.form_field.id.length && (c.id = this.form_field.id.replace(/[^\w]/g, "_") + "_chosen"), this.container = a("
", c), this.is_multiple ? this.container.html('
    ') : this.container.html('' + this.default_text + '
      '), this.form_field_jq.hide().after(this.container), this.dropdown = this.container.find("div.chosen-drop").first(), this.search_field = this.container.find("input").first(), this.search_results = this.container.find("ul.chosen-results").first(), this.search_field_scale(), this.search_no_results = this.container.find("li.no-results").first(), this.is_multiple ? (this.search_choices = this.container.find("ul.chosen-choices").first(), this.search_container = this.container.find("li.search-field").first()) : (this.search_container = this.container.find("div.chosen-search").first(), this.selected_item = this.container.find(".chosen-single").first()), this.results_build(), this.set_tab_index(), this.set_label_behavior() }, Chosen.prototype.on_ready = function () { return this.form_field_jq.trigger("chosen:ready", { chosen: this }) }, Chosen.prototype.register_observers = function () { var a = this; return this.container.bind("touchstart.chosen", function (b) { a.container_mousedown(b) }), this.container.bind("touchend.chosen", function (b) { a.container_mouseup(b) }), this.container.bind("mousedown.chosen", function (b) { a.container_mousedown(b) }), this.container.bind("mouseup.chosen", function (b) { a.container_mouseup(b) }), this.container.bind("mouseenter.chosen", function (b) { a.mouse_enter(b) }), this.container.bind("mouseleave.chosen", function (b) { a.mouse_leave(b) }), this.search_results.bind("mouseup.chosen", function (b) { a.search_results_mouseup(b) }), this.search_results.bind("mouseover.chosen", function (b) { a.search_results_mouseover(b) }), this.search_results.bind("mouseout.chosen", function (b) { a.search_results_mouseout(b) }), this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen", function (b) { a.search_results_mousewheel(b) }), this.search_results.bind("touchstart.chosen", function (b) { a.search_results_touchstart(b) }), this.search_results.bind("touchmove.chosen", function (b) { a.search_results_touchmove(b) }), this.search_results.bind("touchend.chosen", function (b) { a.search_results_touchend(b) }), this.form_field_jq.bind("chosen:updated.chosen", function (b) { a.results_update_field(b) }), this.form_field_jq.bind("chosen:activate.chosen", function (b) { a.activate_field(b) }), this.form_field_jq.bind("chosen:open.chosen", function (b) { a.container_mousedown(b) }), this.form_field_jq.bind("chosen:close.chosen", function (b) { a.input_blur(b) }), this.search_field.bind("blur.chosen", function (b) { a.input_blur(b) }), this.search_field.bind("keyup.chosen", function (b) { a.keyup_checker(b) }), this.search_field.bind("keydown.chosen", function (b) { a.keydown_checker(b) }), this.search_field.bind("focus.chosen", function (b) { a.input_focus(b) }), this.search_field.bind("cut.chosen", function (b) { a.clipboard_event_checker(b) }), this.search_field.bind("paste.chosen", function (b) { a.clipboard_event_checker(b) }), this.is_multiple ? this.search_choices.bind("click.chosen", function (b) { a.choices_click(b) }) : this.container.bind("click.chosen", function (a) { a.preventDefault() }) }, Chosen.prototype.destroy = function () { return a(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action), this.search_field[0].tabIndex && (this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex), this.container.remove(), this.form_field_jq.removeData("chosen"), this.form_field_jq.show() }, Chosen.prototype.search_field_disabled = function () { return this.is_disabled = this.form_field_jq[0].disabled, this.is_disabled ? (this.container.addClass("chosen-disabled"), this.search_field[0].disabled = !0, this.is_multiple || this.selected_item.unbind("focus.chosen", this.activate_action), this.close_field()) : (this.container.removeClass("chosen-disabled"), this.search_field[0].disabled = !1, this.is_multiple ? void 0 : this.selected_item.bind("focus.chosen", this.activate_action)) }, Chosen.prototype.container_mousedown = function (b) { return this.is_disabled || (b && "mousedown" === b.type && !this.results_showing && b.preventDefault(), null != b && a(b.target).hasClass("search-choice-close")) ? void 0 : (this.active_field ? this.is_multiple || !b || a(b.target)[0] !== this.selected_item[0] && !a(b.target).parents("a.chosen-single").length || (b.preventDefault(), this.results_toggle()) : (this.is_multiple && this.search_field.val(""), a(this.container[0].ownerDocument).bind("click.chosen", this.click_test_action), this.results_show()), this.activate_field()) }, Chosen.prototype.container_mouseup = function (a) { return "ABBR" !== a.target.nodeName || this.is_disabled ? void 0 : this.results_reset(a) }, Chosen.prototype.search_results_mousewheel = function (a) { var b; return a.originalEvent && (b = a.originalEvent.deltaY || -a.originalEvent.wheelDelta || a.originalEvent.detail), null != b ? (a.preventDefault(), "DOMMouseScroll" === a.type && (b = 40 * b), this.search_results.scrollTop(b + this.search_results.scrollTop())) : void 0 }, Chosen.prototype.blur_test = function () { return !this.active_field && this.container.hasClass("chosen-container-active") ? this.close_field() : void 0 }, Chosen.prototype.close_field = function () { return a(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action), this.active_field = !1, this.results_hide(), this.container.removeClass("chosen-container-active"), this.clear_backstroke(), this.show_search_field_default(), this.search_field_scale() }, Chosen.prototype.activate_field = function () { return this.container.addClass("chosen-container-active"), this.active_field = !0, this.search_field.val(this.search_field.val()), this.search_field.focus() }, Chosen.prototype.test_active_click = function (b) { var c; return c = a(b.target).closest(".chosen-container"), c.length && this.container[0] === c[0] ? this.active_field = !0 : this.close_field() }, Chosen.prototype.results_build = function () { return this.parsing = !0, this.selected_option_count = null, this.results_data = SelectParser.select_to_array(this.form_field), this.is_multiple ? this.search_choices.find("li.search-choice").remove() : this.is_multiple || (this.single_set_selected_text(), this.disable_search || this.form_field.options.length <= this.disable_search_threshold ? (this.search_field[0].readOnly = !0, this.container.addClass("chosen-container-single-nosearch")) : (this.search_field[0].readOnly = !1, this.container.removeClass("chosen-container-single-nosearch"))), this.update_results_content(this.results_option_build({ first: !0 })), this.search_field_disabled(), this.show_search_field_default(), this.search_field_scale(), this.parsing = !1 }, Chosen.prototype.result_do_highlight = function (a) { var b, c, d, e, f; if (a.length) { if (this.result_clear_highlight(), this.result_highlight = a, this.result_highlight.addClass("highlighted"), d = parseInt(this.search_results.css("maxHeight"), 10), f = this.search_results.scrollTop(), e = d + f, c = this.result_highlight.position().top + this.search_results.scrollTop(), b = c + this.result_highlight.outerHeight(), b >= e) return this.search_results.scrollTop(b - d > 0 ? b - d : 0); if (f > c) return this.search_results.scrollTop(c) } }, Chosen.prototype.result_clear_highlight = function () { return this.result_highlight && this.result_highlight.removeClass("highlighted"), this.result_highlight = null }, Chosen.prototype.results_show = function () { return this.is_multiple && this.max_selected_options <= this.choices_count() ? (this.form_field_jq.trigger("chosen:maxselected", { chosen: this }), !1) : (this.container.addClass("chosen-with-drop"), this.results_showing = !0, this.search_field.focus(), this.search_field.val(this.search_field.val()), this.winnow_results(), this.form_field_jq.trigger("chosen:showing_dropdown", { chosen: this })) }, Chosen.prototype.update_results_content = function (a) { return this.search_results.html(a) }, Chosen.prototype.results_hide = function () { return this.results_showing && (this.result_clear_highlight(), this.container.removeClass("chosen-with-drop"), this.form_field_jq.trigger("chosen:hiding_dropdown", { chosen: this })), this.results_showing = !1 }, Chosen.prototype.set_tab_index = function () { var a; return this.form_field.tabIndex ? (a = this.form_field.tabIndex, this.form_field.tabIndex = -1, this.search_field[0].tabIndex = a) : void 0 }, Chosen.prototype.set_label_behavior = function () { var b = this; return this.form_field_label = this.form_field_jq.parents("label"), !this.form_field_label.length && this.form_field.id.length && (this.form_field_label = a("label[for='" + this.form_field.id + "']")), this.form_field_label.length > 0 ? this.form_field_label.bind("click.chosen", function (a) { return b.is_multiple ? b.container_mousedown(a) : b.activate_field() }) : void 0 }, Chosen.prototype.show_search_field_default = function () { return this.is_multiple && this.choices_count() < 1 && !this.active_field ? (this.search_field.val(this.default_text), this.search_field.addClass("default")) : (this.search_field.val(""), this.search_field.removeClass("default")) }, Chosen.prototype.search_results_mouseup = function (b) { var c; return c = a(b.target).hasClass("active-result") ? a(b.target) : a(b.target).parents(".active-result").first(), c.length ? (this.result_highlight = c, this.result_select(b), this.search_field.focus()) : void 0 }, Chosen.prototype.search_results_mouseover = function (b) { var c; return c = a(b.target).hasClass("active-result") ? a(b.target) : a(b.target).parents(".active-result").first(), c ? this.result_do_highlight(c) : void 0 }, Chosen.prototype.search_results_mouseout = function (b) { return a(b.target).hasClass("active-result") ? this.result_clear_highlight() : void 0 }, Chosen.prototype.choice_build = function (b) { var c, d, e = this; return c = a("
    • ", { "class": "search-choice" }).html("" + b.html + ""), b.disabled ? c.addClass("search-choice-disabled") : (d = a("", { "class": "search-choice-close", "data-option-array-index": b.array_index }), d.bind("click.chosen", function (a) { return e.choice_destroy_link_click(a) }), c.append(d)), this.search_container.before(c) }, Chosen.prototype.choice_destroy_link_click = function (b) { return b.preventDefault(), b.stopPropagation(), this.is_disabled ? void 0 : this.choice_destroy(a(b.target)) }, Chosen.prototype.choice_destroy = function (a) { return this.result_deselect(a[0].getAttribute("data-option-array-index")) ? (this.show_search_field_default(), this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1 && this.results_hide(), a.parents("li").first().remove(), this.search_field_scale()) : void 0 }, Chosen.prototype.results_reset = function () { return this.reset_single_select_options(), this.form_field.options[0].selected = !0, this.single_set_selected_text(), this.show_search_field_default(), this.results_reset_cleanup(), this.form_field_jq.trigger("change"), this.active_field ? this.results_hide() : void 0 }, Chosen.prototype.results_reset_cleanup = function () { return this.current_selectedIndex = this.form_field.selectedIndex, this.selected_item.find("abbr").remove() }, Chosen.prototype.result_select = function (a) { var b, c; return this.result_highlight ? (b = this.result_highlight, this.result_clear_highlight(), this.is_multiple && this.max_selected_options <= this.choices_count() ? (this.form_field_jq.trigger("chosen:maxselected", { chosen: this }), !1) : (this.is_multiple ? b.removeClass("active-result") : this.reset_single_select_options(), c = this.results_data[b[0].getAttribute("data-option-array-index")], c.selected = !0, this.form_field.options[c.options_index].selected = !0, this.selected_option_count = null, this.is_multiple ? this.choice_build(c) : this.single_set_selected_text(c.text), (a.metaKey || a.ctrlKey) && this.is_multiple || this.results_hide(), this.search_field.val(""), (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) && this.form_field_jq.trigger("change", { selected: this.form_field.options[c.options_index].value }), this.current_selectedIndex = this.form_field.selectedIndex, this.search_field_scale())) : void 0 }, Chosen.prototype.single_set_selected_text = function (a) { return null == a && (a = this.default_text), a === this.default_text ? this.selected_item.addClass("chosen-default") : (this.single_deselect_control_build(), this.selected_item.removeClass("chosen-default")), this.selected_item.find("span").text(a) }, Chosen.prototype.result_deselect = function (a) { var b; return b = this.results_data[a], this.form_field.options[b.options_index].disabled ? !1 : (b.selected = !1, this.form_field.options[b.options_index].selected = !1, this.selected_option_count = null, this.result_clear_highlight(), this.results_showing && this.winnow_results(), this.form_field_jq.trigger("change", { deselected: this.form_field.options[b.options_index].value }), this.search_field_scale(), !0) }, Chosen.prototype.single_deselect_control_build = function () { return this.allow_single_deselect ? (this.selected_item.find("abbr").length || this.selected_item.find("span").first().after(''), this.selected_item.addClass("chosen-single-with-deselect")) : void 0 }, Chosen.prototype.get_search_text = function () { return this.search_field.val() === this.default_text ? "" : a("
      ").text(a.trim(this.search_field.val())).html() }, Chosen.prototype.winnow_results_set_highlight = function () { var a, b; return b = this.is_multiple ? [] : this.search_results.find(".result-selected.active-result"), a = b.length ? b.first() : this.search_results.find(".active-result").first(), null != a ? this.result_do_highlight(a) : void 0 }, Chosen.prototype.no_results = function (b) { var c; return c = a('
    • ' + this.results_none_found + ' ""
    • '), c.find("span").first().html(b), this.search_results.append(c), this.form_field_jq.trigger("chosen:no_results", { chosen: this }) }, Chosen.prototype.no_results_clear = function () { return this.search_results.find(".no-results").remove() }, Chosen.prototype.keydown_arrow = function () { var a; return this.results_showing && this.result_highlight ? (a = this.result_highlight.nextAll("li.active-result").first()) ? this.result_do_highlight(a) : void 0 : this.results_show() }, Chosen.prototype.keyup_arrow = function () { var a; return this.results_showing || this.is_multiple ? this.result_highlight ? (a = this.result_highlight.prevAll("li.active-result"), a.length ? this.result_do_highlight(a.first()) : (this.choices_count() > 0 && this.results_hide(), this.result_clear_highlight())) : void 0 : this.results_show() }, Chosen.prototype.keydown_backstroke = function () { var a; return this.pending_backstroke ? (this.choice_destroy(this.pending_backstroke.find("a").first()), this.clear_backstroke()) : (a = this.search_container.siblings("li.search-choice").last(), a.length && !a.hasClass("search-choice-disabled") ? (this.pending_backstroke = a, this.single_backstroke_delete ? this.keydown_backstroke() : this.pending_backstroke.addClass("search-choice-focus")) : void 0) }, Chosen.prototype.clear_backstroke = function () { return this.pending_backstroke && this.pending_backstroke.removeClass("search-choice-focus"), this.pending_backstroke = null }, Chosen.prototype.keydown_checker = function (a) { var b, c; switch (b = null != (c = a.which) ? c : a.keyCode, this.search_field_scale(), 8 !== b && this.pending_backstroke && this.clear_backstroke(), b) { case 8: this.backstroke_length = this.search_field.val().length; break; case 9: this.results_showing && !this.is_multiple && this.result_select(a), this.mouse_on_container = !1; break; case 13: this.results_showing && a.preventDefault(); break; case 32: this.disable_search && a.preventDefault(); break; case 38: a.preventDefault(), this.keyup_arrow(); break; case 40: a.preventDefault(), this.keydown_arrow() } }, Chosen.prototype.search_field_scale = function () { var b, c, d, e, f, g, h, i, j; if (this.is_multiple) { for (d = 0, h = 0, f = "position:absolute; left: -1000px; top: -1000px; display:none;", g = ["font-size", "font-style", "font-weight", "font-family", "line-height", "text-transform", "letter-spacing"], i = 0, j = g.length; j > i; i++) e = g[i], f += e + ":" + this.search_field.css(e) + ";"; return b = a("
      ", { style: f }), b.text(this.search_field.val()), a("body").append(b), h = b.width() + 25, b.remove(), c = this.container.outerWidth(), h > c - 10 && (h = c - 10), this.search_field.css({ width: h + "px" }) } }, Chosen }(AbstractChosen) }.call(this); \ No newline at end of file From 86f4be82a22473af6633c8f68e2d9e4e4fb301bf Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Jan 2015 11:38:22 -0500 Subject: [PATCH 4/9] Added tag build-2.1.0.531 for changeset 318cf3143f42 From cf079b2d1189b5fa76932204288ba5c2310660b1 Mon Sep 17 00:00:00 2001 From: Christiaan Swiers Date: Thu, 15 Jan 2015 12:43:22 +0100 Subject: [PATCH 5/9] Added the DefaultTopPackage checkbox to the space page. --- .../UpdatePackage_storedProcedure.sql | Bin 0 -> 7714 bytes .../Packages/PackageInfo.cs | 7 + .../PackagesProxy.cs | 361 ++++++++++-------- .../Data/DataProvider.cs | 5 +- .../Packages/PackageController.cs | 17 +- .../esPackages.asmx.cs | 5 + .../App_Themes/Default/Styles/Skin.css | 4 +- .../WebsitePanel/SpaceDetails.ascx | 3 + .../WebsitePanel/SpaceDetails.ascx.cs | 24 +- .../SpaceDetails.ascx.designer.cs | 12 +- .../WebsitePanel/UserSpaces.ascx.cs | 1 + 11 files changed, 266 insertions(+), 173 deletions(-) create mode 100644 WebsitePanel/Database/UpdatePackage_storedProcedure.sql diff --git a/WebsitePanel/Database/UpdatePackage_storedProcedure.sql b/WebsitePanel/Database/UpdatePackage_storedProcedure.sql new file mode 100644 index 0000000000000000000000000000000000000000..10c8ba58e044e1ab5a180388b788fbbd83a90729 GIT binary patch literal 7714 zcmeHMTW=dh6rNWj@gMdrY1O1DkUms^;`ovnT08ZnEkaf0CMF5EPKfOSe;)Y0IeRi^ zc4r;aG|&fR+3UHS`)$tbUw@9=z_ncFesnM0#JzQMckUMWcjU%yhUe71cAvY?+=1)) z=RGocj2xucLFR|_pJ-TE*~2#)qK7R_6IQ13wpbFYOuC^P}pgjRmS`Vv-I0LKM167SETS=!Ii<$r!H{UdPE za}CgMLY97lj|0$JKx=;#D3Bv!+w{LRw+FnmJuOa6WS~F8_`&u12tG9_tP;b$oU4I< za%Kyk4A{=FpE}6A)lV^A00(za!&&Y>+u&b!1|F1JAABg}W{JxOz_JI)184Uz^9{Z` zo=zW9b$n#>y{7t*cfky5Q;^;4Ci2 zG2?OxuFKF6*-iqcy=^weNIdXJ58wfV@*&p^leJ=fY^O7c^r z#nq?Yv(syBpP8pgxISc@f;$^Y#Mc7-F(^*+*b{lk`_0*&d)q!gvAV_a&P*e|f8_Pp z0asm6WA*tCxu4_gT0e77jqy%SB#R032)kGZi9gn-p>|kphtNwO zTIEYL=bAL`C)^gv*{(gZjfF0b#{fcuD z`yf(af5fvLpO^Tj-HMFDNuPN6z1zBzIv+|VVwa{j5yh-i-cfai=1vP;t|0RT=Ddw??t`*10>1A?U$87yUao zNS9IcRNo-&qtiIZJG~+Lje6d3P>;N`Y@k!C`+h`YQnPVcI`yD5Y!BAuZExA*xSwB} z$Je1oO_Gahj^qw6MOk1iFV$T#d5iN_F*Au(i&3gMi||tamZ)bMJE>|mf;>&=oBgoJ z7Ag!YEHxBv`YabAo20U*u4?4Pwkv0o6prF9#Z}HS0$rTf{jmoqrC^D$uPXZ}OnP16 zSJgMQ*Qz~=XPw+59NoM#_9TvYV{7e5pHc40D}<=>CZ3?QerKp5Jb#6=6>sHuvXb1` za<6=B^L8hAWK7TIW=3Njr=4(zFOd~PkawB4u#(qf&f`qXbDzAg(AzyL3n9yysD)a` zn{&z}P?o0lG4>tGra9q=mi0`WnH7zcR8`*1YqH({0@j=Qv#Vx5(QvSmm6a7b<~s8y z-(WYf+GU<4v;3Bv)s3>wU{N_G@D`M^la9Rc;2Vroru*7`3n=EM5M!)EJ!EzI$xStz zzRixFltQ)OsOIYib5b8!Df6Qt@RHhU`v`QL@9zUH7gzpqXg|GRl XZf_Z5Imu@O7@pzN@%FXQ_8k5<_33P6 literal 0 HcmV?d00001 diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/PackageInfo.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/PackageInfo.cs index bbcd7fca..0d7ba7fb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/PackageInfo.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/PackageInfo.cs @@ -52,6 +52,7 @@ namespace WebsitePanel.EnterpriseServer int diskSpaceQuota; int bandWidthQuota; bool overrideQuotas; + bool defaultTopPackage; HostingPlanGroupInfo[] groups; HostingPlanQuotaInfo[] quotas; @@ -155,6 +156,12 @@ namespace WebsitePanel.EnterpriseServer set { this.overrideQuotas = value; } } + public bool DefaultTopPackage + { + get { return this.defaultTopPackage; } + set { this.defaultTopPackage = value; } + } + public HostingPlanGroupInfo[] Groups { get { return this.groups; } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs index fb9832c9..78136b51 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.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:2.0.50727.6387 +// Runtime Version:2.0.50727.8009 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -37,7 +9,7 @@ //------------------------------------------------------------------------------ // -// This source code was auto-generated by wsdl, Version=2.0.50727.3038. +// This source code was auto-generated by wsdl, Version=2.0.50727.42. // namespace WebsitePanel.EnterpriseServer { using System.Xml.Serialization; @@ -50,7 +22,7 @@ namespace WebsitePanel.EnterpriseServer { /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Web.Services.WebServiceBindingAttribute(Name="esPackagesSoap", Namespace="http://smbsaas/websitepanel/enterpriseserver")] @@ -120,6 +92,8 @@ namespace WebsitePanel.EnterpriseServer { private System.Threading.SendOrPostCallback UpdatePackageSettingsOperationCompleted; + private System.Threading.SendOrPostCallback SetDefaultTopPackageOperationCompleted; + private System.Threading.SendOrPostCallback GetPackageAddonsOperationCompleted; private System.Threading.SendOrPostCallback GetPackageAddonOperationCompleted; @@ -277,6 +251,9 @@ namespace WebsitePanel.EnterpriseServer { /// public event UpdatePackageSettingsCompletedEventHandler UpdatePackageSettingsCompleted; + /// + public event SetDefaultTopPackageCompletedEventHandler SetDefaultTopPackageCompleted; + /// public event GetPackageAddonsCompletedEventHandler GetPackageAddonsCompleted; @@ -1781,6 +1758,50 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/SetDefaultTopPackage", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool SetDefaultTopPackage(int userId, int packageId) { + object[] results = this.Invoke("SetDefaultTopPackage", new object[] { + userId, + packageId}); + return ((bool)(results[0])); + } + + /// + public System.IAsyncResult BeginSetDefaultTopPackage(int userId, int packageId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetDefaultTopPackage", new object[] { + userId, + packageId}, callback, asyncState); + } + + /// + public bool EndSetDefaultTopPackage(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((bool)(results[0])); + } + + /// + public void SetDefaultTopPackageAsync(int userId, int packageId) { + this.SetDefaultTopPackageAsync(userId, packageId, null); + } + + /// + public void SetDefaultTopPackageAsync(int userId, int packageId, object userState) { + if ((this.SetDefaultTopPackageOperationCompleted == null)) { + this.SetDefaultTopPackageOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetDefaultTopPackageOperationCompleted); + } + this.InvokeAsync("SetDefaultTopPackage", new object[] { + userId, + packageId}, this.SetDefaultTopPackageOperationCompleted, userState); + } + + private void OnSetDefaultTopPackageOperationCompleted(object arg) { + if ((this.SetDefaultTopPackageCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetDefaultTopPackageCompleted(this, new SetDefaultTopPackageCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetPackageAddons", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public System.Data.DataSet GetPackageAddons(int packageId) { @@ -2743,7 +2764,7 @@ namespace WebsitePanel.EnterpriseServer { bool createFtpAccount, string ftpAccountName, bool createMailAccount, - string hostName, + string hostName, bool createZoneRecord) { object[] results = this.Invoke("CreateUserWizard", new object[] { parentPackageId, @@ -2791,8 +2812,8 @@ namespace WebsitePanel.EnterpriseServer { bool createFtpAccount, string ftpAccountName, bool createMailAccount, - string hostName, - bool createZoneRecord, + string hostName, + bool createZoneRecord, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateUserWizard", new object[] { @@ -2846,7 +2867,7 @@ namespace WebsitePanel.EnterpriseServer { bool createFtpAccount, string ftpAccountName, bool createMailAccount, - string hostName, + string hostName, bool createZoneRecord) { this.CreateUserWizardAsync(parentPackageId, username, password, roleId, firstName, lastName, email, secondaryEmail, htmlMail, sendAccountLetter, createPackage, planId, sendPackageLetter, domainName, tempDomain, createWebSite, createFtpAccount, ftpAccountName, createMailAccount, hostName, createZoneRecord, null); } @@ -2872,8 +2893,8 @@ namespace WebsitePanel.EnterpriseServer { bool createFtpAccount, string ftpAccountName, bool createMailAccount, - string hostName, - bool createZoneRecord, + string hostName, + bool createZoneRecord, object userState) { if ((this.CreateUserWizardOperationCompleted == null)) { this.CreateUserWizardOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateUserWizardOperationCompleted); @@ -3260,11 +3281,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHostingPlansCompletedEventHandler(object sender, GetHostingPlansCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHostingPlansCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3286,11 +3307,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHostingAddonsCompletedEventHandler(object sender, GetHostingAddonsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHostingAddonsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3312,11 +3333,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHostingPlanCompletedEventHandler(object sender, GetHostingPlanCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHostingPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3338,11 +3359,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHostingPlanQuotasCompletedEventHandler(object sender, GetHostingPlanQuotasCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHostingPlanQuotasCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3364,11 +3385,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHostingPlanContextCompletedEventHandler(object sender, GetHostingPlanContextCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHostingPlanContextCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3390,11 +3411,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetUserAvailableHostingPlansCompletedEventHandler(object sender, GetUserAvailableHostingPlansCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetUserAvailableHostingPlansCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3416,11 +3437,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetUserAvailableHostingAddonsCompletedEventHandler(object sender, GetUserAvailableHostingAddonsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetUserAvailableHostingAddonsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3442,11 +3463,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void AddHostingPlanCompletedEventHandler(object sender, AddHostingPlanCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddHostingPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3468,11 +3489,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateHostingPlanCompletedEventHandler(object sender, UpdateHostingPlanCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateHostingPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3494,11 +3515,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteHostingPlanCompletedEventHandler(object sender, DeleteHostingPlanCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteHostingPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3520,11 +3541,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackagesCompletedEventHandler(object sender, GetPackagesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackagesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3546,11 +3567,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetNestedPackagesSummaryCompletedEventHandler(object sender, GetNestedPackagesSummaryCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetNestedPackagesSummaryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3572,11 +3593,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetRawPackagesCompletedEventHandler(object sender, GetRawPackagesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawPackagesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3598,11 +3619,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void SearchServiceItemsPagedCompletedEventHandler(object sender, SearchServiceItemsPagedCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class SearchServiceItemsPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3624,11 +3645,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackagesPagedCompletedEventHandler(object sender, GetPackagesPagedCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackagesPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3650,11 +3671,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetNestedPackagesPagedCompletedEventHandler(object sender, GetNestedPackagesPagedCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetNestedPackagesPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3676,11 +3697,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackagePackagesCompletedEventHandler(object sender, GetPackagePackagesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackagePackagesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3702,11 +3723,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetMyPackagesCompletedEventHandler(object sender, GetMyPackagesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetMyPackagesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3728,11 +3749,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetRawMyPackagesCompletedEventHandler(object sender, GetRawMyPackagesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawMyPackagesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3754,11 +3775,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageCompletedEventHandler(object sender, GetPackageCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3780,11 +3801,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageContextCompletedEventHandler(object sender, GetPackageContextCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageContextCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3806,11 +3827,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageQuotasCompletedEventHandler(object sender, GetPackageQuotasCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageQuotasCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3832,11 +3853,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageQuotasForEditCompletedEventHandler(object sender, GetPackageQuotasForEditCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageQuotasForEditCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3858,11 +3879,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void AddPackageCompletedEventHandler(object sender, AddPackageCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddPackageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3884,11 +3905,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdatePackageCompletedEventHandler(object sender, UpdatePackageCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdatePackageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3910,11 +3931,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdatePackageLiteralCompletedEventHandler(object sender, UpdatePackageLiteralCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdatePackageLiteralCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3936,11 +3957,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdatePackageNameCompletedEventHandler(object sender, UpdatePackageNameCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdatePackageNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3962,11 +3983,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeletePackageCompletedEventHandler(object sender, DeletePackageCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeletePackageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -3988,11 +4009,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void ChangePackageStatusCompletedEventHandler(object sender, ChangePackageStatusCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class ChangePackageStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4014,11 +4035,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void EvaluateUserPackageTempateCompletedEventHandler(object sender, EvaluateUserPackageTempateCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class EvaluateUserPackageTempateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4040,11 +4061,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageSettingsCompletedEventHandler(object sender, GetPackageSettingsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4066,11 +4087,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdatePackageSettingsCompletedEventHandler(object sender, UpdatePackageSettingsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdatePackageSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4092,11 +4113,37 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void SetDefaultTopPackageCompletedEventHandler(object sender, SetDefaultTopPackageCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SetDefaultTopPackageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal SetDefaultTopPackageCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public bool Result { + get { + this.RaiseExceptionIfNecessary(); + return ((bool)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageAddonsCompletedEventHandler(object sender, GetPackageAddonsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageAddonsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4118,11 +4165,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageAddonCompletedEventHandler(object sender, GetPackageAddonCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageAddonCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4144,11 +4191,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void AddPackageAddonByIdCompletedEventHandler(object sender, AddPackageAddonByIdCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddPackageAddonByIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4170,11 +4217,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void AddPackageAddonCompletedEventHandler(object sender, AddPackageAddonCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddPackageAddonCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4196,11 +4243,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void AddPackageAddonLiteralCompletedEventHandler(object sender, AddPackageAddonLiteralCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddPackageAddonLiteralCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4222,11 +4269,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdatePackageAddonCompletedEventHandler(object sender, UpdatePackageAddonCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdatePackageAddonCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4248,11 +4295,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdatePackageAddonLiteralCompletedEventHandler(object sender, UpdatePackageAddonLiteralCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdatePackageAddonLiteralCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4274,11 +4321,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeletePackageAddonCompletedEventHandler(object sender, DeletePackageAddonCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeletePackageAddonCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4300,11 +4347,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetSearchableServiceItemTypesCompletedEventHandler(object sender, GetSearchableServiceItemTypesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSearchableServiceItemTypesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4326,11 +4373,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetRawPackageItemsByTypeCompletedEventHandler(object sender, GetRawPackageItemsByTypeCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawPackageItemsByTypeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4352,11 +4399,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetRawPackageItemsPagedCompletedEventHandler(object sender, GetRawPackageItemsPagedCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawPackageItemsPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4378,11 +4425,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetRawPackageItemsCompletedEventHandler(object sender, GetRawPackageItemsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawPackageItemsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4404,11 +4451,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DetachPackageItemCompletedEventHandler(object sender, DetachPackageItemCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DetachPackageItemCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4430,11 +4477,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void MovePackageItemCompletedEventHandler(object sender, MovePackageItemCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class MovePackageItemCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4456,11 +4503,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageQuotaCompletedEventHandler(object sender, GetPackageQuotaCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageQuotaCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4482,11 +4529,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void SendAccountSummaryLetterCompletedEventHandler(object sender, SendAccountSummaryLetterCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class SendAccountSummaryLetterCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4508,11 +4555,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void SendPackageSummaryLetterCompletedEventHandler(object sender, SendPackageSummaryLetterCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class SendPackageSummaryLetterCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4534,11 +4581,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetEvaluatedPackageTemplateBodyCompletedEventHandler(object sender, GetEvaluatedPackageTemplateBodyCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetEvaluatedPackageTemplateBodyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4560,11 +4607,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetEvaluatedAccountTemplateBodyCompletedEventHandler(object sender, GetEvaluatedAccountTemplateBodyCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetEvaluatedAccountTemplateBodyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4586,11 +4633,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void AddPackageWithResourcesCompletedEventHandler(object sender, AddPackageWithResourcesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddPackageWithResourcesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4612,11 +4659,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void CreateUserWizardCompletedEventHandler(object sender, CreateUserWizardCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CreateUserWizardCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4638,11 +4685,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackagesBandwidthPagedCompletedEventHandler(object sender, GetPackagesBandwidthPagedCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackagesBandwidthPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4664,11 +4711,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackagesDiskspacePagedCompletedEventHandler(object sender, GetPackagesDiskspacePagedCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackagesDiskspacePagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4690,11 +4737,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageBandwidthCompletedEventHandler(object sender, GetPackageBandwidthCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageBandwidthCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4716,11 +4763,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetPackageDiskspaceCompletedEventHandler(object sender, GetPackageDiskspaceCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageDiskspaceCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4742,11 +4789,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetOverusageSummaryReportCompletedEventHandler(object sender, GetOverusageSummaryReportCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetOverusageSummaryReportCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4768,11 +4815,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetDiskspaceOverusageDetailsReportCompletedEventHandler(object sender, GetDiskspaceOverusageDetailsReportCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDiskspaceOverusageDetailsReportCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4794,11 +4841,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetBandwidthOverusageDetailsReportCompletedEventHandler(object sender, GetBandwidthOverusageDetailsReportCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetBandwidthOverusageDetailsReportCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs index 9e651565..bf343f7e 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs @@ -1580,7 +1580,7 @@ namespace WebsitePanel.EnterpriseServer public static DataSet UpdatePackage(int actorId, int packageId, int planId, string packageName, string packageComments, int statusId, DateTime purchaseDate, - bool overrideQuotas, string quotasXml) + bool overrideQuotas, string quotasXml, bool defaultTopPackage) { return SqlHelper.ExecuteDataset(ConnectionString, CommandType.StoredProcedure, ObjectQualifier + "UpdatePackage", @@ -1592,7 +1592,8 @@ namespace WebsitePanel.EnterpriseServer new SqlParameter("@planId", planId), new SqlParameter("@purchaseDate", purchaseDate), new SqlParameter("@overrideQuotas", overrideQuotas), - new SqlParameter("@quotasXml", quotasXml)); + new SqlParameter("@quotasXml", quotasXml), + new SqlParameter("@defaultTopPackage", defaultTopPackage)); } public static void UpdatePackageName(int actorId, int packageId, string packageName, diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs index 623b6a08..3d58882c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs @@ -778,7 +778,7 @@ namespace WebsitePanel.EnterpriseServer // update package result.ExceedingQuotas = DataProvider.UpdatePackage(SecurityContext.User.UserId, package.PackageId, package.PlanId, package.PackageName, package.PackageComments, package.StatusId, - package.PurchaseDate, package.OverrideQuotas, quotasXml); + package.PurchaseDate, package.OverrideQuotas, quotasXml, package.DefaultTopPackage); if (result.ExceedingQuotas.Tables[0].Rows.Count > 0) result.Result = BusinessErrorCodes.ERROR_PACKAGE_QUOTA_EXCEED; @@ -1742,6 +1742,21 @@ namespace WebsitePanel.EnterpriseServer //} } + public static bool SetDefaultTopPackage(int userId, int packageId) { + List lpi = GetPackages(userId); + foreach(PackageInfo pi in lpi) { + if(pi.DefaultTopPackage) { + pi.DefaultTopPackage = false; + UpdatePackage(pi); + } + if(pi.PackageId == packageId) { + pi.DefaultTopPackage = true; + UpdatePackage(pi); + } + } + return true; + } + #endregion #region Quotas diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esPackages.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esPackages.asmx.cs index e3cc7331..75409bfb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esPackages.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esPackages.asmx.cs @@ -262,6 +262,11 @@ namespace WebsitePanel.EnterpriseServer return PackageController.UpdatePackageSettings(settings); } + [WebMethod] + public bool SetDefaultTopPackage(int userId, int packageId) { + return PackageController.SetDefaultTopPackage(userId, packageId); + } + #endregion #region Package Add-ons 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 dc9bab11..a68ecf37 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css @@ -294,6 +294,4 @@ p.warningText {font-size:14px; color:Red; text-align:center;} .Hidden {display: none;} .LinkText {color:#428bca;} .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 +.chosen-container { margin-top: -30px; } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceDetails.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceDetails.ascx index 57777d32..a50215e9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceDetails.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceDetails.ascx @@ -34,6 +34,9 @@ +

      // This code was generated by a tool. -// Runtime Version:2.0.50727.1873 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -130,6 +129,15 @@ namespace WebsitePanel.Portal { /// protected global::System.Web.UI.WebControls.HyperLink lnkDelete; + /// + /// chkDefault control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkDefault; + /// /// StatusHeader control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs index 3a9e0524..46249116 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs @@ -63,6 +63,7 @@ namespace WebsitePanel.Portal if(!IsPostBack) { myPackages = new PackagesHelper().GetMyPackages(); + myPackages.Tables[0].DefaultView.Sort = "DefaultTopPackage DESC, PackageId ASC"; ddlPackageSelect.DataSource = myPackages.Tables[0].DefaultView; ddlPackageSelect.DataTextField = myPackages.Tables[0].Columns[2].ColumnName; ddlPackageSelect.DataValueField = myPackages.Tables[0].Columns[0].ColumnName; From f2c54df2b02ea310c92a06ed58ab72b34f97d317 Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Thu, 15 Jan 2015 04:03:02 -0800 Subject: [PATCH 6/9] webdav protal office 365 fix --- .../Config/Entities/OfficeOnlineCollection.cs | 10 +- .../WebConfigSections/OfficeOnlineElement.cs | 8 ++ .../Entities/Owa/CheckFileInfo.cs | 124 ++++++++++++++++++ .../ConnectToWebDavServerException.cs | 2 +- .../Exceptions/ResourceNotFoundException.cs | 2 +- .../WebsitePanel.WebDav.Core/IFolder.cs | 11 +- .../Interfaces/Managers}/IWebDavManager.cs | 6 +- .../Interfaces/Owa/IWopiServer.cs | 12 ++ .../Security/IAuthenticationService.cs | 3 + .../Managers}/WebDavManager.cs | 81 ++++++++---- .../Owa/WopiServer.cs | 58 ++++++++ .../FormsAuthenticationService.cs | 37 +++++- .../Authentication/Principals/WspPrincipal.cs | 4 +- .../WebsitePanel.WebDav.Core.csproj | 15 +++ .../WebsitePanel.WebDav.Core/packages.config | 1 + .../App_Start/RouteConfig.cs | 18 ++- .../Controllers/AccountController.cs | 6 +- .../Controllers/FileSystemController.cs | 22 +++- .../Controllers/OwaController.cs | 53 ++++++++ .../DependencyInjection/PortalDependencies.cs | 4 + .../Providers/WebDavManagerProvider.cs | 2 +- .../FileOperations/FileOpenerManager.cs | 2 +- .../WebsitePanel.WebDavPortal/Global.asax.cs | 19 ++- .../UI/Routes/OwaRouteNames.cs | 8 ++ .../Views/FileSystem/ShowContent.cshtml | 3 +- .../WebsitePanel.WebDavPortal/Web.config | 25 ++-- .../WebsitePanel.WebDavPortal.csproj | 10 +- 27 files changed, 466 insertions(+), 80 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebDav.Core/Entities/Owa/CheckFileInfo.cs rename WebsitePanel/Sources/{WebsitePanel.WebDavPortal => WebsitePanel.WebDav.Core}/Exceptions/ConnectToWebDavServerException.cs (89%) rename WebsitePanel/Sources/{WebsitePanel.WebDavPortal => WebsitePanel.WebDav.Core}/Exceptions/ResourceNotFoundException.cs (88%) rename WebsitePanel/Sources/{WebsitePanel.WebDavPortal/Models => WebsitePanel.WebDav.Core/Interfaces/Managers}/IWebDavManager.cs (64%) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Owa/IWopiServer.cs rename WebsitePanel/Sources/{WebsitePanel.WebDavPortal/Models => WebsitePanel.WebDav.Core/Managers}/WebDavManager.cs (68%) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebDav.Core/Owa/WopiServer.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/OwaController.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.WebDavPortal/UI/Routes/OwaRouteNames.cs diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Config/Entities/OfficeOnlineCollection.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Config/Entities/OfficeOnlineCollection.cs index a28114b5..4ecb0c7f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Config/Entities/OfficeOnlineCollection.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Config/Entities/OfficeOnlineCollection.cs @@ -5,21 +5,21 @@ using WebsitePanel.WebDavPortal.WebConfigSections; namespace WebsitePanel.WebDav.Core.Config.Entities { - public class OfficeOnlineCollection : AbstractConfigCollection, IReadOnlyCollection + public class OfficeOnlineCollection : AbstractConfigCollection, IReadOnlyCollection { - private readonly IList _officeExtensions; + private readonly IList _officeExtensions; public OfficeOnlineCollection() { IsEnabled = ConfigSection.OfficeOnline.IsEnabled; Url = ConfigSection.OfficeOnline.Url; - _officeExtensions = ConfigSection.OfficeOnline.Cast().Select(x => x.Extension).ToList(); + _officeExtensions = ConfigSection.OfficeOnline.Cast().ToList(); } public bool IsEnabled { get; private set; } public string Url { get; private set; } - public IEnumerator GetEnumerator() + public IEnumerator GetEnumerator() { return _officeExtensions.GetEnumerator(); } @@ -36,7 +36,7 @@ namespace WebsitePanel.WebDav.Core.Config.Entities public bool Contains(string extension) { - return _officeExtensions.Contains(extension); + return _officeExtensions.Any(x=>x.Extension == extension); } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Config/WebConfigSections/OfficeOnlineElement.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Config/WebConfigSections/OfficeOnlineElement.cs index a6c25031..1f836eb3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Config/WebConfigSections/OfficeOnlineElement.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Config/WebConfigSections/OfficeOnlineElement.cs @@ -5,6 +5,7 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections public class OfficeOnlineElement : ConfigurationElement { private const string ExtensionKey = "extension"; + private const string OwaOpenerKey = "owaOpener"; [ConfigurationProperty(ExtensionKey, IsKey = true, IsRequired = true)] public string Extension @@ -12,5 +13,12 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections get { return this[ExtensionKey].ToString(); } set { this[ExtensionKey] = value; } } + + [ConfigurationProperty(OwaOpenerKey, IsKey = true, IsRequired = true)] + public string OwaOpener + { + get { return this[OwaOpenerKey].ToString(); } + set { this[OwaOpenerKey] = value; } + } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Entities/Owa/CheckFileInfo.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Entities/Owa/CheckFileInfo.cs new file mode 100644 index 00000000..e4283ac9 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Entities/Owa/CheckFileInfo.cs @@ -0,0 +1,124 @@ +using System.Runtime.Serialization; + +namespace WebsitePanel.WebDav.Core.Entities.Owa +{ + [DataContract] + public class CheckFileInfo + { + [DataMember] + public string BaseFileName { get; set; } + [DataMember] + public string OwnerId { get; set; } + [DataMember] + public long Size { get; set; } + [DataMember] + public string Version { get; set; } + + //[DataMember] + //public string SHA256 { get; set; } + //[DataMember] + //public bool AllowExternalMarketplace { get; set; } + //[DataMember] + //public string BreadcrumbBrandName { get; set; } + //[DataMember] + //public string BreadcrumbBrandUrl { get; set; } + //[DataMember] + //public string BreadcrumbDocName { get; set; } + //[DataMember] + //public string BreadcrumbDocUrl { get; set; } + //[DataMember] + //public string BreadcrumbFolderName { get; set; } + //[DataMember] + //public string BreadcrumbFolderUrl { get; set; } + //[DataMember] + //public string ClientUrl { get; set; } + //[DataMember] + //public bool CloseButtonClosesWindow { get; set; } + //[DataMember] + //public string CloseUrl { get; set; } + //[DataMember] + //public bool DisableBrowserCachingOfUserContent { get; set; } + //[DataMember] + //public bool DisablePrint { get; set; } + //[DataMember] + //public bool DisableTranslation { get; set; } + //[DataMember] + //public string DownloadUrl { get; set; } + //[DataMember] + //public string FileSharingUrl { get; set; } + //[DataMember] + //public string FileUrl { get; set; } + //[DataMember] + //public string HostAuthenticationId { get; set; } + //[DataMember] + //public string HostEditUrl { get; set; } + //[DataMember] + //public string HostEmbeddedEditUrl { get; set; } + //[DataMember] + //public string HostEmbeddedViewUrl { get; set; } + //[DataMember] + //public string HostName { get; set; } + //[DataMember] + //public string HostNotes { get; set; } + //[DataMember] + //public string HostRestUrl { get; set; } + //[DataMember] + //public string HostViewUrl { get; set; } + //[DataMember] + //public string IrmPolicyDescription { get; set; } + //[DataMember] + //public string IrmPolicyTitle { get; set; } + + //[DataMember] + //public string PresenceProvider { get; set; } + //[DataMember] + //public string PresenceUserId { get; set; } + //[DataMember] + //public string PrivacyUrl { get; set; } + //[DataMember] + //public bool ProtectInClient { get; set; } + //[DataMember] + //public bool ReadOnly { get; set; } + //[DataMember] + //public bool RestrictedWebViewOnly { get; set; } + + //[DataMember] + //public string SignoutUrl { get; set; } + + //[DataMember] + //public bool SupportsCoauth { get; set; } + //[DataMember] + //public bool SupportsCobalt { get; set; } + //[DataMember] + //public bool SupportsFolders { get; set; } + //[DataMember] + //public bool SupportsLocks { get; set; } + //[DataMember] + //public bool SupportsScenarioLinks { get; set; } + //[DataMember] + //public bool SupportsSecureStore { get; set; } + //[DataMember] + //public bool SupportsUpdate { get; set; } + //[DataMember] + //public string TenantId { get; set; } + //[DataMember] + //public string TermsOfUseUrl { get; set; } + //[DataMember] + //public string TimeZone { get; set; } + //[DataMember] + //public bool UserCanAttend { get; set; } + //[DataMember] + //public bool UserCanNotWriteRelative { get; set; } + //[DataMember] + //public bool UserCanPresent { get; set; } + //[DataMember] + //public bool UserCanWrite { get; set; } + //[DataMember] + //public string UserFriendlyName { get; set; } + //[DataMember] + //public string UserId { get; set; } + + //[DataMember] + //public bool WebEditingDisabled { get; set; } + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Exceptions/ConnectToWebDavServerException.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Exceptions/ConnectToWebDavServerException.cs similarity index 89% rename from WebsitePanel/Sources/WebsitePanel.WebDavPortal/Exceptions/ConnectToWebDavServerException.cs rename to WebsitePanel/Sources/WebsitePanel.WebDav.Core/Exceptions/ConnectToWebDavServerException.cs index 00cc4047..b0c58dd3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Exceptions/ConnectToWebDavServerException.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Exceptions/ConnectToWebDavServerException.cs @@ -1,7 +1,7 @@ using System; using System.Runtime.Serialization; -namespace WebsitePanel.WebDavPortal.Exceptions +namespace WebsitePanel.WebDav.Core.Exceptions { [Serializable] public class ConnectToWebDavServerException : Exception diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Exceptions/ResourceNotFoundException.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Exceptions/ResourceNotFoundException.cs similarity index 88% rename from WebsitePanel/Sources/WebsitePanel.WebDavPortal/Exceptions/ResourceNotFoundException.cs rename to WebsitePanel/Sources/WebsitePanel.WebDav.Core/Exceptions/ResourceNotFoundException.cs index fd6aca0d..46d6f1c0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Exceptions/ResourceNotFoundException.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Exceptions/ResourceNotFoundException.cs @@ -1,7 +1,7 @@ using System; using System.Runtime.Serialization; -namespace WebsitePanel.WebDavPortal.Exceptions +namespace WebsitePanel.WebDav.Core.Exceptions { [Serializable] public class ResourceNotFoundException : Exception diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/IFolder.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/IFolder.cs index 9b14cf8a..eb1e1f99 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/IFolder.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/IFolder.cs @@ -1,4 +1,5 @@ using System; +using System.DirectoryServices.AccountManagement; using System.IO; using System.Linq; using System.Net; @@ -6,6 +7,7 @@ using System.Net.Security; using System.Text; using System.Text.RegularExpressions; using System.Xml; +using WebsitePanel.WebDav.Core.Config; using WebsitePanel.WebDav.Core.Exceptions; namespace WebsitePanel.WebDav.Core @@ -18,6 +20,7 @@ namespace WebsitePanel.WebDav.Core IFolder CreateFolder(string name); IHierarchyItem[] GetChildren(); IResource GetResource(string name); + Uri Path { get; } } public class WebDavFolder : WebDavHierarchyItem, IFolder @@ -25,6 +28,8 @@ namespace WebsitePanel.WebDav.Core private IHierarchyItem[] _children = new IHierarchyItem[0]; private Uri _path; + public Uri Path { get { return _path; } } + /// /// The constructor /// @@ -155,7 +160,7 @@ namespace WebsitePanel.WebDav.Core /// public void Open() { - var request = (HttpWebRequest) WebRequest.Create(_path); + var request = (HttpWebRequest)WebRequest.Create(_path); request.PreAuthenticate = true; request.Method = "PROPFIND"; request.ContentType = "application/xml"; @@ -163,10 +168,10 @@ namespace WebsitePanel.WebDav.Core //TODO Disable SSL ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); - var credentials = (NetworkCredential) _credentials; + var credentials = (NetworkCredential)_credentials; if (credentials != null && credentials.UserName != null) { - request.Credentials = credentials; + //request.Credentials = credentials; string auth = "Basic " + Convert.ToBase64String( Encoding.Default.GetBytes(credentials.UserName + ":" + credentials.Password)); diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/IWebDavManager.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Managers/IWebDavManager.cs similarity index 64% rename from WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/IWebDavManager.cs rename to WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Managers/IWebDavManager.cs index f50fc984..f3900c88 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/IWebDavManager.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Managers/IWebDavManager.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using WebsitePanel.WebDav.Core.Client; -namespace WebsitePanel.WebDavPortal.Models +namespace WebsitePanel.WebDav.Core.Interfaces.Managers { public interface IWebDavManager { @@ -10,6 +10,10 @@ namespace WebsitePanel.WebDavPortal.Models IEnumerable GetChildren(); bool IsFile(string fileName); byte[] GetFileBytes(string fileName); + IResource GetResource( string fileName); string GetFileUrl(string fileName); + + string CreateFileId(string path); + string FilePathFromId(string id); } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Owa/IWopiServer.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Owa/IWopiServer.cs new file mode 100644 index 00000000..6f35d7ff --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Owa/IWopiServer.cs @@ -0,0 +1,12 @@ +using System.Web.Mvc; +using WebsitePanel.WebDav.Core.Client; +using WebsitePanel.WebDav.Core.Entities.Owa; + +namespace WebsitePanel.WebDav.Core.Interfaces.Owa +{ + public interface IWopiServer + { + CheckFileInfo GetCheckFileInfo(string path); + FileResult GetFile(string path); + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Security/IAuthenticationService.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Security/IAuthenticationService.cs index 6bd042a4..771774f8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Security/IAuthenticationService.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Interfaces/Security/IAuthenticationService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Web.Security; using WebsitePanel.WebDav.Core.Security.Authentication.Principals; namespace WebsitePanel.WebDav.Core.Interfaces.Security @@ -10,7 +11,9 @@ namespace WebsitePanel.WebDav.Core.Interfaces.Security public interface IAuthenticationService { WspPrincipal LogIn(string login, string password); + WspPrincipal LogIn(string accessToken); void CreateAuthenticationTicket(WspPrincipal principal); + string CreateAccessToken(WspPrincipal principal); void LogOut(); } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/WebDavManager.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Managers/WebDavManager.cs similarity index 68% rename from WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/WebDavManager.cs rename to WebsitePanel/Sources/WebsitePanel.WebDav.Core/Managers/WebDavManager.cs index 0ab50f03..05a7d69f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/WebDavManager.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Managers/WebDavManager.cs @@ -3,20 +3,16 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; -using System.Text.RegularExpressions; -using WebsitePanel.WebDav.Core; +using log4net; +using WebsitePanel.Providers.OS; using WebsitePanel.WebDav.Core.Client; using WebsitePanel.WebDav.Core.Config; +using WebsitePanel.WebDav.Core.Exceptions; +using WebsitePanel.WebDav.Core.Interfaces.Managers; using WebsitePanel.WebDav.Core.Security.Cryptography; using WebsitePanel.WebDav.Core.Wsp.Framework; -using WebsitePanel.WebDavPortal.Exceptions; -using WebsitePanel.Providers.OS; -using Ninject; -using WebsitePanel.WebDavPortal.DependencyInjection; -using System.Web.Mvc; -using log4net; -namespace WebsitePanel.WebDavPortal.Models +namespace WebsitePanel.WebDav.Core.Managers { public class WebDavManager : IWebDavManager { @@ -25,15 +21,15 @@ namespace WebsitePanel.WebDavPortal.Models private readonly ILog Log; - private IList _rootFolders; - private int _itemId; private IFolder _currentFolder; - private string _webDavRootPath; private bool _isRoot = true; + private Lazy> _rootFolders; + private Lazy _webDavRootPath; + public string RootPath { - get { return _webDavRootPath; } + get { return _webDavRootPath.Value; } } public WebDavManager(ICryptography cryptography) @@ -41,20 +37,21 @@ namespace WebsitePanel.WebDavPortal.Models _cryptography = cryptography; Log = LogManager.GetLogger(this.GetType()); - var credential = new NetworkCredential(WspContext.User.Login, _cryptography.Decrypt(WspContext.User.EncryptedPassword), WebDavAppConfigManager.Instance.UserDomain); - _webDavSession = new WebDavSession(); - _webDavSession.Credentials = credential; - _itemId = WspContext.User.ItemId; - _rootFolders = ConnectToWebDavServer(); - - if (_rootFolders.Any()) + _rootFolders = new Lazy>(ConnectToWebDavServer); + _webDavRootPath = new Lazy(() => { - var folder = _rootFolders.First(); - var uri = new Uri(folder.Url); - _webDavRootPath = uri.Scheme + "://" + uri.Host + uri.Segments[0] + uri.Segments[1]; - } + if (_rootFolders.Value.Any()) + { + var folder = _rootFolders.Value.First(); + var uri = new Uri(folder.Url); + return uri.Scheme + "://" + uri.Host + uri.Segments[0] + uri.Segments[1]; + } + + return string.Empty; + }); + } public void OpenFolder(string pathPart) @@ -64,8 +61,12 @@ namespace WebsitePanel.WebDavPortal.Models _isRoot = true; return; } + _isRoot = false; - _currentFolder = _webDavSession.OpenFolder(_webDavRootPath + pathPart); + + _webDavSession.Credentials = new NetworkCredential(WspContext.User.Login, _cryptography.Decrypt(WspContext.User.EncryptedPassword), WebDavAppConfigManager.Instance.UserDomain); + + _currentFolder = _webDavSession.OpenFolder(_webDavRootPath.Value + pathPart); } public IEnumerable GetChildren() @@ -74,7 +75,7 @@ namespace WebsitePanel.WebDavPortal.Models if (_isRoot) { - children = _rootFolders.Select(x => new WebDavHierarchyItem {Href = new Uri(x.Url), ItemType = ItemType.Folder}).ToArray(); + children = _rootFolders.Value.Select(x => new WebDavHierarchyItem {Href = new Uri(x.Url), ItemType = ItemType.Folder}).ToArray(); } else { @@ -119,6 +120,19 @@ namespace WebsitePanel.WebDavPortal.Models } } + public IResource GetResource(string fileName) + { + try + { + IResource resource = _currentFolder.GetResource(fileName); + return resource; + } + catch (InvalidOperationException exception) + { + throw new ResourceNotFoundException("Resource not found", exception); + } + } + public string GetFileUrl(string fileName) { try @@ -139,9 +153,9 @@ namespace WebsitePanel.WebDavPortal.Models var userGroups = WSP.Services.Organizations.GetSecurityGroupsByMember(user.ItemId, user.AccountId); - foreach (var folder in WSP.Services.EnterpriseStorage.GetEnterpriseFolders(_itemId)) + foreach (var folder in WSP.Services.EnterpriseStorage.GetEnterpriseFolders(WspContext.User.ItemId)) { - var permissions = WSP.Services.EnterpriseStorage.GetEnterpriseFolderPermissions(_itemId, folder.Name); + var permissions = WSP.Services.EnterpriseStorage.GetEnterpriseFolderPermissions(WspContext.User.ItemId, folder.Name); foreach (var permission in permissions) { @@ -168,5 +182,16 @@ namespace WebsitePanel.WebDavPortal.Models return ms.ToArray(); } } + + + public string CreateFileId(string path) + { + return _cryptography.Encrypt(path).Replace("/", "AAAAA"); + } + + public string FilePathFromId(string id) + { + return _cryptography.Decrypt(id.Replace("AAAAA", "/")); + } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Owa/WopiServer.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Owa/WopiServer.cs new file mode 100644 index 00000000..7f646f02 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Owa/WopiServer.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; +using System.Linq; +using System.Net.Mime; +using System.Runtime.Serialization.Json; +using System.Text; +using System.Web.Mvc; +using WebsitePanel.WebDav.Core.Client; +using WebsitePanel.WebDav.Core.Entities.Owa; +using WebsitePanel.WebDav.Core.Interfaces.Managers; +using WebsitePanel.WebDav.Core.Interfaces.Owa; + +namespace WebsitePanel.WebDav.Core.Owa +{ + public class WopiServer : IWopiServer + { + private readonly IWebDavManager _webDavManager; + + public WopiServer(IWebDavManager webDavManager) + { + _webDavManager = webDavManager; + } + + public CheckFileInfo GetCheckFileInfo(string path) + { + string fileName = path.Split('/').Last(); + int index = path.LastIndexOf(fileName, StringComparison.InvariantCultureIgnoreCase); + string folder = path.Remove(index - 1, fileName.Length + 1); + + _webDavManager.OpenFolder(folder); + + var resource = _webDavManager.GetResource(fileName); + + var cFileInfo = new CheckFileInfo + { + BaseFileName = resource.DisplayName, + OwnerId = @"4257508bfe174aa28b461536d8b6b648", + Size = resource.ContentLength, + Version = @"%22%7B59CCD75F%2D0687%2D4F86%2DBBCF%2D059126640640%7D%2C1%22" + }; + + return cFileInfo; + } + + public FileResult GetFile(string path) + { + string fileName = path.Split('/').Last(); + int index = path.LastIndexOf(fileName, StringComparison.InvariantCultureIgnoreCase); + string folder = path.Remove(index - 1, fileName.Length + 1); + + _webDavManager.OpenFolder(folder); + + var fileBytes = _webDavManager.GetFileBytes(fileName); + + return new FileContentResult(fileBytes, MediaTypeNames.Application.Octet); + } + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Security/Authentication/FormsAuthenticationService.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Security/Authentication/FormsAuthenticationService.cs index b33ae4ac..bf1cdec0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Security/Authentication/FormsAuthenticationService.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Security/Authentication/FormsAuthenticationService.cs @@ -1,5 +1,6 @@ using System; using System.DirectoryServices.AccountManagement; +using System.Threading; using System.Web; using System.Web.Script.Serialization; using System.Web.Security; @@ -29,8 +30,10 @@ namespace WebsitePanel.WebDav.Core.Security.Authentication return null; } - var principal = new WspPrincipal(login); + //var user = UserPrincipal.FindByIdentity(_principalContext, IdentityType.UserPrincipalName, login); + var principal = new WspPrincipal(login); + var exchangeAccount = WSP.Services.ExchangeServer.GetAccountByAccountNameWithoutItemId(login); var organization = WSP.Services.Organizations.GetOrganization(exchangeAccount.ItemId); @@ -40,13 +43,34 @@ namespace WebsitePanel.WebDav.Core.Security.Authentication principal.DisplayName = exchangeAccount.DisplayName; principal.EncryptedPassword = _cryptography.Encrypt(password); - CreateAuthenticationTicket(principal); + if (HttpContext.Current != null) + { + HttpContext.Current.User = principal; + } - HttpContext.Current.User = principal; + Thread.CurrentPrincipal = principal; return principal; } + public WspPrincipal LogIn(string accessToken) + { + var token = _cryptography.Decrypt(accessToken.Replace("AAAAA", "/")); + + var splitResult = token.Split(':'); + + var login = splitResult[0]; + var password = _cryptography.Decrypt(splitResult[1]); + var expiration = DateTime.Parse(splitResult[2]); + + if (expiration < DateTime.Today) + { + return null; + } + + return LogIn(login, password); + } + public void CreateAuthenticationTicket(WspPrincipal principal) { var serializer = new JavaScriptSerializer(); @@ -67,6 +91,13 @@ namespace WebsitePanel.WebDav.Core.Security.Authentication HttpContext.Current.Response.Cookies.Add(cookie); } + public string CreateAccessToken(WspPrincipal principal) + { + var token = string.Format("{0}:{1}:{2}", principal.Login, principal.EncryptedPassword, DateTime.Now.ToShortDateString()); + + return _cryptography.Encrypt(token).Replace("/", "AAAAA"); + } + public void LogOut() { FormsAuthentication.SignOut(); diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Security/Authentication/Principals/WspPrincipal.cs b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Security/Authentication/Principals/WspPrincipal.cs index 15401a14..e289b687 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Security/Authentication/Principals/WspPrincipal.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/Security/Authentication/Principals/WspPrincipal.cs @@ -28,8 +28,8 @@ namespace WebsitePanel.WebDav.Core.Security.Authentication.Principals public IIdentity Identity { get; private set; } public WspPrincipal(string username) - { - Identity = new GenericIdentity(username); + { + Identity = new GenericIdentity(username);//new WindowsIdentity(username, "WindowsAuthentication"); Login = username; } diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/WebsitePanel.WebDav.Core.csproj b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/WebsitePanel.WebDav.Core.csproj index cdd7e02b..9823dce5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/WebsitePanel.WebDav.Core.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/WebsitePanel.WebDav.Core.csproj @@ -32,6 +32,9 @@ 4 + + ..\packages\log4net.2.0.0\lib\net40-full\log4net.dll + True ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll @@ -45,6 +48,7 @@ + C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Web.dll @@ -79,6 +83,10 @@ + + False + ..\..\..\..\Scheduler Domains\WebsitePanel\Bin\WebsitePanel.EnterpriseServer.Base.dll + ..\WebsitePanel.WebPortal\Bin\WebsitePanel.EnterpriseServer.Client.dll @@ -108,6 +116,9 @@ + + + @@ -115,11 +126,14 @@ + + + @@ -132,6 +146,7 @@ + diff --git a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/packages.config b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/packages.config index 2b0a9f5f..ad6a1af2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDav.Core/packages.config +++ b/WebsitePanel/Sources/WebsitePanel.WebDav.Core/packages.config @@ -1,5 +1,6 @@  + diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/App_Start/RouteConfig.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/App_Start/RouteConfig.cs index d8b9682d..0b86bcc2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/App_Start/RouteConfig.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/App_Start/RouteConfig.cs @@ -26,12 +26,28 @@ namespace WebsitePanel.WebDavPortal #endregion + #region Owa + + routes.MapRoute( + name: OwaRouteNames.GetFile, + url: "owa/wopi*/files/{encodedPath}/contents", + defaults: new { controller = "Owa", action = "GetFile" } + ); + + routes.MapRoute( + name: OwaRouteNames.CheckFileInfo, + url: "owa/wopi*/files/{encodedPath}", + defaults: new { controller = "Owa", action = "CheckFileInfo" } + ); + + #endregion + routes.MapRoute( name: "Office365DocumentRoute", url: "office365/{org}/{*pathPart}", defaults: new { controller = "FileSystem", action = "ShowOfficeDocument", pathPart = UrlParameter.Optional } ); - + routes.MapRoute( name: FileSystemRouteNames.FilePath, url: "{org}/{*pathPart}", diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/AccountController.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/AccountController.cs index f3b3e1b2..b63ff4dd 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/AccountController.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/AccountController.cs @@ -3,8 +3,8 @@ using System.Net; using System.Web.Mvc; using System.Web.Routing; using WebsitePanel.WebDav.Core.Config; +using WebsitePanel.WebDav.Core.Security.Authentication; using WebsitePanel.WebDav.Core.Security.Cryptography; -using WebsitePanel.WebDavPortal.Exceptions; using WebsitePanel.WebDavPortal.Models; using WebsitePanel.WebDavPortal.UI.Routes; using WebsitePanel.WebDav.Core.Interfaces.Security; @@ -39,11 +39,13 @@ namespace WebsitePanel.WebDavPortal.Controllers public ActionResult Login(AccountModel model) { var user = _authenticationService.LogIn(model.Login, model.Password); - + ViewBag.LdapIsAuthentication = user.Identity.IsAuthenticated; if (user.Identity.IsAuthenticated) { + _authenticationService.CreateAuthenticationTicket(user); + Session[WebDavAppConfigManager.Instance.SessionKeys.WebDavManager] = null; return RedirectToRoute(FileSystemRouteNames.FilePath, new { org = WspContext.User.OrganizationId }); diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/FileSystemController.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/FileSystemController.cs index 80966704..f2411e82 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/FileSystemController.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/FileSystemController.cs @@ -1,17 +1,23 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Net.Mime; using System.Web; using System.Web.Mvc; +using System.Web.Routing; using WebsitePanel.WebDav.Core; using WebsitePanel.WebDav.Core.Client; using WebsitePanel.WebDav.Core.Config; using WebsitePanel.WebDav.Core.Exceptions; +using WebsitePanel.WebDav.Core.Interfaces.Managers; +using WebsitePanel.WebDav.Core.Interfaces.Security; +using WebsitePanel.WebDav.Core.Security.Cryptography; using WebsitePanel.WebDavPortal.CustomAttributes; using WebsitePanel.WebDavPortal.Extensions; using WebsitePanel.WebDavPortal.Models; using System.Net; +using WebsitePanel.WebDavPortal.UI.Routes; namespace WebsitePanel.WebDavPortal.Controllers @@ -20,11 +26,15 @@ namespace WebsitePanel.WebDavPortal.Controllers [LdapAuthorization] public class FileSystemController : Controller { + private readonly ICryptography _cryptography; private readonly IWebDavManager _webdavManager; + private readonly IAuthenticationService _authenticationService; - public FileSystemController(IWebDavManager webdavManager) + public FileSystemController(ICryptography cryptography, IWebDavManager webdavManager, IAuthenticationService authenticationService) { + _cryptography = cryptography; _webdavManager = webdavManager; + _authenticationService = authenticationService; } [HttpGet] @@ -58,8 +68,14 @@ namespace WebsitePanel.WebDavPortal.Controllers public ActionResult ShowOfficeDocument(string org, string pathPart = "") { + var owaOpener = WebDavAppConfigManager.Instance.OfficeOnline.Single(x => x.Extension == Path.GetExtension(pathPart)); + string fileUrl = _webdavManager.RootPath.TrimEnd('/') + "/" + pathPart.TrimStart('/'); - var uri = new Uri(WebDavAppConfigManager.Instance.OfficeOnline.Url).AddParameter("src", fileUrl).ToString(); + string accessToken = _authenticationService.CreateAccessToken(WspContext.User); + + string wopiSrc = Server.UrlDecode(Url.RouteUrl(OwaRouteNames.CheckFileInfo, new { encodedPath = _webdavManager.CreateFileId(pathPart) }, Request.Url.Scheme)); + + var uri = string.Format("{0}/{1}?WOPISrc={2}&access_token={3}", WebDavAppConfigManager.Instance.OfficeOnline.Url, owaOpener.OwaOpener, Server.UrlEncode(wopiSrc), Server.UrlEncode(accessToken)); return View(new OfficeOnlineModel(uri, new Uri(fileUrl).Segments.Last())); } @@ -80,7 +96,7 @@ namespace WebsitePanel.WebDavPortal.Controllers return PartialView("_ResourseCollectionPartial", result); } - return new HttpStatusCodeResult(HttpStatusCode.NoContent); ; + return new HttpStatusCodeResult(HttpStatusCode.NoContent); } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/OwaController.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/OwaController.cs new file mode 100644 index 00000000..5f6ba9ca --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/OwaController.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using WebsitePanel.WebDav.Core.Interfaces.Managers; +using WebsitePanel.WebDav.Core.Interfaces.Owa; +using WebsitePanel.WebDav.Core.Interfaces.Security; +using WebsitePanel.WebDav.Core.Security.Cryptography; + +namespace WebsitePanel.WebDavPortal.Controllers +{ + [AllowAnonymous] + public class OwaController : Controller + { + private readonly IWopiServer _wopiServer; + private readonly IWebDavManager _webDavManager; + private readonly IAuthenticationService _authenticationService; + + public OwaController(IWopiServer wopiServer, IWebDavManager webDavManager, IAuthenticationService authenticationService) + { + _wopiServer = wopiServer; + _webDavManager = webDavManager; + _authenticationService = authenticationService; + } + + public JsonResult CheckFileInfo( string encodedPath) + { + var path = _webDavManager.FilePathFromId(encodedPath); + + var fileInfo = _wopiServer.GetCheckFileInfo(path); + + return Json(fileInfo, JsonRequestBehavior.AllowGet); + } + + public FileResult GetFile(string encodedPath) + { + var path = _webDavManager.FilePathFromId(encodedPath); + + return _wopiServer.GetFile(path); + } + + protected override void OnActionExecuting(ActionExecutingContext filterContext) + { + base.OnActionExecuting(filterContext); + + if (!string.IsNullOrEmpty(Request["access_token"])) + { + _authenticationService.LogIn(Request["access_token"]); + } + } + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/DependencyInjection/PortalDependencies.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/DependencyInjection/PortalDependencies.cs index f13ae411..c6031ca0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/DependencyInjection/PortalDependencies.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/DependencyInjection/PortalDependencies.cs @@ -4,7 +4,10 @@ using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.SessionState; +using WebsitePanel.WebDav.Core.Interfaces.Managers; +using WebsitePanel.WebDav.Core.Interfaces.Owa; using WebsitePanel.WebDav.Core.Interfaces.Security; +using WebsitePanel.WebDav.Core.Owa; using WebsitePanel.WebDav.Core.Security; using WebsitePanel.WebDav.Core.Security.Authentication; using WebsitePanel.WebDav.Core.Security.Cryptography; @@ -21,6 +24,7 @@ namespace WebsitePanel.WebDavPortal.DependencyInjection kernel.Bind().To(); kernel.Bind().To(); kernel.Bind().ToProvider(); + kernel.Bind().To(); } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/DependencyInjection/Providers/WebDavManagerProvider.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/DependencyInjection/Providers/WebDavManagerProvider.cs index c06a2a89..e731d5fc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/DependencyInjection/Providers/WebDavManagerProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/DependencyInjection/Providers/WebDavManagerProvider.cs @@ -4,8 +4,8 @@ using Ninject; using Ninject.Activation; using WebsitePanel.WebDav.Core; using WebsitePanel.WebDav.Core.Config; +using WebsitePanel.WebDav.Core.Managers; using WebsitePanel.WebDav.Core.Security.Cryptography; -using WebsitePanel.WebDavPortal.Exceptions; using WebsitePanel.WebDavPortal.Models; namespace WebsitePanel.WebDavPortal.DependencyInjection.Providers diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/FileOperations/FileOpenerManager.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/FileOperations/FileOpenerManager.cs index b4305109..1310e0ba 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/FileOperations/FileOpenerManager.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/FileOperations/FileOpenerManager.cs @@ -12,7 +12,7 @@ namespace WebsitePanel.WebDavPortal.FileOperations public FileOpenerManager() { if (WebDavAppConfigManager.Instance.OfficeOnline.IsEnabled) - _operationTypes.AddRange(WebDavAppConfigManager.Instance.OfficeOnline.ToDictionary(x => x, y => FileOpenerType.OfficeOnline)); + _operationTypes.AddRange(WebDavAppConfigManager.Instance.OfficeOnline.ToDictionary(x => x.Extension, y => FileOpenerType.OfficeOnline)); } public FileOpenerType this[string fileExtension] diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Global.asax.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Global.asax.cs index 8cf744a3..14649e45 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Global.asax.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Global.asax.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Web; using System.Web.Mvc; using System.Web.Optimization; @@ -6,9 +7,12 @@ using System.Web.Routing; using System.Web.Script.Serialization; using System.Web.Security; using WebsitePanel.WebDav.Core.Config; +using WebsitePanel.WebDav.Core.Interfaces.Security; using WebsitePanel.WebDav.Core.Security.Authentication.Principals; +using WebsitePanel.WebDav.Core.Security.Cryptography; using WebsitePanel.WebDavPortal.Controllers; using WebsitePanel.WebDavPortal.DependencyInjection; +using WebsitePanel.WebDavPortal.HttpHandlers; namespace WebsitePanel.WebDavPortal { @@ -55,8 +59,11 @@ namespace WebsitePanel.WebDavPortal protected void Application_PostAuthenticateRequest(Object sender, EventArgs e) { - HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; var contextWrapper = new HttpContextWrapper(Context); + HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; + + var authService = DependencyResolver.Current.GetService(); + var cryptography = DependencyResolver.Current.GetService(); if (authCookie != null) { @@ -66,15 +73,7 @@ namespace WebsitePanel.WebDavPortal var principalSerialized = serializer.Deserialize(authTicket.UserData); - var principal = new WspPrincipal(principalSerialized.Login); - - principal.AccountId = principalSerialized.AccountId; - principal.ItemId = principalSerialized.ItemId; - principal.OrganizationId = principalSerialized.OrganizationId; - principal.DisplayName = principalSerialized.DisplayName; - principal.EncryptedPassword = principalSerialized.EncryptedPassword; - - HttpContext.Current.User = principal; + authService.LogIn(principalSerialized.Login, cryptography.Decrypt(principalSerialized.EncryptedPassword)); if (!contextWrapper.Request.IsAjaxRequest()) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/UI/Routes/OwaRouteNames.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/UI/Routes/OwaRouteNames.cs new file mode 100644 index 00000000..4a263e53 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/UI/Routes/OwaRouteNames.cs @@ -0,0 +1,8 @@ +namespace WebsitePanel.WebDavPortal.UI.Routes +{ + public class OwaRouteNames + { + public const string CheckFileInfo = "OwaCheckFileInfoPath"; + public const string GetFile = "OwaGetFilePath"; + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Views/FileSystem/ShowContent.cshtml b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Views/FileSystem/ShowContent.cshtml index 939f3bba..bc4222bd 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Views/FileSystem/ShowContent.cshtml +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Views/FileSystem/ShowContent.cshtml @@ -2,10 +2,11 @@ @using WebsitePanel.WebDav.Core.Client @using Ninject @using WebsitePanel.WebDav.Core.Config +@using WebsitePanel.WebDav.Core.Interfaces.Managers @model WebsitePanel.WebDavPortal.Models.ModelForWebDav @{ - var webDavManager = DependencyResolver.Current.GetService(); + var webDavManager = DependencyResolver.Current.GetService(); ViewBag.Title = WebDavAppConfigManager.Instance.ApplicationName; } @Scripts.Render("~/bundles/jquery") diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config index 25d53401..ba449d53 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config @@ -37,7 +37,7 @@ - + @@ -58,13 +58,13 @@ - - - - - - - + + + + + + + + @@ -83,11 +84,8 @@ - - - - + @@ -104,6 +102,9 @@ + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/WebsitePanel.WebDavPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/WebsitePanel.WebDavPortal.csproj index bd1bf241..fc89d398 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/WebsitePanel.WebDavPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/WebsitePanel.WebDavPortal.csproj @@ -144,13 +144,12 @@ + - - @@ -162,13 +161,12 @@ - - + @@ -261,7 +259,9 @@ - + + + From b1edd255b82435f40b619a0ed0e6637281fcd33a Mon Sep 17 00:00:00 2001 From: Christiaan Swiers Date: Thu, 15 Jan 2015 15:09:33 +0100 Subject: [PATCH 7/9] Added databasechanges for default top package in user space --- WebsitePanel/Database/update_db.sql | 207 +++++++++++++++++++++++++++- 1 file changed, 206 insertions(+), 1 deletion(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 1099930f..a68e2c13 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -7360,4 +7360,209 @@ LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID RETURN -GO \ No newline at end of file +GO + +IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='Packages' AND COLS.name='DefaultTopPackage') +BEGIN +ALTER TABLE [dbo].[Packages] ADD + [DefaultTopPackage] [bit] DEFAULT 0 NOT NULL +END +GO + + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetMyPackages') +DROP PROCEDURE GetMyPackages +GO +CREATE PROCEDURE [dbo].[GetMyPackages] +( + @ActorID int, + @UserID int +) +AS + +-- check rights +IF dbo.CheckActorUserRights(@ActorID, @UserID) = 0 +RAISERROR('You are not allowed to access this account', 16, 1) + +SELECT + P.PackageID, + P.ParentPackageID, + P.PackageName, + P.StatusID, + P.PlanID, + P.PurchaseDate, + + dbo.GetItemComments(P.PackageID, 'PACKAGE', @ActorID) AS Comments, + + -- server + ISNULL(P.ServerID, 0) AS ServerID, + ISNULL(S.ServerName, 'None') AS ServerName, + ISNULL(S.Comments, '') AS ServerComments, + ISNULL(S.VirtualServer, 1) AS VirtualServer, + + -- hosting plan + HP.PlanName, + + -- user + P.UserID, + U.Username, + U.FirstName, + U.LastName, + U.FullName, + U.RoleID, + U.Email, + + P.DefaultTopPackage +FROM Packages AS P +INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID +LEFT OUTER JOIN Servers AS S ON P.ServerID = S.ServerID +LEFT OUTER JOIN HostingPlans AS HP ON P.PlanID = HP.PlanID +WHERE P.UserID = @UserID +RETURN +GO + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetPackages') +DROP PROCEDURE GetPackages +GO +CREATE PROCEDURE [dbo].[GetPackages] +( + @ActorID int, + @UserID int +) +AS + +SELECT + P.PackageID, + P.ParentPackageID, + P.PackageName, + P.StatusID, + P.PurchaseDate, + + -- server + ISNULL(P.ServerID, 0) AS ServerID, + ISNULL(S.ServerName, 'None') AS ServerName, + ISNULL(S.Comments, '') AS ServerComments, + ISNULL(S.VirtualServer, 1) AS VirtualServer, + + -- hosting plan + P.PlanID, + HP.PlanName, + + -- user + P.UserID, + U.Username, + U.FirstName, + U.LastName, + U.RoleID, + U.Email, + + P.DefaultTopPackage +FROM Packages AS P +INNER JOIN Users AS U ON P.UserID = U.UserID +INNER JOIN Servers AS S ON P.ServerID = S.ServerID +INNER JOIN HostingPlans AS HP ON P.PlanID = HP.PlanID +WHERE + P.UserID = @UserID +RETURN + +GO + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetPackage') +DROP PROCEDURE GetPackage +GO +CREATE PROCEDURE [dbo].[GetPackage] +( + @PackageID int, + @ActorID int +) +AS + +-- Note: ActorID is not verified +-- check both requested and parent package + +SELECT + P.PackageID, + P.ParentPackageID, + P.UserID, + P.PackageName, + P.PackageComments, + P.ServerID, + P.StatusID, + P.PlanID, + P.PurchaseDate, + P.OverrideQuotas, + P.DefaultTopPackage +FROM Packages AS P +WHERE P.PackageID = @PackageID +RETURN + +GO + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'UpdatePackage') +DROP PROCEDURE UpdatePackage +GO +CREATE PROCEDURE [dbo].[UpdatePackage] +( + @ActorID int, + @PackageID int, + @PackageName nvarchar(300), + @PackageComments ntext, + @StatusID int, + @PlanID int, + @PurchaseDate datetime, + @OverrideQuotas bit, + @QuotasXml ntext, + @DefaultTopPackage bit +) +AS + +-- check rights +IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0 +RAISERROR('You are not allowed to access this package', 16, 1) + +BEGIN TRAN + +DECLARE @ParentPackageID int +DECLARE @OldPlanID int + +SELECT @ParentPackageID = ParentPackageID, @OldPlanID = PlanID FROM Packages +WHERE PackageID = @PackageID + +-- update package +UPDATE Packages SET + PackageName = @PackageName, + PackageComments = @PackageComments, + StatusID = @StatusID, + PlanID = @PlanID, + PurchaseDate = @PurchaseDate, + OverrideQuotas = @OverrideQuotas, + DefaultTopPackage = @DefaultTopPackage +WHERE + PackageID = @PackageID + +-- update quotas (if required) +EXEC UpdatePackageQuotas @ActorID, @PackageID, @QuotasXml + +-- check resulting quotas +DECLARE @ExceedingQuotas AS TABLE (QuotaID int, QuotaName nvarchar(50), QuotaValue int) + +-- check exceeding quotas if plan has been changed +IF (@OldPlanID <> @PlanID) OR (@OverrideQuotas = 1) +BEGIN + INSERT INTO @ExceedingQuotas + SELECT * FROM dbo.GetPackageExceedingQuotas(@ParentPackageID) WHERE QuotaValue > 0 +END + +SELECT * FROM @ExceedingQuotas + +IF EXISTS(SELECT * FROM @ExceedingQuotas) +BEGIN + ROLLBACK TRAN + RETURN +END + + +COMMIT TRAN +RETURN + +GO From 5b55f0fbedca9bf99c25e2e510c76148ea754fcb Mon Sep 17 00:00:00 2001 From: Christiaan Swiers Date: Thu, 15 Jan 2015 15:14:38 +0100 Subject: [PATCH 8/9] Deleted UpdatePackage_storedProcedure.sql --- .../Database/UpdatePackage_storedProcedure.sql | Bin 7714 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 WebsitePanel/Database/UpdatePackage_storedProcedure.sql diff --git a/WebsitePanel/Database/UpdatePackage_storedProcedure.sql b/WebsitePanel/Database/UpdatePackage_storedProcedure.sql deleted file mode 100644 index 10c8ba58e044e1ab5a180388b788fbbd83a90729..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7714 zcmeHMTW=dh6rNWj@gMdrY1O1DkUms^;`ovnT08ZnEkaf0CMF5EPKfOSe;)Y0IeRi^ zc4r;aG|&fR+3UHS`)$tbUw@9=z_ncFesnM0#JzQMckUMWcjU%yhUe71cAvY?+=1)) z=RGocj2xucLFR|_pJ-TE*~2#)qK7R_6IQ13wpbFYOuC^P}pgjRmS`Vv-I0LKM167SETS=!Ii<$r!H{UdPE za}CgMLY97lj|0$JKx=;#D3Bv!+w{LRw+FnmJuOa6WS~F8_`&u12tG9_tP;b$oU4I< za%Kyk4A{=FpE}6A)lV^A00(za!&&Y>+u&b!1|F1JAABg}W{JxOz_JI)184Uz^9{Z` zo=zW9b$n#>y{7t*cfky5Q;^;4Ci2 zG2?OxuFKF6*-iqcy=^weNIdXJ58wfV@*&p^leJ=fY^O7c^r z#nq?Yv(syBpP8pgxISc@f;$^Y#Mc7-F(^*+*b{lk`_0*&d)q!gvAV_a&P*e|f8_Pp z0asm6WA*tCxu4_gT0e77jqy%SB#R032)kGZi9gn-p>|kphtNwO zTIEYL=bAL`C)^gv*{(gZjfF0b#{fcuD z`yf(af5fvLpO^Tj-HMFDNuPN6z1zBzIv+|VVwa{j5yh-i-cfai=1vP;t|0RT=Ddw??t`*10>1A?U$87yUao zNS9IcRNo-&qtiIZJG~+Lje6d3P>;N`Y@k!C`+h`YQnPVcI`yD5Y!BAuZExA*xSwB} z$Je1oO_Gahj^qw6MOk1iFV$T#d5iN_F*Au(i&3gMi||tamZ)bMJE>|mf;>&=oBgoJ z7Ag!YEHxBv`YabAo20U*u4?4Pwkv0o6prF9#Z}HS0$rTf{jmoqrC^D$uPXZ}OnP16 zSJgMQ*Qz~=XPw+59NoM#_9TvYV{7e5pHc40D}<=>CZ3?QerKp5Jb#6=6>sHuvXb1` za<6=B^L8hAWK7TIW=3Njr=4(zFOd~PkawB4u#(qf&f`qXbDzAg(AzyL3n9yysD)a` zn{&z}P?o0lG4>tGra9q=mi0`WnH7zcR8`*1YqH({0@j=Qv#Vx5(QvSmm6a7b<~s8y z-(WYf+GU<4v;3Bv)s3>wU{N_G@D`M^la9Rc;2Vroru*7`3n=EM5M!)EJ!EzI$xStz zzRixFltQ)OsOIYib5b8!Df6Qt@RHhU`v`QL@9zUH7gzpqXg|GRl XZf_Z5Imu@O7@pzN@%FXQ_8k5<_33P6 From 388ed0e69e1dc2bfd4f1e71f5fe1b5f61cb00b02 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Jan 2015 11:57:12 -0500 Subject: [PATCH 9/9] Added tag build-2.1.0.532 for changeset 156e208b6829