diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 0b218c17..3118774d 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5468,30 +5468,6 @@ CREATE TABLE RDSCollections ) GO -IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'RDSCollections' AND COLUMN_NAME = 'DisplayName') -BEGIN - ALTER TABLE [dbo].[RDSCollections] - ADD DisplayName NVARCHAR(255) -END -GO - -UPDATE [dbo].[RDSCollections] SET DisplayName = [Name] WHERE DisplayName IS NULL - - -ALTER TABLE [dbo].[RDSCollectionUsers] -DROP CONSTRAINT [FK_RDSCollectionUsers_RDSCollectionId] -GO - - -ALTER TABLE [dbo].[RDSCollectionUsers] -DROP CONSTRAINT [FK_RDSCollectionUsers_UserId] -GO - -ALTER TABLE [dbo].[RDSServers] -DROP CONSTRAINT [FK_RDSServers_RDSCollectionId] -GO - - ALTER TABLE [dbo].[RDSCollectionUsers] WITH CHECK ADD CONSTRAINT [FK_RDSCollectionUsers_RDSCollectionId] FOREIGN KEY([RDSCollectionId]) REFERENCES [dbo].[RDSCollections] ([ID]) ON DELETE CASCADE @@ -5760,8 +5736,7 @@ SELECT CR.ID, CR.ItemID, CR.Name, - CR.Description, - CR.DisplayName + CR.Description FROM @RDSCollections AS C INNER JOIN RDSCollections AS CR ON C.RDSCollectionId = CR.ID WHERE C.ItemPosition BETWEEN @StartRow AND @EndRow' @@ -5794,8 +5769,7 @@ SELECT Id, ItemId, Name, - Description, - DisplayName + Description FROM RDSCollections WHERE ItemID = @ItemID GO @@ -5814,10 +5788,9 @@ SELECT TOP 1 Id, Name, ItemId, - Description, - DisplayName + Description FROM RDSCollections - WHERE DisplayName = @Name + WHERE Name = @Name GO @@ -5834,8 +5807,7 @@ SELECT TOP 1 Id, ItemId, Name, - Description, - DisplayName + Description FROM RDSCollections WHERE ID = @ID GO @@ -5849,8 +5821,7 @@ CREATE PROCEDURE [dbo].[AddRDSCollection] @RDSCollectionID INT OUTPUT, @ItemID INT, @Name NVARCHAR(255), - @Description NVARCHAR(255), - @DisplayName NVARCHAR(255) + @Description NVARCHAR(255) ) AS @@ -5858,15 +5829,13 @@ INSERT INTO RDSCollections ( ItemID, Name, - Description, - DisplayName + Description ) VALUES ( @ItemID, @Name, - @Description, - @DisplayName + @Description ) SET @RDSCollectionID = SCOPE_IDENTITY() @@ -5883,8 +5852,7 @@ CREATE PROCEDURE [dbo].[UpdateRDSCollection] @ID INT, @ItemID INT, @Name NVARCHAR(255), - @Description NVARCHAR(255), - @DisplayName NVARCHAR(255) + @Description NVARCHAR(255) ) AS @@ -5892,8 +5860,7 @@ UPDATE RDSCollections SET ItemID = @ItemID, Name = @Name, - Description = @Description, - DisplayName = @DisplayName + Description = @Description WHERE ID = @Id GO @@ -6040,44 +6007,6 @@ SELECT RETURN GO - -IF OBJECTPROPERTY(object_id('dbo.GetExchangeAccountByAccountNameWithoutItemId'), N'IsProcedure') = 1 -DROP PROCEDURE [dbo].[GetExchangeAccountByAccountNameWithoutItemId] -GO -CREATE PROCEDURE [dbo].[GetExchangeAccountByAccountNameWithoutItemId] -( - @PrimaryEmailAddress nvarchar(300) -) -AS -SELECT - E.AccountID, - E.ItemID, - E.AccountType, - E.AccountName, - E.DisplayName, - E.PrimaryEmailAddress, - E.MailEnabledPublicFolder, - E.MailboxManagerActions, - E.SamAccountName, - E.AccountPassword, - E.MailboxPlanId, - P.MailboxPlan, - E.SubscriberNumber, - E.UserPrincipalName, - E.ArchivingMailboxPlanId, - AP.MailboxPlan as 'ArchivingMailboxPlan', - E.EnableArchiving -FROM - ExchangeAccounts AS E -LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId -LEFT OUTER JOIN ExchangeMailboxPlans AS AP ON E.ArchivingMailboxPlanId = AP.MailboxPlanId -WHERE - E.PrimaryEmailAddress = @PrimaryEmailAddress -RETURN -GO - - - -- wsp-10269: Changed php extension path in default properties for IIS70 and IIS80 provider update ServiceDefaultProperties set PropertyValue='%PROGRAMFILES(x86)%\PHP\php-cgi.exe' @@ -7469,16 +7398,157 @@ RETURN GO --- fix Disk Space Report - -IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetPackageDiskspace') -DROP PROCEDURE GetPackageDiskspace +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 -CREATE PROCEDURE [dbo].[GetPackageDiskspace] + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetMyPackages') +DROP PROCEDURE GetMyPackages +GO +CREATE PROCEDURE [dbo].[GetMyPackages] ( @ActorID int, - @PackageID 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 @@ -7486,24 +7556,49 @@ AS IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0 RAISERROR('You are not allowed to access this package', 16, 1) -SELECT - RG.GroupID, - RG.GroupName, - ROUND(CONVERT(float, ISNULL(GD.Diskspace, 0)) / 1024 / 1024, 0) AS Diskspace, - ISNULL(GD.Diskspace, 0) AS DiskspaceBytes -FROM ResourceGroups AS RG -LEFT OUTER JOIN -( - SELECT - PD.GroupID, - SUM(ISNULL(PD.DiskSpace, 0)) AS Diskspace -- in megabytes - FROM PackagesTreeCache AS PT - INNER JOIN PackagesDiskspace AS PD ON PT.PackageID = PD.PackageID - INNER JOIN Packages AS P ON PT.PackageID = P.PackageID - WHERE PT.ParentPackageID = @PackageID - GROUP BY PD.GroupID -) AS GD ON RG.GroupID = GD.GroupID -WHERE GD.Diskspace <> 0 -ORDER BY RG.GroupOrder +BEGIN TRAN -RETURN +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 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/Packages/PackageInfo.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/PackageInfo.cs index df134651..73a7629a 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.Base/System/SystemSettings.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs index c1292c1e..90b12d96 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.EnterpriseServer.Client/PackagesProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs index 45f9568e..78136b51 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs @@ -1,35 +1,7 @@ -// Copyright (c) 2015, 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 aef785b9..78049dfb 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 b0eaaa13..19508ce5 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 6d4c713f..fa390663 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.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 @@ - + + + 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..a68ecf37 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,5 @@ 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;} +.chosen-container { margin-top: -30px; } \ No newline at end of file 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 00000000..c57da70b Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/images/chosen-sprite.png differ 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 365c9658..0f9319b0 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,33 @@ 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]; + 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()); + + ret.Add("DataSet", set); + ret.Add("RowCount", table.Rows.Count); + } + 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/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. //
//------------------------------------------------------------------------------ @@ -158,6 +157,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/SystemSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs index 34e68edc..13aaa285 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx.cs @@ -95,7 +95,7 @@ namespace WebsitePanel.Portal txtBackupsPath.Text = settings["BackupsPath"]; } - + // WPI settings = ES.Services.System.GetSystemSettings(WSP.SystemSettings.WPI_SETTINGS); @@ -175,6 +175,7 @@ namespace WebsitePanel.Portal } + // WPI /* settings[FEED_ENABLE_MICROSOFT] = wpiMicrosoftFeed.Checked.ToString(); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx index de03cce4..4802f422 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx @@ -5,61 +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 332e42c0..1a086347 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; @@ -46,9 +47,10 @@ namespace WebsitePanel.Portal public partial class UserSpaces : WebsitePanelModuleBase { XmlNodeList xmlIcons = null; - + DataSet myPackages; protected void Page_Load(object sender, EventArgs e) { + // check for user bool isUser = PanelSecurity.SelectedUser.Role == UserRole.User; @@ -57,15 +59,29 @@ namespace WebsitePanel.Portal if (isUser && xmlIcons != null) { + + 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; + ddlPackageSelect.DataBind(); + } // USER UserPackagesPanel.Visible = true; - PackagesList.DataSource = new PackagesHelper().GetMyPackages(); - PackagesList.DataBind(); - - if (PackagesList.Items.Count == 0) + if(!IsPostBack) { - litEmptyList.Text = GetLocalizedString("gvPackages.Empty"); - EmptyPackagesList.Visible = true; + if(ddlPackageSelect.Items.Count == 0) { + litEmptyList.Text = GetLocalizedString("gvPackages.Empty"); + EmptyPackagesList.Visible = true; + } else { + ddlPackageSelect.Visible = true; + myPackages = new PackagesHelper().GetMyPackage(int.Parse(ddlPackageSelect.SelectedValue)); + PackagesList.DataSource = myPackages; + PackagesList.DataBind(); + } } } else @@ -223,5 +239,10 @@ namespace WebsitePanel.Portal { return node.Attributes[name] != null ? node.Attributes[name].Value : null; } + + public void openSelectedPackage(Object sender, EventArgs e) { + PackagesList.DataSource = new PackagesHelper().GetMyPackage(int.Parse(ddlPackageSelect.SelectedValue)); + PackagesList.DataBind(); + } } } 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 76140a9e..ff6fc157 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs @@ -67,6 +67,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. /// 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