merge commit
This commit is contained in:
commit
754d9127de
73 changed files with 6049 additions and 383 deletions
|
@ -1638,3 +1638,325 @@ BEGIN
|
|||
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) VALUES (422, 12, 26, N'Exchange2007.DisclaimersAllowed', N'Disclaimers Allowed', 1, 0, NULL, NULL)
|
||||
END
|
||||
GO
|
||||
|
||||
-- Lync Enterprise Voice
|
||||
|
||||
IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='LyncUserPlans' AND COLS.name='TelephonyVoicePolicy')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[LyncUserPlans] ADD
|
||||
|
||||
[RemoteUserAccess] [bit] NOT NULL DEFAULT 0,
|
||||
[PublicIMConnectivity] [bit] NOT NULL DEFAULT 0,
|
||||
|
||||
[AllowOrganizeMeetingsWithExternalAnonymous] [bit] NOT NULL DEFAULT 0,
|
||||
|
||||
[Telephony] [int] NULL,
|
||||
|
||||
[ServerURI] [nvarchar](300) NULL,
|
||||
|
||||
[ArchivePolicy] [nvarchar](300) NULL,
|
||||
[TelephonyDialPlanPolicy] [nvarchar](300) NULL,
|
||||
[TelephonyVoicePolicy] [nvarchar](300) NULL
|
||||
|
||||
|
||||
END
|
||||
Go
|
||||
|
||||
--
|
||||
|
||||
DROP PROCEDURE GetLyncUserPlan;
|
||||
|
||||
DROP PROCEDURE AddLyncUserPlan;
|
||||
|
||||
DROP PROCEDURE UpdateLyncUserPlan;
|
||||
|
||||
DROP PROCEDURE DeleteLyncUserPlan;
|
||||
|
||||
--
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'DeleteLyncUserPlan')
|
||||
BEGIN
|
||||
EXEC sp_executesql N'CREATE PROCEDURE [dbo].[DeleteLyncUserPlan]
|
||||
(
|
||||
@LyncUserPlanId int
|
||||
)
|
||||
AS
|
||||
|
||||
-- delete lyncuserplan
|
||||
DELETE FROM LyncUserPlans
|
||||
WHERE LyncUserPlanId = @LyncUserPlanId
|
||||
|
||||
RETURN'
|
||||
END
|
||||
GO
|
||||
|
||||
--
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'UpdateLyncUserPlan')
|
||||
BEGIN
|
||||
EXEC sp_executesql N' CREATE PROCEDURE [dbo].[UpdateLyncUserPlan]
|
||||
(
|
||||
@LyncUserPlanId int,
|
||||
@LyncUserPlanName nvarchar(300),
|
||||
@LyncUserPlanType int,
|
||||
@IM bit,
|
||||
@Mobility bit,
|
||||
@MobilityEnableOutsideVoice bit,
|
||||
@Federation bit,
|
||||
@Conferencing bit,
|
||||
@EnterpriseVoice bit,
|
||||
@VoicePolicy int,
|
||||
@IsDefault bit,
|
||||
|
||||
@RemoteUserAccess bit,
|
||||
@PublicIMConnectivity bit,
|
||||
|
||||
@AllowOrganizeMeetingsWithExternalAnonymous bit,
|
||||
|
||||
@Telephony int,
|
||||
|
||||
@ServerURI nvarchar(300),
|
||||
|
||||
@ArchivePolicy nvarchar(300),
|
||||
|
||||
@TelephonyDialPlanPolicy nvarchar(300),
|
||||
@TelephonyVoicePolicy nvarchar(300)
|
||||
)
|
||||
AS
|
||||
|
||||
UPDATE LyncUserPlans SET
|
||||
LyncUserPlanName = @LyncUserPlanName,
|
||||
LyncUserPlanType = @LyncUserPlanType,
|
||||
IM = @IM,
|
||||
Mobility = @Mobility,
|
||||
MobilityEnableOutsideVoice = @MobilityEnableOutsideVoice,
|
||||
Federation = @Federation,
|
||||
Conferencing =@Conferencing,
|
||||
EnterpriseVoice = @EnterpriseVoice,
|
||||
VoicePolicy = @VoicePolicy,
|
||||
IsDefault = @IsDefault,
|
||||
|
||||
RemoteUserAccess = @RemoteUserAccess,
|
||||
PublicIMConnectivity = @PublicIMConnectivity,
|
||||
|
||||
AllowOrganizeMeetingsWithExternalAnonymous = @AllowOrganizeMeetingsWithExternalAnonymous,
|
||||
|
||||
Telephony = @Telephony,
|
||||
|
||||
ServerURI = @ServerURI,
|
||||
|
||||
ArchivePolicy = @ArchivePolicy,
|
||||
TelephonyDialPlanPolicy = @TelephonyDialPlanPolicy,
|
||||
TelephonyVoicePolicy = @TelephonyVoicePolicy
|
||||
|
||||
WHERE LyncUserPlanId = @LyncUserPlanId
|
||||
|
||||
|
||||
RETURN'
|
||||
END
|
||||
GO
|
||||
|
||||
--
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'AddLyncUserPlan')
|
||||
BEGIN
|
||||
EXEC sp_executesql N'CREATE PROCEDURE [dbo].[AddLyncUserPlan]
|
||||
(
|
||||
@LyncUserPlanId int OUTPUT,
|
||||
@ItemID int,
|
||||
@LyncUserPlanName nvarchar(300),
|
||||
@LyncUserPlanType int,
|
||||
@IM bit,
|
||||
@Mobility bit,
|
||||
@MobilityEnableOutsideVoice bit,
|
||||
@Federation bit,
|
||||
@Conferencing bit,
|
||||
@EnterpriseVoice bit,
|
||||
@VoicePolicy int,
|
||||
@IsDefault bit,
|
||||
|
||||
@RemoteUserAccess bit,
|
||||
@PublicIMConnectivity bit,
|
||||
|
||||
@AllowOrganizeMeetingsWithExternalAnonymous bit,
|
||||
|
||||
@Telephony int,
|
||||
|
||||
@ServerURI nvarchar(300),
|
||||
|
||||
@ArchivePolicy nvarchar(300),
|
||||
@TelephonyDialPlanPolicy nvarchar(300),
|
||||
@TelephonyVoicePolicy nvarchar(300)
|
||||
|
||||
)
|
||||
AS
|
||||
|
||||
|
||||
|
||||
IF (((SELECT Count(*) FROM LyncUserPlans WHERE ItemId = @ItemID) = 0) AND (@LyncUserPlanType=0))
|
||||
BEGIN
|
||||
SET @IsDefault = 1
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
IF ((@IsDefault = 1) AND (@LyncUserPlanType=0))
|
||||
BEGIN
|
||||
UPDATE LyncUserPlans SET IsDefault = 0 WHERE ItemID = @ItemID
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
INSERT INTO LyncUserPlans
|
||||
(
|
||||
ItemID,
|
||||
LyncUserPlanName,
|
||||
LyncUserPlanType,
|
||||
IM,
|
||||
Mobility,
|
||||
MobilityEnableOutsideVoice,
|
||||
Federation,
|
||||
Conferencing,
|
||||
EnterpriseVoice,
|
||||
VoicePolicy,
|
||||
IsDefault,
|
||||
|
||||
RemoteUserAccess,
|
||||
PublicIMConnectivity,
|
||||
|
||||
AllowOrganizeMeetingsWithExternalAnonymous,
|
||||
|
||||
Telephony,
|
||||
|
||||
ServerURI,
|
||||
|
||||
ArchivePolicy,
|
||||
TelephonyDialPlanPolicy,
|
||||
TelephonyVoicePolicy
|
||||
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
@ItemID,
|
||||
@LyncUserPlanName,
|
||||
@LyncUserPlanType,
|
||||
@IM,
|
||||
@Mobility,
|
||||
@MobilityEnableOutsideVoice,
|
||||
@Federation,
|
||||
@Conferencing,
|
||||
@EnterpriseVoice,
|
||||
@VoicePolicy,
|
||||
@IsDefault,
|
||||
|
||||
@RemoteUserAccess,
|
||||
@PublicIMConnectivity,
|
||||
|
||||
@AllowOrganizeMeetingsWithExternalAnonymous,
|
||||
|
||||
@Telephony,
|
||||
|
||||
@ServerURI,
|
||||
|
||||
@ArchivePolicy,
|
||||
@TelephonyDialPlanPolicy,
|
||||
@TelephonyVoicePolicy
|
||||
|
||||
)
|
||||
|
||||
SET @LyncUserPlanId = SCOPE_IDENTITY()
|
||||
|
||||
RETURN'
|
||||
END
|
||||
GO
|
||||
|
||||
--
|
||||
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetLyncUserPlan')
|
||||
BEGIN
|
||||
EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetLyncUserPlan]
|
||||
(
|
||||
@LyncUserPlanId int
|
||||
)
|
||||
AS
|
||||
SELECT
|
||||
LyncUserPlanId,
|
||||
ItemID,
|
||||
LyncUserPlanName,
|
||||
LyncUserPlanType,
|
||||
IM,
|
||||
Mobility,
|
||||
MobilityEnableOutsideVoice,
|
||||
Federation,
|
||||
Conferencing,
|
||||
EnterpriseVoice,
|
||||
VoicePolicy,
|
||||
IsDefault,
|
||||
|
||||
RemoteUserAccess,
|
||||
PublicIMConnectivity,
|
||||
|
||||
AllowOrganizeMeetingsWithExternalAnonymous,
|
||||
|
||||
Telephony,
|
||||
|
||||
ServerURI,
|
||||
|
||||
ArchivePolicy,
|
||||
TelephonyDialPlanPolicy,
|
||||
TelephonyVoicePolicy
|
||||
|
||||
FROM
|
||||
LyncUserPlans
|
||||
WHERE
|
||||
LyncUserPlanId = @LyncUserPlanId
|
||||
RETURN'
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER PROCEDURE [dbo].[GetLyncUserPlan]
|
||||
(
|
||||
@LyncUserPlanId int
|
||||
)
|
||||
AS
|
||||
SELECT
|
||||
LyncUserPlanId,
|
||||
ItemID,
|
||||
LyncUserPlanName,
|
||||
LyncUserPlanType,
|
||||
IM,
|
||||
Mobility,
|
||||
MobilityEnableOutsideVoice,
|
||||
Federation,
|
||||
Conferencing,
|
||||
EnterpriseVoice,
|
||||
VoicePolicy,
|
||||
IsDefault,
|
||||
|
||||
RemoteUserAccess,
|
||||
PublicIMConnectivity,
|
||||
|
||||
AllowOrganizeMeetingsWithExternalAnonymous,
|
||||
|
||||
Telephony,
|
||||
|
||||
ServerURI,
|
||||
|
||||
ArchivePolicy,
|
||||
TelephonyDialPlanPolicy,
|
||||
TelephonyVoicePolicy
|
||||
|
||||
FROM
|
||||
LyncUserPlans
|
||||
WHERE
|
||||
LyncUserPlanId = @LyncUserPlanId
|
||||
RETURN
|
||||
GO
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
General = 1,
|
||||
WebSites = 2,
|
||||
VpsExternalNetwork = 3,
|
||||
VpsManagementNetwork = 4
|
||||
VpsManagementNetwork = 4,
|
||||
PhoneNumbers = 5
|
||||
}
|
||||
}
|
||||
|
|
|
@ -913,6 +913,15 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetPolicyList", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public string[] GetPolicyList(int itemId, LyncPolicyType type, string name)
|
||||
{
|
||||
object[] results = this.Invoke("GetPolicyList", new object[] {
|
||||
itemId, type, name});
|
||||
return ((string[])(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public new void CancelAsync(object userState) {
|
||||
base.CancelAsync(userState);
|
||||
|
|
|
@ -3710,7 +3710,20 @@ namespace WebsitePanel.EnterpriseServer
|
|||
new SqlParameter("@Conferencing", lyncUserPlan.Conferencing),
|
||||
new SqlParameter("@EnterpriseVoice", lyncUserPlan.EnterpriseVoice),
|
||||
new SqlParameter("@VoicePolicy", lyncUserPlan.VoicePolicy),
|
||||
new SqlParameter("@IsDefault", lyncUserPlan.IsDefault)
|
||||
new SqlParameter("@IsDefault", lyncUserPlan.IsDefault),
|
||||
|
||||
new SqlParameter("@RemoteUserAccess", lyncUserPlan.RemoteUserAccess),
|
||||
new SqlParameter("@PublicIMConnectivity", lyncUserPlan.PublicIMConnectivity),
|
||||
|
||||
new SqlParameter("@AllowOrganizeMeetingsWithExternalAnonymous", lyncUserPlan.AllowOrganizeMeetingsWithExternalAnonymous),
|
||||
|
||||
new SqlParameter("@Telephony", lyncUserPlan.Telephony),
|
||||
|
||||
new SqlParameter("@ServerURI", lyncUserPlan.ServerURI),
|
||||
|
||||
new SqlParameter("@ArchivePolicy", lyncUserPlan.ArchivePolicy),
|
||||
new SqlParameter("@TelephonyDialPlanPolicy", lyncUserPlan.TelephonyDialPlanPolicy),
|
||||
new SqlParameter("@TelephonyVoicePolicy", lyncUserPlan.TelephonyVoicePolicy)
|
||||
);
|
||||
|
||||
return Convert.ToInt32(outParam.Value);
|
||||
|
@ -3733,7 +3746,20 @@ namespace WebsitePanel.EnterpriseServer
|
|||
new SqlParameter("@Conferencing", lyncUserPlan.Conferencing),
|
||||
new SqlParameter("@EnterpriseVoice", lyncUserPlan.EnterpriseVoice),
|
||||
new SqlParameter("@VoicePolicy", lyncUserPlan.VoicePolicy),
|
||||
new SqlParameter("@IsDefault", lyncUserPlan.IsDefault)
|
||||
new SqlParameter("@IsDefault", lyncUserPlan.IsDefault),
|
||||
|
||||
new SqlParameter("@RemoteUserAccess", lyncUserPlan.RemoteUserAccess),
|
||||
new SqlParameter("@PublicIMConnectivity", lyncUserPlan.PublicIMConnectivity),
|
||||
|
||||
new SqlParameter("@AllowOrganizeMeetingsWithExternalAnonymous", lyncUserPlan.AllowOrganizeMeetingsWithExternalAnonymous),
|
||||
|
||||
new SqlParameter("@Telephony", lyncUserPlan.Telephony),
|
||||
|
||||
new SqlParameter("@ServerURI", lyncUserPlan.ServerURI),
|
||||
|
||||
new SqlParameter("@ArchivePolicy", lyncUserPlan.ArchivePolicy),
|
||||
new SqlParameter("@TelephonyDialPlanPolicy", lyncUserPlan.TelephonyDialPlanPolicy),
|
||||
new SqlParameter("@TelephonyVoicePolicy", lyncUserPlan.TelephonyVoicePolicy)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -53,8 +53,11 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
|
||||
List<string> resSettings = new List<string>(lyncSettings);
|
||||
|
||||
ExtendLyncSettings(resSettings, "primarydomaincontroller", GetProviderProperty(organizationServiceId, "primarydomaincontroller"));
|
||||
ExtendLyncSettings(resSettings, "rootou", GetProviderProperty(organizationServiceId, "rootou"));
|
||||
if (organizationServiceId != -1)
|
||||
{
|
||||
ExtendLyncSettings(resSettings, "primarydomaincontroller", GetProviderProperty(organizationServiceId, "primarydomaincontroller"));
|
||||
ExtendLyncSettings(resSettings, "rootou", GetProviderProperty(organizationServiceId, "rootou"));
|
||||
}
|
||||
ws.ServiceProviderSettingsSoapHeaderValue.Settings = resSettings.ToArray();
|
||||
return ws;
|
||||
}
|
||||
|
@ -345,6 +348,13 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
{
|
||||
LyncUserResult res = TaskManager.StartResultTask<LyncUserResult>("LYNC", "SET_LYNC_USER_GENERAL_SETTINGS");
|
||||
|
||||
string PIN = "";
|
||||
|
||||
string[] uriAndPin = ("" + lineUri).Split(':');
|
||||
|
||||
if (uriAndPin.Length > 0) lineUri = uriAndPin[0];
|
||||
if (uriAndPin.Length > 1) PIN = uriAndPin[1];
|
||||
|
||||
LyncUser user = null;
|
||||
|
||||
try
|
||||
|
@ -378,20 +388,22 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
|
||||
if (!string.IsNullOrEmpty(sipAddress))
|
||||
{
|
||||
if (sipAddress != usr.UserPrincipalName)
|
||||
if (user.SipAddress != sipAddress)
|
||||
{
|
||||
if (DataProvider.LyncUserExists(accountId, sipAddress))
|
||||
if (sipAddress != usr.UserPrincipalName)
|
||||
{
|
||||
TaskManager.CompleteResultTask(res, LyncErrorCodes.ADDRESS_ALREADY_USED);
|
||||
return res;
|
||||
if (DataProvider.LyncUserExists(accountId, sipAddress))
|
||||
{
|
||||
TaskManager.CompleteResultTask(res, LyncErrorCodes.ADDRESS_ALREADY_USED);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
user.SipAddress = sipAddress;
|
||||
}
|
||||
|
||||
user.SipAddress = sipAddress;
|
||||
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(lineUri)) user.LineUri = lineUri;
|
||||
user.LineUri = lineUri;
|
||||
user.PIN = PIN;
|
||||
|
||||
lync.SetLyncUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName, user);
|
||||
|
||||
|
@ -1002,6 +1014,51 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
|
||||
#endregion
|
||||
|
||||
public static string[] GetPolicyList(int itemId, LyncPolicyType type, string name)
|
||||
{
|
||||
string[] ret = null;
|
||||
try
|
||||
{
|
||||
if (itemId == -1)
|
||||
{
|
||||
// policy list in all lync servers
|
||||
List<string> allpolicylist = new List<string>();
|
||||
List<ServerInfo> servers = ServerController.GetAllServers();
|
||||
foreach (ServerInfo server in servers)
|
||||
{
|
||||
List<ServiceInfo> services = ServerController.GetServicesByServerIdGroupName(server.ServerId, ResourceGroups.Lync);
|
||||
foreach (ServiceInfo service in services)
|
||||
{
|
||||
LyncServer lync = GetLyncServer(service.ServiceId, -1);
|
||||
string[] values = lync.GetPolicyList(type, name);
|
||||
foreach (string val in values)
|
||||
if (allpolicylist.IndexOf(val) == -1)
|
||||
allpolicylist.Add(val);
|
||||
}
|
||||
|
||||
}
|
||||
ret = allpolicylist.ToArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Organization org = (Organization)PackageController.GetPackageItem(itemId);
|
||||
|
||||
int lyncServiceId = GetLyncServiceID(org.PackageId);
|
||||
LyncServer lync = GetLyncServer(lyncServiceId, org.ServiceId);
|
||||
|
||||
ret = lync.GetPolicyList(type, name);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
finally
|
||||
{
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#region Private methods
|
||||
public static UInt64 ConvertPhoneNumberToLong(string ip)
|
||||
|
|
|
@ -965,38 +965,59 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return res;
|
||||
}
|
||||
|
||||
var startExternalIP = IPAddress.Parse(externalIP);
|
||||
var startInternalIP = IPAddress.Parse(internalIP);
|
||||
var endExternalIP = IPAddress.Parse(endIP);
|
||||
|
||||
// handle CIDR notation IP/Subnet addresses
|
||||
if (startExternalIP.IsSubnet && endExternalIP == null) {
|
||||
endExternalIP = startExternalIP.LastSubnetIP;
|
||||
startExternalIP = startExternalIP.FirstSubnetIP;
|
||||
}
|
||||
|
||||
if (startExternalIP.V6 != startInternalIP.V6 && (startExternalIP.V6 != endExternalIP.V6 && endExternalIP != null)) throw new NotSupportedException("All IP addresses must be either V4 or V6.");
|
||||
|
||||
int i = 0;
|
||||
long step = ((endExternalIP - startExternalIP) > 0) ? 1 : -1;
|
||||
|
||||
while (true)
|
||||
if (pool == IPAddressPool.PhoneNumbers)
|
||||
{
|
||||
if (i > MaxSubnet)
|
||||
break;
|
||||
string phoneFormat = "D" + Math.Max(externalIP.Length, endIP.Length);
|
||||
|
||||
// add IP address
|
||||
DataProvider.AddIPAddress((int)pool, serverId, startExternalIP.ToString(), startInternalIP.ToString(), subnetMask, defaultGateway, comments);
|
||||
UInt64 start = UInt64.Parse(externalIP);
|
||||
UInt64 end = UInt64.Parse(endIP);
|
||||
|
||||
if (startExternalIP == endExternalIP)
|
||||
break;
|
||||
if (end < start) { UInt64 temp = start; start = end; end = temp; }
|
||||
|
||||
i++;
|
||||
const UInt64 maxPhones = 1000; // TODO max?
|
||||
|
||||
startExternalIP += step;
|
||||
end = Math.Min(end, start + maxPhones);
|
||||
|
||||
if (startInternalIP != 0)
|
||||
startInternalIP += step;
|
||||
for (UInt64 number = start; number <= end; number++)
|
||||
DataProvider.AddIPAddress((int)pool, serverId, number.ToString(phoneFormat), "", subnetMask, defaultGateway, comments);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
var startExternalIP = IPAddress.Parse(externalIP);
|
||||
var startInternalIP = IPAddress.Parse(internalIP);
|
||||
var endExternalIP = IPAddress.Parse(endIP);
|
||||
|
||||
// handle CIDR notation IP/Subnet addresses
|
||||
if (startExternalIP.IsSubnet && endExternalIP == null)
|
||||
{
|
||||
endExternalIP = startExternalIP.LastSubnetIP;
|
||||
startExternalIP = startExternalIP.FirstSubnetIP;
|
||||
}
|
||||
|
||||
if (startExternalIP.V6 != startInternalIP.V6 && (startExternalIP.V6 != endExternalIP.V6 && endExternalIP != null)) throw new NotSupportedException("All IP addresses must be either V4 or V6.");
|
||||
|
||||
int i = 0;
|
||||
long step = ((endExternalIP - startExternalIP) > 0) ? 1 : -1;
|
||||
|
||||
while (true)
|
||||
{
|
||||
if (i > MaxSubnet)
|
||||
break;
|
||||
|
||||
// add IP address
|
||||
DataProvider.AddIPAddress((int)pool, serverId, startExternalIP.ToString(), startInternalIP.ToString(), subnetMask, defaultGateway, comments);
|
||||
|
||||
if (startExternalIP == endExternalIP)
|
||||
break;
|
||||
|
||||
i++;
|
||||
|
||||
startExternalIP += step;
|
||||
|
||||
if (startInternalIP != 0)
|
||||
startInternalIP += step;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
|
@ -1,58 +1,58 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3" />
|
||||
<section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3"/>
|
||||
</configSections>
|
||||
<!-- Connection strings -->
|
||||
<connectionStrings>
|
||||
<add name="EnterpriseServer" connectionString="Server=(local)\SQLExpress;Database=WebsitePanel;uid=sa;pwd=Password12" providerName="System.Data.SqlClient" />
|
||||
<add name="EnterpriseServer" connectionString="Server=(local)\SQLExpress;Database=WebsitePanel;uid=sa;pwd=Password12" providerName="System.Data.SqlClient"/>
|
||||
</connectionStrings>
|
||||
<appSettings>
|
||||
<!-- Encryption util settings -->
|
||||
<add key="WebsitePanel.CryptoKey" value="1234567890" />
|
||||
<add key="WebsitePanel.CryptoKey" value="1234567890"/>
|
||||
<!-- A1D4KDHUE83NKHddF -->
|
||||
<add key="WebsitePanel.EncryptionEnabled" value="true" />
|
||||
<add key="WebsitePanel.EncryptionEnabled" value="true"/>
|
||||
<!-- Web Applications -->
|
||||
<add key="WebsitePanel.EnterpriseServer.WebApplicationsPath" value="~/WebApplications" />
|
||||
<add key="WebsitePanel.EnterpriseServer.WebApplicationsPath" value="~/WebApplications"/>
|
||||
<!-- Communication settings -->
|
||||
<!-- Maximum waiting time when sending request to the remote server
|
||||
The value is in seconds. "-1" - infinite. -->
|
||||
<add key="WebsitePanel.EnterpriseServer.ServerRequestTimeout" value="3600" />
|
||||
<add key="WebsitePanel.AltConnectionString" value="ConnectionString" />
|
||||
<add key="WebsitePanel.AltCryptoKey" value="CryptoKey" />
|
||||
<add key="WebsitePanel.EnterpriseServer.ServerRequestTimeout" value="3600"/>
|
||||
<add key="WebsitePanel.AltConnectionString" value="ConnectionString"/>
|
||||
<add key="WebsitePanel.AltCryptoKey" value="CryptoKey"/>
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<!-- Disable any authentication -->
|
||||
<authentication mode="None" />
|
||||
<authentication mode="None"/>
|
||||
<!-- Correct HTTP runtime settings -->
|
||||
<httpRuntime executionTimeout="3600" maxRequestLength="16384" />
|
||||
<httpRuntime executionTimeout="3600" maxRequestLength="16384"/>
|
||||
<!-- Set globalization settings -->
|
||||
<globalization culture="en-US" uiCulture="en" requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="UTF-8" />
|
||||
<globalization culture="en-US" uiCulture="en" requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="UTF-8"/>
|
||||
<!-- Web Services settings -->
|
||||
<webServices>
|
||||
<protocols>
|
||||
<remove name="HttpPost" />
|
||||
<remove name="HttpPostLocalhost" />
|
||||
<remove name="HttpGet" />
|
||||
<remove name="HttpPost"/>
|
||||
<remove name="HttpPostLocalhost"/>
|
||||
<remove name="HttpGet"/>
|
||||
</protocols>
|
||||
<soapServerProtocolFactory type="Microsoft.Web.Services3.WseProtocolFactory, Microsoft.Web.Services3" />
|
||||
<soapServerProtocolFactory type="Microsoft.Web.Services3.WseProtocolFactory, Microsoft.Web.Services3"/>
|
||||
</webServices>
|
||||
<compilation targetFramework="4.0" />
|
||||
<compilation targetFramework="4.0" debug="true"/>
|
||||
</system.web>
|
||||
<!-- WSE 3.0 settings -->
|
||||
<microsoft.web.services3>
|
||||
<diagnostics>
|
||||
<trace enabled="false" input="InputTrace.webinfo" output="OutputTrace.webinfo" />
|
||||
<trace enabled="false" input="InputTrace.webinfo" output="OutputTrace.webinfo"/>
|
||||
</diagnostics>
|
||||
<messaging>
|
||||
<maxMessageLength value="-1" />
|
||||
<mtom clientMode="On" />
|
||||
<maxMessageLength value="-1"/>
|
||||
<mtom clientMode="On"/>
|
||||
</messaging>
|
||||
<security>
|
||||
<securityTokenManager>
|
||||
<add type="WebsitePanel.EnterpriseServer.ServiceUsernameTokenManager, WebsitePanel.EnterpriseServer.Code" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" localName="UsernameToken" />
|
||||
<add type="WebsitePanel.EnterpriseServer.ServiceUsernameTokenManager, WebsitePanel.EnterpriseServer.Code" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" localName="UsernameToken"/>
|
||||
</securityTokenManager>
|
||||
</security>
|
||||
<policy fileName="WsePolicyCache.Config" />
|
||||
<policy fileName="WsePolicyCache.Config"/>
|
||||
</microsoft.web.services3>
|
||||
</configuration>
|
|
@ -151,5 +151,12 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
#endregion
|
||||
|
||||
[WebMethod]
|
||||
public string[] GetPolicyList(int itemId, LyncPolicyType type, string name)
|
||||
{
|
||||
return LyncController.GetPolicyList(itemId, type, name);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -48,5 +48,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
bool RemoveFederationDomain(string organizationId, string domainName);
|
||||
|
||||
void ReloadConfiguration();
|
||||
|
||||
string[] GetPolicyList(LyncPolicyType type, string name);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace WebsitePanel.Providers.HostedSolution
|
||||
{
|
||||
public enum LyncPolicyType
|
||||
{
|
||||
Archiving = 0,
|
||||
DialPlan = 1,
|
||||
Voice = 2,
|
||||
Pin = 3
|
||||
}
|
||||
|
||||
}
|
|
@ -41,5 +41,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
public int AccountID { get; set; }
|
||||
public int LyncUserPlanId { get; set; }
|
||||
public string LyncUserPlanName { get; set; }
|
||||
|
||||
public string PIN { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,6 +122,63 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
set { this.voicePolicy = value; }
|
||||
}
|
||||
|
||||
bool remoteUserAccess;
|
||||
bool publicIMConnectivity;
|
||||
|
||||
bool allowOrganizeMeetingsWithExternalAnonymous;
|
||||
|
||||
int telephony;
|
||||
|
||||
string serverURI;
|
||||
|
||||
string archivePolicy;
|
||||
string telephonyDialPlanPolicy;
|
||||
string telephonyVoicePolicy;
|
||||
|
||||
public bool RemoteUserAccess
|
||||
{
|
||||
get { return this.remoteUserAccess; }
|
||||
set { this.remoteUserAccess = value; }
|
||||
}
|
||||
public bool PublicIMConnectivity
|
||||
{
|
||||
get { return this.publicIMConnectivity; }
|
||||
set { this.publicIMConnectivity = value; }
|
||||
}
|
||||
|
||||
public bool AllowOrganizeMeetingsWithExternalAnonymous
|
||||
{
|
||||
get { return this.allowOrganizeMeetingsWithExternalAnonymous; }
|
||||
set { this.allowOrganizeMeetingsWithExternalAnonymous = value; }
|
||||
}
|
||||
|
||||
public int Telephony
|
||||
{
|
||||
get { return this.telephony; }
|
||||
set { this.telephony = value; }
|
||||
}
|
||||
|
||||
public string ServerURI
|
||||
{
|
||||
get { return this.serverURI; }
|
||||
set { this.serverURI = value; }
|
||||
}
|
||||
|
||||
public string ArchivePolicy
|
||||
{
|
||||
get { return this.archivePolicy; }
|
||||
set { this.archivePolicy = value; }
|
||||
}
|
||||
|
||||
public string TelephonyDialPlanPolicy
|
||||
{
|
||||
get { return this.telephonyDialPlanPolicy; }
|
||||
set { this.telephonyDialPlanPolicy = value; }
|
||||
}
|
||||
public string TelephonyVoicePolicy
|
||||
{
|
||||
get { return this.telephonyVoicePolicy; }
|
||||
set { this.telephonyVoicePolicy = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,6 +94,7 @@
|
|||
<Compile Include="HostedSolution\LyncErrorCodes.cs" />
|
||||
<Compile Include="HostedSolution\LyncFederationDomain.cs" />
|
||||
<Compile Include="HostedSolution\LyncOrganizationStatistics.cs" />
|
||||
<Compile Include="HostedSolution\LyncPolicyType.cs" />
|
||||
<Compile Include="HostedSolution\LyncTransaction.cs" />
|
||||
<Compile Include="HostedSolution\LyncUserStatistics.cs" />
|
||||
<Compile Include="HostedSolution\LyncStatisticsReport.cs" />
|
||||
|
|
|
@ -269,7 +269,22 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
command.Parameters.Add("Identity", userUpn);
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
||||
SetLyncUserPlanInternal(organizationId, userUpn, plan, runspace);
|
||||
command = new Command("Update-CsAddressBook");
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
command = new Command("Update-CsUserDatabase");
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
||||
int trySleep = 5000; int tryMaxCount = 10; bool PlanSet = false;
|
||||
for (int tryCount = 0; (tryCount < tryMaxCount) && (!PlanSet); tryCount++ )
|
||||
{
|
||||
try
|
||||
{
|
||||
PlanSet = SetLyncUserPlanInternal(organizationId, userUpn, plan, runspace);
|
||||
}
|
||||
catch { }
|
||||
if (!PlanSet) System.Threading.Thread.Sleep(trySleep);
|
||||
}
|
||||
|
||||
command = new Command("Update-CsAddressBook");
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
command = new Command("Update-CsUserDatabase");
|
||||
|
@ -317,6 +332,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
lyncUser.LineUri = (string) GetPSObjectProperty(user, "LineURI");
|
||||
|
||||
lyncUser.SipAddress = lyncUser.SipAddress.ToLower().Replace("sip:", "");
|
||||
lyncUser.LineUri = lyncUser.LineUri.ToLower().Replace("tel:+", "");
|
||||
lyncUser.LineUri = lyncUser.LineUri.ToLower().Replace("tel:", "");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -404,13 +421,25 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
command.Parameters.Add("SipAddress", "SIP:" + lyncUser.SipAddress);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(lyncUser.SipAddress))
|
||||
if (!string.IsNullOrEmpty(lyncUser.LineUri))
|
||||
{
|
||||
command.Parameters.Add("LineUri", lyncUser.LineUri);
|
||||
command.Parameters.Add("LineUri", "TEL:+" + lyncUser.LineUri);
|
||||
}
|
||||
else
|
||||
{
|
||||
command.Parameters.Add("LineUri", null);
|
||||
}
|
||||
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
||||
if (!String.IsNullOrEmpty(lyncUser.PIN))
|
||||
{
|
||||
command = new Command("Set-CsClientPin");
|
||||
command.Parameters.Add("Identity", userUpn);
|
||||
command.Parameters.Add("Pin", lyncUser.PIN);
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
}
|
||||
|
||||
command = new Command("Update-CsAddressBook");
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
||||
|
@ -454,7 +483,13 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
bCloseRunSpace = true;
|
||||
}
|
||||
|
||||
var command = new Command("Grant-CsExternalAccessPolicy");
|
||||
// EnterpriseVoice
|
||||
var command = new Command("Set-CsUser");
|
||||
command.Parameters.Add("Identity", userUpn);
|
||||
command.Parameters.Add("EnterpriseVoiceEnabled", plan.EnterpriseVoice);
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
||||
command = new Command("Grant-CsExternalAccessPolicy");
|
||||
command.Parameters.Add("Identity", userUpn);
|
||||
command.Parameters.Add("PolicyName", plan.Federation ? organizationId : null);
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
@ -466,7 +501,6 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
|
||||
command = new Command("Grant-CsMobilityPolicy");
|
||||
command.Parameters.Add("Identity", userUpn);
|
||||
|
||||
if (plan.Mobility)
|
||||
{
|
||||
command.Parameters.Add("PolicyName", plan.MobilityEnableOutsideVoice ? organizationId + " EnableOutSideVoice" : organizationId + " DisableOutSideVoice");
|
||||
|
@ -475,8 +509,26 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
{
|
||||
command.Parameters.Add("PolicyName", null);
|
||||
}
|
||||
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
||||
// ArchivePolicy
|
||||
command = new Command("Grant-CsArchivingPolicy");
|
||||
command.Parameters.Add("Identity", userUpn);
|
||||
command.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.ArchivePolicy) ? null : plan.ArchivePolicy);
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
||||
// DialPlan
|
||||
command = new Command("Grant-CsDialPlan");
|
||||
command.Parameters.Add("Identity", userUpn);
|
||||
command.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.TelephonyDialPlanPolicy) ? null : plan.TelephonyDialPlanPolicy);
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
||||
// VoicePolicy
|
||||
command = new Command("Grant-CsVoicePolicy");
|
||||
command.Parameters.Add("Identity", userUpn);
|
||||
command.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.TelephonyVoicePolicy) ? null : plan.TelephonyVoicePolicy);
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
|
||||
command = new Command("Update-CsUserDatabase");
|
||||
ExecuteShellCommand(runspace, command, false);
|
||||
}
|
||||
|
@ -744,6 +796,92 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
|
||||
#endregion
|
||||
|
||||
#region Policy
|
||||
|
||||
internal override string[] GetPolicyListInternal(LyncPolicyType type, string name)
|
||||
{
|
||||
List<string> ret = new List<string>();
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case LyncPolicyType.Archiving:
|
||||
{
|
||||
Runspace runSpace = OpenRunspace();
|
||||
Command cmd = new Command("Get-CsArchivingPolicy");
|
||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
||||
if ((result != null) && (result.Count > 0))
|
||||
{
|
||||
foreach (PSObject res in result)
|
||||
{
|
||||
string Identity = GetPSObjectProperty(res, "Identity").ToString();
|
||||
ret.Add(Identity);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LyncPolicyType.DialPlan:
|
||||
{
|
||||
Runspace runSpace = OpenRunspace();
|
||||
Command cmd = new Command("Get-CsDialPlan");
|
||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
||||
if ((result != null) && (result.Count > 0))
|
||||
{
|
||||
foreach (PSObject res in result)
|
||||
{
|
||||
string Identity = GetPSObjectProperty(res, "Identity").ToString();
|
||||
string Description = "" + (string)GetPSObjectProperty(res, "Description");
|
||||
if (Description.ToLower().IndexOf(name.ToLower()) == -1) continue;
|
||||
ret.Add(Identity);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LyncPolicyType.Voice:
|
||||
{
|
||||
Runspace runSpace = OpenRunspace();
|
||||
Command cmd = new Command("Get-CsVoicePolicy");
|
||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
||||
if ((result != null) && (result.Count > 0))
|
||||
{
|
||||
foreach (PSObject res in result)
|
||||
{
|
||||
string Identity = GetPSObjectProperty(res, "Identity").ToString();
|
||||
string Description = "" + (string)GetPSObjectProperty(res, "Description");
|
||||
if (Description.ToLower().IndexOf(name.ToLower()) == -1) continue;
|
||||
|
||||
ret.Add(Identity);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LyncPolicyType.Pin:
|
||||
{
|
||||
Runspace runSpace = OpenRunspace();
|
||||
Command cmd = new Command("Get-CsPinPolicy");
|
||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
||||
if ((result != null) && (result.Count > 0))
|
||||
{
|
||||
foreach (PSObject res in result)
|
||||
{
|
||||
string Identity = GetPSObjectProperty(res, "Identity").ToString();
|
||||
string str = "" + GetPSObjectProperty(res, name);
|
||||
ret.Add(str);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
return ret.ToArray();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -134,6 +134,11 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
ReloadConfigurationInternal();
|
||||
}
|
||||
|
||||
public virtual string[] GetPolicyList(LyncPolicyType type, string name)
|
||||
{
|
||||
return GetPolicyListInternal(type, name);
|
||||
}
|
||||
|
||||
public override bool IsInstalled()
|
||||
{
|
||||
bool bResult = false;
|
||||
|
@ -209,6 +214,11 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
internal virtual string[] GetPolicyListInternal(LyncPolicyType type, string name)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
#region PowerShell integration
|
||||
|
||||
/// <summary> Opens runspace.</summary>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>WebsitePanel.Providers.HostedSolution.Lync2013</RootNamespace>
|
||||
<AssemblyName>WebsitePanel.Providers.HostedSolution.Lync2013</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
|
|
|
@ -50,12 +50,22 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
Log.WriteEnd("{0} {1}", LogPrefix, text);
|
||||
}
|
||||
|
||||
public static void LogInfo(string message)
|
||||
{
|
||||
Log.WriteInfo("{0} {1}", LogPrefix, message);
|
||||
}
|
||||
|
||||
public static void LogInfo(string message, params object[] args)
|
||||
{
|
||||
string text = String.Format(message, args);
|
||||
Log.WriteInfo("{0} {1}", LogPrefix, text);
|
||||
}
|
||||
|
||||
public static void LogWarning(string message)
|
||||
{
|
||||
Log.WriteWarning("{0} {1}", LogPrefix, message);
|
||||
}
|
||||
|
||||
public static void LogWarning(string message, params object[] args)
|
||||
{
|
||||
string text = String.Format(message, args);
|
||||
|
|
|
@ -163,6 +163,11 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
ReloadConfigurationInternal();
|
||||
}
|
||||
|
||||
public string[] GetPolicyList(LyncPolicyType type, string name)
|
||||
{
|
||||
return GetPolicyListInternal(type, name);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region organization
|
||||
|
@ -298,7 +303,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
DirectoryEntry ou = ActiveDirectoryUtils.GetADObject(path);
|
||||
string[] sipDs = (string[])ActiveDirectoryUtils.GetADObjectPropertyMultiValue(ou, "msRTCSIP-Domains");
|
||||
|
||||
foreach (string sipD in sipDs)
|
||||
foreach (string sipD in sipDs)
|
||||
DeleteSipDomain(runSpace, sipD);
|
||||
|
||||
//clear the msRTCSIP-Domains, TenantID, ObjectID
|
||||
|
@ -518,6 +523,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
lyncUser.LineUri = (string)GetPSObjectProperty(user, "LineURI");
|
||||
|
||||
lyncUser.SipAddress = lyncUser.SipAddress.ToLower().Replace("sip:", "");
|
||||
lyncUser.LineUri = lyncUser.LineUri.ToLower().Replace("tel:+", "");
|
||||
lyncUser.LineUri = lyncUser.LineUri.ToLower().Replace("tel:", "");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -611,11 +618,20 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
|
||||
cmd = new Command("Set-CsUser");
|
||||
cmd.Parameters.Add("Identity", userUpn);
|
||||
if (!string.IsNullOrEmpty(lyncUser.SipAddress)) cmd.Parameters.Add("SipAddress", "SIP:"+lyncUser.SipAddress);
|
||||
if (!string.IsNullOrEmpty(lyncUser.SipAddress)) cmd.Parameters.Add("LineUri", lyncUser.LineUri);
|
||||
|
||||
if (!string.IsNullOrEmpty(lyncUser.SipAddress)) cmd.Parameters.Add("SipAddress", "SIP:" + lyncUser.SipAddress);
|
||||
if (!string.IsNullOrEmpty(lyncUser.LineUri)) cmd.Parameters.Add("LineUri", "TEL:+" + lyncUser.LineUri);
|
||||
else cmd.Parameters.Add("LineUri", null);
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
||||
if (!String.IsNullOrEmpty(lyncUser.PIN))
|
||||
{
|
||||
cmd = new Command("Set-CsClientPin");
|
||||
cmd.Parameters.Add("Identity", userUpn);
|
||||
cmd.Parameters.Add("Pin", lyncUser.PIN);
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
}
|
||||
|
||||
|
||||
//initiate addressbook generation
|
||||
cmd = new Command("Update-CsAddressBook");
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
@ -657,8 +673,14 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
bCloseRunSpace = true;
|
||||
}
|
||||
|
||||
// EnterpriseVoice
|
||||
Command cmd = new Command("Set-CsUser");
|
||||
cmd.Parameters.Add("Identity", userUpn);
|
||||
cmd.Parameters.Add("EnterpriseVoiceEnabled", plan.EnterpriseVoice);
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
||||
//CsExternalAccessPolicy
|
||||
Command cmd = new Command("Grant-CsExternalAccessPolicy");
|
||||
cmd = new Command("Grant-CsExternalAccessPolicy");
|
||||
cmd.Parameters.Add("Identity", userUpn);
|
||||
cmd.Parameters.Add("PolicyName", plan.Federation ? organizationId : null);
|
||||
ExecuteShellCommand(runSpace, cmd);
|
||||
|
@ -678,6 +700,24 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
cmd.Parameters.Add("PolicyName", null);
|
||||
ExecuteShellCommand(runSpace, cmd);
|
||||
|
||||
// ArchivePolicy
|
||||
cmd = new Command("Grant-CsArchivingPolicy");
|
||||
cmd.Parameters.Add("Identity", userUpn);
|
||||
cmd.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.ArchivePolicy) ? null : plan.ArchivePolicy);
|
||||
ExecuteShellCommand(runSpace, cmd);
|
||||
|
||||
// DialPlan
|
||||
cmd = new Command("Grant-CsDialPlan");
|
||||
cmd.Parameters.Add("Identity", userUpn);
|
||||
cmd.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.TelephonyDialPlanPolicy) ? null : plan.TelephonyDialPlanPolicy);
|
||||
ExecuteShellCommand(runSpace, cmd);
|
||||
|
||||
// VoicePolicy
|
||||
cmd = new Command("Grant-CsVoicePolicy");
|
||||
cmd.Parameters.Add("Identity", userUpn);
|
||||
cmd.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.TelephonyVoicePolicy) ? null : plan.TelephonyVoicePolicy);
|
||||
ExecuteShellCommand(runSpace, cmd);
|
||||
|
||||
//initiate user database replication
|
||||
cmd = new Command("Update-CsUserDatabase");
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
@ -887,6 +927,90 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
HostedSolutionLog.LogEnd("DeleteMobilityPolicy");
|
||||
}
|
||||
|
||||
internal string[] GetPolicyListInternal(LyncPolicyType type, string name)
|
||||
{
|
||||
List<string> ret = new List<string>();
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case LyncPolicyType.Archiving:
|
||||
{
|
||||
Runspace runSpace = OpenRunspace();
|
||||
Command cmd = new Command("Get-CsArchivingPolicy");
|
||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
||||
if ((result != null) && (result.Count > 0))
|
||||
{
|
||||
foreach (PSObject res in result)
|
||||
{
|
||||
string Identity = GetPSObjectProperty(res, "Identity").ToString();
|
||||
ret.Add(Identity);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LyncPolicyType.DialPlan:
|
||||
{
|
||||
Runspace runSpace = OpenRunspace();
|
||||
Command cmd = new Command("Get-CsDialPlan");
|
||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
||||
if ((result != null) && (result.Count > 0))
|
||||
{
|
||||
foreach (PSObject res in result)
|
||||
{
|
||||
string Identity = GetPSObjectProperty(res, "Identity").ToString();
|
||||
string Description = "" + (string)GetPSObjectProperty(res, "Description");
|
||||
if (Description.ToLower().IndexOf(name.ToLower()) == -1) continue;
|
||||
ret.Add(Identity);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LyncPolicyType.Voice:
|
||||
{
|
||||
Runspace runSpace = OpenRunspace();
|
||||
Command cmd = new Command("Get-CsVoicePolicy");
|
||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
||||
if ((result != null) && (result.Count > 0))
|
||||
{
|
||||
foreach (PSObject res in result)
|
||||
{
|
||||
string Identity = GetPSObjectProperty(res, "Identity").ToString();
|
||||
string Description = "" + (string)GetPSObjectProperty(res, "Description");
|
||||
if (Description.ToLower().IndexOf(name.ToLower()) == -1) continue;
|
||||
|
||||
ret.Add(Identity);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LyncPolicyType.Pin:
|
||||
{
|
||||
Runspace runSpace = OpenRunspace();
|
||||
Command cmd = new Command("Get-CsPinPolicy");
|
||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
||||
if ((result != null) && (result.Count > 0))
|
||||
{
|
||||
foreach (PSObject res in result)
|
||||
{
|
||||
string Identity = GetPSObjectProperty(res, "Identity").ToString();
|
||||
string str = "" + GetPSObjectProperty(res, name);
|
||||
ret.Add(str);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return ret.ToArray();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Sytsem Related Methods
|
||||
|
|
|
@ -628,6 +628,16 @@ namespace WebsitePanel.Providers.Lync {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetPolicyList", 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 string[] GetPolicyList(LyncPolicyType type, string name)
|
||||
{
|
||||
object[] results = this.Invoke("GetPolicyList", new object[] {
|
||||
type, name});
|
||||
return ((string[])(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public new void CancelAsync(object userState) {
|
||||
base.CancelAsync(userState);
|
||||
|
|
|
@ -247,7 +247,25 @@ namespace WebsitePanel.Server
|
|||
}
|
||||
}
|
||||
|
||||
[WebMethod, SoapHeader("settings")]
|
||||
public string[] GetPolicyList(LyncPolicyType type, string name)
|
||||
{
|
||||
string[] ret = null;
|
||||
|
||||
try
|
||||
{
|
||||
Log.WriteStart("{0}.GetPolicyList", ProviderSettings.ProviderName);
|
||||
ret = Lync.GetPolicyList(type, name);
|
||||
Log.WriteEnd("{0}.GetPolicyList", ProviderSettings.ProviderName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError(String.Format("Error: {0}.GetPolicyList", ProviderSettings.ProviderName), ex);
|
||||
throw;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -81,7 +81,10 @@
|
|||
<!--END-->
|
||||
<!--MenuItem url="http://phpmysqladmin.com" title="phpMyAdmin" target="_blank"
|
||||
resourceGroup="MySQL4"/-->
|
||||
</ModuleData>
|
||||
|
||||
<MenuItem pageID="LyncPhoneNumbers" resourceGroup="Hosted Organizations" />
|
||||
|
||||
</ModuleData>
|
||||
|
||||
<ModuleData id="SpaceIcons">
|
||||
<Icon pageID="SpaceDomains" resourceGroup="OS" imageUrl="icons/world_48.png" />
|
||||
|
|
|
@ -160,7 +160,17 @@
|
|||
<Control key="edit_ip" src="WebsitePanel/IPAddressesEditIPAddress.ascx" title="EditIPAddress" type="View" icon="adress_48.png" />
|
||||
</Controls>
|
||||
</ModuleDefinition>
|
||||
<ModuleDefinition id="Servers">
|
||||
|
||||
<ModuleDefinition id="PhoneNumbers">
|
||||
<Controls>
|
||||
<Control key="" src="WebsitePanel/PhoneNumbers.ascx" title="PhoneNumbers" type="View" />
|
||||
<Control key="add_phone" src="WebsitePanel/PhoneNumbersAddPhoneNumber.ascx" title="AddPhoneNumber" type="View" icon="adress_add_48.png" />
|
||||
<Control key="edit_phone" src="WebsitePanel/PhoneNumbersEditPhoneNumber.ascx" title="EditPhoneNumber" type="View" icon="adress_48.png" />
|
||||
</Controls>
|
||||
</ModuleDefinition>
|
||||
|
||||
|
||||
<ModuleDefinition id="Servers">
|
||||
<Controls>
|
||||
<Control key="" src="WebsitePanel/Servers.ascx" title="Servers" type="View" />
|
||||
<Control key="add_ip" src="WebsitePanel/IPAddressesAddIPAddress.ascx" title="AddIPAddress" type="View" icon="adress_add_48.png" />
|
||||
|
@ -264,7 +274,13 @@
|
|||
<Control key="allocate_addresses" src="WebsitePanel/WebSitesAllocateIPAddresses.ascx" title="WebSitesAllocateIPAddresses" type="View" />
|
||||
</Controls>
|
||||
</ModuleDefinition>
|
||||
<ModuleDefinition id="FtpAccounts">
|
||||
<ModuleDefinition id="LyncPhoneNumbers">
|
||||
<Controls>
|
||||
<Control key="" src="WebsitePanel/LyncPhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
|
||||
<Control key="allocate_phonenumbers" src="WebsitePanel/LyncAllocatePhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
|
||||
</Controls>
|
||||
</ModuleDefinition>
|
||||
<ModuleDefinition id="FtpAccounts">
|
||||
<Controls>
|
||||
<Control key="" src="WebsitePanel/FtpAccounts.ascx" title="FTPAccounts" type="View" />
|
||||
<Control key="edit_item" src="WebsitePanel/FtpAccountEditAccount.ascx" title="FTPAccountProperties" type="View" icon="folder_up_48.png" />
|
||||
|
|
|
@ -212,6 +212,17 @@
|
|||
</Content>
|
||||
</Page>
|
||||
|
||||
<Page name="LyncPhoneNumbers" 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="LyncPhoneNumbers" title="LyncPhoneNumbers" icon="adress_48.png" />
|
||||
</Content>
|
||||
</Page>
|
||||
|
||||
<Page name="SpaceFtpAccounts" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
||||
<Content id="LeftPane">
|
||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
||||
|
@ -558,6 +569,11 @@
|
|||
<Module moduleDefinitionID="IPAddresses" title="IPAddresses" container="Edit.ascx" icon="adress_48.png" />
|
||||
</Content>
|
||||
</Page>
|
||||
<Page name="PhoneNumbers" roles="Administrator" skin="Browse1.ascx">
|
||||
<Content id="ContentPane">
|
||||
<Module moduleDefinitionID="PhoneNumbers" title="PhoneNumbers" container="Edit.ascx" icon="adress_48.png" />
|
||||
</Content>
|
||||
</Page>
|
||||
<Page name="SystemSettings" roles="Administrator" skin="Browse1.ascx">
|
||||
<Content id="ContentPane">
|
||||
<Module moduleDefinitionID="SystemSettings" title="SystemSettings" container="Edit.ascx" icon="tool_48.png" />
|
||||
|
|
|
@ -771,8 +771,19 @@
|
|||
<data name="ModuleTitle.ApplyEnableHardQuotaFeature" xml:space="preserve">
|
||||
<value>System Hard Quota</value>
|
||||
</data>
|
||||
|
||||
<data name="ModuleTitle.HeliconZoo" xml:space="preserve">
|
||||
<value>Helicon Zoo</value>
|
||||
</data>
|
||||
<data name="ModuleTitle.LyncPhoneNumbers" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
<data name="ModuleTitle.AddPhoneNumber" xml:space="preserve">
|
||||
<value>Add Phone Numbers</value>
|
||||
</data>
|
||||
<data name="ModuleTitle.EditPhoneNumber" xml:space="preserve">
|
||||
<value>Edit Phone numbers</value>
|
||||
</data>
|
||||
<data name="ModuleTitle.PhoneNumbers" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
</root>
|
|
@ -462,4 +462,16 @@
|
|||
<data name="PageName.SpaceApplyEnableHardQuotaFeature" xml:space="preserve">
|
||||
<value>System Hard Quota</value>
|
||||
</data>
|
||||
<data name="PageName.LyncPhoneNumbers" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
<data name="PageTitle.LyncPhoneNumbers" xml:space="preserve">
|
||||
<value>{user} - {space} - Phone Numbers</value>
|
||||
</data>
|
||||
<data name="PageName.PhoneNumbers" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
<data name="PageTitle.PhoneNumbers" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
</root>
|
|
@ -3118,7 +3118,6 @@
|
|||
<data name="Error.ORGANIZATION_SET_USER_USERPRINCIPALNAME" xml:space="preserve">
|
||||
<value>Failed to update user login name.</value>
|
||||
</data>
|
||||
|
||||
<data name="Success.EXCHANGE_MAILBOX_SET_DEFAULT_EMAIL" xml:space="preserve">
|
||||
<value>Mailbox primary e-mail address has been changed.</value>
|
||||
</data>
|
||||
|
@ -3371,7 +3370,6 @@
|
|||
<data name="Warning.NOT_ALL_EMAIL_ADDRESSES_DELETED" xml:space="preserve">
|
||||
<value>Please note not all email address are deleted</value>
|
||||
</data>
|
||||
|
||||
<data name="Warning.EXCHANGE_NONE_PUBLIC_FOLDER_TO_DELETE" xml:space="preserve">
|
||||
<value>There are no public folders to delete</value>
|
||||
</data>
|
||||
|
@ -3960,9 +3958,6 @@
|
|||
<data name="Warning.1602" xml:space="preserve">
|
||||
<value>IP Address could not be deleted</value>
|
||||
</data>
|
||||
<data name="WarningDescription.1602" xml:space="preserve">
|
||||
<value>IP Address could not be deleted because it is being used by Virtual Private Server.</value>
|
||||
</data>
|
||||
<data name="Error.VPS_ERROR_ADDING_IP_ADDRESS" xml:space="preserve">
|
||||
<value>Cannot add network adapter IP addresses</value>
|
||||
</data>
|
||||
|
@ -5286,6 +5281,12 @@
|
|||
<data name="Success.EXCHANGE_UPDATEPLANS" xml:space="preserve">
|
||||
<value>Mailbox plan updated</value>
|
||||
</data>
|
||||
<data name="Error.LYNC_UPDATEPLANS" xml:space="preserve">
|
||||
<value>Lync plan update failed</value>
|
||||
</data>
|
||||
<data name="Success.LYNC_UPDATEPLANS" xml:space="preserve">
|
||||
<value>Lync plan updated</value>
|
||||
</data>
|
||||
<data name="Error.LYNC_APPLYPLANTEMPLATE" xml:space="preserve">
|
||||
<value>Failed to apply plans template</value>
|
||||
</data>
|
||||
|
@ -5313,4 +5314,19 @@
|
|||
<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>
|
||||
<data name="Error.IP_ADD_PHONE" xml:space="preserve">
|
||||
<value>Error adding Phone number</value>
|
||||
</data>
|
||||
<data name="Error.IP_ADD_PHONE_RANGE" xml:space="preserve">
|
||||
<value>Cannot add Phone numbers range.</value>
|
||||
</data>
|
||||
<data name="Error.DEALLOCATE_SPACE_PHONE_NUMBER" xml:space="preserve">
|
||||
<value>The following errors have been occurred:</value>
|
||||
</data>
|
||||
<data name="Success.DEALLOCATE_SPACE_PHONE_NUMBER" xml:space="preserve">
|
||||
<value>Phone number have been successfully deallocated.</value>
|
||||
</data>
|
||||
<data name="WarningDescription.PHONE_EDIT_LIST_EMPTY_ERROR" xml:space="preserve">
|
||||
<value>At least one Phone number must be selected.</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,126 @@
|
|||
<?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="locIPQuota.Text" xml:space="preserve">
|
||||
<value>Number of Phone Numbers:</value>
|
||||
</data>
|
||||
<data name="secQuotas.Text" xml:space="preserve">
|
||||
<value>Quotas</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,126 @@
|
|||
<?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="locIPQuota.Text" xml:space="preserve">
|
||||
<value>Number of Phone Numbers:</value>
|
||||
</data>
|
||||
<data name="secQuotas.Text" xml:space="preserve">
|
||||
<value>Quotas</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,204 @@
|
|||
<?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="btnAddItem.Text" xml:space="preserve">
|
||||
<value>Add</value>
|
||||
</data>
|
||||
<data name="gvIPAddressesExternalIP.Header" xml:space="preserve">
|
||||
<value>Numbers</value>
|
||||
</data>
|
||||
<data name="gvIPAddressesInternalIP.Header" xml:space="preserve">
|
||||
<value>NAT Address</value>
|
||||
</data>
|
||||
<data name="gvIPAddressesServer.Header" xml:space="preserve">
|
||||
<value>Server</value>
|
||||
</data>
|
||||
<data name="gvIPAddressesUser.Header" xml:space="preserve">
|
||||
<value>User</value>
|
||||
</data>
|
||||
<data name="gvIPAddressesComments.Header" xml:space="preserve">
|
||||
<value>Comments</value>
|
||||
</data>
|
||||
<data name="gvIPAddresses.Empty" xml:space="preserve">
|
||||
<value>No Phone Numbers found in the selected Pool.</value>
|
||||
</data>
|
||||
<data name="SearchField.ExternalIP" xml:space="preserve">
|
||||
<value>Numbers</value>
|
||||
</data>
|
||||
<data name="SearchField.InternalIP" xml:space="preserve">
|
||||
<value>NAT Address</value>
|
||||
</data>
|
||||
<data name="SearchField.Server" xml:space="preserve">
|
||||
<value>Server Name</value>
|
||||
</data>
|
||||
<data name="SearchField.Username" xml:space="preserve">
|
||||
<value>Username</value>
|
||||
</data>
|
||||
<data name="gvIPAddressesIsVps.Header" xml:space="preserve">
|
||||
<value>VPS</value>
|
||||
</data>
|
||||
<data name="gvIPAddressesGateway.Header" xml:space="preserve">
|
||||
<value>Default Gateway</value>
|
||||
</data>
|
||||
<data name="ddlPoolsVpsExternalNetwork.Text" xml:space="preserve">
|
||||
<value>VPS External Network IP</value>
|
||||
</data>
|
||||
<data name="ddlPoolsVpsManagementNetwork.Text" xml:space="preserve">
|
||||
<value>VPS Management Network IP</value>
|
||||
</data>
|
||||
<data name="ddlPoolsWebSites.Text" xml:space="preserve">
|
||||
<value>Web Sites IP</value>
|
||||
</data>
|
||||
<data name="ddlPoolsGeneral.Text" xml:space="preserve">
|
||||
<value>General IP</value>
|
||||
</data>
|
||||
<data name="lblItemsPerPage.Text" xml:space="preserve">
|
||||
<value>Page size:</value>
|
||||
</data>
|
||||
<data name="lblPool.Text" xml:space="preserve">
|
||||
<value>Pool:</value>
|
||||
</data>
|
||||
<data name="btnDeleteSelected.OnClientClick" xml:space="preserve">
|
||||
<value>return confirm('Delete selected?');</value>
|
||||
</data>
|
||||
<data name="btnDeleteSelected.Text" xml:space="preserve">
|
||||
<value>Delete selected</value>
|
||||
</data>
|
||||
<data name="btnEditSelected.Text" xml:space="preserve">
|
||||
<value>Edit selected...</value>
|
||||
</data>
|
||||
<data name="gvAddressesItemName.HeaderText" xml:space="preserve">
|
||||
<value>Item</value>
|
||||
</data>
|
||||
<data name="gvAddressesSpace.HeaderText" xml:space="preserve">
|
||||
<value>Space</value>
|
||||
</data>
|
||||
<data name="gvAddressesUser.HeaderText" xml:space="preserve">
|
||||
<value>User</value>
|
||||
</data>
|
||||
<data name="SearchField.DefaultGateway" xml:space="preserve">
|
||||
<value>Default Gateway</value>
|
||||
</data>
|
||||
<data name="SearchField.ItemName" xml:space="preserve">
|
||||
<value>Item Name</value>
|
||||
</data>
|
||||
<data name="ddlPoolsPhoneNumbers.Text" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,172 @@
|
|||
<?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="lblExternalIP.Text" xml:space="preserve">
|
||||
<value>IP Address:</value>
|
||||
</data>
|
||||
<data name="lblInternalIP.Text" xml:space="preserve">
|
||||
<value>NAT Address:</value>
|
||||
</data>
|
||||
<data name="locServer.Text" xml:space="preserve">
|
||||
<value>Server:</value>
|
||||
</data>
|
||||
<data name="lblComments.Text" xml:space="preserve">
|
||||
<value>Comments:</value>
|
||||
</data>
|
||||
<data name="btnAdd.Text" xml:space="preserve">
|
||||
<value>Add</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="Text.NotAssigned" xml:space="preserve">
|
||||
<value><Not Assigned></value>
|
||||
</data>
|
||||
<data name="locIPAddress.Text" xml:space="preserve">
|
||||
<value>Settings:</value>
|
||||
</data>
|
||||
<data name="locTo.Text" xml:space="preserve">
|
||||
<value>to</value>
|
||||
</data>
|
||||
<data name="locDefaultGateway.Text" xml:space="preserve">
|
||||
<value>Default Gateway:</value>
|
||||
</data>
|
||||
<data name="locSubnetMask.Text" xml:space="preserve">
|
||||
<value>Subnet Mask:</value>
|
||||
</data>
|
||||
<data name="ddlPoolsGeneral.Text" xml:space="preserve">
|
||||
<value>General IP</value>
|
||||
</data>
|
||||
<data name="ddlPoolsVpsExternalNetwork.Text" xml:space="preserve">
|
||||
<value>VPS External Network IP</value>
|
||||
</data>
|
||||
<data name="ddlPoolsVpsManagementNetwork.Text" xml:space="preserve">
|
||||
<value>VPS Management Network IP</value>
|
||||
</data>
|
||||
<data name="ddlPoolsWebSites.Text" xml:space="preserve">
|
||||
<value>Web Sites IP</value>
|
||||
<comment> </comment>
|
||||
</data>
|
||||
<data name="ddlPoolsPhoneNumbers.Text" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
<data name="lblPhoneNumbers.Text" xml:space="preserve">
|
||||
<value>Phone Numbers:</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,165 @@
|
|||
<?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="lblServer.Text" xml:space="preserve">
|
||||
<value>Server:</value>
|
||||
</data>
|
||||
<data name="lblComments.Text" xml:space="preserve">
|
||||
<value>Comments:</value>
|
||||
</data>
|
||||
<data name="btnUpdate.Text" xml:space="preserve">
|
||||
<value>Update</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="Text.NotAssigned" xml:space="preserve">
|
||||
<value><Not Assigned></value>
|
||||
</data>
|
||||
<data name="locDefaultGateway.Text" xml:space="preserve">
|
||||
<value>Default Gateway:</value>
|
||||
</data>
|
||||
<data name="locSubnetMask.Text" xml:space="preserve">
|
||||
<value>Subnet Mask:</value>
|
||||
</data>
|
||||
<data name="ddlPoolsGeneral.Text" xml:space="preserve">
|
||||
<value>General IP</value>
|
||||
</data>
|
||||
<data name="ddlPoolsVpsExternalNetwork.Text" xml:space="preserve">
|
||||
<value>VPS External Network IP</value>
|
||||
</data>
|
||||
<data name="ddlPoolsVpsManagementNetwork.Text" xml:space="preserve">
|
||||
<value>VPS Management Network IP</value>
|
||||
</data>
|
||||
<data name="ddlPoolsWebSites.Text" xml:space="preserve">
|
||||
<value>Web Sites IP</value>
|
||||
</data>
|
||||
<data name="lblExternalIP.Text" xml:space="preserve">
|
||||
<value>IP Address:</value>
|
||||
</data>
|
||||
<data name="lblInternalIP.Text" xml:space="preserve">
|
||||
<value>NAT Address:</value>
|
||||
</data>
|
||||
<data name="ddlPoolsPhoneNumbers.Text" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
<data name="lblPhoneNumbers.Text" xml:space="preserve">
|
||||
<value>Phone Number:</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1,10 +1,39 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <автоматически создаваемое>
|
||||
// Этот код создан программой.
|
||||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
// повторной генерации кода.
|
||||
// </автоматически создаваемое>
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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.ExchangeServer {
|
||||
|
@ -13,128 +42,142 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
|||
public partial class ExchangeDisclaimerGeneralSettings {
|
||||
|
||||
/// <summary>
|
||||
/// asyncTasks элемент управления.
|
||||
/// asyncTasks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Автоматически создаваемое поле.
|
||||
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
|
||||
/// <summary>
|
||||
/// breadcrumb элемент управления.
|
||||
/// breadcrumb control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Автоматически создаваемое поле.
|
||||
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
|
||||
|
||||
/// <summary>
|
||||
/// menu элемент управления.
|
||||
/// menu control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Автоматически создаваемое поле.
|
||||
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
|
||||
|
||||
/// <summary>
|
||||
/// Image1 элемент управления.
|
||||
/// Image1 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.Image Image1;
|
||||
|
||||
/// <summary>
|
||||
/// locTitle элемент управления.
|
||||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Автоматически создаваемое поле.
|
||||
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
/// <summary>
|
||||
/// litDisplayName элемент управления.
|
||||
/// litDisplayName 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.Literal litDisplayName;
|
||||
|
||||
/// <summary>
|
||||
/// messageBox элемент управления.
|
||||
/// 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>
|
||||
/// locDisplayName элемент управления.
|
||||
/// locDisplayName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Автоматически создаваемое поле.
|
||||
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locDisplayName;
|
||||
|
||||
/// <summary>
|
||||
/// txtDisplayName элемент управления.
|
||||
/// txtDisplayName 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 txtDisplayName;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireDisplayName элемент управления.
|
||||
/// valRequireDisplayName 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 valRequireDisplayName;
|
||||
|
||||
/// <summary>
|
||||
/// locNotes элемент управления.
|
||||
/// locNotes control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Автоматически создаваемое поле.
|
||||
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locNotes;
|
||||
|
||||
/// <summary>
|
||||
/// txtNotes элемент управления.
|
||||
/// txtNotes control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Автоматически создаваемое поле.
|
||||
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtNotes;
|
||||
|
||||
/// <summary>
|
||||
/// btnSave элемент управления.
|
||||
/// btnSave 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 btnSave;
|
||||
|
||||
/// <summary>
|
||||
/// ValidationSummary1 элемент управления.
|
||||
/// ValidationSummary1 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.ValidationSummary ValidationSummary1;
|
||||
}
|
||||
|
|
|
@ -60,11 +60,6 @@
|
|||
<asp:CheckBox ID="chkMobility" runat="server" meta:resourcekey="chkMobility" Text="Mobility"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkFederation" runat="server" meta:resourcekey="chkFederation" Text="Federation"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkConferencing" runat="server" meta:resourcekey="chkConferencing" Text="Conferencing"></asp:CheckBox>
|
||||
|
@ -79,6 +74,135 @@
|
|||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeaturesFederation" runat="server"
|
||||
TargetControlID="PlanFeaturesFederation" meta:resourcekey="secPlanFeaturesFederation" Text="Federation">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeaturesFederation" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkFederation" runat="server" meta:resourcekey="chkFederation" Text="Federation"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkRemoteUserAccess" runat="server" meta:resourcekey="chkRemoteUserAccess" Text="Remote User access"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkPublicIMConnectivity" runat="server" meta:resourcekey="chkPublicIMConnectivity" Text="Public IM Connectivity"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeaturesArchiving" runat="server"
|
||||
TargetControlID="PlanFeaturesArchiving" meta:resourcekey="secPlanFeaturesArchiving" Text="Archiving">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeaturesArchiving" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locArchivingPolicy" meta:resourcekey="locArchivingPolicy" Text="Archiving Policy:" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:DropDownList ID="ddArchivingPolicy" runat="server"></asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeaturesMeeting" runat="server"
|
||||
TargetControlID="PlanFeaturesMeeting" meta:resourcekey="secPlanFeaturesMeeting" Text="Meeting">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeaturesMeeting" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkAllowOrganizeMeetingsWithExternalAnonymous" runat="server" meta:resourcekey="chkAllowOrganizeMeetingsWithExternalAnonymous" Text="Allow organize meetings with external anonymous participants"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeaturesTelephony" runat="server"
|
||||
TargetControlID="PlanFeaturesTelephony" meta:resourcekey="secPlanFeaturesTelephony" Text="Telephony">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeaturesTelephony" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locTelephony" meta:resourcekey="locTelephony" Text="Telephony :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:DropDownList ID="ddTelephony" runat="server" AutoPostBack="True">
|
||||
<asp:ListItem Value="0" Text="Audio/Video disabled" meta:resourcekey="ddlTelephonyDisabled" />
|
||||
<asp:ListItem Value="1" Text="PC-to-PC only" meta:resourcekey="ddlTelephonyPCtoPCOnly" />
|
||||
<asp:ListItem Value="2" Text="Enterprise voice" meta:resourcekey="ddlTelephonyEnterpriseVoice" />
|
||||
<asp:ListItem Value="3" Text="Remote call control" meta:resourcekey="ddlTelephonyRemoteCallControl" />
|
||||
<asp:ListItem Value="4" Text="Remote call control only" meta:resourcekey="ddlTelephonyRemoteCallControlOnly" />
|
||||
</asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<asp:Panel runat="server" ID="pnEnterpriseVoice">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locTelephonyProvider" meta:resourcekey="locTelephonyProvider" Text="Telephony Provider :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:TextBox ID="tbTelephoneProvider" runat="server"></asp:TextBox>
|
||||
<asp:Button runat="server" ID="btnAccept" Text="Accept" OnClick="btnAccept_Click" OnClientClick="ShowProgressDialog('Loading...');" ValidationGroup="Accept"/>
|
||||
|
||||
<asp:RequiredFieldValidator id="AcceptRequiredValidator" runat="server" ErrorMessage="Please enter provider name"
|
||||
ControlToValidate="tbTelephoneProvider" Display="Dynamic" ValidationGroup="Accept" SetFocusOnError="true"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locDialPlan" meta:resourcekey="locDialPlan" Text="Dial Plan :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:DropDownList ID="ddTelephonyDialPlanPolicy" runat="server"></asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locVoicePolicy" meta:resourcekey="locVoicePolicy" Text="Voice Policy :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:DropDownList ID="ddTelephonyVoicePolicy" runat="server"></asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
<asp:Panel runat="server" ID="pnServerURI">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locServerURI" meta:resourcekey="locServerURI" Text="Server URI :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:TextBox ID="tbServerURI" runat="server"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
|
||||
<%-- Disable because not used
|
||||
<wsp:CollapsiblePanel id="secEnterpriseVoice" runat="server"
|
||||
TargetControlID="EnterpriseVoice" meta:resourcekey="secEnterpriseVoice" Text="Enterprise Voice Policy">
|
||||
</wsp:CollapsiblePanel>
|
||||
|
@ -115,7 +239,7 @@
|
|||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
--%>
|
||||
|
||||
<br />
|
||||
<div class="FormFooterClean">
|
||||
|
|
|
@ -30,6 +30,11 @@ using System;
|
|||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
using WebsitePanel.Providers.ResultObjects;
|
||||
using WebsitePanel.Providers;
|
||||
using WebsitePanel.Providers.Web;
|
||||
using WebsitePanel.Providers.Common;
|
||||
using WebsitePanel.Portal.Code.Helpers;
|
||||
|
||||
|
||||
namespace WebsitePanel.Portal.Lync
|
||||
{
|
||||
|
@ -37,11 +42,22 @@ namespace WebsitePanel.Portal.Lync
|
|||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
PackageContext cntx = null;
|
||||
|
||||
if (!IsPostBack)
|
||||
{
|
||||
cntx = ES.Services.Packages.GetPackageContext(PanelSecurity.PackageId);
|
||||
|
||||
PackageContext cntx = ES.Services.Packages.GetPackageContext(PanelSecurity.PackageId);
|
||||
string[] archivePolicy = ES.Services.Lync.GetPolicyList(PanelRequest.ItemID, LyncPolicyType.Archiving, null);
|
||||
if (archivePolicy != null)
|
||||
{
|
||||
foreach (string policy in archivePolicy)
|
||||
{
|
||||
if (policy.ToLower()=="global") continue;
|
||||
string txt = policy.Replace("Tag:","");
|
||||
ddArchivingPolicy.Items.Add( new System.Web.UI.WebControls.ListItem( txt, policy) );
|
||||
}
|
||||
}
|
||||
|
||||
if (PanelRequest.GetInt("LyncUserPlanId") != 0)
|
||||
{
|
||||
|
@ -54,6 +70,8 @@ namespace WebsitePanel.Portal.Lync
|
|||
chkConferencing.Checked = plan.Conferencing;
|
||||
chkMobility.Checked = plan.Mobility;
|
||||
chkEnterpriseVoice.Checked = plan.EnterpriseVoice;
|
||||
|
||||
/* because not used
|
||||
switch (plan.VoicePolicy)
|
||||
{
|
||||
case LyncVoicePolicyType.None:
|
||||
|
@ -74,16 +92,40 @@ namespace WebsitePanel.Portal.Lync
|
|||
chkNone.Checked = true;
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
chkRemoteUserAccess.Checked = plan.RemoteUserAccess;
|
||||
chkPublicIMConnectivity.Checked = plan.PublicIMConnectivity;
|
||||
|
||||
chkAllowOrganizeMeetingsWithExternalAnonymous.Checked = plan.AllowOrganizeMeetingsWithExternalAnonymous;
|
||||
|
||||
ddTelephony.SelectedIndex = plan.Telephony;
|
||||
|
||||
tbServerURI.Text = plan.ServerURI;
|
||||
|
||||
locTitle.Text = plan.LyncUserPlanName;
|
||||
this.DisableControls = true;
|
||||
|
||||
string planArchivePolicy = "";
|
||||
if (plan.ArchivePolicy != null) planArchivePolicy = plan.ArchivePolicy;
|
||||
string planTelephonyDialPlanPolicy = "";
|
||||
if (plan.TelephonyDialPlanPolicy != null) planTelephonyDialPlanPolicy = plan.TelephonyDialPlanPolicy;
|
||||
string planTelephonyVoicePolicy = "";
|
||||
if (plan.TelephonyVoicePolicy != null) planTelephonyVoicePolicy = plan.TelephonyVoicePolicy;
|
||||
|
||||
ddArchivingPolicy.Items.Clear();
|
||||
ddArchivingPolicy.Items.Add(new System.Web.UI.WebControls.ListItem(planArchivePolicy.Replace("Tag:", ""), planArchivePolicy));
|
||||
ddTelephonyDialPlanPolicy.Items.Clear();
|
||||
ddTelephonyDialPlanPolicy.Items.Add(new System.Web.UI.WebControls.ListItem(planTelephonyDialPlanPolicy.Replace("Tag:", ""), planTelephonyDialPlanPolicy));
|
||||
ddTelephonyVoicePolicy.Items.Clear();
|
||||
ddTelephonyVoicePolicy.Items.Add(new System.Web.UI.WebControls.ListItem(planTelephonyVoicePolicy.Replace("Tag:", ""), planTelephonyVoicePolicy));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
chkIM.Checked = true;
|
||||
chkIM.Enabled = false;
|
||||
chkNone.Checked = true;
|
||||
// chkNone.Checked = true; because not used
|
||||
if (cntx != null)
|
||||
{
|
||||
foreach (QuotaValueInfo quota in cntx.QuotasArray)
|
||||
|
@ -110,6 +152,33 @@ namespace WebsitePanel.Portal.Lync
|
|||
}
|
||||
}
|
||||
|
||||
chkEnterpriseVoice.Enabled = false;
|
||||
chkEnterpriseVoice.Checked = false;
|
||||
|
||||
pnEnterpriseVoice.Visible = false;
|
||||
pnServerURI.Visible = false;
|
||||
|
||||
switch (ddTelephony.SelectedIndex)
|
||||
{
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
pnEnterpriseVoice.Visible = true;
|
||||
chkEnterpriseVoice.Checked = true;
|
||||
break;
|
||||
case 3:
|
||||
pnServerURI.Visible = true;
|
||||
break;
|
||||
case 4:
|
||||
pnServerURI.Visible = true;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||
PlanFeaturesTelephony.Visible = Utils.CheckQouta(Quotas.LYNC_ENTERPRISEVOICE, cntx);
|
||||
secPlanFeaturesTelephony.Visible = PlanFeaturesTelephony.Visible;
|
||||
|
||||
}
|
||||
|
||||
protected void btnAdd_Click(object sender, EventArgs e)
|
||||
|
@ -117,6 +186,37 @@ namespace WebsitePanel.Portal.Lync
|
|||
AddPlan();
|
||||
}
|
||||
|
||||
protected void btnAccept_Click(object sender, EventArgs e)
|
||||
{
|
||||
string name = tbTelephoneProvider.Text;
|
||||
|
||||
if (string.IsNullOrEmpty(name)) return;
|
||||
|
||||
ddTelephonyDialPlanPolicy.Items.Clear();
|
||||
string[] dialPlan = ES.Services.Lync.GetPolicyList(PanelRequest.ItemID, LyncPolicyType.DialPlan, name);
|
||||
if (dialPlan != null)
|
||||
{
|
||||
foreach (string policy in dialPlan)
|
||||
{
|
||||
if (policy.ToLower() == "global") continue;
|
||||
string txt = policy.Replace("Tag:", "");
|
||||
ddTelephonyDialPlanPolicy.Items.Add(new System.Web.UI.WebControls.ListItem(txt, policy));
|
||||
}
|
||||
}
|
||||
|
||||
ddTelephonyVoicePolicy.Items.Clear();
|
||||
string[] voicePolicy = ES.Services.Lync.GetPolicyList(PanelRequest.ItemID, LyncPolicyType.Voice, name);
|
||||
if (voicePolicy != null)
|
||||
{
|
||||
foreach (string policy in voicePolicy)
|
||||
{
|
||||
if (policy.ToLower() == "global") continue;
|
||||
string txt = policy.Replace("Tag:", "");
|
||||
ddTelephonyVoicePolicy.Items.Add(new System.Web.UI.WebControls.ListItem(txt, policy));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void AddPlan()
|
||||
{
|
||||
try
|
||||
|
@ -132,6 +232,10 @@ namespace WebsitePanel.Portal.Lync
|
|||
|
||||
|
||||
plan.EnterpriseVoice = chkEnterpriseVoice.Checked;
|
||||
|
||||
plan.VoicePolicy = LyncVoicePolicyType.None;
|
||||
|
||||
/* because not used
|
||||
if (!plan.EnterpriseVoice)
|
||||
{
|
||||
plan.VoicePolicy = LyncVoicePolicyType.None;
|
||||
|
@ -150,6 +254,20 @@ namespace WebsitePanel.Portal.Lync
|
|||
plan.VoicePolicy = LyncVoicePolicyType.None;
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
plan.RemoteUserAccess = chkRemoteUserAccess.Checked;
|
||||
plan.PublicIMConnectivity = chkPublicIMConnectivity.Checked;
|
||||
|
||||
plan.AllowOrganizeMeetingsWithExternalAnonymous = chkAllowOrganizeMeetingsWithExternalAnonymous.Checked;
|
||||
|
||||
plan.Telephony = ddTelephony.SelectedIndex;
|
||||
|
||||
plan.ServerURI = tbServerURI.Text;
|
||||
|
||||
plan.ArchivePolicy = ddArchivingPolicy.SelectedValue;
|
||||
plan.TelephonyDialPlanPolicy = ddTelephonyDialPlanPolicy.SelectedValue;
|
||||
plan.TelephonyVoicePolicy = ddTelephonyVoicePolicy.SelectedValue;
|
||||
|
||||
int result = ES.Services.Lync.AddLyncUserPlan(PanelRequest.ItemID,
|
||||
plan);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) 2012, Outercurve Foundation.
|
||||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
|
@ -34,7 +34,6 @@
|
|||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.Lync {
|
||||
|
||||
|
||||
|
@ -166,15 +165,6 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkMobility;
|
||||
|
||||
/// <summary>
|
||||
/// chkFederation 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 chkFederation;
|
||||
|
||||
/// <summary>
|
||||
/// chkConferencing control.
|
||||
/// </summary>
|
||||
|
@ -194,67 +184,256 @@ namespace WebsitePanel.Portal.Lync {
|
|||
protected global::System.Web.UI.WebControls.CheckBox chkEnterpriseVoice;
|
||||
|
||||
/// <summary>
|
||||
/// secEnterpriseVoice control.
|
||||
/// secPlanFeaturesFederation control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secEnterpriseVoice;
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secPlanFeaturesFederation;
|
||||
|
||||
/// <summary>
|
||||
/// EnterpriseVoice control.
|
||||
/// PlanFeaturesFederation 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.Panel EnterpriseVoice;
|
||||
protected global::System.Web.UI.WebControls.Panel PlanFeaturesFederation;
|
||||
|
||||
/// <summary>
|
||||
/// chkNone control.
|
||||
/// chkFederation control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkNone;
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkFederation;
|
||||
|
||||
/// <summary>
|
||||
/// chkEmergency control.
|
||||
/// chkRemoteUserAccess control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkEmergency;
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkRemoteUserAccess;
|
||||
|
||||
/// <summary>
|
||||
/// chkNational control.
|
||||
/// chkPublicIMConnectivity control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkNational;
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkPublicIMConnectivity;
|
||||
|
||||
/// <summary>
|
||||
/// chkMobile control.
|
||||
/// secPlanFeaturesArchiving control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkMobile;
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secPlanFeaturesArchiving;
|
||||
|
||||
/// <summary>
|
||||
/// chkInternational control.
|
||||
/// PlanFeaturesArchiving control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkInternational;
|
||||
protected global::System.Web.UI.WebControls.Panel PlanFeaturesArchiving;
|
||||
|
||||
/// <summary>
|
||||
/// locArchivingPolicy control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locArchivingPolicy;
|
||||
|
||||
/// <summary>
|
||||
/// ddArchivingPolicy 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.DropDownList ddArchivingPolicy;
|
||||
|
||||
/// <summary>
|
||||
/// secPlanFeaturesMeeting control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secPlanFeaturesMeeting;
|
||||
|
||||
/// <summary>
|
||||
/// PlanFeaturesMeeting 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.Panel PlanFeaturesMeeting;
|
||||
|
||||
/// <summary>
|
||||
/// chkAllowOrganizeMeetingsWithExternalAnonymous 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 chkAllowOrganizeMeetingsWithExternalAnonymous;
|
||||
|
||||
/// <summary>
|
||||
/// secPlanFeaturesTelephony control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secPlanFeaturesTelephony;
|
||||
|
||||
/// <summary>
|
||||
/// PlanFeaturesTelephony 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.Panel PlanFeaturesTelephony;
|
||||
|
||||
/// <summary>
|
||||
/// locTelephony control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTelephony;
|
||||
|
||||
/// <summary>
|
||||
/// ddTelephony 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.DropDownList ddTelephony;
|
||||
|
||||
/// <summary>
|
||||
/// pnEnterpriseVoice 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.Panel pnEnterpriseVoice;
|
||||
|
||||
/// <summary>
|
||||
/// locTelephonyProvider control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTelephonyProvider;
|
||||
|
||||
/// <summary>
|
||||
/// tbTelephoneProvider 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 tbTelephoneProvider;
|
||||
|
||||
/// <summary>
|
||||
/// btnAccept 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 btnAccept;
|
||||
|
||||
/// <summary>
|
||||
/// AcceptRequiredValidator 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 AcceptRequiredValidator;
|
||||
|
||||
/// <summary>
|
||||
/// locDialPlan control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locDialPlan;
|
||||
|
||||
/// <summary>
|
||||
/// ddTelephonyDialPlanPolicy 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.DropDownList ddTelephonyDialPlanPolicy;
|
||||
|
||||
/// <summary>
|
||||
/// locVoicePolicy control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locVoicePolicy;
|
||||
|
||||
/// <summary>
|
||||
/// ddTelephonyVoicePolicy 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.DropDownList ddTelephonyVoicePolicy;
|
||||
|
||||
/// <summary>
|
||||
/// pnServerURI 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.Panel pnServerURI;
|
||||
|
||||
/// <summary>
|
||||
/// locServerURI control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locServerURI;
|
||||
|
||||
/// <summary>
|
||||
/// tbServerURI 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 tbServerURI;
|
||||
|
||||
/// <summary>
|
||||
/// btnAdd control.
|
||||
|
@ -273,14 +452,5 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1;
|
||||
|
||||
/// <summary>
|
||||
/// FormComments control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize FormComments;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,11 +43,42 @@
|
|||
<wsp:LyncUserPlanSelector ID="planSelector" runat="server" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</table>
|
||||
|
||||
<asp:Panel runat="server" ID="pnEnterpriseVoice">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locPhoneNumber" meta:resourcekey="locPhoneNumber" Text="Phone Number:" />
|
||||
</td>
|
||||
<td>
|
||||
<!-- <asp:TextBox runat="server" ID="tb_PhoneNumber" /> -->
|
||||
<asp:dropdownlist id="ddlPhoneNumber" Runat="server" CssClass="NormalTextBox"></asp:dropdownlist>
|
||||
<asp:RegularExpressionValidator ID="PhoneFormatValidator" runat="server"
|
||||
ControlToValidate="ddlPhoneNumber" Display="Dynamic" ValidationGroup="Validation1" SetFocusOnError="true"
|
||||
ValidationExpression="^([0-9])*$"
|
||||
ErrorMessage="Must contain only numbers.">
|
||||
</asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locLyncPin" meta:resourcekey="locLyncPin" Text="Lync Pin:" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:TextBox runat="server" ID="tbPin" />
|
||||
<asp:RegularExpressionValidator ID="PinRegularExpressionValidator" runat="server"
|
||||
ControlToValidate="tbPin" Display="Dynamic" ValidationGroup="Validation1" SetFocusOnError="true"
|
||||
ValidationExpression="^([0-9])*$"
|
||||
ErrorMessage="Must contain only numbers.">
|
||||
</asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
<div class="FormFooterClean">
|
||||
<asp:Button id="btnCreate" runat="server"
|
||||
<asp:Button id="btnCreate" runat="server" ValidationGroup="Validation1"
|
||||
CssClass="Button1" meta:resourcekey="btnCreate"
|
||||
onclick="btnCreate_Click" ></asp:Button>
|
||||
</div>
|
||||
|
|
|
@ -30,6 +30,13 @@
|
|||
using WebsitePanel.Providers.ResultObjects;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
|
||||
|
||||
namespace WebsitePanel.Portal.Lync
|
||||
{
|
||||
public partial class CreateLyncUser : WebsitePanelModuleBase
|
||||
|
@ -40,10 +47,60 @@ namespace WebsitePanel.Portal.Lync
|
|||
{
|
||||
WebsitePanel.Providers.HostedSolution.LyncUserPlan[] plans = ES.Services.Lync.GetLyncUserPlans(PanelRequest.ItemID);
|
||||
|
||||
BindPhoneNumbers();
|
||||
|
||||
if (plans.Length == 0)
|
||||
btnCreate.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void BindPhoneNumbers()
|
||||
{
|
||||
|
||||
ddlPhoneNumber.Items.Add(new ListItem("<Select Phone>", ""));
|
||||
|
||||
PackageIPAddress[] ips = ES.Services.Servers.GetPackageUnassignedIPAddresses(PanelSecurity.PackageId, IPAddressPool.PhoneNumbers);
|
||||
foreach (PackageIPAddress ip in ips)
|
||||
{
|
||||
string phone = ip.ExternalIP;
|
||||
ddlPhoneNumber.Items.Add(new ListItem(phone, ip.PackageAddressID.ToString()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected void Page_PreRender(object sender, EventArgs e)
|
||||
{
|
||||
bool EnterpriseVoice = false;
|
||||
|
||||
WebsitePanel.Providers.HostedSolution.LyncUserPlan plan = planSelector.plan;
|
||||
if (plan != null)
|
||||
EnterpriseVoice = plan.EnterpriseVoice;
|
||||
|
||||
pnEnterpriseVoice.Visible = EnterpriseVoice;
|
||||
|
||||
if (!EnterpriseVoice)
|
||||
{
|
||||
ddlPhoneNumber.Text = "";
|
||||
tbPin.Text = "";
|
||||
}
|
||||
|
||||
if (EnterpriseVoice)
|
||||
{
|
||||
string[] pinPolicy = ES.Services.Lync.GetPolicyList(PanelRequest.ItemID, LyncPolicyType.Pin, "MinPasswordLength");
|
||||
if (pinPolicy != null)
|
||||
{
|
||||
if (pinPolicy.Length > 0)
|
||||
{
|
||||
int MinPasswordLength = -1;
|
||||
if (int.TryParse(pinPolicy[0], out MinPasswordLength))
|
||||
{
|
||||
PinRegularExpressionValidator.ValidationExpression = "^([0-9]){" + MinPasswordLength.ToString() + ",}$";
|
||||
PinRegularExpressionValidator.ErrorMessage = "Must contain only numbers. Min. length " + MinPasswordLength.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -53,6 +110,11 @@ namespace WebsitePanel.Portal.Lync
|
|||
LyncUserResult res = ES.Services.Lync.CreateLyncUser(PanelRequest.ItemID, accountId, Convert.ToInt32(planSelector.planId));
|
||||
if (res.IsSuccess && res.ErrorCodes.Count == 0)
|
||||
{
|
||||
|
||||
//#1
|
||||
LyncUser lyncUser = ES.Services.Lync.GetLyncUserGeneralSettings(PanelRequest.ItemID, accountId);
|
||||
ES.Services.Lync.SetLyncUserGeneralSettings(PanelRequest.ItemID, accountId, lyncUser.SipAddress, ddlPhoneNumber.SelectedItem.Text + ":" + tbPin.Text);
|
||||
|
||||
Response.Redirect(EditUrl("AccountID", accountId.ToString(), "edit_lync_user",
|
||||
"SpaceID=" + PanelSecurity.PackageId,
|
||||
"ItemID=" + PanelRequest.ItemID));
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) 2012, Outercurve Foundation.
|
||||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
|
@ -44,8 +44,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// asyncTasks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
|
||||
|
@ -53,8 +54,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// breadcrumb control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
|
||||
|
||||
|
@ -62,8 +64,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// menu control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
|
||||
|
||||
|
@ -71,8 +74,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// Image1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Image Image1;
|
||||
|
||||
|
@ -80,8 +84,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
|
@ -89,8 +94,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// messageBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
||||
|
||||
|
@ -98,8 +104,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// ExistingUserTable control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlTable ExistingUserTable;
|
||||
|
||||
|
@ -107,8 +114,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// Localize1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize Localize1;
|
||||
|
||||
|
@ -116,8 +124,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// userSelector control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.UserSelector userSelector;
|
||||
|
||||
|
@ -125,8 +134,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// locPlanName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locPlanName;
|
||||
|
||||
|
@ -134,17 +144,89 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// planSelector control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.Lync.UserControls.LyncUserPlanSelector planSelector;
|
||||
|
||||
/// <summary>
|
||||
/// pnEnterpriseVoice 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.Panel pnEnterpriseVoice;
|
||||
|
||||
/// <summary>
|
||||
/// locPhoneNumber control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locPhoneNumber;
|
||||
|
||||
/// <summary>
|
||||
/// ddlPhoneNumber 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.DropDownList ddlPhoneNumber;
|
||||
|
||||
/// <summary>
|
||||
/// PhoneFormatValidator 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.RegularExpressionValidator PhoneFormatValidator;
|
||||
|
||||
/// <summary>
|
||||
/// locLyncPin control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locLyncPin;
|
||||
|
||||
/// <summary>
|
||||
/// tbPin 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 tbPin;
|
||||
|
||||
/// <summary>
|
||||
/// PinRegularExpressionValidator 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.RegularExpressionValidator PinRegularExpressionValidator;
|
||||
|
||||
/// <summary>
|
||||
/// btnCreate control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnCreate;
|
||||
}
|
||||
|
|
|
@ -47,11 +47,42 @@
|
|||
<wsp:LyncUserSettings ID="lyncUserSettings" runat="server" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<asp:Panel runat="server" ID="pnEnterpriseVoice">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locPhoneNumber" meta:resourcekey="locPhoneNumber" Text="Phone Number:" />
|
||||
</td>
|
||||
<td>
|
||||
<!-- <asp:TextBox runat="server" ID="tb_PhoneNumber" /> -->
|
||||
<asp:dropdownlist id="ddlPhoneNumber" Runat="server" CssClass="NormalTextBox"></asp:dropdownlist>
|
||||
<asp:RegularExpressionValidator ID="PhoneFormatValidator" runat="server"
|
||||
ControlToValidate="ddlPhoneNumber" Display="Dynamic" ValidationGroup="Validation1" SetFocusOnError="true"
|
||||
ValidationExpression="^([0-9])*$"
|
||||
ErrorMessage="Must contain only numbers.">
|
||||
</asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locLyncPin" meta:resourcekey="locLyncPin" Text="Lync Pin:" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:TextBox runat="server" ID="tbPin" />
|
||||
<asp:RegularExpressionValidator ID="PinRegularExpressionValidator" runat="server"
|
||||
ControlToValidate="tbPin" Display="Dynamic" ValidationGroup="Validation1" SetFocusOnError="true"
|
||||
ValidationExpression="^([0-9])*$"
|
||||
ErrorMessage="Must contain only numbers.">
|
||||
</asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
<div class="FormFooterClean">
|
||||
<asp:Button runat="server" ID="btnSave" meta:resourcekey="btnSave"
|
||||
<asp:Button runat="server" ID="btnSave" meta:resourcekey="btnSave" ValidationGroup="Validation1"
|
||||
CssClass="Button1" onclick="btnSave_Click" />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -31,6 +31,11 @@ using WebsitePanel.EnterpriseServer;
|
|||
using WebsitePanel.Providers.ResultObjects;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
|
||||
|
||||
namespace WebsitePanel.Portal.Lync
|
||||
{
|
||||
public partial class EditLyncUser : WebsitePanelModuleBase
|
||||
|
@ -39,7 +44,59 @@ namespace WebsitePanel.Portal.Lync
|
|||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
BindPhoneNumbers();
|
||||
BindItems();
|
||||
}
|
||||
}
|
||||
|
||||
private void BindPhoneNumbers()
|
||||
{
|
||||
|
||||
ddlPhoneNumber.Items.Add(new ListItem("<Select Phone>", ""));
|
||||
|
||||
PackageIPAddress[] ips = ES.Services.Servers.GetPackageUnassignedIPAddresses(PanelSecurity.PackageId, IPAddressPool.PhoneNumbers);
|
||||
foreach (PackageIPAddress ip in ips)
|
||||
{
|
||||
string phone = ip.ExternalIP;
|
||||
ddlPhoneNumber.Items.Add(new ListItem(phone, phone));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected void Page_PreRender(object sender, EventArgs e)
|
||||
{
|
||||
bool EnterpriseVoice = false;
|
||||
|
||||
WebsitePanel.Providers.HostedSolution.LyncUserPlan plan = planSelector.plan;
|
||||
if (plan != null)
|
||||
EnterpriseVoice = plan.EnterpriseVoice;
|
||||
|
||||
pnEnterpriseVoice.Visible = EnterpriseVoice;
|
||||
|
||||
if (!EnterpriseVoice)
|
||||
{
|
||||
ddlPhoneNumber.Text = "";
|
||||
tbPin.Text = "";
|
||||
}
|
||||
|
||||
if (EnterpriseVoice)
|
||||
{
|
||||
string[] pinPolicy = ES.Services.Lync.GetPolicyList(PanelRequest.ItemID, LyncPolicyType.Pin, "MinPasswordLength");
|
||||
if (pinPolicy != null)
|
||||
{
|
||||
if (pinPolicy.Length > 0)
|
||||
{
|
||||
int MinPasswordLength = -1;
|
||||
if (int.TryParse(pinPolicy[0], out MinPasswordLength))
|
||||
{
|
||||
PinRegularExpressionValidator.ValidationExpression = "^([0-9]){" + MinPasswordLength.ToString() + ",}$";
|
||||
PinRegularExpressionValidator.ErrorMessage = "Must contain only numbers. Min. length " + MinPasswordLength.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -54,6 +111,7 @@ namespace WebsitePanel.Portal.Lync
|
|||
planSelector.planId = lyncUser.LyncUserPlanId.ToString();
|
||||
lyncUserSettings.sipAddress = lyncUser.SipAddress;
|
||||
|
||||
Utils.SelectListItem(ddlPhoneNumber, lyncUser.LineUri);
|
||||
}
|
||||
|
||||
protected void btnSave_Click(object sender, EventArgs e)
|
||||
|
@ -65,7 +123,7 @@ namespace WebsitePanel.Portal.Lync
|
|||
LyncUserResult res = ES.Services.Lync.SetUserLyncPlan(PanelRequest.ItemID, PanelRequest.AccountID, Convert.ToInt32(planSelector.planId));
|
||||
if (res.IsSuccess && res.ErrorCodes.Count == 0)
|
||||
{
|
||||
res = ES.Services.Lync.SetLyncUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID, lyncUserSettings.sipAddress, string.Empty);
|
||||
res = ES.Services.Lync.SetLyncUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID, lyncUserSettings.sipAddress, ddlPhoneNumber.SelectedItem.Text + ":" + tbPin.Text);
|
||||
}
|
||||
|
||||
if (res.IsSuccess && res.ErrorCodes.Count == 0)
|
||||
|
|
|
@ -44,8 +44,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// asyncTasks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
|
||||
|
@ -53,8 +54,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// breadcrumb control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
|
||||
|
||||
|
@ -62,8 +64,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// menu control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
|
||||
|
||||
|
@ -71,8 +74,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// Image1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Image Image1;
|
||||
|
||||
|
@ -80,8 +84,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
|
@ -89,8 +94,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// litDisplayName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal litDisplayName;
|
||||
|
||||
|
@ -98,8 +104,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// messageBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
||||
|
||||
|
@ -107,8 +114,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// locPlanName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locPlanName;
|
||||
|
||||
|
@ -116,8 +124,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// planSelector control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.Lync.UserControls.LyncUserPlanSelector planSelector;
|
||||
|
||||
|
@ -125,8 +134,9 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// locSipAddress control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locSipAddress;
|
||||
|
||||
|
@ -134,17 +144,99 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// lyncUserSettings control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.Lync.UserControls.LyncUserSettings lyncUserSettings;
|
||||
|
||||
/// <summary>
|
||||
/// pnEnterpriseVoice 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.Panel pnEnterpriseVoice;
|
||||
|
||||
/// <summary>
|
||||
/// locPhoneNumber control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locPhoneNumber;
|
||||
|
||||
/// <summary>
|
||||
/// tb_PhoneNumber 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 tb_PhoneNumber;
|
||||
|
||||
/// <summary>
|
||||
/// ddlPhoneNumber 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.DropDownList ddlPhoneNumber;
|
||||
|
||||
/// <summary>
|
||||
/// PhoneFormatValidator 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.RegularExpressionValidator PhoneFormatValidator;
|
||||
|
||||
/// <summary>
|
||||
/// locLyncPin control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locLyncPin;
|
||||
|
||||
/// <summary>
|
||||
/// tbPin 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 tbPin;
|
||||
|
||||
/// <summary>
|
||||
/// PinRegularExpressionValidator 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.RegularExpressionValidator PinRegularExpressionValidator;
|
||||
|
||||
/// <summary>
|
||||
/// btnSave control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
||||
}
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncUserPlanSelector.ascx.cs" Inherits="WebsitePanel.Portal.Lync.UserControls.LyncUserPlanSelector" %>
|
||||
<asp:DropDownList ID="ddlPlan" runat="server" CssClass="NormalTextBox"></asp:DropDownList>
|
||||
<asp:DropDownList ID="ddlPlan" runat="server" CssClass="NormalTextBox" AutoPostBack="true"></asp:DropDownList>
|
|
@ -39,7 +39,10 @@ namespace WebsitePanel.Portal.Lync.UserControls
|
|||
public string planId
|
||||
{
|
||||
|
||||
get { return ddlPlan.SelectedItem.Value; }
|
||||
get {
|
||||
if (ddlPlan.Items.Count == 0) return "";
|
||||
return ddlPlan.SelectedItem.Value;
|
||||
}
|
||||
set
|
||||
{
|
||||
planToSelect = value;
|
||||
|
@ -72,6 +75,19 @@ namespace WebsitePanel.Portal.Lync.UserControls
|
|||
}
|
||||
}
|
||||
|
||||
public WebsitePanel.Providers.HostedSolution.LyncUserPlan plan
|
||||
{
|
||||
get
|
||||
{
|
||||
WebsitePanel.Providers.HostedSolution.LyncUserPlan[] plans = ES.Services.Lync.GetLyncUserPlans(PanelRequest.ItemID);
|
||||
foreach (WebsitePanel.Providers.HostedSolution.LyncUserPlan planitem in plans)
|
||||
{
|
||||
if (planitem.LyncUserPlanId.ToString() == planId) return planitem;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void BindPlans()
|
||||
{
|
||||
WebsitePanel.Providers.HostedSolution.LyncUserPlan[] plans = ES.Services.Lync.GetLyncUserPlans(PanelRequest.ItemID);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) 2012, Outercurve Foundation.
|
||||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
|
@ -26,7 +26,6 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
|
@ -35,7 +34,6 @@
|
|||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.Lync.UserControls {
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncAllocatePhoneNumbers.ascx.cs" Inherits="WebsitePanel.Portal.LyncAllocatePhoneNumbers" %>
|
||||
<%@ Register Src="UserControls/AllocatePackagePhoneNumbers.ascx" TagName="AllocatePackagePhoneNumbers" TagPrefix="wsp" %>
|
||||
|
||||
<div class="FormBody">
|
||||
|
||||
<wsp:AllocatePackagePhoneNumbers id="allocatePhoneNumbers" runat="server"
|
||||
Pool="PhoneNumbers"
|
||||
ResourceGroup="Web"
|
||||
ListAddressesControl="" />
|
||||
|
||||
</div>
|
|
@ -0,0 +1,44 @@
|
|||
// 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;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
public partial class LyncAllocatePhoneNumbers : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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 LyncAllocatePhoneNumbers {
|
||||
|
||||
/// <summary>
|
||||
/// allocatePhoneNumbers control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.AllocatePackagePhoneNumbers allocatePhoneNumbers;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncPhoneNumbers.ascx.cs" Inherits="WebsitePanel.Portal.LyncPhoneNumbers" %>
|
||||
<%@ Register Src="UserControls/PackagePhoneNumbers.ascx" TagName="PackagePhoneNumbers" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/Quota.ascx" TagName="Quota" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %>
|
||||
|
||||
<div class="FormBody">
|
||||
<wsp:PackagePhoneNumbers id="webAddresses" runat="server"
|
||||
Pool="PhoneNumbers"
|
||||
EditItemControl=""
|
||||
SpaceHomeControl=""
|
||||
AllocateAddressesControl="allocate_phonenumbers"
|
||||
ManageAllowed="true" />
|
||||
|
||||
<br />
|
||||
<wsp:CollapsiblePanel id="secQuotas" runat="server"
|
||||
TargetControlID="QuotasPanel" meta:resourcekey="secQuotas" Text="Quotas">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="QuotasPanel" runat="server" Height="0" style="overflow:hidden;">
|
||||
|
||||
<table cellspacing="6">
|
||||
<tr>
|
||||
<td><asp:Localize ID="locIPQuota" runat="server" meta:resourcekey="locIPQuota" Text="Number of Phone Numbes:"></asp:Localize></td>
|
||||
<td><wsp:Quota ID="addressesQuota" runat="server" QuotaName="Web.IPAddresses" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</asp:Panel>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
// 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;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
public partial class LyncPhoneNumbers : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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 LyncPhoneNumbers {
|
||||
|
||||
/// <summary>
|
||||
/// webAddresses control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.PackagePhoneNumbers webAddresses;
|
||||
|
||||
/// <summary>
|
||||
/// secQuotas control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secQuotas;
|
||||
|
||||
/// <summary>
|
||||
/// QuotasPanel 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.Panel QuotasPanel;
|
||||
|
||||
/// <summary>
|
||||
/// locIPQuota control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locIPQuota;
|
||||
|
||||
/// <summary>
|
||||
/// addressesQuota control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.Quota addressesQuota;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PhoneNumbers.ascx.cs" Inherits="WebsitePanel.Portal.PhoneNumbers" %>
|
||||
<%@ Register Src="UserControls/SearchBox.ascx" TagName="SearchBox" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
|
||||
<script language="javascript">
|
||||
function SelectAllCheckboxes(box)
|
||||
{
|
||||
var state = box.checked;
|
||||
var elm = box.parentElement.parentElement.parentElement.parentElement.getElementsByTagName("INPUT");
|
||||
for(i = 0; i < elm.length; i++)
|
||||
if(elm[i].type == "checkbox" && elm[i].id != box.id && elm[i].checked != state && !elm[i].disabled)
|
||||
elm[i].checked = state;
|
||||
}
|
||||
</script>
|
||||
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
|
||||
|
||||
<div style="padding: 4px;">
|
||||
<asp:Button ID="btnAddItem" runat="server" meta:resourcekey="btnAddItem" Text="Add" CssClass="Button3" OnClick="btnAddItem_Click" />
|
||||
</div>
|
||||
|
||||
<div class="FormButtonsBar">
|
||||
<div class="Right">
|
||||
<wsp:SearchBox ID="searchBox" runat="server" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<asp:GridView id="gvIPAddresses" runat="server" AutoGenerateColumns="False"
|
||||
AllowSorting="True" EmptyDataText="gvIPAddresses"
|
||||
CssSelectorClass="NormalGridView" DataKeyNames="AddressID"
|
||||
AllowPaging="True" DataSourceID="odsIPAddresses">
|
||||
<Columns>
|
||||
<asp:TemplateField>
|
||||
<HeaderTemplate>
|
||||
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||
</HeaderTemplate>
|
||||
<ItemTemplate>
|
||||
<asp:CheckBox ID="chkSelect" runat="server" Enabled='<%# ((int)Eval("ItemID") == 0) %>' />
|
||||
</ItemTemplate>
|
||||
<ItemStyle Width="10px" />
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField SortExpression="ExternalIP" HeaderText="gvIPAddressesExternalIP">
|
||||
<ItemTemplate>
|
||||
<asp:hyperlink NavigateUrl='<%# EditUrl("AddressID", DataBinder.Eval(Container.DataItem, "AddressID").ToString(), "edit_phone") %>' runat="server" ID="Hyperlink2">
|
||||
<%# Eval("ExternalIP") %>
|
||||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField DataField="ServerName" SortExpression="ServerName" HeaderText="gvIPAddressesServer" ItemStyle-Wrap="false"></asp:BoundField>
|
||||
<asp:TemplateField HeaderText="gvAddressesUser" meta:resourcekey="gvAddressesUser" SortExpression="Username" >
|
||||
<ItemTemplate>
|
||||
<%# Eval("UserName") %>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField HeaderText="gvAddressesSpace" meta:resourcekey="gvAddressesSpace" SortExpression="PackageName" >
|
||||
<ItemTemplate>
|
||||
<asp:hyperlink id="lnkSpace" runat="server" NavigateUrl='<%# GetSpaceHomeUrl((int)Eval("PackageID")) %>'>
|
||||
<%# Eval("PackageName") %>
|
||||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField HeaderText="gvAddressesItemName" meta:resourcekey="gvAddressesItemName" DataField="ItemName" SortExpression="ItemName" />
|
||||
<asp:BoundField DataField="Comments" HeaderText="gvIPAddressesComments"></asp:BoundField>
|
||||
</Columns>
|
||||
</asp:GridView>
|
||||
<asp:ObjectDataSource ID="odsIPAddresses" runat="server" EnablePaging="True"
|
||||
SelectCountMethod="GetIPAddressesPagedCount"
|
||||
SelectMethod="GetIPAddressesPaged"
|
||||
SortParameterName="sortColumn"
|
||||
TypeName="WebsitePanel.Portal.IPAddressesHelper"
|
||||
OnSelected="odsIPAddresses_Selected">
|
||||
<SelectParameters>
|
||||
<asp:Parameter Name="pool" DefaultValue="PhoneNumbers" />
|
||||
<asp:Parameter Name="serverId" DefaultValue="0" />
|
||||
<asp:ControlParameter Name="filterColumn" ControlID="searchBox" PropertyName="FilterColumn" />
|
||||
<asp:ControlParameter Name="filterValue" ControlID="searchBox" PropertyName="FilterValue" />
|
||||
</SelectParameters>
|
||||
</asp:ObjectDataSource>
|
||||
|
||||
<div class="GridFooter">
|
||||
<div class="Left">
|
||||
<asp:Button id="btnEditSelected" runat="server" Text="Edit Selected..."
|
||||
meta:resourcekey="btnEditSelected" CssClass="SmallButton"
|
||||
CausesValidation="false" onclick="btnEditSelected_Click"></asp:Button>
|
||||
<asp:Button id="btnDeleteSelected" runat="server" Text="Delete Selected"
|
||||
meta:resourcekey="btnDeleteSelected" CssClass="SmallButton"
|
||||
CausesValidation="false" onclick="btnDeleteSelected_Click"></asp:Button>
|
||||
</div>
|
||||
<div class="Right">
|
||||
<asp:Label ID="lblItemsPerPage" runat="server" meta:resourcekey="lblItemsPerPage" Text="Page size:" CssClass="Normal"></asp:Label>
|
||||
<asp:DropDownList ID="ddlItemsPerPage" runat="server" CssClass="NormalTextBox"
|
||||
AutoPostBack="True" onselectedindexchanged="ddlItemsPerPage_SelectedIndexChanged">
|
||||
<asp:ListItem Value="10">10</asp:ListItem>
|
||||
<asp:ListItem Value="20">20</asp:ListItem>
|
||||
<asp:ListItem Value="50">50</asp:ListItem>
|
||||
<asp:ListItem Value="100">100</asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,157 @@
|
|||
// 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.Web.UI.WebControls;
|
||||
using System.Collections.Generic;
|
||||
using WebsitePanel.Providers.Common;
|
||||
using System.Text;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
public partial class PhoneNumbers : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
// set display preferences
|
||||
if (!IsPostBack)
|
||||
{
|
||||
// page size
|
||||
gvIPAddresses.PageSize = UsersHelper.GetDisplayItemsPerPage();
|
||||
ddlItemsPerPage.SelectedValue = gvIPAddresses.PageSize.ToString();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
gvIPAddresses.PageSize = Utils.ParseInt(ddlItemsPerPage.SelectedValue, 10);
|
||||
}
|
||||
|
||||
|
||||
if (!IsPostBack)
|
||||
{
|
||||
searchBox.AddCriteria("ExternalIP", GetLocalizedString("SearchField.ExternalIP"));
|
||||
searchBox.AddCriteria("ServerName", GetLocalizedString("SearchField.Server"));
|
||||
searchBox.AddCriteria("ItemName", GetLocalizedString("SearchField.ItemName"));
|
||||
searchBox.AddCriteria("Username", GetLocalizedString("SearchField.Username"));
|
||||
}
|
||||
|
||||
}
|
||||
protected void odsIPAddresses_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
||||
{
|
||||
if (e.Exception != null)
|
||||
{
|
||||
ProcessException(e.Exception);
|
||||
this.DisableControls = true;
|
||||
e.ExceptionHandled = true;
|
||||
}
|
||||
}
|
||||
|
||||
public string GetSpaceHomeUrl(int spaceId)
|
||||
{
|
||||
return PortalUtils.GetSpaceHomePageUrl(spaceId);
|
||||
}
|
||||
|
||||
|
||||
protected void btnAddItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Response.Redirect(EditUrl("PoolID", "PhoneNumbers", "add_phone"), true);
|
||||
}
|
||||
|
||||
protected void ddlItemsPerPage_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
gvIPAddresses.PageSize = Utils.ParseInt(ddlItemsPerPage.SelectedValue, 10);
|
||||
gvIPAddresses.DataBind();
|
||||
}
|
||||
|
||||
protected void btnEditSelected_Click(object sender, EventArgs e)
|
||||
{
|
||||
int[] addresses = GetSelectedItems(gvIPAddresses);
|
||||
if (addresses.Length == 0)
|
||||
{
|
||||
ShowWarningMessage("IP_EDIT_LIST_EMPTY_ERROR");
|
||||
return;
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < addresses.Length; i++)
|
||||
{
|
||||
if (i > 0) sb.Append(",");
|
||||
sb.Append(addresses[i]);
|
||||
}
|
||||
|
||||
// go to edit screen
|
||||
Response.Redirect(EditUrl("Addresses", sb.ToString(), "edit_phone"), true);
|
||||
}
|
||||
|
||||
protected void btnDeleteSelected_Click(object sender, EventArgs e)
|
||||
{
|
||||
int[] addresses = GetSelectedItems(gvIPAddresses);
|
||||
if (addresses.Length == 0)
|
||||
{
|
||||
ShowWarningMessage("IP_DELETE_LIST_EMPTY_ERROR");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// delete selected IP addresses
|
||||
ResultObject res = ES.Services.Servers.DeleteIPAddresses(addresses);
|
||||
|
||||
if (!res.IsSuccess)
|
||||
{
|
||||
messageBox.ShowMessage(res, "IP_DELETE_RANGE_IP", "IP");
|
||||
return;
|
||||
}
|
||||
|
||||
// refresh grid
|
||||
gvIPAddresses.DataBind();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("IP_DELETE_RANGE_IP", ex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private int[] GetSelectedItems(GridView gv)
|
||||
{
|
||||
List<int> items = new List<int>();
|
||||
|
||||
for (int i = 0; i < gv.Rows.Count; i++)
|
||||
{
|
||||
GridViewRow row = gv.Rows[i];
|
||||
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||
if (chkSelect.Checked)
|
||||
items.Add((int)gv.DataKeys[i].Value);
|
||||
}
|
||||
|
||||
return items.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
134
WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbers.ascx.designer.cs
generated
Normal file
134
WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbers.ascx.designer.cs
generated
Normal file
|
@ -0,0 +1,134 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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 PhoneNumbers {
|
||||
|
||||
/// <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>
|
||||
/// btnAddItem 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 btnAddItem;
|
||||
|
||||
/// <summary>
|
||||
/// searchBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.SearchBox searchBox;
|
||||
|
||||
/// <summary>
|
||||
/// gvIPAddresses 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.GridView gvIPAddresses;
|
||||
|
||||
/// <summary>
|
||||
/// odsIPAddresses 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.ObjectDataSource odsIPAddresses;
|
||||
|
||||
/// <summary>
|
||||
/// btnEditSelected 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 btnEditSelected;
|
||||
|
||||
/// <summary>
|
||||
/// btnDeleteSelected 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 btnDeleteSelected;
|
||||
|
||||
/// <summary>
|
||||
/// lblItemsPerPage 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 lblItemsPerPage;
|
||||
|
||||
/// <summary>
|
||||
/// ddlItemsPerPage 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.DropDownList ddlItemsPerPage;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PhoneNumbersAddPhoneNumber.ascx.cs" Inherits="WebsitePanel.Portal.PhoneNumbersAddPhoneNumber" %>
|
||||
<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
<div class="FormBody">
|
||||
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
|
||||
<asp:ValidationSummary ID="validatorsSummary" runat="server"
|
||||
ValidationGroup="EditAddress" ShowMessageBox="True" ShowSummary="False" />
|
||||
|
||||
<asp:CustomValidator ID="consistentAddresses" runat="server" ErrorMessage="You must not mix IPv4 and IPv6 addresses." ValidationGroup="EditAddress" Display="dynamic" ServerValidate="CheckIPAddresses" />
|
||||
|
||||
<table cellspacing="0" cellpadding="3">
|
||||
<tr>
|
||||
<td><asp:Localize ID="locServer" runat="server" meta:resourcekey="locServer" Text="Server:"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:dropdownlist id="ddlServer" CssClass="NormalTextBox" runat="server" DataTextField="ServerName" DataValueField="ServerID"></asp:dropdownlist>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="PhoneNumbersRow" runat="server">
|
||||
<td><asp:Localize ID="Localize1" runat="server" meta:resourcekey="lblPhoneNumbers" Text="Phone Numbers:"></asp:Localize></td>
|
||||
<td>
|
||||
|
||||
<asp:TextBox id="startPhone" runat="server" Width="260px" MaxLength="45" CssClass="NormalTextBox"/>
|
||||
<asp:RequiredFieldValidator ID="requireStartPhoneValidator" runat="server" meta:resourcekey="requireStartPhoneValidator"
|
||||
ControlToValidate="startPhone" SetFocusOnError="true" Text="*" Enabled="false" ValidationGroup="EditAddress" ErrorMessage="Enter Phone Number" />
|
||||
|
||||
<asp:Localize ID="Localize2" runat="server" meta:resourcekey="locTo" Text="to"></asp:Localize>
|
||||
|
||||
<asp:TextBox id="endPhone" runat="server" ValidationGroup="EditAddress" Width="260px" MaxLength="45" CssClass="NormalTextBox"/>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><asp:Localize ID="lblComments" runat="server" meta:resourcekey="lblComments" Text="Comments:"></asp:Localize></td>
|
||||
<td class="NormalBold"><asp:textbox id="txtComments" Width="250px" CssClass="NormalTextBox" runat="server" Rows="3" TextMode="MultiLine"></asp:textbox></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="FormFooter">
|
||||
<asp:Button ID="btnAdd" runat="server" meta:resourcekey="btnAdd" CssClass="Button1" OnClick="btnAdd_Click" Text="Add" ValidationGroup="EditAddress" />
|
||||
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel" CssClass="Button1" Text="Cancel" CausesValidation="False" OnClick="btnCancel_Click" />
|
||||
</div>
|
|
@ -0,0 +1,173 @@
|
|||
// 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.Data;
|
||||
using System.Configuration;
|
||||
using System.Collections;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.ResultObjects;
|
||||
using WebsitePanel.Providers.Common;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
public partial class PhoneNumbersAddPhoneNumber : WebsitePanelModuleBase
|
||||
{
|
||||
private void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
|
||||
// bind dropdowns
|
||||
try
|
||||
{
|
||||
BindServers();
|
||||
|
||||
// set server if found in request
|
||||
if (PanelRequest.ServerId != 0)
|
||||
Utils.SelectListItem(ddlServer, PanelRequest.ServerId);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("IP_ADD_INIT_FORM", ex);
|
||||
return;
|
||||
}
|
||||
|
||||
ToggleControls();
|
||||
}
|
||||
}
|
||||
|
||||
private void BindServers()
|
||||
{
|
||||
try
|
||||
{
|
||||
ddlServer.DataSource = ES.Services.Servers.GetServers();
|
||||
ddlServer.DataBind();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Response.Write(ex);
|
||||
}
|
||||
|
||||
// add "select" item
|
||||
ddlServer.Items.Insert(0, new ListItem(GetLocalizedString("Text.NotAssigned"), ""));
|
||||
}
|
||||
|
||||
protected void btnAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Page.IsValid)
|
||||
{
|
||||
int serverId = Utils.ParseInt(ddlServer.SelectedValue, 0);
|
||||
IPAddressPool pool = IPAddressPool.PhoneNumbers;
|
||||
string comments = txtComments.Text.Trim();
|
||||
|
||||
string start;
|
||||
string end;
|
||||
|
||||
start = startPhone.Text;
|
||||
end = endPhone.Text;
|
||||
|
||||
// add ip address
|
||||
if (end != "" || start.Contains("/"))
|
||||
{
|
||||
string errorKey = "IP_ADD_PHONE_RANGE";
|
||||
|
||||
try
|
||||
{
|
||||
// add IP range
|
||||
ResultObject res = ES.Services.Servers.AddIPAddressesRange(pool, serverId, start, end,
|
||||
"", "", "", comments);
|
||||
if (!res.IsSuccess)
|
||||
{
|
||||
// show error
|
||||
messageBox.ShowMessage(res, errorKey, "IP");
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage(errorKey, ex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string errorKey = "IP_ADD_PHONE";
|
||||
|
||||
// add single IP
|
||||
try
|
||||
{
|
||||
IntResult res = ES.Services.Servers.AddIPAddress(pool, serverId, start,
|
||||
"", "", "", comments);
|
||||
if (!res.IsSuccess)
|
||||
{
|
||||
messageBox.ShowMessage(res, errorKey, "IP");
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage(errorKey, ex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Redirect back to the portal home page
|
||||
RedirectBack();
|
||||
}
|
||||
}
|
||||
protected void btnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Redirect back to the portal home page
|
||||
RedirectBack();
|
||||
}
|
||||
|
||||
private void RedirectBack()
|
||||
{
|
||||
Response.Redirect(NavigateURL("PoolID", "PhoneNumbers"));
|
||||
}
|
||||
|
||||
protected void ddlPools_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
ToggleControls();
|
||||
}
|
||||
|
||||
private void ToggleControls()
|
||||
{
|
||||
requireStartPhoneValidator.Enabled = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,194 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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 PhoneNumbersAddPhoneNumber {
|
||||
|
||||
/// <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>
|
||||
/// validatorsSummary 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.ValidationSummary validatorsSummary;
|
||||
|
||||
/// <summary>
|
||||
/// consistentAddresses 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.CustomValidator consistentAddresses;
|
||||
|
||||
/// <summary>
|
||||
/// locServer control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locServer;
|
||||
|
||||
/// <summary>
|
||||
/// ddlServer 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.DropDownList ddlServer;
|
||||
|
||||
/// <summary>
|
||||
/// PhoneNumbersRow control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlTableRow PhoneNumbersRow;
|
||||
|
||||
/// <summary>
|
||||
/// Localize1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize Localize1;
|
||||
|
||||
/// <summary>
|
||||
/// startPhone 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 startPhone;
|
||||
|
||||
/// <summary>
|
||||
/// requireStartPhoneValidator 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 requireStartPhoneValidator;
|
||||
|
||||
/// <summary>
|
||||
/// Localize2 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize Localize2;
|
||||
|
||||
/// <summary>
|
||||
/// endPhone 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 endPhone;
|
||||
|
||||
/// <summary>
|
||||
/// lblComments control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize lblComments;
|
||||
|
||||
/// <summary>
|
||||
/// txtComments 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 txtComments;
|
||||
|
||||
/// <summary>
|
||||
/// btnAdd 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 btnAdd;
|
||||
|
||||
/// <summary>
|
||||
/// btnCancel 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 btnCancel;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PhoneNumbersEditPhoneNumber.ascx.cs" Inherits="WebsitePanel.Portal.PhoneNumbersEditPhoneNumber" %>
|
||||
<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
|
||||
<div class="FormBody">
|
||||
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
|
||||
<asp:ValidationSummary ID="validatorsSummary" runat="server"
|
||||
ValidationGroup="EditAddress" ShowMessageBox="True" ShowSummary="False" />
|
||||
|
||||
<table cellspacing="0" cellpadding="3">
|
||||
<tr>
|
||||
<td><asp:Localize ID="locServer" runat="server" meta:resourcekey="locServer" Text="Server:"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:dropdownlist id="ddlServer" CssClass="NormalTextBox" runat="server" DataTextField="ServerName" DataValueField="ServerID"></asp:dropdownlist>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="PhoneNumbersRow" runat="server">
|
||||
<td><asp:Localize ID="Localize1" runat="server" meta:resourcekey="lblPhoneNumbers" Text="Phone Numbers:"></asp:Localize></td>
|
||||
<td>
|
||||
|
||||
<asp:TextBox id="Phone" runat="server" Width="260px" MaxLength="45" CssClass="NormalTextBox"/>
|
||||
<asp:RequiredFieldValidator ID="requireStartPhoneValidator" runat="server" meta:resourcekey="requireStartPhoneValidator"
|
||||
ControlToValidate="Phone" SetFocusOnError="true" Text="*" Enabled="false" ValidationGroup="EditAddress" ErrorMessage="Enter Phone Number" />
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><asp:Localize ID="lblComments" runat="server" meta:resourcekey="lblComments" Text="Comments:"></asp:Localize></td>
|
||||
<td><asp:textbox id="txtComments" Width="300px" CssClass="NormalTextBox" runat="server" Rows="3" TextMode="MultiLine"></asp:textbox></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="FormFooter">
|
||||
<asp:Button ID="btnUpdate" runat="server" meta:resourcekey="btnUpdate" CssClass="Button1" Text="Update" OnClick="btnUpdate_Click" ValidationGroup="EditAddress" />
|
||||
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel" CssClass="Button1" Text="Cancel" CausesValidation="False" OnClick="btnCancel_Click" />
|
||||
</div>
|
|
@ -0,0 +1,176 @@
|
|||
// 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.Data;
|
||||
using System.Configuration;
|
||||
using System.Collections;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.Common;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
public partial class PhoneNumbersEditPhoneNumber : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
try
|
||||
{
|
||||
// bind dropdowns
|
||||
BindServers();
|
||||
|
||||
// bind IP
|
||||
BindPhone();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("IP_GET_IP", ex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void BindPhone()
|
||||
{
|
||||
int addressId = PanelRequest.AddressID;
|
||||
|
||||
// check if multiple editing
|
||||
if (!String.IsNullOrEmpty(PanelRequest.Addresses))
|
||||
{
|
||||
string[] ids = PanelRequest.Addresses.Split(',');
|
||||
addressId = Utils.ParseInt(ids[0], 0);
|
||||
}
|
||||
|
||||
// bind first address
|
||||
IPAddressInfo addr = ES.Services.Servers.GetIPAddress(addressId);
|
||||
|
||||
if (addr != null)
|
||||
{
|
||||
Utils.SelectListItem(ddlServer, addr.ServerId);
|
||||
|
||||
Phone.Text = addr.ExternalIP;
|
||||
txtComments.Text = addr.Comments;
|
||||
|
||||
ToggleControls();
|
||||
}
|
||||
else
|
||||
{
|
||||
// exit
|
||||
RedirectBack();
|
||||
}
|
||||
}
|
||||
|
||||
private void BindServers()
|
||||
{
|
||||
ddlServer.DataSource = ES.Services.Servers.GetServers();
|
||||
ddlServer.DataBind();
|
||||
ddlServer.Items.Insert(0, new ListItem(GetLocalizedString("Text.NotAssigned"), ""));
|
||||
}
|
||||
|
||||
private void RedirectBack()
|
||||
{
|
||||
Response.Redirect(NavigateURL("PoolID", "PhoneNumbers"));
|
||||
}
|
||||
|
||||
protected void btnUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Page.IsValid)
|
||||
{
|
||||
try
|
||||
{
|
||||
int serverId = Utils.ParseInt(ddlServer.SelectedValue, 0);
|
||||
IPAddressPool pool = IPAddressPool.PhoneNumbers;
|
||||
|
||||
ResultObject res = null;
|
||||
|
||||
// update single IP address
|
||||
if (!String.IsNullOrEmpty(PanelRequest.Addresses))
|
||||
{
|
||||
// update multiple IPs
|
||||
string[] ids = PanelRequest.Addresses.Split(',');
|
||||
int[] addresses = new int[ids.Length];
|
||||
for (int i = 0; i < ids.Length; i++)
|
||||
addresses[i] = Utils.ParseInt(ids[i], 0);
|
||||
|
||||
res = ES.Services.Servers.UpdateIPAddresses(addresses,
|
||||
pool, serverId, "", "", txtComments.Text.Trim());
|
||||
}
|
||||
else
|
||||
{
|
||||
string address = Phone.Text;
|
||||
|
||||
// update single IP
|
||||
res = ES.Services.Servers.UpdateIPAddress(PanelRequest.AddressID,
|
||||
pool, serverId, address, "", "", "", txtComments.Text.Trim());
|
||||
}
|
||||
|
||||
if (!res.IsSuccess)
|
||||
{
|
||||
messageBox.ShowMessage(res, "IP_UPDATE_IP", "IP");
|
||||
return;
|
||||
}
|
||||
|
||||
// Redirect back to the portal home page
|
||||
RedirectBack();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("IP_UPDATE_IP", ex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Redirect back to the portal home page
|
||||
RedirectBack();
|
||||
}
|
||||
|
||||
protected void ddlPools_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
ToggleControls();
|
||||
}
|
||||
|
||||
private void ToggleControls()
|
||||
{
|
||||
bool multipleEdit = !String.IsNullOrEmpty(PanelRequest.Addresses);
|
||||
PhoneNumbersRow.Visible = !multipleEdit;
|
||||
requireStartPhoneValidator.Enabled = !multipleEdit;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,164 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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 PhoneNumbersEditPhoneNumber {
|
||||
|
||||
/// <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>
|
||||
/// validatorsSummary 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.ValidationSummary validatorsSummary;
|
||||
|
||||
/// <summary>
|
||||
/// locServer control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locServer;
|
||||
|
||||
/// <summary>
|
||||
/// ddlServer 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.DropDownList ddlServer;
|
||||
|
||||
/// <summary>
|
||||
/// PhoneNumbersRow control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlTableRow PhoneNumbersRow;
|
||||
|
||||
/// <summary>
|
||||
/// Localize1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize Localize1;
|
||||
|
||||
/// <summary>
|
||||
/// Phone 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 Phone;
|
||||
|
||||
/// <summary>
|
||||
/// requireStartPhoneValidator 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 requireStartPhoneValidator;
|
||||
|
||||
/// <summary>
|
||||
/// lblComments control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize lblComments;
|
||||
|
||||
/// <summary>
|
||||
/// txtComments 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 txtComments;
|
||||
|
||||
/// <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;
|
||||
|
||||
/// <summary>
|
||||
/// btnCancel 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 btnCancel;
|
||||
}
|
||||
}
|
|
@ -1,10 +1,39 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <автоматически создаваемое>
|
||||
// Этот код создан программой.
|
||||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
// повторной генерации кода.
|
||||
// </автоматически создаваемое>
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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.ProviderControls {
|
||||
|
@ -13,83 +42,92 @@ namespace WebsitePanel.Portal.ProviderControls {
|
|||
public partial class CRM2011_Settings {
|
||||
|
||||
/// <summary>
|
||||
/// txtSqlServer элемент управления.
|
||||
/// txtSqlServer 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 txtSqlServer;
|
||||
|
||||
/// <summary>
|
||||
/// RequiredFieldValidator1 элемент управления.
|
||||
/// RequiredFieldValidator1 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 RequiredFieldValidator1;
|
||||
|
||||
/// <summary>
|
||||
/// txtReportingService элемент управления.
|
||||
/// txtReportingService 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 txtReportingService;
|
||||
|
||||
/// <summary>
|
||||
/// txtDomainName элемент управления.
|
||||
/// txtDomainName 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 txtDomainName;
|
||||
|
||||
/// <summary>
|
||||
/// RequiredFieldValidator2 элемент управления.
|
||||
/// RequiredFieldValidator2 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 RequiredFieldValidator2;
|
||||
|
||||
/// <summary>
|
||||
/// ddlSchema элемент управления.
|
||||
/// ddlSchema 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.DropDownList ddlSchema;
|
||||
|
||||
/// <summary>
|
||||
/// ddlCrmIpAddress элемент управления.
|
||||
/// ddlCrmIpAddress control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Автоматически создаваемое поле.
|
||||
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.SelectIPAddress ddlCrmIpAddress;
|
||||
|
||||
/// <summary>
|
||||
/// txtPort элемент управления.
|
||||
/// txtPort 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 txtPort;
|
||||
|
||||
/// <summary>
|
||||
/// txtAppRootDomain элемент управления.
|
||||
/// txtAppRootDomain 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 txtAppRootDomain;
|
||||
}
|
||||
|
|
|
@ -40,58 +40,185 @@
|
|||
</Columns>
|
||||
</asp:GridView>
|
||||
<br />
|
||||
<wsp:CollapsiblePanel id="secPlan" runat="server"
|
||||
TargetControlID="Plan" meta:resourcekey="secPlan" Text="Plan">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="Plan" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel200" align="right">
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtPlan" runat="server" CssClass="TextBox200" ></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequirePlan" runat="server" meta:resourcekey="valRequirePlan" ControlToValidate="txtPlan"
|
||||
ErrorMessage="Enter plan name" ValidationGroup="CreatePlan" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
<wsp:CollapsiblePanel id="secPlan" runat="server"
|
||||
TargetControlID="Plan" meta:resourcekey="secPlan" Text="Plan">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="Plan" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel200" align="right">
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeatures" runat="server" TargetControlID="PlanFeatures" meta:resourcekey="secPlanFeatures" Text="Plan Features">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeatures" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkIM" runat="server" meta:resourcekey="chkIM" Text="Instant Messaging"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkMobility" runat="server" meta:resourcekey="chkMobility" Text="Mobility"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkFederation" runat="server" meta:resourcekey="chkFederation" Text="Federation"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkConferencing" runat="server" meta:resourcekey="chkConferencing" Text="Conferencing"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkEnterpriseVoice" runat="server" meta:resourcekey="chkEnterpriseVoice" Text="Enterprise Voice"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
</td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtPlan" runat="server" CssClass="TextBox200" ></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequirePlan" runat="server" meta:resourcekey="valRequirePlan" ControlToValidate="txtPlan"
|
||||
ErrorMessage="Enter plan name" ValidationGroup="CreatePlan" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeatures" runat="server"
|
||||
TargetControlID="PlanFeatures" meta:resourcekey="secPlanFeatures" Text="Plan Features">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeatures" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkIM" runat="server" meta:resourcekey="chkIM" Text="Instant Messaging"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkMobility" runat="server" meta:resourcekey="chkMobility" Text="Mobility"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkConferencing" runat="server" meta:resourcekey="chkConferencing" Text="Conferencing"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkEnterpriseVoice" runat="server" meta:resourcekey="chkEnterpriseVoice" Text="Enterprise Voice"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeaturesFederation" runat="server"
|
||||
TargetControlID="PlanFeaturesFederation" meta:resourcekey="secPlanFeaturesFederation" Text="Federation">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeaturesFederation" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkFederation" runat="server" meta:resourcekey="chkFederation" Text="Federation"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkRemoteUserAccess" runat="server" meta:resourcekey="chkRemoteUserAccess" Text="Remote User access"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkPublicIMConnectivity" runat="server" meta:resourcekey="chkPublicIMConnectivity" Text="Public IM Connectivity"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeaturesArchiving" runat="server"
|
||||
TargetControlID="PlanFeaturesArchiving" meta:resourcekey="secPlanFeaturesArchiving" Text="Archiving">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeaturesArchiving" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locArchivingPolicy" meta:resourcekey="locArchivingPolicy" Text="Archiving Policy:" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:DropDownList ID="ddArchivingPolicy" runat="server" CssClass="TextBox200"></asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeaturesMeeting" runat="server"
|
||||
TargetControlID="PlanFeaturesMeeting" meta:resourcekey="secPlanFeaturesMeeting" Text="Meeting">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeaturesMeeting" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkAllowOrganizeMeetingsWithExternalAnonymous" runat="server" meta:resourcekey="chkAllowOrganizeMeetingsWithExternalAnonymous" Text="Allow organize meetings with external anonymous participants"></asp:CheckBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
<wsp:CollapsiblePanel id="secPlanFeaturesTelephony" runat="server"
|
||||
TargetControlID="PlanFeaturesTelephony" meta:resourcekey="secPlanFeaturesTelephony" Text="Telephony">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PlanFeaturesTelephony" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locTelephony" meta:resourcekey="locTelephony" Text="Telephony :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:DropDownList ID="ddTelephony" runat="server" AutoPostBack="True">
|
||||
<asp:ListItem Value="0" Text="Audio/Video disabled" meta:resourcekey="ddlTelephonyDisabled" />
|
||||
<asp:ListItem Value="1" Text="PC-to-PC only" meta:resourcekey="ddlTelephonyPCtoPCOnly" />
|
||||
<asp:ListItem Value="2" Text="Enterprise voice" meta:resourcekey="ddlTelephonyEnterpriseVoice" />
|
||||
<asp:ListItem Value="3" Text="Remote call control" meta:resourcekey="ddlTelephonyRemoteCallControl" />
|
||||
<asp:ListItem Value="4" Text="Remote call control only" meta:resourcekey="ddlTelephonyRemoteCallControlOnly" />
|
||||
</asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<asp:Panel runat="server" ID="pnEnterpriseVoice">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locTelephonyProvider" meta:resourcekey="locTelephonyProvider" Text="Telephony Provider :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:TextBox ID="tbTelephoneProvider" runat="server"></asp:TextBox>
|
||||
<asp:Button runat="server" ID="btnAccept" Text="Accept" OnClick="btnAccept_Click" OnClientClick="ShowProgressDialog('Loading...');" ValidationGroup="Accept"/>
|
||||
|
||||
<asp:RequiredFieldValidator id="AcceptRequiredValidator" runat="server" ErrorMessage="Please enter provider name"
|
||||
ControlToValidate="tbTelephoneProvider" Display="Dynamic" ValidationGroup="Accept" SetFocusOnError="true"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locDialPlan" meta:resourcekey="locDialPlan" Text="Dial Plan :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:DropDownList ID="ddTelephonyDialPlanPolicy" runat="server"></asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locVoicePolicy" meta:resourcekey="locVoicePolicy" Text="Voice Policy :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:DropDownList ID="ddTelephonyVoicePolicy" runat="server"></asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
<asp:Panel runat="server" ID="pnServerURI">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize runat="server" ID="locServerURI" meta:resourcekey="locServerURI" Text="Server URI :" />
|
||||
</td>
|
||||
<td>
|
||||
<asp:TextBox ID="tbServerURI" runat="server"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
||||
|
||||
|
||||
<%-- Disable because not used
|
||||
<wsp:CollapsiblePanel id="secEnterpriseVoice" runat="server"
|
||||
TargetControlID="EnterpriseVoice" meta:resourcekey="secEnterpriseVoice" Text="Enterprise Voice Policy">
|
||||
</wsp:CollapsiblePanel>
|
||||
|
@ -128,6 +255,7 @@
|
|||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
--%>
|
||||
|
||||
<br />
|
||||
|
||||
|
|
|
@ -55,6 +55,52 @@ namespace WebsitePanel.Portal
|
|||
|
||||
internal static List<LyncUserPlan> list;
|
||||
|
||||
protected void ddArchivingPolicyUpdate()
|
||||
{
|
||||
string[] archivePolicy = ES.Services.Lync.GetPolicyList(-1, LyncPolicyType.Archiving, null);
|
||||
if (archivePolicy != null)
|
||||
{
|
||||
foreach (string policy in archivePolicy)
|
||||
{
|
||||
if (policy.ToLower() == "global") continue;
|
||||
string txt = policy.Replace("Tag:", "");
|
||||
if (ddArchivingPolicy.Items.FindByValue(policy)==null)
|
||||
ddArchivingPolicy.Items.Add(new System.Web.UI.WebControls.ListItem(txt, policy));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void Page_PreRender(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (ddArchivingPolicy.Items.Count == 0)
|
||||
ddArchivingPolicyUpdate();
|
||||
|
||||
chkEnterpriseVoice.Enabled = false;
|
||||
chkEnterpriseVoice.Checked = false;
|
||||
|
||||
pnEnterpriseVoice.Visible = false;
|
||||
pnServerURI.Visible = false;
|
||||
|
||||
switch (ddTelephony.SelectedIndex)
|
||||
{
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
pnEnterpriseVoice.Visible = true;
|
||||
chkEnterpriseVoice.Checked = true;
|
||||
break;
|
||||
case 3:
|
||||
pnServerURI.Visible = true;
|
||||
break;
|
||||
case 4:
|
||||
pnServerURI.Visible = true;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void BindSettings(UserSettings settings)
|
||||
{
|
||||
|
@ -113,8 +159,7 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
LyncUserPlan plan = new LyncUserPlan();
|
||||
Providers.HostedSolution.LyncUserPlan plan = new Providers.HostedSolution.LyncUserPlan();
|
||||
plan.LyncUserPlanName = txtPlan.Text;
|
||||
plan.IsDefault = false;
|
||||
|
||||
|
@ -124,24 +169,21 @@ namespace WebsitePanel.Portal
|
|||
plan.Conferencing = chkConferencing.Checked;
|
||||
|
||||
plan.EnterpriseVoice = chkEnterpriseVoice.Checked;
|
||||
if (!plan.EnterpriseVoice)
|
||||
{
|
||||
plan.VoicePolicy = LyncVoicePolicyType.None;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (chkEmergency.Checked)
|
||||
plan.VoicePolicy = LyncVoicePolicyType.Emergency;
|
||||
else if (chkNational.Checked)
|
||||
plan.VoicePolicy = LyncVoicePolicyType.National;
|
||||
else if (chkMobile.Checked)
|
||||
plan.VoicePolicy = LyncVoicePolicyType.Mobile;
|
||||
else if (chkInternational.Checked)
|
||||
plan.VoicePolicy = LyncVoicePolicyType.International;
|
||||
else
|
||||
plan.VoicePolicy = LyncVoicePolicyType.None;
|
||||
|
||||
}
|
||||
plan.VoicePolicy = LyncVoicePolicyType.None;
|
||||
|
||||
plan.RemoteUserAccess = chkRemoteUserAccess.Checked;
|
||||
plan.PublicIMConnectivity = chkPublicIMConnectivity.Checked;
|
||||
|
||||
plan.AllowOrganizeMeetingsWithExternalAnonymous = chkAllowOrganizeMeetingsWithExternalAnonymous.Checked;
|
||||
|
||||
plan.Telephony = ddTelephony.SelectedIndex;
|
||||
|
||||
plan.ServerURI = tbServerURI.Text;
|
||||
|
||||
plan.ArchivePolicy = ddArchivingPolicy.SelectedValue;
|
||||
plan.TelephonyDialPlanPolicy = ddTelephonyDialPlanPolicy.SelectedValue;
|
||||
plan.TelephonyVoicePolicy = ddTelephonyVoicePolicy.SelectedValue;
|
||||
|
||||
if (PanelSecurity.SelectedUser.Role == UserRole.Administrator)
|
||||
plan.LyncUserPlanType = (int)LyncUserPlanType.Administrator;
|
||||
|
@ -234,7 +276,7 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
catch (Exception)
|
||||
{
|
||||
messageBox.ShowErrorMessage("EXCHANGE_DELETE_MAILBOXPLAN");
|
||||
messageBox.ShowErrorMessage("LYNC_DELETE_PLAN");
|
||||
}
|
||||
|
||||
BindPlans();
|
||||
|
@ -261,7 +303,6 @@ namespace WebsitePanel.Portal
|
|||
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, false);
|
||||
}
|
||||
|
||||
|
||||
plan = ES.Services.Lync.GetLyncUserPlan(orgs[0].Id, planId);
|
||||
|
||||
txtPlan.Text = plan.LyncUserPlanName;
|
||||
|
@ -271,26 +312,35 @@ namespace WebsitePanel.Portal
|
|||
chkConferencing.Checked = plan.Conferencing;
|
||||
chkMobility.Checked = plan.Mobility;
|
||||
chkEnterpriseVoice.Checked = plan.EnterpriseVoice;
|
||||
switch (plan.VoicePolicy)
|
||||
|
||||
chkRemoteUserAccess.Checked = plan.RemoteUserAccess;
|
||||
chkPublicIMConnectivity.Checked = plan.PublicIMConnectivity;
|
||||
|
||||
chkAllowOrganizeMeetingsWithExternalAnonymous.Checked = plan.AllowOrganizeMeetingsWithExternalAnonymous;
|
||||
ddTelephony.SelectedIndex = plan.Telephony;
|
||||
|
||||
tbServerURI.Text = plan.ServerURI;
|
||||
|
||||
string planArchivePolicy = "";
|
||||
if (plan.ArchivePolicy != null) planArchivePolicy = plan.ArchivePolicy;
|
||||
string planTelephonyDialPlanPolicy = "";
|
||||
if (plan.TelephonyDialPlanPolicy != null) planTelephonyDialPlanPolicy = plan.TelephonyDialPlanPolicy;
|
||||
string planTelephonyVoicePolicy = "";
|
||||
if (plan.TelephonyVoicePolicy != null) planTelephonyVoicePolicy = plan.TelephonyVoicePolicy;
|
||||
|
||||
ddArchivingPolicyUpdate();
|
||||
ListItem li = ddArchivingPolicy.Items.FindByValue(planArchivePolicy);
|
||||
if (li == null)
|
||||
{
|
||||
case LyncVoicePolicyType.None:
|
||||
break;
|
||||
case LyncVoicePolicyType.Emergency:
|
||||
chkEmergency.Checked = true;
|
||||
break;
|
||||
case LyncVoicePolicyType.National:
|
||||
chkNational.Checked = true;
|
||||
break;
|
||||
case LyncVoicePolicyType.Mobile:
|
||||
chkMobile.Checked = true;
|
||||
break;
|
||||
case LyncVoicePolicyType.International:
|
||||
chkInternational.Checked = true;
|
||||
break;
|
||||
default:
|
||||
chkNone.Checked = true;
|
||||
break;
|
||||
li = new System.Web.UI.WebControls.ListItem(planArchivePolicy.Replace("Tag:", ""), planArchivePolicy);
|
||||
ddArchivingPolicy.Items.Add(li);
|
||||
}
|
||||
ddArchivingPolicy.SelectedIndex = ddArchivingPolicy.Items.IndexOf(li);
|
||||
|
||||
ddTelephonyDialPlanPolicy.Items.Clear();
|
||||
ddTelephonyDialPlanPolicy.Items.Add(new System.Web.UI.WebControls.ListItem(planTelephonyDialPlanPolicy.Replace("Tag:", ""), planTelephonyDialPlanPolicy));
|
||||
ddTelephonyVoicePolicy.Items.Clear();
|
||||
ddTelephonyVoicePolicy.Items.Add(new System.Web.UI.WebControls.ListItem(planTelephonyVoicePolicy.Replace("Tag:", ""), planTelephonyVoicePolicy));
|
||||
|
||||
btnUpdatePlan.Enabled = (string.IsNullOrEmpty(txtPlan.Text)) ? false : true;
|
||||
|
||||
|
@ -298,7 +348,6 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
catch (Exception)
|
||||
{
|
||||
messageBox.ShowErrorMessage("EXCHANGE_DELETE_MAILBOXPLAN");
|
||||
}
|
||||
|
||||
BindPlans();
|
||||
|
@ -375,7 +424,6 @@ namespace WebsitePanel.Portal
|
|||
|
||||
plan = new Providers.HostedSolution.LyncUserPlan();
|
||||
plan.LyncUserPlanId = (int)ViewState["LyncUserPlanID"];
|
||||
|
||||
plan.LyncUserPlanName = txtPlan.Text;
|
||||
plan.IsDefault = false;
|
||||
|
||||
|
@ -385,24 +433,22 @@ namespace WebsitePanel.Portal
|
|||
plan.Conferencing = chkConferencing.Checked;
|
||||
|
||||
plan.EnterpriseVoice = chkEnterpriseVoice.Checked;
|
||||
if (!plan.EnterpriseVoice)
|
||||
{
|
||||
plan.VoicePolicy = LyncVoicePolicyType.None;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (chkEmergency.Checked)
|
||||
plan.VoicePolicy = LyncVoicePolicyType.Emergency;
|
||||
else if (chkNational.Checked)
|
||||
plan.VoicePolicy = LyncVoicePolicyType.National;
|
||||
else if (chkMobile.Checked)
|
||||
plan.VoicePolicy = LyncVoicePolicyType.Mobile;
|
||||
else if (chkInternational.Checked)
|
||||
plan.VoicePolicy = LyncVoicePolicyType.International;
|
||||
else
|
||||
plan.VoicePolicy = LyncVoicePolicyType.None;
|
||||
|
||||
}
|
||||
plan.VoicePolicy = LyncVoicePolicyType.None;
|
||||
|
||||
plan.RemoteUserAccess = chkRemoteUserAccess.Checked;
|
||||
plan.PublicIMConnectivity = chkPublicIMConnectivity.Checked;
|
||||
|
||||
plan.AllowOrganizeMeetingsWithExternalAnonymous = chkAllowOrganizeMeetingsWithExternalAnonymous.Checked;
|
||||
|
||||
plan.Telephony = ddTelephony.SelectedIndex;
|
||||
|
||||
plan.ServerURI = tbServerURI.Text;
|
||||
|
||||
plan.ArchivePolicy = ddArchivingPolicy.SelectedValue;
|
||||
plan.TelephonyDialPlanPolicy = ddTelephonyDialPlanPolicy.SelectedValue;
|
||||
plan.TelephonyVoicePolicy = ddTelephonyVoicePolicy.SelectedValue;
|
||||
|
||||
|
||||
if (PanelSecurity.SelectedUser.Role == UserRole.Administrator)
|
||||
plan.LyncUserPlanType = (int)LyncUserPlanType.Administrator;
|
||||
|
@ -417,11 +463,11 @@ namespace WebsitePanel.Portal
|
|||
|
||||
if (result < 0)
|
||||
{
|
||||
messageBox.ShowErrorMessage("EXCHANGE_UPDATEPLANS");
|
||||
messageBox.ShowErrorMessage("LYNC_UPDATEPLANS");
|
||||
}
|
||||
else
|
||||
{
|
||||
messageBox.ShowSuccessMessage("EXCHANGE_UPDATEPLANS");
|
||||
messageBox.ShowSuccessMessage("LYNC_UPDATEPLANS");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -503,6 +549,39 @@ namespace WebsitePanel.Portal
|
|||
BindPlans();
|
||||
}
|
||||
|
||||
protected void btnAccept_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
string name = tbTelephoneProvider.Text;
|
||||
|
||||
if (string.IsNullOrEmpty(name)) return;
|
||||
|
||||
ddTelephonyDialPlanPolicy.Items.Clear();
|
||||
string[] dialPlan = ES.Services.Lync.GetPolicyList(-1, LyncPolicyType.DialPlan, name);
|
||||
if (dialPlan != null)
|
||||
{
|
||||
foreach (string policy in dialPlan)
|
||||
{
|
||||
if (policy.ToLower() == "global") continue;
|
||||
string txt = policy.Replace("Tag:", "");
|
||||
ddTelephonyDialPlanPolicy.Items.Add(new System.Web.UI.WebControls.ListItem(txt, policy));
|
||||
}
|
||||
}
|
||||
|
||||
ddTelephonyVoicePolicy.Items.Clear();
|
||||
string[] voicePolicy = ES.Services.Lync.GetPolicyList(-1, LyncPolicyType.Voice, name);
|
||||
if (voicePolicy != null)
|
||||
{
|
||||
foreach (string policy in voicePolicy)
|
||||
{
|
||||
if (policy.ToLower() == "global") continue;
|
||||
string txt = policy.Replace("Tag:", "");
|
||||
ddTelephonyVoicePolicy.Items.Add(new System.Web.UI.WebControls.ListItem(txt, policy));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) 2012, Outercurve Foundation.
|
||||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
|
@ -34,7 +34,6 @@
|
|||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal {
|
||||
|
||||
|
||||
|
@ -139,15 +138,6 @@ namespace WebsitePanel.Portal {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkMobility;
|
||||
|
||||
/// <summary>
|
||||
/// chkFederation 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 chkFederation;
|
||||
|
||||
/// <summary>
|
||||
/// chkConferencing control.
|
||||
/// </summary>
|
||||
|
@ -167,67 +157,256 @@ namespace WebsitePanel.Portal {
|
|||
protected global::System.Web.UI.WebControls.CheckBox chkEnterpriseVoice;
|
||||
|
||||
/// <summary>
|
||||
/// secEnterpriseVoice control.
|
||||
/// secPlanFeaturesFederation control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secEnterpriseVoice;
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secPlanFeaturesFederation;
|
||||
|
||||
/// <summary>
|
||||
/// EnterpriseVoice control.
|
||||
/// PlanFeaturesFederation 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.Panel EnterpriseVoice;
|
||||
protected global::System.Web.UI.WebControls.Panel PlanFeaturesFederation;
|
||||
|
||||
/// <summary>
|
||||
/// chkNone control.
|
||||
/// chkFederation control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkNone;
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkFederation;
|
||||
|
||||
/// <summary>
|
||||
/// chkEmergency control.
|
||||
/// chkRemoteUserAccess control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkEmergency;
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkRemoteUserAccess;
|
||||
|
||||
/// <summary>
|
||||
/// chkNational control.
|
||||
/// chkPublicIMConnectivity control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkNational;
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkPublicIMConnectivity;
|
||||
|
||||
/// <summary>
|
||||
/// chkMobile control.
|
||||
/// secPlanFeaturesArchiving control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkMobile;
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secPlanFeaturesArchiving;
|
||||
|
||||
/// <summary>
|
||||
/// chkInternational control.
|
||||
/// PlanFeaturesArchiving control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton chkInternational;
|
||||
protected global::System.Web.UI.WebControls.Panel PlanFeaturesArchiving;
|
||||
|
||||
/// <summary>
|
||||
/// locArchivingPolicy control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locArchivingPolicy;
|
||||
|
||||
/// <summary>
|
||||
/// ddArchivingPolicy 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.DropDownList ddArchivingPolicy;
|
||||
|
||||
/// <summary>
|
||||
/// secPlanFeaturesMeeting control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secPlanFeaturesMeeting;
|
||||
|
||||
/// <summary>
|
||||
/// PlanFeaturesMeeting 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.Panel PlanFeaturesMeeting;
|
||||
|
||||
/// <summary>
|
||||
/// chkAllowOrganizeMeetingsWithExternalAnonymous 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 chkAllowOrganizeMeetingsWithExternalAnonymous;
|
||||
|
||||
/// <summary>
|
||||
/// secPlanFeaturesTelephony control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secPlanFeaturesTelephony;
|
||||
|
||||
/// <summary>
|
||||
/// PlanFeaturesTelephony 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.Panel PlanFeaturesTelephony;
|
||||
|
||||
/// <summary>
|
||||
/// locTelephony control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTelephony;
|
||||
|
||||
/// <summary>
|
||||
/// ddTelephony 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.DropDownList ddTelephony;
|
||||
|
||||
/// <summary>
|
||||
/// pnEnterpriseVoice 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.Panel pnEnterpriseVoice;
|
||||
|
||||
/// <summary>
|
||||
/// locTelephonyProvider control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTelephonyProvider;
|
||||
|
||||
/// <summary>
|
||||
/// tbTelephoneProvider 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 tbTelephoneProvider;
|
||||
|
||||
/// <summary>
|
||||
/// btnAccept 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 btnAccept;
|
||||
|
||||
/// <summary>
|
||||
/// AcceptRequiredValidator 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 AcceptRequiredValidator;
|
||||
|
||||
/// <summary>
|
||||
/// locDialPlan control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locDialPlan;
|
||||
|
||||
/// <summary>
|
||||
/// ddTelephonyDialPlanPolicy 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.DropDownList ddTelephonyDialPlanPolicy;
|
||||
|
||||
/// <summary>
|
||||
/// locVoicePolicy control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locVoicePolicy;
|
||||
|
||||
/// <summary>
|
||||
/// ddTelephonyVoicePolicy 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.DropDownList ddTelephonyVoicePolicy;
|
||||
|
||||
/// <summary>
|
||||
/// pnServerURI 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.Panel pnServerURI;
|
||||
|
||||
/// <summary>
|
||||
/// locServerURI control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locServerURI;
|
||||
|
||||
/// <summary>
|
||||
/// tbServerURI 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 tbServerURI;
|
||||
|
||||
/// <summary>
|
||||
/// btnAddPlan control.
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AllocatePackagePhoneNumbers.ascx.cs" Inherits="WebsitePanel.Portal.UserControls.AllocatePackagePhoneNumbers" %>
|
||||
<%@ Register Src="SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
|
||||
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
|
||||
<asp:ValidationSummary ID="validatorsSummary" runat="server"
|
||||
ValidationGroup="AddAddress" ShowMessageBox="True" ShowSummary="False" />
|
||||
|
||||
<ul id="ErrorMessagesList" runat="server" visible="false">
|
||||
<li id="EmptyAddressesMessage" runat="server">
|
||||
<asp:Localize ID="locNotEnoughAddresses" runat="server" Text="Not enough..." meta:resourcekey="locNotEnoughAddresses"></asp:Localize>
|
||||
</li>
|
||||
<li id="QuotaReachedMessage" runat="server">
|
||||
<asp:Localize ID="locQuotaReached" runat="server" Text="Quota reached..." meta:resourcekey="locQuotaReached"></asp:Localize>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<asp:UpdatePanel runat="server" ID="AddressesTable" UpdateMode="Conditional">
|
||||
<ContentTemplate>
|
||||
<table cellspacing="5" style="width: 100%;">
|
||||
<tr>
|
||||
<td>
|
||||
<asp:RadioButton ID="radioExternalRandom" runat="server" AutoPostBack="true"
|
||||
meta:resourcekey="radioExternalRandom" Text="Randomly select phone Numbers from the pool"
|
||||
Checked="True" GroupName="ExternalAddress"
|
||||
oncheckedchanged="radioExternalRandom_CheckedChanged" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="AddressesNumberRow" runat="server">
|
||||
<td style="padding-left: 30px;">
|
||||
<asp:Localize ID="locExternalAddresses" runat="server"
|
||||
meta:resourcekey="locExternalAddresses" Text="Number of Phone Numbers:"></asp:Localize>
|
||||
|
||||
<asp:TextBox ID="txtExternalAddressesNumber" runat="server" CssClass="NormalTextBox" Width="50"></asp:TextBox>
|
||||
|
||||
<asp:RequiredFieldValidator ID="ExternalAddressesValidator" runat="server" Text="*" Display="Dynamic"
|
||||
ControlToValidate="txtExternalAddressesNumber" meta:resourcekey="ExternalAddressesValidator" SetFocusOnError="true"
|
||||
ValidationGroup="AddAddress">*</asp:RequiredFieldValidator>
|
||||
|
||||
<asp:Literal ID="litMaxAddresses" runat="server"></asp:Literal>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:RadioButton ID="radioExternalSelected" runat="server" AutoPostBack="true"
|
||||
meta:resourcekey="radioExternalSelected" Text="Select PHone Number from the list"
|
||||
GroupName="ExternalAddress"
|
||||
oncheckedchanged="radioExternalSelected_CheckedChanged" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="AddressesListRow" runat="server">
|
||||
<td style="padding-left: 30px;">
|
||||
<asp:ListBox ID="listExternalAddresses" SelectionMode="Multiple" runat="server" Rows="8"
|
||||
CssClass="NormalTextBox" Width="220" style="height:100px;" ></asp:ListBox>
|
||||
<br />
|
||||
<asp:Localize ID="locHoldCtrl" runat="server"
|
||||
meta:resourcekey="locHoldCtrl" Text="* Hold CTRL key to select multiple phone numbers" ></asp:Localize>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
<p>
|
||||
<asp:Button ID="btnAdd" runat="server" meta:resourcekey="btnAdd"
|
||||
ValidationGroup="AddAddress" Text="Add" CssClass="Button1"
|
||||
onclick="btnAdd_Click" />
|
||||
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel"
|
||||
CausesValidation="false" Text="Cancel" CssClass="Button1"
|
||||
onclick="btnCancel_Click" />
|
||||
</p>
|
|
@ -0,0 +1,174 @@
|
|||
// 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.Providers.Common;
|
||||
|
||||
namespace WebsitePanel.Portal.UserControls
|
||||
{
|
||||
public partial class AllocatePackagePhoneNumbers : WebsitePanelControlBase
|
||||
{
|
||||
private IPAddressPool pool;
|
||||
public IPAddressPool Pool
|
||||
{
|
||||
get { return pool; }
|
||||
set { pool = value; }
|
||||
}
|
||||
|
||||
private string listAddressesControl;
|
||||
public string ListAddressesControl
|
||||
{
|
||||
get { return listAddressesControl; }
|
||||
set { listAddressesControl = value; }
|
||||
}
|
||||
|
||||
private string resourceGroup;
|
||||
public string ResourceGroup
|
||||
{
|
||||
get { return resourceGroup; }
|
||||
set { resourceGroup = value; }
|
||||
}
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
BindIPAddresses();
|
||||
ToggleControls();
|
||||
}
|
||||
}
|
||||
|
||||
private void BindIPAddresses()
|
||||
{
|
||||
bool vps = (Pool == IPAddressPool.VpsExternalNetwork || Pool == IPAddressPool.VpsManagementNetwork);
|
||||
|
||||
// bind list
|
||||
IPAddressInfo[] ips = ES.Services.Servers.GetUnallottedIPAddresses(PanelSecurity.PackageId, ResourceGroup, Pool);
|
||||
foreach (IPAddressInfo ip in ips)
|
||||
{
|
||||
string txt = ip.ExternalIP;
|
||||
|
||||
// web sites - NAT Address
|
||||
if (!vps && !String.IsNullOrEmpty(ip.InternalIP))
|
||||
txt += "/" + ip.InternalIP;
|
||||
|
||||
// VPS - Gateway Address
|
||||
else if (vps && !String.IsNullOrEmpty(ip.DefaultGateway))
|
||||
txt += "/" + ip.DefaultGateway;
|
||||
|
||||
listExternalAddresses.Items.Add(new ListItem(txt, ip.AddressId.ToString()));
|
||||
}
|
||||
|
||||
int quotaAllowed = -1;
|
||||
string quotaName = (String.Compare(ResourceGroup, ResourceGroups.VPS, true) == 0) ? Quotas.VPS_EXTERNAL_IP_ADDRESSES_NUMBER : Quotas.WEB_IP_ADDRESSES;
|
||||
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||
if (cntx.Quotas.ContainsKey(quotaName))
|
||||
{
|
||||
int quotaAllocated = cntx.Quotas[quotaName].QuotaAllocatedValue;
|
||||
int quotaUsed = cntx.Quotas[quotaName].QuotaUsedValue;
|
||||
|
||||
if (quotaAllocated != -1)
|
||||
quotaAllowed = quotaAllocated - quotaUsed;
|
||||
}
|
||||
|
||||
// bind controls
|
||||
int max = quotaAllowed == -1 ? listExternalAddresses.Items.Count : quotaAllowed;
|
||||
|
||||
txtExternalAddressesNumber.Text = max.ToString();
|
||||
litMaxAddresses.Text = String.Format(GetLocalizedString("litMaxAddresses.Text"), max);
|
||||
|
||||
if (max == 0)
|
||||
{
|
||||
AddressesTable.Visible = false;
|
||||
ErrorMessagesList.Visible = true;
|
||||
EmptyAddressesMessage.Visible = (listExternalAddresses.Items.Count == 0);
|
||||
QuotaReachedMessage.Visible = (quotaAllowed == 0);
|
||||
btnAdd.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<int> ids = new List<int>();
|
||||
foreach (ListItem item in listExternalAddresses.Items)
|
||||
{
|
||||
if (item.Selected)
|
||||
ids.Add(Utils.ParseInt(item.Value));
|
||||
}
|
||||
|
||||
ResultObject res = ES.Services.Servers.AllocatePackageIPAddresses(PanelSecurity.PackageId,
|
||||
ResourceGroup, Pool,
|
||||
radioExternalRandom.Checked,
|
||||
Utils.ParseInt(txtExternalAddressesNumber.Text),
|
||||
ids.ToArray());
|
||||
if (res.IsSuccess)
|
||||
{
|
||||
// return back
|
||||
Response.Redirect(HostModule.EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), ListAddressesControl));
|
||||
}
|
||||
else
|
||||
{
|
||||
// show message
|
||||
messageBox.ShowMessage(res, "VPS_ALLOCATE_EXTERNAL_ADDRESSES_ERROR", "VPS");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
messageBox.ShowErrorMessage("VPS_ALLOCATE_EXTERNAL_ADDRESSES_ERROR", ex);
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Response.Redirect(HostModule.EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), ListAddressesControl));
|
||||
}
|
||||
|
||||
protected void radioExternalSelected_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ToggleControls();
|
||||
}
|
||||
|
||||
private void ToggleControls()
|
||||
{
|
||||
AddressesNumberRow.Visible = radioExternalRandom.Checked;
|
||||
AddressesListRow.Visible = radioExternalSelected.Checked;
|
||||
}
|
||||
|
||||
protected void radioExternalRandom_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ToggleControls();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,243 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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.UserControls {
|
||||
|
||||
|
||||
public partial class AllocatePackagePhoneNumbers {
|
||||
|
||||
/// <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>
|
||||
/// validatorsSummary 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.ValidationSummary validatorsSummary;
|
||||
|
||||
/// <summary>
|
||||
/// ErrorMessagesList control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlGenericControl ErrorMessagesList;
|
||||
|
||||
/// <summary>
|
||||
/// EmptyAddressesMessage control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlGenericControl EmptyAddressesMessage;
|
||||
|
||||
/// <summary>
|
||||
/// locNotEnoughAddresses control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locNotEnoughAddresses;
|
||||
|
||||
/// <summary>
|
||||
/// QuotaReachedMessage control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlGenericControl QuotaReachedMessage;
|
||||
|
||||
/// <summary>
|
||||
/// locQuotaReached control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locQuotaReached;
|
||||
|
||||
/// <summary>
|
||||
/// AddressesTable control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.UpdatePanel AddressesTable;
|
||||
|
||||
/// <summary>
|
||||
/// radioExternalRandom control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton radioExternalRandom;
|
||||
|
||||
/// <summary>
|
||||
/// AddressesNumberRow control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlTableRow AddressesNumberRow;
|
||||
|
||||
/// <summary>
|
||||
/// locExternalAddresses control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locExternalAddresses;
|
||||
|
||||
/// <summary>
|
||||
/// txtExternalAddressesNumber 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 txtExternalAddressesNumber;
|
||||
|
||||
/// <summary>
|
||||
/// ExternalAddressesValidator 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 ExternalAddressesValidator;
|
||||
|
||||
/// <summary>
|
||||
/// litMaxAddresses 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.Literal litMaxAddresses;
|
||||
|
||||
/// <summary>
|
||||
/// radioExternalSelected control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton radioExternalSelected;
|
||||
|
||||
/// <summary>
|
||||
/// AddressesListRow control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlTableRow AddressesListRow;
|
||||
|
||||
/// <summary>
|
||||
/// listExternalAddresses 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.ListBox listExternalAddresses;
|
||||
|
||||
/// <summary>
|
||||
/// locHoldCtrl control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locHoldCtrl;
|
||||
|
||||
/// <summary>
|
||||
/// btnAdd 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 btnAdd;
|
||||
|
||||
/// <summary>
|
||||
/// btnCancel 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 btnCancel;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
<?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="btnAdd.Text" xml:space="preserve">
|
||||
<value>Add</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="ExternalAddressesValidator.ErrorMessage" xml:space="preserve">
|
||||
<value>Enter the number of Phone Numbers</value>
|
||||
</data>
|
||||
<data name="litMaxAddresses.Text" xml:space="preserve">
|
||||
<value>({0} max)</value>
|
||||
</data>
|
||||
<data name="locExternalAddresses.Text" xml:space="preserve">
|
||||
<value>Number of Phone Numbers:</value>
|
||||
</data>
|
||||
<data name="locHoldCtrl.Text" xml:space="preserve">
|
||||
<value>* Hold CTRL key to select multiple phone numbers</value>
|
||||
</data>
|
||||
<data name="locNotEnoughAddresses.Text" xml:space="preserve">
|
||||
<value>The pool of Phone Numbers is empty.<br/>Allocate more Phone Numbers on reseller level. If the current hosting space is nested within "System" space then add more server Phone Numbers to the appropriate pool on "Configuration -> Phone Numbers" page.</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Allocate Phone Numbers</value>
|
||||
</data>
|
||||
<data name="radioExternalRandom.Text" xml:space="preserve">
|
||||
<value>Randomly select Phone Numbers from the pool</value>
|
||||
</data>
|
||||
<data name="radioExternalSelected.Text" xml:space="preserve">
|
||||
<value>Select Phone Numbers from the list</value>
|
||||
</data>
|
||||
<data name="locQuotaReached.Text" xml:space="preserve">
|
||||
<value>Phone Numbers quota has been reached.</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,165 @@
|
|||
<?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="btnAllocateAddress.Text" xml:space="preserve">
|
||||
<value>Allocate...</value>
|
||||
</data>
|
||||
<data name="btnDeallocateAddresses.Text" xml:space="preserve">
|
||||
<value>Deallocate Selected</value>
|
||||
</data>
|
||||
<data name="gvAddresses.Empty" xml:space="preserve">
|
||||
<value>No Phone Numbers have been allocated to this hosting space.</value>
|
||||
</data>
|
||||
<data name="gvAddressesDefaultGateway.HeaderText" xml:space="preserve">
|
||||
<value>Gateway</value>
|
||||
</data>
|
||||
<data name="gvAddressesIPAddress.HeaderText" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
<data name="gvAddressesItemName.HeaderText" xml:space="preserve">
|
||||
<value>Item Name</value>
|
||||
</data>
|
||||
<data name="gvAddressesPrimary.HeaderText" xml:space="preserve">
|
||||
<value>Primary</value>
|
||||
</data>
|
||||
<data name="gvAddressesSpace.HeaderText" xml:space="preserve">
|
||||
<value>Space</value>
|
||||
</data>
|
||||
<data name="gvAddressesSubnetMask.HeaderText" xml:space="preserve">
|
||||
<value>Subnet Mask</value>
|
||||
</data>
|
||||
<data name="gvAddressesUser.HeaderText" xml:space="preserve">
|
||||
<value>User</value>
|
||||
</data>
|
||||
<data name="SearchField.DefaultGateway" xml:space="preserve">
|
||||
<value>Default Gateway</value>
|
||||
</data>
|
||||
<data name="SearchField.IPAddress" xml:space="preserve">
|
||||
<value>Phone Numbers</value>
|
||||
</data>
|
||||
<data name="SearchField.ItemName" xml:space="preserve">
|
||||
<value>Item Name</value>
|
||||
</data>
|
||||
<data name="SearchField.Username" xml:space="preserve">
|
||||
<value>User Name</value>
|
||||
</data>
|
||||
<data name="btnDeallocateAddresses.OnClientClick" xml:space="preserve">
|
||||
<value>return confirm('Deallocate selected Phone Numbers from hosting space?');</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,87 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PackagePhoneNumbers.ascx.cs" Inherits="WebsitePanel.Portal.UserControls.PackagePhoneNumbers" %>
|
||||
<%@ Register Src="SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
<%@ Register Src="SearchBox.ascx" TagName="SearchBox" TagPrefix="wsp" %>
|
||||
|
||||
|
||||
<script language="javascript">
|
||||
function SelectAllCheckboxes(box) {
|
||||
var state = box.checked;
|
||||
var elm = box.parentElement.parentElement.parentElement.parentElement.getElementsByTagName("INPUT");
|
||||
for (i = 0; i < elm.length; i++)
|
||||
if (elm[i].type == "checkbox" && elm[i].id != box.id && elm[i].checked != state && !elm[i].disabled)
|
||||
elm[i].checked = state;
|
||||
}
|
||||
</script>
|
||||
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
|
||||
<div class="FormButtonsBarClean">
|
||||
<div class="FormButtonsBarCleanLeft">
|
||||
<asp:Button ID="btnAllocateAddress" runat="server" meta:resourcekey="btnAllocateAddress"
|
||||
Text="Allocate IP Addresses" CssClass="Button1" CausesValidation="False"
|
||||
onclick="btnAllocateAddress_Click" />
|
||||
</div>
|
||||
<div class="FormButtonsBarCleanRight">
|
||||
<wsp:SearchBox ID="searchBox" runat="server" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<asp:GridView ID="gvAddresses" runat="server" AutoGenerateColumns="False"
|
||||
Width="100%" EmptyDataText="gvAddresses" CssSelectorClass="NormalGridView"
|
||||
AllowPaging="True" AllowSorting="True" DataSourceID="odsExternalAddressesPaged"
|
||||
onrowdatabound="gvAddresses_RowDataBound" DataKeyNames="PackageAddressID" >
|
||||
<Columns>
|
||||
<asp:TemplateField>
|
||||
<HeaderTemplate>
|
||||
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||
</HeaderTemplate>
|
||||
<ItemTemplate>
|
||||
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
|
||||
<asp:BoundField HeaderText="gvAddressesIPAddress" meta:resourcekey="gvAddressesIPAddress"
|
||||
DataField="ExternalIP" SortExpression="ExternalIP" />
|
||||
|
||||
<asp:TemplateField HeaderText="gvAddressesItemName" meta:resourcekey="gvAddressesItemName" SortExpression="ItemName">
|
||||
<ItemTemplate>
|
||||
<asp:hyperlink id="lnkEdit" runat="server" NavigateUrl='<%# GetItemEditUrl(Eval("ItemID").ToString()) %>'>
|
||||
<%# Eval("ItemName") %>
|
||||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
|
||||
<asp:TemplateField HeaderText="gvAddressesSpace" meta:resourcekey="gvAddressesSpace" SortExpression="PackageName" >
|
||||
<ItemTemplate>
|
||||
<asp:hyperlink id="lnkSpace" runat="server" NavigateUrl='<%# GetSpaceHomeUrl(Eval("PackageID").ToString()) %>'>
|
||||
<%# Eval("PackageName") %>
|
||||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField HeaderText="gvAddressesUser" meta:resourcekey="gvAddressesUser" SortExpression="Username" >
|
||||
<ItemTemplate>
|
||||
<%# Eval("UserName") %>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
</Columns>
|
||||
</asp:GridView>
|
||||
<asp:ObjectDataSource ID="odsExternalAddressesPaged" runat="server" EnablePaging="True"
|
||||
SelectCountMethod="GetPackageIPAddressesCount"
|
||||
SelectMethod="GetPackageIPAddresses"
|
||||
SortParameterName="sortColumn"
|
||||
TypeName="WebsitePanel.Portal.VirtualMachinesHelper"
|
||||
OnSelected="odsExternalAddressesPaged_Selected"
|
||||
onselecting="odsExternalAddressesPaged_Selecting">
|
||||
<SelectParameters>
|
||||
<asp:QueryStringParameter Name="packageId" QueryStringField="SpaceID" DefaultValue="0" />
|
||||
<asp:Parameter Name="pool" DefaultValue="0" />
|
||||
<asp:ControlParameter Name="filterColumn" ControlID="searchBox" PropertyName="FilterColumn" />
|
||||
<asp:ControlParameter Name="filterValue" ControlID="searchBox" PropertyName="FilterValue" />
|
||||
</SelectParameters>
|
||||
</asp:ObjectDataSource>
|
||||
|
||||
<div style="margin-top:4px;">
|
||||
<asp:Button ID="btnDeallocateAddresses" runat="server" meta:resourcekey="btnDeallocateAddresses"
|
||||
Text="Deallocate selected" CssClass="SmallButton" CausesValidation="False"
|
||||
onclick="btnDeallocateAddresses_Click" />
|
||||
</div>
|
|
@ -0,0 +1,172 @@
|
|||
// 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.Providers.Common;
|
||||
|
||||
namespace WebsitePanel.Portal.UserControls
|
||||
{
|
||||
public partial class PackagePhoneNumbers : WebsitePanelControlBase
|
||||
{
|
||||
private bool spaceOwner;
|
||||
|
||||
private IPAddressPool pool;
|
||||
public IPAddressPool Pool
|
||||
{
|
||||
get { return pool; }
|
||||
set { pool = value; }
|
||||
}
|
||||
|
||||
private string editItemControl;
|
||||
public string EditItemControl
|
||||
{
|
||||
get { return editItemControl; }
|
||||
set { editItemControl = value; }
|
||||
}
|
||||
|
||||
private string spaceHomeControl;
|
||||
public string SpaceHomeControl
|
||||
{
|
||||
get { return spaceHomeControl; }
|
||||
set { spaceHomeControl = value; }
|
||||
}
|
||||
|
||||
private string allocateAddressesControl;
|
||||
public string AllocateAddressesControl
|
||||
{
|
||||
get { return allocateAddressesControl; }
|
||||
set { allocateAddressesControl = value; }
|
||||
}
|
||||
|
||||
public bool ManageAllowed
|
||||
{
|
||||
get { return ViewState["ManageAllowed"] != null ? (bool)ViewState["ManageAllowed"] : false; }
|
||||
set { ViewState["ManageAllowed"] = value; }
|
||||
}
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
searchBox.AddCriteria("ExternalIP", GetLocalizedString("SearchField.IPAddress"));
|
||||
searchBox.AddCriteria("ItemName", GetLocalizedString("SearchField.ItemName"));
|
||||
searchBox.AddCriteria("Username", GetLocalizedString("SearchField.Username"));
|
||||
}
|
||||
|
||||
bool isUserSelected = PanelSecurity.SelectedUser.Role == WebsitePanel.EnterpriseServer.UserRole.User;
|
||||
bool isUserLogged = PanelSecurity.EffectiveUser.Role == WebsitePanel.EnterpriseServer.UserRole.User;
|
||||
spaceOwner = PanelSecurity.EffectiveUserId == PanelSecurity.SelectedUserId;
|
||||
|
||||
gvAddresses.Columns[3].Visible = !isUserSelected; // space
|
||||
gvAddresses.Columns[4].Visible = !isUserSelected; // user
|
||||
|
||||
// managing external network permissions
|
||||
gvAddresses.Columns[0].Visible = !isUserLogged && ManageAllowed;
|
||||
btnAllocateAddress.Visible = !isUserLogged && !spaceOwner && ManageAllowed && !String.IsNullOrEmpty(AllocateAddressesControl);
|
||||
btnDeallocateAddresses.Visible = !isUserLogged && ManageAllowed;
|
||||
}
|
||||
|
||||
public string GetItemEditUrl(string itemID)
|
||||
{
|
||||
return HostModule.EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), EditItemControl,
|
||||
"ItemID=" + itemID);
|
||||
}
|
||||
|
||||
public string GetSpaceHomeUrl(string spaceId)
|
||||
{
|
||||
return HostModule.EditUrl("SpaceID", spaceId, SpaceHomeControl);
|
||||
}
|
||||
|
||||
protected void odsExternalAddressesPaged_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
||||
{
|
||||
if (e.Exception != null)
|
||||
{
|
||||
messageBox.ShowErrorMessage("EXCHANGE_GET_MAILBOXES", e.Exception);
|
||||
e.ExceptionHandled = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnAllocateAddress_Click(object sender, EventArgs e)
|
||||
{
|
||||
Response.Redirect(HostModule.EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), AllocateAddressesControl));
|
||||
}
|
||||
|
||||
protected void gvAddresses_RowDataBound(object sender, GridViewRowEventArgs e)
|
||||
{
|
||||
PackageIPAddress item = e.Row.DataItem as PackageIPAddress;
|
||||
if (item != null)
|
||||
{
|
||||
// checkbox
|
||||
CheckBox chkSelect = e.Row.FindControl("chkSelect") as CheckBox;
|
||||
chkSelect.Enabled = (!spaceOwner || (PanelSecurity.PackageId != item.PackageId)) && item.ItemId == 0;
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnDeallocateAddresses_Click(object sender, EventArgs e)
|
||||
{
|
||||
List<int> ids = new List<int>();
|
||||
|
||||
try
|
||||
{
|
||||
List<int> items = new List<int>();
|
||||
for (int i = 0; i < gvAddresses.Rows.Count; i++)
|
||||
{
|
||||
GridViewRow row = gvAddresses.Rows[i];
|
||||
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||
if (chkSelect.Checked)
|
||||
items.Add((int)gvAddresses.DataKeys[i].Value);
|
||||
}
|
||||
|
||||
// check if at least one is selected
|
||||
if (items.Count == 0)
|
||||
{
|
||||
messageBox.ShowWarningMessage("PHONE_EDIT_LIST_EMPTY_ERROR");
|
||||
return;
|
||||
}
|
||||
|
||||
ResultObject res = ES.Services.Servers.DeallocatePackageIPAddresses(PanelSecurity.PackageId, items.ToArray());
|
||||
messageBox.ShowMessage(res, "DEALLOCATE_SPACE_PHONE_NUMBER", "VPS");
|
||||
gvAddresses.DataBind();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
messageBox.ShowErrorMessage("DEALLOCATE_SPACE_PHONE_NUMBER", ex);
|
||||
}
|
||||
}
|
||||
|
||||
protected void odsExternalAddressesPaged_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
|
||||
{
|
||||
e.InputParameters["pool"] = Pool;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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.UserControls {
|
||||
|
||||
|
||||
public partial class PackagePhoneNumbers {
|
||||
|
||||
/// <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>
|
||||
/// btnAllocateAddress 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 btnAllocateAddress;
|
||||
|
||||
/// <summary>
|
||||
/// searchBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.SearchBox searchBox;
|
||||
|
||||
/// <summary>
|
||||
/// gvAddresses 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.GridView gvAddresses;
|
||||
|
||||
/// <summary>
|
||||
/// odsExternalAddressesPaged 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.ObjectDataSource odsExternalAddressesPaged;
|
||||
|
||||
/// <summary>
|
||||
/// btnDeallocateAddresses 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 btnDeallocateAddresses;
|
||||
}
|
||||
}
|
|
@ -38,7 +38,6 @@ namespace WebsitePanel.Portal
|
|||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -461,6 +461,20 @@
|
|||
<Compile Include="UserControls\OrgIdPolicyEditor.ascx.designer.cs">
|
||||
<DependentUpon>OrgIdPolicyEditor.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\PackagePhoneNumbers.ascx.cs">
|
||||
<DependentUpon>PackagePhoneNumbers.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\PackagePhoneNumbers.ascx.designer.cs">
|
||||
<DependentUpon>PackagePhoneNumbers.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\AllocatePackagePhoneNumbers.ascx.cs">
|
||||
<DependentUpon>AllocatePackagePhoneNumbers.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\AllocatePackagePhoneNumbers.ascx.designer.cs">
|
||||
<DependentUpon>AllocatePackagePhoneNumbers.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="VPSForPC\MonitoringPage.aspx.cs">
|
||||
<DependentUpon>MonitoringPage.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
|
@ -3879,6 +3893,41 @@
|
|||
<Compile Include="WebsitesSSL.ascx.designer.cs">
|
||||
<DependentUpon>WebsitesSSL.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LyncPhoneNumbers.ascx.cs">
|
||||
<DependentUpon>LyncPhoneNumbers.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LyncPhoneNumbers.ascx.designer.cs">
|
||||
<DependentUpon>LyncPhoneNumbers.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LyncAllocatePhoneNumbers.ascx.cs">
|
||||
<DependentUpon>LyncAllocatePhoneNumbers.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LyncAllocatePhoneNumbers.ascx.designer.cs">
|
||||
<DependentUpon>LyncAllocatePhoneNumbers.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PhoneNumbers.ascx.cs">
|
||||
<DependentUpon>PhoneNumbers.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PhoneNumbers.ascx.designer.cs">
|
||||
<DependentUpon>PhoneNumbers.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PhoneNumbersAddPhoneNumber.ascx.cs">
|
||||
<DependentUpon>PhoneNumbersAddPhoneNumber.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PhoneNumbersAddPhoneNumber.ascx.designer.cs">
|
||||
<DependentUpon>PhoneNumbersAddPhoneNumber.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PhoneNumbersEditPhoneNumber.ascx.cs">
|
||||
<DependentUpon>PhoneNumbersEditPhoneNumber.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PhoneNumbersEditPhoneNumber.ascx.designer.cs">
|
||||
<DependentUpon>PhoneNumbersEditPhoneNumber.ascx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="ApplyEnableHardQuotaFeature.ascx" />
|
||||
|
@ -3918,6 +3967,8 @@
|
|||
<Content Include="SettingsLyncUserPlansPolicy.ascx" />
|
||||
<Content Include="UserControls\EditFeedsList.ascx" />
|
||||
<Content Include="UserControls\OrgIdPolicyEditor.ascx" />
|
||||
<Content Include="UserControls\PackagePhoneNumbers.ascx" />
|
||||
<Content Include="UserControls\AllocatePackagePhoneNumbers.ascx" />
|
||||
<Content Include="VPSForPC\MonitoringPage.aspx" />
|
||||
<Content Include="VPSForPC\VdcAccountVLanAdd.ascx" />
|
||||
<Content Include="VPSForPC\VdcAccountVLanNetwork.ascx" />
|
||||
|
@ -3980,6 +4031,11 @@
|
|||
<Content Include="UserControls\UsernameControl.ascx" />
|
||||
<Content Include="WebSitesHeliconZooControl.ascx" />
|
||||
<Content Include="WebsitesSSL.ascx" />
|
||||
<Content Include="LyncPhoneNumbers.ascx" />
|
||||
<Content Include="LyncAllocatePhoneNumbers.ascx" />
|
||||
<Content Include="PhoneNumbers.ascx" />
|
||||
<Content Include="PhoneNumbersAddPhoneNumber.ascx" />
|
||||
<Content Include="PhoneNumbersEditPhoneNumber.ascx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_LocalResources\BandwidthReport.ascx.resx">
|
||||
|
@ -5061,6 +5117,12 @@
|
|||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="UserControls\App_LocalResources\OrgIdPolicyEditor.ascx.resx" />
|
||||
<Content Include="UserControls\App_LocalResources\PackagePhoneNumbers.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="UserControls\App_LocalResources\AllocatePackagePhoneNumbers.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<None Include="Resources\Windows2008_Settings.ascx.resx" />
|
||||
<Content Include="App_LocalResources\WebSitesHeliconZooControl.ascx.resx" />
|
||||
<Content Include="ExchangeServer\App_LocalResources\ExchangeDisclaimers.ascx.resx">
|
||||
|
@ -5072,6 +5134,15 @@
|
|||
<Content Include="ExchangeServer\App_LocalResources\ExchangeDistributionListMemberOf.ascx.resx" />
|
||||
<Content Include="ExchangeServer\App_LocalResources\ExchangeMailboxMemberOf.ascx.resx" />
|
||||
<Content Include="ExchangeServer\App_LocalResources\OrganizationUserMemberOf.ascx.resx" />
|
||||
<Content Include="App_LocalResources\LyncPhoneNumbers.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="App_LocalResources\LyncAllocatePhoneNumbers.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="App_LocalResources\PhoneNumbers.ascx.resx" />
|
||||
<Content Include="App_LocalResources\PhoneNumbersAddPhoneNumber.ascx.resx" />
|
||||
<Content Include="App_LocalResources\PhoneNumbersEditPhoneNumber.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