diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs index 8ac0996f..948d93fa 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs @@ -64,29 +64,34 @@ namespace WebsitePanel.Providers.EnterpriseStorage #region Folders public SystemFile[] GetFolders(string organizationId) { - string rootPath = string.Format("{0}:\\{1}\\{2}", LocationDrive, UsersHome, organizationId); - - DirectoryInfo root = new DirectoryInfo(rootPath); - IWebDav webdav = new Web.WebDav(UsersDomain); - ArrayList items = new ArrayList(); + string rootPath = string.Format("{0}:\\{1}\\{2}", LocationDrive, UsersHome, organizationId); - // get directories - DirectoryInfo[] dirs = root.GetDirectories(); - foreach (DirectoryInfo dir in dirs) + if (Directory.Exists(rootPath)) { - string fullName = System.IO.Path.Combine(rootPath, dir.Name); - SystemFile folder = new SystemFile(dir.Name, fullName, true, - FileUtils.BytesToMb(FileUtils.CalculateFolderSize(dir.FullName)), dir.CreationTime, dir.LastWriteTime); + DirectoryInfo root = new DirectoryInfo(rootPath); + IWebDav webdav = new Web.WebDav(UsersDomain); - folder.Url = string.Format("https://{0}/{1}/{2}", UsersDomain, organizationId, dir.Name); - folder.Rules = webdav.GetFolderWebDavRules(organizationId, dir.Name); - items.Add(folder); - // check if the directory is empty - folder.IsEmpty = (Directory.GetFileSystemEntries(fullName).Length == 0); + // get directories + DirectoryInfo[] dirs = root.GetDirectories(); + foreach (DirectoryInfo dir in dirs) + { + string fullName = System.IO.Path.Combine(rootPath, dir.Name); + + SystemFile folder = new SystemFile(dir.Name, fullName, true, + FileUtils.BytesToMb(FileUtils.CalculateFolderSize(dir.FullName)), dir.CreationTime, dir.LastWriteTime); + + folder.Url = string.Format("https://{0}/{1}/{2}", UsersDomain, organizationId, dir.Name); + folder.Rules = webdav.GetFolderWebDavRules(organizationId, dir.Name); + + items.Add(folder); + + // check if the directory is empty + folder.IsEmpty = (Directory.GetFileSystemEntries(fullName).Length == 0); + } } return (SystemFile[])items.ToArray(typeof(SystemFile)); @@ -95,15 +100,18 @@ namespace WebsitePanel.Providers.EnterpriseStorage public SystemFile GetFolder(string organizationId, string folderName) { string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folderName); + SystemFile folder = new SystemFile(); - DirectoryInfo root = new DirectoryInfo(fullName); - - SystemFile folder = new SystemFile(root.Name, fullName, true, - FileUtils.BytesToMb( FileUtils.CalculateFolderSize(root.FullName)), root.CreationTime, root.LastWriteTime); + if (Directory.Exists(fullName)) + { + DirectoryInfo root = new DirectoryInfo(fullName); - folder.Url = string.Format("https://{0}/{1}/{2}", UsersDomain, organizationId, folderName); - folder.Rules = GetFolderWebDavRules(organizationId, folderName); + folder = new SystemFile(root.Name, fullName, true, + FileUtils.BytesToMb(FileUtils.CalculateFolderSize(root.FullName)), root.CreationTime, root.LastWriteTime); + folder.Url = string.Format("https://{0}/{1}/{2}", UsersDomain, organizationId, folderName); + folder.Rules = GetFolderWebDavRules(organizationId, folderName); + } return folder; } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs index 3c60b5f6..36610f03 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs @@ -109,11 +109,14 @@ namespace WebsitePanel.Providers.Web ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection(); var rules = new List(); - - foreach (var rule in authoringRulesCollection) + try { - rules.Add(rule.ToWebDavFolderRule()); + foreach (var rule in authoringRulesCollection) + { + rules.Add(rule.ToWebDavFolderRule()); + } } + catch { } return rules.ToArray(); } @@ -128,10 +131,6 @@ namespace WebsitePanel.Providers.Web { Configuration config = serverManager.GetApplicationHostConfiguration(); - //ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder)); - - //ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection(); - //authoringRulesCollection.Clear(); config.RemoveLocationPath(string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder)); serverManager.CommitChanges(); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/EnterpriseStorageCreateFolder.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/EnterpriseStorageCreateFolder.ascx.resx index 197e2094..82a41d20 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/EnterpriseStorageCreateFolder.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/EnterpriseStorageCreateFolder.ascx.resx @@ -139,6 +139,6 @@ * - Create New Folder In + Create New Folder \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx index af4e4960..396fa46e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx @@ -19,9 +19,7 @@
- - - +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.cs index 45fcd5dd..bfe407d3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.cs @@ -35,15 +35,6 @@ namespace WebsitePanel.Portal.ExchangeServer { public partial class EnterpriseStorageCreateFolder : WebsitePanelModuleBase { - protected void Page_Load(object sender, EventArgs e) - { - if (!IsPostBack) - { - Organization org = ES.Services.Organizations.GetOrganization(PanelRequest.ItemID); - - litRootFolder.Text = org.OrganizationId; - } - } protected void btnCreate_Click(object sender, EventArgs e) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.designer.cs index 0ed2ca91..dc641ab6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.designer.cs @@ -85,15 +85,6 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::System.Web.UI.WebControls.Localize locTitle; - /// - /// litRootFolder control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal litRootFolder; - /// /// messageBox control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx.cs index 5bdc930f..74b6bdfc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx.cs @@ -64,7 +64,7 @@ namespace WebsitePanel.Portal.ExchangeServer SystemFile folder = ES.Services.EnterpriseStorage.GetEnterpriseFolder( PanelRequest.ItemID, PanelRequest.FolderID); - litFolderName.Text = string.Format("{0}\\{1}", org.OrganizationId, folder.Name); + litFolderName.Text = string.Format("{0}", folder.Name); // bind form txtFolderName.Text = folder.Name; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx index eff151eb..4070ea3d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx @@ -20,8 +20,6 @@
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.cs index aad611fc..04bee17f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.cs @@ -41,10 +41,6 @@ namespace WebsitePanel.Portal.ExchangeServer { if (!IsPostBack) { - Organization org = ES.Services.Organizations.GetOrganization(PanelRequest.ItemID); - - litRootFolder.Text = org.OrganizationId; - BindEnterpriseStorageStats(); } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.designer.cs index 38f62b4e..841ed74b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.designer.cs @@ -85,15 +85,6 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::System.Web.UI.WebControls.Localize locTitle; - /// - /// litRootFolder control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal litRootFolder; - /// /// messageBox control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/EnterpriseStorage_Settings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/EnterpriseStorage_Settings.ascx.resx index 9695a9e9..304ec438 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/EnterpriseStorage_Settings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/EnterpriseStorage_Settings.ascx.resx @@ -120,11 +120,8 @@ Enable Hard Quota: - - Location Drive: - - Enterprise Storage Folder: + Enterprise Storage Path: Enterprise Storage Domain: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx index c731bd46..683e39f9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx @@ -2,7 +2,7 @@ @@ -17,17 +17,6 @@ ErrorMessage="*"> - - - -
- +
- - - - - -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.cs index f448c56d..68d286a5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.cs @@ -49,8 +49,7 @@ namespace WebsitePanel.Portal.ProviderControls try { chkEnableHardQuota.Enabled = ES.Services.EnterpriseStorage.CheckFileServicesInstallation(PanelRequest.ServiceId); - txtLocationDrive.Enabled = chkEnableHardQuota.Enabled; - valLocationDrive.Enabled = chkEnableHardQuota.Enabled; + txtFolder.Enabled = chkEnableHardQuota.Enabled; if (!chkEnableHardQuota.Enabled) lblFileServiceInfo.Visible = true; } @@ -62,18 +61,25 @@ namespace WebsitePanel.Portal.ProviderControls public void BindSettings(StringDictionary settings) { - txtFolder.Text = settings["UsersHome"]; - txtLocationDrive.Text = settings["LocationDrive"]; + string path = string.Format("{0}:\\{1}", settings["LocationDrive"], settings["UsersHome"]); + + txtFolder.Text = path; txtDomain.Text = settings["UsersDomain"]; chkEnableHardQuota.Checked = settings["EnableHardQuota"] == "true" ? true : false; } public void SaveSettings(StringDictionary settings) { - settings["UsersHome"] = txtFolder.Text; - settings["LocationDrive"] = txtLocationDrive.Text; - settings["UsersDomain"] = txtDomain.Text; - settings["EnableHardQuota"] = chkEnableHardQuota.Checked.ToString().ToLower(); + var drive = System.IO.Path.GetPathRoot(txtFolder.Text); + var folder = txtFolder.Text.Replace(drive, string.Empty); + + if (!string.IsNullOrEmpty(drive) && !string.IsNullOrEmpty(folder)) + { + settings["LocationDrive"] = drive.Split(':')[0]; + settings["UsersHome"] = folder; + settings["UsersDomain"] = txtDomain.Text; + settings["EnableHardQuota"] = chkEnableHardQuota.Checked.ToString().ToLower(); + } } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.designer.cs index 5f4e59a0..8f73da20 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.designer.cs @@ -26,6 +26,34 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Copyright (c) 2012, 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. @@ -85,33 +113,6 @@ namespace WebsitePanel.Portal.ProviderControls { /// protected global::System.Web.UI.WebControls.RequiredFieldValidator valDomain; - /// - /// lblLocationDrive control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblLocationDrive; - - /// - /// txtLocationDrive control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtLocationDrive; - - /// - /// valLocationDrive control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.RequiredFieldValidator valLocationDrive; - /// /// chkEnableHardQuota control. ///