Partial Checkin on Enterprise Storage
This commit is contained in:
parent
754d9127de
commit
09a6e6a4e2
12 changed files with 223 additions and 11 deletions
|
@ -1959,4 +1959,20 @@ GO
|
|||
|
||||
|
||||
|
||||
-- Enterprise Storage
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[ResourceGroups] WHERE [GroupName] = 'EnterpriseStorage')
|
||||
BEGIN
|
||||
INSERT [dbo].[ResourceGroups] ([GroupID], [GroupName], [GroupOrder], [GroupController], [ShowGroup]) VALUES (44, N'EnterpriseStorage', 25, N'WebsitePanel.EnterpriseServer.EnterpriseStorageController', 1)
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Enterprise Storage Windows 2012')
|
||||
BEGIN
|
||||
INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES(600, 44, N'EnterpriseStorage2012', N'Enterprise Storage Windows 2012', N'WebsitePanel.Providers.EnterpriseStorage.Windows2012, WebsitePanel.Providers.EnterpriseStorage.Windows2012', N'EnterpriseStorage', 1)
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE [dbo].[Providers] SET [DisableAutoDiscovery] = NULL WHERE [DisplayName] = 'Enterprise Storage Windows 2012'
|
||||
END
|
||||
GO
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ using WebsitePanel.Providers.Common;
|
|||
using WebsitePanel.Providers.ResultObjects;
|
||||
using WebsitePanel.Providers.OS;
|
||||
|
||||
|
||||
namespace WebsitePanel.EnterpriseServer {
|
||||
using System.Xml.Serialization;
|
||||
using System.Web.Services;
|
||||
|
@ -33,6 +34,8 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
[System.Xml.Serialization.XmlIncludeAttribute(typeof(ServiceProviderItem))]
|
||||
public partial class esEnterpriseStorage : Microsoft.Web.Services3.WebServicesClientProtocol {
|
||||
|
||||
private System.Threading.SendOrPostCallback CheckFileServicesInstallationOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetEnterpriseFoldersOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetEnterpriseFolderOperationCompleted;
|
||||
|
@ -48,6 +51,9 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
this.Url = "http://localhost:9002/esEnterpriseStorage.asmx";
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public event CheckFileServicesInstallationCompletedEventHandler CheckFileServicesInstallationCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetEnterpriseFoldersCompletedEventHandler GetEnterpriseFoldersCompleted;
|
||||
|
||||
|
@ -63,6 +69,47 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
/// <remarks/>
|
||||
public event SetEnterpriseFolderQuotaCompletedEventHandler SetEnterpriseFolderQuotaCompleted;
|
||||
|
||||
/// <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]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginCheckFileServicesInstallation(int serviceId, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("CheckFileServicesInstallation", new object[] {
|
||||
serviceId}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public bool EndCheckFileServicesInstallation(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((bool)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void CheckFileServicesInstallationAsync(int serviceId) {
|
||||
this.CheckFileServicesInstallationAsync(serviceId, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void CheckFileServicesInstallationAsync(int serviceId, object userState) {
|
||||
if ((this.CheckFileServicesInstallationOperationCompleted == null)) {
|
||||
this.CheckFileServicesInstallationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckFileServicesInstallationOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("CheckFileServicesInstallation", new object[] {
|
||||
serviceId}, this.CheckFileServicesInstallationOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnCheckFileServicesInstallationOperationCompleted(object arg) {
|
||||
if ((this.CheckFileServicesInstallationCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.CheckFileServicesInstallationCompleted(this, new CheckFileServicesInstallationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetEnterpriseFolders", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public SystemFile[] GetEnterpriseFolders(int itemId) {
|
||||
|
@ -292,6 +339,32 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void CheckFileServicesInstallationCompletedEventHandler(object sender, CheckFileServicesInstallationCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[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.3038")]
|
||||
public delegate void GetEnterpriseFoldersCompletedEventHandler(object sender, GetEnterpriseFoldersCompletedEventArgs e);
|
||||
|
|
|
@ -38,6 +38,7 @@ using System.Xml.Serialization;
|
|||
using WebsitePanel.Server;
|
||||
using WebsitePanel.Providers;
|
||||
using WebsitePanel.Providers.OS;
|
||||
using WebsitePanel.Providers.EnterpriseStorage;
|
||||
using System.Collections;
|
||||
using WebsitePanel.Providers.Common;
|
||||
using WebsitePanel.Providers.ResultObjects;
|
||||
|
@ -75,6 +76,14 @@ namespace WebsitePanel.EnterpriseServer
|
|||
#endregion
|
||||
|
||||
|
||||
private static EnterpriseStorage GetEnterpriseStorage(int serviceId)
|
||||
{
|
||||
EnterpriseStorage es = new EnterpriseStorage();
|
||||
ServiceProviderProxy.Init(es, serviceId);
|
||||
return es;
|
||||
}
|
||||
|
||||
|
||||
private static SystemFile[] GetFoldersInternal(int itemId)
|
||||
{
|
||||
return new SystemFile[1];
|
||||
|
@ -101,5 +110,10 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
|
||||
public static bool CheckFileServicesInstallation(int serviceId)
|
||||
{
|
||||
EnterpriseStorage es = GetEnterpriseStorage(serviceId);
|
||||
return es.CheckFileServicesInstallation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,6 +54,13 @@ namespace WebsitePanel.EnterpriseServer
|
|||
[ToolboxItem(false)]
|
||||
public class esEnterpriseStorage : WebService
|
||||
{
|
||||
|
||||
[WebMethod]
|
||||
public bool CheckFileServicesInstallation(int serviceId)
|
||||
{
|
||||
return EnterpriseStorageController.CheckFileServicesInstallation(serviceId);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public SystemFile[] GetEnterpriseFolders(int itemId)
|
||||
{
|
||||
|
|
|
@ -94,12 +94,10 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return OperatingSystemController.DeleteOdbcSource(itemId);
|
||||
}
|
||||
|
||||
//CO Changes
|
||||
[WebMethod]
|
||||
public bool CheckFileServicesInstallation(int serviceId)
|
||||
{
|
||||
return OperatingSystemController.CheckFileServicesInstallation(serviceId);
|
||||
}
|
||||
//END
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,5 +42,6 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
|||
void CreateFolder(string organizationId, string folder);
|
||||
void DeleteFolder(string organizationId, string folder);
|
||||
void SetFolderQuota(string organizationId, string folder, long quota);
|
||||
bool CheckFileServicesInstallation();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ using WebsitePanel.Server.Utils;
|
|||
using WebsitePanel.Providers.Utils;
|
||||
using WebsitePanel.Providers.OS;
|
||||
|
||||
namespace WebsitePanel.Providers.EnterpriseStorage.Windows2012
|
||||
namespace WebsitePanel.Providers.EnterpriseStorage
|
||||
{
|
||||
public class Windows2012 : HostingServiceProviderBase
|
||||
{
|
||||
|
@ -66,6 +66,12 @@ namespace WebsitePanel.Providers.EnterpriseStorage.Windows2012
|
|||
|
||||
|
||||
}
|
||||
|
||||
public bool CheckFileServicesInstallation()
|
||||
{
|
||||
return WebsitePanel.Server.Utils.OS.CheckFileServicesInstallation();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HostingServiceProvider methods
|
||||
|
@ -135,6 +141,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage.Windows2012
|
|||
}
|
||||
return itemsDiskspace.ToArray();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public override bool IsInstalled()
|
||||
|
|
|
@ -16,7 +16,6 @@ using WebsitePanel.Providers.Common;
|
|||
using WebsitePanel.Providers.ResultObjects;
|
||||
using WebsitePanel.Providers.OS;
|
||||
|
||||
|
||||
namespace WebsitePanel.Providers.EnterpriseStorage {
|
||||
using System.Xml.Serialization;
|
||||
using System.Web.Services;
|
||||
|
@ -46,6 +45,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage {
|
|||
|
||||
private System.Threading.SendOrPostCallback SetFolderQuotaOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback CheckFileServicesInstallationOperationCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public EnterpriseStorage() {
|
||||
this.Url = "http://localhost:9003/EnterpriseStorage.asmx";
|
||||
|
@ -66,6 +67,9 @@ namespace WebsitePanel.Providers.EnterpriseStorage {
|
|||
/// <remarks/>
|
||||
public event SetFolderQuotaCompletedEventHandler SetFolderQuotaCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event CheckFileServicesInstallationCompletedEventHandler CheckFileServicesInstallationCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolders", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
|
@ -285,6 +289,45 @@ namespace WebsitePanel.Providers.EnterpriseStorage {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckFileServicesInstallation", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public bool CheckFileServicesInstallation() {
|
||||
object[] results = this.Invoke("CheckFileServicesInstallation", new object[0]);
|
||||
return ((bool)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginCheckFileServicesInstallation(System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("CheckFileServicesInstallation", new object[0], callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public bool EndCheckFileServicesInstallation(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((bool)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void CheckFileServicesInstallationAsync() {
|
||||
this.CheckFileServicesInstallationAsync(null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void CheckFileServicesInstallationAsync(object userState) {
|
||||
if ((this.CheckFileServicesInstallationOperationCompleted == null)) {
|
||||
this.CheckFileServicesInstallationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckFileServicesInstallationOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("CheckFileServicesInstallation", new object[0], this.CheckFileServicesInstallationOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnCheckFileServicesInstallationOperationCompleted(object arg) {
|
||||
if ((this.CheckFileServicesInstallationCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.CheckFileServicesInstallationCompleted(this, new CheckFileServicesInstallationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public new void CancelAsync(object userState) {
|
||||
base.CancelAsync(userState);
|
||||
|
@ -354,4 +397,30 @@ namespace WebsitePanel.Providers.EnterpriseStorage {
|
|||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void SetFolderQuotaCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void CheckFileServicesInstallationCompletedEventHandler(object sender, CheckFileServicesInstallationCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -139,6 +139,23 @@ namespace WebsitePanel.Server
|
|||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
[WebMethod, SoapHeader("settings")]
|
||||
public bool CheckFileServicesInstallation()
|
||||
{
|
||||
try
|
||||
{
|
||||
Log.WriteStart("'{0}' CheckFileServicesInstallation", ProviderSettings.ProviderName);
|
||||
return EnterpriseStorageProvider.CheckFileServicesInstallation();
|
||||
Log.WriteEnd("'{0}' CheckFileServicesInstallation", ProviderSettings.ProviderName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError(String.Format("'{0}' CheckFileServicesInstallation", ProviderSettings.ProviderName), ex);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -218,6 +218,13 @@ namespace WebsitePanel.Portal
|
|||
{
|
||||
get { return GetCachedProxy<esHeliconZoo>(); }
|
||||
}
|
||||
|
||||
|
||||
public esEnterpriseStorage EnterpriseStorage
|
||||
{
|
||||
get { return GetCachedProxy<esEnterpriseStorage>(); }
|
||||
}
|
||||
|
||||
protected ES()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -44,12 +44,11 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
//CO Changes
|
||||
if (!IsPostBack)
|
||||
{
|
||||
try
|
||||
{
|
||||
chkEnableHardQuota.Enabled = ES.Services.OperatingSystems.CheckFileServicesInstallation(PanelRequest.ServiceId);
|
||||
chkEnableHardQuota.Enabled = ES.Services.EnterpriseStorage.CheckFileServicesInstallation(PanelRequest.ServiceId);
|
||||
txtLocationDrive.Enabled = chkEnableHardQuota.Enabled;
|
||||
valLocationDrive.Enabled = chkEnableHardQuota.Enabled;
|
||||
if (!chkEnableHardQuota.Enabled)
|
||||
|
@ -59,25 +58,20 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
{
|
||||
}
|
||||
}
|
||||
//END
|
||||
}
|
||||
|
||||
public void BindSettings(StringDictionary settings)
|
||||
{
|
||||
txtFolder.Text = settings["UsersHome"];
|
||||
//CO Changes
|
||||
txtLocationDrive.Text = settings["LocationDrive"];
|
||||
chkEnableHardQuota.Checked = settings["EnableHardQuota"] == "true" ? true : false;
|
||||
//END
|
||||
}
|
||||
|
||||
public void SaveSettings(StringDictionary settings)
|
||||
{
|
||||
settings["UsersHome"] = txtFolder.Text;
|
||||
//CO Changes
|
||||
settings["LocationDrive"] = txtLocationDrive.Text;
|
||||
settings["EnableHardQuota"] = chkEnableHardQuota.Checked.ToString().ToLower();
|
||||
//END
|
||||
}
|
||||
}
|
||||
}
|
|
@ -360,6 +360,13 @@
|
|||
<Compile Include="ProviderControls\CRM2011_Settings.ascx.designer.cs">
|
||||
<DependentUpon>CRM2011_Settings.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ProviderControls\EnterpriseStorage_Settings.ascx.cs">
|
||||
<DependentUpon>EnterpriseStorage_Settings.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ProviderControls\EnterpriseStorage_Settings.ascx.designer.cs">
|
||||
<DependentUpon>EnterpriseStorage_Settings.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ProviderControls\HeliconZoo_Settings.ascx.cs">
|
||||
<DependentUpon>HeliconZoo_Settings.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
|
@ -3941,6 +3948,7 @@
|
|||
<Content Include="ExchangeServer\OrganizationUserMemberOf.ascx" />
|
||||
<Content Include="Lync\UserControls\LyncUserSettings.ascx" />
|
||||
<Content Include="ProviderControls\CRM2011_Settings.ascx" />
|
||||
<Content Include="ProviderControls\EnterpriseStorage_Settings.ascx" />
|
||||
<Content Include="ProviderControls\HeliconZoo_Settings.ascx" />
|
||||
<Content Include="ServersEditWebPlatformInstaller.ascx" />
|
||||
<Content Include="ExchangeServer\ExchangeMailboxPlans.ascx" />
|
||||
|
@ -5143,6 +5151,7 @@
|
|||
<Content Include="App_LocalResources\PhoneNumbers.ascx.resx" />
|
||||
<Content Include="App_LocalResources\PhoneNumbersAddPhoneNumber.ascx.resx" />
|
||||
<Content Include="App_LocalResources\PhoneNumbersEditPhoneNumber.ascx.resx" />
|
||||
<Content Include="ProviderControls\App_LocalResources\EnterpriseStorage_Settings.ascx.resx" />
|
||||
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue