update functionallity enterprise storage

This commit is contained in:
vfedosevich 2013-11-05 17:54:40 +03:00
parent 922009d402
commit 8784e493d5
28 changed files with 10952 additions and 8121 deletions

View file

@ -7,10 +7,17 @@ namespace WebsitePanel.EnterpriseServer.Base.HostedSolution
{ {
public class ESPermission public class ESPermission
{ {
string displayName;
string account; string account;
string access; string access;
bool isGroup; bool isGroup;
public string DisplayName
{
get { return displayName; }
set { displayName = value; }
}
public string Account public string Account
{ {
get { return account; } get { return account; }
@ -26,7 +33,8 @@ namespace WebsitePanel.EnterpriseServer.Base.HostedSolution
public bool IsGroup public bool IsGroup
{ {
get { return isGroup; } get { return isGroup; }
set { isGroup = value; } set { isGroup = value; }
} }
} }
} }

View file

@ -55,6 +55,8 @@ namespace WebsitePanel.EnterpriseServer
private System.Threading.SendOrPostCallback GetEnterpriseFoldersPagedOperationCompleted; private System.Threading.SendOrPostCallback GetEnterpriseFoldersPagedOperationCompleted;
private System.Threading.SendOrPostCallback RenameEnterpriseFolderOperationCompleted;
/// <remarks/> /// <remarks/>
public esEnterpriseStorage() public esEnterpriseStorage()
{ {
@ -88,6 +90,9 @@ namespace WebsitePanel.EnterpriseServer
/// <remarks/> /// <remarks/>
public event GetEnterpriseFoldersPagedCompletedEventHandler GetEnterpriseFoldersPagedCompleted; public event GetEnterpriseFoldersPagedCompletedEventHandler GetEnterpriseFoldersPagedCompleted;
/// <remarks/>
public event RenameEnterpriseFolderCompletedEventHandler RenameEnterpriseFolderCompleted;
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CheckFileServicesInstallation", RequestNamespace = "http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace = "http://smbsaas/websitepanel/enterpriseserver", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CheckFileServicesInstallation", 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 CheckFileServicesInstallation(int serviceId) public bool CheckFileServicesInstallation(int serviceId)
@ -568,6 +573,61 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/RenameEnterpriseFolder", 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 SystemFile RenameEnterpriseFolder(int itemId, string oldName, string newName)
{
object[] results = this.Invoke("RenameEnterpriseFolder", new object[] {
itemId,
oldName,
newName});
return ((SystemFile)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginRenameEnterpriseFolder(int itemId, string oldName, string newName, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("RenameEnterpriseFolder", new object[] {
itemId,
oldName,
newName}, callback, asyncState);
}
/// <remarks/>
public SystemFile EndRenameEnterpriseFolder(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((SystemFile)(results[0]));
}
/// <remarks/>
public void RenameEnterpriseFolderAsync(int itemId, string oldName, string newName)
{
this.RenameEnterpriseFolderAsync(itemId, oldName, newName, null);
}
/// <remarks/>
public void RenameEnterpriseFolderAsync(int itemId, string oldName, string newName, object userState)
{
if ((this.RenameEnterpriseFolderOperationCompleted == null))
{
this.RenameEnterpriseFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRenameEnterpriseFolderOperationCompleted);
}
this.InvokeAsync("RenameEnterpriseFolder", new object[] {
itemId,
oldName,
newName}, this.RenameEnterpriseFolderOperationCompleted, userState);
}
private void OnRenameEnterpriseFolderOperationCompleted(object arg)
{
if ((this.RenameEnterpriseFolderCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.RenameEnterpriseFolderCompleted(this, new RenameEnterpriseFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/> /// <remarks/>
public new void CancelAsync(object userState) public new void CancelAsync(object userState)
{ {
@ -844,4 +904,34 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
} }
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void RenameEnterpriseFolderCompletedEventHandler(object sender, RenameEnterpriseFolderCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class RenameEnterpriseFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal RenameEnterpriseFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public SystemFile Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((SystemFile)(this.results[0]));
}
}
}
} }

View file

@ -100,7 +100,7 @@ namespace WebsitePanel.EnterpriseServer
public static ESPermission[] GetFolderPermission(int itemId, string folder) public static ESPermission[] GetFolderPermission(int itemId, string folder)
{ {
return ConvertToESPermission(GetFolderWebDavRulesInternal(itemId, folder)); return ConvertToESPermission(itemId,GetFolderWebDavRulesInternal(itemId, folder));
} }
public static bool CheckFileServicesInstallation(int serviceId) public static bool CheckFileServicesInstallation(int serviceId)
@ -109,6 +109,11 @@ namespace WebsitePanel.EnterpriseServer
return es.CheckFileServicesInstallation(); return es.CheckFileServicesInstallation();
} }
public static SystemFile RenameFolder(int itemId, string oldFolder, string newFolder)
{
return RenameFolderInternal(itemId, oldFolder, newFolder);
}
#endregion #endregion
@ -161,6 +166,28 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
protected static SystemFile RenameFolderInternal(int itemId, string oldFolder, string newFolder)
{
try
{
// load organization
Organization org = OrganizationController.GetOrganization(itemId);
if (org == null)
{
return null;
}
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
return es.RenameFolder(org.OrganizationId, oldFolder, newFolder);
}
catch (Exception ex)
{
throw ex;
}
}
protected static ResultObject CreateFolderInternal(int itemId, string folderName) protected static ResultObject CreateFolderInternal(int itemId, string folderName)
{ {
ResultObject result = TaskManager.StartResultTask<ResultObject>("ENTERPRISE_STORAGE", "CREATE_FOLDER"); ResultObject result = TaskManager.StartResultTask<ResultObject>("ENTERPRISE_STORAGE", "CREATE_FOLDER");
@ -240,7 +267,8 @@ namespace WebsitePanel.EnterpriseServer
if (org == null) if (org == null)
return null; return null;
string accountTypes = string.Format("{0}, {1}", ((int)ExchangeAccountType.SecurityGroup), ((int)ExchangeAccountType.User)); string accountTypes = string.Format("{0}, {1}, {2}", ((int)ExchangeAccountType.SecurityGroup),
(int)ExchangeAccountType.DefaultSecurityGroup, ((int)ExchangeAccountType.User));
if (PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.Exchange) != 0) if (PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.Exchange) != 0)
{ {
@ -257,25 +285,16 @@ namespace WebsitePanel.EnterpriseServer
foreach (ExchangeAccount tmpAccount in tmpAccounts.ToArray()) foreach (ExchangeAccount tmpAccount in tmpAccounts.ToArray())
{ {
bool bSuccess = false; if (tmpAccount.AccountType == ExchangeAccountType.SecurityGroup || tmpAccount.AccountType == ExchangeAccountType.SecurityGroup
? OrganizationController.GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) == null
: OrganizationController.GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) == null)
continue;
switch (tmpAccount.AccountType) exAccounts.Add(tmpAccount);
{
case ExchangeAccountType.SecurityGroup:
bSuccess = OrganizationController.GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) != null;
break;
default:
bSuccess = OrganizationController.GetUserGeneralSettings(itemId, tmpAccount.AccountId) != null;
break;
}
if (bSuccess)
{
exAccounts.Add(tmpAccount);
}
} }
return exAccounts; return exAccounts;
} }
protected static SystemFilesPaged GetEnterpriseFoldersPagedInternal(int itemId, string filterValue, string sortColumn, protected static SystemFilesPaged GetEnterpriseFoldersPagedInternal(int itemId, string filterValue, string sortColumn,
@ -423,7 +442,7 @@ namespace WebsitePanel.EnterpriseServer
return rules.ToArray(); return rules.ToArray();
} }
private static ESPermission[] ConvertToESPermission(WebDavFolderRule[] rules) private static ESPermission[] ConvertToESPermission(int itemId, WebDavFolderRule[] rules)
{ {
var permissions = new List<ESPermission>(); var permissions = new List<ESPermission>();
@ -435,6 +454,31 @@ namespace WebsitePanel.EnterpriseServer
permission.IsGroup = rule.Roles.Any(); permission.IsGroup = rule.Roles.Any();
var orgObj = OrganizationController.GetAccountByAccountName(itemId, permission.Account);
if (orgObj == null)
continue;
if (permission.IsGroup)
{
var secGroupObj = OrganizationController.GetSecurityGroupGeneralSettings(itemId, orgObj.AccountId);
if (secGroupObj == null)
continue;
permission.DisplayName = secGroupObj.DisplayName;
}
else
{
var userObj = OrganizationController.GetUserGeneralSettings(itemId, orgObj.AccountId);
if (userObj == null)
continue;
permission.DisplayName = userObj.DisplayName;
}
if (rule.Read && !rule.Write) if (rule.Read && !rule.Write)
{ {
permission.Access = "Read-Only"; permission.Access = "Read-Only";
@ -444,10 +488,12 @@ namespace WebsitePanel.EnterpriseServer
permission.Access = "Read-Write"; permission.Access = "Read-Write";
} }
permissions.Add(permission); permissions.Add(permission);
} }
return permissions.ToArray(); return permissions.ToArray();
} }
} }
} }

View file

@ -4619,5 +4619,57 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and
return result; return result;
} }
#endregion #endregion
#region Directory Browsing
public static bool GetDirectoryBrowseEnabled(int itemId, string siteId)
{
// load organization
var org = OrganizationController.GetOrganization(itemId);
if (org == null)
{
return false;
}
siteId = RemoveProtocolFromUrl(siteId);
var webServer = GetWebServer(GetWebServerServiceID(org.PackageId));
return webServer.GetDirectoryBrowseEnabled(siteId);
}
public static void SetDirectoryBrowseEnabled(int itemId, string siteId, bool enabled)
{
// load organization
var org = OrganizationController.GetOrganization(itemId);
if (org == null)
{
return;
}
siteId = RemoveProtocolFromUrl(siteId);
var webServer = GetWebServer(GetWebServerServiceID(org.PackageId));
webServer.SetDirectoryBrowseEnabled(siteId, enabled);
}
private static string RemoveProtocolFromUrl(string input)
{
if (input.Contains("//"))
{
return System.Text.RegularExpressions.Regex.Split(input, "//")[1];
}
return input;
}
#endregion
private static int GetWebServerServiceID(int packageId)
{
return PackageController.GetPackageServiceId(packageId, ResourceGroups.Web);
}
} }
} }

View file

@ -110,5 +110,11 @@ namespace WebsitePanel.EnterpriseServer
{ {
return EnterpriseStorageController.GetEnterpriseFoldersPaged(itemId, filterValue, sortColumn, startRow, maximumRows); return EnterpriseStorageController.GetEnterpriseFoldersPaged(itemId, filterValue, sortColumn, startRow, maximumRows);
} }
[WebMethod]
public SystemFile RenameEnterpriseFolder(int itemId, string oldName, string newName)
{
return EnterpriseStorageController.RenameFolder(itemId, oldName, newName);
}
} }
} }

View file

@ -625,5 +625,22 @@ namespace WebsitePanel.EnterpriseServer
} }
#endregion #endregion
#region Directory Browsing
[WebMethod]
public bool GetDirectoryBrowseEnabled(int itemId, string site)
{
return WebServerController.GetDirectoryBrowseEnabled(itemId, site);
}
[WebMethod]
public void SetDirectoryBrowseEnabled(int itemId, string site, bool enabled)
{
WebServerController.SetDirectoryBrowseEnabled(itemId, site, enabled);
}
#endregion
} }
} }

View file

@ -41,9 +41,11 @@ namespace WebsitePanel.Providers.EnterpriseStorage
SystemFile[] GetFolders(string organizationId); SystemFile[] GetFolders(string organizationId);
SystemFile GetFolder(string organizationId, string folderName); SystemFile GetFolder(string organizationId, string folderName);
void CreateFolder(string organizationId, string folder); void CreateFolder(string organizationId, string folder);
SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder);
void DeleteFolder(string organizationId, string folder); void DeleteFolder(string organizationId, string folder);
bool SetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules); bool SetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules);
WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder); WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder);
bool CheckFileServicesInstallation(); bool CheckFileServicesInstallation();
} }
} }

View file

@ -32,6 +32,8 @@ using WebsitePanel.Providers.HostedSolution;
using WebsitePanel.Providers.ResultObjects; using WebsitePanel.Providers.ResultObjects;
using WebsitePanel.Providers.WebAppGallery; using WebsitePanel.Providers.WebAppGallery;
using WebsitePanel.Providers.Common; using WebsitePanel.Providers.Common;
using Microsoft.Web.Administration;
using Microsoft.Web.Management.Server;
namespace WebsitePanel.Providers.Web namespace WebsitePanel.Providers.Web
{ {
@ -166,6 +168,8 @@ namespace WebsitePanel.Providers.Web
SSLCertificate ImportCertificate(WebSite website); SSLCertificate ImportCertificate(WebSite website);
bool CheckCertificate(WebSite webSite); bool CheckCertificate(WebSite webSite);
//Directory Browseing
bool GetDirectoryBrowseEnabled(string siteId);
void SetDirectoryBrowseEnabled(string siteId, bool enabled);
} }
} }

View file

@ -57,6 +57,14 @@
<WarningsAsErrors>618</WarningsAsErrors> <WarningsAsErrors>618</WarningsAsErrors>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Administration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Management.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.DirectoryServices" /> <Reference Include="System.DirectoryServices" />

View file

@ -112,6 +112,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
FileUtils.CreateDirectory(string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder)); FileUtils.CreateDirectory(string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder));
} }
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder)
{
var oldPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, originalFolder);
var newPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, newFolder);
FileUtils.MoveFile(oldPath,newPath);
IWebDav webdav = new WebDav(UsersDomain);
//deleting old folder rules
webdav.DeleteAllWebDavRules(organizationId, originalFolder);
return GetFolder(organizationId, newFolder);
}
public void DeleteFolder(string organizationId, string folder) public void DeleteFolder(string organizationId, string folder)
{ {
string rootPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder); string rootPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder);

View file

@ -3748,6 +3748,27 @@ namespace WebsitePanel.Providers.Web
#endregion #endregion
#region Directory Browsing
public override bool GetDirectoryBrowseEnabled(string siteId)
{
using (ServerManager srvman = webObjectsSvc.GetServerManager())
{
var enabled = dirBrowseSvc.GetDirectoryBrowseSettings(srvman, siteId)[DirectoryBrowseGlobals.Enabled];
return enabled != null ? (bool)enabled : false;
}
}
public override void SetDirectoryBrowseEnabled(string siteId, bool enabled)
{
dirBrowseSvc.SetDirectoryBrowseEnabled(siteId, enabled);
}
#endregion
public override bool IsIISInstalled() public override bool IsIISInstalled()
{ {
int value = 0; int value = 0;

View file

@ -56,6 +56,8 @@ using System.Xml.Serialization;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using WebsitePanel.Providers.Common; using WebsitePanel.Providers.Common;
using System.Collections.Specialized; using System.Collections.Specialized;
using Microsoft.Web.Administration;
using Microsoft.Web.Management.Server;
namespace WebsitePanel.Providers.Web namespace WebsitePanel.Providers.Web
{ {
@ -3412,7 +3414,28 @@ namespace WebsitePanel.Providers.Web
} }
#endregion #endregion
public virtual bool IsIISInstalled() #region Directory Browsing
public virtual bool GetDirectoryBrowseEnabled(string siteId)
{
ManagementObject objVirtDir = wmi.GetObject(String.Format("IIsWebVirtualDirSetting='{0}'", GetVirtualDirectoryPath(siteId, "")));
return objVirtDir.Properties["EnableDirBrowsing"].Value != null ? (bool)objVirtDir.Properties["EnableDirBrowsing"].Value : false;
}
public virtual void SetDirectoryBrowseEnabled(string siteId, bool enabled)
{
ManagementObject objSite = wmi.GetObject(String.Format("IIsWebServerSetting='{0}'", siteId));
WebSite site = GetSite(siteId);
site.EnableDirectoryBrowsing = enabled;
FillWmiObjectFromVirtualDirectory(objSite, site, false);
objSite.Put();
}
#endregion
public virtual bool IsIISInstalled()
{ {
int value = 0; int value = 0;
RegistryKey root = Registry.LocalMachine; RegistryKey root = Registry.LocalMachine;
@ -3737,10 +3760,5 @@ namespace WebsitePanel.Providers.Web
throw new NotSupportedException(); throw new NotSupportedException();
} }
#endregion #endregion
} }
} }

View file

@ -67,11 +67,19 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\Microsoft.Practices.ObjectBuilder.dll</HintPath> <HintPath>..\..\Lib\Microsoft.Practices.ObjectBuilder.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Administration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Deployment, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="Microsoft.Web.Deployment, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Deployment.dll</HintPath> <HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Deployment.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Management.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.PlatformInstaller, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="Microsoft.Web.PlatformInstaller, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.PlatformInstaller.dll</HintPath> <HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.PlatformInstaller.dll</HintPath>

View file

@ -30,6 +30,14 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Administration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Management.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />

View file

@ -71,16 +71,18 @@ namespace WebsitePanel.Providers.EnterpriseStorage
private System.Threading.SendOrPostCallback DeleteFolderOperationCompleted; private System.Threading.SendOrPostCallback DeleteFolderOperationCompleted;
private System.Threading.SendOrPostCallback CheckFileServicesInstallationOperationCompleted;
private System.Threading.SendOrPostCallback SetFolderWebDavRulesOperationCompleted; private System.Threading.SendOrPostCallback SetFolderWebDavRulesOperationCompleted;
private System.Threading.SendOrPostCallback GetFolderWebDavRulesOperationCompleted; private System.Threading.SendOrPostCallback GetFolderWebDavRulesOperationCompleted;
private System.Threading.SendOrPostCallback CheckFileServicesInstallationOperationCompleted;
private System.Threading.SendOrPostCallback RenameFolderOperationCompleted;
/// <remarks/> /// <remarks/>
public EnterpriseStorage() public EnterpriseStorage()
{ {
this.Url = "http://localhost:9003/EnterpriseStorage.asmx"; this.Url = "http://localhost:9004/EnterpriseStorage.asmx";
} }
/// <remarks/> /// <remarks/>
@ -95,15 +97,18 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/> /// <remarks/>
public event DeleteFolderCompletedEventHandler DeleteFolderCompleted; public event DeleteFolderCompletedEventHandler DeleteFolderCompleted;
/// <remarks/>
public event CheckFileServicesInstallationCompletedEventHandler CheckFileServicesInstallationCompleted;
/// <remarks/> /// <remarks/>
public event SetFolderWebDavRulesCompletedEventHandler SetFolderWebDavRulesCompleted; public event SetFolderWebDavRulesCompletedEventHandler SetFolderWebDavRulesCompleted;
/// <remarks/> /// <remarks/>
public event GetFolderWebDavRulesCompletedEventHandler GetFolderWebDavRulesCompleted; public event GetFolderWebDavRulesCompletedEventHandler GetFolderWebDavRulesCompleted;
/// <remarks/>
public event CheckFileServicesInstallationCompletedEventHandler CheckFileServicesInstallationCompleted;
/// <remarks/>
public event RenameFolderCompletedEventHandler RenameFolderCompleted;
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolders", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolders", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
@ -309,53 +314,6 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
} }
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckFileServicesInstallation", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public bool CheckFileServicesInstallation()
{
object[] results = this.Invoke("CheckFileServicesInstallation", new object[0]);
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginCheckFileServicesInstallation(System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CheckFileServicesInstallation", new object[0], callback, asyncState);
}
/// <remarks/>
public bool EndCheckFileServicesInstallation(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void CheckFileServicesInstallationAsync()
{
this.CheckFileServicesInstallationAsync(null);
}
/// <remarks/>
public void CheckFileServicesInstallationAsync(object userState)
{
if ((this.CheckFileServicesInstallationOperationCompleted == null))
{
this.CheckFileServicesInstallationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckFileServicesInstallationOperationCompleted);
}
this.InvokeAsync("CheckFileServicesInstallation", new object[0], this.CheckFileServicesInstallationOperationCompleted, userState);
}
private void OnCheckFileServicesInstallationOperationCompleted(object arg)
{
if ((this.CheckFileServicesInstallationCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CheckFileServicesInstallationCompleted(this, new CheckFileServicesInstallationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetFolderWebDavRules", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetFolderWebDavRules", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
@ -465,6 +423,109 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
} }
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckFileServicesInstallation", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public bool CheckFileServicesInstallation()
{
object[] results = this.Invoke("CheckFileServicesInstallation", new object[0]);
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginCheckFileServicesInstallation(System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CheckFileServicesInstallation", new object[0], callback, asyncState);
}
/// <remarks/>
public bool EndCheckFileServicesInstallation(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void CheckFileServicesInstallationAsync()
{
this.CheckFileServicesInstallationAsync(null);
}
/// <remarks/>
public void CheckFileServicesInstallationAsync(object userState)
{
if ((this.CheckFileServicesInstallationOperationCompleted == null))
{
this.CheckFileServicesInstallationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckFileServicesInstallationOperationCompleted);
}
this.InvokeAsync("CheckFileServicesInstallation", new object[0], this.CheckFileServicesInstallationOperationCompleted, userState);
}
private void OnCheckFileServicesInstallationOperationCompleted(object arg)
{
if ((this.CheckFileServicesInstallationCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CheckFileServicesInstallationCompleted(this, new CheckFileServicesInstallationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RenameFolder", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder)
{
object[] results = this.Invoke("RenameFolder", new object[] {
organizationId,
originalFolder,
newFolder});
return ((SystemFile)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginRenameFolder(string organizationId, string originalFolder, string newFolder, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("RenameFolder", new object[] {
organizationId,
originalFolder,
newFolder}, callback, asyncState);
}
/// <remarks/>
public SystemFile EndRenameFolder(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((SystemFile)(results[0]));
}
/// <remarks/>
public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder)
{
this.RenameFolderAsync(organizationId, originalFolder, newFolder, null);
}
/// <remarks/>
public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder, object userState)
{
if ((this.RenameFolderOperationCompleted == null))
{
this.RenameFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRenameFolderOperationCompleted);
}
this.InvokeAsync("RenameFolder", new object[] {
organizationId,
originalFolder,
newFolder}, this.RenameFolderOperationCompleted, userState);
}
private void OnRenameFolderOperationCompleted(object arg)
{
if ((this.RenameFolderCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.RenameFolderCompleted(this, new RenameFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/> /// <remarks/>
public new void CancelAsync(object userState) public new void CancelAsync(object userState)
{ {
@ -540,36 +601,6 @@ namespace WebsitePanel.Providers.EnterpriseStorage
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void DeleteFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); public delegate void DeleteFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void CheckFileServicesInstallationCompletedEventHandler(object sender, CheckFileServicesInstallationCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CheckFileServicesInstallationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal CheckFileServicesInstallationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public bool Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
}
}
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void SetFolderWebDavRulesCompletedEventHandler(object sender, SetFolderWebDavRulesCompletedEventArgs e); public delegate void SetFolderWebDavRulesCompletedEventHandler(object sender, SetFolderWebDavRulesCompletedEventArgs e);
@ -629,4 +660,64 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
} }
} }
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void CheckFileServicesInstallationCompletedEventHandler(object sender, CheckFileServicesInstallationCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CheckFileServicesInstallationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal CheckFileServicesInstallationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public bool Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void RenameFolderCompletedEventHandler(object sender, RenameFolderCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class RenameFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal RenameFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public SystemFile Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((SystemFile)(this.results[0]));
}
}
}
} }

View file

@ -140,6 +140,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.Ente
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.HostedSolution.Lync2013HP", "WebsitePanel.Providers.HostedSolution.Lync2013HP\WebsitePanel.Providers.HostedSolution.Lync2013HP.csproj", "{D92F6235-8E5D-47C1-B96A-A2BE40E17889}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.HostedSolution.Lync2013HP", "WebsitePanel.Providers.HostedSolution.Lync2013HP\WebsitePanel.Providers.HostedSolution.Lync2013HP.csproj", "{D92F6235-8E5D-47C1-B96A-A2BE40E17889}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.Web.WebDav", "WebsitePanel.Providers.Web.WebDav\WebsitePanel.Providers.Web.WebDav.csproj", "{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -720,6 +722,16 @@ Global
{D92F6235-8E5D-47C1-B96A-A2BE40E17889}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {D92F6235-8E5D-47C1-B96A-A2BE40E17889}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{D92F6235-8E5D-47C1-B96A-A2BE40E17889}.Release|Mixed Platforms.Build.0 = Release|Any CPU {D92F6235-8E5D-47C1-B96A-A2BE40E17889}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D92F6235-8E5D-47C1-B96A-A2BE40E17889}.Release|x86.ActiveCfg = Release|Any CPU {D92F6235-8E5D-47C1-B96A-A2BE40E17889}.Release|x86.ActiveCfg = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|x86.ActiveCfg = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|Any CPU.Build.0 = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View file

@ -170,5 +170,21 @@ namespace WebsitePanel.Server
throw; throw;
} }
} }
[WebMethod, SoapHeader("settings")]
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder)
{
try
{
Log.WriteStart("'{0}' RenameFolder", ProviderSettings.ProviderName);
return EnterpriseStorageProvider.RenameFolder(organizationId, originalFolder, newFolder);
Log.WriteEnd("'{0}' RenameFolder", ProviderSettings.ProviderName);
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' RenameFolder", ProviderSettings.ProviderName), ex);
throw;
}
}
} }
} }

View file

@ -42,6 +42,8 @@ using WebsitePanel.Server.Utils;
using WebsitePanel.Providers.ResultObjects; using WebsitePanel.Providers.ResultObjects;
using WebsitePanel.Providers.WebAppGallery; using WebsitePanel.Providers.WebAppGallery;
using WebsitePanel.Providers.Common; using WebsitePanel.Providers.Common;
using Microsoft.Web.Administration;
using Microsoft.Web.Management.Server;
namespace WebsitePanel.Server namespace WebsitePanel.Server
{ {
@ -1621,5 +1623,21 @@ namespace WebsitePanel.Server
return WebProvider.CheckCertificate(webSite); return WebProvider.CheckCertificate(webSite);
} }
#endregion #endregion
#region Directory Browsing
[WebMethod, SoapHeader("settings")]
public bool GetDirectoryBrowseEnabled(string siteId)
{
return WebProvider.GetDirectoryBrowseEnabled(siteId);
}
[WebMethod, SoapHeader("settings")]
public void SetDirectoryBrowseEnabled(string siteId, bool enabled)
{
WebProvider.SetDirectoryBrowseEnabled(siteId, enabled);
}
#endregion
} }
} }

View file

@ -47,11 +47,19 @@
<WarningsAsErrors>618</WarningsAsErrors> <WarningsAsErrors>618</WarningsAsErrors>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Administration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Deployment, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="Microsoft.Web.Deployment, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Deployment.dll</HintPath> <HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Deployment.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Management.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.PlatformInstaller, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="Microsoft.Web.PlatformInstaller, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.PlatformInstaller.dll</HintPath> <HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.PlatformInstaller.dll</HintPath>

View file

@ -30,7 +30,7 @@
<tr> <tr>
<td class="FormLabel150"><asp:Localize ID="locFolderName" runat="server" meta:resourcekey="locFolderName" Text="Folder Name:"></asp:Localize></td> <td class="FormLabel150"><asp:Localize ID="locFolderName" runat="server" meta:resourcekey="locFolderName" Text="Folder Name:"></asp:Localize></td>
<td> <td>
<asp:TextBox ID="txtFolderName" runat="server" CssClass="HugeTextBox200" ReadOnly="true"></asp:TextBox> <asp:TextBox ID="txtFolderName" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireFolderName" runat="server" meta:resourcekey="valRequireFolderName" ControlToValidate="txtFolderName" <asp:RequiredFieldValidator ID="valRequireFolderName" runat="server" meta:resourcekey="valRequireFolderName" ControlToValidate="txtFolderName"
ErrorMessage="Enter Folder Name" ValidationGroup="EditFolder" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator> ErrorMessage="Enter Folder Name" ValidationGroup="EditFolder" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
<br /> <br />
@ -41,6 +41,13 @@
<td class="FormLabel150"><asp:Localize ID="locFolderUrl" runat="server" meta:resourcekey="locFolderUrl" Text="Folder Url:"></asp:Localize></td> <td class="FormLabel150"><asp:Localize ID="locFolderUrl" runat="server" meta:resourcekey="locFolderUrl" Text="Folder Url:"></asp:Localize></td>
<td><asp:Label runat="server" ID="lblFolderUrl" /></td> <td><asp:Label runat="server" ID="lblFolderUrl" /></td>
</tr> </tr>
<tr><td>&nbsp;</td></tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locDirectoryBrowsing" runat="server" meta:resourcekey="locDirectoryBrowsing" Text="Enable Directory Browsing:"></asp:Localize></td>
<td>
<asp:CheckBox id="chkDirectoryBrowsing" runat="server"></asp:CheckBox>
</td>
</tr>
<tr><td>&nbsp;</td></tr> <tr><td>&nbsp;</td></tr>
<tr> <tr>
<td colspan="2"> <td colspan="2">
@ -50,14 +57,7 @@
</fieldset> </fieldset>
</tr> </tr>
<tr><td>&nbsp;</td></tr> <tr><td>&nbsp;</td></tr>
<tr>
<td class="FormLabel150" colspan="2"><asp:Localize ID="locNotes" runat="server" meta:resourcekey="locNotes" Text="Notes:"></asp:Localize></td>
</tr>
<tr>
<td colspan="2">
<asp:TextBox ID="txtNotes" runat="server" CssClass="TextBox200" Rows="4" TextMode="MultiLine"></asp:TextBox>
</td>
</tr>
</table> </table>
<div class="FormFooterClean"> <div class="FormFooterClean">

View file

@ -72,9 +72,10 @@ namespace WebsitePanel.Portal.ExchangeServer
var esPermissions = ES.Services.EnterpriseStorage.GetEnterpriseFolderPermissions(PanelRequest.ItemID,folder.Name); var esPermissions = ES.Services.EnterpriseStorage.GetEnterpriseFolderPermissions(PanelRequest.ItemID,folder.Name);
chkDirectoryBrowsing.Checked = ES.Services.WebServers.GetDirectoryBrowseEnabled(PanelRequest.ItemID, folder.Url);
permissions.SetPermissions(esPermissions); permissions.SetPermissions(esPermissions);
txtNotes.Text = folder.GetValue<string>("Notes");
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -89,11 +90,33 @@ namespace WebsitePanel.Portal.ExchangeServer
try try
{ {
bool redirectNeeded = false;
litFolderName.Text = txtFolderName.Text; litFolderName.Text = txtFolderName.Text;
SystemFile folder = ES.Services.EnterpriseStorage.GetEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID); // SystemFile folder = ES.Services.EnterpriseStorage.GetEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID);
SystemFile folder = new SystemFile();
ES.Services.EnterpriseStorage.SetEnterpriseFolderPermissions(PanelRequest.ItemID, folder.Name, permissions.GetPemissions()); if (PanelRequest.FolderID != txtFolderName.Text)
{
if (txtFolderName.Text.Contains("\\"))
{
throw new Exception("Wrong file name");
}
folder = ES.Services.EnterpriseStorage.RenameEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID, txtFolderName.Text);
redirectNeeded = true;
}
ES.Services.EnterpriseStorage.SetEnterpriseFolderPermissions(PanelRequest.ItemID, redirectNeeded ? folder.Name : PanelRequest.FolderID, permissions.GetPemissions());
ES.Services.WebServers.SetDirectoryBrowseEnabled(PanelRequest.ItemID, redirectNeeded ? folder.Url : lblFolderUrl.Text, chkDirectoryBrowsing.Checked);
if (redirectNeeded)
{
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folders",
"ItemID=" + PanelRequest.ItemID));
}
messageBox.ShowSuccessMessage("ENTERPRISE_STORAGE_UPDATE_FOLDER_SETTINGS"); messageBox.ShowSuccessMessage("ENTERPRISE_STORAGE_UPDATE_FOLDER_SETTINGS");
} }

View file

@ -120,6 +120,24 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Label lblFolderUrl; protected global::System.Web.UI.WebControls.Label lblFolderUrl;
/// <summary>
/// locDirectoryBrowsing control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locDirectoryBrowsing;
/// <summary>
/// chkDirectoryBrowsing control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkDirectoryBrowsing;
/// <summary> /// <summary>
/// PermissionsPanel control. /// PermissionsPanel control.
/// </summary> /// </summary>
@ -147,24 +165,6 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EnterpriseStoragePermissions permissions; protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EnterpriseStoragePermissions permissions;
/// <summary>
/// locNotes control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locNotes;
/// <summary>
/// txtNotes control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtNotes;
/// <summary> /// <summary>
/// btnSave control. /// btnSave control.
/// </summary> /// </summary>

View file

@ -70,10 +70,10 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
int folderAvailable = foldersQuota.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageFolders - tenantStats.CreatedEnterpriseStorageFolders; int folderAvailable = foldersQuota.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageFolders - tenantStats.CreatedEnterpriseStorageFolders;
if (folderAvailable <= 0) //if (folderAvailable <= 0)
{ //{
btnAddFolder.Enabled = false; // btnAddFolder.Enabled = false;
} //}
} }
} }

View file

@ -162,6 +162,9 @@
<data name="headerAddAccounts.Text" xml:space="preserve"> <data name="headerAddAccounts.Text" xml:space="preserve">
<value>Organization Accounts</value> <value>Organization Accounts</value>
</data> </data>
<data name="locDirectoryBrowsing" xml:space="preserve">
<value>Enable Directory Browsing:</value>
</data>
<data name="locIncludeSearch.Text" xml:space="preserve"> <data name="locIncludeSearch.Text" xml:space="preserve">
<value>Include in search:</value> <value>Include in search:</value>
</data> </data>

View file

@ -24,7 +24,7 @@
<ItemStyle Width="60%" Wrap="false"> <ItemStyle Width="60%" Wrap="false">
</ItemStyle> </ItemStyle>
<ItemTemplate> <ItemTemplate>
<asp:Literal ID="litAccount" runat="server" Text='<%# Eval("Account") %>'></asp:Literal> <asp:Literal ID="litAccount" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
</ItemTemplate> </ItemTemplate>
</asp:TemplateField> </asp:TemplateField>
<asp:TemplateField meta:resourcekey="gvPermissionsAccess" HeaderText="gvPermissionsAccess"> <asp:TemplateField meta:resourcekey="gvPermissionsAccess" HeaderText="gvPermissionsAccess">

View file

@ -100,13 +100,15 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
foreach (ExchangeAccount account in selectedAccounts) foreach (ExchangeAccount account in selectedAccounts)
{ {
permissions.Add(new ESPermission permissions.Add(new ESPermission
{ {
Account = account.AccountName, Account = account.AccountName,
Access = "Read-Only", DisplayName = account.DisplayName,
}); Access = "Read-Only",
});
} }
BindAccounts(permissions.ToArray(), true); BindAccounts(permissions.ToArray(), true);
} }
public string GetAccountImage(int accountTypeId) public string GetAccountImage(int accountTypeId)
@ -207,6 +209,7 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
ESPermission permission = new ESPermission(); ESPermission permission = new ESPermission();
permission.Account = (string)gvPermissions.DataKeys[i][0]; permission.Account = (string)gvPermissions.DataKeys[i][0];
permission.Access = ((Literal)row.FindControl("litAccess")).Text; permission.Access = ((Literal)row.FindControl("litAccess")).Text;
permission.DisplayName = ((Literal)row.FindControl("litAccount")).Text;
if (state == SelectedState.All || if (state == SelectedState.All ||
(state == SelectedState.Selected && chkSelect.Checked) || (state == SelectedState.Selected && chkSelect.Checked) ||
@ -230,13 +233,15 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
if (chkSelect.Checked) if (chkSelect.Checked)
{ {
accounts.Add(new ExchangeAccount accounts.Add(new ExchangeAccount
{ {
AccountName = (string)gvPopupAccounts.DataKeys[i][0] AccountName = (string)gvPopupAccounts.DataKeys[i][0],
}); DisplayName = ((Literal)row.FindControl("litDisplayName")).Text
});
} }
} }
return accounts; return accounts;
} }
protected void cmdSearch_Click(object sender, ImageClickEventArgs e) protected void cmdSearch_Click(object sender, ImageClickEventArgs e)