This commit is contained in:
dev_amdtel 2014-03-13 14:10:34 +04:00
commit 1410f1b39c
40 changed files with 865 additions and 268 deletions

View file

@ -304,20 +304,26 @@ namespace WebsitePanel.EnterpriseServer
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CreateEnterpriseFolder", 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/CreateEnterpriseFolder", 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 ResultObject CreateEnterpriseFolder(int itemId, string folderName) public ResultObject CreateEnterpriseFolder(int itemId, string folderName, int quota, QuotaType quotaType, bool addDefaultGroup)
{ {
object[] results = this.Invoke("CreateEnterpriseFolder", new object[] { object[] results = this.Invoke("CreateEnterpriseFolder", new object[] {
itemId, itemId,
folderName}); folderName,
quota,
quotaType,
addDefaultGroup});
return ((ResultObject)(results[0])); return ((ResultObject)(results[0]));
} }
/// <remarks/> /// <remarks/>
public System.IAsyncResult BeginCreateEnterpriseFolder(int itemId, string folderName, System.AsyncCallback callback, object asyncState) public System.IAsyncResult BeginCreateEnterpriseFolder(int itemId, string folderName, int quota, QuotaType quotaType, bool addDefaultGroup, System.AsyncCallback callback, object asyncState)
{ {
return this.BeginInvoke("CreateEnterpriseFolder", new object[] { return this.BeginInvoke("CreateEnterpriseFolder", new object[] {
itemId, itemId,
folderName}, callback, asyncState); folderName,
quota,
quotaType,
addDefaultGroup}, callback, asyncState);
} }
/// <remarks/> /// <remarks/>
@ -328,13 +334,13 @@ namespace WebsitePanel.EnterpriseServer
} }
/// <remarks/> /// <remarks/>
public void CreateEnterpriseFolderAsync(int itemId, string folderName) public void CreateEnterpriseFolderAsync(int itemId, string folderName, int quota, QuotaType quotaType, bool addDefaultGroup)
{ {
this.CreateEnterpriseFolderAsync(itemId, folderName, null); this.CreateEnterpriseFolderAsync(itemId, folderName, quota, quotaType, addDefaultGroup, null);
} }
/// <remarks/> /// <remarks/>
public void CreateEnterpriseFolderAsync(int itemId, string folderName, object userState) public void CreateEnterpriseFolderAsync(int itemId, string folderName, int quota, QuotaType quotaType, bool addDefaultGroup, object userState)
{ {
if ((this.CreateEnterpriseFolderOperationCompleted == null)) if ((this.CreateEnterpriseFolderOperationCompleted == null))
{ {
@ -342,7 +348,10 @@ namespace WebsitePanel.EnterpriseServer
} }
this.InvokeAsync("CreateEnterpriseFolder", new object[] { this.InvokeAsync("CreateEnterpriseFolder", new object[] {
itemId, itemId,
folderName}, this.CreateEnterpriseFolderOperationCompleted, userState); folderName,
quota,
quotaType,
addDefaultGroup}, this.CreateEnterpriseFolderOperationCompleted, userState);
} }
private void OnCreateEnterpriseFolderOperationCompleted(object arg) private void OnCreateEnterpriseFolderOperationCompleted(object arg)

View file

@ -3098,6 +3098,17 @@ namespace WebsitePanel.EnterpriseServer
); );
} }
public static IDataReader GetOrganizationGroupsByDisplayName(int itemId, string displayName)
{
return SqlHelper.ExecuteReader(
ConnectionString,
CommandType.StoredProcedure,
"GetOrganizationGroupsByDisplayName",
new SqlParameter("@ItemID", itemId),
new SqlParameter("@DisplayName", displayName)
);
}
public static IDataReader SearchOrganizationAccounts(int actorId, int itemId, public static IDataReader SearchOrganizationAccounts(int actorId, int itemId,
string filterColumn, string filterValue, string sortColumn, bool includeMailboxes) string filterColumn, string filterValue, string sortColumn, bool includeMailboxes)
{ {
@ -4164,7 +4175,7 @@ namespace WebsitePanel.EnterpriseServer
#region Enterprise Storage #region Enterprise Storage
public static int AddEntepriseFolder(int itemId, string folderName) public static int AddEntepriseFolder(int itemId, string folderName, int folderQuota, string locationDrive, string homeFolder, string domain)
{ {
SqlParameter prmId = new SqlParameter("@FolderID", SqlDbType.Int); SqlParameter prmId = new SqlParameter("@FolderID", SqlDbType.Int);
prmId.Direction = ParameterDirection.Output; prmId.Direction = ParameterDirection.Output;
@ -4175,7 +4186,12 @@ namespace WebsitePanel.EnterpriseServer
"AddEnterpriseFolder", "AddEnterpriseFolder",
prmId, prmId,
new SqlParameter("@ItemID", itemId), new SqlParameter("@ItemID", itemId),
new SqlParameter("@FolderName", folderName)); new SqlParameter("@FolderName", folderName),
new SqlParameter("@FolderQuota", folderQuota),
new SqlParameter("@LocationDrive", locationDrive),
new SqlParameter("@HomeFolder", homeFolder),
new SqlParameter("@Domain", domain)
);
// read identity // read identity
return Convert.ToInt32(prmId.Value); return Convert.ToInt32(prmId.Value);
@ -4203,6 +4219,27 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@FolderQuota", folderQuota)); new SqlParameter("@FolderQuota", folderQuota));
} }
public static IDataReader GetEnterpriseFolders(int itemId)
{
return SqlHelper.ExecuteReader(
ConnectionString,
CommandType.StoredProcedure,
"GetEnterpriseFolders",
new SqlParameter("@ItemID", itemId)
);
}
public static IDataReader GetEnterpriseFolder(int itemId, string folderName)
{
return SqlHelper.ExecuteReader(
ConnectionString,
CommandType.StoredProcedure,
"GetEnterpriseFolder",
new SqlParameter("@ItemID", itemId),
new SqlParameter("@FolderName", folderName)
);
}
#endregion #endregion
} }
} }

View file

@ -87,12 +87,12 @@ namespace WebsitePanel.EnterpriseServer
public static ResultObject CreateFolder(int itemId) public static ResultObject CreateFolder(int itemId)
{ {
return CreateFolder(itemId, string.Empty); return CreateFolder(itemId, string.Empty, 0, QuotaType.Soft, false);
} }
public static ResultObject CreateFolder(int itemId, string folderName) public static ResultObject CreateFolder(int itemId, string folderName, int quota, QuotaType quotaType, bool addDefaultGroup)
{ {
return CreateFolderInternal(itemId, folderName); return CreateFolderInternal(itemId, folderName, quota, quotaType, addDefaultGroup);
} }
public static ResultObject DeleteFolder(int itemId) public static ResultObject DeleteFolder(int itemId)
@ -354,7 +354,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(serviceId); EnterpriseStorage es = GetEnterpriseStorage(serviceId);
return es.GetFolders(org.OrganizationId); var webDavSettings = ObjectUtils.CreateListFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolders(itemId)).ToArray();
return es.GetFolders(org.OrganizationId, webDavSettings);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -375,7 +378,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
return es.GetFolder(org.OrganizationId, folderName); var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folderName));
return es.GetFolder(org.OrganizationId, folderName, webDavSetting);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -396,9 +402,12 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
if (es.GetFolder(org.OrganizationId, newFolder) == null) var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, oldFolder));
if (webDavSetting == null)
{ {
SystemFile folder = es.RenameFolder(org.OrganizationId, oldFolder, newFolder); SystemFile folder = es.RenameFolder(org.OrganizationId, oldFolder, newFolder, webDavSetting);
DataProvider.UpdateEnterpriseFolder(itemId, oldFolder, newFolder, folder.FRSMQuotaGB); DataProvider.UpdateEnterpriseFolder(itemId, oldFolder, newFolder, folder.FRSMQuotaGB);
@ -413,7 +422,7 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
protected static ResultObject CreateFolderInternal(int itemId, string folderName) protected static ResultObject CreateFolderInternal(int itemId, string folderName, int quota, QuotaType quotaType, bool addDefaultGroup)
{ {
ResultObject result = TaskManager.StartResultTask<ResultObject>("ENTERPRISE_STORAGE", "CREATE_FOLDER"); ResultObject result = TaskManager.StartResultTask<ResultObject>("ENTERPRISE_STORAGE", "CREATE_FOLDER");
@ -430,11 +439,56 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
if (es.GetFolder(org.OrganizationId, folderName) == null) var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
{ DataProvider.GetEnterpriseFolder(itemId, folderName));
es.CreateFolder(org.OrganizationId, folderName);
DataProvider.AddEntepriseFolder(itemId, folderName); if (webDavSetting == null)
{
int esId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.EnterpriseStorage);
StringDictionary esSesstings = ServerController.GetServiceSettings(esId);
var setting = ObjectUtils.CreateListFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolders(itemId)).LastOrDefault(x => !x.IsEmpty())
?? new WebDavSetting(esSesstings["LocationDrive"], esSesstings["UsersHome"], esSesstings["UsersDomain"]);
es.CreateFolder(org.OrganizationId, folderName, setting);
DataProvider.AddEntepriseFolder(itemId, folderName, quota,
setting.LocationDrive, setting.HomeFolder, setting.Domain);
SetFolderQuota(org.PackageId, org.OrganizationId, folderName, quota, quotaType, setting);
DataProvider.UpdateEnterpriseFolder(itemId, folderName, folderName, quota);
if (addDefaultGroup)
{
var groupName = string.Format("{0} Folder Users", folderName);
var account = ObjectUtils.CreateListFromDataReader<ExchangeAccount>(
DataProvider.GetOrganizationGroupsByDisplayName(itemId, groupName)).FirstOrDefault();
var accountId = account == null
? OrganizationController.CreateSecurityGroup(itemId, groupName)
: account.AccountId;
var securityGroup = OrganizationController.GetSecurityGroupGeneralSettings(itemId, accountId);
var rules = new List<WebDavFolderRule>() {
new WebDavFolderRule
{
Roles = new List<string>() { securityGroup.AccountName },
Read = true,
Write = true,
Source = true,
Pathes = new List<string>() { "*" }
}
};
es.SetFolderWebDavRules(org.OrganizationId, folderName, webDavSetting, rules.ToArray());
}
} }
else else
{ {
@ -475,14 +529,13 @@ namespace WebsitePanel.EnterpriseServer
return; return;
} }
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
es.CreateFolder(org.OrganizationId, folderName);
// check if it's not root folder // check if it's not root folder
if (!string.IsNullOrEmpty(folderName)) if (!string.IsNullOrEmpty(folderName))
{ {
SetFolderQuota(org.PackageId, org.OrganizationId, folderName, quota, quotaType); var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folderName));
SetFolderQuota(org.PackageId, org.OrganizationId, folderName, quota, quotaType, webDavSetting);
DataProvider.UpdateEnterpriseFolder(itemId, folderName, folderName, quota); DataProvider.UpdateEnterpriseFolder(itemId, folderName, folderName, quota);
} }
@ -519,7 +572,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
es.DeleteFolder(org.OrganizationId, folderName); var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folderName));
es.DeleteFolder(org.OrganizationId, folderName, webDavSetting);
DataProvider.DeleteEnterpriseFolder(itemId, folderName); DataProvider.DeleteEnterpriseFolder(itemId, folderName);
} }
@ -562,21 +618,23 @@ namespace WebsitePanel.EnterpriseServer
DataProvider.SearchExchangeAccountsByTypes(SecurityContext.User.UserId, itemId, DataProvider.SearchExchangeAccountsByTypes(SecurityContext.User.UserId, itemId,
accountTypes, filterColumn, filterValue, sortColumn)); accountTypes, filterColumn, filterValue, sortColumn));
return tmpAccounts;
List<ExchangeAccount> exAccounts = new List<ExchangeAccount>(); // on large lists is very slow
foreach (ExchangeAccount tmpAccount in tmpAccounts.ToArray()) //List<ExchangeAccount> exAccounts = new List<ExchangeAccount>();
{
if (tmpAccount.AccountType == ExchangeAccountType.SecurityGroup || tmpAccount.AccountType == ExchangeAccountType.DefaultSecurityGroup
? OrganizationController.GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) == null
: OrganizationController.GetUserGeneralSettings(itemId, tmpAccount.AccountId) == null)
continue;
exAccounts.Add(tmpAccount); //foreach (ExchangeAccount tmpAccount in tmpAccounts.ToArray())
} //{
// if (tmpAccount.AccountType == ExchangeAccountType.SecurityGroup || tmpAccount.AccountType == ExchangeAccountType.DefaultSecurityGroup
// ? OrganizationController.GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) == null
// : OrganizationController.GetUserGeneralSettings(itemId, tmpAccount.AccountId) == null)
// continue;
return exAccounts; // exAccounts.Add(tmpAccount);
//}
//return exAccounts;
} }
protected static SystemFilesPaged GetEnterpriseFoldersPagedInternal(int itemId, string filterValue, string sortColumn, int startRow, int maximumRows) protected static SystemFilesPaged GetEnterpriseFoldersPagedInternal(int itemId, string filterValue, string sortColumn, int startRow, int maximumRows)
@ -595,7 +653,11 @@ namespace WebsitePanel.EnterpriseServer
if (CheckUsersDomainExistsInternal(itemId, org.PackageId)) if (CheckUsersDomainExistsInternal(itemId, org.PackageId))
{ {
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
List<SystemFile> folders = es.GetFolders(org.OrganizationId).Where(x => x.Name.Contains(filterValue)).ToList();
var webDavSettings = ObjectUtils.CreateListFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolders(itemId)).ToArray();
List<SystemFile> folders = es.GetFolders(org.OrganizationId, webDavSettings).Where(x => x.Name.Contains(filterValue)).ToList();
switch (sortColumn) switch (sortColumn)
{ {
@ -720,7 +782,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
es.SetFolderWebDavRules(org.OrganizationId, folder, rules); var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folder));
es.SetFolderWebDavRules(org.OrganizationId, folder, webDavSetting, rules);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -754,7 +819,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
return es.GetFolderWebDavRules(org.OrganizationId, folder); var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folder));
return es.GetFolderWebDavRules(org.OrganizationId, folder, webDavSetting);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -831,15 +899,17 @@ namespace WebsitePanel.EnterpriseServer
if (permission.Access.ToLower().Contains("read-only")) if (permission.Access.ToLower().Contains("read-only"))
{ {
rule.Read = true; rule.Read = true;
rule.Source = true;
} }
if (permission.Access.ToLower().Contains("read-write")) if (permission.Access.ToLower().Contains("read-write"))
{ {
rule.Write = true; rule.Write = true;
rule.Read = true; rule.Read = true;
rule.Source = true;
} }
rule.Source = true;
rule.Pathes.Add("*"); rule.Pathes.Add("*");
rules.Add(rule); rules.Add(rule);
@ -901,8 +971,11 @@ namespace WebsitePanel.EnterpriseServer
} }
private static void SetFolderQuota(int packageId, string orgId, string folderName, int quotaSize, QuotaType quotaType) private static void SetFolderQuota(int packageId, string orgId, string folderName, int quotaSize, QuotaType quotaType, WebDavSetting setting)
{ {
if (quotaSize == 0)
return;
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
if (accountCheck < 0) if (accountCheck < 0)
return; return;
@ -915,13 +988,16 @@ namespace WebsitePanel.EnterpriseServer
if (esServiceId != 0) if (esServiceId != 0)
{ {
StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId); var curSetting = setting;
string usersHome = esSesstings["UsersHome"]; if (curSetting == null || curSetting.IsEmpty())
string usersDomain = esSesstings["UsersDomain"]; {
string locationDrive = esSesstings["LocationDrive"]; StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
var orgFolder = Path.Combine(usersHome, orgId, folderName); curSetting = new WebDavSetting(esSesstings["LocationDrive"], esSesstings["UsersHome"], esSesstings["UsersDomain"]);
}
var orgFolder = Path.Combine(curSetting.HomeFolder, orgId, folderName);
var os = GetOS(packageId); var os = GetOS(packageId);
@ -946,7 +1022,7 @@ namespace WebsitePanel.EnterpriseServer
#endregion #endregion
os.SetQuotaLimitOnFolder(orgFolder, locationDrive, quotaType, quotaSize.ToString() + unit, 0, String.Empty, String.Empty); os.SetQuotaLimitOnFolder(orgFolder, curSetting.LocationDrive, quotaType, quotaSize.ToString() + unit, 0, String.Empty, String.Empty);
} }
catch (Exception ex) catch (Exception ex)
{ {

View file

@ -2867,33 +2867,36 @@ namespace WebsitePanel.EnterpriseServer
DataProvider.SearchExchangeAccountsByTypes(SecurityContext.User.UserId, itemId, DataProvider.SearchExchangeAccountsByTypes(SecurityContext.User.UserId, itemId,
accountTypes, filterColumn, filterValue, sortColumn)); accountTypes, filterColumn, filterValue, sortColumn));
return tmpAccounts;
List<ExchangeAccount> accounts = new List<ExchangeAccount>(); // on large lists is very slow
foreach (ExchangeAccount tmpAccount in tmpAccounts.ToArray()) //List<ExchangeAccount> accounts = new List<ExchangeAccount>();
{
bool bSuccess = false;
switch (tmpAccount.AccountType) //foreach (ExchangeAccount tmpAccount in tmpAccounts.ToArray())
{ //{
case ExchangeAccountType.SecurityGroup: // bool bSuccess = false;
bSuccess = GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) != null;
break;
case ExchangeAccountType.DistributionList:
bSuccess = ExchangeServerController.GetDistributionListGeneralSettings(itemId, tmpAccount.AccountId) != null;
break;
default:
bSuccess = GetUserGeneralSettings(itemId, tmpAccount.AccountId) != null;
break;
}
if (bSuccess) // switch (tmpAccount.AccountType)
{ // {
accounts.Add(tmpAccount); // case ExchangeAccountType.SecurityGroup:
} // bSuccess = GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) != null;
} // break;
// case ExchangeAccountType.DistributionList:
// bSuccess = ExchangeServerController.GetDistributionListGeneralSettings(itemId, tmpAccount.AccountId) != null;
// break;
// default:
// bSuccess = GetUserGeneralSettings(itemId, tmpAccount.AccountId) != null;
// break;
// }
return accounts; // if (bSuccess)
// {
// accounts.Add(tmpAccount);
// }
//}
//return accounts;
} }
} }
} }

View file

@ -76,9 +76,9 @@ namespace WebsitePanel.EnterpriseServer
} }
[WebMethod] [WebMethod]
public ResultObject CreateEnterpriseFolder(int itemId, string folderName) public ResultObject CreateEnterpriseFolder(int itemId, string folderName, int quota, QuotaType quotaType, bool addDefaultGroup)
{ {
return EnterpriseStorageController.CreateFolder(itemId, folderName); return EnterpriseStorageController.CreateFolder(itemId, folderName, quota, quotaType, addDefaultGroup);
} }
[WebMethod] [WebMethod]

View file

@ -38,13 +38,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// </summary> /// </summary>
public interface IEnterpriseStorage public interface IEnterpriseStorage
{ {
SystemFile[] GetFolders(string organizationId); SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings);
SystemFile GetFolder(string organizationId, string folderName); SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting);
void CreateFolder(string organizationId, string folder); void CreateFolder(string organizationId, string folder, WebDavSetting setting);
SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder); SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting);
void DeleteFolder(string organizationId, string folder); void DeleteFolder(string organizationId, string folder, WebDavSetting setting);
bool SetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules); bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules);
WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder); WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting);
bool CheckFileServicesInstallation(); bool CheckFileServicesInstallation();
} }

View file

@ -6,7 +6,6 @@ using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Providers.Web namespace WebsitePanel.Providers.Web
{ {
public enum WebDavAccess public enum WebDavAccess
{ {
Read = 1, Read = 1,

View file

@ -0,0 +1,56 @@
// 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WebsitePanel.Providers.Web
{
public class WebDavSetting
{
public string LocationDrive { get; set; }
public string HomeFolder { get; set; }
public string Domain { get; set; }
public WebDavSetting() { }
public WebDavSetting(string locationDrive, string homeFolder, string domain)
{
LocationDrive = locationDrive;
HomeFolder = homeFolder;
Domain = domain;
}
public bool IsEmpty()
{
return string.IsNullOrEmpty(LocationDrive) && string.IsNullOrEmpty(HomeFolder) && string.IsNullOrEmpty(Domain);
}
}
}

View file

@ -332,6 +332,7 @@
<Compile Include="Web\SharedSSLFolder.cs" /> <Compile Include="Web\SharedSSLFolder.cs" />
<Compile Include="Web\SSLCertificate.cs" /> <Compile Include="Web\SSLCertificate.cs" />
<Compile Include="Web\WebDavFolderRule.cs" /> <Compile Include="Web\WebDavFolderRule.cs" />
<Compile Include="Web\WebDavSetting.cs" />
<Compile Include="Web\WebFolder.cs" /> <Compile Include="Web\WebFolder.cs" />
<Compile Include="Web\WebGroup.cs" /> <Compile Include="Web\WebGroup.cs" />
<Compile Include="Web\WebSite.cs" /> <Compile Include="Web\WebSite.cs" />

View file

@ -62,55 +62,66 @@ namespace WebsitePanel.Providers.EnterpriseStorage
#endregion #endregion
#region Folders #region Folders
public SystemFile[] GetFolders(string organizationId) public SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings)
{ {
ArrayList items = new ArrayList(); ArrayList items = new ArrayList();
string rootPath = string.Format("{0}:\\{1}\\{2}", LocationDrive, UsersHome, organizationId);
var windows = new WebsitePanel.Providers.OS.Windows2012(); var webDavSettings = GetWebDavSettings(settings);
if (Directory.Exists(rootPath)) foreach (var setting in webDavSettings)
{ {
DirectoryInfo root = new DirectoryInfo(rootPath); string rootPath = string.Format("{0}:\\{1}\\{2}", setting.LocationDrive, setting.HomeFolder, organizationId);
IWebDav webdav = new Web.WebDav(UsersDomain);
// get directories var windows = new WebsitePanel.Providers.OS.Windows2012();
DirectoryInfo[] dirs = root.GetDirectories();
foreach (DirectoryInfo dir in dirs) if (Directory.Exists(rootPath))
{ {
string fullName = System.IO.Path.Combine(rootPath, dir.Name); DirectoryInfo root = new DirectoryInfo(rootPath);
IWebDav webdav = new Web.WebDav(setting);
SystemFile folder = new SystemFile(); // get directories
DirectoryInfo[] dirs = root.GetDirectories();
var quotas = windows.GetQuotasForOrganization(rootPath, string.Empty, string.Empty);
folder.Name = dir.Name; foreach (DirectoryInfo dir in dirs)
folder.FullName = dir.FullName;
folder.IsDirectory = true;
Quota quota = windows.GetQuotaOnFolder(fullName, string.Empty, string.Empty);
folder.Size = quota.Usage;
if (folder.Size == -1)
{ {
folder.Size = FileUtils.BytesToMb(FileUtils.CalculateFolderSize(dir.FullName)); string fullName = System.IO.Path.Combine(rootPath, dir.Name);
SystemFile folder = new SystemFile();
folder.Name = dir.Name;
folder.FullName = dir.FullName;
folder.IsDirectory = true;
if (quotas.ContainsKey(fullName))
{
folder.Size = quotas[fullName].Usage;
if (folder.Size == -1)
{
folder.Size = FileUtils.BytesToMb(FileUtils.CalculateFolderSize(dir.FullName));
}
folder.Url = string.Format("https://{0}/{1}/{2}", setting.Domain, organizationId, dir.Name);
folder.Rules = webdav.GetFolderWebDavRules(organizationId, dir.Name);
folder.FRSMQuotaMB = quotas[fullName].Size;
folder.FRSMQuotaGB = windows.ConvertMegaBytesToGB(folder.FRSMQuotaMB);
folder.FsrmQuotaType = quotas[fullName].QuotaType;
items.Add(folder);
}
} }
folder.Url = string.Format("https://{0}/{1}/{2}", UsersDomain, organizationId, dir.Name);
folder.Rules = webdav.GetFolderWebDavRules(organizationId, dir.Name);
folder.FRSMQuotaMB = quota.Size;
folder.FRSMQuotaGB = windows.ConvertMegaBytesToGB(folder.FRSMQuotaMB);
folder.FsrmQuotaType = quota.QuotaType;
items.Add(folder);
} }
} }
return (SystemFile[])items.ToArray(typeof(SystemFile)); return (SystemFile[])items.ToArray(typeof(SystemFile));
} }
public SystemFile GetFolder(string organizationId, string folderName) public SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting)
{ {
string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folderName); var webDavSetting = GetWebDavSetting(setting);
string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folderName);
SystemFile folder = null; SystemFile folder = null;
var windows = new WebsitePanel.Providers.OS.Windows2012(); var windows = new WebsitePanel.Providers.OS.Windows2012();
@ -134,8 +145,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
folder.Size = FileUtils.BytesToMb(FileUtils.CalculateFolderSize(root.FullName)); folder.Size = FileUtils.BytesToMb(FileUtils.CalculateFolderSize(root.FullName));
} }
folder.Url = string.Format("https://{0}/{1}/{2}", UsersDomain, organizationId, folderName); folder.Url = string.Format("https://{0}/{1}/{2}", webDavSetting.Domain, organizationId, folderName);
folder.Rules = GetFolderWebDavRules(organizationId, folderName); folder.Rules = GetFolderWebDavRules(organizationId, folderName, webDavSetting);
folder.FRSMQuotaMB = quota.Size; folder.FRSMQuotaMB = quota.Size;
folder.FRSMQuotaGB = windows.ConvertMegaBytesToGB(folder.FRSMQuotaMB); folder.FRSMQuotaGB = windows.ConvertMegaBytesToGB(folder.FRSMQuotaMB);
folder.FsrmQuotaType = quota.QuotaType; folder.FsrmQuotaType = quota.QuotaType;
@ -144,29 +155,35 @@ namespace WebsitePanel.Providers.EnterpriseStorage
return folder; return folder;
} }
public void CreateFolder(string organizationId, string folder) public void CreateFolder(string organizationId, string folder, WebDavSetting setting)
{ {
FileUtils.CreateDirectory(string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder)); var webDavSetting = GetWebDavSetting(setting);
FileUtils.CreateDirectory(string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folder));
} }
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder) public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
{ {
var oldPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, originalFolder); var webDavSetting = GetWebDavSetting(setting);
var newPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, newFolder);
var oldPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, originalFolder);
var newPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, newFolder);
FileUtils.MoveFile(oldPath,newPath); FileUtils.MoveFile(oldPath,newPath);
IWebDav webdav = new WebDav(UsersDomain); IWebDav webdav = new WebDav(webDavSetting);
//deleting old folder rules //deleting old folder rules
webdav.DeleteAllWebDavRules(organizationId, originalFolder); webdav.DeleteAllWebDavRules(organizationId, originalFolder);
return GetFolder(organizationId, newFolder); return GetFolder(organizationId, newFolder, webDavSetting);
} }
public void DeleteFolder(string organizationId, string folder) public void DeleteFolder(string organizationId, string folder, WebDavSetting setting)
{ {
string rootPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder); var webDavSetting = GetWebDavSetting(setting);
string rootPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folder);
DirectoryInfo treeRoot = new DirectoryInfo(rootPath); DirectoryInfo treeRoot = new DirectoryInfo(rootPath);
@ -176,7 +193,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
while (dirs.Length > 0) while (dirs.Length > 0)
{ {
foreach (DirectoryInfo dir in dirs) foreach (DirectoryInfo dir in dirs)
DeleteFolder(organizationId, folder != string.Empty ? string.Format("{0}\\{1}", folder, dir.Name) : dir.Name); DeleteFolder(organizationId, folder != string.Empty ? string.Format("{0}\\{1}", folder, dir.Name) : dir.Name, webDavSetting);
dirs = treeRoot.GetDirectories(); dirs = treeRoot.GetDirectories();
} }
@ -189,7 +206,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
File.Delete(file); File.Delete(file);
} }
IWebDav webdav = new WebDav(UsersDomain); IWebDav webdav = new WebDav(webDavSetting);
webdav.DeleteAllWebDavRules(organizationId, folder); webdav.DeleteAllWebDavRules(organizationId, folder);
@ -197,7 +214,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
} }
public bool SetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules) public bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules)
{ {
var users = new List<UserPermission>(); var users = new List<UserPermission>();
@ -224,20 +241,24 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
} }
string path = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder); var webDavSetting = GetWebDavSetting(setting);
string path = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folder);
SecurityUtils.ResetNtfsPermissions(path); SecurityUtils.ResetNtfsPermissions(path);
SecurityUtils.GrantGroupNtfsPermissions(path, users.ToArray(), false, new RemoteServerSettings(), null, null); SecurityUtils.GrantGroupNtfsPermissions(path, users.ToArray(), false, new RemoteServerSettings(), null, null);
IWebDav webdav = new WebDav(UsersDomain); IWebDav webdav = new WebDav(webDavSetting);
return webdav.SetFolderWebDavRules(organizationId, folder, rules); return webdav.SetFolderWebDavRules(organizationId, folder, rules);
} }
public WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder) public WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting)
{ {
IWebDav webdav = new WebDav(UsersDomain); var webDavSetting = GetWebDavSetting(setting);
IWebDav webdav = new WebDav(webDavSetting);
return webdav.GetFolderWebDavRules(organizationId, folder); return webdav.GetFolderWebDavRules(organizationId, folder);
} }
@ -326,5 +347,34 @@ namespace WebsitePanel.Providers.EnterpriseStorage
return version == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2012; return version == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2012;
} }
protected WebDavSetting GetWebDavSetting(WebDavSetting setting)
{
if (setting == null || setting.IsEmpty())
{
return new WebDavSetting(LocationDrive, UsersHome, UsersDomain);
}
return setting;
}
protected WebDavSetting[] GetWebDavSettings(WebDavSetting[] settings)
{
var webDavSettings = new ArrayList();
foreach (var setting in settings)
{
if (!setting.IsEmpty())
{
webDavSettings.Add(setting);
}
}
if (webDavSettings.Count == 0)
{
return new WebDavSetting[] { GetWebDavSetting(new WebDavSetting()) };
}
return settings;
}
} }
} }

View file

@ -220,6 +220,11 @@ namespace WebsitePanel.Providers.OS
throw new NotImplementedException(); throw new NotImplementedException();
} }
public virtual Dictionary<string, Quota> GetQuotasForOrganization(string folderPath, string wmiUserName, string wmiPassword)
{
throw new NotImplementedException();
}
public virtual void DeleteDirectoryRecursive(string rootPath) public virtual void DeleteDirectoryRecursive(string rootPath)
{ {
FileUtils.DeleteDirectoryRecursive(rootPath); FileUtils.DeleteDirectoryRecursive(rootPath);

View file

@ -175,6 +175,53 @@ namespace WebsitePanel.Providers.OS
return quota; return quota;
} }
public override Dictionary<string, Quota> GetQuotasForOrganization(string folderPath, string wmiUserName, string wmiPassword)
{
Log.WriteStart("GetQuotasLimitsForOrganization");
Runspace runSpace = null;
Quota quota = null;
var quotas = new Dictionary<string, Quota>();
try
{
runSpace = OpenRunspace();
Command cmd = new Command("Get-FsrmQuota");
cmd.Parameters.Add("Path", folderPath + "\\*");
var result = ExecuteShellCommand(runSpace, cmd, false);
if (result.Count > 0)
{
foreach (var element in result)
{
quota = new Quota();
quota.Size = ConvertBytesToMB(Convert.ToInt64(GetPSObjectProperty(element, "Size")));
quota.QuotaType = Convert.ToBoolean(GetPSObjectProperty(element, "SoftLimit")) ? QuotaType.Soft : QuotaType.Hard;
quota.Usage = ConvertBytesToMB(Convert.ToInt64(GetPSObjectProperty(element, "usage")));
quotas.Add(Convert.ToString(GetPSObjectProperty(element, "Path")), quota);
}
}
}
catch (Exception ex)
{
Log.WriteError("GetQuotasLimitsForOrganization", ex);
throw;
}
finally
{
CloseRunspace(runSpace);
}
Log.WriteEnd("GetQuotasLimitsForOrganization");
return quotas;
}
public UInt64 CalculateQuota(string quota) public UInt64 CalculateQuota(string quota)
{ {
UInt64 OneKb = 1024; UInt64 OneKb = 1024;

View file

@ -13,13 +13,13 @@ namespace WebsitePanel.Providers.Web
{ {
#region Fields #region Fields
private string _usersDomain; protected WebDavSetting _Setting;
#endregion #endregion
public WebDav(string domain) public WebDav(WebDavSetting setting)
{ {
_usersDomain = domain; _Setting = setting;
} }
public void CreateWebDavRule(string organizationId, string folder, WebDavFolderRule rule) public void CreateWebDavRule(string organizationId, string folder, WebDavFolderRule rule)
@ -28,7 +28,7 @@ namespace WebsitePanel.Providers.Web
{ {
Configuration config = serverManager.GetApplicationHostConfiguration(); Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder)); ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _Setting.Domain, organizationId, folder));
ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection(); ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection();
@ -61,7 +61,7 @@ namespace WebsitePanel.Providers.Web
{ {
Configuration config = serverManager.GetApplicationHostConfiguration(); Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder)); ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _Setting.Domain, organizationId, folder));
ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection(); ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection();
@ -107,7 +107,7 @@ namespace WebsitePanel.Providers.Web
{ {
Configuration config = serverManager.GetApplicationHostConfiguration(); Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder)); ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _Setting.Domain, organizationId, folder));
ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection(); ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection();
@ -133,7 +133,7 @@ namespace WebsitePanel.Providers.Web
Configuration config = serverManager.GetApplicationHostConfiguration(); Configuration config = serverManager.GetApplicationHostConfiguration();
config.RemoveLocationPath(string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder)); config.RemoveLocationPath(string.Format("{0}/{1}/{2}", _Setting.Domain, organizationId, folder));
serverManager.CommitChanges(); serverManager.CommitChanges();
return true; return true;
} }

View file

@ -112,18 +112,20 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <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)]
public SystemFile[] GetFolders(string organizationId) public SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings)
{ {
object[] results = this.Invoke("GetFolders", new object[] { object[] results = this.Invoke("GetFolders", new object[] {
organizationId}); organizationId,
settings});
return ((SystemFile[])(results[0])); return ((SystemFile[])(results[0]));
} }
/// <remarks/> /// <remarks/>
public System.IAsyncResult BeginGetFolders(string organizationId, System.AsyncCallback callback, object asyncState) public System.IAsyncResult BeginGetFolders(string organizationId, WebDavSetting[] settings, System.AsyncCallback callback, object asyncState)
{ {
return this.BeginInvoke("GetFolders", new object[] { return this.BeginInvoke("GetFolders", new object[] {
organizationId}, callback, asyncState); organizationId,
settings}, callback, asyncState);
} }
/// <remarks/> /// <remarks/>
@ -134,20 +136,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
/// <remarks/> /// <remarks/>
public void GetFoldersAsync(string organizationId) public void GetFoldersAsync(string organizationId, WebDavSetting[] settings)
{ {
this.GetFoldersAsync(organizationId, null); this.GetFoldersAsync(organizationId, settings, null);
} }
/// <remarks/> /// <remarks/>
public void GetFoldersAsync(string organizationId, object userState) public void GetFoldersAsync(string organizationId, WebDavSetting[] settings, object userState)
{ {
if ((this.GetFoldersOperationCompleted == null)) if ((this.GetFoldersOperationCompleted == null))
{ {
this.GetFoldersOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFoldersOperationCompleted); this.GetFoldersOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFoldersOperationCompleted);
} }
this.InvokeAsync("GetFolders", new object[] { this.InvokeAsync("GetFolders", new object[] {
organizationId}, this.GetFoldersOperationCompleted, userState); organizationId,
settings}, this.GetFoldersOperationCompleted, userState);
} }
private void OnGetFoldersOperationCompleted(object arg) private void OnGetFoldersOperationCompleted(object arg)
@ -162,20 +165,22 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolder", 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/GetFolder", 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 GetFolder(string organizationId, string folder) public SystemFile GetFolder(string organizationId, string folder, WebDavSetting setting)
{ {
object[] results = this.Invoke("GetFolder", new object[] { object[] results = this.Invoke("GetFolder", new object[] {
organizationId, organizationId,
folder}); folder,
setting});
return ((SystemFile)(results[0])); return ((SystemFile)(results[0]));
} }
/// <remarks/> /// <remarks/>
public System.IAsyncResult BeginGetFolder(string organizationId, string folder, System.AsyncCallback callback, object asyncState) public System.IAsyncResult BeginGetFolder(string organizationId, string folder, WebDavSetting setting, System.AsyncCallback callback, object asyncState)
{ {
return this.BeginInvoke("GetFolder", new object[] { return this.BeginInvoke("GetFolder", new object[] {
organizationId, organizationId,
folder}, callback, asyncState); folder,
setting}, callback, asyncState);
} }
/// <remarks/> /// <remarks/>
@ -186,13 +191,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
/// <remarks/> /// <remarks/>
public void GetFolderAsync(string organizationId, string folder) public void GetFolderAsync(string organizationId, string folder, WebDavSetting setting)
{ {
this.GetFolderAsync(organizationId, folder, null); this.GetFolderAsync(organizationId, folder, setting, null);
} }
/// <remarks/> /// <remarks/>
public void GetFolderAsync(string organizationId, string folder, object userState) public void GetFolderAsync(string organizationId, string folder, WebDavSetting setting, object userState)
{ {
if ((this.GetFolderOperationCompleted == null)) if ((this.GetFolderOperationCompleted == null))
{ {
@ -200,7 +205,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
this.InvokeAsync("GetFolder", new object[] { this.InvokeAsync("GetFolder", new object[] {
organizationId, organizationId,
folder}, this.GetFolderOperationCompleted, userState); folder,
setting}, this.GetFolderOperationCompleted, userState);
} }
private void OnGetFolderOperationCompleted(object arg) private void OnGetFolderOperationCompleted(object arg)
@ -215,19 +221,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateFolder", 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/CreateFolder", 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 void CreateFolder(string organizationId, string folder) public void CreateFolder(string organizationId, string folder, WebDavSetting setting)
{ {
this.Invoke("CreateFolder", new object[] { this.Invoke("CreateFolder", new object[] {
organizationId, organizationId,
folder}); folder,
setting});
} }
/// <remarks/> /// <remarks/>
public System.IAsyncResult BeginCreateFolder(string organizationId, string folder, System.AsyncCallback callback, object asyncState) public System.IAsyncResult BeginCreateFolder(string organizationId, string folder, WebDavSetting setting, System.AsyncCallback callback, object asyncState)
{ {
return this.BeginInvoke("CreateFolder", new object[] { return this.BeginInvoke("CreateFolder", new object[] {
organizationId, organizationId,
folder}, callback, asyncState); folder,
setting}, callback, asyncState);
} }
/// <remarks/> /// <remarks/>
@ -237,13 +245,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
/// <remarks/> /// <remarks/>
public void CreateFolderAsync(string organizationId, string folder) public void CreateFolderAsync(string organizationId, string folder, WebDavSetting setting)
{ {
this.CreateFolderAsync(organizationId, folder, null); this.CreateFolderAsync(organizationId, folder, setting, null);
} }
/// <remarks/> /// <remarks/>
public void CreateFolderAsync(string organizationId, string folder, object userState) public void CreateFolderAsync(string organizationId, string folder, WebDavSetting setting, object userState)
{ {
if ((this.CreateFolderOperationCompleted == null)) if ((this.CreateFolderOperationCompleted == null))
{ {
@ -251,7 +259,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
this.InvokeAsync("CreateFolder", new object[] { this.InvokeAsync("CreateFolder", new object[] {
organizationId, organizationId,
folder}, this.CreateFolderOperationCompleted, userState); folder,
setting}, this.CreateFolderOperationCompleted, userState);
} }
private void OnCreateFolderOperationCompleted(object arg) private void OnCreateFolderOperationCompleted(object arg)
@ -266,19 +275,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteFolder", 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/DeleteFolder", 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 void DeleteFolder(string organizationId, string folder) public void DeleteFolder(string organizationId, string folder, WebDavSetting setting)
{ {
this.Invoke("DeleteFolder", new object[] { this.Invoke("DeleteFolder", new object[] {
organizationId, organizationId,
folder}); folder,
setting});
} }
/// <remarks/> /// <remarks/>
public System.IAsyncResult BeginDeleteFolder(string organizationId, string folder, System.AsyncCallback callback, object asyncState) public System.IAsyncResult BeginDeleteFolder(string organizationId, string folder, WebDavSetting setting, System.AsyncCallback callback, object asyncState)
{ {
return this.BeginInvoke("DeleteFolder", new object[] { return this.BeginInvoke("DeleteFolder", new object[] {
organizationId, organizationId,
folder}, callback, asyncState); folder,
setting}, callback, asyncState);
} }
/// <remarks/> /// <remarks/>
@ -288,13 +299,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
/// <remarks/> /// <remarks/>
public void DeleteFolderAsync(string organizationId, string folder) public void DeleteFolderAsync(string organizationId, string folder, WebDavSetting setting)
{ {
this.DeleteFolderAsync(organizationId, folder, null); this.DeleteFolderAsync(organizationId, folder, setting, null);
} }
/// <remarks/> /// <remarks/>
public void DeleteFolderAsync(string organizationId, string folder, object userState) public void DeleteFolderAsync(string organizationId, string folder, WebDavSetting setting, object userState)
{ {
if ((this.DeleteFolderOperationCompleted == null)) if ((this.DeleteFolderOperationCompleted == null))
{ {
@ -302,7 +313,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
this.InvokeAsync("DeleteFolder", new object[] { this.InvokeAsync("DeleteFolder", new object[] {
organizationId, organizationId,
folder}, this.DeleteFolderOperationCompleted, userState); folder,
setting}, this.DeleteFolderOperationCompleted, userState);
} }
private void OnDeleteFolderOperationCompleted(object arg) private void OnDeleteFolderOperationCompleted(object arg)
@ -317,21 +329,23 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <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)]
public bool SetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules) public bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules)
{ {
object[] results = this.Invoke("SetFolderWebDavRules", new object[] { object[] results = this.Invoke("SetFolderWebDavRules", new object[] {
organizationId, organizationId,
folder, folder,
setting,
rules}); rules});
return ((bool)(results[0])); return ((bool)(results[0]));
} }
/// <remarks/> /// <remarks/>
public System.IAsyncResult BeginSetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules, System.AsyncCallback callback, object asyncState) public System.IAsyncResult BeginSetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules, System.AsyncCallback callback, object asyncState)
{ {
return this.BeginInvoke("SetFolderWebDavRules", new object[] { return this.BeginInvoke("SetFolderWebDavRules", new object[] {
organizationId, organizationId,
folder, folder,
setting,
rules}, callback, asyncState); rules}, callback, asyncState);
} }
@ -343,13 +357,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
/// <remarks/> /// <remarks/>
public void SetFolderWebDavRulesAsync(string organizationId, string folder, WebDavFolderRule[] rules) public void SetFolderWebDavRulesAsync(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules)
{ {
this.SetFolderWebDavRulesAsync(organizationId, folder, rules, null); this.SetFolderWebDavRulesAsync(organizationId, folder, setting, rules, null);
} }
/// <remarks/> /// <remarks/>
public void SetFolderWebDavRulesAsync(string organizationId, string folder, WebDavFolderRule[] rules, object userState) public void SetFolderWebDavRulesAsync(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules, object userState)
{ {
if ((this.SetFolderWebDavRulesOperationCompleted == null)) if ((this.SetFolderWebDavRulesOperationCompleted == null))
{ {
@ -358,6 +372,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
this.InvokeAsync("SetFolderWebDavRules", new object[] { this.InvokeAsync("SetFolderWebDavRules", new object[] {
organizationId, organizationId,
folder, folder,
setting,
rules}, this.SetFolderWebDavRulesOperationCompleted, userState); rules}, this.SetFolderWebDavRulesOperationCompleted, userState);
} }
@ -373,20 +388,22 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolderWebDavRules", 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/GetFolderWebDavRules", 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 WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder) public WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting)
{ {
object[] results = this.Invoke("GetFolderWebDavRules", new object[] { object[] results = this.Invoke("GetFolderWebDavRules", new object[] {
organizationId, organizationId,
folder}); folder,
setting});
return ((WebDavFolderRule[])(results[0])); return ((WebDavFolderRule[])(results[0]));
} }
/// <remarks/> /// <remarks/>
public System.IAsyncResult BeginGetFolderWebDavRules(string organizationId, string folder, System.AsyncCallback callback, object asyncState) public System.IAsyncResult BeginGetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, System.AsyncCallback callback, object asyncState)
{ {
return this.BeginInvoke("GetFolderWebDavRules", new object[] { return this.BeginInvoke("GetFolderWebDavRules", new object[] {
organizationId, organizationId,
folder}, callback, asyncState); folder,
setting}, callback, asyncState);
} }
/// <remarks/> /// <remarks/>
@ -397,13 +414,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
/// <remarks/> /// <remarks/>
public void GetFolderWebDavRulesAsync(string organizationId, string folder) public void GetFolderWebDavRulesAsync(string organizationId, string folder, WebDavSetting setting)
{ {
this.GetFolderWebDavRulesAsync(organizationId, folder, null); this.GetFolderWebDavRulesAsync(organizationId, folder, setting, null);
} }
/// <remarks/> /// <remarks/>
public void GetFolderWebDavRulesAsync(string organizationId, string folder, object userState) public void GetFolderWebDavRulesAsync(string organizationId, string folder, WebDavSetting setting, object userState)
{ {
if ((this.GetFolderWebDavRulesOperationCompleted == null)) if ((this.GetFolderWebDavRulesOperationCompleted == null))
{ {
@ -411,7 +428,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
this.InvokeAsync("GetFolderWebDavRules", new object[] { this.InvokeAsync("GetFolderWebDavRules", new object[] {
organizationId, organizationId,
folder}, this.GetFolderWebDavRulesOperationCompleted, userState); folder,
setting}, this.GetFolderWebDavRulesOperationCompleted, userState);
} }
private void OnGetFolderWebDavRulesOperationCompleted(object arg) private void OnGetFolderWebDavRulesOperationCompleted(object arg)
@ -473,22 +491,24 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [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)] [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) public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
{ {
object[] results = this.Invoke("RenameFolder", new object[] { object[] results = this.Invoke("RenameFolder", new object[] {
organizationId, organizationId,
originalFolder, originalFolder,
newFolder}); newFolder,
setting});
return ((SystemFile)(results[0])); return ((SystemFile)(results[0]));
} }
/// <remarks/> /// <remarks/>
public System.IAsyncResult BeginRenameFolder(string organizationId, string originalFolder, string newFolder, System.AsyncCallback callback, object asyncState) public System.IAsyncResult BeginRenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting, System.AsyncCallback callback, object asyncState)
{ {
return this.BeginInvoke("RenameFolder", new object[] { return this.BeginInvoke("RenameFolder", new object[] {
organizationId, organizationId,
originalFolder, originalFolder,
newFolder}, callback, asyncState); newFolder,
setting}, callback, asyncState);
} }
/// <remarks/> /// <remarks/>
@ -499,13 +519,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
/// <remarks/> /// <remarks/>
public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder) public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
{ {
this.RenameFolderAsync(organizationId, originalFolder, newFolder, null); this.RenameFolderAsync(organizationId, originalFolder, newFolder, setting, null);
} }
/// <remarks/> /// <remarks/>
public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder, object userState) public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder, WebDavSetting setting, object userState)
{ {
if ((this.RenameFolderOperationCompleted == null)) if ((this.RenameFolderOperationCompleted == null))
{ {
@ -514,7 +534,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
this.InvokeAsync("RenameFolder", new object[] { this.InvokeAsync("RenameFolder", new object[] {
organizationId, organizationId,
originalFolder, originalFolder,
newFolder}, this.RenameFolderOperationCompleted, userState); newFolder,
setting}, this.RenameFolderOperationCompleted, userState);
} }
private void OnRenameFolderOperationCompleted(object arg) private void OnRenameFolderOperationCompleted(object arg)

View file

@ -39,6 +39,7 @@ using WebsitePanel.Providers;
using WebsitePanel.Providers.EnterpriseStorage; using WebsitePanel.Providers.EnterpriseStorage;
using WebsitePanel.Providers.OS; using WebsitePanel.Providers.OS;
using WebsitePanel.Server.Utils; using WebsitePanel.Server.Utils;
using WebsitePanel.Providers.Web;
namespace WebsitePanel.Server namespace WebsitePanel.Server
{ {
@ -58,12 +59,12 @@ namespace WebsitePanel.Server
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public SystemFile[] GetFolders(string organizationId) public SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings)
{ {
try try
{ {
Log.WriteStart("'{0}' GetFolders", ProviderSettings.ProviderName); Log.WriteStart("'{0}' GetFolders", ProviderSettings.ProviderName);
SystemFile[] result = EnterpriseStorageProvider.GetFolders(organizationId); SystemFile[] result = EnterpriseStorageProvider.GetFolders(organizationId, settings);
Log.WriteEnd("'{0}' GetFolders", ProviderSettings.ProviderName); Log.WriteEnd("'{0}' GetFolders", ProviderSettings.ProviderName);
return result; return result;
} }
@ -75,12 +76,12 @@ namespace WebsitePanel.Server
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public SystemFile GetFolder(string organizationId, string folder) public SystemFile GetFolder(string organizationId, string folder, WebDavSetting setting)
{ {
try try
{ {
Log.WriteStart("'{0}' GetFolder", ProviderSettings.ProviderName); Log.WriteStart("'{0}' GetFolder", ProviderSettings.ProviderName);
SystemFile result = EnterpriseStorageProvider.GetFolder(organizationId, folder); SystemFile result = EnterpriseStorageProvider.GetFolder(organizationId, folder, setting);
Log.WriteEnd("'{0}' GetFolder", ProviderSettings.ProviderName); Log.WriteEnd("'{0}' GetFolder", ProviderSettings.ProviderName);
return result; return result;
} }
@ -92,12 +93,12 @@ namespace WebsitePanel.Server
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public void CreateFolder(string organizationId, string folder) public void CreateFolder(string organizationId, string folder, WebDavSetting setting)
{ {
try try
{ {
Log.WriteStart("'{0}' CreateFolder", ProviderSettings.ProviderName); Log.WriteStart("'{0}' CreateFolder", ProviderSettings.ProviderName);
EnterpriseStorageProvider.CreateFolder(organizationId, folder); EnterpriseStorageProvider.CreateFolder(organizationId, folder, setting);
Log.WriteEnd("'{0}' CreateFolder", ProviderSettings.ProviderName); Log.WriteEnd("'{0}' CreateFolder", ProviderSettings.ProviderName);
} }
catch (Exception ex) catch (Exception ex)
@ -108,12 +109,12 @@ namespace WebsitePanel.Server
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public void DeleteFolder(string organizationId, string folder) public void DeleteFolder(string organizationId, string folder, WebDavSetting setting)
{ {
try try
{ {
Log.WriteStart("'{0}' DeleteFolder", ProviderSettings.ProviderName); Log.WriteStart("'{0}' DeleteFolder", ProviderSettings.ProviderName);
EnterpriseStorageProvider.DeleteFolder(organizationId, folder); EnterpriseStorageProvider.DeleteFolder(organizationId, folder, setting);
Log.WriteEnd("'{0}' DeleteFolder", ProviderSettings.ProviderName); Log.WriteEnd("'{0}' DeleteFolder", ProviderSettings.ProviderName);
} }
catch (Exception ex) catch (Exception ex)
@ -124,12 +125,12 @@ namespace WebsitePanel.Server
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public bool SetFolderWebDavRules(string organizationId, string folder, Providers.Web.WebDavFolderRule[] rules) public bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, Providers.Web.WebDavFolderRule[] rules)
{ {
try try
{ {
Log.WriteStart("'{0}' SetFolderWebDavRules", ProviderSettings.ProviderName); Log.WriteStart("'{0}' SetFolderWebDavRules", ProviderSettings.ProviderName);
return EnterpriseStorageProvider.SetFolderWebDavRules(organizationId, folder, rules); return EnterpriseStorageProvider.SetFolderWebDavRules(organizationId, folder, setting, rules);
Log.WriteEnd("'{0}' SetFolderWebDavRules", ProviderSettings.ProviderName); Log.WriteEnd("'{0}' SetFolderWebDavRules", ProviderSettings.ProviderName);
} }
catch (Exception ex) catch (Exception ex)
@ -140,12 +141,12 @@ namespace WebsitePanel.Server
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public Providers.Web.WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder) public Providers.Web.WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting)
{ {
try try
{ {
Log.WriteStart("'{0}' GetFolderWebDavRules", ProviderSettings.ProviderName); Log.WriteStart("'{0}' GetFolderWebDavRules", ProviderSettings.ProviderName);
return EnterpriseStorageProvider.GetFolderWebDavRules(organizationId, folder); return EnterpriseStorageProvider.GetFolderWebDavRules(organizationId, folder, setting);
Log.WriteEnd("'{0}' GetFolderWebDavRules", ProviderSettings.ProviderName); Log.WriteEnd("'{0}' GetFolderWebDavRules", ProviderSettings.ProviderName);
} }
catch (Exception ex) catch (Exception ex)
@ -172,12 +173,12 @@ namespace WebsitePanel.Server
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder) public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
{ {
try try
{ {
Log.WriteStart("'{0}' RenameFolder", ProviderSettings.ProviderName); Log.WriteStart("'{0}' RenameFolder", ProviderSettings.ProviderName);
return EnterpriseStorageProvider.RenameFolder(organizationId, originalFolder, newFolder); return EnterpriseStorageProvider.RenameFolder(organizationId, originalFolder, newFolder, setting);
Log.WriteEnd("'{0}' RenameFolder", ProviderSettings.ProviderName); Log.WriteEnd("'{0}' RenameFolder", ProviderSettings.ProviderName);
} }
catch (Exception ex) catch (Exception ex)

View file

@ -27,7 +27,7 @@
</Content> </Content>
</Page> </Page>
<Page name="Home" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" skin="Browse3.ascx"> <Page name="Home" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" skin="Browse3.ascx" align="right">
<Content id="LeftPane"> <Content id="LeftPane">
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx"> <Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
<ModuleData ref="UserMenu"/> <ModuleData ref="UserMenu"/>
@ -127,6 +127,9 @@
<!-- Space Home Page --> <!-- Space Home Page -->
<Page name="SpaceHome" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="Browse3.ascx"> <Page name="SpaceHome" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="Browse3.ascx">
<Content id="LeftPane"> <Content id="LeftPane">
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
<ModuleData ref="UserMenu"/>
</Module>
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx"> <Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
<ModuleData ref="SpaceMenu"/> <ModuleData ref="SpaceMenu"/>
</Module> </Module>
@ -192,6 +195,9 @@
<Page name="SpaceWebSites" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True"> <Page name="SpaceWebSites" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
<Content id="LeftPane"> <Content id="LeftPane">
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
<ModuleData ref="UserMenu"/>
</Module>
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx"> <Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
<ModuleData ref="SpaceMenu"/> <ModuleData ref="SpaceMenu"/>
</Module> </Module>
@ -510,6 +516,11 @@
</Page> </Page>
<Page name="SpaceExchangeServer" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="Exchange.ascx" adminskin="Exchange.ascx"> <Page name="SpaceExchangeServer" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="Exchange.ascx" adminskin="Exchange.ascx">
<Content id="LeftPane">
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
<ModuleData ref="UserMenu"/>
</Module>
</Content>
<Content id="ContentPane"> <Content id="ContentPane">
<Module moduleDefinitionID="ExchangeServer" title="ExchangeServer" icon="" container="Exchange.ascx" admincontainer="Exchange.ascx" readOnlyRoles="PlatformCSR,ResellerCSR"/> <Module moduleDefinitionID="ExchangeServer" title="ExchangeServer" icon="" container="Exchange.ascx" admincontainer="Exchange.ascx" readOnlyRoles="PlatformCSR,ResellerCSR"/>
</Content> </Content>
@ -534,7 +545,7 @@
</Content> </Content>
</Page> </Page>
<Page name="Reporting" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" enabled="false"> <Page name="Reporting" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" enabled="false" align="left">
<Content id="LeftPane"> <Content id="LeftPane">
<Module moduleDefinitionID="User" title="User" container="Clear.ascx" /> <Module moduleDefinitionID="User" title="User" container="Clear.ascx" />
<Module moduleDefinitionID="HostingSpace" title="HostingSpace" container="Clear.ascx" /> <Module moduleDefinitionID="HostingSpace" title="HostingSpace" container="Clear.ascx" />
@ -552,7 +563,7 @@
</Page> </Page>
</Pages> </Pages>
</Page> </Page>
<Page name="Configuration" roles="Administrator" enabled="false"> <Page name="Configuration" roles="Administrator" enabled="false" align="left">
<Pages> <Pages>
<Page name="VirtualServers" roles="Administrator" skin="Browse1.ascx"> <Page name="VirtualServers" roles="Administrator" skin="Browse1.ascx">
<Content id="ContentPane"> <Content id="ContentPane">

View file

@ -33,21 +33,17 @@
</div> </div>
<div id="TopMenu"> <div id="TopMenu">
<wsp:TopMenu ID="menu" runat="server" /> <wsp:TopMenu ID="leftMenu" runat="server" Align="left" />
<asp:PlaceHolder ID="LeftPane" runat="server"></asp:PlaceHolder>
<wsp:TopMenu ID="rightMenu" runat="server" Align="right" />
</div> </div>
<div id="Top"> <div id="Top">
<wsp:UserSpaceBreadcrumb ID="breadcrumb" runat="server"/> <wsp:UserSpaceBreadcrumb ID="breadcrumb" runat="server"/>
</div> </div>
<div id="Left"> <div id="ContentOneColumn">
<asp:PlaceHolder ID="LeftPane" runat="server"></asp:PlaceHolder> <asp:PlaceHolder ID="ContentPane" runat="server"></asp:PlaceHolder>
</div>
<div id="Content">
<div id="CenterOneColumn">
<asp:PlaceHolder ID="ContentPane" runat="server"></asp:PlaceHolder>
</div>
</div> </div>
</div> </div>
<div id="Footer"> <div id="Footer">

View file

@ -33,18 +33,16 @@
</div> </div>
<div id="TopMenu"> <div id="TopMenu">
<wsp:TopMenu ID="menu" runat="server" /> <wsp:TopMenu ID="leftMenu" runat="server" Align="left" />
<asp:PlaceHolder ID="LeftPane" runat="server"></asp:PlaceHolder>
<wsp:TopMenu ID="rightMenu" runat="server" Align="right" />
</div> </div>
<div id="Top"> <div id="Top">
<wsp:UserSpaceBreadcrumb ID="breadcrumb" runat="server"/> <wsp:UserSpaceBreadcrumb ID="breadcrumb" runat="server"/>
</div> </div>
<div id="Left"> <div id="ContentOneColumn">
<asp:PlaceHolder ID="LeftPane" runat="server"></asp:PlaceHolder>
</div>
<div id="Content">
<div id="Center"> <div id="Center">
<asp:PlaceHolder ID="ContentPane" runat="server"></asp:PlaceHolder> <asp:PlaceHolder ID="ContentPane" runat="server"></asp:PlaceHolder>
</div> </div>

View file

@ -33,7 +33,9 @@
</div> </div>
<div id="TopMenu"> <div id="TopMenu">
<wsp:TopMenu ID="menu" runat="server" /> <wsp:TopMenu ID="leftMenu" runat="server" Align="left" />
<asp:PlaceHolder ID="LeftPane" runat="server"></asp:PlaceHolder>
<wsp:TopMenu ID="rightMenu" runat="server" Align="right" />
</div> </div>
<div id="Top"> <div id="Top">

View file

@ -33,9 +33,10 @@
</div> </div>
<div id="TopMenu"> <div id="TopMenu">
<wsp:TopMenu ID="menu" runat="server" /> <wsp:TopMenu ID="leftMenu" runat="server" Align="left" />
<asp:PlaceHolder ID="LeftPane" runat="server"></asp:PlaceHolder>
<wsp:TopMenu ID="rightMenu" runat="server" Align="right" />
</div> </div>
<div id="Top"> <div id="Top">
<wsp:UserSpaceBreadcrumb ID="breadcrumb" runat="server"/> <wsp:UserSpaceBreadcrumb ID="breadcrumb" runat="server"/>
</div> </div>

View file

@ -28,17 +28,15 @@
</div> </div>
<div id="TopMenu"> <div id="TopMenu">
<wsp:TopMenu ID="menu" runat="server" /> <wsp:TopMenu ID="leftMenu" runat="server" Align="left" />
<asp:PlaceHolder ID="LeftPane" runat="server"></asp:PlaceHolder>
<wsp:TopMenu ID="rightMenu" runat="server" Align="right" />
</div> </div>
<div id="Top"> <div id="Top">
<wsp:CatalogBreadCrumb runat="server" /> <wsp:CatalogBreadCrumb runat="server" />
</div> </div>
<div id="Left">
<asp:PlaceHolder ID="LeftPane" runat="server"></asp:PlaceHolder>
</div>
<div id="StorefrontCenter"> <div id="StorefrontCenter">
<div> <div>
<asp:PlaceHolder ID="ContentPane" runat="server"></asp:PlaceHolder> <asp:PlaceHolder ID="ContentPane" runat="server"></asp:PlaceHolder>

View file

@ -19,6 +19,17 @@
z-index: 502; z-index: 502;
} }
.TopMenu ul.AspNet-Menu li ul li.AspNet-Menu-WithChildren span
{
color: #000000 !important;
background: transparent url(../Images/menu_popup2.gif) right center no-repeat !important;
text-align: left !important;
border-right: none !important;
display: table !important;
}
.TopMenu ul.AspNet-Menu li span
.TopMenu li.AspNet-Menu-Leaf a, /* leaves */ .TopMenu li.AspNet-Menu-Leaf a, /* leaves */
.TopMenu li.AspNet-Menu-Leaf span .TopMenu li.AspNet-Menu-Leaf span
{ {

View file

@ -278,14 +278,14 @@ BODY
#Center #Center
{ {
float: left; float: left;
width: 540px; width: 730px;
padding: 10px 0px 10px 10px; padding: 10px 0px 10px 10px;
} }
#StorefrontCenter #StorefrontCenter
{ {
float: left; float: left;
width: 755px; width: 955px;
padding: 10px 0px 10px 10px; padding: 10px 0px 10px 10px;
} }

View file

@ -295,6 +295,7 @@ namespace WebsitePanel.WebPortal
page.Enabled = (xmlPage.Attributes["enabled"] != null) ? Boolean.Parse(xmlPage.Attributes["enabled"].Value) : true; page.Enabled = (xmlPage.Attributes["enabled"] != null) ? Boolean.Parse(xmlPage.Attributes["enabled"].Value) : true;
page.Hidden = (xmlPage.Attributes["hidden"] != null) ? Boolean.Parse(xmlPage.Attributes["hidden"].Value) : false; page.Hidden = (xmlPage.Attributes["hidden"] != null) ? Boolean.Parse(xmlPage.Attributes["hidden"].Value) : false;
page.Align = (xmlPage.Attributes["align"] != null) ? xmlPage.Attributes["align"].Value : null;
page.SkinSrc = (xmlPage.Attributes["skin"] != null) ? xmlPage.Attributes["skin"].Value : null; page.SkinSrc = (xmlPage.Attributes["skin"] != null) ? xmlPage.Attributes["skin"].Value : null;
page.AdminSkinSrc = (xmlPage.Attributes["adminskin"] != null) ? xmlPage.Attributes["adminskin"].Value : null; page.AdminSkinSrc = (xmlPage.Attributes["adminskin"] != null) ? xmlPage.Attributes["adminskin"].Value : null;

View file

@ -45,6 +45,7 @@ namespace WebsitePanel.WebPortal
private Dictionary<string, ContentPane> contentPanes = new Dictionary<string, ContentPane>(); private Dictionary<string, ContentPane> contentPanes = new Dictionary<string, ContentPane>();
private string url; private string url;
private string target; private string target;
private string align;
public string Name public string Name
{ {
@ -108,5 +109,11 @@ namespace WebsitePanel.WebPortal
get { return this.target; } get { return this.target; }
set { this.target = value; } set { this.target = value; }
} }
public string Align
{
get { return this.align; }
set { this.align = value; }
}
} }
} }

View file

@ -199,6 +199,7 @@ namespace WebsitePanel.WebPortal
NameValueCollection attrs = new NameValueCollection(); NameValueCollection attrs = new NameValueCollection();
attrs["target"] = page.Target; attrs["target"] = page.Target;
attrs["align"] = page.Align;
SiteMapNode node = new SiteMapNode(this, page.Name, SiteMapNode node = new SiteMapNode(this, page.Name,
url, url,

View file

@ -58,6 +58,7 @@ namespace WebsitePanel.WebPortal
public const string SKINS_FOLDER = "App_Skins"; public const string SKINS_FOLDER = "App_Skins";
public const string CONTAINERS_FOLDER = "App_Containers"; public const string CONTAINERS_FOLDER = "App_Containers";
public const string CONTENT_PANE_NAME = "ContentPane"; public const string CONTENT_PANE_NAME = "ContentPane";
public const string LEFT_PANE_NAME = "LeftPane";
public const string MODULE_TITLE_CONTROL_ID = "lblModuleTitle"; public const string MODULE_TITLE_CONTROL_ID = "lblModuleTitle";
public const string MODULE_ICON_CONTROL_ID = "imgModuleIcon"; public const string MODULE_ICON_CONTROL_ID = "imgModuleIcon";
public const string DESKTOP_MODULES_FOLDER = "DesktopModules"; public const string DESKTOP_MODULES_FOLDER = "DesktopModules";
@ -234,10 +235,24 @@ namespace WebsitePanel.WebPortal
if (ctrlPane != null) if (ctrlPane != null)
{ {
// add "edit" module // add "edit" module
if(PortalConfiguration.Site.Modules.ContainsKey(ModuleID)) if (PortalConfiguration.Site.Modules.ContainsKey(ModuleID))
AddModuleToContentPane(ctrlPane, PortalConfiguration.Site.Modules[ModuleID], AddModuleToContentPane(ctrlPane, PortalConfiguration.Site.Modules[ModuleID],
ModuleControlID, editMode); ModuleControlID, editMode);
} }
// find LeftPane
ctrlPane = ctrlSkin.FindControl(LEFT_PANE_NAME);
if (ctrlPane != null)
{
ContentPane pane = page.ContentPanes[LEFT_PANE_NAME];
foreach (PageModule module in pane.Modules)
{
if (IsAccessibleToUser(Context, module.ViewRoles))
{
// add module
AddModuleToContentPane(ctrlPane, module, "", false);
}
}
}
} }
} }

View file

@ -141,4 +141,28 @@
<data name="locTitle" xml:space="preserve"> <data name="locTitle" xml:space="preserve">
<value>Create New Folder</value> <value>Create New Folder</value>
</data> </data>
<data name="locAddDefaultGroup" xml:space="preserve">
<value>Add Default Group</value>
</data>
<data name="locFolderSize" xml:space="preserve">
<value>Folder Limit Size (Gb):</value>
</data>
<data name="locQuotaType" xml:space="preserve">
<value>Quota Type:</value>
</data>
<data name="rangeFolderSize" xml:space="preserve">
<value>*</value>
</data>
<data name="rbtnQuotaHard" xml:space="preserve">
<value>Hard</value>
</data>
<data name="rbtnQuotaSoft" xml:space="preserve">
<value>Soft</value>
</data>
<data name="valRequireFolderSize" xml:space="preserve">
<value>valRequireFolderSize</value>
</data>
<data name="valRequireFolderSize.ErrorMessage" xml:space="preserve">
<value>Enter Folder Size</value>
</data>
</root> </root>

View file

@ -32,6 +32,31 @@
ErrorMessage="Enter Folder Name" ValidationGroup="CreateFolder" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator> ErrorMessage="Enter Folder Name" ValidationGroup="CreateFolder" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
</td> </td>
</tr> </tr>
<tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locFolderSize" runat="server" meta:resourcekey="locFolderSize" Text="Folder Limit Size (Gb):"></asp:Localize></td>
<td>
<asp:TextBox ID="txtFolderSize" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireFolderSize" runat="server" meta:resourcekey="valRequireFolderSize" ControlToValidate="txtFolderSize"
ErrorMessage="Enter Folder Size" ValidationGroup="CreateFolder" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="rangeFolderSize" runat="server" ControlToValidate="txtFolderSize" MaximumValue="99999999" MinimumValue="0.01" Type="Double"
ValidationGroup="CreateFolder" Display="Dynamic" Text="*" SetFocusOnError="True"
ErrorMessage="The quota youve entered exceeds the available quota for tenant" />
</td>
</tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locQuotaType" runat="server" meta:resourcekey="locQuotaType" Text="Quota Type:"></asp:Localize></td>
<td class="FormRBtnL">
<asp:RadioButton ID="rbtnQuotaSoft" runat="server" meta:resourcekey="rbtnQuotaSoft" Text="Soft" GroupName="QuotaType" Checked="true" />
<asp:RadioButton ID="rbtnQuotaHard" runat="server" meta:resourcekey="rbtnQuotaHard" Text="Hard" GroupName="QuotaType" />
</td>
</tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locAddDefaultGroup" runat="server" meta:resourcekey="locAddDefaultGroup" Text="Add Default Group:"></asp:Localize></td>
<td>
<asp:CheckBox id="chkAddDefaultGroup" runat="server" Checked="false"></asp:CheckBox>
</td>
</tr>
</table> </table>
<div class="FormFooterClean"> <div class="FormFooterClean">
<asp:Button id="btnCreate" runat="server" Text="Create Folder" CssClass="Button1" meta:resourcekey="btnCreate" ValidationGroup="CreateFolder" OnClick="btnCreate_Click"></asp:Button> <asp:Button id="btnCreate" runat="server" Text="Create Folder" CssClass="Button1" meta:resourcekey="btnCreate" ValidationGroup="CreateFolder" OnClick="btnCreate_Click"></asp:Button>

View file

@ -30,11 +30,18 @@ using System;
using WebsitePanel.EnterpriseServer; using WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.Common; using WebsitePanel.Providers.Common;
using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.HostedSolution;
using WebsitePanel.Providers.OS;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class EnterpriseStorageCreateFolder : WebsitePanelModuleBase public partial class EnterpriseStorageCreateFolder : WebsitePanelModuleBase
{ {
#region Constants
private const int OneGb = 1024;
#endregion
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
if (!IsPostBack) if (!IsPostBack)
@ -44,6 +51,17 @@ namespace WebsitePanel.Portal.ExchangeServer
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folders", Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folders",
"ItemID=" + PanelRequest.ItemID)); "ItemID=" + PanelRequest.ItemID));
} }
OrganizationStatistics organizationStats = ES.Services.Organizations.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID);
if (organizationStats.AllocatedEnterpriseStorageSpace != -1)
{
OrganizationStatistics tenantStats = ES.Services.Organizations.GetOrganizationStatistics(PanelRequest.ItemID);
rangeFolderSize.MaximumValue = Math.Round((tenantStats.AllocatedEnterpriseStorageSpace - (decimal)tenantStats.UsedEnterpriseStorageSpace) / OneGb
+ Utils.ParseDecimal(txtFolderSize.Text, 0), 2).ToString();
rangeFolderSize.ErrorMessage = string.Format("The quota youve entered exceeds the available quota for tenant ({0}Gb)", rangeFolderSize.MaximumValue);
}
} }
} }
@ -69,13 +87,18 @@ namespace WebsitePanel.Portal.ExchangeServer
ES.Services.EnterpriseStorage.CreateEnterpriseStorage(PanelSecurity.PackageId, PanelRequest.ItemID); ES.Services.EnterpriseStorage.CreateEnterpriseStorage(PanelSecurity.PackageId, PanelRequest.ItemID);
} }
ResultObject result = ES.Services.EnterpriseStorage.CreateEnterpriseFolder(PanelRequest.ItemID, txtFolderName.Text); ResultObject result = ES.Services.EnterpriseStorage.CreateEnterpriseFolder(
PanelRequest.ItemID,
txtFolderName.Text,
(int)(decimal.Parse(txtFolderSize.Text) * OneGb),
rbtnQuotaSoft.Checked ? QuotaType.Soft : QuotaType.Hard,
chkAddDefaultGroup.Checked);
if (!result.IsSuccess && result.ErrorCodes.Count > 0) /*if (!result.IsSuccess && result.ErrorCodes.Count > 0)
{ {
messageBox.ShowMessage(result, "ENTERPRISE_STORAGE_CREATE_FOLDER", "Enterprise Storage"); messageBox.ShowMessage(result, "ENTERPRISE_STORAGE_CREATE_FOLDER", "Enterprise Storage");
return; return;
} }*/
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folder_settings", Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folder_settings",
"FolderID=" + txtFolderName.Text, "FolderID=" + txtFolderName.Text,

View file

@ -121,6 +121,87 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireFolderName; protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireFolderName;
/// <summary>
/// locFolderSize 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 locFolderSize;
/// <summary>
/// txtFolderSize 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 txtFolderSize;
/// <summary>
/// valRequireFolderSize 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.RequiredFieldValidator valRequireFolderSize;
/// <summary>
/// rangeFolderSize 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.RangeValidator rangeFolderSize;
/// <summary>
/// locQuotaType 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 locQuotaType;
/// <summary>
/// rbtnQuotaSoft 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.RadioButton rbtnQuotaSoft;
/// <summary>
/// rbtnQuotaHard 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.RadioButton rbtnQuotaHard;
/// <summary>
/// locAddDefaultGroup 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 locAddDefaultGroup;
/// <summary>
/// chkAddDefaultGroup 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 chkAddDefaultGroup;
/// <summary> /// <summary>
/// btnCreate control. /// btnCreate control.
/// </summary> /// </summary>

View file

@ -339,14 +339,14 @@ namespace WebsitePanel.Portal.ExchangeServer
enterpriseStorageSpaceStats.QuotaUsedValue = stats.UsedEnterpriseStorageSpace; enterpriseStorageSpaceStats.QuotaUsedValue = stats.UsedEnterpriseStorageSpace;
if (stats.AllocatedEnterpriseStorageSpace != -1) enterpriseStorageSpaceStats.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageSpace - tenantStats.UsedEnterpriseStorageSpace; if (stats.AllocatedEnterpriseStorageSpace != -1) enterpriseStorageSpaceStats.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageSpace - tenantStats.UsedEnterpriseStorageSpace;
lnkBESUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "enterprisestorage_folders", lnkEnterpriseStorageSpace.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "enterprisestorage_folders",
"SpaceID=" + PanelSecurity.PackageId.ToString()); "SpaceID=" + PanelSecurity.PackageId.ToString());
enterpriseStorageFoldersStats.QuotaValue = stats.AllocatedEnterpriseStorageFolders; enterpriseStorageFoldersStats.QuotaValue = stats.AllocatedEnterpriseStorageFolders;
enterpriseStorageFoldersStats.QuotaUsedValue = stats.CreatedEnterpriseStorageFolders; enterpriseStorageFoldersStats.QuotaUsedValue = stats.CreatedEnterpriseStorageFolders;
if (stats.AllocatedEnterpriseStorageFolders != -1) enterpriseStorageFoldersStats.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageFolders - tenantStats.CreatedEnterpriseStorageFolders; if (stats.AllocatedEnterpriseStorageFolders != -1) enterpriseStorageFoldersStats.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageFolders - tenantStats.CreatedEnterpriseStorageFolders;
lnkBESUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "enterprisestorage_folders", lnkEnterpriseStorageFolders.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "enterprisestorage_folders",
"SpaceID=" + PanelSecurity.PackageId.ToString()); "SpaceID=" + PanelSecurity.PackageId.ToString());
} }

View file

@ -41,6 +41,19 @@ namespace WebsitePanel.Portal.SkinControls
{ {
public partial class TopMenu : System.Web.UI.UserControl public partial class TopMenu : System.Web.UI.UserControl
{ {
public string Align
{
get
{
if (ViewState["Align"] == null)
{
return "top";
}
return ViewState["Align"].ToString();
}
set { ViewState["Align"] = value; }
}
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
@ -48,7 +61,15 @@ namespace WebsitePanel.Portal.SkinControls
protected void topMenu_MenuItemDataBound(object sender, MenuEventArgs e) protected void topMenu_MenuItemDataBound(object sender, MenuEventArgs e)
{ {
string target = ((SiteMapNode)e.Item.DataItem)["target"]; var node = ((SiteMapNode)e.Item.DataItem);
if (node["align"] == Align)
{
topMenu.Items.Remove(e.Item);
return;
}
string target = node["target"];
if(!String.IsNullOrEmpty(target)) if(!String.IsNullOrEmpty(target))
e.Item.Target = target; e.Item.Target = target;

View file

@ -1,7 +1,34 @@
// 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.
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:2.0.50727.3074
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.

View file

@ -1,11 +1,9 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SpaceMenu.ascx.cs" Inherits="WebsitePanel.Portal.SpaceMenu" %> <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SpaceMenu.ascx.cs" Inherits="WebsitePanel.Portal.SpaceMenu" %>
<div class="MenuHeader">
<asp:Localize ID="locMenuTitle" runat="server" meta:resourcekey="locMenuTitle"></asp:Localize> <asp:Localize ID="locMenuTitle" runat="server" meta:resourcekey="locMenuTitle" Visible="false"></asp:Localize>
</div>
<div class="Menu"> <asp:Menu ID="menu" runat="server"
<asp:Menu ID="menu" runat="server" Orientation="Horizontal"
Orientation="Vertical" EnableViewState="false"
EnableViewState="false" CssSelectorClass="TopMenu" >
CssSelectorClass="LeftMenu" > </asp:Menu>
</asp:Menu>
</div>

View file

@ -53,7 +53,12 @@ namespace WebsitePanel.Portal
cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
// bind root node // bind root node
BindMenu(menu.Items, PortalUtils.GetModuleMenuItems(this)); MenuItem rootItem = new MenuItem(locMenuTitle.Text);
rootItem.Selectable = false;
menu.Items.Add(rootItem);
BindMenu(rootItem.ChildItems, PortalUtils.GetModuleMenuItems(this));
} }
private void BindMenu(MenuItemCollection items, XmlNodeList nodes) private void BindMenu(MenuItemCollection items, XmlNodeList nodes)

View file

@ -1,7 +1,34 @@
// 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.
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:2.0.50727.42
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
@ -10,8 +37,25 @@
namespace WebsitePanel.Portal { namespace WebsitePanel.Portal {
public partial class SpaceMenu { public partial class SpaceMenu {
protected System.Web.UI.WebControls.Localize locMenuTitle;
protected System.Web.UI.WebControls.Menu menu; /// <summary>
/// locMenuTitle 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 locMenuTitle;
/// <summary>
/// menu 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.Menu menu;
} }
} }

View file

@ -1,11 +1,9 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserAccountMenu.ascx.cs" Inherits="WebsitePanel.Portal.UserAccountMenu" %> <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserAccountMenu.ascx.cs" Inherits="WebsitePanel.Portal.UserAccountMenu" %>
<div class="MenuHeader">
<asp:Localize ID="locMenuTitle" runat="server" meta:resourcekey="locMenuTitle"></asp:Localize> <asp:Localize ID="locMenuTitle" runat="server" meta:resourcekey="locMenuTitle" Visible="false"></asp:Localize>
</div>
<div class="Menu"> <asp:Menu ID="menu" runat="server"
<asp:Menu ID="menu" runat="server" Orientation="Horizontal"
Orientation="Vertical" EnableViewState="false"
EnableViewState="false" CssSelectorClass="TopMenu" >
CssSelectorClass="LeftMenu" > </asp:Menu>
</asp:Menu>
</div>

View file

@ -47,7 +47,12 @@ namespace WebsitePanel.Portal
{ {
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
BindMenu(menu.Items, PortalUtils.GetModuleMenuItems(this)); MenuItem rootItem = new MenuItem(locMenuTitle.Text);
rootItem.Selectable = false;
menu.Items.Add(rootItem);
BindMenu(rootItem.ChildItems, PortalUtils.GetModuleMenuItems(this));
} }
private void BindMenu(MenuItemCollection items, XmlNodeList nodes) private void BindMenu(MenuItemCollection items, XmlNodeList nodes)