Merge
This commit is contained in:
commit
8ef92516ae
77 changed files with 9416 additions and 2924 deletions
|
@ -310,10 +310,10 @@ function websitepanel_ChangePassword($params)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Attempt to change the user's account password
|
// Attempt to change the user's account password
|
||||||
$result = $wsp->change_user_password($user['UserId'], $password);
|
$result = $wsp->changeUserPassword($user['UserId'], $password);
|
||||||
if ($result >= 0)
|
if ($result >= 0)
|
||||||
{
|
{
|
||||||
// Log this action for logging / tracking purposes incase the client complains we have record of what went on and why
|
// Log this action for logging / tracking purposes incase the client complains we have record of what went on and why
|
||||||
logActivity("Control Panel Password Updated - Service ID: {$serviceId}", $userId);
|
logActivity("Control Panel Password Updated - Service ID: {$serviceId}", $userId);
|
||||||
|
|
||||||
// Success - Alert WHMCS
|
// Success - Alert WHMCS
|
||||||
|
|
|
@ -1637,6 +1637,13 @@ IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE ([QuotaName] = N'Exchange2007.
|
||||||
BEGIN
|
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)
|
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
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
--add SecurityGroupManagement Quota
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedSolution.SecurityGroupManagement')
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) VALUES (423, 13, 5, N'HostedSolution.SecurityGroupManagement', N'Allow Security Group Management', 1, 0, NULL, NULL)
|
||||||
|
END
|
||||||
GO
|
GO
|
||||||
|
|
||||||
-- Lync Enterprise Voice
|
-- Lync Enterprise Voice
|
||||||
|
@ -2098,3 +2105,133 @@ AS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ALTER PROCEDURE [dbo].[SearchExchangeAccounts]
|
||||||
|
(
|
||||||
|
@ActorID int,
|
||||||
|
@ItemID int,
|
||||||
|
@IncludeMailboxes bit,
|
||||||
|
@IncludeContacts bit,
|
||||||
|
@IncludeDistributionLists bit,
|
||||||
|
@IncludeRooms bit,
|
||||||
|
@IncludeEquipment bit,
|
||||||
|
@IncludeSecurityGroups bit,
|
||||||
|
@FilterColumn nvarchar(50) = '',
|
||||||
|
@FilterValue nvarchar(50) = '',
|
||||||
|
@SortColumn nvarchar(50)
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
DECLARE @PackageID int
|
||||||
|
SELECT @PackageID = PackageID FROM ServiceItems
|
||||||
|
WHERE ItemID = @ItemID
|
||||||
|
|
||||||
|
-- check rights
|
||||||
|
IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
|
||||||
|
RAISERROR('You are not allowed to access this package', 16, 1)
|
||||||
|
|
||||||
|
-- start
|
||||||
|
DECLARE @condition nvarchar(700)
|
||||||
|
SET @condition = '
|
||||||
|
((@IncludeMailboxes = 1 AND EA.AccountType = 1)
|
||||||
|
OR (@IncludeContacts = 1 AND EA.AccountType = 2)
|
||||||
|
OR (@IncludeDistributionLists = 1 AND EA.AccountType = 3)
|
||||||
|
OR (@IncludeRooms = 1 AND EA.AccountType = 5)
|
||||||
|
OR (@IncludeEquipment = 1 AND EA.AccountType = 6)
|
||||||
|
OR (@IncludeSecurityGroups = 1 AND EA.AccountType = 8))
|
||||||
|
AND EA.ItemID = @ItemID
|
||||||
|
'
|
||||||
|
|
||||||
|
IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
|
||||||
|
AND @FilterValue <> '' AND @FilterValue IS NOT NULL
|
||||||
|
SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
|
||||||
|
|
||||||
|
IF @SortColumn IS NULL OR @SortColumn = ''
|
||||||
|
SET @SortColumn = 'EA.DisplayName ASC'
|
||||||
|
|
||||||
|
DECLARE @sql nvarchar(3500)
|
||||||
|
|
||||||
|
set @sql = '
|
||||||
|
SELECT
|
||||||
|
EA.AccountID,
|
||||||
|
EA.ItemID,
|
||||||
|
EA.AccountType,
|
||||||
|
EA.AccountName,
|
||||||
|
EA.DisplayName,
|
||||||
|
EA.PrimaryEmailAddress,
|
||||||
|
EA.MailEnabledPublicFolder,
|
||||||
|
EA.SubscriberNumber,
|
||||||
|
EA.UserPrincipalName
|
||||||
|
FROM ExchangeAccounts AS EA
|
||||||
|
WHERE ' + @condition
|
||||||
|
|
||||||
|
print @sql
|
||||||
|
|
||||||
|
exec sp_executesql @sql, N'@ItemID int, @IncludeMailboxes int, @IncludeContacts int,
|
||||||
|
@IncludeDistributionLists int, @IncludeRooms bit, @IncludeEquipment bit, @IncludeSecurityGroups bit',
|
||||||
|
@ItemID, @IncludeMailboxes, @IncludeContacts, @IncludeDistributionLists, @IncludeRooms, @IncludeEquipment, @IncludeSecurityGroups
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[SearchExchangeAccountsByTypes]
|
||||||
|
(
|
||||||
|
@ActorID int,
|
||||||
|
@ItemID int,
|
||||||
|
@AccountTypes nvarchar(30),
|
||||||
|
@FilterColumn nvarchar(50) = '',
|
||||||
|
@FilterValue nvarchar(50) = '',
|
||||||
|
@SortColumn nvarchar(50)
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
|
||||||
|
DECLARE @PackageID int
|
||||||
|
SELECT @PackageID = PackageID FROM ServiceItems
|
||||||
|
WHERE ItemID = @ItemID
|
||||||
|
|
||||||
|
-- check rights
|
||||||
|
IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
|
||||||
|
RAISERROR('You are not allowed to access this package', 16, 1)
|
||||||
|
|
||||||
|
DECLARE @condition nvarchar(700)
|
||||||
|
SET @condition = 'EA.ItemID = @ItemID AND EA.AccountType IN (' + @AccountTypes + ')'
|
||||||
|
|
||||||
|
IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
|
||||||
|
AND @FilterValue <> '' AND @FilterValue IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
IF @FilterColumn = 'PrimaryEmailAddress' AND @AccountTypes <> '2'
|
||||||
|
BEGIN
|
||||||
|
SET @condition = @condition + ' AND EA.AccountID IN (SELECT EAEA.AccountID FROM ExchangeAccountEmailAddresses EAEA WHERE EAEA.EmailAddress LIKE ''' + @FilterValue + ''')'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
IF @SortColumn IS NULL OR @SortColumn = ''
|
||||||
|
SET @SortColumn = 'EA.DisplayName ASC'
|
||||||
|
|
||||||
|
DECLARE @sql nvarchar(3500)
|
||||||
|
SET @sql = '
|
||||||
|
SELECT
|
||||||
|
EA.AccountID,
|
||||||
|
EA.ItemID,
|
||||||
|
EA.AccountType,
|
||||||
|
EA.AccountName,
|
||||||
|
EA.DisplayName,
|
||||||
|
EA.PrimaryEmailAddress,
|
||||||
|
EA.MailEnabledPublicFolder,
|
||||||
|
EA.MailboxPlanId,
|
||||||
|
P.MailboxPlan,
|
||||||
|
EA.SubscriberNumber,
|
||||||
|
EA.UserPrincipalName
|
||||||
|
FROM
|
||||||
|
ExchangeAccounts AS EA
|
||||||
|
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON EA.MailboxPlanId = P.MailboxPlanId
|
||||||
|
WHERE ' + @condition
|
||||||
|
+ ' ORDER BY ' + @SortColumn
|
||||||
|
|
||||||
|
EXEC sp_executesql @sql, N'@ItemID int', @ItemID
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
GO
|
|
@ -155,6 +155,7 @@ order by rg.groupOrder
|
||||||
public const string ORGANIZATION_USERS = "HostedSolution.Users";
|
public const string ORGANIZATION_USERS = "HostedSolution.Users";
|
||||||
public const string ORGANIZATION_DOMAINS = "HostedSolution.Domains";
|
public const string ORGANIZATION_DOMAINS = "HostedSolution.Domains";
|
||||||
public const string ORGANIZATION_ALLOWCHANGEUPN = "HostedSolution.AllowChangeUPN";
|
public const string ORGANIZATION_ALLOWCHANGEUPN = "HostedSolution.AllowChangeUPN";
|
||||||
|
public const string ORGANIZATION_SECURITYGROUPMANAGEMENT = "HostedSolution.SecurityGroupManagement";
|
||||||
public const string CRM_USERS = "HostedCRM.Users";
|
public const string CRM_USERS = "HostedCRM.Users";
|
||||||
public const string CRM_ORGANIZATION = "HostedCRM.Organization";
|
public const string CRM_ORGANIZATION = "HostedCRM.Organization";
|
||||||
|
|
||||||
|
|
|
@ -3053,7 +3053,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/SearchAccounts", RequestNamespace = "http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace = "http://smbsaas/websitepanel/enterpriseserver", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/SearchAccounts", RequestNamespace = "http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace = "http://smbsaas/websitepanel/enterpriseserver", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public ExchangeAccount[] SearchAccounts(int itemId, bool includeMailboxes, bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment, string filterColumn, string filterValue, string sortColumn)
|
public ExchangeAccount[] SearchAccounts(int itemId, bool includeMailboxes, bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment, bool includeSecurityGroups, string filterColumn, string filterValue, string sortColumn)
|
||||||
{
|
{
|
||||||
object[] results = this.Invoke("SearchAccounts", new object[] {
|
object[] results = this.Invoke("SearchAccounts", new object[] {
|
||||||
itemId,
|
itemId,
|
||||||
|
@ -3062,6 +3062,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
includeDistributionLists,
|
includeDistributionLists,
|
||||||
includeRooms,
|
includeRooms,
|
||||||
includeEquipment,
|
includeEquipment,
|
||||||
|
includeSecurityGroups,
|
||||||
filterColumn,
|
filterColumn,
|
||||||
filterValue,
|
filterValue,
|
||||||
sortColumn});
|
sortColumn});
|
||||||
|
@ -3069,7 +3070,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public System.IAsyncResult BeginSearchAccounts(int itemId, bool includeMailboxes, bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment, string filterColumn, string filterValue, string sortColumn, System.AsyncCallback callback, object asyncState)
|
public System.IAsyncResult BeginSearchAccounts(int itemId, bool includeMailboxes, bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment, bool includeSecurityGroups, string filterColumn, string filterValue, string sortColumn, System.AsyncCallback callback, object asyncState)
|
||||||
{
|
{
|
||||||
return this.BeginInvoke("SearchAccounts", new object[] {
|
return this.BeginInvoke("SearchAccounts", new object[] {
|
||||||
itemId,
|
itemId,
|
||||||
|
@ -3078,6 +3079,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
includeDistributionLists,
|
includeDistributionLists,
|
||||||
includeRooms,
|
includeRooms,
|
||||||
includeEquipment,
|
includeEquipment,
|
||||||
|
includeSecurityGroups,
|
||||||
filterColumn,
|
filterColumn,
|
||||||
filterValue,
|
filterValue,
|
||||||
sortColumn}, callback, asyncState);
|
sortColumn}, callback, asyncState);
|
||||||
|
@ -3091,13 +3093,13 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void SearchAccountsAsync(int itemId, bool includeMailboxes, bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment, string filterColumn, string filterValue, string sortColumn)
|
public void SearchAccountsAsync(int itemId, bool includeMailboxes, bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment, bool includeSecurityGroups, string filterColumn, string filterValue, string sortColumn)
|
||||||
{
|
{
|
||||||
this.SearchAccountsAsync(itemId, includeMailboxes, includeContacts, includeDistributionLists, includeRooms, includeEquipment, filterColumn, filterValue, sortColumn, null);
|
this.SearchAccountsAsync(itemId, includeMailboxes, includeContacts, includeDistributionLists, includeRooms, includeEquipment, includeSecurityGroups, filterColumn, filterValue, sortColumn, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void SearchAccountsAsync(int itemId, bool includeMailboxes, bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment, string filterColumn, string filterValue, string sortColumn, object userState)
|
public void SearchAccountsAsync(int itemId, bool includeMailboxes, bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment, bool includeSecurityGroups, string filterColumn, string filterValue, string sortColumn, object userState)
|
||||||
{
|
{
|
||||||
if ((this.SearchAccountsOperationCompleted == null))
|
if ((this.SearchAccountsOperationCompleted == null))
|
||||||
{
|
{
|
||||||
|
@ -3110,6 +3112,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
includeDistributionLists,
|
includeDistributionLists,
|
||||||
includeRooms,
|
includeRooms,
|
||||||
includeEquipment,
|
includeEquipment,
|
||||||
|
includeSecurityGroups,
|
||||||
filterColumn,
|
filterColumn,
|
||||||
filterValue,
|
filterValue,
|
||||||
sortColumn}, this.SearchAccountsOperationCompleted, userState);
|
sortColumn}, this.SearchAccountsOperationCompleted, userState);
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1868,7 +1868,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
public static IDataReader GetProcessBackgroundTasks(BackgroundTaskStatus status)
|
public static IDataReader GetProcessBackgroundTasks(BackgroundTaskStatus status)
|
||||||
{
|
{
|
||||||
return SqlHelper.ExecuteReader(ConnectionString, CommandType.StoredProcedure,
|
return SqlHelper.ExecuteReader(ConnectionString, CommandType.StoredProcedure,
|
||||||
ObjectQualifier + "GetProcessBackgroundTasks",
|
ObjectQualifier + "GetProcessBackgroundTasks",
|
||||||
new SqlParameter("@status", (int)status));
|
new SqlParameter("@status", (int)status));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1952,7 +1952,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
new SqlParameter("@finishDate",
|
new SqlParameter("@finishDate",
|
||||||
finishDate == DateTime.MinValue
|
finishDate == DateTime.MinValue
|
||||||
? DBNull.Value
|
? DBNull.Value
|
||||||
: (object) finishDate),
|
: (object)finishDate),
|
||||||
new SqlParameter("@indicatorCurrent", indicatorCurrent),
|
new SqlParameter("@indicatorCurrent", indicatorCurrent),
|
||||||
new SqlParameter("@indicatorMaximum", indicatorMaximum),
|
new SqlParameter("@indicatorMaximum", indicatorMaximum),
|
||||||
new SqlParameter("@maximumExecutionTime", maximumExecutionTime),
|
new SqlParameter("@maximumExecutionTime", maximumExecutionTime),
|
||||||
|
@ -2636,6 +2636,38 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IDataReader SearchExchangeAccountsByTypes(int actorId, int itemId, string accountTypes,
|
||||||
|
string filterColumn, string filterValue, string sortColumn)
|
||||||
|
{
|
||||||
|
// check input parameters
|
||||||
|
string[] types = accountTypes.Split(',');
|
||||||
|
for (int i = 0; i < types.Length; i++)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int type = Int32.Parse(types[i]);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Wrong patameter", "accountTypes");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string searchTypes = String.Join(",", types);
|
||||||
|
|
||||||
|
return SqlHelper.ExecuteReader(
|
||||||
|
ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"SearchExchangeAccountsByTypes",
|
||||||
|
new SqlParameter("@ActorID", actorId),
|
||||||
|
new SqlParameter("@ItemID", itemId),
|
||||||
|
new SqlParameter("@AccountTypes", searchTypes),
|
||||||
|
new SqlParameter("@FilterColumn", VerifyColumnName(filterColumn)),
|
||||||
|
new SqlParameter("@FilterValue", VerifyColumnValue(filterValue)),
|
||||||
|
new SqlParameter("@SortColumn", VerifyColumnName(sortColumn))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static DataSet GetExchangeAccountsPaged(int actorId, int itemId, string accountTypes,
|
public static DataSet GetExchangeAccountsPaged(int actorId, int itemId, string accountTypes,
|
||||||
string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
|
string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
|
||||||
{
|
{
|
||||||
|
@ -2672,7 +2704,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
public static IDataReader SearchExchangeAccounts(int actorId, int itemId, bool includeMailboxes,
|
public static IDataReader SearchExchangeAccounts(int actorId, int itemId, bool includeMailboxes,
|
||||||
bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment,
|
bool includeContacts, bool includeDistributionLists, bool includeRooms, bool includeEquipment,
|
||||||
string filterColumn, string filterValue, string sortColumn)
|
bool includeSecurityGroups, string filterColumn, string filterValue, string sortColumn)
|
||||||
{
|
{
|
||||||
return SqlHelper.ExecuteReader(
|
return SqlHelper.ExecuteReader(
|
||||||
ConnectionString,
|
ConnectionString,
|
||||||
|
@ -2685,6 +2717,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
new SqlParameter("@IncludeDistributionLists", includeDistributionLists),
|
new SqlParameter("@IncludeDistributionLists", includeDistributionLists),
|
||||||
new SqlParameter("@IncludeRooms", includeRooms),
|
new SqlParameter("@IncludeRooms", includeRooms),
|
||||||
new SqlParameter("@IncludeEquipment", includeEquipment),
|
new SqlParameter("@IncludeEquipment", includeEquipment),
|
||||||
|
new SqlParameter("@IncludeSecurityGroups", includeSecurityGroups),
|
||||||
new SqlParameter("@FilterColumn", VerifyColumnName(filterColumn)),
|
new SqlParameter("@FilterColumn", VerifyColumnName(filterColumn)),
|
||||||
new SqlParameter("@FilterValue", VerifyColumnValue(filterValue)),
|
new SqlParameter("@FilterValue", VerifyColumnValue(filterValue)),
|
||||||
new SqlParameter("@SortColumn", VerifyColumnName(sortColumn))
|
new SqlParameter("@SortColumn", VerifyColumnName(sortColumn))
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -190,12 +190,12 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
public List<ExchangeAccount> SearchAccounts(int itemId,
|
public List<ExchangeAccount> SearchAccounts(int itemId,
|
||||||
bool includeMailboxes, bool includeContacts, bool includeDistributionLists,
|
bool includeMailboxes, bool includeContacts, bool includeDistributionLists,
|
||||||
bool includeRooms, bool includeEquipment,
|
bool includeRooms, bool includeEquipment, bool includeSecurityGroups,
|
||||||
string filterColumn, string filterValue, string sortColumn)
|
string filterColumn, string filterValue, string sortColumn)
|
||||||
{
|
{
|
||||||
return ExchangeServerController.SearchAccounts(itemId,
|
return ExchangeServerController.SearchAccounts(itemId,
|
||||||
includeMailboxes, includeContacts, includeDistributionLists,
|
includeMailboxes, includeContacts, includeDistributionLists,
|
||||||
includeRooms, includeEquipment,
|
includeRooms, includeEquipment, includeSecurityGroups,
|
||||||
filterColumn, filterValue, sortColumn);
|
filterColumn, filterValue, sortColumn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -214,7 +214,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
{
|
{
|
||||||
return OrganizationController.SetUserPassword(itemId, accountId, password);
|
return OrganizationController.SetUserPassword(itemId, accountId, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
|
@ -242,5 +242,66 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Security Groups
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public int CreateSecurityGroup(int itemId, string displayName)
|
||||||
|
{
|
||||||
|
return OrganizationController.CreateSecurityGroup(itemId, displayName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public OrganizationSecurityGroup GetSecurityGroupGeneralSettings(int itemId, int accountId)
|
||||||
|
{
|
||||||
|
return OrganizationController.GetSecurityGroupGeneralSettings(itemId, accountId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public int DeleteSecurityGroup(int itemId, int accountId)
|
||||||
|
{
|
||||||
|
return OrganizationController.DeleteSecurityGroup(itemId, accountId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public int SetSecurityGroupGeneralSettings(int itemId, int accountId, string displayName, string[] memberAccounts, string notes)
|
||||||
|
{
|
||||||
|
return OrganizationController.SetSecurityGroupGeneralSettings(itemId, accountId, displayName, memberAccounts, notes);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public ExchangeAccountsPaged GetOrganizationSecurityGroupsPaged(int itemId, string filterColumn, string filterValue, string sortColumn,
|
||||||
|
int startRow, int maximumRows)
|
||||||
|
{
|
||||||
|
return OrganizationController.GetOrganizationSecurityGroupsPaged(itemId, filterColumn, filterValue, sortColumn, startRow, maximumRows);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public int AddUserToSecurityGroup(int itemId, int userAccountId, string groupName)
|
||||||
|
{
|
||||||
|
return OrganizationController.AddUserToSecurityGroup(itemId, userAccountId, groupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public int DeleteUserFromSecurityGroup(int itemId, int userAccountId, string groupName)
|
||||||
|
{
|
||||||
|
return OrganizationController.DeleteUserFromSecurityGroup(itemId, userAccountId, groupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public ExchangeAccount[] GetSecurityGroupsByMember(int itemId, int accountId)
|
||||||
|
{
|
||||||
|
return OrganizationController.GetSecurityGroupsByMember(itemId, accountId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public List<ExchangeAccount> SearchOrganizationAccounts(int itemId, string filterColumn, string filterValue,
|
||||||
|
string sortColumn, bool includeOnlySecurityGroups)
|
||||||
|
{
|
||||||
|
return OrganizationController.SearchOrganizationAccounts(itemId, filterColumn, filterValue, sortColumn,
|
||||||
|
includeOnlySecurityGroups);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
public const string UserPrincipalName = "UserPrincipalName";
|
public const string UserPrincipalName = "UserPrincipalName";
|
||||||
public const string GroupType = "GroupType";
|
public const string GroupType = "GroupType";
|
||||||
public const string Name = "Name";
|
public const string Name = "Name";
|
||||||
public const string ExternalEmail = "mail";
|
public const string ExternalEmail = "mail";
|
||||||
public const string CustomAttribute2 = "extensionAttribute2";
|
public const string CustomAttribute2 = "extensionAttribute2";
|
||||||
public const string DistinguishedName = "distinguishedName";
|
public const string DistinguishedName = "distinguishedName";
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,45 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
return de;
|
return de;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string[] GetGroupObjects(string group, string objectType)
|
||||||
|
{
|
||||||
|
List<string> rets = new List<string>();
|
||||||
|
|
||||||
|
DirectorySearcher deSearch = new DirectorySearcher
|
||||||
|
{
|
||||||
|
Filter =
|
||||||
|
"(&(objectClass=" + objectType + "))"
|
||||||
|
};
|
||||||
|
|
||||||
|
SearchResultCollection srcObjects = deSearch.FindAll();
|
||||||
|
|
||||||
|
foreach (SearchResult srcObject in srcObjects)
|
||||||
|
{
|
||||||
|
DirectoryEntry de = srcObject.GetDirectoryEntry();
|
||||||
|
PropertyValueCollection props = de.Properties["memberOf"];
|
||||||
|
|
||||||
|
foreach (string str in props)
|
||||||
|
{
|
||||||
|
string groupName = "";
|
||||||
|
|
||||||
|
string[] parts = str.Split(',');
|
||||||
|
for (int i = 0; i < parts.Length; i++)
|
||||||
|
{
|
||||||
|
if (parts[i].StartsWith("CN="))
|
||||||
|
{
|
||||||
|
if (parts[i].Substring(3) == group)
|
||||||
|
{
|
||||||
|
rets.Add(de.Path);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rets.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
public static bool IsUserInGroup(string samAccountName, string group)
|
public static bool IsUserInGroup(string samAccountName, string group)
|
||||||
{
|
{
|
||||||
bool res = false;
|
bool res = false;
|
||||||
|
@ -328,15 +367,24 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
newGroupObject.Properties[ADAttributes.SAMAccountName].Add(group);
|
newGroupObject.Properties[ADAttributes.SAMAccountName].Add(group);
|
||||||
|
|
||||||
newGroupObject.Properties[ADAttributes.GroupType].Add(-2147483640);
|
newGroupObject.Properties[ADAttributes.GroupType].Add(-2147483640);
|
||||||
|
|
||||||
newGroupObject.CommitChanges();
|
newGroupObject.CommitChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AddUserToGroup(string userPath, string groupPath)
|
public static void AddObjectToGroup(string objectPath, string groupPath)
|
||||||
{
|
{
|
||||||
DirectoryEntry user = new DirectoryEntry(userPath);
|
DirectoryEntry obj = new DirectoryEntry(objectPath);
|
||||||
DirectoryEntry group = new DirectoryEntry(groupPath);
|
DirectoryEntry group = new DirectoryEntry(groupPath);
|
||||||
|
|
||||||
group.Invoke("Add", user.Path);
|
group.Invoke("Add", obj.Path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RemoveObjectFromGroup(string obejctPath, string groupPath)
|
||||||
|
{
|
||||||
|
DirectoryEntry obj = new DirectoryEntry(obejctPath);
|
||||||
|
DirectoryEntry group = new DirectoryEntry(groupPath);
|
||||||
|
|
||||||
|
group.Invoke("Remove", obj.Path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool AdObjectExists(string path)
|
public static bool AdObjectExists(string path)
|
||||||
|
|
|
@ -37,7 +37,9 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
PublicFolder = 4,
|
PublicFolder = 4,
|
||||||
Room = 5,
|
Room = 5,
|
||||||
Equipment = 6,
|
Equipment = 6,
|
||||||
User = 7
|
User = 7,
|
||||||
|
SecurityGroup = 8,
|
||||||
|
DefaultSecurityGroup = 9
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,18 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
OrganizationUser GetUserGeneralSettings(string loginName, string organizationId);
|
OrganizationUser GetUserGeneralSettings(string loginName, string organizationId);
|
||||||
|
|
||||||
|
int CreateSecurityGroup(string organizationId, string groupName);
|
||||||
|
|
||||||
|
OrganizationSecurityGroup GetSecurityGroupGeneralSettings(string groupName, string organizationId);
|
||||||
|
|
||||||
|
void DeleteSecurityGroup(string groupName, string organizationId);
|
||||||
|
|
||||||
|
void SetSecurityGroupGeneralSettings(string organizationId, string groupName, string[] memberAccounts, string notes);
|
||||||
|
|
||||||
|
void AddUserToSecurityGroup(string organizationId, string loginName, string groupName);
|
||||||
|
|
||||||
|
void DeleteUserFromSecurityGroup(string organizationId, string loginName, string groupName);
|
||||||
|
|
||||||
void SetUserGeneralSettings(string organizationId, string accountName, string displayName, string password,
|
void SetUserGeneralSettings(string organizationId, string accountName, string displayName, string password,
|
||||||
bool hideFromAddressBook, bool disabled, bool locked, string firstName, string initials,
|
bool hideFromAddressBook, bool disabled, bool locked, string firstName, string initials,
|
||||||
string lastName,
|
string lastName,
|
||||||
|
@ -54,7 +66,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
void SetUserPassword(string organizationId, string accountName, string password);
|
void SetUserPassword(string organizationId, string accountName, string password);
|
||||||
|
|
||||||
void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName);
|
void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName);
|
||||||
|
|
||||||
bool OrganizationExists(string organizationId);
|
bool OrganizationExists(string organizationId);
|
||||||
|
|
||||||
void DeleteOrganizationDomain(string organizationDistinguishedName, string domain);
|
void DeleteOrganizationDomain(string organizationDistinguishedName, string domain);
|
||||||
|
|
|
@ -1,4 +1,32 @@
|
||||||
using System;
|
// 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.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
{
|
||||||
|
public class OrganizationSecurityGroup
|
||||||
|
{
|
||||||
|
public string DisplayName
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string AccountName
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExchangeAccount[] MembersAccounts
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Notes
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SAMAccountName
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsDefault
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -102,6 +102,7 @@
|
||||||
<Compile Include="HostedSolution\LyncUserPlanType.cs" />
|
<Compile Include="HostedSolution\LyncUserPlanType.cs" />
|
||||||
<Compile Include="HostedSolution\LyncUsersPaged.cs" />
|
<Compile Include="HostedSolution\LyncUsersPaged.cs" />
|
||||||
<Compile Include="HostedSolution\LyncVoicePolicyType.cs" />
|
<Compile Include="HostedSolution\LyncVoicePolicyType.cs" />
|
||||||
|
<Compile Include="HostedSolution\OrganizationSecurityGroup.cs" />
|
||||||
<Compile Include="HostedSolution\TransactionAction.cs" />
|
<Compile Include="HostedSolution\TransactionAction.cs" />
|
||||||
<Compile Include="ResultObjects\HeliconApe.cs" />
|
<Compile Include="ResultObjects\HeliconApe.cs" />
|
||||||
<Compile Include="HostedSolution\ExchangeMobileDevice.cs" />
|
<Compile Include="HostedSolution\ExchangeMobileDevice.cs" />
|
||||||
|
|
|
@ -27,10 +27,10 @@
|
||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.DirectoryServices;
|
using System.DirectoryServices;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
using WebsitePanel.Providers.Common;
|
using WebsitePanel.Providers.Common;
|
||||||
using WebsitePanel.Providers.ResultObjects;
|
using WebsitePanel.Providers.ResultObjects;
|
||||||
|
|
||||||
|
@ -102,6 +102,34 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetObjectPath(string organizationId, string objName)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
// append provider
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendCNPath(sb, objName);
|
||||||
|
AppendOUPath(sb, organizationId);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetGroupPath(string organizationId, string groupName)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
// append provider
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendCNPath(sb, groupName);
|
||||||
|
AppendOUPath(sb, organizationId);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private string GetRootOU()
|
private string GetRootOU()
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
@ -213,6 +241,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
org.OrganizationId = organizationId;
|
org.OrganizationId = organizationId;
|
||||||
org.DistinguishedName = ActiveDirectoryUtils.RemoveADPrefix(orgPath);
|
org.DistinguishedName = ActiveDirectoryUtils.RemoveADPrefix(orgPath);
|
||||||
org.SecurityGroup = ActiveDirectoryUtils.RemoveADPrefix(GetGroupPath(organizationId));
|
org.SecurityGroup = ActiveDirectoryUtils.RemoveADPrefix(GetGroupPath(organizationId));
|
||||||
|
org.GroupName = organizationId;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -389,7 +418,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
HostedSolutionLog.DebugInfo("Group retrieved: {0}", groupPath);
|
HostedSolutionLog.DebugInfo("Group retrieved: {0}", groupPath);
|
||||||
|
|
||||||
|
|
||||||
ActiveDirectoryUtils.AddUserToGroup(userPath, groupPath);
|
ActiveDirectoryUtils.AddObjectToGroup(userPath, groupPath);
|
||||||
HostedSolutionLog.DebugInfo("Added to group: {0}", groupPath);
|
HostedSolutionLog.DebugInfo("Added to group: {0}", groupPath);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -498,10 +527,19 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
throw new ArgumentNullException("loginName");
|
throw new ArgumentNullException("loginName");
|
||||||
|
|
||||||
string path = GetUserPath(organizationId, loginName);
|
string path = GetUserPath(organizationId, loginName);
|
||||||
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
|
|
||||||
|
|
||||||
|
OrganizationUser retUser = GetUser(path);
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("GetUserGeneralSettingsInternal");
|
||||||
|
return retUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
private OrganizationUser GetUser(string path)
|
||||||
|
{
|
||||||
OrganizationUser retUser = new OrganizationUser();
|
OrganizationUser retUser = new OrganizationUser();
|
||||||
|
|
||||||
|
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
|
||||||
|
|
||||||
retUser.FirstName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.FirstName);
|
retUser.FirstName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.FirstName);
|
||||||
retUser.LastName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.LastName);
|
retUser.LastName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.LastName);
|
||||||
retUser.DisplayName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DisplayName);
|
retUser.DisplayName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DisplayName);
|
||||||
|
@ -524,14 +562,13 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
retUser.Notes = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Notes);
|
retUser.Notes = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Notes);
|
||||||
retUser.ExternalEmail = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.ExternalEmail);
|
retUser.ExternalEmail = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.ExternalEmail);
|
||||||
retUser.Disabled = (bool)entry.InvokeGet(ADAttributes.AccountDisabled);
|
retUser.Disabled = (bool)entry.InvokeGet(ADAttributes.AccountDisabled);
|
||||||
retUser.Manager = GetManager(entry);
|
retUser.Manager = GetManager(entry, ADAttributes.Manager);
|
||||||
retUser.SamAccountName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName);
|
retUser.SamAccountName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName);
|
||||||
retUser.DomainUserName = GetDomainName(ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName));
|
retUser.DomainUserName = GetDomainName(ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName));
|
||||||
retUser.DistinguishedName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DistinguishedName);
|
retUser.DistinguishedName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DistinguishedName);
|
||||||
retUser.Locked = (bool)entry.InvokeGet(ADAttributes.AccountLocked);
|
retUser.Locked = (bool)entry.InvokeGet(ADAttributes.AccountLocked);
|
||||||
retUser.UserPrincipalName= (string)entry.InvokeGet(ADAttributes.UserPrincipalName);
|
retUser.UserPrincipalName = (string)entry.InvokeGet(ADAttributes.UserPrincipalName);
|
||||||
|
|
||||||
HostedSolutionLog.LogEnd("GetUserGeneralSettingsInternal");
|
|
||||||
return retUser;
|
return retUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -542,10 +579,10 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private OrganizationUser GetManager(DirectoryEntry entry)
|
private OrganizationUser GetManager(DirectoryEntry entry, string adAttribute)
|
||||||
{
|
{
|
||||||
OrganizationUser retUser = null;
|
OrganizationUser retUser = null;
|
||||||
string path = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Manager);
|
string path = ActiveDirectoryUtils.GetADObjectStringProperty(entry, adAttribute);
|
||||||
if (!string.IsNullOrEmpty(path))
|
if (!string.IsNullOrEmpty(path))
|
||||||
{
|
{
|
||||||
path = ActiveDirectoryUtils.AddADPrefix(path, PrimaryDomainController);
|
path = ActiveDirectoryUtils.AddADPrefix(path, PrimaryDomainController);
|
||||||
|
@ -645,7 +682,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
{
|
{
|
||||||
string path = GetUserPath(organizationId, accountName);
|
string path = GetUserPath(organizationId, accountName);
|
||||||
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
|
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(password))
|
if (!string.IsNullOrEmpty(password))
|
||||||
entry.Invoke(ADAttributes.SetPassword, password);
|
entry.Invoke(ADAttributes.SetPassword, password);
|
||||||
|
|
||||||
|
@ -737,8 +774,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
SearchResult resCollection = searcher.FindOne();
|
SearchResult resCollection = searcher.FindOne();
|
||||||
if (resCollection != null)
|
if (resCollection != null)
|
||||||
{
|
{
|
||||||
if(resCollection.Properties["samaccountname"] != null)
|
if (resCollection.Properties["samaccountname"] != null)
|
||||||
bFound = true;
|
bFound = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -800,6 +837,254 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Security Groups
|
||||||
|
|
||||||
|
public int CreateSecurityGroup(string organizationId, string groupName)
|
||||||
|
{
|
||||||
|
return CreateSecurityGroupInternal(organizationId, groupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal int CreateSecurityGroupInternal(string organizationId, string groupName)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("CreateSecurityGroupInternal");
|
||||||
|
HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId);
|
||||||
|
HostedSolutionLog.DebugInfo("groupName : {0}", groupName);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(organizationId))
|
||||||
|
throw new ArgumentNullException("organizationId");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(groupName))
|
||||||
|
throw new ArgumentNullException("groupName");
|
||||||
|
|
||||||
|
bool groupCreated = false;
|
||||||
|
string groupPath = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string path = GetOrganizationPath(organizationId);
|
||||||
|
groupPath = GetGroupPath(organizationId, groupName);
|
||||||
|
|
||||||
|
if (!ActiveDirectoryUtils.AdObjectExists(groupPath))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.CreateGroup(path, groupName);
|
||||||
|
|
||||||
|
groupCreated = true;
|
||||||
|
|
||||||
|
HostedSolutionLog.DebugInfo("Security Group created: {0}", groupName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HostedSolutionLog.DebugInfo("AD_OBJECT_ALREADY_EXISTS: {0}", groupPath);
|
||||||
|
HostedSolutionLog.LogEnd("CreateSecurityGroupInternal");
|
||||||
|
|
||||||
|
return Errors.AD_OBJECT_ALREADY_EXISTS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogError(e);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (groupCreated)
|
||||||
|
ActiveDirectoryUtils.DeleteADObject(groupPath);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogError(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Errors.AD_OBJECT_ALREADY_EXISTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("CreateSecurityGroupInternal");
|
||||||
|
|
||||||
|
return Errors.OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrganizationSecurityGroup GetSecurityGroupGeneralSettings(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
return GetSecurityGroupGeneralSettingsInternal(groupName, organizationId);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal OrganizationSecurityGroup GetSecurityGroupGeneralSettingsInternal(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("GetSecurityGroupGeneralSettingsInternal");
|
||||||
|
HostedSolutionLog.DebugInfo("groupName : {0}", groupName);
|
||||||
|
HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(organizationId))
|
||||||
|
throw new ArgumentNullException("organizationId");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(groupName))
|
||||||
|
throw new ArgumentNullException("groupName");
|
||||||
|
|
||||||
|
string path = GetGroupPath(organizationId, groupName);
|
||||||
|
|
||||||
|
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
|
||||||
|
|
||||||
|
OrganizationSecurityGroup securityGroup = new OrganizationSecurityGroup();
|
||||||
|
|
||||||
|
securityGroup.Notes = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Notes);
|
||||||
|
|
||||||
|
securityGroup.AccountName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName);
|
||||||
|
securityGroup.SAMAccountName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName);
|
||||||
|
|
||||||
|
List<ExchangeAccount> members = new List<ExchangeAccount>();
|
||||||
|
|
||||||
|
foreach (string userPath in ActiveDirectoryUtils.GetGroupObjects(groupName, "user"))
|
||||||
|
{
|
||||||
|
OrganizationUser tmpUser = GetUser(userPath);
|
||||||
|
|
||||||
|
members.Add(new ExchangeAccount
|
||||||
|
{
|
||||||
|
AccountName = tmpUser.AccountName,
|
||||||
|
SamAccountName = tmpUser.SamAccountName
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string groupPath in ActiveDirectoryUtils.GetGroupObjects(groupName, "group"))
|
||||||
|
{
|
||||||
|
DirectoryEntry groupEntry = ActiveDirectoryUtils.GetADObject(groupPath);
|
||||||
|
|
||||||
|
members.Add(new ExchangeAccount
|
||||||
|
{
|
||||||
|
AccountName = ActiveDirectoryUtils.GetADObjectStringProperty(groupEntry, ADAttributes.SAMAccountName),
|
||||||
|
SamAccountName = ActiveDirectoryUtils.GetADObjectStringProperty(groupEntry, ADAttributes.SAMAccountName)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
securityGroup.MembersAccounts = members.ToArray();
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("GetSecurityGroupGeneralSettingsInternal");
|
||||||
|
|
||||||
|
return securityGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteSecurityGroup(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
DeleteSecurityGroupInternal(groupName, organizationId);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void DeleteSecurityGroupInternal(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("DeleteSecurityGroupInternal");
|
||||||
|
HostedSolutionLog.DebugInfo("groupName : {0}", groupName);
|
||||||
|
HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(organizationId))
|
||||||
|
throw new ArgumentNullException("organizationId");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(groupName))
|
||||||
|
throw new ArgumentNullException("groupName");
|
||||||
|
|
||||||
|
string path = GetGroupPath(organizationId, groupName);
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.AdObjectExists(path))
|
||||||
|
ActiveDirectoryUtils.DeleteADObject(path, true);
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("DeleteSecurityGroupInternal");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetSecurityGroupGeneralSettings(string organizationId, string groupName, string[] memberAccounts, string notes)
|
||||||
|
{
|
||||||
|
|
||||||
|
SetSecurityGroupGeneralSettingsInternal(organizationId, groupName, memberAccounts, notes);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void SetSecurityGroupGeneralSettingsInternal(string organizationId, string groupName, string[] memberAccounts, string notes)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("SetSecurityGroupGeneralSettingsInternal");
|
||||||
|
HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId);
|
||||||
|
HostedSolutionLog.DebugInfo("groupName : {0}", groupName);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(organizationId))
|
||||||
|
throw new ArgumentNullException("organizationId");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(groupName))
|
||||||
|
throw new ArgumentNullException("groupName");
|
||||||
|
|
||||||
|
string path = GetGroupPath(organizationId, groupName);
|
||||||
|
|
||||||
|
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
|
||||||
|
|
||||||
|
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Notes, notes);
|
||||||
|
|
||||||
|
foreach (string userPath in ActiveDirectoryUtils.GetGroupObjects(groupName, "user"))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.RemoveObjectFromGroup(userPath, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string groupPath in ActiveDirectoryUtils.GetGroupObjects(groupName, "group"))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.RemoveObjectFromGroup(groupPath, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string obj in memberAccounts)
|
||||||
|
{
|
||||||
|
string objPath = GetObjectPath(organizationId, obj);
|
||||||
|
ActiveDirectoryUtils.AddObjectToGroup(objPath, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
entry.CommitChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddUserToSecurityGroup(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
AddUserToSecurityGroupInternal(organizationId, loginName, groupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void AddUserToSecurityGroupInternal(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("AddUserToSecurityGroupInternal");
|
||||||
|
HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId);
|
||||||
|
HostedSolutionLog.DebugInfo("loginName : {0}", loginName);
|
||||||
|
HostedSolutionLog.DebugInfo("groupName : {0}", groupName);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(organizationId))
|
||||||
|
throw new ArgumentNullException("organizationId");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(loginName))
|
||||||
|
throw new ArgumentNullException("loginName");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(groupName))
|
||||||
|
throw new ArgumentNullException("groupName");
|
||||||
|
|
||||||
|
string userPath = GetUserPath(organizationId, loginName);
|
||||||
|
|
||||||
|
string groupPath = GetGroupPath(organizationId, groupName);
|
||||||
|
|
||||||
|
ActiveDirectoryUtils.AddObjectToGroup(userPath, groupPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteUserFromSecurityGroup(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
DeleteUserFromSecurityGroupInternal(organizationId, loginName, groupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void DeleteUserFromSecurityGroupInternal(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("AddUserToSecurityGroupInternal");
|
||||||
|
HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId);
|
||||||
|
HostedSolutionLog.DebugInfo("loginName : {0}", loginName);
|
||||||
|
HostedSolutionLog.DebugInfo("groupName : {0}", groupName);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(organizationId))
|
||||||
|
throw new ArgumentNullException("organizationId");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(loginName))
|
||||||
|
throw new ArgumentNullException("loginName");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(groupName))
|
||||||
|
throw new ArgumentNullException("groupName");
|
||||||
|
|
||||||
|
string userPath = GetUserPath(organizationId, loginName);
|
||||||
|
|
||||||
|
string groupPath = GetGroupPath(organizationId, groupName);
|
||||||
|
|
||||||
|
ActiveDirectoryUtils.RemoveObjectFromGroup(userPath, groupPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
public override bool IsInstalled()
|
public override bool IsInstalled()
|
||||||
{
|
{
|
||||||
return Environment.UserDomainName != Environment.MachineName;
|
return Environment.UserDomainName != Environment.MachineName;
|
||||||
|
|
|
@ -51,7 +51,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
using WebsitePanel.Providers.Common;
|
using WebsitePanel.Providers.Common;
|
||||||
using WebsitePanel.Providers.ResultObjects;
|
using WebsitePanel.Providers.ResultObjects;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
@ -77,6 +77,18 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback GetUserGeneralSettingsOperationCompleted;
|
private System.Threading.SendOrPostCallback GetUserGeneralSettingsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback CreateSecurityGroupOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetSecurityGroupGeneralSettingsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback DeleteSecurityGroupOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback SetSecurityGroupGeneralSettingsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback AddUserToSecurityGroupOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback DeleteUserFromSecurityGroupOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback SetUserGeneralSettingsOperationCompleted;
|
private System.Threading.SendOrPostCallback SetUserGeneralSettingsOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback SetUserPasswordOperationCompleted;
|
private System.Threading.SendOrPostCallback SetUserPasswordOperationCompleted;
|
||||||
|
@ -117,6 +129,24 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event GetUserGeneralSettingsCompletedEventHandler GetUserGeneralSettingsCompleted;
|
public event GetUserGeneralSettingsCompletedEventHandler GetUserGeneralSettingsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event CreateSecurityGroupCompletedEventHandler CreateSecurityGroupCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetSecurityGroupGeneralSettingsCompletedEventHandler GetSecurityGroupGeneralSettingsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event DeleteSecurityGroupCompletedEventHandler DeleteSecurityGroupCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event SetSecurityGroupGeneralSettingsCompletedEventHandler SetSecurityGroupGeneralSettingsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event AddUserToSecurityGroupCompletedEventHandler AddUserToSecurityGroupCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event DeleteUserFromSecurityGroupCompletedEventHandler DeleteUserFromSecurityGroupCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted;
|
public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted;
|
||||||
|
|
||||||
|
@ -458,6 +488,328 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreateSecurityGroup", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public int CreateSecurityGroup(string organizationId, string groupName)
|
||||||
|
{
|
||||||
|
object[] results = this.Invoke("CreateSecurityGroup", new object[] {
|
||||||
|
organizationId,
|
||||||
|
groupName});
|
||||||
|
return ((int)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginCreateSecurityGroup(string organizationId, string groupName, System.AsyncCallback callback, object asyncState)
|
||||||
|
{
|
||||||
|
return this.BeginInvoke("CreateSecurityGroup", new object[] {
|
||||||
|
organizationId,
|
||||||
|
groupName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public int EndCreateSecurityGroup(System.IAsyncResult asyncResult)
|
||||||
|
{
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((int)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void CreateSecurityGroupAsync(string organizationId, string groupName)
|
||||||
|
{
|
||||||
|
this.CreateSecurityGroupAsync(organizationId, groupName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void CreateSecurityGroupAsync(string organizationId, string groupName, object userState)
|
||||||
|
{
|
||||||
|
if ((this.CreateSecurityGroupOperationCompleted == null))
|
||||||
|
{
|
||||||
|
this.CreateSecurityGroupOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateSecurityGroupOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("CreateSecurityGroup", new object[] {
|
||||||
|
organizationId,
|
||||||
|
groupName}, this.CreateSecurityGroupOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCreateSecurityGroupOperationCompleted(object arg)
|
||||||
|
{
|
||||||
|
if ((this.CreateSecurityGroupCompleted != null))
|
||||||
|
{
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.CreateSecurityGroupCompleted(this, new CreateSecurityGroupCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetSecurityGroupGeneralSettings", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public OrganizationSecurityGroup GetSecurityGroupGeneralSettings(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
object[] results = this.Invoke("GetSecurityGroupGeneralSettings", new object[] {
|
||||||
|
groupName,
|
||||||
|
organizationId});
|
||||||
|
return ((OrganizationSecurityGroup)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetSecurityGroupGeneralSettings(string groupName, string organizationId, System.AsyncCallback callback, object asyncState)
|
||||||
|
{
|
||||||
|
return this.BeginInvoke("GetSecurityGroupGeneralSettings", new object[] {
|
||||||
|
groupName,
|
||||||
|
organizationId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public OrganizationSecurityGroup EndGetSecurityGroupGeneralSettings(System.IAsyncResult asyncResult)
|
||||||
|
{
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((OrganizationSecurityGroup)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetSecurityGroupGeneralSettingsAsync(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
this.GetSecurityGroupGeneralSettingsAsync(groupName, organizationId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetSecurityGroupGeneralSettingsAsync(string groupName, string organizationId, object userState)
|
||||||
|
{
|
||||||
|
if ((this.GetSecurityGroupGeneralSettingsOperationCompleted == null))
|
||||||
|
{
|
||||||
|
this.GetSecurityGroupGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetSecurityGroupGeneralSettingsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetSecurityGroupGeneralSettings", new object[] {
|
||||||
|
groupName,
|
||||||
|
organizationId}, this.GetSecurityGroupGeneralSettingsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetSecurityGroupGeneralSettingsOperationCompleted(object arg)
|
||||||
|
{
|
||||||
|
if ((this.GetSecurityGroupGeneralSettingsCompleted != null))
|
||||||
|
{
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetSecurityGroupGeneralSettingsCompleted(this, new GetSecurityGroupGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/DeleteSecurityGroup", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void DeleteSecurityGroup(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
this.Invoke("DeleteSecurityGroup", new object[] {
|
||||||
|
groupName,
|
||||||
|
organizationId});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginDeleteSecurityGroup(string groupName, string organizationId, System.AsyncCallback callback, object asyncState)
|
||||||
|
{
|
||||||
|
return this.BeginInvoke("DeleteSecurityGroup", new object[] {
|
||||||
|
groupName,
|
||||||
|
organizationId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndDeleteSecurityGroup(System.IAsyncResult asyncResult)
|
||||||
|
{
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void DeleteSecurityGroupAsync(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
this.DeleteSecurityGroupAsync(groupName, organizationId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void DeleteSecurityGroupAsync(string groupName, string organizationId, object userState)
|
||||||
|
{
|
||||||
|
if ((this.DeleteSecurityGroupOperationCompleted == null))
|
||||||
|
{
|
||||||
|
this.DeleteSecurityGroupOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteSecurityGroupOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("DeleteSecurityGroup", new object[] {
|
||||||
|
groupName,
|
||||||
|
organizationId}, this.DeleteSecurityGroupOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDeleteSecurityGroupOperationCompleted(object arg)
|
||||||
|
{
|
||||||
|
if ((this.DeleteSecurityGroupCompleted != null))
|
||||||
|
{
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.DeleteSecurityGroupCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetSecurityGroupGeneralSettings", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void SetSecurityGroupGeneralSettings(string organizationId, string groupName, string[] memberAccounts, string notes)
|
||||||
|
{
|
||||||
|
this.Invoke("SetSecurityGroupGeneralSettings", new object[] {
|
||||||
|
organizationId,
|
||||||
|
groupName,
|
||||||
|
memberAccounts,
|
||||||
|
notes});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginSetSecurityGroupGeneralSettings(string organizationId, string groupName, string[] memberAccounts, string notes, System.AsyncCallback callback, object asyncState)
|
||||||
|
{
|
||||||
|
return this.BeginInvoke("SetSecurityGroupGeneralSettings", new object[] {
|
||||||
|
organizationId,
|
||||||
|
groupName,
|
||||||
|
memberAccounts,
|
||||||
|
notes}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndSetSecurityGroupGeneralSettings(System.IAsyncResult asyncResult)
|
||||||
|
{
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SetSecurityGroupGeneralSettingsAsync(string organizationId, string groupName, string[] memberAccounts, string notes)
|
||||||
|
{
|
||||||
|
this.SetSecurityGroupGeneralSettingsAsync(organizationId, groupName, memberAccounts, notes, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SetSecurityGroupGeneralSettingsAsync(string organizationId, string groupName, string[] memberAccounts, string notes, object userState)
|
||||||
|
{
|
||||||
|
if ((this.SetSecurityGroupGeneralSettingsOperationCompleted == null))
|
||||||
|
{
|
||||||
|
this.SetSecurityGroupGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetSecurityGroupGeneralSettingsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("SetSecurityGroupGeneralSettings", new object[] {
|
||||||
|
organizationId,
|
||||||
|
groupName,
|
||||||
|
memberAccounts,
|
||||||
|
notes}, this.SetSecurityGroupGeneralSettingsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSetSecurityGroupGeneralSettingsOperationCompleted(object arg)
|
||||||
|
{
|
||||||
|
if ((this.SetSecurityGroupGeneralSettingsCompleted != null))
|
||||||
|
{
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.SetSecurityGroupGeneralSettingsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddUserToSecurityGroup", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void AddUserToSecurityGroup(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
this.Invoke("AddUserToSecurityGroup", new object[] {
|
||||||
|
organizationId,
|
||||||
|
loginName,
|
||||||
|
groupName});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginAddUserToSecurityGroup(string organizationId, string loginName, string groupName, System.AsyncCallback callback, object asyncState)
|
||||||
|
{
|
||||||
|
return this.BeginInvoke("AddUserToSecurityGroup", new object[] {
|
||||||
|
organizationId,
|
||||||
|
loginName,
|
||||||
|
groupName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndAddUserToSecurityGroup(System.IAsyncResult asyncResult)
|
||||||
|
{
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void AddUserToSecurityGroupAsync(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
this.AddUserToSecurityGroupAsync(organizationId, loginName, groupName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void AddUserToSecurityGroupAsync(string organizationId, string loginName, string groupName, object userState)
|
||||||
|
{
|
||||||
|
if ((this.AddUserToSecurityGroupOperationCompleted == null))
|
||||||
|
{
|
||||||
|
this.AddUserToSecurityGroupOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddUserToSecurityGroupOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("AddUserToSecurityGroup", new object[] {
|
||||||
|
organizationId,
|
||||||
|
loginName,
|
||||||
|
groupName}, this.AddUserToSecurityGroupOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnAddUserToSecurityGroupOperationCompleted(object arg)
|
||||||
|
{
|
||||||
|
if ((this.AddUserToSecurityGroupCompleted != null))
|
||||||
|
{
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.AddUserToSecurityGroupCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/DeleteUserFromSecurityGroup", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void DeleteUserFromSecurityGroup(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
this.Invoke("DeleteUserFromSecurityGroup", new object[] {
|
||||||
|
organizationId,
|
||||||
|
loginName,
|
||||||
|
groupName});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginDeleteUserFromSecurityGroup(string organizationId, string loginName, string groupName, System.AsyncCallback callback, object asyncState)
|
||||||
|
{
|
||||||
|
return this.BeginInvoke("DeleteUserFromSecurityGroup", new object[] {
|
||||||
|
organizationId,
|
||||||
|
loginName,
|
||||||
|
groupName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndDeleteUserFromSecurityGroup(System.IAsyncResult asyncResult)
|
||||||
|
{
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void DeleteUserFromSecurityGroupAsync(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
this.DeleteUserFromSecurityGroupAsync(organizationId, loginName, groupName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void DeleteUserFromSecurityGroupAsync(string organizationId, string loginName, string groupName, object userState)
|
||||||
|
{
|
||||||
|
if ((this.DeleteUserFromSecurityGroupOperationCompleted == null))
|
||||||
|
{
|
||||||
|
this.DeleteUserFromSecurityGroupOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteUserFromSecurityGroupOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("DeleteUserFromSecurityGroup", new object[] {
|
||||||
|
organizationId,
|
||||||
|
loginName,
|
||||||
|
groupName}, this.DeleteUserFromSecurityGroupOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDeleteUserFromSecurityGroupOperationCompleted(object arg)
|
||||||
|
{
|
||||||
|
if ((this.DeleteUserFromSecurityGroupCompleted != null))
|
||||||
|
{
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.DeleteUserFromSecurityGroupCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserGeneralSettings", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserGeneralSettings", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
@ -1197,6 +1549,82 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void CreateSecurityGroupCompletedEventHandler(object sender, CreateSecurityGroupCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class CreateSecurityGroupCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
|
||||||
|
{
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal CreateSecurityGroupCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState)
|
||||||
|
{
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public int Result
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((int)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetSecurityGroupGeneralSettingsCompletedEventHandler(object sender, GetSecurityGroupGeneralSettingsCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetSecurityGroupGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
|
||||||
|
{
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetSecurityGroupGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState)
|
||||||
|
{
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public OrganizationSecurityGroup Result
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((OrganizationSecurityGroup)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void DeleteSecurityGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void SetSecurityGroupGeneralSettingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void AddUserToSecurityGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void DeleteUserFromSecurityGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
public delegate void SetUserGeneralSettingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
public delegate void SetUserGeneralSettingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
|
@ -110,6 +110,42 @@ namespace WebsitePanel.Server
|
||||||
return Organization.GetUserGeneralSettings(loginName, organizationId);
|
return Organization.GetUserGeneralSettings(loginName, organizationId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public int CreateSecurityGroup(string organizationId, string groupName)
|
||||||
|
{
|
||||||
|
return Organization.CreateSecurityGroup(organizationId, groupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public OrganizationSecurityGroup GetSecurityGroupGeneralSettings(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
return Organization.GetSecurityGroupGeneralSettings(groupName, organizationId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void DeleteSecurityGroup(string groupName, string organizationId)
|
||||||
|
{
|
||||||
|
Organization.DeleteSecurityGroup(groupName, organizationId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void SetSecurityGroupGeneralSettings(string organizationId, string groupName, string[] memberAccounts, string notes)
|
||||||
|
{
|
||||||
|
Organization.SetSecurityGroupGeneralSettings(organizationId, groupName, memberAccounts, notes);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void AddUserToSecurityGroup(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
Organization.AddUserToSecurityGroup(organizationId, loginName, groupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void DeleteUserFromSecurityGroup(string organizationId, string loginName, string groupName)
|
||||||
|
{
|
||||||
|
Organization.DeleteUserFromSecurityGroup(organizationId, loginName, groupName);
|
||||||
|
}
|
||||||
|
|
||||||
[WebMethod, SoapHeader("settings")]
|
[WebMethod, SoapHeader("settings")]
|
||||||
public void SetUserGeneralSettings(string organizationId, string accountName, string displayName, string password,
|
public void SetUserGeneralSettings(string organizationId, string accountName, string displayName, string password,
|
||||||
bool hideFromAddressBook, bool disabled, bool locked, string firstName, string initials, string lastName,
|
bool hideFromAddressBook, bool disabled, bool locked, string firstName, string initials, string lastName,
|
||||||
|
|
|
@ -545,6 +545,10 @@
|
||||||
<Control key="add_lyncuserplan" src="WebsitePanel/Lync/LyncAddLyncUserPlan.ascx" title="LyncAddLyncUserPlan" type="View" />
|
<Control key="add_lyncuserplan" src="WebsitePanel/Lync/LyncAddLyncUserPlan.ascx" title="LyncAddLyncUserPlan" type="View" />
|
||||||
<Control key="edit_lync_user" src="WebsitePanel/Lync/LyncEditUser.ascx" title="Edit Lync User" type="View" />
|
<Control key="edit_lync_user" src="WebsitePanel/Lync/LyncEditUser.ascx" title="Edit Lync User" type="View" />
|
||||||
|
|
||||||
|
<Control key="secur_groups" src="WebsitePanel/ExchangeServer/OrganizationSecurityGroups.ascx" title="OrganizationSecurityGroups" type="View" />
|
||||||
|
<Control key="create_secur_group" src="WebsitePanel/ExchangeServer/OrganizationCreateSecurityGroup.ascx" title="OrganizationSecurityGroup" type="View" />
|
||||||
|
<Control key="secur_group_settings" src="WebsitePanel/ExchangeServer/OrganizationSecurityGroupGeneralSettings.ascx" title="OrganizationSecurityGroup" type="View" />
|
||||||
|
|
||||||
</Controls>
|
</Controls>
|
||||||
</ModuleDefinition>
|
</ModuleDefinition>
|
||||||
|
|
||||||
|
|
|
@ -3301,6 +3301,9 @@
|
||||||
<data name="Quota.HostedSolution.Domains" xml:space="preserve">
|
<data name="Quota.HostedSolution.Domains" xml:space="preserve">
|
||||||
<value>Domains per Organization</value>
|
<value>Domains per Organization</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Quota.HostedSolution.SecurityGroupManagement" xml:space="preserve">
|
||||||
|
<value>Allow Security Group Management</value>
|
||||||
|
</data>
|
||||||
<data name="ResourceGroup.Hosted SharePoint" xml:space="preserve">
|
<data name="ResourceGroup.Hosted SharePoint" xml:space="preserve">
|
||||||
<value>Hosted SharePoint</value>
|
<value>Hosted SharePoint</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -83,5 +83,30 @@ namespace WebsitePanel.Portal
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Security Groups
|
||||||
|
|
||||||
|
ExchangeAccountsPaged accounts;
|
||||||
|
|
||||||
|
public int GetOrganizationSecurityGroupsPagedCount(int itemId, string accountTypes,
|
||||||
|
string filterColumn, string filterValue)
|
||||||
|
{
|
||||||
|
return accounts.RecordsCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExchangeAccount[] GetOrganizationSecurityGroupsPaged(int itemId, string accountTypes,
|
||||||
|
string filterColumn, string filterValue,
|
||||||
|
int maximumRows, int startRowIndex, string sortColumn)
|
||||||
|
{
|
||||||
|
if (!String.IsNullOrEmpty(filterValue))
|
||||||
|
filterValue = filterValue + "%";
|
||||||
|
|
||||||
|
accounts = ES.Services.Organizations.GetOrganizationSecurityGroupsPaged(itemId,
|
||||||
|
filterColumn, filterValue, sortColumn, startRowIndex, maximumRows);
|
||||||
|
|
||||||
|
return accounts.PageItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,144 @@
|
||||||
|
<?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="btnCreate.OnClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Creating group ...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnCreate.Text" xml:space="preserve">
|
||||||
|
<value>Create Group</value>
|
||||||
|
</data>
|
||||||
|
<data name="FormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="locDisplayName.Text" xml:space="preserve">
|
||||||
|
<value>Display Name: *</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Create New Group</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Groups</value>
|
||||||
|
</data>
|
||||||
|
<data name="valRequireDisplayName.ErrorMessage" xml:space="preserve">
|
||||||
|
<value>Enter Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="valRequireDisplayName.Text" xml:space="preserve">
|
||||||
|
<value>*</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,150 @@
|
||||||
|
<?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="btnSave.OnClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Updating group settings...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSave.Text" xml:space="preserve">
|
||||||
|
<value>Save Changes</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkHideAddressBook.Text" xml:space="preserve">
|
||||||
|
<value>Hide from Address Book</value>
|
||||||
|
</data>
|
||||||
|
<data name="FormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="locMembers.Text" xml:space="preserve">
|
||||||
|
<value>Members:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locNotes.Text" xml:space="preserve">
|
||||||
|
<value>Notes:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Edit Group</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Groups</value>
|
||||||
|
</data>
|
||||||
|
<data name="valRequireDisplayName.ErrorMessage" xml:space="preserve">
|
||||||
|
<value>Enter Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="valRequireDisplayName.Text" xml:space="preserve">
|
||||||
|
<value>*</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -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="btnCreateGroup.Text" xml:space="preserve">
|
||||||
|
<value>Create New Group</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.OnClientClick" xml:space="preserve">
|
||||||
|
<value>if(!confirm('Are you sure you want to delete this group?')) return false; else ShowProgressDialog('Deleting group...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.Text" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.ToolTip" xml:space="preserve">
|
||||||
|
<value>Delete Group</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdSearch.AlternateText" xml:space="preserve">
|
||||||
|
<value>Search</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
|
||||||
|
<value>Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="FormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="gvGroups.Empty" xml:space="preserve">
|
||||||
|
<value>No groups have been created. To create a new group click "Create New Group" button.</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvGroupsDisplayName.Header" xml:space="preserve">
|
||||||
|
<value>Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Groups</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Groups</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -1,3 +1,31 @@
|
||||||
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
|
|
@ -39,7 +39,8 @@
|
||||||
MailboxesEnabled="false"
|
MailboxesEnabled="false"
|
||||||
EnableMailboxOnly="true"
|
EnableMailboxOnly="true"
|
||||||
ContactsEnabled="false"
|
ContactsEnabled="false"
|
||||||
DistributionListsEnabled="true" />
|
DistributionListsEnabled="true"
|
||||||
|
SecurityGroupsEnabled="true" />
|
||||||
|
|
||||||
</ContentTemplate>
|
</ContentTemplate>
|
||||||
</asp:UpdatePanel>
|
</asp:UpdatePanel>
|
||||||
|
|
|
@ -41,7 +41,8 @@
|
||||||
MailboxesEnabled="false"
|
MailboxesEnabled="false"
|
||||||
EnableMailboxOnly="true"
|
EnableMailboxOnly="true"
|
||||||
ContactsEnabled="false"
|
ContactsEnabled="false"
|
||||||
DistributionListsEnabled="true" />
|
DistributionListsEnabled="true"
|
||||||
|
SecurityGroupsEnabled="true" />
|
||||||
|
|
||||||
</ContentTemplate>
|
</ContentTemplate>
|
||||||
</asp:UpdatePanel>
|
</asp:UpdatePanel>
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationCreateSecurityGroup.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationCreateSecurityGroup" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/EmailAddress.ascx" TagName="EmailAddress" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Header">
|
||||||
|
<wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" />
|
||||||
|
</div>
|
||||||
|
<div class="Left">
|
||||||
|
<wsp:Menu id="menu" runat="server" SelectedItem="dlists" />
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="Image1" SkinID="ExchangeListAdd48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Create Group"></asp:Localize>
|
||||||
|
</div>
|
||||||
|
<div class="FormBody">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150"><asp:Localize ID="locDisplayName" runat="server" meta:resourcekey="locDisplayName" Text="Display Name: *"></asp:Localize></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtDisplayName" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
|
||||||
|
<asp:RequiredFieldValidator ID="valRequireDisplayName" runat="server" meta:resourcekey="valRequireDisplayName" ControlToValidate="txtDisplayName"
|
||||||
|
ErrorMessage="Enter Display Name" ValidationGroup="CreateGroup" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="FormFooterClean">
|
||||||
|
<asp:Button id="btnCreate" runat="server" Text="Create Group" CssClass="Button1" meta:resourcekey="btnCreate" ValidationGroup="CreateGroup" OnClick="btnCreate_Click"></asp:Button>
|
||||||
|
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="CreateGroup" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,78 @@
|
||||||
|
// 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;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.ExchangeServer
|
||||||
|
{
|
||||||
|
public partial class OrganizationCreateSecurityGroup : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnCreate_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CreateSecurityGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateSecurityGroup()
|
||||||
|
{
|
||||||
|
if (!Page.IsValid)
|
||||||
|
return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int accountId = ES.Services.Organizations.CreateSecurityGroup(PanelRequest.ItemID, txtDisplayName.Text);
|
||||||
|
|
||||||
|
if (accountId < 0)
|
||||||
|
{
|
||||||
|
messageBox.ShowResultMessage(accountId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Response.Redirect(EditUrl("AccountID", accountId.ToString(), "secur_group_settings",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId.ToString(),
|
||||||
|
"ItemID=" + PanelRequest.ItemID.ToString()));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANIZATION_CREATE_SECURITY_GROUP", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class OrganizationCreateSecurityGroup {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 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 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 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 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 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>
|
||||||
|
/// 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 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 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 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>
|
||||||
|
/// btnCreate 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 btnCreate;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationSecurityGroupGeneralSettings.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationSecurityGroupGeneralSettings" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/UsersList.ascx" TagName="UsersList" TagPrefix="wsp"%>
|
||||||
|
<%@ Register Src="UserControls/SecurityGroupTabs.ascx" TagName="SecurityGroupTabs" TagPrefix="wsp"%>
|
||||||
|
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
|
||||||
|
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Header">
|
||||||
|
<wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" />
|
||||||
|
</div>
|
||||||
|
<div class="Left">
|
||||||
|
<wsp:Menu id="menu" runat="server" SelectedItem="secur_groups" />
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="Image1" SkinID="ExchangeList48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit Security Group"></asp:Localize>
|
||||||
|
|
||||||
|
<asp:Literal ID="litDisplayName" runat="server" Text="John Smith" />
|
||||||
|
</div>
|
||||||
|
<div class="FormBody">
|
||||||
|
<wsp:SecurityGroupTabs id="tabs" runat="server" SelectedTab="secur_group_settings" />
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150"><asp:Localize ID="locDisplayName" runat="server" meta:resourcekey="locDisplayName" Text="Display Name: *"></asp:Localize></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtDisplayName" runat="server" CssClass="HugeTextBox200" ValidationGroup="CreateMailbox"></asp:TextBox>
|
||||||
|
<asp:RequiredFieldValidator ID="valRequireDisplayName" runat="server" meta:resourcekey="valRequireDisplayName" ControlToValidate="txtDisplayName"
|
||||||
|
ErrorMessage="Enter Display Name" ValidationGroup="EditList" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2"><asp:Localize ID="locMembers" runat="server" meta:resourcekey="locMembers" Text="Members:"></asp:Localize></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
<wsp:UsersList id="members" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150" colspan="2"><asp:Localize ID="locNotes" runat="server" meta:resourcekey="locNotes" Text="Notes:"></asp:Localize></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
<asp:TextBox ID="txtNotes" runat="server" CssClass="TextBox200" Rows="4" TextMode="MultiLine"></asp:TextBox>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="FormFooterClean">
|
||||||
|
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1" meta:resourcekey="btnSave" ValidationGroup="EditList" OnClick="btnSave_Click"></asp:Button>
|
||||||
|
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditList" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,122 @@
|
||||||
|
// 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.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.ExchangeServer
|
||||||
|
{
|
||||||
|
public partial class OrganizationSecurityGroupGeneralSettings : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
BindSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindSettings()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// get settings
|
||||||
|
OrganizationSecurityGroup securityGroup = ES.Services.Organizations.GetSecurityGroupGeneralSettings(
|
||||||
|
PanelRequest.ItemID, PanelRequest.AccountID);
|
||||||
|
|
||||||
|
litDisplayName.Text = PortalAntiXSS.Encode(securityGroup.DisplayName);
|
||||||
|
|
||||||
|
// bind form
|
||||||
|
txtDisplayName.Text = securityGroup.DisplayName;
|
||||||
|
|
||||||
|
members.SetAccounts(securityGroup.MembersAccounts);
|
||||||
|
|
||||||
|
txtNotes.Text = securityGroup.Notes;
|
||||||
|
|
||||||
|
if (securityGroup.IsDefault)
|
||||||
|
{
|
||||||
|
txtDisplayName.ReadOnly = true;
|
||||||
|
txtNotes.ReadOnly = true;
|
||||||
|
members.Enabled = false;
|
||||||
|
|
||||||
|
btnSave.Visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANIZATION_GET_SECURITY_GROUP_SETTINGS", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveSettings()
|
||||||
|
{
|
||||||
|
if (!Page.IsValid)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int result = ES.Services.Organizations.SetSecurityGroupGeneralSettings(
|
||||||
|
PanelRequest.ItemID,
|
||||||
|
PanelRequest.AccountID,
|
||||||
|
txtDisplayName.Text,
|
||||||
|
members.GetAccounts(),
|
||||||
|
txtNotes.Text);
|
||||||
|
|
||||||
|
if (result < 0)
|
||||||
|
{
|
||||||
|
messageBox.ShowResultMessage(result);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
litDisplayName.Text = PortalAntiXSS.Encode(txtDisplayName.Text);
|
||||||
|
|
||||||
|
messageBox.ShowSuccessMessage("ORGANIZATION_UPDATE_SECURITY_GROUP_SETTINGS");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANIZATION_UPDATE_SECURITY_GROUP_SETTINGS", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnSave_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,197 @@
|
||||||
|
// Copyright (c) 2012, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 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 {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class OrganizationSecurityGroupGeneralSettings {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 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 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 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 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 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 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>
|
||||||
|
/// tabs 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.SecurityGroupTabs tabs;
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// 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 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 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>
|
||||||
|
/// locMembers 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 locMembers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// members 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.UsersList members;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locNotes control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Localize locNotes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtNotes control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.TextBox txtNotes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 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 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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,90 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationSecurityGroups.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationSecurityGroups" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Header">
|
||||||
|
<wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" />
|
||||||
|
</div>
|
||||||
|
<div class="Left">
|
||||||
|
<wsp:Menu id="menu" runat="server" SelectedItem="secur_groups" />
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="Image1" SkinID="ExchangeList48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Groups"></asp:Localize>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormBody">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<div class="FormButtonsBarCleanLeft">
|
||||||
|
<asp:Button ID="btnCreateGroup" runat="server" meta:resourcekey="btnCreateGroup"
|
||||||
|
Text="Create New Group" CssClass="Button1" OnClick="btnCreateGroup_Click" />
|
||||||
|
</div>
|
||||||
|
<div class="FormButtonsBarCleanRight">
|
||||||
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<asp:Localize ID="locSearch" runat="server" meta:resourcekey="locSearch" Visible="false"></asp:Localize>
|
||||||
|
<asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="True"
|
||||||
|
onselectedindexchanged="ddlPageSize_SelectedIndexChanged">
|
||||||
|
<asp:ListItem>10</asp:ListItem>
|
||||||
|
<asp:ListItem Selected="True">20</asp:ListItem>
|
||||||
|
<asp:ListItem>50</asp:ListItem>
|
||||||
|
<asp:ListItem>100</asp:ListItem>
|
||||||
|
</asp:DropDownList>
|
||||||
|
|
||||||
|
<asp:DropDownList ID="ddlSearchColumn" runat="server" CssClass="NormalTextBox">
|
||||||
|
<asp:ListItem Value="DisplayName" meta:resourcekey="ddlSearchColumnDisplayName">DisplayName</asp:ListItem>
|
||||||
|
</asp:DropDownList><asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100"></asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton"
|
||||||
|
CausesValidation="false"/>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<asp:GridView ID="gvGroups" runat="server" AutoGenerateColumns="False" EnableViewState="true"
|
||||||
|
Width="100%" EmptyDataText="gvGroups" CssSelectorClass="NormalGridView"
|
||||||
|
OnRowCommand="gvSecurityGroups_RowCommand" AllowPaging="True" AllowSorting="True"
|
||||||
|
DataSourceID="odsSecurityGroupsPaged" PageSize="20">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField HeaderText="gvGroupsDisplayName" SortExpression="DisplayName">
|
||||||
|
<ItemStyle Width="100%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:hyperlink id="lnk1" runat="server"
|
||||||
|
NavigateUrl='<%# GetListEditUrl(Eval("AccountId").ToString()) %>'>
|
||||||
|
<%# Eval("DisplayName") %>
|
||||||
|
</asp:hyperlink>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:ImageButton ID="cmdDelete" runat="server" Text="Delete" SkinID="ExchangeDelete"
|
||||||
|
CommandName="DeleteItem" CommandArgument='<%# Eval("AccountId") %>' Visible='<%# IsNotDefault(Eval("AccountType").ToString()) %>'
|
||||||
|
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Remove this item?');"></asp:ImageButton>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
<asp:ObjectDataSource ID="odsSecurityGroupsPaged" runat="server" EnablePaging="True"
|
||||||
|
SelectCountMethod="GetOrganizationSecurityGroupsPagedCount"
|
||||||
|
SelectMethod="GetOrganizationSecurityGroupsPaged"
|
||||||
|
SortParameterName="sortColumn"
|
||||||
|
TypeName="WebsitePanel.Portal.OrganizationsHelper"
|
||||||
|
OnSelected="odsSecurityGroupsPaged_Selected">
|
||||||
|
<SelectParameters>
|
||||||
|
<asp:QueryStringParameter Name="itemId" QueryStringField="ItemID" DefaultValue="0" />
|
||||||
|
<asp:Parameter Name="accountTypes" DefaultValue="8" />
|
||||||
|
<asp:ControlParameter Name="filterColumn" ControlID="ddlSearchColumn" PropertyName="SelectedValue" />
|
||||||
|
<asp:ControlParameter Name="filterValue" ControlID="txtSearchValue" PropertyName="Text" />
|
||||||
|
</SelectParameters>
|
||||||
|
</asp:ObjectDataSource>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,114 @@
|
||||||
|
// 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.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.ExchangeServer
|
||||||
|
{
|
||||||
|
public partial class OrganizationSecurityGroups : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnCreateGroup_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "create_secur_group",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId.ToString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetListEditUrl(string accountId)
|
||||||
|
{
|
||||||
|
return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "secur_group_settings",
|
||||||
|
"AccountID=" + accountId,
|
||||||
|
"ItemID=" + PanelRequest.ItemID.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsNotDefault(string accountType)
|
||||||
|
{
|
||||||
|
return (ExchangeAccountType)Enum.Parse(typeof(ExchangeAccountType), accountType) != ExchangeAccountType.DefaultSecurityGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void odsSecurityGroupsPaged_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Exception != null)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANIZATION_GET_SECURITY_GROUP", e.Exception);
|
||||||
|
e.ExceptionHandled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void gvSecurityGroups_RowCommand(object sender, GridViewCommandEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.CommandName == "DeleteItem")
|
||||||
|
{
|
||||||
|
// delete security group
|
||||||
|
int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int result = ES.Services.Organizations.DeleteSecurityGroup(PanelRequest.ItemID, accountId);
|
||||||
|
if (result < 0)
|
||||||
|
{
|
||||||
|
messageBox.ShowResultMessage(result);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// rebind grid
|
||||||
|
gvGroups.DataBind();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANIZATION_DELETE_SECURITY_GROUP", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
gvGroups.PageSize = Convert.ToInt16(ddlPageSize.SelectedValue);
|
||||||
|
|
||||||
|
// rebind grid
|
||||||
|
gvGroups.DataBind();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,150 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class OrganizationSecurityGroups {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 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 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 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 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 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>
|
||||||
|
/// 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>
|
||||||
|
/// btnCreateGroup 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 btnCreateGroup;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SearchPanel 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 SearchPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locSearch 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 locSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlPageSize 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 ddlPageSize;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlSearchColumn 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 ddlSearchColumn;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtSearchValue 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 txtSearchValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// cmdSearch 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.ImageButton cmdSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvGroups 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 gvGroups;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// odsSecurityGroupsPaged 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 odsSecurityGroupsPaged;
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,6 +10,7 @@
|
||||||
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
|
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
|
||||||
<%@ Register Src="UserControls/EmailAddress.ascx" TagName="EmailAddress" TagPrefix="wsp" %>
|
<%@ Register Src="UserControls/EmailAddress.ascx" TagName="EmailAddress" TagPrefix="wsp" %>
|
||||||
<%@ Register Src="UserControls/AccountsList.ascx" TagName="AccountsList" TagPrefix="wsp" %>
|
<%@ Register Src="UserControls/AccountsList.ascx" TagName="AccountsList" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/GroupsList.ascx" TagName="GroupsList" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,9 +43,9 @@
|
||||||
<uc1:MailboxTabs ID="MailboxTabsId" runat="server" SelectedTab="user_memberof" />
|
<uc1:MailboxTabs ID="MailboxTabsId" runat="server" SelectedTab="user_memberof" />
|
||||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
<wsp:CollapsiblePanel id="secDistributionLists" runat="server" TargetControlID="DistributionLists" meta:resourcekey="secDistributionLists" Text="Distribution Lists"></wsp:CollapsiblePanel>
|
<wsp:CollapsiblePanel id="secDistributionLists" runat="server" TargetControlID="DistributionListsPanel" meta:resourcekey="secDistributionLists" Text="Distribution Lists"></wsp:CollapsiblePanel>
|
||||||
<asp:Panel ID="DistributionLists" runat="server" Height="0" style="overflow:hidden;">
|
<asp:Panel ID="DistributionListsPanel" runat="server" Height="0" style="overflow:hidden;">
|
||||||
<asp:UpdatePanel ID="GeneralUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
<asp:UpdatePanel ID="DLGeneralUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
<ContentTemplate>
|
<ContentTemplate>
|
||||||
|
|
||||||
<wsp:AccountsList id="distrlists" runat="server"
|
<wsp:AccountsList id="distrlists" runat="server"
|
||||||
|
@ -57,6 +58,16 @@
|
||||||
</asp:UpdatePanel>
|
</asp:UpdatePanel>
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
|
|
||||||
|
<wsp:CollapsiblePanel id="secSecurityGroups" runat="server" TargetControlID="SecurityGroupsPanel" meta:resourcekey="secSecurityGroups" Text="Groups"></wsp:CollapsiblePanel>
|
||||||
|
<asp:Panel ID="SecurityGroupsPanel" runat="server" Height="0" style="overflow:hidden;">
|
||||||
|
<asp:UpdatePanel ID="SCGeneralUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
|
||||||
|
<wsp:GroupsList id="securegroups" runat="server" />
|
||||||
|
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
<div class="FormFooterClean">
|
<div class="FormFooterClean">
|
||||||
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1"
|
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1"
|
||||||
|
|
|
@ -58,11 +58,17 @@ namespace WebsitePanel.Portal.HostedSolution
|
||||||
|
|
||||||
// title
|
// title
|
||||||
litDisplayName.Text = mailbox.DisplayName;
|
litDisplayName.Text = mailbox.DisplayName;
|
||||||
|
|
||||||
|
//Distribution Lists
|
||||||
ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
|
ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
|
||||||
|
|
||||||
distrlists.SetAccounts(dLists);
|
distrlists.SetAccounts(dLists);
|
||||||
|
|
||||||
|
//Security Groups
|
||||||
|
ExchangeAccount[] securGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
|
||||||
|
|
||||||
|
securegroups.SetAccounts(securGroups);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -77,6 +83,7 @@ namespace WebsitePanel.Portal.HostedSolution
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
//Distribution Lists
|
||||||
ExchangeAccount[] oldDistributionLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
|
ExchangeAccount[] oldDistributionLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
|
||||||
List<string> newDistributionLists = new List<string>(distrlists.GetAccounts());
|
List<string> newDistributionLists = new List<string>(distrlists.GetAccounts());
|
||||||
foreach (ExchangeAccount oldlist in oldDistributionLists)
|
foreach (ExchangeAccount oldlist in oldDistributionLists)
|
||||||
|
@ -90,7 +97,29 @@ namespace WebsitePanel.Portal.HostedSolution
|
||||||
foreach (string newlist in newDistributionLists)
|
foreach (string newlist in newDistributionLists)
|
||||||
ES.Services.ExchangeServer.AddDistributionListMember(PanelRequest.ItemID, newlist, PanelRequest.AccountID);
|
ES.Services.ExchangeServer.AddDistributionListMember(PanelRequest.ItemID, newlist, PanelRequest.AccountID);
|
||||||
|
|
||||||
|
//Security Groups
|
||||||
|
ExchangeAccount[] oldDSecurityGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
|
||||||
|
List<string> newSecurityGroups = new List<string>(securegroups.GetAccounts());
|
||||||
|
foreach (ExchangeAccount oldgroup in oldDSecurityGroups)
|
||||||
|
{
|
||||||
|
if (newSecurityGroups.Contains(oldgroup.AccountName))
|
||||||
|
{
|
||||||
|
newSecurityGroups.Remove(oldgroup.AccountName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ES.Services.Organizations.DeleteUserFromSecurityGroup(PanelRequest.ItemID, PanelRequest.AccountID, oldgroup.AccountName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string newgroup in newSecurityGroups)
|
||||||
|
{
|
||||||
|
ES.Services.Organizations.AddUserToSecurityGroup(PanelRequest.ItemID, PanelRequest.AccountID, newgroup);
|
||||||
|
}
|
||||||
|
|
||||||
messageBox.ShowSuccessMessage("EXCHANGE_UPDATE_MAILBOX_SETTINGS");
|
messageBox.ShowSuccessMessage("EXCHANGE_UPDATE_MAILBOX_SETTINGS");
|
||||||
|
|
||||||
|
|
||||||
BindSettings();
|
BindSettings();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
@ -1,3 +1,32 @@
|
||||||
|
// Copyright (c) 2012, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
@ -103,22 +132,22 @@ namespace WebsitePanel.Portal.HostedSolution {
|
||||||
protected global::WebsitePanel.Portal.CollapsiblePanel secDistributionLists;
|
protected global::WebsitePanel.Portal.CollapsiblePanel secDistributionLists;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DistributionLists control.
|
/// DistributionListsPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Panel DistributionLists;
|
protected global::System.Web.UI.WebControls.Panel DistributionListsPanel;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// GeneralUpdatePanel control.
|
/// DLGeneralUpdatePanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.UpdatePanel GeneralUpdatePanel;
|
protected global::System.Web.UI.UpdatePanel DLGeneralUpdatePanel;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// distrlists control.
|
/// distrlists control.
|
||||||
|
@ -129,6 +158,42 @@ namespace WebsitePanel.Portal.HostedSolution {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList distrlists;
|
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList distrlists;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// secSecurityGroups control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.CollapsiblePanel secSecurityGroups;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SecurityGroupsPanel 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 SecurityGroupsPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SCGeneralUpdatePanel 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 SCGeneralUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// securegroups 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.GroupsList securegroups;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnSave control.
|
/// btnSave control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -69,6 +69,8 @@
|
||||||
meta:resourcekey="chkIncludeContacts" AutoPostBack="true" CssClass="Normal" OnCheckedChanged="chkIncludeMailboxes_CheckedChanged" />
|
meta:resourcekey="chkIncludeContacts" AutoPostBack="true" CssClass="Normal" OnCheckedChanged="chkIncludeMailboxes_CheckedChanged" />
|
||||||
<asp:CheckBox ID="chkIncludeLists" runat="server" Text="Distribution Lists" Checked="true"
|
<asp:CheckBox ID="chkIncludeLists" runat="server" Text="Distribution Lists" Checked="true"
|
||||||
meta:resourcekey="chkIncludeLists" AutoPostBack="true" CssClass="Normal" OnCheckedChanged="chkIncludeMailboxes_CheckedChanged" />
|
meta:resourcekey="chkIncludeLists" AutoPostBack="true" CssClass="Normal" OnCheckedChanged="chkIncludeMailboxes_CheckedChanged" />
|
||||||
|
<asp:CheckBox ID="chkIncludeGroups" runat="server" Text="Groups" Checked="true"
|
||||||
|
meta:resourcekey="chkIncludeGroups" AutoPostBack="true" CssClass="Normal" OnCheckedChanged="chkIncludeMailboxes_CheckedChanged" />
|
||||||
</div>
|
</div>
|
||||||
<div class="FormButtonsBarClean">
|
<div class="FormButtonsBarClean">
|
||||||
<div class="FormButtonsBarCleanRight">
|
<div class="FormButtonsBarCleanRight">
|
||||||
|
|
|
@ -67,6 +67,12 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
set { ViewState["DistributionListsEnabled"] = value; }
|
set { ViewState["DistributionListsEnabled"] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool SecurityGroupsEnabled
|
||||||
|
{
|
||||||
|
get { return ViewState["SecurityGroupsEnabled"] != null ? (bool)ViewState["SecurityGroupsEnabled"] : false; }
|
||||||
|
set { ViewState["SecurityGroupsEnabled"] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
public int ExcludeAccountId
|
public int ExcludeAccountId
|
||||||
{
|
{
|
||||||
get { return PanelRequest.AccountID; }
|
get { return PanelRequest.AccountID; }
|
||||||
|
@ -109,6 +115,9 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
chkIncludeContacts.Checked = ContactsEnabled;
|
chkIncludeContacts.Checked = ContactsEnabled;
|
||||||
chkIncludeLists.Visible = DistributionListsEnabled;
|
chkIncludeLists.Visible = DistributionListsEnabled;
|
||||||
chkIncludeLists.Checked = DistributionListsEnabled;
|
chkIncludeLists.Checked = DistributionListsEnabled;
|
||||||
|
|
||||||
|
chkIncludeGroups.Visible = SecurityGroupsEnabled;
|
||||||
|
chkIncludeGroups.Checked = SecurityGroupsEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
// register javascript
|
// register javascript
|
||||||
|
@ -131,14 +140,16 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
{
|
{
|
||||||
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
||||||
string imgName = "mailbox_16.gif";
|
string imgName = "mailbox_16.gif";
|
||||||
if (accountType == ExchangeAccountType.Contact)
|
if (accountType == ExchangeAccountType.Contact)
|
||||||
imgName = "contact_16.gif";
|
imgName = "contact_16.gif";
|
||||||
else if (accountType == ExchangeAccountType.DistributionList)
|
else if (accountType == ExchangeAccountType.DistributionList)
|
||||||
imgName = "dlist_16.gif";
|
imgName = "dlist_16.gif";
|
||||||
else if (accountType == ExchangeAccountType.Room)
|
else if (accountType == ExchangeAccountType.Room)
|
||||||
imgName = "room_16.gif";
|
imgName = "room_16.gif";
|
||||||
else if (accountType == ExchangeAccountType.Equipment)
|
else if (accountType == ExchangeAccountType.Equipment)
|
||||||
imgName = "equipment_16.gif";
|
imgName = "equipment_16.gif";
|
||||||
|
else if (accountType == ExchangeAccountType.Equipment)
|
||||||
|
imgName = "dlist_16.gif";
|
||||||
|
|
||||||
return GetThemedImage("Exchange/" + imgName);
|
return GetThemedImage("Exchange/" + imgName);
|
||||||
}
|
}
|
||||||
|
@ -174,7 +185,7 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
{
|
{
|
||||||
ExchangeAccount[] accounts = ES.Services.ExchangeServer.SearchAccounts(PanelRequest.ItemID,
|
ExchangeAccount[] accounts = ES.Services.ExchangeServer.SearchAccounts(PanelRequest.ItemID,
|
||||||
chkIncludeMailboxes.Checked, chkIncludeContacts.Checked, chkIncludeLists.Checked,
|
chkIncludeMailboxes.Checked, chkIncludeContacts.Checked, chkIncludeLists.Checked,
|
||||||
chkIncludeRooms.Checked, chkIncludeEquipment.Checked,
|
chkIncludeRooms.Checked, chkIncludeEquipment.Checked, chkIncludeGroups.Checked,
|
||||||
ddlSearchColumn.SelectedValue, txtSearchValue.Text + "%", "");
|
ddlSearchColumn.SelectedValue, txtSearchValue.Text + "%", "");
|
||||||
|
|
||||||
if (ExcludeAccountId > 0)
|
if (ExcludeAccountId > 0)
|
||||||
|
|
|
@ -1,22 +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.
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.832
|
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace WebsitePanel.Portal.ExchangeServer.UserControls {
|
namespace WebsitePanel.Portal.ExchangeServer.UserControls {
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// AccountsList class.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated class.
|
|
||||||
/// </remarks>
|
|
||||||
public partial class AccountsList {
|
public partial class AccountsList {
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -136,6 +157,15 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.CheckBox chkIncludeLists;
|
protected global::System.Web.UI.WebControls.CheckBox chkIncludeLists;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkIncludeGroups 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 chkIncludeGroups;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SearchPanel control.
|
/// SearchPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -184,7 +184,7 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
{
|
{
|
||||||
ExchangeAccount[] accounts = ES.Services.ExchangeServer.SearchAccounts(PanelRequest.ItemID,
|
ExchangeAccount[] accounts = ES.Services.ExchangeServer.SearchAccounts(PanelRequest.ItemID,
|
||||||
chkIncludeMailboxes.Checked, chkIncludeContacts.Checked, chkIncludeLists.Checked,
|
chkIncludeMailboxes.Checked, chkIncludeContacts.Checked, chkIncludeLists.Checked,
|
||||||
chkIncludeRooms.Checked, chkIncludeEquipment.Checked,
|
chkIncludeRooms.Checked, chkIncludeEquipment.Checked, false,
|
||||||
ddlSearchColumn.SelectedValue, txtSearchValue.Text + "%", "");
|
ddlSearchColumn.SelectedValue, txtSearchValue.Text + "%", "");
|
||||||
|
|
||||||
if (ExcludeAccountId > 0)
|
if (ExcludeAccountId > 0)
|
||||||
|
|
|
@ -112,10 +112,10 @@
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
<value>Add...</value>
|
<value>Add...</value>
|
||||||
|
@ -135,6 +135,9 @@
|
||||||
<data name="chkIncludeEquipment.Text" xml:space="preserve">
|
<data name="chkIncludeEquipment.Text" xml:space="preserve">
|
||||||
<value>Equipment</value>
|
<value>Equipment</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="chkIncludeGroups" xml:space="preserve">
|
||||||
|
<value>Groups</value>
|
||||||
|
</data>
|
||||||
<data name="chkIncludeLists.Text" xml:space="preserve">
|
<data name="chkIncludeLists.Text" xml:space="preserve">
|
||||||
<value>Distribution Lists</value>
|
<value>Distribution Lists</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -0,0 +1,147 @@
|
||||||
|
<?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="btnAddSelected.Text" xml:space="preserve">
|
||||||
|
<value>Add Groups</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnCancel.Text" xml:space="preserve">
|
||||||
|
<value>Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnDelete.Text" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
|
||||||
|
<value>Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvGroups.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>The list of groups is empty. Click "Add..." button to add groups.</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvGroupsDisplayName.HeaderText" xml:space="preserve">
|
||||||
|
<value>Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPopupGroups.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>No groups found.</value>
|
||||||
|
</data>
|
||||||
|
<data name="headerAddGroups.Text" xml:space="preserve">
|
||||||
|
<value>Groups</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -201,4 +201,7 @@
|
||||||
<data name="Text.LyncFederationDomains" xml:space="preserve">
|
<data name="Text.LyncFederationDomains" xml:space="preserve">
|
||||||
<value>Lync Federation Domains</value>
|
<value>Lync Federation Domains</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Text.SecurityGroups" xml:space="preserve">
|
||||||
|
<value>Groups</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -0,0 +1,135 @@
|
||||||
|
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="Tab.Addresses" xml:space="preserve">
|
||||||
|
<value>E-mail Addresses</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tab.Mailflow" xml:space="preserve">
|
||||||
|
<value>Mail Flow Settings</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tab.Settings" xml:space="preserve">
|
||||||
|
<value>General</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tab.Permissions" xml:space="preserve">
|
||||||
|
<value>Permissions</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tab.MemberOf" xml:space="preserve">
|
||||||
|
<value>Member Of</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,171 @@
|
||||||
|
<?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="btnAddSelected.Text" xml:space="preserve">
|
||||||
|
<value>Add Accounts</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnCancel.Text" xml:space="preserve">
|
||||||
|
<value>Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnDelete.Text" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkIncludeContacts.Text" xml:space="preserve">
|
||||||
|
<value>Contacts</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkIncludeEquipment.Text" xml:space="preserve">
|
||||||
|
<value>Equipment</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkIncludeLists.Text" xml:space="preserve">
|
||||||
|
<value>Distribution Lists</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkIncludeMailboxes.Text" xml:space="preserve">
|
||||||
|
<value>Mailboxes</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkIncludeRooms.Text" xml:space="preserve">
|
||||||
|
<value>Rooms</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
|
||||||
|
<value>Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlSearchColumnEmail.Text" xml:space="preserve">
|
||||||
|
<value>E-mail Address</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvAccounts.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>The list of accounts is empty. Click "Add..." button to add accounts.</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvAccountsDisplayName.HeaderText" xml:space="preserve">
|
||||||
|
<value>Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvAccountsEmail.HeaderText" xml:space="preserve">
|
||||||
|
<value>E-mail Address</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPopupAccounts.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>No accounts found.</value>
|
||||||
|
</data>
|
||||||
|
<data name="headerAddAccounts.Text" xml:space="preserve">
|
||||||
|
<value>Organization Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="locIncludeSearch.Text" xml:space="preserve">
|
||||||
|
<value>Include in search:</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,105 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="GroupsList.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.UserControls.GroupsList" %>
|
||||||
|
<%@ Register Src="../../UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<asp:UpdatePanel ID="GroupsUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<asp:Button ID="btnAdd" runat="server" Text="Add..." CssClass="Button1" OnClick="btnAdd_Click" meta:resourcekey="btnAdd" />
|
||||||
|
<asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="Button1" OnClick="btnDelete_Click" meta:resourcekey="btnDelete"/>
|
||||||
|
</div>
|
||||||
|
<asp:GridView ID="gvGroups" runat="server" meta:resourcekey="gvAccounts" AutoGenerateColumns="False"
|
||||||
|
Width="600px" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="AccountName">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
<asp:Literal ID="litAccountType" runat="server" Visible="false" Text='<%# Eval("AccountType") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvGroupsDisplayName" HeaderText="gvGroupsDisplayName">
|
||||||
|
<HeaderStyle Wrap="false" />
|
||||||
|
<ItemStyle Width="100%" Wrap="false"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Image ID="img1" runat="server" ImageUrl='<%# GetAccountImage((int)Eval("AccountType")) %>' ImageAlign="AbsMiddle" />
|
||||||
|
<asp:Literal ID="litDisplayName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
|
||||||
|
|
||||||
|
<asp:Panel ID="AddGroupsPanel" runat="server" CssClass="Popup" style="display:none">
|
||||||
|
<table class="Popup-Header" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td class="Popup-HeaderLeft"></td>
|
||||||
|
<td class="Popup-HeaderTitle">
|
||||||
|
<asp:Localize ID="headerAddGroups" runat="server" meta:resourcekey="headerAddGroups"></asp:Localize>
|
||||||
|
</td>
|
||||||
|
<td class="Popup-HeaderRight"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="Popup-Content">
|
||||||
|
<div class="Popup-Body">
|
||||||
|
<br />
|
||||||
|
<asp:UpdatePanel ID="AddGroupsUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<div class="FormButtonsBarCleanRight">
|
||||||
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<asp:DropDownList ID="ddlSearchColumn" runat="server" CssClass="NormalTextBox">
|
||||||
|
<asp:ListItem Value="DisplayName" meta:resourcekey="ddlSearchColumnDisplayName">DisplayName</asp:ListItem>
|
||||||
|
</asp:DropDownList><asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100"></asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton"
|
||||||
|
CausesValidation="false" OnClick="cmdSearch_Click"/>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="Popup-Scroll">
|
||||||
|
<asp:GridView ID="gvPopupGroups" runat="server" meta:resourcekey="gvPopupGroups" AutoGenerateColumns="False"
|
||||||
|
Width="100%" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="AccountName">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
<asp:Literal ID="litAccountType" runat="server" Visible="false" Text='<%# Eval("AccountType") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvGroupsDisplayName">
|
||||||
|
<ItemStyle Width="100%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Image ID="img1" runat="server" ImageUrl='<%# GetAccountImage((int)Eval("AccountType")) %>' ImageAlign="AbsMiddle" />
|
||||||
|
<asp:Literal ID="litDisplayName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
</div>
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormFooter">
|
||||||
|
<asp:Button ID="btnAddSelected" runat="server" CssClass="Button1" meta:resourcekey="btnAddSelected" Text="Add Accounts" OnClick="btnAddSelected_Click" />
|
||||||
|
<asp:Button ID="btnCancelAdd" runat="server" CssClass="Button1" meta:resourcekey="btnCancel" Text="Cancel" CausesValidation="false" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<asp:Button ID="btnAddAccountsFake" runat="server" style="display:none;" />
|
||||||
|
<ajaxToolkit:ModalPopupExtender ID="AddGroupsModal" runat="server"
|
||||||
|
TargetControlID="btnAddAccountsFake" PopupControlID="AddGroupsPanel"
|
||||||
|
BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="btnCancelAdd" />
|
||||||
|
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
|
@ -0,0 +1,232 @@
|
||||||
|
// 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.UI;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
|
{
|
||||||
|
public partial class GroupsList : WebsitePanelControlBase
|
||||||
|
{
|
||||||
|
private enum SelectedState
|
||||||
|
{
|
||||||
|
All,
|
||||||
|
Selected,
|
||||||
|
Unselected
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetAccounts(ExchangeAccount[] accounts)
|
||||||
|
{
|
||||||
|
BindAccounts(accounts, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string[] GetAccounts()
|
||||||
|
{
|
||||||
|
// get selected accounts
|
||||||
|
List<ExchangeAccount> selectedAccounts = GetGridViewAccounts(gvGroups, SelectedState.All);
|
||||||
|
|
||||||
|
List<string> accountNames = new List<string>();
|
||||||
|
foreach (ExchangeAccount account in selectedAccounts)
|
||||||
|
accountNames.Add(account.AccountName);
|
||||||
|
|
||||||
|
return accountNames.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// register javascript
|
||||||
|
if (!Page.ClientScript.IsClientScriptBlockRegistered("SelectAllCheckboxes"))
|
||||||
|
{
|
||||||
|
string script = @" 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;
|
||||||
|
}";
|
||||||
|
Page.ClientScript.RegisterClientScriptBlock(typeof(AccountsList), "SelectAllCheckboxes",
|
||||||
|
script, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetAccountImage(int accountTypeId)
|
||||||
|
{
|
||||||
|
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
||||||
|
string imgName = "dlist_16.gif";
|
||||||
|
|
||||||
|
return GetThemedImage("Exchange/" + imgName);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAdd_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// bind all accounts
|
||||||
|
BindPopupAccounts();
|
||||||
|
|
||||||
|
// show modal
|
||||||
|
AddGroupsModal.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnDelete_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// get selected accounts
|
||||||
|
List<ExchangeAccount> selectedAccounts = GetGridViewAccounts(gvGroups, SelectedState.Unselected);
|
||||||
|
|
||||||
|
// add to the main list
|
||||||
|
BindAccounts(selectedAccounts.ToArray(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAddSelected_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// get selected accounts
|
||||||
|
List<ExchangeAccount> selectedAccounts = GetGridViewAccounts(gvPopupGroups, SelectedState.Selected);
|
||||||
|
|
||||||
|
// add to the main list
|
||||||
|
BindAccounts(selectedAccounts.ToArray(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindPopupAccounts()
|
||||||
|
{
|
||||||
|
ExchangeAccount[] accounts = ES.Services.Organizations.SearchOrganizationAccounts(PanelRequest.ItemID,
|
||||||
|
ddlSearchColumn.SelectedValue, txtSearchValue.Text + "%", "", true);
|
||||||
|
|
||||||
|
accounts = accounts.Where(x => !GetAccounts().Contains(x.AccountName)).ToArray();
|
||||||
|
|
||||||
|
gvPopupGroups.DataSource = accounts;
|
||||||
|
gvPopupGroups.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindAccounts(ExchangeAccount[] newAccounts, bool preserveExisting)
|
||||||
|
{
|
||||||
|
// get binded addresses
|
||||||
|
List<ExchangeAccount> accounts = new List<ExchangeAccount>();
|
||||||
|
if(preserveExisting)
|
||||||
|
accounts.AddRange(GetGridViewAccounts(gvGroups, SelectedState.All));
|
||||||
|
|
||||||
|
// add new accounts
|
||||||
|
if (newAccounts != null)
|
||||||
|
{
|
||||||
|
foreach (ExchangeAccount newAccount in newAccounts)
|
||||||
|
{
|
||||||
|
// check if exists
|
||||||
|
bool exists = false;
|
||||||
|
foreach (ExchangeAccount account in accounts)
|
||||||
|
{
|
||||||
|
if (String.Compare(newAccount.AccountName, account.AccountName, true) == 0)
|
||||||
|
{
|
||||||
|
exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exists)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
accounts.Add(newAccount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gvGroups.DataSource = accounts;
|
||||||
|
gvGroups.DataBind();
|
||||||
|
|
||||||
|
UpdateGridViewAccounts(gvGroups);
|
||||||
|
|
||||||
|
btnDelete.Visible = gvGroups.Rows.Count > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ExchangeAccount> GetGridViewAccounts(GridView gv, SelectedState state)
|
||||||
|
{
|
||||||
|
List<ExchangeAccount> accounts = new List<ExchangeAccount>();
|
||||||
|
for (int i = 0; i < gv.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
GridViewRow row = gv.Rows[i];
|
||||||
|
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||||
|
if (chkSelect == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ExchangeAccount account = new ExchangeAccount();
|
||||||
|
account.AccountType = (ExchangeAccountType)Enum.Parse(typeof(ExchangeAccountType), ((Literal)row.FindControl("litAccountType")).Text);
|
||||||
|
account.AccountName = (string)gv.DataKeys[i][0];
|
||||||
|
account.DisplayName = ((Literal)row.FindControl("litDisplayName")).Text;
|
||||||
|
|
||||||
|
if(state == SelectedState.All ||
|
||||||
|
(state == SelectedState.Selected && chkSelect.Checked) ||
|
||||||
|
(state == SelectedState.Unselected && !chkSelect.Checked))
|
||||||
|
accounts.Add(account);
|
||||||
|
}
|
||||||
|
return accounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateGridViewAccounts(GridView gv)
|
||||||
|
{
|
||||||
|
CheckBox chkSelectAll = (CheckBox)gv.HeaderRow.FindControl("chkSelectAll");
|
||||||
|
|
||||||
|
for (int i = 0; i < gv.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
GridViewRow row = gv.Rows[i];
|
||||||
|
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||||
|
if (chkSelect == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ExchangeAccountType exAccountType = (ExchangeAccountType)Enum.Parse(typeof(ExchangeAccountType), ((Literal)row.FindControl("litAccountType")).Text);
|
||||||
|
|
||||||
|
if (exAccountType != ExchangeAccountType.DefaultSecurityGroup)
|
||||||
|
{
|
||||||
|
chkSelectAll = null;
|
||||||
|
chkSelect.Enabled = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chkSelect.Enabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chkSelectAll != null)
|
||||||
|
{
|
||||||
|
chkSelectAll.Enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void chkIncludeMailboxes_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
BindPopupAccounts();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void cmdSearch_Click(object sender, ImageClickEventArgs e)
|
||||||
|
{
|
||||||
|
BindPopupAccounts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,188 @@
|
||||||
|
// Copyright (c) 2012, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 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.UserControls {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class GroupsList {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// GroupsUpdatePanel 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 GroupsUpdatePanel;
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// btnDelete 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 btnDelete;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvGroups 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 gvGroups;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddGroupsPanel 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 AddGroupsPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// headerAddGroups 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 headerAddGroups;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddGroupsUpdatePanel 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 AddGroupsUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SearchPanel 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 SearchPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlSearchColumn 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 ddlSearchColumn;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtSearchValue 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 txtSearchValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// cmdSearch 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.ImageButton cmdSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvPopupGroups 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 gvPopupGroups;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddSelected 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 btnAddSelected;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnCancelAdd 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 btnCancelAdd;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddAccountsFake 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 btnAddAccountsFake;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddGroupsModal control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::AjaxControlToolkit.ModalPopupExtender AddGroupsModal;
|
||||||
|
}
|
||||||
|
}
|
|
@ -157,7 +157,7 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
{
|
{
|
||||||
ExchangeAccount[] accounts = ES.Services.ExchangeServer.SearchAccounts(PanelRequest.ItemID,
|
ExchangeAccount[] accounts = ES.Services.ExchangeServer.SearchAccounts(PanelRequest.ItemID,
|
||||||
chkIncludeMailboxes.Checked, chkIncludeContacts.Checked, chkIncludeLists.Checked,
|
chkIncludeMailboxes.Checked, chkIncludeContacts.Checked, chkIncludeLists.Checked,
|
||||||
chkIncludeRooms.Checked, chkIncludeEquipment.Checked,
|
chkIncludeRooms.Checked, chkIncludeEquipment.Checked, false,
|
||||||
ddlSearchColumn.SelectedValue, txtSearchValue.Text + "%", "");
|
ddlSearchColumn.SelectedValue, txtSearchValue.Text + "%", "");
|
||||||
|
|
||||||
if (ExcludeAccountId > 0)
|
if (ExcludeAccountId > 0)
|
||||||
|
|
|
@ -178,6 +178,9 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, cntx))
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, cntx))
|
||||||
organizationGroup.MenuItems.Add(CreateMenuItem("Users", "users"));
|
organizationGroup.MenuItems.Add(CreateMenuItem("Users", "users"));
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPMANAGEMENT, cntx))
|
||||||
|
organizationGroup.MenuItems.Add(CreateMenuItem("SecurityGroups", "secur_groups"));
|
||||||
|
|
||||||
if (organizationGroup.MenuItems.Count > 0)
|
if (organizationGroup.MenuItems.Count > 0)
|
||||||
groups.Add(organizationGroup);
|
groups.Add(organizationGroup);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SecurityGroupTabs.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.UserControls.SecurityGroupTabs" %>
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="1">
|
||||||
|
<tr>
|
||||||
|
<td class="Tabs">
|
||||||
|
|
||||||
|
<asp:DataList ID="dlTabs" runat="server" RepeatDirection="Horizontal"
|
||||||
|
RepeatLayout="Flow" EnableViewState="false">
|
||||||
|
<ItemStyle Wrap="False" />
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:HyperLink ID="lnkTab" runat="server" CssClass="Tab" NavigateUrl='<%# Eval("Url") %>'>
|
||||||
|
<%# Eval("Name") %>
|
||||||
|
</asp:HyperLink>
|
||||||
|
</ItemTemplate>
|
||||||
|
<SelectedItemStyle Wrap="False" />
|
||||||
|
<SelectedItemTemplate>
|
||||||
|
<asp:HyperLink ID="lnkSelTab" runat="server" CssClass="ActiveTab" NavigateUrl='<%# Eval("Url") %>'>
|
||||||
|
<%# Eval("Name") %>
|
||||||
|
</asp:HyperLink>
|
||||||
|
</SelectedItemTemplate>
|
||||||
|
</asp:DataList>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
|
@ -0,0 +1,81 @@
|
||||||
|
// 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 WebsitePanel.Portal.Code.UserControls;
|
||||||
|
using WebsitePanel.WebPortal;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
|
{
|
||||||
|
public partial class SecurityGroupTabs : WebsitePanelControlBase
|
||||||
|
{
|
||||||
|
private string selectedTab;
|
||||||
|
public string SelectedTab
|
||||||
|
{
|
||||||
|
get { return selectedTab; }
|
||||||
|
set { selectedTab = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
BindTabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindTabs()
|
||||||
|
{
|
||||||
|
List<Tab> tabsList = new List<Tab>();
|
||||||
|
tabsList.Add(CreateTab("secur_group_settings", "Tab.Settings"));
|
||||||
|
|
||||||
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
|
||||||
|
// find selected menu item
|
||||||
|
int idx = 0;
|
||||||
|
foreach (Tab tab in tabsList)
|
||||||
|
{
|
||||||
|
if (String.Compare(tab.Id, SelectedTab, true) == 0)
|
||||||
|
break;
|
||||||
|
idx++;
|
||||||
|
}
|
||||||
|
dlTabs.SelectedIndex = idx;
|
||||||
|
|
||||||
|
dlTabs.DataSource = tabsList;
|
||||||
|
dlTabs.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Tab CreateTab(string id, string text)
|
||||||
|
{
|
||||||
|
return new Tab(id, GetLocalizedString(text),
|
||||||
|
HostModule.EditUrl("AccountID", PanelRequest.AccountID.ToString(), id,
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId.ToString(),
|
||||||
|
"ItemID=" + PanelRequest.ItemID.ToString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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.UserControls {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class SecurityGroupTabs {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// dlTabs 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.DataList dlTabs;
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
<ContentTemplate>
|
<ContentTemplate>
|
||||||
|
|
||||||
<asp:TextBox ID="txtDisplayName" runat="server" CssClass="TextBox200" ReadOnly="true"></asp:TextBox>
|
<asp:TextBox ID="txtDisplayName" runat="server" CssClass="TextBox200" ReadOnly="true"></asp:TextBox>
|
||||||
|
|
||||||
<asp:ImageButton ID="ImageButton1" SkinID="ExchangeAddressBook16" runat="server" CausesValidation="false" OnClick="ImageButton1_Click" />
|
<asp:ImageButton ID="ImageButton1" SkinID="ExchangeAddressBook16" runat="server" CausesValidation="false" OnClick="ImageButton1_Click" />
|
||||||
<asp:LinkButton ID="cmdClear" runat="server" meta:resourcekey="cmdClear" OnClick="cmdClear_Click" CausesValidation="False"></asp:LinkButton>
|
<asp:LinkButton ID="cmdClear" runat="server" meta:resourcekey="cmdClear" OnClick="cmdClear_Click" CausesValidation="False"></asp:LinkButton>
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
|
|
||||||
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, cntx))
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPMANAGEMENT, cntx) || Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, cntx))
|
||||||
tabsList.Add(CreateTab("user_memberof", "Tab.MemberOf"));
|
tabsList.Add(CreateTab("user_memberof", "Tab.MemberOf"));
|
||||||
|
|
||||||
// find selected menu item
|
// find selected menu item
|
||||||
|
|
|
@ -0,0 +1,119 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UsersList.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.UserControls.UsersList" %>
|
||||||
|
<%@ Register Src="../../UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<asp:UpdatePanel ID="AccountsUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<asp:Button ID="btnAdd" runat="server" Text="Add..." CssClass="Button1" OnClick="btnAdd_Click" meta:resourcekey="btnAdd" />
|
||||||
|
<asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="Button1" OnClick="btnDelete_Click" meta:resourcekey="btnDelete"/>
|
||||||
|
</div>
|
||||||
|
<asp:GridView ID="gvAccounts" runat="server" meta:resourcekey="gvAccounts" AutoGenerateColumns="False"
|
||||||
|
Width="600px" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="AccountName">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
<asp:Literal ID="litAccountType" runat="server" Visible="false" Text='<%# Eval("AccountType") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvAccountsDisplayName" HeaderText="gvAccountsDisplayName">
|
||||||
|
<HeaderStyle Wrap="false" />
|
||||||
|
<ItemStyle Width="50%" Wrap="false"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Image ID="img1" runat="server" ImageUrl='<%# GetAccountImage((int)Eval("AccountType")) %>' ImageAlign="AbsMiddle" />
|
||||||
|
<asp:Literal ID="litDisplayName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvAccountsEmail" HeaderText="gvAccountsEmail">
|
||||||
|
<HeaderStyle Wrap="false" />
|
||||||
|
<ItemStyle Width="50%" Wrap="false"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal ID="litPrimaryEmailAddress" runat="server" Text='<%# Eval("PrimaryEmailAddress") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
|
||||||
|
|
||||||
|
<asp:Panel ID="AddAccountsPanel" runat="server" CssClass="Popup" style="display:none">
|
||||||
|
<table class="Popup-Header" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td class="Popup-HeaderLeft"></td>
|
||||||
|
<td class="Popup-HeaderTitle">
|
||||||
|
<asp:Localize ID="headerAddAccounts" runat="server" meta:resourcekey="headerAddAccounts"></asp:Localize>
|
||||||
|
</td>
|
||||||
|
<td class="Popup-HeaderRight"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="Popup-Content">
|
||||||
|
<div class="Popup-Body">
|
||||||
|
<br />
|
||||||
|
<asp:UpdatePanel ID="AddAccountsUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<div class="FormButtonsBarCleanRight">
|
||||||
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<asp:DropDownList ID="ddlSearchColumn" runat="server" CssClass="NormalTextBox">
|
||||||
|
<asp:ListItem Value="DisplayName" meta:resourcekey="ddlSearchColumnDisplayName">DisplayName</asp:ListItem>
|
||||||
|
<asp:ListItem Value="PrimaryEmailAddress" meta:resourcekey="ddlSearchColumnEmail">Email</asp:ListItem>
|
||||||
|
</asp:DropDownList><asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100"></asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton"
|
||||||
|
CausesValidation="false" OnClick="cmdSearch_Click"/>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="Popup-Scroll">
|
||||||
|
<asp:GridView ID="gvPopupAccounts" runat="server" meta:resourcekey="gvPopupAccounts" AutoGenerateColumns="False"
|
||||||
|
Width="100%" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="AccountName">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
<asp:Literal ID="litAccountType" runat="server" Visible="false" Text='<%# Eval("AccountType") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvAccountsDisplayName">
|
||||||
|
<ItemStyle Width="50%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Image ID="img1" runat="server" ImageUrl='<%# GetAccountImage((int)Eval("AccountType")) %>' ImageAlign="AbsMiddle" />
|
||||||
|
<asp:Literal ID="litDisplayName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvAccountsEmail">
|
||||||
|
<ItemStyle Width="50%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal ID="litPrimaryEmailAddress" runat="server" Text='<%# Eval("PrimaryEmailAddress") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
</div>
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormFooter">
|
||||||
|
<asp:Button ID="btnAddSelected" runat="server" CssClass="Button1" meta:resourcekey="btnAddSelected" Text="Add Accounts" OnClick="btnAddSelected_Click" />
|
||||||
|
<asp:Button ID="btnCancelAdd" runat="server" CssClass="Button1" meta:resourcekey="btnCancel" Text="Cancel" CausesValidation="false" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<asp:Button ID="btnAddAccountsFake" runat="server" style="display:none;" />
|
||||||
|
<ajaxToolkit:ModalPopupExtender ID="AddAccountsModal" runat="server"
|
||||||
|
TargetControlID="btnAddAccountsFake" PopupControlID="AddAccountsPanel"
|
||||||
|
BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="btnCancelAdd" />
|
||||||
|
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
|
@ -0,0 +1,261 @@
|
||||||
|
// 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.UI;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
|
{
|
||||||
|
public partial class UsersList : WebsitePanelControlBase
|
||||||
|
{
|
||||||
|
public const string DirectionString = "DirectionString";
|
||||||
|
|
||||||
|
private bool _enabled = true;
|
||||||
|
|
||||||
|
public bool Enabled
|
||||||
|
{
|
||||||
|
get { return _enabled; }
|
||||||
|
set { _enabled = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum SelectedState
|
||||||
|
{
|
||||||
|
All,
|
||||||
|
Selected,
|
||||||
|
Unselected
|
||||||
|
}
|
||||||
|
|
||||||
|
public int ExcludeAccountId
|
||||||
|
{
|
||||||
|
get { return PanelRequest.AccountID; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetAccounts(ExchangeAccount[] accounts)
|
||||||
|
{
|
||||||
|
BindAccounts(accounts, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string[] GetAccounts()
|
||||||
|
{
|
||||||
|
// get selected accounts
|
||||||
|
List<ExchangeAccount> selectedAccounts = GetGridViewAccounts(gvAccounts, SelectedState.All);
|
||||||
|
|
||||||
|
List<string> accountNames = new List<string>();
|
||||||
|
foreach (ExchangeAccount account in selectedAccounts)
|
||||||
|
accountNames.Add(account.AccountName);
|
||||||
|
|
||||||
|
return accountNames.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// register javascript
|
||||||
|
if (!Page.ClientScript.IsClientScriptBlockRegistered("SelectAllCheckboxes"))
|
||||||
|
{
|
||||||
|
string script = @" 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;
|
||||||
|
}";
|
||||||
|
Page.ClientScript.RegisterClientScriptBlock(typeof(AccountsList), "SelectAllCheckboxes",
|
||||||
|
script, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
btnAdd.Visible = Enabled;
|
||||||
|
btnDelete.Visible = Enabled;
|
||||||
|
|
||||||
|
gvAccounts.Columns[0].Visible = Enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAdd_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// bind all accounts
|
||||||
|
BindPopupAccounts();
|
||||||
|
|
||||||
|
// show modal
|
||||||
|
AddAccountsModal.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnDelete_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// get selected accounts
|
||||||
|
List<ExchangeAccount> selectedAccounts = GetGridViewAccounts(gvAccounts, SelectedState.Unselected);
|
||||||
|
|
||||||
|
// add to the main list
|
||||||
|
BindAccounts(selectedAccounts.ToArray(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAddSelected_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// get selected accounts
|
||||||
|
List<ExchangeAccount> selectedAccounts = GetGridViewAccounts(gvPopupAccounts, SelectedState.Selected);
|
||||||
|
|
||||||
|
// add to the main list
|
||||||
|
BindAccounts(selectedAccounts.ToArray(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetAccountImage(int accountTypeId)
|
||||||
|
{
|
||||||
|
string imgName = string.Empty;
|
||||||
|
|
||||||
|
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
||||||
|
switch (accountType)
|
||||||
|
{
|
||||||
|
case ExchangeAccountType.Room:
|
||||||
|
imgName = "room_16.gif";
|
||||||
|
break;
|
||||||
|
case ExchangeAccountType.Equipment:
|
||||||
|
imgName = "equipment_16.gif";
|
||||||
|
break;
|
||||||
|
case ExchangeAccountType.SecurityGroup:
|
||||||
|
imgName = "dlist_16.gif";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
imgName = "admin_16.png";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GetThemedImage("Exchange/" + imgName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindPopupAccounts()
|
||||||
|
{
|
||||||
|
ExchangeAccount[] accounts = ES.Services.Organizations.SearchOrganizationAccounts(PanelRequest.ItemID,
|
||||||
|
ddlSearchColumn.SelectedValue, txtSearchValue.Text + "%", "", false);
|
||||||
|
|
||||||
|
List<ExchangeAccount> newAccounts = new List<ExchangeAccount>();
|
||||||
|
|
||||||
|
accounts = accounts.Where(x => !GetAccounts().Contains(x.AccountName)).ToArray();
|
||||||
|
|
||||||
|
if (ExcludeAccountId > 0)
|
||||||
|
{
|
||||||
|
List<ExchangeAccount> updatedAccounts = new List<ExchangeAccount>();
|
||||||
|
foreach (ExchangeAccount account in accounts)
|
||||||
|
if (account.AccountId != ExcludeAccountId)
|
||||||
|
updatedAccounts.Add(account);
|
||||||
|
|
||||||
|
accounts = updatedAccounts.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
Array.Sort(accounts, CompareAccount);
|
||||||
|
if (Direction == SortDirection.Ascending)
|
||||||
|
{
|
||||||
|
Array.Reverse(accounts);
|
||||||
|
Direction = SortDirection.Descending;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Direction = SortDirection.Ascending;
|
||||||
|
|
||||||
|
gvPopupAccounts.DataSource = accounts;
|
||||||
|
gvPopupAccounts.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindAccounts(ExchangeAccount[] newAccounts, bool preserveExisting)
|
||||||
|
{
|
||||||
|
// get binded addresses
|
||||||
|
List<ExchangeAccount> accounts = new List<ExchangeAccount>();
|
||||||
|
if(preserveExisting)
|
||||||
|
accounts.AddRange(GetGridViewAccounts(gvAccounts, SelectedState.All));
|
||||||
|
|
||||||
|
// add new accounts
|
||||||
|
if (newAccounts != null)
|
||||||
|
{
|
||||||
|
foreach (ExchangeAccount newAccount in newAccounts)
|
||||||
|
{
|
||||||
|
// check if exists
|
||||||
|
bool exists = false;
|
||||||
|
foreach (ExchangeAccount account in accounts)
|
||||||
|
{
|
||||||
|
if (String.Compare(newAccount.AccountName, account.AccountName, true) == 0)
|
||||||
|
{
|
||||||
|
exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exists)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
accounts.Add(newAccount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gvAccounts.DataSource = accounts;
|
||||||
|
gvAccounts.DataBind();
|
||||||
|
|
||||||
|
btnDelete.Visible = gvAccounts.Rows.Count > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ExchangeAccount> GetGridViewAccounts(GridView gv, SelectedState state)
|
||||||
|
{
|
||||||
|
List<ExchangeAccount> accounts = new List<ExchangeAccount>();
|
||||||
|
for (int i = 0; i < gv.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
GridViewRow row = gv.Rows[i];
|
||||||
|
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||||
|
if (chkSelect == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ExchangeAccount account = new ExchangeAccount();
|
||||||
|
account.AccountType = (ExchangeAccountType)Enum.Parse(typeof(ExchangeAccountType), ((Literal)row.FindControl("litAccountType")).Text);
|
||||||
|
account.AccountName = (string)gv.DataKeys[i][0];
|
||||||
|
account.DisplayName = ((Literal)row.FindControl("litDisplayName")).Text;
|
||||||
|
account.PrimaryEmailAddress = ((Literal)row.FindControl("litPrimaryEmailAddress")).Text;
|
||||||
|
|
||||||
|
if(state == SelectedState.All ||
|
||||||
|
(state == SelectedState.Selected && chkSelect.Checked) ||
|
||||||
|
(state == SelectedState.Unselected && !chkSelect.Checked))
|
||||||
|
accounts.Add(account);
|
||||||
|
}
|
||||||
|
return accounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void cmdSearch_Click(object sender, ImageClickEventArgs e)
|
||||||
|
{
|
||||||
|
BindPopupAccounts();
|
||||||
|
}
|
||||||
|
|
||||||
|
private SortDirection Direction
|
||||||
|
{
|
||||||
|
get { return ViewState[DirectionString] == null ? SortDirection.Descending : (SortDirection)ViewState[DirectionString]; }
|
||||||
|
set { ViewState[DirectionString] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int CompareAccount(ExchangeAccount user1, ExchangeAccount user2)
|
||||||
|
{
|
||||||
|
return string.Compare(user1.DisplayName, user2.DisplayName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,159 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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.UserControls {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class UsersList {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AccountsUpdatePanel 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 AccountsUpdatePanel;
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// btnDelete 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 btnDelete;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvAccounts 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 gvAccounts;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddAccountsPanel 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 AddAccountsPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// headerAddAccounts 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 headerAddAccounts;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddAccountsUpdatePanel 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 AddAccountsUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SearchPanel 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 SearchPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlSearchColumn 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 ddlSearchColumn;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtSearchValue 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 txtSearchValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// cmdSearch 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.ImageButton cmdSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvPopupAccounts 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 gvPopupAccounts;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddSelected 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 btnAddSelected;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnCancelAdd 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 btnCancelAdd;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddAccountsFake 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 btnAddAccountsFake;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddAccountsModal control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::AjaxControlToolkit.ModalPopupExtender AddAccountsModal;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,31 @@
|
||||||
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
|
|
@ -1,4 +1,32 @@
|
||||||
//------------------------------------------------------------------------------
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3074
|
// Runtime Version:2.0.50727.3074
|
||||||
|
|
|
@ -1,4 +1,32 @@
|
||||||
//------------------------------------------------------------------------------
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3074
|
// Runtime Version:2.0.50727.3074
|
||||||
|
|
|
@ -1,3 +1,31 @@
|
||||||
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
|
|
@ -1,4 +1,32 @@
|
||||||
//------------------------------------------------------------------------------
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3074
|
// Runtime Version:2.0.50727.3074
|
||||||
|
|
|
@ -1,4 +1,32 @@
|
||||||
//------------------------------------------------------------------------------
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3074
|
// Runtime Version:2.0.50727.3074
|
||||||
|
|
|
@ -1,3 +1,31 @@
|
||||||
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
|
|
@ -1,3 +1,31 @@
|
||||||
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
|
|
@ -1,3 +1,31 @@
|
||||||
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
|
|
@ -1,3 +1,31 @@
|
||||||
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
|
|
@ -1,4 +1,32 @@
|
||||||
//------------------------------------------------------------------------------
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3074
|
// Runtime Version:2.0.50727.3074
|
||||||
|
|
|
@ -1,4 +1,32 @@
|
||||||
//------------------------------------------------------------------------------
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3074
|
// Runtime Version:2.0.50727.3074
|
||||||
|
|
|
@ -1,4 +1,32 @@
|
||||||
//------------------------------------------------------------------------------
|
// 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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3074
|
// Runtime Version:2.0.50727.3074
|
||||||
|
|
|
@ -230,6 +230,13 @@
|
||||||
<Compile Include="ExchangeServer\OrganizationAddDomainName.ascx.designer.cs">
|
<Compile Include="ExchangeServer\OrganizationAddDomainName.ascx.designer.cs">
|
||||||
<DependentUpon>OrganizationAddDomainName.ascx</DependentUpon>
|
<DependentUpon>OrganizationAddDomainName.ascx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationCreateSecurityGroup.ascx.cs">
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
<DependentUpon>OrganizationCreateSecurityGroup.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationCreateSecurityGroup.ascx.designer.cs">
|
||||||
|
<DependentUpon>OrganizationCreateSecurityGroup.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="ExchangeServer\OrganizationDomainNames.ascx.cs">
|
<Compile Include="ExchangeServer\OrganizationDomainNames.ascx.cs">
|
||||||
<DependentUpon>OrganizationDomainNames.ascx</DependentUpon>
|
<DependentUpon>OrganizationDomainNames.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -251,6 +258,20 @@
|
||||||
<Compile Include="ExchangeServer\ExchangeMailboxPlans.ascx.designer.cs">
|
<Compile Include="ExchangeServer\ExchangeMailboxPlans.ascx.designer.cs">
|
||||||
<DependentUpon>ExchangeMailboxPlans.ascx</DependentUpon>
|
<DependentUpon>ExchangeMailboxPlans.ascx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationSecurityGroupGeneralSettings.ascx.cs">
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
<DependentUpon>OrganizationSecurityGroupGeneralSettings.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationSecurityGroupGeneralSettings.ascx.designer.cs">
|
||||||
|
<DependentUpon>OrganizationSecurityGroupGeneralSettings.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationSecurityGroups.ascx.cs">
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
<DependentUpon>OrganizationSecurityGroups.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationSecurityGroups.ascx.designer.cs">
|
||||||
|
<DependentUpon>OrganizationSecurityGroups.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="ExchangeServer\OrganizationUserMemberOf.ascx.cs">
|
<Compile Include="ExchangeServer\OrganizationUserMemberOf.ascx.cs">
|
||||||
<DependentUpon>OrganizationUserMemberOf.ascx</DependentUpon>
|
<DependentUpon>OrganizationUserMemberOf.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -262,6 +283,13 @@
|
||||||
<DependentUpon>AccountsListWithPermissions.ascx</DependentUpon>
|
<DependentUpon>AccountsListWithPermissions.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\UserControls\GroupsList.ascx.cs">
|
||||||
|
<DependentUpon>GroupsList.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\UserControls\GroupsList.ascx.designer.cs">
|
||||||
|
<DependentUpon>GroupsList.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="ExchangeServer\UserControls\MailboxPlanSelector.ascx.cs">
|
<Compile Include="ExchangeServer\UserControls\MailboxPlanSelector.ascx.cs">
|
||||||
<DependentUpon>MailboxPlanSelector.ascx</DependentUpon>
|
<DependentUpon>MailboxPlanSelector.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -269,6 +297,20 @@
|
||||||
<Compile Include="ExchangeServer\UserControls\MailboxPlanSelector.ascx.designer.cs">
|
<Compile Include="ExchangeServer\UserControls\MailboxPlanSelector.ascx.designer.cs">
|
||||||
<DependentUpon>MailboxPlanSelector.ascx</DependentUpon>
|
<DependentUpon>MailboxPlanSelector.ascx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\UserControls\SecurityGroupTabs.ascx.cs">
|
||||||
|
<DependentUpon>SecurityGroupTabs.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\UserControls\SecurityGroupTabs.ascx.designer.cs">
|
||||||
|
<DependentUpon>SecurityGroupTabs.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\UserControls\UsersList.ascx.cs">
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
<DependentUpon>UsersList.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\UserControls\UsersList.ascx.designer.cs">
|
||||||
|
<DependentUpon>UsersList.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="ExchangeServer\UserControls\UserTabs.ascx.cs">
|
<Compile Include="ExchangeServer\UserControls\UserTabs.ascx.cs">
|
||||||
<DependentUpon>UserTabs.ascx</DependentUpon>
|
<DependentUpon>UserTabs.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -3934,11 +3976,17 @@
|
||||||
<Content Include="ExchangeServer\ExchangeDistributionListMemberOf.ascx" />
|
<Content Include="ExchangeServer\ExchangeDistributionListMemberOf.ascx" />
|
||||||
<Content Include="ExchangeServer\ExchangeMailboxMemberOf.ascx" />
|
<Content Include="ExchangeServer\ExchangeMailboxMemberOf.ascx" />
|
||||||
<Content Include="ExchangeServer\OrganizationAddDomainName.ascx" />
|
<Content Include="ExchangeServer\OrganizationAddDomainName.ascx" />
|
||||||
|
<Content Include="ExchangeServer\OrganizationCreateSecurityGroup.ascx" />
|
||||||
<Content Include="ExchangeServer\OrganizationDomainNames.ascx" />
|
<Content Include="ExchangeServer\OrganizationDomainNames.ascx" />
|
||||||
<Content Include="ExchangeServer\ExchangeAddMailboxPlan.ascx" />
|
<Content Include="ExchangeServer\ExchangeAddMailboxPlan.ascx" />
|
||||||
<Content Include="ExchangeServer\ExchangeDisclaimers.ascx" />
|
<Content Include="ExchangeServer\ExchangeDisclaimers.ascx" />
|
||||||
<Content Include="ExchangeServer\ExchangeDisclaimerGeneralSettings.ascx" />
|
<Content Include="ExchangeServer\ExchangeDisclaimerGeneralSettings.ascx" />
|
||||||
|
<Content Include="ExchangeServer\OrganizationSecurityGroupGeneralSettings.ascx" />
|
||||||
|
<Content Include="ExchangeServer\OrganizationSecurityGroups.ascx" />
|
||||||
<Content Include="ExchangeServer\OrganizationUserMemberOf.ascx" />
|
<Content Include="ExchangeServer\OrganizationUserMemberOf.ascx" />
|
||||||
|
<Content Include="ExchangeServer\UserControls\GroupsList.ascx" />
|
||||||
|
<Content Include="ExchangeServer\UserControls\SecurityGroupTabs.ascx" />
|
||||||
|
<Content Include="ExchangeServer\UserControls\UsersList.ascx" />
|
||||||
<Content Include="Lync\UserControls\LyncUserSettings.ascx" />
|
<Content Include="Lync\UserControls\LyncUserSettings.ascx" />
|
||||||
<Content Include="ProviderControls\CRM2011_Settings.ascx" />
|
<Content Include="ProviderControls\CRM2011_Settings.ascx" />
|
||||||
<Content Include="ProviderControls\HeliconZoo_Settings.ascx" />
|
<Content Include="ProviderControls\HeliconZoo_Settings.ascx" />
|
||||||
|
@ -5143,6 +5191,15 @@
|
||||||
<Content Include="App_LocalResources\PhoneNumbers.ascx.resx" />
|
<Content Include="App_LocalResources\PhoneNumbers.ascx.resx" />
|
||||||
<Content Include="App_LocalResources\PhoneNumbersAddPhoneNumber.ascx.resx" />
|
<Content Include="App_LocalResources\PhoneNumbersAddPhoneNumber.ascx.resx" />
|
||||||
<Content Include="App_LocalResources\PhoneNumbersEditPhoneNumber.ascx.resx" />
|
<Content Include="App_LocalResources\PhoneNumbersEditPhoneNumber.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\App_LocalResources\OrganizationCreateSecurityGroup.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\App_LocalResources\OrganizationSecurityGroupGeneralSettings.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\App_LocalResources\OrganizationSecurityGroups.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\UserControls\App_LocalResources\AccountsListWithPermissions.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\UserControls\App_LocalResources\SecurityGroupTabs.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\UserControls\App_LocalResources\UsersList.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\UserControls\App_LocalResources\GroupsList.ascx.resx">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Content>
|
||||||
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
|
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue