Web Changes

This commit is contained in:
Haya Nmeir 2012-11-27 22:57:15 +02:00
parent 1ed886a045
commit 6437148de4
37 changed files with 1618 additions and 482 deletions

View file

@ -1238,6 +1238,17 @@ namespace WebsitePanel.EnterpriseServer {
this.ExecuteSyncActionsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); this.ExecuteSyncActionsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
} }
} }
//CO Changes
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/ApplyEnableHardQuotaFeature", 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 int ApplyEnableHardQuotaFeature(int packageId)
{
object[] results = this.Invoke("ApplyEnableHardQuotaFeature", new object[] {
packageId });
return ((int)(results[0]));
}
//END
/// <remarks/> /// <remarks/>
public new void CancelAsync(object userState) { public new void CancelAsync(object userState) {

View file

@ -463,6 +463,17 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
//CO Changes
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CheckFileServicesInstallation", RequestNamespace = "http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace = "http://smbsaas/websitepanel/enterpriseserver", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public bool CheckFileServicesInstallation(int serviceId)
{
object[] results = this.Invoke("CheckFileServicesInstallation", new object[] {
serviceId});
return ((bool)(results[0]));
}
//END
/// <remarks/> /// <remarks/>
public new void CancelAsync(object userState) public new void CancelAsync(object userState)
{ {

View file

@ -1198,9 +1198,11 @@ namespace WebsitePanel.EnterpriseServer {
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/DeleteWebSite", 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/DeleteWebSite", 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 int DeleteWebSite(int siteItemId) { public int DeleteWebSite(int siteItemId, bool deleteWebsiteDirectory)
{
object[] results = this.Invoke("DeleteWebSite", new object[] { object[] results = this.Invoke("DeleteWebSite", new object[] {
siteItemId}); siteItemId,
deleteWebsiteDirectory});
return ((int)(results[0])); return ((int)(results[0]));
} }

View file

@ -912,5 +912,163 @@ namespace WebsitePanel.EnterpriseServer
return users.ToArray(); return users.ToArray();
} }
public static int SetFolderQuota(int packageId, string path, string driveName)
{
// check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
if (accountCheck < 0) return accountCheck;
// check package
int packageCheck = SecurityContext.CheckPackage(packageId, DemandPackage.IsActive);
if (packageCheck < 0) return packageCheck;
// place log record
TaskManager.StartTask("FILES", "SET_QUOTA_ON_FOLDER", path);
TaskManager.ItemId = packageId;
try
{
// disk space quota
// This gets all the disk space allocated for a specific customer
// It includes the package Add Ons * Quatity + Hosting Plan System disk space value.
QuotaValueInfo diskSpaceQuota = PackageController.GetPackageQuota(packageId, Quotas.OS_DISKSPACE);
#region figure Quota Unit
// Quota Unit
string unit = String.Empty;
if (diskSpaceQuota.QuotaDescription.ToLower().Contains("gb"))
unit = "GB";
else if (diskSpaceQuota.QuotaDescription.ToLower().Contains("mb"))
unit = "MB";
else
unit = "KB";
#endregion
OS.OperatingSystem os = GetOS(packageId);
os.SetQuotaLimitOnFolder(path, driveName, diskSpaceQuota.QuotaAllocatedValue.ToString() + unit, 0, String.Empty, String.Empty);
return 0;
}
catch (Exception ex)
{
//Log and return a generic error rather than throwing an exception
TaskManager.WriteError(ex);
return BusinessErrorCodes.ERROR_FILE_GENERIC_LOGGED;
}
finally
{
TaskManager.CompleteTask();
}
}
public static int ApplyEnableHardQuotaFeature(int packageId)
{
if (SecurityContext.CheckAccount(DemandAccount.IsActive | DemandAccount.IsAdmin | DemandAccount.NotDemo) != 0)
throw new Exception("This method could be called by serveradmin only.");
// place log record
TaskManager.StartTask("FILES", "APPLY_ENABLEHARDQUOTAFEATURE");
try
{
// request OS service
//int osId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os);
//if (osId == 0)
// return -1;
//OS.OperatingSystem os = new OS.OperatingSystem();
//ServiceProviderProxy.Init(os, osId);
////Get operating system settings
// StringDictionary osSesstings = ServerController.GetServiceSettings(osId);
// bool diskQuotaEnabled = (osSesstings["EnableHardQuota"] != null) ? bool.Parse(osSesstings["EnableHardQuota"]) : false;
//string driveName = osSesstings["LocationDrive"];
//if (!diskQuotaEnabled)
// return -1;
List<PackageInfo> allPackages = PackageController.GetPackagePackages(packageId, true);
foreach (PackageInfo childPackage in allPackages)
{
// request OS service
int osId = PackageController.GetPackageServiceId(childPackage.PackageId, ResourceGroups.Os);
if (osId == 0)
continue;
OS.OperatingSystem os = new OS.OperatingSystem();
ServiceProviderProxy.Init(os, osId);
//Get operating system settings
StringDictionary osSesstings = ServerController.GetServiceSettings(osId);
string driveName = osSesstings["LocationDrive"];
if (String.IsNullOrEmpty(driveName))
continue;
string homeFolder = FilesController.GetHomeFolder(childPackage.PackageId);
FilesController.SetFolderQuota(childPackage.PackageId, homeFolder, driveName);
}
}
catch (Exception ex)
{
throw TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
return 0;
}
public static int DeleteDirectoryRecursive(int packageId, string rootPath)
{
// check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
if (accountCheck < 0) return accountCheck;
// check package
int packageCheck = SecurityContext.CheckPackage(packageId, DemandPackage.IsActive);
if (packageCheck < 0) return packageCheck;
// place log record
TaskManager.StartTask("FILES", "DELETE_DIRECTORY_RECURSIVE", rootPath);
TaskManager.ItemId = packageId;
try
{
OS.OperatingSystem os = GetOS(packageId);
os.DeleteDirectoryRecursive(rootPath);
return 0;
}
catch (Exception ex)
{
//Log and return a generic error rather than throwing an exception
TaskManager.WriteError(ex);
return BusinessErrorCodes.ERROR_FILE_GENERIC_LOGGED;
}
finally
{
TaskManager.CompleteTask();
}
}
} }
} }

View file

@ -406,6 +406,15 @@ namespace WebsitePanel.EnterpriseServer
TaskManager.CompleteTask(); TaskManager.CompleteTask();
} }
} }
// Check If FSRM Role services were installed
public static bool CheckFileServicesInstallation(int serviceId)
{
OS.OperatingSystem os = GetOS(serviceId);
return os.CheckFileServicesInstallation();
}
#endregion #endregion
#region Web Platform Installer #region Web Platform Installer

View file

@ -770,6 +770,9 @@ namespace WebsitePanel.EnterpriseServer
if (result.ExceedingQuotas.Tables[0].Rows.Count > 0) if (result.ExceedingQuotas.Tables[0].Rows.Count > 0)
result.Result = BusinessErrorCodes.ERROR_PACKAGE_QUOTA_EXCEED; result.Result = BusinessErrorCodes.ERROR_PACKAGE_QUOTA_EXCEED;
// Update the Hard quota on home folder in case it was enabled and in case there was a change in disk space
UpdatePackageHardQuota(package.PackageId);
} }
finally finally
{ {
@ -963,6 +966,9 @@ namespace WebsitePanel.EnterpriseServer
homeFolder.PackageId = packageId; homeFolder.PackageId = packageId;
homeFolder.Name = path; homeFolder.Name = path;
// Added By Haya
UpdatePackageHardQuota(packageId);
// save package item // save package item
return AddPackageItem(homeFolder); return AddPackageItem(homeFolder);
} }
@ -976,6 +982,30 @@ namespace WebsitePanel.EnterpriseServer
{ {
DataProvider.UpdatePackageBandwidthUpdate(packageId, updateDate); DataProvider.UpdatePackageBandwidthUpdate(packageId, updateDate);
} }
// This gets the system quota and updates the home folder with the value
public static void UpdatePackageHardQuota(int packageId)
{
// request OS service
int osId = GetPackageServiceId(packageId, ResourceGroups.Os);
if (osId == 0)
return;
OS.OperatingSystem os = new OS.OperatingSystem();
ServiceProviderProxy.Init(os, osId);
//Get operating system settings
StringDictionary osSesstings = ServerController.GetServiceSettings(osId);
bool diskQuotaEnabled = (osSesstings["EnableHardQuota"] != null) ? bool.Parse(osSesstings["EnableHardQuota"]) : false;
string driveName = osSesstings["LocationDrive"];
if (!diskQuotaEnabled)
return;
string homeFolder = FilesController.GetHomeFolder(packageId);
FilesController.SetFolderQuota(packageId, homeFolder, driveName);
}
#endregion #endregion
@ -1035,6 +1065,8 @@ namespace WebsitePanel.EnterpriseServer
result.Result = addonId; result.Result = addonId;
// Update the Hard quota on home folder in case it was enabled and in case there was a change in disk space
UpdatePackageHardQuota(addon.PackageId);
return result; return result;
} }
@ -1062,6 +1094,9 @@ namespace WebsitePanel.EnterpriseServer
if (result.ExceedingQuotas.Tables[0].Rows.Count > 0) if (result.ExceedingQuotas.Tables[0].Rows.Count > 0)
result.Result = BusinessErrorCodes.ERROR_PACKAGE_QUOTA_EXCEED; result.Result = BusinessErrorCodes.ERROR_PACKAGE_QUOTA_EXCEED;
// Update the Hard quota on home folder in case it was enabled and in case there was a change in disk space
UpdatePackageHardQuota(addon.PackageId);
return result; return result;
} }
@ -1072,6 +1107,10 @@ namespace WebsitePanel.EnterpriseServer
| DemandAccount.IsReseller); | DemandAccount.IsReseller);
if (accountCheck < 0) return accountCheck; if (accountCheck < 0) return accountCheck;
// Update the Hard quota on home folder in case it was enabled and in case there was a change in disk space
UpdatePackageHardQuota(GetPackageAddon(packageAddonId).PackageId);
DataProvider.DeletePackageAddon(SecurityContext.User.UserId, packageAddonId); DataProvider.DeletePackageAddon(SecurityContext.User.UserId, packageAddonId);
return 0; return 0;

View file

@ -583,7 +583,7 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
public static int DeleteWebSite(int siteItemId) public static int DeleteWebSite(int siteItemId, bool deleteWebsiteDirectory)
{ {
// check account // check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
@ -655,6 +655,16 @@ namespace WebsitePanel.EnterpriseServer
// //
web.DeleteSite(siteItem.SiteId); web.DeleteSite(siteItem.SiteId);
// Delete WebManagementAccess Account
WebServerController.RevokeWebManagementAccess(siteItemId);
if (deleteWebsiteDirectory)
{
// Delete website directory from file server
// This will remove the hard quota as well
FilesController.DeleteDirectoryRecursive(siteItem.PackageId, new DirectoryInfo(siteItem.DataPath).Parent.FullName);
}
// delete service item // delete service item
PackageController.DeletePackageItem(siteItemId); PackageController.DeletePackageItem(siteItemId);

View file

@ -5,11 +5,11 @@
</configSections> </configSections>
<!-- Connection strings --> <!-- Connection strings -->
<connectionStrings> <connectionStrings>
<add name="EnterpriseServer" connectionString="Server=(local)\SQLExpress;Database=WebsitePanel;uid=sa;pwd=Password12" providerName="System.Data.SqlClient" /> <add name="EnterpriseServer" connectionString="server=localhost\sqlexpress;database=WebsitePanelBeta;uid=WebsitePanel;pwd=bdeznsrsyce58m0bc61j;" providerName="System.Data.SqlClient" />
</connectionStrings> </connectionStrings>
<appSettings> <appSettings>
<!-- Encryption util settings --> <!-- Encryption util settings -->
<add key="WebsitePanel.CryptoKey" value="1234567890" /> <add key="WebsitePanel.CryptoKey" value="84lc71526qnp8mlqx0gk" />
<!-- A1D4KDHUE83NKHddF --> <!-- A1D4KDHUE83NKHddF -->
<add key="WebsitePanel.EncryptionEnabled" value="true" /> <add key="WebsitePanel.EncryptionEnabled" value="true" />
<!-- Web Applications --> <!-- Web Applications -->

View file

@ -193,5 +193,13 @@ namespace WebsitePanel.EnterpriseServer
{ {
FilesController.ExecuteSyncActions(packageId, actions); FilesController.ExecuteSyncActions(packageId, actions);
} }
//CO Changes
[WebMethod]
public int ApplyEnableHardQuotaFeature(int packageId)
{
return FilesController.ApplyEnableHardQuotaFeature(packageId);
}
//END
} }
} }

View file

@ -93,5 +93,13 @@ namespace WebsitePanel.EnterpriseServer
{ {
return OperatingSystemController.DeleteOdbcSource(itemId); return OperatingSystemController.DeleteOdbcSource(itemId);
} }
//CO Changes
[WebMethod]
public bool CheckFileServicesInstallation(int serviceId)
{
return OperatingSystemController.CheckFileServicesInstallation(serviceId);
}
//END
} }
} }

View file

@ -152,9 +152,9 @@ namespace WebsitePanel.EnterpriseServer
} }
[WebMethod] [WebMethod]
public int DeleteWebSite(int siteItemId) public int DeleteWebSite(int siteItemId, bool deleteWebsiteDirectory)
{ {
return WebServerController.DeleteWebSite(siteItemId); return WebServerController.DeleteWebSite(siteItemId, deleteWebsiteDirectory);
} }
[WebMethod] [WebMethod]

View file

@ -81,5 +81,11 @@ namespace WebsitePanel.Providers.OS
// Synchronizing // Synchronizing
FolderGraph GetFolderGraph(string path); FolderGraph GetFolderGraph(string path);
void ExecuteSyncActions(FileSyncAction[] actions); void ExecuteSyncActions(FileSyncAction[] actions);
void SetQuotaLimitOnFolder(string folderPath, string shareNameDrive, string quotaLimit, int mode, string wmiUserName, string wmiPassword);
void DeleteDirectoryRecursive(string rootPath);
// File Services
bool CheckFileServicesInstallation();
} }
} }

View file

@ -209,6 +209,16 @@ namespace WebsitePanel.Providers.OS
SecurityUtils.GrantGroupNtfsPermissions(path, users, resetChildPermissions, SecurityUtils.GrantGroupNtfsPermissions(path, users, resetChildPermissions,
ServerSettings, usersOU, null); ServerSettings, usersOU, null);
} }
public virtual void SetQuotaLimitOnFolder(string folderPath, string shareNameDrive, string quotaLimit, int mode, string wmiUserName, string wmiPassword)
{
FileUtils.SetQuotaLimitOnFolder(folderPath, shareNameDrive, quotaLimit, mode, wmiUserName, wmiPassword);
}
public virtual void DeleteDirectoryRecursive(string rootPath)
{
FileUtils.DeleteDirectoryRecursive(rootPath);
}
#endregion #endregion
#region ODBC DSNs #region ODBC DSNs
@ -729,5 +739,11 @@ namespace WebsitePanel.Providers.OS
{ {
return WebsitePanel.Server.Utils.OS.GetVersion() == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2003; return WebsitePanel.Server.Utils.OS.GetVersion() == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2003;
} }
public virtual bool CheckFileServicesInstallation()
{
return WebsitePanel.Server.Utils.OS.CheckFileServicesInstallation();
}
} }
} }

View file

@ -131,6 +131,12 @@ namespace WebsitePanel.Providers.OS {
private System.Threading.SendOrPostCallback UpdateDSNOperationCompleted; private System.Threading.SendOrPostCallback UpdateDSNOperationCompleted;
private System.Threading.SendOrPostCallback DeleteDSNOperationCompleted; private System.Threading.SendOrPostCallback DeleteDSNOperationCompleted;
private System.Threading.SendOrPostCallback SetQuotaLimitOnFolderOperationCompleted;
private System.Threading.SendOrPostCallback DeleteDirectoryRecursiveOperationCompleted;
private System.Threading.SendOrPostCallback CheckFileServicesInstallationOperationCompleted;
/// <remarks/> /// <remarks/>
public OperatingSystem() { public OperatingSystem() {
@ -247,6 +253,16 @@ namespace WebsitePanel.Providers.OS {
/// <remarks/> /// <remarks/>
public event DeleteDSNCompletedEventHandler DeleteDSNCompleted; public event DeleteDSNCompletedEventHandler DeleteDSNCompleted;
/// <remarks/>
public event SetQuotaLimitOnFolderCompletedEventHandler SetQuotaLimitOnFolderCompleted;
/// <remarks/>
public event DeleteDirectoryRecursiveCompletedEventHandler DeleteDirectoryRecursiveCompleted;
/// <remarks/>
public event CheckFileServicesInstallationCompletedEventHandler CheckFileServicesInstallationCompleted;
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
@ -1592,7 +1608,154 @@ namespace WebsitePanel.Providers.OS {
this.ExecuteSyncActionsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); this.ExecuteSyncActionsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
} }
} }
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetQuotaLimitOnFolder", 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 SetQuotaLimitOnFolder(string folderPath, string shareNameDrive, string quotaLimit, int mode, string wmiUserName, string wmiPassword)
{
object[] results = this.Invoke("SetQuotaLimitOnFolder", new object[] {
folderPath, shareNameDrive, quotaLimit, mode, wmiUserName, wmiPassword});
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginSetQuotaLimitOnFolder(string folderPath, string shareNameDrive, string quotaLimit, int mode, string wmiUserName, string wmiPassword, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("SetQuotaLimitOnFolder", new object[] {
folderPath, shareNameDrive, quotaLimit, mode, wmiUserName, wmiPassword}, callback, asyncState);
}
/// <remarks/>
public bool EndSetQuotaLimitOnFolder(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void SetQuotaLimitOnFolderAsync(string folderPath, string shareNameDrive, string quotaLimit, int mode, string wmiUserName, string wmiPassword)
{
this.SetQuotaLimitOnFolderAsync(folderPath, shareNameDrive, quotaLimit, mode, wmiUserName, wmiPassword, null);
}
/// <remarks/>
public void SetQuotaLimitOnFolderAsync(string folderPath, string shareNameDrive, string quotaLimit, int mode, string wmiUserName, string wmiPassword, object userState)
{
if ((this.SetQuotaLimitOnFolderOperationCompleted == null))
{
this.SetQuotaLimitOnFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetQuotaLimitOnFolderOperationCompleted);
}
this.InvokeAsync("SetQuotaLimitOnFolder", new object[] {
folderPath, shareNameDrive, quotaLimit, mode, wmiUserName, wmiPassword}, this.SetQuotaLimitOnFolderOperationCompleted, userState);
}
private void OnSetQuotaLimitOnFolderOperationCompleted(object arg)
{
if ((this.SetQuotaLimitOnFolderCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.SetQuotaLimitOnFolderCompleted(this, new SetQuotaLimitOnFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteDirectoryRecursive", 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 DeleteDirectoryRecursive(string rootPath)
{
object[] results = this.Invoke("DeleteDirectoryRecursive", new object[] {
rootPath });
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginDeleteDirectoryRecursive(string rootPath, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("DeleteDirectoryRecursive", new object[] {
rootPath}, callback, asyncState);
}
/// <remarks/>
public bool EndDeleteDirectoryRecursive(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void DeleteDirectoryRecursiveAsync(string rootPath)
{
this.DeleteDirectoryRecursiveAsync(rootPath, null);
}
/// <remarks/>
public void DeleteDirectoryRecursiveAsync(string rootPath, object userState)
{
if ((this.DeleteDirectoryRecursiveOperationCompleted == null))
{
this.DeleteDirectoryRecursiveOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteDirectoryRecursiveOperationCompleted);
}
this.InvokeAsync("DeleteDirectoryRecursive", new object[] {
rootPath}, this.DeleteDirectoryRecursiveOperationCompleted, userState);
}
private void OnDeleteDirectoryRecursiveOperationCompleted(object arg)
{
if ((this.DeleteDirectoryRecursiveCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.DeleteDirectoryRecursiveCompleted(this, new DeleteDirectoryRecursiveCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckFileServicesInstallation", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public bool CheckFileServicesInstallation()
{
object[] results = this.Invoke("CheckFileServicesInstallation", new object[0]);
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginCheckFileServicesInstallation(System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CheckFileServicesInstallation", new object[0], callback, asyncState);
}
/// <remarks/>
public bool EndCheckFileServicesInstallation(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void CheckFileServicesInstallationAsync()
{
this.CheckFileServicesInstallationAsync(null);
}
/// <remarks/>
public void CheckFileServicesInstallationAsync(object userState)
{
if ((this.CheckFileServicesInstallationOperationCompleted == null))
{
this.CheckFileServicesInstallationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckFileServicesInstallationOperationCompleted);
}
this.InvokeAsync("CheckFileServicesInstallation", new object[0], this.CheckFileServicesInstallationOperationCompleted, userState);
}
private void OnCheckFileServicesInstallationOperationCompleted(object arg)
{
if ((this.CheckFileServicesInstallationCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CheckFileServicesInstallationCompleted(this, new CheckFileServicesInstallationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetInstalledOdbcDrivers", 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/GetInstalledOdbcDrivers", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
@ -2391,4 +2554,95 @@ namespace WebsitePanel.Providers.OS {
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void DeleteDSNCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); public delegate void DeleteDSNCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void SetQuotaLimitOnFolderCompletedEventHandler(object sender, SetQuotaLimitOnFolderCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class SetQuotaLimitOnFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal SetQuotaLimitOnFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public bool Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void CheckFileServicesInstallationCompletedEventHandler(object sender, CheckFileServicesInstallationCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CheckFileServicesInstallationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal CheckFileServicesInstallationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public bool Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void DeleteDirectoryRecursiveCompletedEventHandler(object sender, DeleteDirectoryRecursiveCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class DeleteDirectoryRecursiveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal DeleteDirectoryRecursiveCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public bool Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
}
}
} }

View file

@ -37,6 +37,7 @@ using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using Ionic.Zip; using Ionic.Zip;
using WebsitePanel.Providers.OS; using WebsitePanel.Providers.OS;
using System.Management;
namespace WebsitePanel.Providers.Utils namespace WebsitePanel.Providers.Utils
{ {
@ -844,6 +845,126 @@ namespace WebsitePanel.Providers.Utils
conn, null); conn, null);
cat = null; cat = null;
} }
public static void DeleteDirectoryRecursive(string rootPath)
{
// This code is done this way to force folder deletion
// even if the folder was opened
DirectoryInfo treeRoot = new DirectoryInfo(rootPath);
if (treeRoot.Exists)
{
DirectoryInfo[] dirs = treeRoot.GetDirectories();
while (dirs.Length > 0)
{
foreach (DirectoryInfo dir in dirs)
DeleteDirectoryRecursive(dir.FullName);
dirs = treeRoot.GetDirectories();
}
// DELETE THE FILES UNDER THE CURRENT ROOT
string[] files = Directory.GetFiles(treeRoot.FullName);
foreach (string file in files)
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}
Directory.Delete(treeRoot.FullName, true);
}
}
public static void SetQuotaLimitOnFolder(string folderPath, string shareNameDrive, string quotaLimit, int mode, string wmiUserName, string wmiPassword)
{
try
{
string[] splits = folderPath.Split('\\');
if (splits.Length > 0)
{
// bat file pat
string cmdFilePath = @"\\" + splits[2] + @"\" + splits[3] + @"\" + "Process.bat";
// Creating the BAT file
FileStream fs = File.Create(cmdFilePath);
if (fs != null)
{
fs.Close();
fs.Dispose();
}
StreamWriter swr = new StreamWriter(cmdFilePath);
if (swr != null)
{
swr.WriteLine(@"cd c:\windows\system32");
string sharePath = String.Empty;
if (splits.Length > 4)
{
// Form the share physicalPath
sharePath = shareNameDrive + @":\" + splits[3];
if (splits.Length == 5 && !quotaLimit.Equals(String.Empty))
{
switch (mode)
{
// Set
case 0:
// Delete the quota in case one exists
swr.WriteLine(@"dirquota quota delete /path:" + sharePath + @"\" + splits[4] + @" /remote:" + splits[2] + @" /quiet");
swr.WriteLine(@"dirquota quota add /path:" + sharePath + @"\" + splits[4] + @" /limit:" + quotaLimit + @" /remote:" + splits[2]);
break;
// Modify
case 1: swr.WriteLine(@"dirquota quota modify /path:" + sharePath + @"\" + splits[4] + @" /limit:" + quotaLimit + @" /remote:" + splits[2]);
break;
}
}
}
swr.Flush();
swr.Close();
swr.Dispose();
}
ConnectionOptions connOptions = new ConnectionOptions();
if (wmiUserName.Length > 0)
{
connOptions.Username = wmiUserName;
connOptions.Password = wmiPassword;
}
connOptions.Impersonation = ImpersonationLevel.Impersonate;
connOptions.EnablePrivileges = true;
ManagementScope manScope =
new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", splits[2]), connOptions);
manScope.Connect();
ObjectGetOptions objectGetOptions = new ObjectGetOptions();
ManagementPath managementPath = new ManagementPath("Win32_Process");
ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions);
ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
inParams["CommandLine"] = cmdFilePath;
ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);
}
}
catch
{ }
}
#region Advanced Delete #region Advanced Delete
/// <summary> /// <summary>
/// Deletes the specified file. /// Deletes the specified file.

View file

@ -30,6 +30,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Management;
namespace WebsitePanel.Server.Utils namespace WebsitePanel.Server.Utils
{ {
@ -402,6 +404,22 @@ namespace WebsitePanel.Server.Utils
{ {
return Environment.GetEnvironmentVariable("windir"); return Environment.GetEnvironmentVariable("windir");
} }
/// <summary>
/// Checks Whether the FSRM role services are installed
/// </summary>
/// <returns></returns>
public static bool CheckFileServicesInstallation()
{
ManagementClass objMC = new ManagementClass("Win32_ServerFeature");
ManagementObjectCollection objMOC = objMC.GetInstances();
foreach (ManagementObject objMO in objMOC)
if (objMO.Properties["Name"].Value.ToString().ToLower().Contains("file server resource manager"))
return true;
return false;
}
} }
} }

View file

@ -533,6 +533,55 @@ namespace WebsitePanel.Server
throw; throw;
} }
} }
[WebMethod, SoapHeader("settings")]
public void SetQuotaLimitOnFolder(string folderPath, string shareNameDrive, string quotaLimit, int mode, string wmiUserName, string wmiPassword)
{
try
{
Log.WriteStart("'{0}' SetQuotaLimitOnFolder", ProviderSettings.ProviderName);
OsProvider.SetQuotaLimitOnFolder(folderPath, shareNameDrive, quotaLimit, mode, wmiUserName, wmiPassword);
Log.WriteEnd("'{0}' SetQuotaLimitOnFolder", ProviderSettings.ProviderName);
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' SetQuotaLimitOnFolder", ProviderSettings.ProviderName), ex);
throw;
}
}
[WebMethod, SoapHeader("settings")]
public void DeleteDirectoryRecursive(string rootPath)
{
try
{
Log.WriteStart("'{0}' DeleteDirectoryRecursive", ProviderSettings.ProviderName);
OsProvider.DeleteDirectoryRecursive(rootPath);
Log.WriteEnd("'{0}' DeleteDirectoryRecursive", ProviderSettings.ProviderName);
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' DeleteDirectoryRecursive", ProviderSettings.ProviderName), ex);
throw;
}
}
[WebMethod, SoapHeader("settings")]
public bool CheckFileServicesInstallation()
{
try
{
Log.WriteStart("'{0}' CheckFileServicesInstallation", ProviderSettings.ProviderName);
return OsProvider.CheckFileServicesInstallation();
Log.WriteEnd("'{0}' CheckFileServicesInstallation", ProviderSettings.ProviderName);
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' CheckFileServicesInstallation", ProviderSettings.ProviderName), ex);
throw;
}
}
#endregion #endregion
#region Synchronizing #region Synchronizing

View file

@ -76,6 +76,9 @@
<MenuItem pageID="SpaceWebApplicationsGallery" resourceGroup="Web" quota="Web.WebAppGallery"/> <MenuItem pageID="SpaceWebApplicationsGallery" resourceGroup="Web" quota="Web.WebAppGallery"/>
<MenuItem pageID="SpaceApplicationsInstaller" resourceGroup="OS" quota="OS.AppInstaller"/> <MenuItem pageID="SpaceApplicationsInstaller" resourceGroup="OS" quota="OS.AppInstaller"/>
<MenuItem pageID="SpaceScheduledTasks" resourceGroup="OS" quota="OS.ScheduledTasks"/> <MenuItem pageID="SpaceScheduledTasks" resourceGroup="OS" quota="OS.ScheduledTasks"/>
<!--CO Changes-->
<MenuItem pageID="SpaceApplyEnableHardQuotaFeature" resourceGroup="OS" quota=""/>
<!--END-->
<!--MenuItem url="http://phpmysqladmin.com" title="phpMyAdmin" target="_blank" <!--MenuItem url="http://phpmysqladmin.com" title="phpMyAdmin" target="_blank"
resourceGroup="MySQL4"/--> resourceGroup="MySQL4"/-->
</ModuleData> </ModuleData>

View file

@ -594,4 +594,12 @@
</Controls> </Controls>
</ModuleDefinition> </ModuleDefinition>
<!-- CO Chnages-->
<ModuleDefinition id="ApplyEnableHardQuotaFeature">
<Controls>
<Control key="" src="WebsitePanel/ApplyEnableHardQuotaFeature.ascx" title="ApplyEnableHardQuotaFeature" type="View" icon="calendar_month_2_clock_48.png" />
</Controls>
</ModuleDefinition>
<!--END-->
</ModuleDefinitions> </ModuleDefinitions>

View file

@ -566,4 +566,17 @@
</Pages> </Pages>
</Page> </Page>
<!-- CO Changes -->
<Page name="SpaceApplyEnableHardQuotaFeature" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
<Content id="LeftPane">
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
<ModuleData ref="SpaceMenu"/>
</Module>
</Content>
<Content id="ContentPane">
<Module moduleDefinitionID="ApplyEnableHardQuotaFeature" title="ApplyEnableHardQuotaFeature" icon="cabinet_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
</Content>
</Page>
<!--END-->
</Pages> </Pages>

View file

@ -762,10 +762,13 @@
<data name="ModuleTitle.SystemCenterServerAddresses" xml:space="preserve"> <data name="ModuleTitle.SystemCenterServerAddresses" xml:space="preserve">
<value>System Center Server Addresses</value> <value>System Center Server Addresses</value>
</data> </data>
<data name="ModuleTitle.UserAccountVLanCreate" xml:space="preserve"> <data name="ModuleTitle.UserAccountVLanCreate" xml:space="preserve">
<value>Add VLan to user</value> <value>Add VLan to user</value>
</data> </data>
<data name="ModuleTitle.SetupControlPanelAccounts" xml:space="preserve"> <data name="ModuleTitle.SetupControlPanelAccounts" xml:space="preserve">
<value>Setup WebsitePanel Accounts</value> <value>Setup WebsitePanel Accounts</value>
</data> </data>
<data name="ModuleTitle.ApplyEnableHardQuotaFeature" xml:space="preserve">
<value>System Hard Quota</value>
</data>
</root> </root>

View file

@ -459,4 +459,7 @@
<data name="PageTitle.SpaceVPSForPC" xml:space="preserve"> <data name="PageTitle.SpaceVPSForPC" xml:space="preserve">
<value>{user} - {space} - Virtual Private Servers for Private Cloud</value> <value>{user} - {space} - Virtual Private Servers for Private Cloud</value>
</data> </data>
<data name="PageName.SpaceApplyEnableHardQuotaFeature" xml:space="preserve">
<value>System Hard Quota</value>
</data>
</root> </root>

View file

@ -2124,7 +2124,6 @@
<data name="ServiceItemType.HostHeader" xml:space="preserve"> <data name="ServiceItemType.HostHeader" xml:space="preserve">
<value>Web Site Host Header</value> <value>Web Site Host Header</value>
</data> </data>
<data name="AuditLogSource.APP_INSTALLER" xml:space="preserve"> <data name="AuditLogSource.APP_INSTALLER" xml:space="preserve">
<value>Applications Installer</value> <value>Applications Installer</value>
</data> </data>
@ -5243,4 +5242,10 @@
<data name="Success.WEB_SWITCH_TO_SHARED_IP" xml:space="preserve"> <data name="Success.WEB_SWITCH_TO_SHARED_IP" xml:space="preserve">
<value>Web site has been updated to shared IP</value> <value>Web site has been updated to shared IP</value>
</data> </data>
<data name="Warning.ApplyEnableHardQuotaFeature" xml:space="preserve">
<value>Apply Enable Hard Quota Feature</value>
</data>
<data name="WarningDescription.ApplyEnableHardQuotaFeature" xml:space="preserve">
<value>By clicking on the button 'Apply', you will apply the respective hard quota on each provisioned home folder. Note that this may take some time.</value>
</data>
</root> </root>

View file

@ -486,4 +486,7 @@ To connect to web site management service please use username and password provi
<data name="locSharedIPAddress.Text" xml:space="preserve"> <data name="locSharedIPAddress.Text" xml:space="preserve">
<value>IP address: Shared</value> <value>IP address: Shared</value>
</data> </data>
<data name="chkDeleteWebsiteDirectory.Text" xml:space="preserve">
<value>Force delete website directory?</value>
</data>
</root> </root>

View file

@ -0,0 +1,19 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ApplyEnableHardQuotaFeature.ascx.cs" Inherits="WebsitePanel.Portal.ApplyEnableHardQuotaFeature" %>
<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="messageBox" TagPrefix="uc4" %>
<div class="FormBody">
<table cellspacing="0" cellpadding="4" width="100%">
<tr>
<td class="Normal">
<uc4:messageBox id="messageBox" runat="server" >
</uc4:messageBox>
</td>
</tr>
</table>
</div>
<div class="FormFooter">
<asp:Button ID="btnUpdate" runat="server" meta:resourcekey="btnUpdate" CssClass="Button1" Text="Apply" OnClick="btnUpdate_Click"></asp:Button>
</div>

View file

@ -0,0 +1,74 @@
// 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.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.EnterpriseServer.Base.Scheduling;
using WebsitePanel.Portal.Code.Framework;
namespace WebsitePanel.Portal
{
public partial class ApplyEnableHardQuotaFeature : WebsitePanelModuleBase
{
public int PackageId
{
get { return PanelSecurity.PackageId; }
}
protected void Page_Load(object sender, EventArgs e)
{
messageBox.ShowWarningMessage("ApplyEnableHardQuotaFeature");
}
private void Update()
{
try
{
ES.Services.Files.ApplyEnableHardQuotaFeature(PackageId);
// redirect
Response.Redirect(NavigatePageURL("SpaceHome", "SpaceID", PackageId.ToString()));
}
catch (Exception ex)
{
messageBox.ShowErrorMessage("APPLY_QUOTA", ex);
}
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
Update();
}
}
}

View file

@ -0,0 +1,33 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal {
public partial class ApplyEnableHardQuotaFeature {
/// <summary>
/// messageBox control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
/// <summary>
/// btnUpdate 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.Button btnUpdate;
}
}

View file

@ -112,11 +112,17 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="chkEnableHardQuota.Text" xml:space="preserve">
<value>Enable Hard Quota:</value>
</data>
<data name="lblLocationDrive.Text" xml:space="preserve">
<value>Location Drive:</value>
</data>
<data name="lblSpacesFolder.Text" xml:space="preserve"> <data name="lblSpacesFolder.Text" xml:space="preserve">
<value>Hosting Spaces Folder:</value> <value>Hosting Spaces Folder:</value>
</data> </data>

View file

@ -1,9 +1,36 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Windows2008_Settings.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.Windows2008_Settings" %> <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Windows2008_Settings.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.Windows2008_Settings" %>
<table cellpadding="1" cellspacing="0" width="100%"> <table cellpadding="1" cellspacing="0" width="100%">
<tr> <tr>
<td class="SubHead" width="200" nowrap> <td class="SubHead" width="200" nowrap>
<asp:Label ID="lblSpacesFolder" runat="server" meta:resourcekey="lblSpacesFolder" Text="User Packages Folder:"></asp:Label> <asp:Label ID="lblSpacesFolder" runat="server" meta:resourcekey="lblSpacesFolder" Text="User Packages Folder:"></asp:Label>
</td> </td>
<td width="100%"><asp:TextBox Runat="server" ID="txtFolder" Width="300px" CssClass="NormalTextBox"></asp:TextBox></td> <td width="100%">
</tr> <asp:TextBox runat="server" ID="txtFolder" Width="300px" CssClass="NormalTextBox"></asp:TextBox></td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap>
<asp:Label ID="lblLocationDrive" runat="server" meta:resourcekey="lblLocationDrive" Text="Location Drive:"></asp:Label>
</td>
<td width="100%">
<asp:TextBox runat="server" ID="txtLocationDrive" Width="50px" MaxLength="1" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valLocationDrive" runat="server" ControlToValidate="txtLocationDrive"
ErrorMessage="*"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap></td>
<td width="100%">
<table>
<tr>
<td>
<asp:CheckBox runat="server" AutoPostBack="false" ID="chkEnableHardQuota" meta:resourcekey="chkEnableHardQuota" Text="Enable Hard Quota:" /></td>
</tr>
<tr>
<td>
<asp:Label runat="server" ID="lblFileServiceInfo" Text="Install File Services role on the file server to enable the check box" Font-Italic="true" Visible="false"></asp:Label></td>
</tr>
</table>
</td>
</tr>
</table> </table>

View file

@ -44,16 +44,40 @@ namespace WebsitePanel.Portal.ProviderControls
{ {
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
//CO Changes
if (!IsPostBack)
{
try
{
chkEnableHardQuota.Enabled = ES.Services.OperatingSystems.CheckFileServicesInstallation(PanelRequest.ServiceId);
txtLocationDrive.Enabled = chkEnableHardQuota.Enabled;
valLocationDrive.Enabled = chkEnableHardQuota.Enabled;
if (!chkEnableHardQuota.Enabled)
lblFileServiceInfo.Visible = true;
}
catch
{
}
}
//END
} }
public void BindSettings(StringDictionary settings) public void BindSettings(StringDictionary settings)
{ {
txtFolder.Text = settings["UsersHome"]; txtFolder.Text = settings["UsersHome"];
//CO Changes
txtLocationDrive.Text = settings["LocationDrive"];
chkEnableHardQuota.Checked = settings["EnableHardQuota"] == "true" ? true : false;
//END
} }
public void SaveSettings(StringDictionary settings) public void SaveSettings(StringDictionary settings)
{ {
settings["UsersHome"] = txtFolder.Text; settings["UsersHome"] = txtFolder.Text;
//CO Changes
settings["LocationDrive"] = txtLocationDrive.Text;
settings["EnableHardQuota"] = chkEnableHardQuota.Checked.ToString().ToLower();
//END
} }
} }
} }

View file

@ -1,22 +1,15 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:2.0.50727.312
// //
// 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.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls { namespace WebsitePanel.Portal.ProviderControls {
/// <summary>
/// Windows2008_Settings class.
/// </summary>
/// <remarks>
/// Auto-generated class.
/// </remarks>
public partial class Windows2008_Settings { public partial class Windows2008_Settings {
/// <summary> /// <summary>
@ -36,5 +29,50 @@ namespace WebsitePanel.Portal.ProviderControls {
/// To modify move field declaration from designer file to code-behind file. /// To modify move field declaration from designer file to code-behind file.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtFolder; protected global::System.Web.UI.WebControls.TextBox txtFolder;
/// <summary>
/// lblLocationDrive 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.Label lblLocationDrive;
/// <summary>
/// txtLocationDrive 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 txtLocationDrive;
/// <summary>
/// valLocationDrive 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 valLocationDrive;
/// <summary>
/// chkEnableHardQuota 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 chkEnableHardQuota;
/// <summary>
/// lblFileServiceInfo 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.Label lblFileServiceInfo;
} }
} }

View file

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="chkEnableHardQuota.Text" xml:space="preserve">
<value>Enable Hard Quota:</value>
</data>
<data name="lblLocationDrive.Text" xml:space="preserve">
<value>Location Drive:</value>
</data>
<data name="lblSpacesFolder.Text" xml:space="preserve">
<value>Hosting Spaces Folder:</value>
</data>
</root>

View file

@ -1,119 +1,119 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebSitesEditSite.ascx.cs" <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebSitesEditSite.ascx.cs"
Inherits="WebsitePanel.Portal.WebSitesEditSite" %> Inherits="WebsitePanel.Portal.WebSitesEditSite" %>
<%@ Import Namespace="WebsitePanel.Portal" %> <%@ Import Namespace="WebsitePanel.Portal" %>
<%@ Register Src="WebSitesExtensionsControl.ascx" TagName="WebSitesExtensionsControl" TagPrefix="uc6" %> <%@ Register Src="WebSitesExtensionsControl.ascx" TagName="WebSitesExtensionsControl" TagPrefix="uc6" %>
<%@ Register Src="WebSitesCustomErrorsControl.ascx" TagName="WebSitesCustomErrorsControl" TagPrefix="uc4" %> <%@ Register Src="WebSitesCustomErrorsControl.ascx" TagName="WebSitesCustomErrorsControl" TagPrefix="uc4" %>
<%@ Register Src="WebSitesMimeTypesControl.ascx" TagName="WebSitesMimeTypesControl" TagPrefix="uc5" %> <%@ Register Src="WebSitesMimeTypesControl.ascx" TagName="WebSitesMimeTypesControl" TagPrefix="uc5" %>
<%@ Register Src="WebSitesHomeFolderControl.ascx" TagName="WebSitesHomeFolderControl" TagPrefix="uc1" %> <%@ Register Src="WebSitesHomeFolderControl.ascx" TagName="WebSitesHomeFolderControl" TagPrefix="uc1" %>
<%@ Register Src="WebSitesCustomHeadersControl.ascx" TagName="WebSitesCustomHeadersControl" TagPrefix="uc6" %> <%@ Register Src="WebSitesCustomHeadersControl.ascx" TagName="WebSitesCustomHeadersControl" TagPrefix="uc6" %>
<%@ Register Src="WebSitesSecuredFoldersControl.ascx" TagName="WebSitesSecuredFoldersControl" TagPrefix="wsp" %> <%@ Register Src="WebSitesSecuredFoldersControl.ascx" TagName="WebSitesSecuredFoldersControl" TagPrefix="wsp" %>
<%@ Register Src="WebSitesHeliconApeControl.ascx" TagName="WebSitesHeliconApeControl" TagPrefix="wsp" %> <%@ Register Src="WebSitesHeliconApeControl.ascx" TagName="WebSitesHeliconApeControl" TagPrefix="wsp" %>
<%@ Register Src="UserControls/PasswordControl.ascx" TagName="PasswordControl" TagPrefix="wsp" %> <%@ Register Src="UserControls/PasswordControl.ascx" TagName="PasswordControl" TagPrefix="wsp" %>
<%@ Register Src="UserControls/UsernameControl.ascx" TagName="UsernameControl" TagPrefix="wsp" %> <%@ Register Src="UserControls/UsernameControl.ascx" TagName="UsernameControl" TagPrefix="wsp" %>
<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> <%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> <%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
<%@ Register Src="UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %> <%@ Register Src="UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %>
<%@ Register TagPrefix="wsp" Namespace="WebsitePanel.Portal" %> <%@ Register TagPrefix="wsp" Namespace="WebsitePanel.Portal" %>
<%@ Register Src="WebsitesSSL.ascx" TagName="WebsitesSSL" TagPrefix="uc2" %> <%@ Register Src="WebsitesSSL.ascx" TagName="WebsitesSSL" TagPrefix="uc2" %>
<style type="text/css"> <style type="text/css">
.style1 .style1
{ {
width: 51px; width: 51px;
} }
</style> </style>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" /> <wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" />
<script type="text/javascript"> <script type="text/javascript">
function confirmationSITE() { function confirmationSITE() {
if (!confirm("Are you sure you want to delete Web site?")) return false; else ShowProgressDialog('Deleting Web site...'); if (!confirm("Are you sure you want to delete Web site?")) return false; else ShowProgressDialog('Deleting Web site...');
} }
function confirmationFPSE() { function confirmationFPSE() {
if (!confirm("Are you sure you want to delete Frontpage account?")) return false; else ShowProgressDialog('Uninstalling Frontpage...'); if (!confirm("Are you sure you want to delete Frontpage account?")) return false; else ShowProgressDialog('Uninstalling Frontpage...');
} }
function confirmationWMSVC() { function confirmationWMSVC() {
if (!confirm("Are you sure you want to disable Remote Management?")) return false; else ShowProgressDialog('Disabling Remote Management...'); if (!confirm("Are you sure you want to disable Remote Management?")) return false; else ShowProgressDialog('Disabling Remote Management...');
} }
function confirmationWebDeployPublishing() { function confirmationWebDeployPublishing() {
if (!confirm("Are you sure you want to disable Web Publishing?")) return false; else ShowProgressDialog('Disabling Web Publishing...'); if (!confirm("Are you sure you want to disable Web Publishing?")) return false; else ShowProgressDialog('Disabling Web Publishing...');
} }
</script> </script>
<asp:Panel ID="WDeployBuildPublishingProfileWizardPanel" runat="server" CssClass="PopupContainer" <asp:Panel ID="WDeployBuildPublishingProfileWizardPanel" runat="server" CssClass="PopupContainer"
DefaultButton="PubProfileWizardOkButton" Style="display: none;"> DefaultButton="PubProfileWizardOkButton" Style="display: none;">
<wsp:PopupHeader runat="server" meta:resourcekey="WDeployBuildPublishingProfileWizard" /> <wsp:PopupHeader runat="server" meta:resourcekey="WDeployBuildPublishingProfileWizard" />
<div class="Content"> <div class="Content">
<asp:UpdatePanel runat="server" ID="WDeployPubProfilePanel" UpdateMode="Conditional" ChildrenAsTriggers="true"> <asp:UpdatePanel runat="server" ID="WDeployPubProfilePanel" UpdateMode="Conditional" ChildrenAsTriggers="true">
<Triggers> <Triggers>
<asp:AsyncPostBackTrigger ControlID="MyDatabaseList" EventName="SelectedIndexChanged" /> <asp:AsyncPostBackTrigger ControlID="MyDatabaseList" EventName="SelectedIndexChanged" />
</Triggers> </Triggers>
<ContentTemplate> <ContentTemplate>
<div class="FormBody"> <div class="FormBody">
<asp:PlaceHolder runat="server" ID="ChooseDatabasePanel"> <asp:PlaceHolder runat="server" ID="ChooseDatabasePanel">
<fieldset> <fieldset>
<legend> <legend>
<asp:Localize ID="Localize1" runat="server" Text="Database Name" /></legend> <asp:Localize ID="Localize1" runat="server" Text="Database Name" /></legend>
<div class="FormFieldDescription"> <div class="FormFieldDescription">
<asp:Localize ID="Localize2" runat="server">Please choose database name...</asp:Localize> <asp:Localize ID="Localize2" runat="server">Please choose database name...</asp:Localize>
</div> </div>
<div class="FormField"> <div class="FormField">
<asp:DropDownList ID="MyDatabaseList" runat="server" DataTextField="Name" DataValueField="Id" <asp:DropDownList ID="MyDatabaseList" runat="server" DataTextField="Name" DataValueField="Id"
AutoPostBack="true" Width="100%" OnSelectedIndexChanged="MyDatabaseList_SelectedIndexChanged"> AutoPostBack="true" Width="100%" OnSelectedIndexChanged="MyDatabaseList_SelectedIndexChanged">
</asp:DropDownList> </asp:DropDownList>
</div> </div>
</fieldset> </fieldset>
</asp:PlaceHolder> </asp:PlaceHolder>
<asp:PlaceHolder runat="server" ID="ChooseDatabaseUserPanel"> <asp:PlaceHolder runat="server" ID="ChooseDatabaseUserPanel">
<fieldset> <fieldset>
<legend> <legend>
<asp:Localize ID="Localize3" runat="server" Text="Database User" /></legend> <asp:Localize ID="Localize3" runat="server" Text="Database User" /></legend>
<div class="FormFieldDescription"> <div class="FormFieldDescription">
<asp:Localize ID="Localize4" runat="server">Please choose database user name...</asp:Localize> <asp:Localize ID="Localize4" runat="server">Please choose database user name...</asp:Localize>
</div> </div>
<div class="FormField"> <div class="FormField">
<asp:DropDownList ID="MyDatabaseUserList" runat="server" DataTextField="Name" DataValueField="Id" Width="100%"> <asp:DropDownList ID="MyDatabaseUserList" runat="server" DataTextField="Name" DataValueField="Id" Width="100%">
</asp:DropDownList> </asp:DropDownList>
</div> </div>
</fieldset> </fieldset>
</asp:PlaceHolder> </asp:PlaceHolder>
<asp:PlaceHolder runat="server" ID="ChooseFtpAccountPanel"> <asp:PlaceHolder runat="server" ID="ChooseFtpAccountPanel">
<fieldset> <fieldset>
<legend> <legend>
<asp:Localize ID="Localize5" runat="server" Text="FTP Account" /></legend> <asp:Localize ID="Localize5" runat="server" Text="FTP Account" /></legend>
<div class="FormFieldDescription"> <div class="FormFieldDescription">
<asp:Localize ID="Localize6" runat="server">Please choose FTP account...</asp:Localize> <asp:Localize ID="Localize6" runat="server">Please choose FTP account...</asp:Localize>
</div> </div>
<div class="FormField"> <div class="FormField">
<asp:DropDownList ID="MyFtpAccountList" runat="server" DataTextField="Name" DataValueField="Id" Width="100%"> <asp:DropDownList ID="MyFtpAccountList" runat="server" DataTextField="Name" DataValueField="Id" Width="100%">
</asp:DropDownList> </asp:DropDownList>
</div> </div>
</fieldset> </fieldset>
</asp:PlaceHolder> </asp:PlaceHolder>
</div> </div>
</ContentTemplate> </ContentTemplate>
</asp:UpdatePanel> </asp:UpdatePanel>
<div class="FormFooter"> <div class="FormFooter">
<asp:Button ID="PubProfileWizardOkButton" runat="server" CssClass="Button1" meta:resourcekey="PubProfileWizardOkButton" <asp:Button ID="PubProfileWizardOkButton" runat="server" CssClass="Button1" meta:resourcekey="PubProfileWizardOkButton"
Text="OK" ValidationGroup="WDeployBuildPublishingProfileWizard" OnClick="PubProfileWizardOkButton_Click" /> Text="OK" ValidationGroup="WDeployBuildPublishingProfileWizard" OnClick="PubProfileWizardOkButton_Click" />
<asp:Button ID="PubProfileWizardCancelButton" runat="server" CssClass="Button1" meta:resourcekey="PubProfileWizardCancelButton" <asp:Button ID="PubProfileWizardCancelButton" runat="server" CssClass="Button1" meta:resourcekey="PubProfileWizardCancelButton"
ValidationGroup="WDeployBuildPublishingProfileWizard" Text="Cancel" CausesValidation="false" /> ValidationGroup="WDeployBuildPublishingProfileWizard" Text="Cancel" CausesValidation="false" />
</div> </div>
</div> </div>
</asp:Panel> </asp:Panel>
<ajaxToolkit:ModalPopupExtender ID="WDeployRebuildPublishingProfileWizardModal" runat="server" <ajaxToolkit:ModalPopupExtender ID="WDeployRebuildPublishingProfileWizardModal" runat="server"
TargetControlID="WDeployRebuildPubProfileLinkButton" PopupControlID="WDeployBuildPublishingProfileWizardPanel" TargetControlID="WDeployRebuildPubProfileLinkButton" PopupControlID="WDeployBuildPublishingProfileWizardPanel"
BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="PubProfileWizardCancelButton" /> BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="PubProfileWizardCancelButton" />
<div class="FormBody"> <div class="FormBody">
<wsp:SimpleMessageBox id="messageBox" runat="server" EnableViewState="false" /> <wsp:SimpleMessageBox id="messageBox" runat="server" EnableViewState="false" />
<table style="width:100%" cellpadding="0" cellspacing="0" border="0"> <table style="width: 100%" cellpadding="0" cellspacing="0" border="0">
<tr> <tr>
<td valign="top"> <td valign="top">
<table cellpadding="7" border="0"> <table cellpadding="7" border="0">
<tr> <tr>
<td class="Big"> <td class="Big">
<asp:HyperLink ID="lnkSiteName" runat="server" NavigateUrl="#" Target="_blank">domain.com</asp:HyperLink> <asp:HyperLink ID="lnkSiteName" runat="server" NavigateUrl="#" Target="_blank">domain.com</asp:HyperLink>
</td> </td>
<td> <td>
<asp:Panel ID="sharedIP" runat="server"> <asp:Panel ID="sharedIP" runat="server">
<asp:Localize ID="locSharedIPAddress" runat="server" meta:resourcekey="locSharedIPAddress" Text="IP address: Shared" /> <asp:Localize ID="locSharedIPAddress" runat="server" meta:resourcekey="locSharedIPAddress" Text="IP address: Shared" />
@ -128,376 +128,386 @@
</asp:Panel> </asp:Panel>
<asp:Panel ID="switchToDedicatedIP" runat="server" Visible="false"> <asp:Panel ID="switchToDedicatedIP" runat="server" Visible="false">
<asp:Localize ID="locSelectIPAddress" runat="server" meta:resourcekey="locSelectIPAddress" Text="Select IP address:" /> <asp:Localize ID="locSelectIPAddress" runat="server" meta:resourcekey="locSelectIPAddress" Text="Select IP address:" />
<asp:dropdownlist id="ddlIpAddresses" Runat="server" CssClass="NormalTextBox"></asp:dropdownlist> <asp:DropDownList ID="ddlIpAddresses" runat="server" CssClass="NormalTextBox"></asp:DropDownList>
&nbsp; &nbsp;
<asp:LinkButton ID="cmdApplyDedicatedIP" meta:resourcekey="cmdApplyDedicatedIP" runat="server" Text="Apply" OnClick="cmdApplyDedicatedIP_Click"></asp:LinkButton> <asp:LinkButton ID="cmdApplyDedicatedIP" meta:resourcekey="cmdApplyDedicatedIP" runat="server" Text="Apply" OnClick="cmdApplyDedicatedIP_Click"></asp:LinkButton>
&nbsp; &nbsp;
<asp:LinkButton ID="cmdCancelDedicatedIP" meta:resourcekey="cmdCancelDedicatedIP" runat="server" Text="Cancel" OnClick="cmdCancelDedicatedIP_Click"></asp:LinkButton> <asp:LinkButton ID="cmdCancelDedicatedIP" meta:resourcekey="cmdCancelDedicatedIP" runat="server" Text="Cancel" OnClick="cmdCancelDedicatedIP_Click"></asp:LinkButton>
</asp:Panel> </asp:Panel>
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="2"> <td colspan="2">
<div class="FormButtonsBar"> <div class="FormButtonsBar">
<asp:Button ID="btnAddPointer" runat="server" Text="Add Pointer" CssClass="Button2" <asp:Button ID="btnAddPointer" runat="server" Text="Add Pointer" CssClass="Button2"
meta:resourcekey="btnAddPointer" OnClick="btnAddPointer_Click" /> meta:resourcekey="btnAddPointer" OnClick="btnAddPointer_Click" />
</div> </div>
<asp:GridView ID="gvPointers" runat="server" EnableViewState="True" AutoGenerateColumns="false" <asp:GridView ID="gvPointers" runat="server" EnableViewState="True" AutoGenerateColumns="false"
ShowHeader="false" CssSelectorClass="NormalGridView" EmptyDataText="gvPointers" ShowHeader="false" CssSelectorClass="NormalGridView" EmptyDataText="gvPointers"
DataKeyNames="DomainID" OnRowDeleting="gvPointers_RowDeleting"> DataKeyNames="DomainID" OnRowDeleting="gvPointers_RowDeleting">
<Columns> <Columns>
<asp:TemplateField HeaderText="gvPointersName"> <asp:TemplateField HeaderText="gvPointersName">
<ItemStyle Wrap="false" Width="100%"></ItemStyle> <ItemStyle Wrap="false" Width="100%"></ItemStyle>
<ItemTemplate> <ItemTemplate>
<asp:HyperLink ID="lnkPointer" runat="server" NavigateUrl='<%# "http://" + (string)Eval("DomainName") %>' <asp:HyperLink ID="lnkPointer" runat="server" NavigateUrl='<%# "http://" + (string)Eval("DomainName") %>'
Target="_blank"><%# Eval("DomainName") %></asp:HyperLink> Target="_blank"><%# Eval("DomainName") %></asp:HyperLink>
<asp:ImageButton runat="server" SkinID="DeleteSmall" ID="cmdDeletePointer" CommandName='delete' <asp:ImageButton runat="server" SkinID="DeleteSmall" ID="cmdDeletePointer" CommandName='delete'
CommandArgument='<%# Eval("DomainId") %>' meta:resourcekey="cmdDeletePointer" CommandArgument='<%# Eval("DomainId") %>' meta:resourcekey="cmdDeletePointer"
Visible='<%# !(bool)Eval("IsInstantAlias") %>' OnClientClick="return confirm('Remove pointer?');"> Visible='<%# !(bool)Eval("IsInstantAlias") %>' OnClientClick="return confirm('Remove pointer?');"></asp:ImageButton>
</asp:ImageButton> </ItemTemplate>
</ItemTemplate> </asp:TemplateField>
</asp:TemplateField> </Columns>
</Columns> </asp:GridView>
</asp:GridView> </td>
</td> </tr>
</tr> </table>
</table> </td>
</td> <td nowrap valign="top" align="right">
<td nowrap valign="top" align="right"> <table cellpadding="7" width="150px">
<table cellpadding="7" width="150px"> <tr>
<tr> <td class="MediumBold" align="center">
<td class="MediumBold" align="center"> <asp:Literal ID="litStatus" runat="server"></asp:Literal>
<asp:Literal ID="litStatus" runat="server"></asp:Literal> </td>
</td> </tr>
</tr> <tr>
<tr> <td align="center">
<td align="center"> <asp:ImageButton ID="cmdStart" runat="server" SkinID="StartMedium" meta:resourcekey="cmdStart"
<asp:ImageButton ID="cmdStart" runat="server" SkinID="StartMedium" meta:resourcekey="cmdStart" CommandName="Started" OnClick="cmdChangeState_Click" />
CommandName="Started" OnClick="cmdChangeState_Click" /> <asp:ImageButton ID="cmdPause" runat="server" SkinID="PauseMedium" meta:resourcekey="cmdPause"
<asp:ImageButton ID="cmdPause" runat="server" SkinID="PauseMedium" meta:resourcekey="cmdPause" CommandName="Paused" OnClick="cmdChangeState_Click" />
CommandName="Paused" OnClick="cmdChangeState_Click" /> <asp:ImageButton ID="cmdContinue" runat="server" SkinID="ContinueMedium" meta:resourcekey="cmdContinue"
<asp:ImageButton ID="cmdContinue" runat="server" SkinID="ContinueMedium" meta:resourcekey="cmdContinue" CommandName="Continuing" OnClick="cmdChangeState_Click" />
CommandName="Continuing" OnClick="cmdChangeState_Click" /> <asp:ImageButton ID="cmdStop" runat="server" SkinID="StopMedium" meta:resourcekey="cmdStop"
<asp:ImageButton ID="cmdStop" runat="server" SkinID="StopMedium" meta:resourcekey="cmdStop" CommandName="Stopped" OnClick="cmdChangeState_Click" />
CommandName="Stopped" OnClick="cmdChangeState_Click" /> </td>
</td> </tr>
</tr> </table>
</table> </td>
</td> </tr>
</tr> <tr>
<tr> <td colspan="2">
<td colspan="2"> <table width="100%" cellpadding="0" cellspacing="1">
<table width="100%" cellpadding="0" cellspacing="1"> <tr>
<tr> <td class="Tabs">&nbsp;&nbsp;
<td class="Tabs">
&nbsp;&nbsp;
<asp:DataList ID="dlTabs" runat="server" RepeatDirection="Horizontal" OnSelectedIndexChanged="dlTabs_SelectedIndexChanged" <asp:DataList ID="dlTabs" runat="server" RepeatDirection="Horizontal" OnSelectedIndexChanged="dlTabs_SelectedIndexChanged"
RepeatLayout="Flow" DataKeyField="ViewId"> RepeatLayout="Flow" DataKeyField="ViewId">
<ItemStyle Wrap="False" /> <ItemStyle Wrap="False" />
<ItemTemplate> <ItemTemplate>
<asp:LinkButton ID="cmdSelectTab" runat="server" CommandName="select" CssClass="Tab"> <asp:LinkButton ID="cmdSelectTab" runat="server" CommandName="select" CssClass="Tab">
<%# Eval("Name") %> <%# Eval("Name") %>
</asp:LinkButton> </asp:LinkButton>
</ItemTemplate> </ItemTemplate>
<SelectedItemStyle Wrap="False" /> <SelectedItemStyle Wrap="False" />
<SelectedItemTemplate> <SelectedItemTemplate>
<asp:LinkButton ID="cmdSelectTab" runat="server" CommandName="select" CssClass="ActiveTab"> <asp:LinkButton ID="cmdSelectTab" runat="server" CommandName="select" CssClass="ActiveTab">
<%# Eval("Name") %> <%# Eval("Name") %>
</asp:LinkButton> </asp:LinkButton>
</SelectedItemTemplate> </SelectedItemTemplate>
</asp:DataList> </asp:DataList>
</td> </td>
</tr> </tr>
</table> </table>
<div class="FormBody"> <div class="FormBody">
<asp:MultiView ID="tabs" runat="server" ActiveViewIndex="0"> <asp:MultiView ID="tabs" runat="server" ActiveViewIndex="0">
<asp:View ID="tabHomeFolder" runat="server"> <asp:View ID="tabHomeFolder" runat="server">
<uc1:WebSitesHomeFolderControl ID="webSitesHomeFolderControl" runat="server" /> <uc1:WebSitesHomeFolderControl ID="webSitesHomeFolderControl" runat="server" />
</asp:View> </asp:View>
<asp:View ID="tabVirtualDirs" runat="server"> <asp:View ID="tabVirtualDirs" runat="server">
<div style="width: 500px;"> <div style="width: 500px;">
<div class="FormButtonsBar"> <div class="FormButtonsBar">
<asp:Button ID="btnAddVirtualDirectory" runat="server" meta:resourcekey="btnAddVirtualDirectory" <asp:Button ID="btnAddVirtualDirectory" runat="server" meta:resourcekey="btnAddVirtualDirectory"
Text="Create Directory" CssClass="Button3" CausesValidation="false" OnClick="btnAddVirtualDirectory_Click" /> Text="Create Directory" CssClass="Button3" CausesValidation="false" OnClick="btnAddVirtualDirectory_Click" />
</div> </div>
<asp:GridView ID="gvVirtualDirectories" runat="server" EnableViewState="True" AutoGenerateColumns="false" <asp:GridView ID="gvVirtualDirectories" runat="server" EnableViewState="True" AutoGenerateColumns="false"
ShowHeader="true" CssSelectorClass="NormalGridView" EmptyDataText="gvVirtualDirectories"> ShowHeader="true" CssSelectorClass="NormalGridView" EmptyDataText="gvVirtualDirectories">
<Columns> <Columns>
<asp:TemplateField HeaderText="gvVirtualDirectoriesName"> <asp:TemplateField HeaderText="gvVirtualDirectoriesName">
<ItemStyle Width="50%" CssClass="NormalBold"></ItemStyle> <ItemStyle Width="50%" CssClass="NormalBold"></ItemStyle>
<ItemTemplate> <ItemTemplate>
<asp:HyperLink ID="lnkEditVDir" runat="server" NavigateUrl='<%# EditUrl("ItemID", PanelRequest.ItemID.ToString(), "edit_vdir", "VirtDir=" + Eval("Name"), "SpaceID=" + PanelSecurity.PackageId) %>'> <asp:HyperLink ID="lnkEditVDir" runat="server" NavigateUrl='<%# EditUrl("ItemID", PanelRequest.ItemID.ToString(), "edit_vdir", "VirtDir=" + Eval("Name"), "SpaceID=" + PanelSecurity.PackageId) %>'>
<%# Eval("Name") %> <%# Eval("Name") %>
</asp:HyperLink> </asp:HyperLink>
</ItemTemplate> </ItemTemplate>
</asp:TemplateField> </asp:TemplateField>
<asp:BoundField DataField="ContentPath" HeaderText="gvVirtualDirectoriesPath"> <asp:BoundField DataField="ContentPath" HeaderText="gvVirtualDirectoriesPath">
<ItemStyle Width="100%" /> <ItemStyle Width="100%" />
</asp:BoundField> </asp:BoundField>
</Columns> </Columns>
</asp:GridView> </asp:GridView>
</div> </div>
</asp:View> </asp:View>
<asp:View ID="tabSecuredFolders" runat="server"> <asp:View ID="tabSecuredFolders" runat="server">
<wsp:WebSitesSecuredFoldersControl ID="webSitesSecuredFoldersControl" runat="server" /> <wsp:WebSitesSecuredFoldersControl ID="webSitesSecuredFoldersControl" runat="server" />
</asp:View> </asp:View>
<asp:View ID="tabHeliconApe" runat="server"> <asp:View ID="tabHeliconApe" runat="server">
<wsp:WebSitesHeliconApeControl ID="webSitesHeliconApeControl" runat="server" /> <wsp:WebSitesHeliconApeControl ID="webSitesHeliconApeControl" runat="server" />
</asp:View> </asp:View>
<asp:View ID="tabFrontPage" runat="server"> <asp:View ID="tabFrontPage" runat="server">
<asp:Panel ID="pnlFrontPage" runat="server" Style="padding: 20;"> <asp:Panel ID="pnlFrontPage" runat="server" Style="padding: 20;">
<table id="tblSharePoint" runat="server"> <table id="tblSharePoint" runat="server">
<tr> <tr>
<td class="NormalBold"> <td class="NormalBold">
<asp:Label ID="lblSharePoint" runat="server" meta:resourcekey="lblSharePoint" Text="This web site has SharePoint Service installed and thus can't"></asp:Label> <asp:Label ID="lblSharePoint" runat="server" meta:resourcekey="lblSharePoint" Text="This web site has SharePoint Service installed and thus can't"></asp:Label>
</td> </td>
</tr> </tr>
</table> </table>
<asp:Literal ID="litFrontPageUnavailable" runat="server"></asp:Literal> <asp:Literal ID="litFrontPageUnavailable" runat="server"></asp:Literal>
<table id="tblFrontPage" cellspacing="0" cellpadding="2" width="100%" runat="server"> <table id="tblFrontPage" cellspacing="0" cellpadding="2" width="100%" runat="server">
<tr> <tr>
<td class="SubHead" style="width: 150px;" height="30"> <td class="SubHead" style="width: 150px;" height="30">
<asp:Label ID="lblFPStatus" runat="server" meta:resourcekey="lblFPStatus" Text="FrontPage status:"></asp:Label> <asp:Label ID="lblFPStatus" runat="server" meta:resourcekey="lblFPStatus" Text="FrontPage status:"></asp:Label>
</td> </td>
<td class="NormalBold"> <td class="NormalBold">
<asp:Literal ID="litFrontPageStatus" runat="server"></asp:Literal> <asp:Literal ID="litFrontPageStatus" runat="server"></asp:Literal>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="SubHead"> <td class="SubHead">
<asp:Label ID="lblFPAccount" runat="server" meta:resourcekey="lblFPAccount" Text="FrontPage User Account:"></asp:Label> <asp:Label ID="lblFPAccount" runat="server" meta:resourcekey="lblFPAccount" Text="FrontPage User Account:"></asp:Label>
</td> </td>
<td class="Normal"> <td class="Normal">
<wsp:UsernameControl ID="frontPageUsername" runat="server" ValidationGroup="FrontPage" /> <wsp:UsernameControl ID="frontPageUsername" runat="server" ValidationGroup="FrontPage" />
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="SubHead" valign="top"> <td class="SubHead" valign="top">
<asp:Label ID="lblFPPassword" runat="server" meta:resourcekey="lblFPPassword" Text="Password:"></asp:Label> <asp:Label ID="lblFPPassword" runat="server" meta:resourcekey="lblFPPassword" Text="Password:"></asp:Label>
</td> </td>
<td> <td>
<wsp:PasswordControl ID="frontPagePassword" runat="server" ValidationGroup="FrontPage" /> <wsp:PasswordControl ID="frontPagePassword" runat="server" ValidationGroup="FrontPage" />
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td></td>
</td> <td class="Normal">
<td class="Normal"> <asp:Button ID="btnInstallFrontPage" runat="server" meta:resourcekey="btnInstallFrontPage"
<asp:Button ID="btnInstallFrontPage" runat="server" meta:resourcekey="btnInstallFrontPage" Text="Install" CssClass="Button1" ValidationGroup="FrontPage" OnClick="btnInstallFrontPage_Click"
Text="Install" CssClass="Button1" ValidationGroup="FrontPage" OnClick="btnInstallFrontPage_Click" OnClientClick="ShowProgressDialog('Installing Frontpage...');" />
OnClientClick="ShowProgressDialog('Installing Frontpage...');" /> <asp:Button ID="btnChangeFrontPagePassword" runat="server" meta:resourcekey="btnChangeFrontPagePassword"
<asp:Button ID="btnChangeFrontPagePassword" runat="server" meta:resourcekey="btnChangeFrontPagePassword" Text="Change Password" CssClass="Button2" ValidationGroup="FrontPage" OnClick="btnChangeFrontPagePassword_Click" />
Text="Change Password" CssClass="Button2" ValidationGroup="FrontPage" OnClick="btnChangeFrontPagePassword_Click" /> <asp:Button ID="btnUninstallFrontPage" runat="server" meta:resourcekey="btnUninstallFrontPage"
<asp:Button ID="btnUninstallFrontPage" runat="server" meta:resourcekey="btnUninstallFrontPage" Text="Uninstall" CssClass="Button1" CausesValidation="false" OnClick="btnUninstallFrontPage_Click"
Text="Uninstall" CssClass="Button1" CausesValidation="false" OnClick="btnUninstallFrontPage_Click" OnClientClick="confirmationFPSE()" />
OnClientClick="confirmationFPSE()" /> </td>
</td> </tr>
</tr> </table>
</table> </asp:Panel>
</asp:Panel> </asp:View>
</asp:View> <asp:View ID="tabExtensions" runat="server">
<asp:View ID="tabExtensions" runat="server"> <uc6:WebSitesExtensionsControl ID="webSitesExtensionsControl" runat="server" />
<uc6:WebSitesExtensionsControl ID="webSitesExtensionsControl" runat="server" /> </asp:View>
</asp:View> <asp:View ID="tabErrors" runat="server">
<asp:View ID="tabErrors" runat="server"> <uc4:WebSitesCustomErrorsControl ID="webSitesCustomErrorsControl" runat="server" />
<uc4:WebSitesCustomErrorsControl ID="webSitesCustomErrorsControl" runat="server" /> </asp:View>
</asp:View> <asp:View ID="tabHeaders" runat="server">
<asp:View ID="tabHeaders" runat="server"> <uc6:WebSitesCustomHeadersControl ID="webSitesCustomHeadersControl" runat="server" />
<uc6:WebSitesCustomHeadersControl ID="webSitesCustomHeadersControl" runat="server" /> </asp:View>
</asp:View> <asp:View ID="tabWebDeployPublishing" runat="server">
<asp:View ID="tabWebDeployPublishing" runat="server"> <div style="padding: 20;">
<div style="padding: 20;"> <asp:PlaceHolder runat="server" ID="PanelWDeploySitePublishingDisabled" Visible="false">
<asp:PlaceHolder runat="server" ID="PanelWDeploySitePublishingDisabled" Visible="false"> <div class="NormalBold">
<div class="NormalBold"> <asp:Localize runat="server" meta:resourcekey="WDeploySitePublishingDisabled" />
<asp:Localize runat="server" meta:resourcekey="WDeploySitePublishingDisabled" /></div> </div>
<br /> <br />
<div class="Normal"> <div class="Normal">
<asp:Localize runat="server" meta:resourcekey="WDeploySitePublishingEnablementHint" /></div> <asp:Localize runat="server" meta:resourcekey="WDeploySitePublishingEnablementHint" />
<br /> </div>
</asp:PlaceHolder> <br />
<asp:PlaceHolder runat="server" ID="PanelWDeployManagePublishingProfile" Visible="false"> </asp:PlaceHolder>
<div class="NormalBold"> <asp:PlaceHolder runat="server" ID="PanelWDeployManagePublishingProfile" Visible="false">
<asp:Localize runat="server" meta:resourcekey="WDeploySitePublishingEnabled" /></div> <div class="NormalBold">
<br /> <asp:Localize runat="server" meta:resourcekey="WDeploySitePublishingEnabled" />
<div class="Normal"> </div>
<asp:Localize runat="server" meta:resourcekey="WDeployPublishingProfileUsageNotes" /></div> <br />
<br /> <div class="Normal">
<p> <asp:Localize runat="server" meta:resourcekey="WDeployPublishingProfileUsageNotes" />
<asp:LinkButton runat="server" ID="WDeployDownloadPubProfileLink" Text="Download Publishing Profile for this web site" </div>
CommandName="DownloadProfile" OnCommand="WDeployDownloadPubProfileLink_Command" />&nbsp;/&nbsp;<asp:LinkButton <br />
runat="server" ID="WDeployRebuildPubProfileLinkButton" Text="Re-build Publishing Profile for this web site" /></p> <p>
<br /> <asp:LinkButton runat="server" ID="WDeployDownloadPubProfileLink" Text="Download Publishing Profile for this web site"
</asp:PlaceHolder> CommandName="DownloadProfile" OnCommand="WDeployDownloadPubProfileLink_Command" />&nbsp;/&nbsp;<asp:LinkButton
<asp:PlaceHolder runat="server" ID="PanelWDeployPublishingCredentials" Visible="false"> runat="server" ID="WDeployRebuildPubProfileLinkButton" Text="Re-build Publishing Profile for this web site" />
<table cellpadding="4" border="0"> </p>
<tr> <br />
<td class="Normal"> </asp:PlaceHolder>
<asp:Localize runat="server" meta:resourcekey="WDeployPublishingAccountLocalize" /> <asp:PlaceHolder runat="server" ID="PanelWDeployPublishingCredentials" Visible="false">
</td> <table cellpadding="4" border="0">
<td class="NormalBold"> <tr>
<asp:TextBox runat="server" ID="WDeployPublishingAccountTextBox" CssClass="NormalTextBox" <td class="Normal">
ValidationGroup="WDeployPublishingGroup" MaxLength="20" /> <asp:Localize runat="server" meta:resourcekey="WDeployPublishingAccountLocalize" />
<asp:Literal runat="server" ID="WDeployPublishingAccountLiteral" Visible="false" /> </td>
<asp:RequiredFieldValidator ID="WDeployPublishingAccountRequiredFieldValidator" runat="server" <td class="NormalBold">
ErrorMessage="*" ValidationGroup="WDeployPublishingGroup" ControlToValidate="WDeployPublishingAccountTextBox" /> <asp:TextBox runat="server" ID="WDeployPublishingAccountTextBox" CssClass="NormalTextBox"
</td> ValidationGroup="WDeployPublishingGroup" MaxLength="20" />
</tr> <asp:Literal runat="server" ID="WDeployPublishingAccountLiteral" Visible="false" />
<tr> <asp:RequiredFieldValidator ID="WDeployPublishingAccountRequiredFieldValidator" runat="server"
<td class="Normal"> ErrorMessage="*" ValidationGroup="WDeployPublishingGroup" ControlToValidate="WDeployPublishingAccountTextBox" />
<asp:Localize runat="server" meta:resourcekey="WDeployPublishingPasswordLocalize" /> </td>
</td> </tr>
<td> <tr>
<asp:TextBox runat="server" ID="WDeployPublishingPasswordTextBox" TextMode="Password" <td class="Normal">
CssClass="NormalTextBox" ValidationGroup="WDeployPublishingGroup" /> <asp:Localize runat="server" meta:resourcekey="WDeployPublishingPasswordLocalize" />
<asp:RequiredFieldValidator ID="WDeployPublishingPasswordRequiredFieldValidator" </td>
runat="server" ErrorMessage="*" ValidationGroup="WDeployPublishingGroup" ControlToValidate="WDeployPublishingPasswordTextBox" /> <td>
</td> <asp:TextBox runat="server" ID="WDeployPublishingPasswordTextBox" TextMode="Password"
</tr> CssClass="NormalTextBox" ValidationGroup="WDeployPublishingGroup" />
<tr> <asp:RequiredFieldValidator ID="WDeployPublishingPasswordRequiredFieldValidator"
<td class="Normal"> runat="server" ErrorMessage="*" ValidationGroup="WDeployPublishingGroup" ControlToValidate="WDeployPublishingPasswordTextBox" />
<asp:Localize runat="server" meta:resourcekey="WDeployPublishingConfirmPasswordLocalize" /> </td>
</td> </tr>
<td> <tr>
<asp:TextBox runat="server" ID="WDeployPublishingConfirmPasswordTextBox" TextMode="Password" <td class="Normal">
CssClass="NormalTextBox" ValidationGroup="WDeployPublishingGroup" /> <asp:Localize runat="server" meta:resourcekey="WDeployPublishingConfirmPasswordLocalize" />
<asp:RequiredFieldValidator ID="WDeployPublishingConfirmPasswordRequiredFieldValidator" </td>
runat="server" ErrorMessage="*" ValidationGroup="WDeployPublishingGroup" ControlToValidate="WDeployPublishingConfirmPasswordTextBox" /> <td>
<asp:CompareValidator ID="WDeployPublishingConfirmPasswordTextBoxCompareValidator" <asp:TextBox runat="server" ID="WDeployPublishingConfirmPasswordTextBox" TextMode="Password"
runat="server" meta:resourcekey="cvPasswordComparer" ControlToValidate="WDeployPublishingConfirmPasswordTextBox" CssClass="NormalTextBox" ValidationGroup="WDeployPublishingGroup" />
ControlToCompare="WDeployPublishingPasswordTextBox" Display="Dynamic" /> <asp:RequiredFieldValidator ID="WDeployPublishingConfirmPasswordRequiredFieldValidator"
</td> runat="server" ErrorMessage="*" ValidationGroup="WDeployPublishingGroup" ControlToValidate="WDeployPublishingConfirmPasswordTextBox" />
</tr> <asp:CompareValidator ID="WDeployPublishingConfirmPasswordTextBoxCompareValidator"
</table> runat="server" meta:resourcekey="cvPasswordComparer" ControlToValidate="WDeployPublishingConfirmPasswordTextBox"
<br /> ControlToCompare="WDeployPublishingPasswordTextBox" Display="Dynamic" />
<div> </td>
<asp:Button runat="server" ID="WDeployEnabePublishingButton" meta:resourcekey="WDeployEnabePublishingButton" </tr>
CssClass="Button1" OnClick="WDeployEnabePublishingButton_Click" ValidationGroup="WDeployPublishingGroup" />&nbsp; </table>
<br />
<div>
<asp:Button runat="server" ID="WDeployEnabePublishingButton" meta:resourcekey="WDeployEnabePublishingButton"
CssClass="Button1" OnClick="WDeployEnabePublishingButton_Click" ValidationGroup="WDeployPublishingGroup" />&nbsp;
<asp:Button runat="server" ID="WDeployChangePublishingPasswButton" meta:resourcekey="WDeployChangePublishingPasswButton" <asp:Button runat="server" ID="WDeployChangePublishingPasswButton" meta:resourcekey="WDeployChangePublishingPasswButton"
CssClass="Button1" OnClick="WDeployChangePublishingPasswButton_Click" ValidationGroup="WDeployPublishingGroup" />&nbsp; CssClass="Button1" OnClick="WDeployChangePublishingPasswButton_Click" ValidationGroup="WDeployPublishingGroup" />&nbsp;
<asp:Button runat="server" ID="WDeployDisablePublishingButton" meta:resourcekey="WDeployDisablePublishingButton" <asp:Button runat="server" ID="WDeployDisablePublishingButton" meta:resourcekey="WDeployDisablePublishingButton"
CssClass="Button1" OnClick="WDeployDisablePublishingButton_Click" OnClientClick="return confirmationWebDeployPublishing();" CssClass="Button1" OnClick="WDeployDisablePublishingButton_Click" OnClientClick="return confirmationWebDeployPublishing();"
ValidationGroup="WDeployPublishingGroup" CausesValidation="false" /> ValidationGroup="WDeployPublishingGroup" CausesValidation="false" />
</div> </div>
</asp:PlaceHolder> </asp:PlaceHolder>
<asp:PlaceHolder runat="server" ID="PanelWDeployNotInstalled" Visible="false">Web Deploy <asp:PlaceHolder runat="server" ID="PanelWDeployNotInstalled" Visible="false">Web Deploy
Remote Agent is not installed... </asp:PlaceHolder> Remote Agent is not installed... </asp:PlaceHolder>
</div> </div>
</asp:View> </asp:View>
<asp:View ID="tabMimes" runat="server"> <asp:View ID="tabMimes" runat="server">
<uc5:WebSitesMimeTypesControl ID="webSitesMimeTypesControl" runat="server" /> <uc5:WebSitesMimeTypesControl ID="webSitesMimeTypesControl" runat="server" />
</asp:View> </asp:View>
<asp:View ID="tabCF" runat="server"> <asp:View ID="tabCF" runat="server">
<asp:Literal ID="litCFUnavailable" runat="server"></asp:Literal> <asp:Literal ID="litCFUnavailable" runat="server"></asp:Literal>
<br></br> <br></br>
<br></br> <br></br>
<table id="tableCF" runat="server"> <table id="tableCF" runat="server">
<tr id="rowCF" runat="server"> <tr id="rowCF" runat="server">
<td class="style1"> <td class="style1">
<asp:CheckBox ID="chkCfExt" runat="server" Text="" meta:resourcekey="chkEnabled" /> <asp:CheckBox ID="chkCfExt" runat="server" Text="" meta:resourcekey="chkEnabled" />
</td> </td>
<td class="Normal"> <td class="Normal">
<asp:Label ID="lblCF" runat="server" meta:resourcekey="lblCF" Text="Enable ColdFusion Extensions."></asp:Label> <asp:Label ID="lblCF" runat="server" meta:resourcekey="lblCF" Text="Enable ColdFusion Extensions."></asp:Label>
</td> </td>
</tr> </tr>
<tr id="rowVirtDir" runat="server"> <tr id="rowVirtDir" runat="server">
<td class="style1"> <td class="style1">
<asp:CheckBox ID="chkVirtDir" runat="server" Text="" meta:resourcekey="chkEnabled" /> <asp:CheckBox ID="chkVirtDir" runat="server" Text="" meta:resourcekey="chkEnabled" />
</td> </td>
<td class="Normal"> <td class="Normal">
<asp:Label ID="lblVirtDir" runat="server" meta:resourcekey="lblVirtDir" Text="Create Virtual Directories for scripts and Flash remoting."></asp:Label> <asp:Label ID="lblVirtDir" runat="server" meta:resourcekey="lblVirtDir" Text="Create Virtual Directories for scripts and Flash remoting."></asp:Label>
</td> </td>
</tr> </tr>
</table> </table>
</asp:View> </asp:View>
<asp:View ID="tabWebManagement" runat="server"> <asp:View ID="tabWebManagement" runat="server">
<div style="padding: 20;"> <div style="padding: 20;">
<asp:PlaceHolder runat="server" ID="pnlWmSvcSiteDisabled" Visible="false"> <asp:PlaceHolder runat="server" ID="pnlWmSvcSiteDisabled" Visible="false">
<div class="NormalBold"> <div class="NormalBold">
<asp:Localize runat="server" meta:resourcekey="lclWmSvcSiteDisabled" /></div> <asp:Localize runat="server" meta:resourcekey="lclWmSvcSiteDisabled" />
<br /> </div>
<div class="Normal"> <br />
<asp:Localize runat="server" meta:resourcekey="lclEnablementHint" /></div> <div class="Normal">
<br /> <asp:Localize runat="server" meta:resourcekey="lclEnablementHint" />
</asp:PlaceHolder> </div>
<asp:PlaceHolder runat="server" ID="pnlWmSvcSiteEnabled" Visible="false"> <br />
<div class="NormalBold"> </asp:PlaceHolder>
<asp:Localize runat="server" meta:resourcekey="lclWmSvcSiteEnabled" /></div> <asp:PlaceHolder runat="server" ID="pnlWmSvcSiteEnabled" Visible="false">
<br /> <div class="NormalBold">
<div class="Normal"> <asp:Localize runat="server" meta:resourcekey="lclWmSvcSiteEnabled" />
<asp:Localize runat="server" ID="lclWmSvcConnectionHint" meta:resourcekey="lclWmSvcConnectionHint" /></div> </div>
<br /> <br />
</asp:PlaceHolder> <div class="Normal">
<asp:PlaceHolder runat="server" ID="pnlWmcSvcManagement"> <asp:Localize runat="server" ID="lclWmSvcConnectionHint" meta:resourcekey="lclWmSvcConnectionHint" />
<table cellpadding="4" border="0"> </div>
<tr> <br />
<td class="Normal"> </asp:PlaceHolder>
<asp:Localize runat="server" meta:resourcekey="lclWmSvcAccountName" /> <asp:PlaceHolder runat="server" ID="pnlWmcSvcManagement">
</td> <table cellpadding="4" border="0">
<td class="NormalBold"> <tr>
<asp:TextBox runat="server" ID="txtWmSvcAccountName" CssClass="NormalTextBox" ValidationGroup="WmSvcGroup" <td class="Normal">
MaxLength="20" /> <asp:Localize runat="server" meta:resourcekey="lclWmSvcAccountName" />
<asp:Literal runat="server" ID="litWmSvcAccountName" Visible="false" /> </td>
<asp:RequiredFieldValidator runat="server" ErrorMessage="*" ValidationGroup="WmSvcGroup" <td class="NormalBold">
ControlToValidate="txtWmSvcAccountName" /> <asp:TextBox runat="server" ID="txtWmSvcAccountName" CssClass="NormalTextBox" ValidationGroup="WmSvcGroup"
</td> MaxLength="20" />
</tr> <asp:Literal runat="server" ID="litWmSvcAccountName" Visible="false" />
<tr> <asp:RequiredFieldValidator runat="server" ErrorMessage="*" ValidationGroup="WmSvcGroup"
<td class="Normal"> ControlToValidate="txtWmSvcAccountName" />
<asp:Localize runat="server" meta:resourcekey="lclWmSvcAccountPassword" /> </td>
</td> </tr>
<td> <tr>
<asp:TextBox runat="server" ID="txtWmSvcAccountPassword" TextMode="Password" CssClass="NormalTextBox" <td class="Normal">
ValidationGroup="WmSvcGroup" /> <asp:Localize runat="server" meta:resourcekey="lclWmSvcAccountPassword" />
<asp:RequiredFieldValidator runat="server" ErrorMessage="*" ValidationGroup="WmSvcGroup" </td>
ControlToValidate="txtWmSvcAccountPassword" /> <td>
</td> <asp:TextBox runat="server" ID="txtWmSvcAccountPassword" TextMode="Password" CssClass="NormalTextBox"
</tr> ValidationGroup="WmSvcGroup" />
<tr> <asp:RequiredFieldValidator runat="server" ErrorMessage="*" ValidationGroup="WmSvcGroup"
<td class="Normal"> ControlToValidate="txtWmSvcAccountPassword" />
<asp:Localize runat="server" meta:resourcekey="lclWmSvcAccountPasswordC" /> </td>
</td> </tr>
<td> <tr>
<asp:TextBox runat="server" ID="txtWmSvcAccountPasswordC" TextMode="Password" CssClass="NormalTextBox" <td class="Normal">
ValidationGroup="WmSvcGroup" /> <asp:Localize runat="server" meta:resourcekey="lclWmSvcAccountPasswordC" />
<asp:RequiredFieldValidator runat="server" ErrorMessage="*" ValidationGroup="WmSvcGroup" </td>
ControlToValidate="txtWmSvcAccountPasswordC" /> <td>
<asp:CompareValidator runat="server" meta:resourcekey="cvPasswordComparer" ControlToValidate="txtWmSvcAccountPasswordC" <asp:TextBox runat="server" ID="txtWmSvcAccountPasswordC" TextMode="Password" CssClass="NormalTextBox"
ControlToCompare="txtWmSvcAccountPassword" Display="Dynamic" /> ValidationGroup="WmSvcGroup" />
</td> <asp:RequiredFieldValidator runat="server" ErrorMessage="*" ValidationGroup="WmSvcGroup"
</tr> ControlToValidate="txtWmSvcAccountPasswordC" />
</table> <asp:CompareValidator runat="server" meta:resourcekey="cvPasswordComparer" ControlToValidate="txtWmSvcAccountPasswordC"
<br /> ControlToCompare="txtWmSvcAccountPassword" Display="Dynamic" />
<div> </td>
<asp:Button runat="server" ID="btnWmSvcSiteEnable" meta:resourcekey="btnWmSvcSiteEnable" </tr>
CssClass="Button1" OnClick="btnWmSvcSiteEnable_Click" ValidationGroup="WmSvcGroup" /> </table>
<asp:Button runat="server" ID="btnWmSvcChangePassw" meta:resourcekey="btnWmSvcChangePassw" <br />
CssClass="Button1" OnClick="btnWmSvcChangePassw_Click" ValidationGroup="WmSvcGroup" />&nbsp; <div>
<asp:Button runat="server" ID="btnWmSvcSiteEnable" meta:resourcekey="btnWmSvcSiteEnable"
CssClass="Button1" OnClick="btnWmSvcSiteEnable_Click" ValidationGroup="WmSvcGroup" />
<asp:Button runat="server" ID="btnWmSvcChangePassw" meta:resourcekey="btnWmSvcChangePassw"
CssClass="Button1" OnClick="btnWmSvcChangePassw_Click" ValidationGroup="WmSvcGroup" />&nbsp;
<asp:Button runat="server" ID="btnWmSvcSiteDisable" meta:resourcekey="btnWmSvcSiteDisable" <asp:Button runat="server" ID="btnWmSvcSiteDisable" meta:resourcekey="btnWmSvcSiteDisable"
CssClass="Button1" OnClick="btnWmSvcSiteDisable_Click" OnClientClick="return confirmationWMSVC();" CssClass="Button1" OnClick="btnWmSvcSiteDisable_Click" OnClientClick="return confirmationWMSVC();"
ValidationGroup="WmSvcGroup" CausesValidation="false" /> ValidationGroup="WmSvcGroup" CausesValidation="false" />
</div> </div>
</asp:PlaceHolder> </asp:PlaceHolder>
<asp:PlaceHolder runat="server" ID="pnlNotInstalled" Visible="false"> <asp:PlaceHolder runat="server" ID="pnlNotInstalled" Visible="false">
<div class="NormalBold"> <div class="NormalBold">
<asp:Localize runat="server" meta:resourcekey="lclWmSvcNotInstalled" /></div> <asp:Localize runat="server" meta:resourcekey="lclWmSvcNotInstalled" />
</asp:PlaceHolder> </div>
</div> </asp:PlaceHolder>
</asp:View> </div>
<asp:View ID="SSL" runat="server"> </asp:View>
<uc2:WebsitesSSL ID="WebsitesSSLControl" runat="server" /> <asp:View ID="SSL" runat="server">
</asp:View> <uc2:WebsitesSSL ID="WebsitesSSLControl" runat="server" />
</asp:MultiView> </asp:View>
</div> </asp:MultiView>
</td> </div>
</tr> </td>
</table> </tr>
</table>
</div> </div>
<div class="FormFooter"> <div class="FormFooter">
<asp:Button ID="btnUpdate" runat="server" meta:resourcekey="btnUpdate" Text="Update" <asp:Button ID="btnUpdate" runat="server" meta:resourcekey="btnUpdate" Text="Update"
CssClass="Button1" OnClick="btnUpdate_Click" OnClientClick="ShowProgressDialog('Updating web site...');" /> CssClass="Button1" OnClick="btnUpdate_Click" OnClientClick="ShowProgressDialog('Updating web site...');" />
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel" Text="Cancel" <asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel" Text="Cancel"
CssClass="Button1" CausesValidation="false" OnClick="btnCancel_Click" /> CssClass="Button1" CausesValidation="false" OnClick="btnCancel_Click" />
<asp:Button ID="btnDelete" runat="server" meta:resourcekey="btnDelete" Text="Delete" </div>
CssClass="Button1" CausesValidation="false" OnClientClick="return confirm('Delete this web site?');" <div class="FormFooter">
OnClick="btnDelete_Click" /> <asp:Button ID="btnDelete" runat="server" meta:resourcekey="btnDelete" Text="Delete"
</div> CssClass="Button1" CausesValidation="false" OnClientClick="return confirm('Delete this web site?');"
OnClick="btnDelete_Click" />
<asp:CheckBox ID="chkDeleteWebsiteDirectory" runat="server" Text="Delete Website Directory?" AutoPostBack="false" meta:resourcekey="chkDeleteWebsiteDirectory" />
</div>

View file

@ -913,7 +913,7 @@ namespace WebsitePanel.Portal
{ {
try try
{ {
int result = ES.Services.WebServers.DeleteWebSite(PanelRequest.ItemID); int result = ES.Services.WebServers.DeleteWebSite(PanelRequest.ItemID, chkDeleteWebsiteDirectory.Checked);
if (result < 0) if (result < 0)
{ {
ShowResultMessage(result); ShowResultMessage(result);

View file

@ -1073,5 +1073,14 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file. /// To modify move field declaration from designer file to code-behind file.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Button btnDelete; protected global::System.Web.UI.WebControls.Button btnDelete;
/// <summary>
/// chkDeleteWebsiteDirectory 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 chkDeleteWebsiteDirectory;
} }
} }

View file

@ -93,6 +93,13 @@
<Compile Include="..\..\..\VersionInfo.cs"> <Compile Include="..\..\..\VersionInfo.cs">
<Link>Code\VersionInfo.cs</Link> <Link>Code\VersionInfo.cs</Link>
</Compile> </Compile>
<Compile Include="ApplyEnableHardQuotaFeature.ascx.cs">
<DependentUpon>ApplyEnableHardQuotaFeature.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ApplyEnableHardQuotaFeature.ascx.designer.cs">
<DependentUpon>ApplyEnableHardQuotaFeature.ascx</DependentUpon>
</Compile>
<Compile Include="AuditLog.ascx.cs"> <Compile Include="AuditLog.ascx.cs">
<DependentUpon>AuditLog.ascx</DependentUpon> <DependentUpon>AuditLog.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
@ -3811,6 +3818,7 @@
</Compile> </Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="ApplyEnableHardQuotaFeature.ascx" />
<Content Include="ExchangeServer\OrganizationAddDomainName.ascx" /> <Content Include="ExchangeServer\OrganizationAddDomainName.ascx" />
<Content Include="ExchangeServer\OrganizationDomainNames.ascx" /> <Content Include="ExchangeServer\OrganizationDomainNames.ascx" />
<Content Include="ExchangeServer\ExchangeAddMailboxPlan.ascx" /> <Content Include="ExchangeServer\ExchangeAddMailboxPlan.ascx" />
@ -4975,6 +4983,7 @@
<Content Include="ExchangeServer\App_LocalResources\OrganizationAddDomainName.ascx.resx"> <Content Include="ExchangeServer\App_LocalResources\OrganizationAddDomainName.ascx.resx">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Content> </Content>
<None Include="Resources\Windows2008_Settings.ascx.resx" />
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx"> <EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>

View file

@ -717,8 +717,8 @@
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}"> <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties> <WebProjectProperties>
<UseIIS>False</UseIIS> <UseIIS>False</UseIIS>
<AutoAssignPort>False</AutoAssignPort> <AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>9001</DevelopmentServerPort> <DevelopmentServerPort>58306</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath> <DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost/WebPortal</IISUrl> <IISUrl>http://localhost/WebPortal</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication> <NTLMAuthentication>False</NTLMAuthentication>