deleted users archiving
This commit is contained in:
parent
45462971d2
commit
26a050a3e5
78 changed files with 13755 additions and 9774 deletions
|
@ -6151,3 +6151,563 @@ END
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
GO
|
GO
|
||||||
|
|
||||||
|
--add Deleted Users Quota
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedSolution.DeletedUsers')
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) VALUES (477, 13, 6, N'HostedSolution.DeletedUsers', N'Deleted Users', 2, 0, NULL, NULL)
|
||||||
|
END
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedSolution.DeletedUsersBackupStorageSpace')
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) VALUES (478, 13, 6, N'HostedSolution.DeletedUsersBackupStorageSpace', N'Deleted Users Backup Storage Space, Mb', 2, 0, NULL, NULL)
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'ExchangeDeletedAccounts')
|
||||||
|
CREATE TABLE ExchangeDeletedAccounts
|
||||||
|
(
|
||||||
|
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||||
|
AccountID INT NOT NULL,
|
||||||
|
OriginAT INT NOT NULL,
|
||||||
|
StoragePath NVARCHAR(255) NULL,
|
||||||
|
FolderName NVARCHAR(128) NULL,
|
||||||
|
FileName NVARCHAR(128) NULL,
|
||||||
|
ExpirationDate DATETIME NOT NULL
|
||||||
|
)
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetOrganizationStatistics')
|
||||||
|
DROP PROCEDURE [dbo].[GetOrganizationStatistics]
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[GetOrganizationStatistics]
|
||||||
|
(
|
||||||
|
@ItemID int
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
SELECT
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 7 OR AccountType = 1 OR AccountType = 6 OR AccountType = 5) AND ItemID = @ItemID) AS CreatedUsers,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 8 OR AccountType = 9) AND ItemID = @ItemID) AS CreatedGroups,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 11 AND ItemID = @ItemID) AS DeletedUsers
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'DeleteOrganizationDeletedUser')
|
||||||
|
DROP PROCEDURE [dbo].[GetOrganizationDeletedUser]
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[DeleteOrganizationDeletedUser]
|
||||||
|
(
|
||||||
|
@ID int
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
DELETE FROM ExchangeDeletedAccounts WHERE AccountID = @ID
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetOrganizationDeletedUser')
|
||||||
|
DROP PROCEDURE [dbo].[GetOrganizationDeletedUser]
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[GetOrganizationDeletedUser]
|
||||||
|
(
|
||||||
|
@AccountID int
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
SELECT
|
||||||
|
EDA.AccountID,
|
||||||
|
EDA.OriginAT,
|
||||||
|
EDA.StoragePath,
|
||||||
|
EDA.FolderName,
|
||||||
|
EDA.FileName,
|
||||||
|
EDA.ExpirationDate
|
||||||
|
FROM
|
||||||
|
ExchangeDeletedAccounts AS EDA
|
||||||
|
WHERE
|
||||||
|
EDA.AccountID = @AccountID
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddOrganizationDeletedUser')
|
||||||
|
DROP PROCEDURE [dbo].[AddOrganizationDeletedUser]
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[AddOrganizationDeletedUser]
|
||||||
|
(
|
||||||
|
@ID int OUTPUT,
|
||||||
|
@AccountID int,
|
||||||
|
@OriginAT int,
|
||||||
|
@StoragePath nvarchar(255),
|
||||||
|
@FolderName nvarchar(128),
|
||||||
|
@FileName nvarchar(128),
|
||||||
|
@ExpirationDate datetime
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
|
||||||
|
INSERT INTO ExchangeDeletedAccounts
|
||||||
|
(
|
||||||
|
AccountID,
|
||||||
|
OriginAT,
|
||||||
|
StoragePath,
|
||||||
|
FolderName,
|
||||||
|
FileName,
|
||||||
|
ExpirationDate
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@AccountID,
|
||||||
|
@OriginAT,
|
||||||
|
@StoragePath,
|
||||||
|
@FolderName,
|
||||||
|
@FileName,
|
||||||
|
@ExpirationDate
|
||||||
|
)
|
||||||
|
|
||||||
|
SET @ID = SCOPE_IDENTITY()
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER FUNCTION [dbo].[CalculateQuotaUsage]
|
||||||
|
(
|
||||||
|
@PackageID int,
|
||||||
|
@QuotaID int
|
||||||
|
)
|
||||||
|
RETURNS int
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
DECLARE @QuotaTypeID int
|
||||||
|
DECLARE @QuotaName nvarchar(50)
|
||||||
|
SELECT @QuotaTypeID = QuotaTypeID, @QuotaName = QuotaName FROM Quotas
|
||||||
|
WHERE QuotaID = @QuotaID
|
||||||
|
|
||||||
|
IF @QuotaTypeID <> 2
|
||||||
|
RETURN 0
|
||||||
|
|
||||||
|
DECLARE @Result int
|
||||||
|
|
||||||
|
IF @QuotaID = 52 -- diskspace
|
||||||
|
SET @Result = dbo.CalculatePackageDiskspace(@PackageID)
|
||||||
|
ELSE IF @QuotaID = 51 -- bandwidth
|
||||||
|
SET @Result = dbo.CalculatePackageBandwidth(@PackageID)
|
||||||
|
ELSE IF @QuotaID = 53 -- domains
|
||||||
|
SET @Result = (SELECT COUNT(D.DomainID) FROM PackagesTreeCache AS PT
|
||||||
|
INNER JOIN Domains AS D ON D.PackageID = PT.PackageID
|
||||||
|
WHERE IsSubDomain = 0 AND IsInstantAlias = 0 AND IsDomainPointer = 0 AND PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 54 -- sub-domains
|
||||||
|
SET @Result = (SELECT COUNT(D.DomainID) FROM PackagesTreeCache AS PT
|
||||||
|
INNER JOIN Domains AS D ON D.PackageID = PT.PackageID
|
||||||
|
WHERE IsSubDomain = 1 AND IsInstantAlias = 0 AND IsDomainPointer = 0 AND PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 220 -- domain pointers
|
||||||
|
SET @Result = (SELECT COUNT(D.DomainID) FROM PackagesTreeCache AS PT
|
||||||
|
INNER JOIN Domains AS D ON D.PackageID = PT.PackageID
|
||||||
|
WHERE IsDomainPointer = 1 AND PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 71 -- scheduled tasks
|
||||||
|
SET @Result = (SELECT COUNT(S.ScheduleID) FROM PackagesTreeCache AS PT
|
||||||
|
INNER JOIN Schedule AS S ON S.PackageID = PT.PackageID
|
||||||
|
WHERE PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 305 -- RAM of VPS
|
||||||
|
SET @Result = (SELECT SUM(CAST(SIP.PropertyValue AS int)) FROM ServiceItemProperties AS SIP
|
||||||
|
INNER JOIN ServiceItems AS SI ON SIP.ItemID = SI.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID
|
||||||
|
WHERE SIP.PropertyName = 'RamSize' AND PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 306 -- HDD of VPS
|
||||||
|
SET @Result = (SELECT SUM(CAST(SIP.PropertyValue AS int)) FROM ServiceItemProperties AS SIP
|
||||||
|
INNER JOIN ServiceItems AS SI ON SIP.ItemID = SI.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID
|
||||||
|
WHERE SIP.PropertyName = 'HddSize' AND PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 309 -- External IP addresses of VPS
|
||||||
|
SET @Result = (SELECT COUNT(PIP.PackageAddressID) FROM PackageIPAddresses AS PIP
|
||||||
|
INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
|
||||||
|
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
|
||||||
|
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3)
|
||||||
|
ELSE IF @QuotaID = 100 -- Dedicated Web IP addresses
|
||||||
|
SET @Result = (SELECT COUNT(PIP.PackageAddressID) FROM PackageIPAddresses AS PIP
|
||||||
|
INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
|
||||||
|
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
|
||||||
|
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 2)
|
||||||
|
ELSE IF @QuotaID = 350 -- RAM of VPSforPc
|
||||||
|
SET @Result = (SELECT SUM(CAST(SIP.PropertyValue AS int)) FROM ServiceItemProperties AS SIP
|
||||||
|
INNER JOIN ServiceItems AS SI ON SIP.ItemID = SI.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID
|
||||||
|
WHERE SIP.PropertyName = 'Memory' AND PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 351 -- HDD of VPSforPc
|
||||||
|
SET @Result = (SELECT SUM(CAST(SIP.PropertyValue AS int)) FROM ServiceItemProperties AS SIP
|
||||||
|
INNER JOIN ServiceItems AS SI ON SIP.ItemID = SI.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID
|
||||||
|
WHERE SIP.PropertyName = 'HddSize' AND PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 354 -- External IP addresses of VPSforPc
|
||||||
|
SET @Result = (SELECT COUNT(PIP.PackageAddressID) FROM PackageIPAddresses AS PIP
|
||||||
|
INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
|
||||||
|
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
|
||||||
|
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3)
|
||||||
|
ELSE IF @QuotaID = 319 -- BB Users
|
||||||
|
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
|
||||||
|
INNER JOIN BlackBerryUsers bu ON ea.AccountID = bu.AccountID
|
||||||
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE pt.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 320 -- OCS Users
|
||||||
|
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
|
||||||
|
INNER JOIN OCSUsers ocs ON ea.AccountID = ocs.AccountID
|
||||||
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE pt.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 206 -- HostedSolution.Users
|
||||||
|
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
|
||||||
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE pt.ParentPackageID = @PackageID AND ea.AccountType IN (1,5,6,7))
|
||||||
|
ELSE IF @QuotaID = 78 -- Exchange2007.Mailboxes
|
||||||
|
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
|
||||||
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE pt.ParentPackageID = @PackageID
|
||||||
|
AND ea.AccountType IN (1)
|
||||||
|
AND ea.MailboxPlanId IS NOT NULL)
|
||||||
|
ELSE IF @QuotaID = 77 -- Exchange2007.DiskSpace
|
||||||
|
SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
|
||||||
|
INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
|
||||||
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE pt.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 370 -- Lync.Users
|
||||||
|
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
|
||||||
|
INNER JOIN LyncUsers lu ON ea.AccountID = lu.AccountID
|
||||||
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE pt.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 376 -- Lync.EVUsers
|
||||||
|
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
|
||||||
|
INNER JOIN LyncUsers lu ON ea.AccountID = lu.AccountID
|
||||||
|
INNER JOIN LyncUserPlans lp ON lu.LyncUserPlanId = lp.LyncUserPlanId
|
||||||
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE pt.ParentPackageID = @PackageID AND lp.EnterpriseVoice = 1)
|
||||||
|
ELSE IF @QuotaID = 381 -- Dedicated Lync Phone Numbers
|
||||||
|
SET @Result = (SELECT COUNT(PIP.PackageAddressID) FROM PackageIPAddresses AS PIP
|
||||||
|
INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
|
||||||
|
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
|
||||||
|
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 5)
|
||||||
|
ELSE IF @QuotaID = 430 -- Enterprise Storage
|
||||||
|
SET @Result = (SELECT SUM(ESF.FolderQuota) FROM EnterpriseFolders AS ESF
|
||||||
|
INNER JOIN ServiceItems SI ON ESF.ItemID = SI.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache PT ON SI.PackageID = PT.PackageID
|
||||||
|
WHERE PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 431 -- Enterprise Storage Folders
|
||||||
|
SET @Result = (SELECT COUNT(ESF.EnterpriseFolderID) FROM EnterpriseFolders AS ESF
|
||||||
|
INNER JOIN ServiceItems SI ON ESF.ItemID = SI.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache PT ON SI.PackageID = PT.PackageID
|
||||||
|
WHERE PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE IF @QuotaID = 423 -- HostedSolution.SecurityGroups
|
||||||
|
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
|
||||||
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE pt.ParentPackageID = @PackageID AND ea.AccountType IN (8,9))
|
||||||
|
ELSE IF @QuotaID = 477 -- HostedSolution.DeletedUsers
|
||||||
|
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
|
||||||
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE pt.ParentPackageID = @PackageID AND ea.AccountType = 11)
|
||||||
|
ELSE IF @QuotaName like 'ServiceLevel.%' -- Support Service Level Quota
|
||||||
|
BEGIN
|
||||||
|
DECLARE @LevelID int
|
||||||
|
|
||||||
|
SELECT @LevelID = LevelID FROM SupportServiceLevels
|
||||||
|
WHERE LevelName = REPLACE(@QuotaName,'ServiceLevel.','')
|
||||||
|
|
||||||
|
IF (@LevelID IS NOT NULL)
|
||||||
|
SET @Result = (SELECT COUNT(EA.AccountID)
|
||||||
|
FROM SupportServiceLevels AS SL
|
||||||
|
INNER JOIN ExchangeAccounts AS EA ON SL.LevelID = EA.LevelID
|
||||||
|
INNER JOIN ServiceItems SI ON EA.ItemID = SI.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache PT ON SI.PackageID = PT.PackageID
|
||||||
|
WHERE EA.LevelID = @LevelID AND PT.ParentPackageID = @PackageID)
|
||||||
|
ELSE SET @Result = 0
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
SET @Result = (SELECT COUNT(SI.ItemID) FROM Quotas AS Q
|
||||||
|
INNER JOIN ServiceItems AS SI ON SI.ItemTypeID = Q.ItemTypeID
|
||||||
|
INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID AND PT.ParentPackageID = @PackageID
|
||||||
|
WHERE Q.QuotaID = @QuotaID)
|
||||||
|
|
||||||
|
RETURN @Result
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='ExchangeMailboxPlans' AND COLS.name='EnableForceArchiveDeletion')
|
||||||
|
BEGIN
|
||||||
|
ALTER TABLE [dbo].[ExchangeMailboxPlans] ADD [EnableForceArchiveDeletion] [bit] NULL
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER PROCEDURE [dbo].[AddExchangeMailboxPlan]
|
||||||
|
(
|
||||||
|
@MailboxPlanId int OUTPUT,
|
||||||
|
@ItemID int,
|
||||||
|
@MailboxPlan nvarchar(300),
|
||||||
|
@EnableActiveSync bit,
|
||||||
|
@EnableIMAP bit,
|
||||||
|
@EnableMAPI bit,
|
||||||
|
@EnableOWA bit,
|
||||||
|
@EnablePOP bit,
|
||||||
|
@IsDefault bit,
|
||||||
|
@IssueWarningPct int,
|
||||||
|
@KeepDeletedItemsDays int,
|
||||||
|
@MailboxSizeMB int,
|
||||||
|
@MaxReceiveMessageSizeKB int,
|
||||||
|
@MaxRecipients int,
|
||||||
|
@MaxSendMessageSizeKB int,
|
||||||
|
@ProhibitSendPct int,
|
||||||
|
@ProhibitSendReceivePct int ,
|
||||||
|
@HideFromAddressBook bit,
|
||||||
|
@MailboxPlanType int,
|
||||||
|
@AllowLitigationHold bit,
|
||||||
|
@RecoverableItemsWarningPct int,
|
||||||
|
@RecoverableItemsSpace int,
|
||||||
|
@LitigationHoldUrl nvarchar(256),
|
||||||
|
@LitigationHoldMsg nvarchar(512),
|
||||||
|
@Archiving bit,
|
||||||
|
@EnableArchiving bit,
|
||||||
|
@ArchiveSizeMB int,
|
||||||
|
@ArchiveWarningPct int,
|
||||||
|
@EnableForceArchiveDeletion bit
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
|
||||||
|
IF (((SELECT Count(*) FROM ExchangeMailboxPlans WHERE ItemId = @ItemID) = 0) AND (@MailboxPlanType=0))
|
||||||
|
BEGIN
|
||||||
|
SET @IsDefault = 1
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
IF ((@IsDefault = 1) AND (@MailboxPlanType=0))
|
||||||
|
BEGIN
|
||||||
|
UPDATE ExchangeMailboxPlans SET IsDefault = 0 WHERE ItemID = @ItemID
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
INSERT INTO ExchangeMailboxPlans
|
||||||
|
(
|
||||||
|
ItemID,
|
||||||
|
MailboxPlan,
|
||||||
|
EnableActiveSync,
|
||||||
|
EnableIMAP,
|
||||||
|
EnableMAPI,
|
||||||
|
EnableOWA,
|
||||||
|
EnablePOP,
|
||||||
|
IsDefault,
|
||||||
|
IssueWarningPct,
|
||||||
|
KeepDeletedItemsDays,
|
||||||
|
MailboxSizeMB,
|
||||||
|
MaxReceiveMessageSizeKB,
|
||||||
|
MaxRecipients,
|
||||||
|
MaxSendMessageSizeKB,
|
||||||
|
ProhibitSendPct,
|
||||||
|
ProhibitSendReceivePct,
|
||||||
|
HideFromAddressBook,
|
||||||
|
MailboxPlanType,
|
||||||
|
AllowLitigationHold,
|
||||||
|
RecoverableItemsWarningPct,
|
||||||
|
RecoverableItemsSpace,
|
||||||
|
LitigationHoldUrl,
|
||||||
|
LitigationHoldMsg,
|
||||||
|
Archiving,
|
||||||
|
EnableArchiving,
|
||||||
|
ArchiveSizeMB,
|
||||||
|
ArchiveWarningPct,
|
||||||
|
EnableForceArchiveDeletion
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@ItemID,
|
||||||
|
@MailboxPlan,
|
||||||
|
@EnableActiveSync,
|
||||||
|
@EnableIMAP,
|
||||||
|
@EnableMAPI,
|
||||||
|
@EnableOWA,
|
||||||
|
@EnablePOP,
|
||||||
|
@IsDefault,
|
||||||
|
@IssueWarningPct,
|
||||||
|
@KeepDeletedItemsDays,
|
||||||
|
@MailboxSizeMB,
|
||||||
|
@MaxReceiveMessageSizeKB,
|
||||||
|
@MaxRecipients,
|
||||||
|
@MaxSendMessageSizeKB,
|
||||||
|
@ProhibitSendPct,
|
||||||
|
@ProhibitSendReceivePct,
|
||||||
|
@HideFromAddressBook,
|
||||||
|
@MailboxPlanType,
|
||||||
|
@AllowLitigationHold,
|
||||||
|
@RecoverableItemsWarningPct,
|
||||||
|
@RecoverableItemsSpace,
|
||||||
|
@LitigationHoldUrl,
|
||||||
|
@LitigationHoldMsg,
|
||||||
|
@Archiving,
|
||||||
|
@EnableArchiving,
|
||||||
|
@ArchiveSizeMB,
|
||||||
|
@ArchiveWarningPct,
|
||||||
|
@EnableForceArchiveDeletion
|
||||||
|
)
|
||||||
|
|
||||||
|
SET @MailboxPlanId = SCOPE_IDENTITY()
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER PROCEDURE [dbo].[UpdateExchangeMailboxPlan]
|
||||||
|
(
|
||||||
|
@MailboxPlanId int,
|
||||||
|
@MailboxPlan nvarchar(300),
|
||||||
|
@EnableActiveSync bit,
|
||||||
|
@EnableIMAP bit,
|
||||||
|
@EnableMAPI bit,
|
||||||
|
@EnableOWA bit,
|
||||||
|
@EnablePOP bit,
|
||||||
|
@IsDefault bit,
|
||||||
|
@IssueWarningPct int,
|
||||||
|
@KeepDeletedItemsDays int,
|
||||||
|
@MailboxSizeMB int,
|
||||||
|
@MaxReceiveMessageSizeKB int,
|
||||||
|
@MaxRecipients int,
|
||||||
|
@MaxSendMessageSizeKB int,
|
||||||
|
@ProhibitSendPct int,
|
||||||
|
@ProhibitSendReceivePct int ,
|
||||||
|
@HideFromAddressBook bit,
|
||||||
|
@MailboxPlanType int,
|
||||||
|
@AllowLitigationHold bit,
|
||||||
|
@RecoverableItemsWarningPct int,
|
||||||
|
@RecoverableItemsSpace int,
|
||||||
|
@LitigationHoldUrl nvarchar(256),
|
||||||
|
@LitigationHoldMsg nvarchar(512),
|
||||||
|
@Archiving bit,
|
||||||
|
@EnableArchiving bit,
|
||||||
|
@ArchiveSizeMB int,
|
||||||
|
@ArchiveWarningPct int,
|
||||||
|
@EnableForceArchiveDeletion bit
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
|
||||||
|
UPDATE ExchangeMailboxPlans SET
|
||||||
|
MailboxPlan = @MailboxPlan,
|
||||||
|
EnableActiveSync = @EnableActiveSync,
|
||||||
|
EnableIMAP = @EnableIMAP,
|
||||||
|
EnableMAPI = @EnableMAPI,
|
||||||
|
EnableOWA = @EnableOWA,
|
||||||
|
EnablePOP = @EnablePOP,
|
||||||
|
IsDefault = @IsDefault,
|
||||||
|
IssueWarningPct= @IssueWarningPct,
|
||||||
|
KeepDeletedItemsDays = @KeepDeletedItemsDays,
|
||||||
|
MailboxSizeMB= @MailboxSizeMB,
|
||||||
|
MaxReceiveMessageSizeKB= @MaxReceiveMessageSizeKB,
|
||||||
|
MaxRecipients= @MaxRecipients,
|
||||||
|
MaxSendMessageSizeKB= @MaxSendMessageSizeKB,
|
||||||
|
ProhibitSendPct= @ProhibitSendPct,
|
||||||
|
ProhibitSendReceivePct = @ProhibitSendReceivePct,
|
||||||
|
HideFromAddressBook = @HideFromAddressBook,
|
||||||
|
MailboxPlanType = @MailboxPlanType,
|
||||||
|
AllowLitigationHold = @AllowLitigationHold,
|
||||||
|
RecoverableItemsWarningPct = @RecoverableItemsWarningPct,
|
||||||
|
RecoverableItemsSpace = @RecoverableItemsSpace,
|
||||||
|
LitigationHoldUrl = @LitigationHoldUrl,
|
||||||
|
LitigationHoldMsg = @LitigationHoldMsg,
|
||||||
|
Archiving = @Archiving,
|
||||||
|
EnableArchiving = @EnableArchiving,
|
||||||
|
ArchiveSizeMB = @ArchiveSizeMB,
|
||||||
|
ArchiveWarningPct = @ArchiveWarningPct,
|
||||||
|
EnableForceArchiveDeletion = @EnableForceArchiveDeletion
|
||||||
|
WHERE MailboxPlanId = @MailboxPlanId
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER PROCEDURE [dbo].[GetExchangeMailboxPlan]
|
||||||
|
(
|
||||||
|
@MailboxPlanId int
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
SELECT
|
||||||
|
MailboxPlanId,
|
||||||
|
ItemID,
|
||||||
|
MailboxPlan,
|
||||||
|
EnableActiveSync,
|
||||||
|
EnableIMAP,
|
||||||
|
EnableMAPI,
|
||||||
|
EnableOWA,
|
||||||
|
EnablePOP,
|
||||||
|
IsDefault,
|
||||||
|
IssueWarningPct,
|
||||||
|
KeepDeletedItemsDays,
|
||||||
|
MailboxSizeMB,
|
||||||
|
MaxReceiveMessageSizeKB,
|
||||||
|
MaxRecipients,
|
||||||
|
MaxSendMessageSizeKB,
|
||||||
|
ProhibitSendPct,
|
||||||
|
ProhibitSendReceivePct,
|
||||||
|
HideFromAddressBook,
|
||||||
|
MailboxPlanType,
|
||||||
|
AllowLitigationHold,
|
||||||
|
RecoverableItemsWarningPct,
|
||||||
|
RecoverableItemsSpace,
|
||||||
|
LitigationHoldUrl,
|
||||||
|
LitigationHoldMsg,
|
||||||
|
Archiving,
|
||||||
|
EnableArchiving,
|
||||||
|
ArchiveSizeMB,
|
||||||
|
ArchiveWarningPct,
|
||||||
|
EnableForceArchiveDeletion
|
||||||
|
FROM
|
||||||
|
ExchangeMailboxPlans
|
||||||
|
WHERE
|
||||||
|
MailboxPlanId = @MailboxPlanId
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER PROCEDURE [dbo].[GetExchangeMailboxPlans]
|
||||||
|
(
|
||||||
|
@ItemID int,
|
||||||
|
@Archiving bit
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
SELECT
|
||||||
|
MailboxPlanId,
|
||||||
|
ItemID,
|
||||||
|
MailboxPlan,
|
||||||
|
EnableActiveSync,
|
||||||
|
EnableIMAP,
|
||||||
|
EnableMAPI,
|
||||||
|
EnableOWA,
|
||||||
|
EnablePOP,
|
||||||
|
IsDefault,
|
||||||
|
IssueWarningPct,
|
||||||
|
KeepDeletedItemsDays,
|
||||||
|
MailboxSizeMB,
|
||||||
|
MaxReceiveMessageSizeKB,
|
||||||
|
MaxRecipients,
|
||||||
|
MaxSendMessageSizeKB,
|
||||||
|
ProhibitSendPct,
|
||||||
|
ProhibitSendReceivePct,
|
||||||
|
HideFromAddressBook,
|
||||||
|
MailboxPlanType,
|
||||||
|
Archiving,
|
||||||
|
EnableArchiving,
|
||||||
|
ArchiveSizeMB,
|
||||||
|
ArchiveWarningPct,
|
||||||
|
EnableForceArchiveDeletion
|
||||||
|
FROM
|
||||||
|
ExchangeMailboxPlans
|
||||||
|
WHERE
|
||||||
|
ItemID = @ItemID
|
||||||
|
AND ((Archiving=@Archiving) OR ((@Archiving=0) AND (Archiving IS NULL)))
|
||||||
|
ORDER BY MailboxPlan
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTasks] WHERE [TaskID] = 'SCHEDULE_TASK_DELETE_EXCHANGE_ACCOUNTS')
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO [dbo].[ScheduleTasks] ([TaskID], [TaskType], [RoleID]) VALUES (N'SCHEDULE_TASK_DELETE_EXCHANGE_ACCOUNTS', N'WebsitePanel.EnterpriseServer.DeleteExchangeAccountsTask, WebsitePanel.EnterpriseServer.Code', 3)
|
||||||
|
END
|
||||||
|
GO
|
|
@ -326,6 +326,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
public const int CURRENT_USER_IS_CRM_USER = -2708;
|
public const int CURRENT_USER_IS_CRM_USER = -2708;
|
||||||
public const int CURRENT_USER_IS_OCS_USER = -2709;
|
public const int CURRENT_USER_IS_OCS_USER = -2709;
|
||||||
public const int CURRENT_USER_IS_LYNC_USER = -2710;
|
public const int CURRENT_USER_IS_LYNC_USER = -2710;
|
||||||
|
public const int ERROR_DELETED_USERS_RESOURCE_QUOTA_LIMIT = -2711;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -161,6 +161,8 @@ order by rg.groupOrder
|
||||||
public const string STATS_SITES = "Stats.Sites"; // Statistics Sites
|
public const string STATS_SITES = "Stats.Sites"; // Statistics Sites
|
||||||
public const string ORGANIZATIONS = "HostedSolution.Organizations";
|
public const string ORGANIZATIONS = "HostedSolution.Organizations";
|
||||||
public const string ORGANIZATION_USERS = "HostedSolution.Users";
|
public const string ORGANIZATION_USERS = "HostedSolution.Users";
|
||||||
|
public const string ORGANIZATION_DELETED_USERS = "HostedSolution.DeletedUsers";
|
||||||
|
public const string ORGANIZATION_DELETED_USERS_BACKUP_STORAGE_SPACE = "HostedSolution.DeletedUsersBackupStorageSpace";
|
||||||
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_SECURITYGROUPS = "HostedSolution.SecurityGroups";
|
public const string ORGANIZATION_SECURITYGROUPS = "HostedSolution.SecurityGroups";
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -2070,7 +2070,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return SqlHelper.ExecuteDataset(ConnectionString, CommandType.StoredProcedure,
|
return SqlHelper.ExecuteDataset(ConnectionString, CommandType.StoredProcedure,
|
||||||
ObjectQualifier + "GetSchedules",
|
ObjectQualifier + "GetSchedules",
|
||||||
new SqlParameter("@actorId", actorId),
|
new SqlParameter("@actorId", actorId),
|
||||||
new SqlParameter("@packageId", packageId));
|
new SqlParameter("@packageId", packageId),
|
||||||
|
new SqlParameter("@recursive", true));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DataSet GetSchedulesPaged(int actorId, int packageId, bool recursive,
|
public static DataSet GetSchedulesPaged(int actorId, int packageId, bool recursive,
|
||||||
|
@ -2364,7 +2365,6 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
#region Exchange Server
|
#region Exchange Server
|
||||||
|
|
||||||
|
|
||||||
public static int AddExchangeAccount(int itemId, int accountType, string accountName,
|
public static int AddExchangeAccount(int itemId, int accountType, string accountName,
|
||||||
string displayName, string primaryEmailAddress, bool mailEnabledPublicFolder,
|
string displayName, string primaryEmailAddress, bool mailEnabledPublicFolder,
|
||||||
string mailboxManagerActions, string samAccountName, string accountPassword, int mailboxPlanId, string subscriberNumber)
|
string mailboxManagerActions, string samAccountName, string accountPassword, int mailboxPlanId, string subscriberNumber)
|
||||||
|
@ -2393,7 +2393,6 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return Convert.ToInt32(outParam.Value);
|
return Convert.ToInt32(outParam.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void AddExchangeAccountEmailAddress(int accountId, string emailAddress)
|
public static void AddExchangeAccountEmailAddress(int accountId, string emailAddress)
|
||||||
{
|
{
|
||||||
SqlHelper.ExecuteNonQuery(
|
SqlHelper.ExecuteNonQuery(
|
||||||
|
@ -2800,7 +2799,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
bool isDefault, int issueWarningPct, int keepDeletedItemsDays, int mailboxSizeMB, int maxReceiveMessageSizeKB, int maxRecipients,
|
bool isDefault, int issueWarningPct, int keepDeletedItemsDays, int mailboxSizeMB, int maxReceiveMessageSizeKB, int maxRecipients,
|
||||||
int maxSendMessageSizeKB, int prohibitSendPct, int prohibitSendReceivePct, bool hideFromAddressBook, int mailboxPlanType,
|
int maxSendMessageSizeKB, int prohibitSendPct, int prohibitSendReceivePct, bool hideFromAddressBook, int mailboxPlanType,
|
||||||
bool enabledLitigationHold, long recoverabelItemsSpace, long recoverabelItemsWarning, string litigationHoldUrl, string litigationHoldMsg,
|
bool enabledLitigationHold, long recoverabelItemsSpace, long recoverabelItemsWarning, string litigationHoldUrl, string litigationHoldMsg,
|
||||||
bool archiving, bool EnableArchiving, int ArchiveSizeMB, int ArchiveWarningPct)
|
bool archiving, bool EnableArchiving, int ArchiveSizeMB, int ArchiveWarningPct, bool enableForceArchiveDeletion)
|
||||||
{
|
{
|
||||||
SqlParameter outParam = new SqlParameter("@MailboxPlanId", SqlDbType.Int);
|
SqlParameter outParam = new SqlParameter("@MailboxPlanId", SqlDbType.Int);
|
||||||
outParam.Direction = ParameterDirection.Output;
|
outParam.Direction = ParameterDirection.Output;
|
||||||
|
@ -2836,7 +2835,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
new SqlParameter("@Archiving", archiving),
|
new SqlParameter("@Archiving", archiving),
|
||||||
new SqlParameter("@EnableArchiving", EnableArchiving),
|
new SqlParameter("@EnableArchiving", EnableArchiving),
|
||||||
new SqlParameter("@ArchiveSizeMB", ArchiveSizeMB),
|
new SqlParameter("@ArchiveSizeMB", ArchiveSizeMB),
|
||||||
new SqlParameter("@ArchiveWarningPct", ArchiveWarningPct)
|
new SqlParameter("@ArchiveWarningPct", ArchiveWarningPct),
|
||||||
|
new SqlParameter("@EnableForceArchiveDeletion", enableForceArchiveDeletion)
|
||||||
);
|
);
|
||||||
|
|
||||||
return Convert.ToInt32(outParam.Value);
|
return Convert.ToInt32(outParam.Value);
|
||||||
|
@ -2847,8 +2847,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
public static void UpdateExchangeMailboxPlan(int mailboxPlanID, string mailboxPlan, bool enableActiveSync, bool enableIMAP, bool enableMAPI, bool enableOWA, bool enablePOP,
|
public static void UpdateExchangeMailboxPlan(int mailboxPlanID, string mailboxPlan, bool enableActiveSync, bool enableIMAP, bool enableMAPI, bool enableOWA, bool enablePOP,
|
||||||
bool isDefault, int issueWarningPct, int keepDeletedItemsDays, int mailboxSizeMB, int maxReceiveMessageSizeKB, int maxRecipients,
|
bool isDefault, int issueWarningPct, int keepDeletedItemsDays, int mailboxSizeMB, int maxReceiveMessageSizeKB, int maxRecipients,
|
||||||
int maxSendMessageSizeKB, int prohibitSendPct, int prohibitSendReceivePct, bool hideFromAddressBook, int mailboxPlanType,
|
int maxSendMessageSizeKB, int prohibitSendPct, int prohibitSendReceivePct, bool hideFromAddressBook, int mailboxPlanType,
|
||||||
bool enabledLitigationHold, long recoverabelItemsSpace, long recoverabelItemsWarning, string litigationHoldUrl, string litigationHoldMsg,
|
bool enabledLitigationHold, long recoverabelItemsSpace, long recoverabelItemsWarning, string litigationHoldUrl, string litigationHoldMsg,
|
||||||
bool Archiving, bool EnableArchiving, int ArchiveSizeMB, int ArchiveWarningPct)
|
bool Archiving, bool EnableArchiving, int ArchiveSizeMB, int ArchiveWarningPct, bool enableForceArchiveDeletion)
|
||||||
{
|
{
|
||||||
SqlHelper.ExecuteNonQuery(
|
SqlHelper.ExecuteNonQuery(
|
||||||
ConnectionString,
|
ConnectionString,
|
||||||
|
@ -2880,7 +2880,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
new SqlParameter("@Archiving", Archiving),
|
new SqlParameter("@Archiving", Archiving),
|
||||||
new SqlParameter("@EnableArchiving", EnableArchiving),
|
new SqlParameter("@EnableArchiving", EnableArchiving),
|
||||||
new SqlParameter("@ArchiveSizeMB", ArchiveSizeMB),
|
new SqlParameter("@ArchiveSizeMB", ArchiveSizeMB),
|
||||||
new SqlParameter("@ArchiveWarningPct", ArchiveWarningPct)
|
new SqlParameter("@ArchiveWarningPct", ArchiveWarningPct),
|
||||||
|
new SqlParameter("@EnableForceArchiveDeletion", enableForceArchiveDeletion)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3156,6 +3157,45 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
#region Organizations
|
#region Organizations
|
||||||
|
|
||||||
|
public static int AddOrganizationDeletedUser(int accountId, int originAT, string storagePath, string folderName, string fileName, DateTime expirationDate)
|
||||||
|
{
|
||||||
|
SqlParameter outParam = new SqlParameter("@ID", SqlDbType.Int);
|
||||||
|
outParam.Direction = ParameterDirection.Output;
|
||||||
|
|
||||||
|
SqlHelper.ExecuteNonQuery(
|
||||||
|
ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"AddOrganizationDeletedUser",
|
||||||
|
outParam,
|
||||||
|
new SqlParameter("@AccountID", accountId),
|
||||||
|
new SqlParameter("@OriginAT", originAT),
|
||||||
|
new SqlParameter("@StoragePath", storagePath),
|
||||||
|
new SqlParameter("@FolderName", folderName),
|
||||||
|
new SqlParameter("@FileName", fileName),
|
||||||
|
new SqlParameter("@ExpirationDate", expirationDate)
|
||||||
|
);
|
||||||
|
|
||||||
|
return Convert.ToInt32(outParam.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void DeleteOrganizationDeletedUser(int id)
|
||||||
|
{
|
||||||
|
SqlHelper.ExecuteNonQuery(ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"DeleteOrganizationDeletedUser",
|
||||||
|
new SqlParameter("@ID", id));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IDataReader GetOrganizationDeletedUser(int accountId)
|
||||||
|
{
|
||||||
|
return SqlHelper.ExecuteReader(
|
||||||
|
ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"GetOrganizationDeletedUser",
|
||||||
|
new SqlParameter("@AccountID", accountId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static IDataReader GetAdditionalGroups(int userId)
|
public static IDataReader GetAdditionalGroups(int userId)
|
||||||
{
|
{
|
||||||
return SqlHelper.ExecuteReader(
|
return SqlHelper.ExecuteReader(
|
||||||
|
|
|
@ -1953,6 +1953,86 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int ExportMailBox(int itemId, int accountId, string path)
|
||||||
|
{
|
||||||
|
// check account
|
||||||
|
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
|
||||||
|
|
||||||
|
if (accountCheck < 0)
|
||||||
|
{
|
||||||
|
return accountCheck;
|
||||||
|
}
|
||||||
|
|
||||||
|
// place log record
|
||||||
|
TaskManager.StartTask("EXCHANGE", "EXPORT_MAILBOX", itemId);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// load organization
|
||||||
|
Organization org = GetOrganization(itemId);
|
||||||
|
if (org == null)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
// load account
|
||||||
|
ExchangeAccount account = GetAccount(itemId, accountId);
|
||||||
|
|
||||||
|
// export mailbox
|
||||||
|
int serviceExchangeId = GetExchangeServiceID(org.PackageId);
|
||||||
|
ExchangeServer exchange = GetExchangeServer(serviceExchangeId, org.ServiceId);
|
||||||
|
exchange.ExportMailBox(org.OrganizationId, account.UserPrincipalName, path);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw TaskManager.WriteError(ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
TaskManager.CompleteTask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int SetDeletedMailbox(int itemId, int accountId)
|
||||||
|
{
|
||||||
|
// check account
|
||||||
|
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
|
||||||
|
if (accountCheck < 0) return accountCheck;
|
||||||
|
|
||||||
|
// place log record
|
||||||
|
TaskManager.StartTask("EXCHANGE", "SET_DELETED_MAILBOX", itemId);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// load organization
|
||||||
|
Organization org = GetOrganization(itemId);
|
||||||
|
if (org == null)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
// load account
|
||||||
|
ExchangeAccount account = GetAccount(itemId, accountId);
|
||||||
|
|
||||||
|
if (BlackBerryController.CheckBlackBerryUserExists(accountId))
|
||||||
|
{
|
||||||
|
BlackBerryController.DeleteBlackBerryUser(itemId, accountId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete mailbox
|
||||||
|
int serviceExchangeId = GetExchangeServiceID(org.PackageId);
|
||||||
|
ExchangeServer exchange = GetExchangeServer(serviceExchangeId, org.ServiceId);
|
||||||
|
exchange.DisableMailbox(account.UserPrincipalName);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw TaskManager.WriteError(ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
TaskManager.CompleteTask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static int DeleteMailbox(int itemId, int accountId)
|
public static int DeleteMailbox(int itemId, int accountId)
|
||||||
{
|
{
|
||||||
|
@ -2984,7 +3064,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
mailboxPlan.MaxSendMessageSizeKB, mailboxPlan.ProhibitSendPct, mailboxPlan.ProhibitSendReceivePct, mailboxPlan.HideFromAddressBook, mailboxPlan.MailboxPlanType,
|
mailboxPlan.MaxSendMessageSizeKB, mailboxPlan.ProhibitSendPct, mailboxPlan.ProhibitSendReceivePct, mailboxPlan.HideFromAddressBook, mailboxPlan.MailboxPlanType,
|
||||||
mailboxPlan.AllowLitigationHold, mailboxPlan.RecoverableItemsSpace, mailboxPlan.RecoverableItemsWarningPct,
|
mailboxPlan.AllowLitigationHold, mailboxPlan.RecoverableItemsSpace, mailboxPlan.RecoverableItemsWarningPct,
|
||||||
mailboxPlan.LitigationHoldUrl, mailboxPlan.LitigationHoldMsg, mailboxPlan.Archiving, mailboxPlan.EnableArchiving,
|
mailboxPlan.LitigationHoldUrl, mailboxPlan.LitigationHoldMsg, mailboxPlan.Archiving, mailboxPlan.EnableArchiving,
|
||||||
mailboxPlan.ArchiveSizeMB, mailboxPlan.ArchiveWarningPct);
|
mailboxPlan.ArchiveSizeMB, mailboxPlan.ArchiveWarningPct, mailboxPlan.EnableForceArchiveDeletion);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -3054,9 +3134,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
mailboxPlan.IsDefault, mailboxPlan.IssueWarningPct, mailboxPlan.KeepDeletedItemsDays, mailboxPlan.MailboxSizeMB, mailboxPlan.MaxReceiveMessageSizeKB, mailboxPlan.MaxRecipients,
|
mailboxPlan.IsDefault, mailboxPlan.IssueWarningPct, mailboxPlan.KeepDeletedItemsDays, mailboxPlan.MailboxSizeMB, mailboxPlan.MaxReceiveMessageSizeKB, mailboxPlan.MaxRecipients,
|
||||||
mailboxPlan.MaxSendMessageSizeKB, mailboxPlan.ProhibitSendPct, mailboxPlan.ProhibitSendReceivePct, mailboxPlan.HideFromAddressBook, mailboxPlan.MailboxPlanType,
|
mailboxPlan.MaxSendMessageSizeKB, mailboxPlan.ProhibitSendPct, mailboxPlan.ProhibitSendReceivePct, mailboxPlan.HideFromAddressBook, mailboxPlan.MailboxPlanType,
|
||||||
mailboxPlan.AllowLitigationHold, mailboxPlan.RecoverableItemsSpace, mailboxPlan.RecoverableItemsWarningPct,
|
mailboxPlan.AllowLitigationHold, mailboxPlan.RecoverableItemsSpace, mailboxPlan.RecoverableItemsWarningPct,
|
||||||
mailboxPlan.LitigationHoldUrl, mailboxPlan.LitigationHoldMsg,
|
mailboxPlan.LitigationHoldUrl, mailboxPlan.LitigationHoldMsg, mailboxPlan.Archiving, mailboxPlan.EnableArchiving,
|
||||||
mailboxPlan.Archiving, mailboxPlan.EnableArchiving,
|
mailboxPlan.ArchiveSizeMB, mailboxPlan.ArchiveWarningPct, mailboxPlan.EnableForceArchiveDeletion);
|
||||||
mailboxPlan.ArchiveSizeMB, mailboxPlan.ArchiveWarningPct);
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,6 +49,8 @@ using System.Xml;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
||||||
using WebsitePanel.Providers.OS;
|
using WebsitePanel.Providers.OS;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using WebsitePanel.Server.Client;
|
||||||
|
|
||||||
namespace WebsitePanel.EnterpriseServer
|
namespace WebsitePanel.EnterpriseServer
|
||||||
{
|
{
|
||||||
|
@ -71,6 +73,21 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool CheckDeletedUserQuota(int orgId, out int errorCode)
|
||||||
|
{
|
||||||
|
errorCode = 0;
|
||||||
|
OrganizationStatistics stats = GetOrganizationStatistics(orgId);
|
||||||
|
|
||||||
|
|
||||||
|
if (stats.AllocatedDeletedUsers != -1 && (stats.DeletedUsers >= stats.AllocatedDeletedUsers))
|
||||||
|
{
|
||||||
|
errorCode = BusinessErrorCodes.ERROR_DELETED_USERS_RESOURCE_QUOTA_LIMIT;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private static string EvaluateMailboxTemplate(int itemId, int accountId,
|
private static string EvaluateMailboxTemplate(int itemId, int accountId,
|
||||||
bool pmm, bool emailMode, bool signup, string template)
|
bool pmm, bool emailMode, bool signup, string template)
|
||||||
{
|
{
|
||||||
|
@ -933,6 +950,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
stats.CreatedUsers = tempStats.CreatedUsers;
|
stats.CreatedUsers = tempStats.CreatedUsers;
|
||||||
stats.CreatedDomains = tempStats.CreatedDomains;
|
stats.CreatedDomains = tempStats.CreatedDomains;
|
||||||
stats.CreatedGroups = tempStats.CreatedGroups;
|
stats.CreatedGroups = tempStats.CreatedGroups;
|
||||||
|
stats.DeletedUsers = tempStats.DeletedUsers;
|
||||||
|
|
||||||
PackageContext cntxTmp = PackageController.GetPackageContext(org.PackageId);
|
PackageContext cntxTmp = PackageController.GetPackageContext(org.PackageId);
|
||||||
|
|
||||||
|
@ -1067,6 +1085,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
// allocated quotas
|
// allocated quotas
|
||||||
PackageContext cntx = PackageController.GetPackageContext(org.PackageId);
|
PackageContext cntx = PackageController.GetPackageContext(org.PackageId);
|
||||||
stats.AllocatedUsers = cntx.Quotas[Quotas.ORGANIZATION_USERS].QuotaAllocatedValue;
|
stats.AllocatedUsers = cntx.Quotas[Quotas.ORGANIZATION_USERS].QuotaAllocatedValue;
|
||||||
|
stats.AllocatedDeletedUsers = cntx.Quotas[Quotas.ORGANIZATION_DELETED_USERS].QuotaAllocatedValue;
|
||||||
stats.AllocatedDomains = cntx.Quotas[Quotas.ORGANIZATION_DOMAINS].QuotaAllocatedValue;
|
stats.AllocatedDomains = cntx.Quotas[Quotas.ORGANIZATION_DOMAINS].QuotaAllocatedValue;
|
||||||
stats.AllocatedGroups = cntx.Quotas[Quotas.ORGANIZATION_SECURITYGROUPS].QuotaAllocatedValue;
|
stats.AllocatedGroups = cntx.Quotas[Quotas.ORGANIZATION_SECURITYGROUPS].QuotaAllocatedValue;
|
||||||
|
|
||||||
|
@ -1327,8 +1346,64 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
#region Users
|
#region Users
|
||||||
|
|
||||||
|
public static List<OrganizationDeletedUser> GetOrganizationDeletedUsers(int itemId)
|
||||||
|
{
|
||||||
|
var result = new List<OrganizationDeletedUser>();
|
||||||
|
|
||||||
|
var orgDeletedUsers = ObjectUtils.CreateListFromDataReader<OrganizationUser>(
|
||||||
|
DataProvider.GetExchangeAccounts(itemId, (int)ExchangeAccountType.DeletedUser));
|
||||||
|
|
||||||
|
foreach (var orgDeletedUser in orgDeletedUsers)
|
||||||
|
{
|
||||||
|
OrganizationDeletedUser deletedUser = GetDeletedUser(orgDeletedUser.AccountId);
|
||||||
|
|
||||||
|
if (deletedUser == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
deletedUser.User = orgDeletedUser;
|
||||||
|
|
||||||
|
result.Add(deletedUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OrganizationDeletedUsersPaged GetOrganizationDeletedUsersPaged(int itemId, string filterColumn, string filterValue, string sortColumn,
|
||||||
|
int startRow, int maximumRows)
|
||||||
|
{
|
||||||
|
DataSet ds =
|
||||||
|
DataProvider.GetExchangeAccountsPaged(SecurityContext.User.UserId, itemId, ((int)ExchangeAccountType.DeletedUser).ToString(),
|
||||||
|
filterColumn, filterValue, sortColumn, startRow, maximumRows, false);
|
||||||
|
|
||||||
|
OrganizationDeletedUsersPaged result = new OrganizationDeletedUsersPaged();
|
||||||
|
result.RecordsCount = (int)ds.Tables[0].Rows[0][0];
|
||||||
|
|
||||||
|
List<OrganizationUser> Tmpaccounts = new List<OrganizationUser>();
|
||||||
|
ObjectUtils.FillCollectionFromDataView(Tmpaccounts, ds.Tables[1].DefaultView);
|
||||||
|
|
||||||
|
List<OrganizationDeletedUser> deletedUsers = new List<OrganizationDeletedUser>();
|
||||||
|
|
||||||
|
foreach (OrganizationUser user in Tmpaccounts.ToArray())
|
||||||
|
{
|
||||||
|
OrganizationDeletedUser deletedUser = GetDeletedUser(user.AccountId);
|
||||||
|
|
||||||
|
if (deletedUser == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
OrganizationUser tmpUser = GetUserGeneralSettings(itemId, user.AccountId);
|
||||||
|
|
||||||
|
if (tmpUser != null)
|
||||||
|
{
|
||||||
|
deletedUser.User = tmpUser;
|
||||||
|
|
||||||
|
deletedUsers.Add(deletedUser);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result.PageDeletedUsers = deletedUsers.ToArray();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public static OrganizationUsersPaged GetOrganizationUsersPaged(int itemId, string filterColumn, string filterValue, string sortColumn,
|
public static OrganizationUsersPaged GetOrganizationUsersPaged(int itemId, string filterColumn, string filterValue, string sortColumn,
|
||||||
int startRow, int maximumRows)
|
int startRow, int maximumRows)
|
||||||
|
@ -1722,10 +1797,256 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Deleted Users
|
||||||
|
|
||||||
|
public static int SetDeletedUser(int itemId, int accountId, bool enableForceArchive)
|
||||||
|
{
|
||||||
|
// check account
|
||||||
|
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
|
||||||
|
if (accountCheck < 0) return accountCheck;
|
||||||
|
|
||||||
|
// place log record
|
||||||
|
TaskManager.StartTask("ORGANIZATION", "SET_DELETED_USER", itemId);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Guid crmUserId = CRMController.GetCrmUserId(accountId);
|
||||||
|
if (crmUserId != Guid.Empty)
|
||||||
|
{
|
||||||
|
return BusinessErrorCodes.CURRENT_USER_IS_CRM_USER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DataProvider.CheckOCSUserExists(accountId))
|
||||||
|
{
|
||||||
|
return BusinessErrorCodes.CURRENT_USER_IS_OCS_USER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DataProvider.CheckLyncUserExists(accountId))
|
||||||
|
{
|
||||||
|
return BusinessErrorCodes.CURRENT_USER_IS_LYNC_USER;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// load organization
|
||||||
|
Organization org = GetOrganization(itemId);
|
||||||
|
if (org == null)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
int errorCode;
|
||||||
|
if (!CheckDeletedUserQuota(org.Id, out errorCode))
|
||||||
|
return errorCode;
|
||||||
|
|
||||||
|
// load account
|
||||||
|
ExchangeAccount account = ExchangeServerController.GetAccount(itemId, accountId);
|
||||||
|
|
||||||
|
string accountName = GetAccountName(account.AccountName);
|
||||||
|
|
||||||
|
var deletedUser = new OrganizationDeletedUser
|
||||||
|
{
|
||||||
|
AccountId = account.AccountId,
|
||||||
|
OriginAT = account.AccountType,
|
||||||
|
ExpirationDate = DateTime.UtcNow.AddHours(1)
|
||||||
|
};
|
||||||
|
|
||||||
|
if (account.AccountType == ExchangeAccountType.User)
|
||||||
|
{
|
||||||
|
Organizations orgProxy = GetOrganizationProxy(org.ServiceId);
|
||||||
|
|
||||||
|
//Disable user in AD
|
||||||
|
orgProxy.DisableUser(accountName, org.OrganizationId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (enableForceArchive)
|
||||||
|
{
|
||||||
|
var serviceId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.HostedOrganizations);
|
||||||
|
|
||||||
|
if (serviceId != 0)
|
||||||
|
{
|
||||||
|
var settings = ServerController.GetServiceSettings(serviceId);
|
||||||
|
|
||||||
|
deletedUser.StoragePath = settings["ArchiveStoragePath"];
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(deletedUser.StoragePath))
|
||||||
|
{
|
||||||
|
deletedUser.FolderName = org.OrganizationId;
|
||||||
|
|
||||||
|
if (!CheckFolderExists(org.PackageId, deletedUser.StoragePath, deletedUser.FolderName))
|
||||||
|
{
|
||||||
|
CreateFolder(org.PackageId, deletedUser.StoragePath, deletedUser.FolderName);
|
||||||
|
}
|
||||||
|
|
||||||
|
QuotaValueInfo diskSpaceQuota = PackageController.GetPackageQuota(org.PackageId, Quotas.ORGANIZATION_DELETED_USERS_BACKUP_STORAGE_SPACE);
|
||||||
|
|
||||||
|
if (diskSpaceQuota.QuotaAllocatedValue != -1)
|
||||||
|
{
|
||||||
|
SetFRSMQuotaOnFolder(org.PackageId, deletedUser.StoragePath, org.OrganizationId, diskSpaceQuota, QuotaType.Hard);
|
||||||
|
}
|
||||||
|
|
||||||
|
deletedUser.FileName = string.Format("{0}.pst", account.UserPrincipalName);
|
||||||
|
|
||||||
|
ExchangeServerController.ExportMailBox(itemId, accountId,
|
||||||
|
FilesController.ConvertToUncPath(serviceId,
|
||||||
|
Path.Combine(GetDirectory(deletedUser.StoragePath), deletedUser.FolderName, deletedUser.FileName)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set Deleted Mailbox
|
||||||
|
ExchangeServerController.SetDeletedMailbox(itemId, accountId);
|
||||||
|
}
|
||||||
|
|
||||||
|
AddDeletedUser(deletedUser);
|
||||||
|
|
||||||
|
account.AccountType = ExchangeAccountType.DeletedUser;
|
||||||
|
|
||||||
|
UpdateAccount(account);
|
||||||
|
|
||||||
|
var taskId = "SCHEDULE_TASK_DELETE_EXCHANGE_ACCOUNTS";
|
||||||
|
|
||||||
|
if (!CheckScheduleTaskRun(org.PackageId, taskId))
|
||||||
|
{
|
||||||
|
AddScheduleTask(org.PackageId, taskId, "Auto Delete Exchange Account");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw TaskManager.WriteError(ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
TaskManager.CompleteTask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] GetArchiveFileBinaryChunk(int packageId, string path, int offset, int length)
|
||||||
|
{
|
||||||
|
var os = GetOS(packageId);
|
||||||
|
|
||||||
|
if (os != null && os.CheckFileServicesInstallation())
|
||||||
|
{
|
||||||
|
return os.GetFileBinaryChunk(path, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool CheckScheduleTaskRun(int packageId, string taskId)
|
||||||
|
{
|
||||||
|
var schedules = new List<ScheduleInfo>();
|
||||||
|
|
||||||
|
ObjectUtils.FillCollectionFromDataSet(schedules, SchedulerController.GetSchedules(packageId));
|
||||||
|
|
||||||
|
foreach(var schedule in schedules)
|
||||||
|
{
|
||||||
|
if (schedule.TaskId == taskId)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int AddScheduleTask(int packageId, string taskId, string taskName)
|
||||||
|
{
|
||||||
|
return SchedulerController.AddSchedule(new ScheduleInfo
|
||||||
|
{
|
||||||
|
PackageId = packageId,
|
||||||
|
TaskId = taskId,
|
||||||
|
ScheduleName = taskName,
|
||||||
|
ScheduleTypeId = "Daily",
|
||||||
|
FromTime = new DateTime(2000, 1, 1, 0, 0, 0),
|
||||||
|
ToTime = new DateTime(2000, 1, 1, 23, 59, 59),
|
||||||
|
Interval = 3600,
|
||||||
|
StartTime = new DateTime(2000, 01, 01, 0, 30, 0),
|
||||||
|
MaxExecutionTime = 3600,
|
||||||
|
PriorityId = "Normal",
|
||||||
|
Enabled = true,
|
||||||
|
WeekMonthDay = 1,
|
||||||
|
HistoriesNumber = 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool CheckFolderExists(int packageId, string path, string folderName)
|
||||||
|
{
|
||||||
|
var os = GetOS(packageId);
|
||||||
|
|
||||||
|
if (os != null && os.CheckFileServicesInstallation())
|
||||||
|
{
|
||||||
|
return os.DirectoryExists(Path.Combine(path, folderName));
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CreateFolder(int packageId, string path, string folderName)
|
||||||
|
{
|
||||||
|
var os = GetOS(packageId);
|
||||||
|
|
||||||
|
if (os != null && os.CheckFileServicesInstallation())
|
||||||
|
{
|
||||||
|
os.CreateDirectory(Path.Combine(path, folderName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RemoveArchive(int packageId, string path, string folderName, string fileName)
|
||||||
|
{
|
||||||
|
var os = GetOS(packageId);
|
||||||
|
|
||||||
|
if (os != null && os.CheckFileServicesInstallation())
|
||||||
|
{
|
||||||
|
os.DeleteFile(Path.Combine(path, folderName, fileName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetLocationDrive(string path)
|
||||||
|
{
|
||||||
|
var drive = System.IO.Path.GetPathRoot(path);
|
||||||
|
|
||||||
|
return drive.Split(':')[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetDirectory(string path)
|
||||||
|
{
|
||||||
|
var drive = System.IO.Path.GetPathRoot(path);
|
||||||
|
|
||||||
|
return path.Replace(drive, string.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetFRSMQuotaOnFolder(int packageId, string path, string folderName, QuotaValueInfo quotaInfo, QuotaType quotaType)
|
||||||
|
{
|
||||||
|
var os = GetOS(packageId);
|
||||||
|
|
||||||
|
if (os != null && os.CheckFileServicesInstallation())
|
||||||
|
{
|
||||||
|
#region figure Quota Unit
|
||||||
|
|
||||||
|
// Quota Unit
|
||||||
|
string unit = string.Empty;
|
||||||
|
if (quotaInfo.QuotaDescription.ToLower().Contains("gb"))
|
||||||
|
unit = "GB";
|
||||||
|
else if (quotaInfo.QuotaDescription.ToLower().Contains("mb"))
|
||||||
|
unit = "MB";
|
||||||
|
else
|
||||||
|
unit = "KB";
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
os.SetQuotaLimitOnFolder(
|
||||||
|
Path.Combine(GetDirectory(path), folderName),
|
||||||
|
GetLocationDrive(path), quotaType,
|
||||||
|
quotaInfo.QuotaAllocatedValue.ToString() + unit,
|
||||||
|
0, String.Empty, String.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
public static int DeleteUser(int itemId, int accountId)
|
public static int DeleteUser(int itemId, int accountId)
|
||||||
{
|
{
|
||||||
// check account
|
// check account
|
||||||
|
@ -1733,7 +2054,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
if (accountCheck < 0) return accountCheck;
|
if (accountCheck < 0) return accountCheck;
|
||||||
|
|
||||||
// place log record
|
// place log record
|
||||||
TaskManager.StartTask("ORGANIZATION", "DELETE_USER", itemId);
|
TaskManager.StartTask("ORGANIZATION", "REMOVE_USER", itemId);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -1761,13 +2082,32 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
// load account
|
// load account
|
||||||
OrganizationUser user = GetAccount(itemId, accountId);
|
ExchangeAccount user = ExchangeServerController.GetAccount(itemId, accountId);
|
||||||
|
|
||||||
Organizations orgProxy = GetOrganizationProxy(org.ServiceId);
|
Organizations orgProxy = GetOrganizationProxy(org.ServiceId);
|
||||||
|
|
||||||
string account = GetAccountName(user.AccountName);
|
string account = GetAccountName(user.AccountName);
|
||||||
|
|
||||||
if (user.AccountType == ExchangeAccountType.User)
|
var accountType = user.AccountType;
|
||||||
|
|
||||||
|
if (accountType == ExchangeAccountType.DeletedUser)
|
||||||
|
{
|
||||||
|
var deletedUser = GetDeletedUser(user.AccountId);
|
||||||
|
|
||||||
|
if (deletedUser != null)
|
||||||
|
{
|
||||||
|
accountType = deletedUser.OriginAT;
|
||||||
|
|
||||||
|
if (!deletedUser.IsArchiveEmpty)
|
||||||
|
{
|
||||||
|
RemoveArchive(org.PackageId, deletedUser.StoragePath, deletedUser.FolderName, deletedUser.FileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
RemoveDeletedUser(deletedUser.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user.AccountType == ExchangeAccountType.User )
|
||||||
{
|
{
|
||||||
//Delete user from AD
|
//Delete user from AD
|
||||||
orgProxy.DeleteUser(account, org.OrganizationId);
|
orgProxy.DeleteUser(account, org.OrganizationId);
|
||||||
|
@ -1791,6 +2131,30 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static OrganizationDeletedUser GetDeletedUser(int accountId)
|
||||||
|
{
|
||||||
|
OrganizationDeletedUser deletedUser = ObjectUtils.FillObjectFromDataReader<OrganizationDeletedUser>(
|
||||||
|
DataProvider.GetOrganizationDeletedUser(accountId));
|
||||||
|
|
||||||
|
if (deletedUser == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
deletedUser.IsArchiveEmpty = string.IsNullOrEmpty(deletedUser.FileName);
|
||||||
|
|
||||||
|
return deletedUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int AddDeletedUser(OrganizationDeletedUser deletedUser)
|
||||||
|
{
|
||||||
|
return DataProvider.AddOrganizationDeletedUser(
|
||||||
|
deletedUser.AccountId, (int)deletedUser.OriginAT, deletedUser.StoragePath, deletedUser.FolderName, deletedUser.FileName, deletedUser.ExpirationDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RemoveDeletedUser(int id)
|
||||||
|
{
|
||||||
|
DataProvider.DeleteOrganizationDeletedUser(id);
|
||||||
|
}
|
||||||
|
|
||||||
public static OrganizationUser GetAccount(int itemId, int userId)
|
public static OrganizationUser GetAccount(int itemId, int userId)
|
||||||
{
|
{
|
||||||
OrganizationUser account = ObjectUtils.FillObjectFromDataReader<OrganizationUser>(
|
OrganizationUser account = ObjectUtils.FillObjectFromDataReader<OrganizationUser>(
|
||||||
|
@ -3080,5 +3444,21 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region OS
|
||||||
|
|
||||||
|
private static WebsitePanel.Providers.OS.OperatingSystem GetOS(int packageId)
|
||||||
|
{
|
||||||
|
int sid = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os);
|
||||||
|
if (sid <= 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var os = new WebsitePanel.Providers.OS.OperatingSystem();
|
||||||
|
ServiceProviderProxy.Init(os, sid);
|
||||||
|
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
// Copyright (c) 2014, 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.Diagnostics;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using WebsitePanel.Providers.Exchange;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
|
||||||
|
namespace WebsitePanel.EnterpriseServer
|
||||||
|
{
|
||||||
|
public class DeleteExchangeAccountsTask : SchedulerTask
|
||||||
|
{
|
||||||
|
public override void DoWork()
|
||||||
|
{
|
||||||
|
DeletedAccounts();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeletedAccounts()
|
||||||
|
{
|
||||||
|
List<Organization> organizations = OrganizationController.GetOrganizations(TaskManager.TopTask.PackageId, true);
|
||||||
|
|
||||||
|
foreach (Organization organization in organizations)
|
||||||
|
{
|
||||||
|
List<OrganizationDeletedUser> deletedUsers = OrganizationController.GetOrganizationDeletedUsers(organization.Id);
|
||||||
|
|
||||||
|
foreach (OrganizationDeletedUser deletedUser in deletedUsers)
|
||||||
|
{
|
||||||
|
if (deletedUser.ExpirationDate > DateTime.UtcNow)
|
||||||
|
{
|
||||||
|
OrganizationController.DeleteUser(TaskManager.TopTask.ItemId, deletedUser.AccountId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -135,6 +135,7 @@
|
||||||
<Compile Include="SchedulerTasks\ActivatePaidInvoicesTask.cs" />
|
<Compile Include="SchedulerTasks\ActivatePaidInvoicesTask.cs" />
|
||||||
<Compile Include="SchedulerTasks\BackupDatabaseTask.cs" />
|
<Compile Include="SchedulerTasks\BackupDatabaseTask.cs" />
|
||||||
<Compile Include="SchedulerTasks\BackupTask.cs" />
|
<Compile Include="SchedulerTasks\BackupTask.cs" />
|
||||||
|
<Compile Include="SchedulerTasks\DeleteExchangeAccountsTask.cs" />
|
||||||
<Compile Include="SchedulerTasks\CalculateExchangeDiskspaceTask.cs" />
|
<Compile Include="SchedulerTasks\CalculateExchangeDiskspaceTask.cs" />
|
||||||
<Compile Include="SchedulerTasks\CalculatePackagesBandwidthTask.cs" />
|
<Compile Include="SchedulerTasks\CalculatePackagesBandwidthTask.cs" />
|
||||||
<Compile Include="SchedulerTasks\CalculatePackagesDiskspaceTask.cs" />
|
<Compile Include="SchedulerTasks\CalculatePackagesDiskspaceTask.cs" />
|
||||||
|
|
|
@ -338,6 +338,18 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return ExchangeServerController.SetMailboxPermissions(itemId, accountId, sendAsaccounts, fullAccessAcounts);
|
return ExchangeServerController.SetMailboxPermissions(itemId, accountId, sendAsaccounts, fullAccessAcounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public int ExportMailBox(int itemId, int accountId, string path)
|
||||||
|
{
|
||||||
|
return ExchangeServerController.ExportMailBox(itemId, accountId, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public int SetDeletedMailbox(int itemId, int accountId)
|
||||||
|
{
|
||||||
|
return ExchangeServerController.SetDeletedMailbox(itemId, accountId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -175,6 +175,12 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return OrganizationController.ImportUser(itemId, accountName, displayName, name, domain, password, subscriberNumber);
|
return OrganizationController.ImportUser(itemId, accountName, displayName, name, domain, password, subscriberNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public OrganizationDeletedUsersPaged GetOrganizationDeletedUsersPaged(int itemId, string filterColumn, string filterValue, string sortColumn,
|
||||||
|
int startRow, int maximumRows)
|
||||||
|
{
|
||||||
|
return OrganizationController.GetOrganizationDeletedUsersPaged(itemId, filterColumn, filterValue, sortColumn, startRow, maximumRows);
|
||||||
|
}
|
||||||
|
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
public OrganizationUsersPaged GetOrganizationUsersPaged(int itemId, string filterColumn, string filterValue, string sortColumn,
|
public OrganizationUsersPaged GetOrganizationUsersPaged(int itemId, string filterColumn, string filterValue, string sortColumn,
|
||||||
|
@ -230,6 +236,17 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
filterColumn, filterValue, sortColumn, includeMailboxes);
|
filterColumn, filterValue, sortColumn, includeMailboxes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public int SetDeletedUser(int itemId, int accountId, bool enableForceArchive)
|
||||||
|
{
|
||||||
|
return OrganizationController.SetDeletedUser(itemId, accountId, enableForceArchive);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public byte[] GetArchiveFileBinaryChunk(int packageId, string path, int offset, int length)
|
||||||
|
{
|
||||||
|
return OrganizationController.GetArchiveFileBinaryChunk(packageId, path, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
public int DeleteUser(int itemId, int accountId)
|
public int DeleteUser(int itemId, int accountId)
|
||||||
|
|
|
@ -40,6 +40,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
User = 7,
|
User = 7,
|
||||||
SecurityGroup = 8,
|
SecurityGroup = 8,
|
||||||
DefaultSecurityGroup = 9,
|
DefaultSecurityGroup = 9,
|
||||||
SharedMailbox = 10
|
SharedMailbox = 10,
|
||||||
|
DeletedUser = 11
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -247,6 +247,13 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
set { this.archiveWarningPct = value; }
|
set { this.archiveWarningPct = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool enableForceArchiveDeletion;
|
||||||
|
public bool EnableForceArchiveDeletion
|
||||||
|
{
|
||||||
|
get { return this.enableForceArchiveDeletion; }
|
||||||
|
set { this.enableForceArchiveDeletion = value; }
|
||||||
|
}
|
||||||
|
|
||||||
public string WSPUniqueName
|
public string WSPUniqueName
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -143,6 +143,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
int RemoveDisclamerMember(string name, string member);
|
int RemoveDisclamerMember(string name, string member);
|
||||||
|
|
||||||
// Archiving
|
// Archiving
|
||||||
|
ResultObject ExportMailBox(string organizationId, string accountName, string storagePath);
|
||||||
ResultObject SetMailBoxArchiving(string organizationId, string accountName, bool archive, long archiveQuotaKB, long archiveWarningQuotaKB, string RetentionPolicy);
|
ResultObject SetMailBoxArchiving(string organizationId, string accountName, bool archive, long archiveQuotaKB, long archiveWarningQuotaKB, string RetentionPolicy);
|
||||||
|
|
||||||
// Retention policy
|
// Retention policy
|
||||||
|
|
|
@ -39,6 +39,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
int CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled);
|
int CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled);
|
||||||
|
|
||||||
|
void DisableUser(string loginName, string organizationId);
|
||||||
|
|
||||||
void DeleteUser(string loginName, string organizationId);
|
void DeleteUser(string loginName, string organizationId);
|
||||||
|
|
||||||
OrganizationUser GetUserGeneralSettings(string loginName, string organizationId);
|
OrganizationUser GetUserGeneralSettings(string loginName, string organizationId);
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
// Copyright (c) 2014, 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;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
{
|
||||||
|
public class OrganizationDeletedUser
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public int AccountId { get; set; }
|
||||||
|
|
||||||
|
public ExchangeAccountType OriginAT { get; set; }
|
||||||
|
|
||||||
|
public string StoragePath { get; set; }
|
||||||
|
|
||||||
|
public string FolderName { get; set; }
|
||||||
|
|
||||||
|
public string FileName { get; set; }
|
||||||
|
|
||||||
|
public DateTime ExpirationDate { get; set; }
|
||||||
|
|
||||||
|
public OrganizationUser User { get; set; }
|
||||||
|
|
||||||
|
public bool IsArchiveEmpty { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
// Copyright (c) 2014, 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.
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
{
|
||||||
|
public class OrganizationDeletedUsersPaged
|
||||||
|
{
|
||||||
|
int recordsCount;
|
||||||
|
OrganizationDeletedUser[] pageDeletedUsers;
|
||||||
|
|
||||||
|
public int RecordsCount
|
||||||
|
{
|
||||||
|
get { return recordsCount; }
|
||||||
|
set { recordsCount = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrganizationDeletedUser[] PageDeletedUsers
|
||||||
|
{
|
||||||
|
get { return pageDeletedUsers; }
|
||||||
|
set { pageDeletedUsers = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -82,6 +82,12 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
private int createdProfessionalCRMUsers;
|
private int createdProfessionalCRMUsers;
|
||||||
private int allocatedProfessionalCRMUsers;
|
private int allocatedProfessionalCRMUsers;
|
||||||
|
|
||||||
|
private int allocatedDeletedUsers;
|
||||||
|
private int deletedUsers;
|
||||||
|
|
||||||
|
private int allocatedDeletedUsersBackupStorageSpace;
|
||||||
|
private int usedDeletedUsersBackupStorageSpace;
|
||||||
|
|
||||||
public int CreatedProfessionalCRMUsers
|
public int CreatedProfessionalCRMUsers
|
||||||
{
|
{
|
||||||
get { return createdProfessionalCRMUsers; }
|
get { return createdProfessionalCRMUsers; }
|
||||||
|
@ -370,7 +376,29 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
set { createdResourceMailboxes = value; }
|
set { createdResourceMailboxes = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int AllocatedDeletedUsers
|
||||||
|
{
|
||||||
|
get { return allocatedDeletedUsers; }
|
||||||
|
set { allocatedDeletedUsers = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int DeletedUsers
|
||||||
|
{
|
||||||
|
get { return deletedUsers; }
|
||||||
|
set { deletedUsers = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int AllocatedDeletedUsersBackupStorageSpace
|
||||||
|
{
|
||||||
|
get { return allocatedDeletedUsersBackupStorageSpace; }
|
||||||
|
set { allocatedDeletedUsersBackupStorageSpace = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int UsedDeletedUsersBackupStorageSpace
|
||||||
|
{
|
||||||
|
get { return usedDeletedUsersBackupStorageSpace; }
|
||||||
|
set { usedDeletedUsersBackupStorageSpace = value; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,6 +116,8 @@
|
||||||
<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\OrganizationSecurityGroup.cs" />
|
||||||
|
<Compile Include="HostedSolution\OrganizationDeletedUser.cs" />
|
||||||
|
<Compile Include="HostedSolution\OrganizationDeletedUsersPaged.cs" />
|
||||||
<Compile Include="HostedSolution\TransactionAction.cs" />
|
<Compile Include="HostedSolution\TransactionAction.cs" />
|
||||||
<Compile Include="OS\MappedDrivesPaged.cs" />
|
<Compile Include="OS\MappedDrivesPaged.cs" />
|
||||||
<Compile Include="OS\MappedDrive.cs" />
|
<Compile Include="OS\MappedDrive.cs" />
|
||||||
|
|
|
@ -7482,6 +7482,43 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
#region Archiving
|
#region Archiving
|
||||||
|
|
||||||
|
public ResultObject ExportMailBox(string organizationId, string accountName, string storagePath)
|
||||||
|
{
|
||||||
|
return ExportMailBoxInternal(organizationId, accountName, storagePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResultObject ExportMailBoxInternal(string organizationId, string accountName, string storagePath)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("ExportMailBoxInternal");
|
||||||
|
ExchangeLog.DebugInfo("Account: {0}", accountName);
|
||||||
|
|
||||||
|
ResultObject res = new ResultObject() { IsSuccess = true };
|
||||||
|
|
||||||
|
Runspace runSpace = null;
|
||||||
|
Runspace runSpaceEx = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runSpace = OpenRunspace();
|
||||||
|
runSpaceEx = OpenRunspaceEx();
|
||||||
|
|
||||||
|
Command cmd = new Command("New-MailboxExportRequest");
|
||||||
|
cmd.Parameters.Add("Mailbox", accountName);
|
||||||
|
cmd.Parameters.Add("FilePath", storagePath);
|
||||||
|
|
||||||
|
ExecuteShellCommand(runSpace, cmd, res);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runSpace);
|
||||||
|
CloseRunspaceEx(runSpaceEx);
|
||||||
|
}
|
||||||
|
|
||||||
|
ExchangeLog.LogEnd("ExportMailBoxInternal");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
public ResultObject SetMailBoxArchiving(string organizationId, string accountName, bool archive, long archiveQuotaKB, long archiveWarningQuotaKB, string RetentionPolicy)
|
public ResultObject SetMailBoxArchiving(string organizationId, string accountName, bool archive, long archiveQuotaKB, long archiveWarningQuotaKB, string RetentionPolicy)
|
||||||
{
|
{
|
||||||
return SetMailBoxArchivingInternal(organizationId, accountName, archive, archiveQuotaKB, archiveWarningQuotaKB, RetentionPolicy);
|
return SetMailBoxArchivingInternal(organizationId, accountName, archive, archiveQuotaKB, archiveWarningQuotaKB, RetentionPolicy);
|
||||||
|
|
|
@ -7103,6 +7103,13 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Archiving
|
#region Archiving
|
||||||
|
|
||||||
|
public virtual ResultObject ExportMailBox(string organizationId, string accountName, string storagePath)
|
||||||
|
{
|
||||||
|
// not implemented
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual ResultObject SetMailBoxArchiving(string organizationId, string accountName, bool archive, long archiveQuotaKB, long archiveWarningQuotaKB, string RetentionPolicy)
|
public virtual ResultObject SetMailBoxArchiving(string organizationId, string accountName, bool archive, long archiveQuotaKB, long archiveWarningQuotaKB, string RetentionPolicy)
|
||||||
{
|
{
|
||||||
// not implemented
|
// not implemented
|
||||||
|
|
|
@ -526,6 +526,36 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DisableUser(string loginName, string organizationId)
|
||||||
|
{
|
||||||
|
DisableUserInternal(loginName, organizationId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DisableUserInternal(string loginName, string organizationId)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("DisableUserInternal");
|
||||||
|
HostedSolutionLog.DebugInfo("loginName : {0}", loginName);
|
||||||
|
HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(loginName))
|
||||||
|
throw new ArgumentNullException("loginName");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(organizationId))
|
||||||
|
throw new ArgumentNullException("organizationId");
|
||||||
|
|
||||||
|
string path = GetUserPath(organizationId, loginName);
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.AdObjectExists(path))
|
||||||
|
{
|
||||||
|
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
|
||||||
|
|
||||||
|
entry.InvokeSet(ADAttributes.AccountDisabled, true);
|
||||||
|
|
||||||
|
entry.CommitChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("DisableUserInternal");
|
||||||
|
}
|
||||||
|
|
||||||
public void DeleteUser(string loginName, string organizationId)
|
public void DeleteUser(string loginName, string organizationId)
|
||||||
{
|
{
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,7 @@
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 2012
|
# Visual Studio 2013
|
||||||
|
VisualStudioVersion = 12.0.30723.0
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Caching Application Block", "Caching Application Block", "{C8E6F2E4-A5B8-486A-A56E-92D864524682}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Caching Application Block", "Caching Application Block", "{C8E6F2E4-A5B8-486A-A56E-92D864524682}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll = Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll
|
Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll = Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll
|
||||||
|
|
|
@ -1271,6 +1271,28 @@ namespace WebsitePanel.Server
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Archiving
|
#region Archiving
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public ResultObject ExportMailBox(string organizationId, string accountName, string storagePath)
|
||||||
|
{
|
||||||
|
ResultObject res = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
LogStart("ExportMailBox");
|
||||||
|
|
||||||
|
res = ES.ExportMailBox(organizationId, accountName, storagePath);
|
||||||
|
|
||||||
|
LogEnd("ExportMailBox");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogError("ExportMailBox", ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
[WebMethod, SoapHeader("settings")]
|
[WebMethod, SoapHeader("settings")]
|
||||||
public ResultObject SetMailBoxArchiving(string organizationId, string accountName, bool archive, long archiveQuotaKB, long archiveWarningQuotaKB, string RetentionPolicy)
|
public ResultObject SetMailBoxArchiving(string organizationId, string accountName, bool archive, long archiveQuotaKB, long archiveWarningQuotaKB, string RetentionPolicy)
|
||||||
{
|
{
|
||||||
|
|
|
@ -99,6 +99,12 @@ namespace WebsitePanel.Server
|
||||||
return Organization.CreateUser(organizationId, loginName, displayName, upn, password, enabled);
|
return Organization.CreateUser(organizationId, loginName, displayName, upn, password, enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void DisableUser(string loginName, string organizationId)
|
||||||
|
{
|
||||||
|
Organization.DisableUser(loginName, organizationId);
|
||||||
|
}
|
||||||
|
|
||||||
[WebMethod, SoapHeader("settings")]
|
[WebMethod, SoapHeader("settings")]
|
||||||
public void DeleteUser(string loginName, string organizationId)
|
public void DeleteUser(string loginName, string organizationId)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,6 +15,11 @@
|
||||||
<Control key="user_memberof" general_key="users" />
|
<Control key="user_memberof" general_key="users" />
|
||||||
<!--<Control key="organization_user_setup" />-->
|
<!--<Control key="organization_user_setup" />-->
|
||||||
|
|
||||||
|
<Control key="deleted_users" />
|
||||||
|
<Control key="view_deleted_user" general_key="deleted_users" />
|
||||||
|
<Control key="deleted_user_memberof" general_key="deleted_users" />
|
||||||
|
|
||||||
|
|
||||||
<Control key="secur_groups" />
|
<Control key="secur_groups" />
|
||||||
<Control key="create_secur_group" general_key="secur_groups" />
|
<Control key="create_secur_group" general_key="secur_groups" />
|
||||||
<Control key="secur_group_settings" general_key="secur_groups" />
|
<Control key="secur_group_settings" general_key="secur_groups" />
|
||||||
|
|
|
@ -574,6 +574,10 @@
|
||||||
<Control key="rds_create_collection" src="WebsitePanel/RDS/RDSCreateCollection.ascx" title="RDSCreateCollection" type="View" />
|
<Control key="rds_create_collection" src="WebsitePanel/RDS/RDSCreateCollection.ascx" title="RDSCreateCollection" type="View" />
|
||||||
<Control key="rds_collection_edit_apps" src="WebsitePanel/RDS/RDSEditCollectionApps.ascx" title="RDSEditCollectionApps" type="View" />
|
<Control key="rds_collection_edit_apps" src="WebsitePanel/RDS/RDSEditCollectionApps.ascx" title="RDSEditCollectionApps" type="View" />
|
||||||
<Control key="rds_collection_edit_users" src="WebsitePanel/RDS/RDSEditCollectionUsers.ascx" title="RDSEditCollectionUsers" type="View" />
|
<Control key="rds_collection_edit_users" src="WebsitePanel/RDS/RDSEditCollectionUsers.ascx" title="RDSEditCollectionUsers" type="View" />
|
||||||
|
|
||||||
|
<Control key="deleted_users" src="WebsitePanel/ExchangeServer/OrganizationDeletedUsers.ascx" title="OrganizationDeletedUsers" type="View" />
|
||||||
|
<Control key="view_deleted_user" src="WebsitePanel/ExchangeServer/OrganizationDeletedUserGeneralSettings.ascx" title="OrganizationDeletedUserGeneralSettings" type="View" />
|
||||||
|
<Control key="deleted_user_memberof" src="WebsitePanel/ExchangeServer/OrganizationDeletedUserMemberOf.ascx" title="DeletedUserMemberOf" type="View" />
|
||||||
</Controls>
|
</Controls>
|
||||||
</ModuleDefinition>
|
</ModuleDefinition>
|
||||||
|
|
||||||
|
|
|
@ -3346,6 +3346,12 @@
|
||||||
<data name="Quota.HostedSolution.SecurityGroups" xml:space="preserve">
|
<data name="Quota.HostedSolution.SecurityGroups" xml:space="preserve">
|
||||||
<value>Security Groups per Organization</value>
|
<value>Security Groups per Organization</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Quota.HostedSolution.DeletedUsers" xml:space="preserve">
|
||||||
|
<value>Deleted Users per Organization</value>
|
||||||
|
</data>
|
||||||
|
<data name="Quota.HostedSolution.DeletedUsersBackupStorageSpace" xml:space="preserve">
|
||||||
|
<value>Deleted Users Backup Storage Space per Organization, Mb</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>
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 916 B |
|
@ -207,4 +207,7 @@
|
||||||
<data name="lblEnterpriseStorage.Text" xml:space="preserve">
|
<data name="lblEnterpriseStorage.Text" xml:space="preserve">
|
||||||
<value>Enterprise Storage, MB:</value>
|
<value>Enterprise Storage, MB:</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lblDeletedUsers.Text" xml:space="preserve">
|
||||||
|
<value>Deleted Users:</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -261,4 +261,7 @@
|
||||||
<data name="Text.RDSServers" xml:space="preserve">
|
<data name="Text.RDSServers" xml:space="preserve">
|
||||||
<value>RDS Servers</value>
|
<value>RDS Servers</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Text.DeletedUsers" xml:space="preserve">
|
||||||
|
<value>Deleted Users</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -95,6 +95,30 @@ namespace WebsitePanel.Portal
|
||||||
return users.PageUsers;
|
return users.PageUsers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OrganizationDeletedUsersPaged deletedUsers;
|
||||||
|
|
||||||
|
public int GetOrganizationDeletedUsersPagedCount(int itemId,
|
||||||
|
string filterColumn, string filterValue)
|
||||||
|
{
|
||||||
|
return deletedUsers.RecordsCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrganizationDeletedUser[] GetOrganizationDeletedUsersPaged(int itemId,
|
||||||
|
string filterColumn, string filterValue,
|
||||||
|
int maximumRows, int startRowIndex, string sortColumn)
|
||||||
|
{
|
||||||
|
if (!String.IsNullOrEmpty(filterValue))
|
||||||
|
filterValue = filterValue + "%";
|
||||||
|
if (maximumRows == 0)
|
||||||
|
{
|
||||||
|
maximumRows = Int32.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
deletedUsers = ES.Services.Organizations.GetOrganizationDeletedUsersPaged(itemId, filterColumn, filterValue, sortColumn, startRowIndex, maximumRows);
|
||||||
|
|
||||||
|
return deletedUsers.PageDeletedUsers;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Security Groups
|
#region Security Groups
|
||||||
|
|
|
@ -222,4 +222,7 @@
|
||||||
<data name="secMailboxPlanArchiving.Text" xml:space="preserve">
|
<data name="secMailboxPlanArchiving.Text" xml:space="preserve">
|
||||||
<value>Retention policy</value>
|
<value>Retention policy</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="chkEnableForceArchiveDeletion" xml:space="preserve">
|
||||||
|
<value>Force Archive on Mailbox Deletion</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -0,0 +1,231 @@
|
||||||
|
<?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="chkDisable.Text" xml:space="preserve">
|
||||||
|
<value>Disable User</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkLocked.Text" xml:space="preserve">
|
||||||
|
<value>Account is locked out</value>
|
||||||
|
</data>
|
||||||
|
<data name="locAddress.Text" xml:space="preserve">
|
||||||
|
<value>Address:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locBusinessPhone.Text" xml:space="preserve">
|
||||||
|
<value>Business Phone:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locCity.Text" xml:space="preserve">
|
||||||
|
<value>City:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locCompany.Text" xml:space="preserve">
|
||||||
|
<value>Company:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locCountry.Text" xml:space="preserve">
|
||||||
|
<value>Country/Region:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locDepartment.Text" xml:space="preserve">
|
||||||
|
<value>Department:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locDisplayName.Text" xml:space="preserve">
|
||||||
|
<value>Display Name: *</value>
|
||||||
|
</data>
|
||||||
|
<data name="locExternalEmailAddress.Text" xml:space="preserve">
|
||||||
|
<value>External e-mail:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locFax.Text" xml:space="preserve">
|
||||||
|
<value>Fax:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locFirstName.Text" xml:space="preserve">
|
||||||
|
<value>First Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locHomePhone.Text" xml:space="preserve">
|
||||||
|
<value>Home Phone:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locInitials.Text" xml:space="preserve">
|
||||||
|
<value>Initials:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locJobTitle.Text" xml:space="preserve">
|
||||||
|
<value>Job Title:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locLastName.Text" xml:space="preserve">
|
||||||
|
<value>Last Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locManager.Text" xml:space="preserve">
|
||||||
|
<value>Manager:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locMobilePhone.Text" xml:space="preserve">
|
||||||
|
<value>Mobile Phone:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locNotes.Text" xml:space="preserve">
|
||||||
|
<value>Notes:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locOffice.Text" xml:space="preserve">
|
||||||
|
<value>Office:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locPager.Text" xml:space="preserve">
|
||||||
|
<value>Pager:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locState.Text" xml:space="preserve">
|
||||||
|
<value>State/Province:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locSubscriberNumber.Text" xml:space="preserve">
|
||||||
|
<value>Account Number:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Deleted User</value>
|
||||||
|
</data>
|
||||||
|
<data name="locUserDomainName.Text" xml:space="preserve">
|
||||||
|
<value>User Domain Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locWebPage.Text" xml:space="preserve">
|
||||||
|
<value>Web Page:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locZip.Text" xml:space="preserve">
|
||||||
|
<value>Zip/Postal Code:</value>
|
||||||
|
</data>
|
||||||
|
<data name="secAddressInfo.Text" xml:space="preserve">
|
||||||
|
<value>Address</value>
|
||||||
|
</data>
|
||||||
|
<data name="secAdvanced.Text" xml:space="preserve">
|
||||||
|
<value>Advanced</value>
|
||||||
|
</data>
|
||||||
|
<data name="secCompanyInfo.Text" xml:space="preserve">
|
||||||
|
<value>Company Information</value>
|
||||||
|
</data>
|
||||||
|
<data name="secContactInfo.Text" xml:space="preserve">
|
||||||
|
<value>Contact Information</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Deleted User</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblUserPrincipalName" xml:space="preserve">
|
||||||
|
<value>Login Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkInherit.Text" xml:space="preserve">
|
||||||
|
<value>Update Services</value>
|
||||||
|
</data>
|
||||||
|
<data name="locServiceLevel.Text" xml:space="preserve">
|
||||||
|
<value>Service Level:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locVIPUser.Text" xml:space="preserve">
|
||||||
|
<value>VIP:</value>
|
||||||
|
</data>
|
||||||
|
<data name="secServiceLevels.Text" xml:space="preserve">
|
||||||
|
<value>Service Level Information</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,129 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Deleted User </value>
|
||||||
|
</data>
|
||||||
|
<data name="secGeneral.Text" xml:space="preserve">
|
||||||
|
<value>General</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Deleted User</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,180 @@
|
||||||
|
<?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="cmdDelete.OnClientClick" xml:space="preserve">
|
||||||
|
<value>if(!confirm('Are you sure you want to delete this user?')) return false; else ShowProgressDialog('Deleting user...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.Text" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.ToolTip" xml:space="preserve">
|
||||||
|
<value>Delete User</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdSearch.AlternateText" xml:space="preserve">
|
||||||
|
<value>Search</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlSearchColumnAccountName.Text" xml:space="preserve">
|
||||||
|
<value>Domain Account</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="ddlSearchColumnSubscriberNumber" xml:space="preserve">
|
||||||
|
<value>Account Number</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvSubscriberNumber.Header" xml:space="preserve">
|
||||||
|
<value>Subscriber</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvDeletedUsers.Empty" xml:space="preserve">
|
||||||
|
<value>No users have been deleted.</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvDeletedUsersDisplayName.Header" xml:space="preserve">
|
||||||
|
<value>Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvDeletedUsersEmail.Header" xml:space="preserve">
|
||||||
|
<value>Primary E-mail Address</value>
|
||||||
|
</data>
|
||||||
|
<data name="locQuota.Text" xml:space="preserve">
|
||||||
|
<value>Total Deleted Users in this Organization:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Deleted Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Deleted Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTenantAvailable.Text" xml:space="preserve">
|
||||||
|
<value>Available Deleted Users for this Tenant:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTenantQuota.Text" xml:space="preserve">
|
||||||
|
<value>Total Deleted Users for this Tenant:</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlSearchColumnUserPrincipalName.Text" xml:space="preserve">
|
||||||
|
<value>Login</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvDeletedUsersLogin.Header" xml:space="preserve">
|
||||||
|
<value>Login</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvServiceLevel.Header" xml:space="preserve">
|
||||||
|
<value>Service Level</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -222,4 +222,7 @@
|
||||||
<data name="locServiceLevels.Text" xml:space="preserve">
|
<data name="locServiceLevels.Text" xml:space="preserve">
|
||||||
<value>Service Levels</value>
|
<value>Service Levels</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lnkDeletedUsers.Text" xml:space="preserve">
|
||||||
|
<value>Deleted Users:</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -120,7 +120,7 @@
|
||||||
<data name="btnCreateUser.Text" xml:space="preserve">
|
<data name="btnCreateUser.Text" xml:space="preserve">
|
||||||
<value>Create New User</value>
|
<value>Create New User</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmdDelete.OnClientClick" xml:space="preserve">
|
<data name="cmdDelete1.OnClientClick" xml:space="preserve">
|
||||||
<value>if(!confirm('Are you sure you want to delete this user?')) return false; else ShowProgressDialog('Deleting user...');</value>
|
<value>if(!confirm('Are you sure you want to delete this user?')) return false; else ShowProgressDialog('Deleting user...');</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmdDelete.Text" xml:space="preserve">
|
<data name="cmdDelete.Text" xml:space="preserve">
|
||||||
|
@ -183,4 +183,22 @@
|
||||||
<data name="gvServiceLevel.Header" xml:space="preserve">
|
<data name="gvServiceLevel.Header" xml:space="preserve">
|
||||||
<value>Service Level</value>
|
<value>Service Level</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnCancel.Text" xml:space="preserve">
|
||||||
|
<value>Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnDelete.OnClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Deleting user...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnDelete.Text" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnableForceArchiveMailbox.Text" xml:space="preserve">
|
||||||
|
<value>Archive Mailboxes</value>
|
||||||
|
</data>
|
||||||
|
<data name="headerDeleteUser.Text" xml:space="preserve">
|
||||||
|
<value>Delete User</value>
|
||||||
|
</data>
|
||||||
|
<data name="litDeleteUser.text" xml:space="preserve">
|
||||||
|
<value>Are you sure you want to delete this user?</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -248,7 +248,11 @@
|
||||||
<wsp:SizeBox id="archiveWarningQuota" runat="server" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="true" RequireValidatorEnabled="true"/>
|
<wsp:SizeBox id="archiveWarningQuota" runat="server" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="true" RequireValidatorEnabled="true"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel200" colspan="2">
|
||||||
|
<asp:CheckBox ID="chkEnableForceArchiveDeletion" runat="server" meta:resourcekey="chkEnableForceArchiveDeletion" Text="Force Archive on Mailbox Deletion"></asp:CheckBox>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br />
|
<br />
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
|
|
|
@ -123,7 +123,7 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
chkEnableArchiving.Checked = plan.EnableArchiving;
|
chkEnableArchiving.Checked = plan.EnableArchiving;
|
||||||
archiveQuota.QuotaValue = plan.ArchiveSizeMB;
|
archiveQuota.QuotaValue = plan.ArchiveSizeMB;
|
||||||
archiveWarningQuota.ValueKB = plan.ArchiveWarningPct;
|
archiveWarningQuota.ValueKB = plan.ArchiveWarningPct;
|
||||||
|
chkEnableForceArchiveDeletion.Checked = plan.EnableForceArchiveDeletion;
|
||||||
}
|
}
|
||||||
|
|
||||||
locTitle.Text = plan.MailboxPlan;
|
locTitle.Text = plan.MailboxPlan;
|
||||||
|
@ -315,11 +315,13 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
plan.LitigationHoldUrl = txtLitigationHoldUrl.Text.Trim();
|
plan.LitigationHoldUrl = txtLitigationHoldUrl.Text.Trim();
|
||||||
|
|
||||||
plan.EnableArchiving = chkEnableArchiving.Checked;
|
plan.EnableArchiving = chkEnableArchiving.Checked;
|
||||||
|
|
||||||
plan.ArchiveSizeMB = archiveQuota.QuotaValue;
|
plan.ArchiveSizeMB = archiveQuota.QuotaValue;
|
||||||
plan.ArchiveWarningPct = archiveWarningQuota.ValueKB;
|
plan.ArchiveWarningPct = archiveWarningQuota.ValueKB;
|
||||||
if ((plan.ArchiveWarningPct == 0)) plan.ArchiveWarningPct = 100;
|
if ((plan.ArchiveWarningPct == 0))
|
||||||
|
{
|
||||||
|
plan.ArchiveWarningPct = 100;
|
||||||
|
}
|
||||||
|
plan.EnableForceArchiveDeletion = chkEnableForceArchiveDeletion.Checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
int planId = ES.Services.ExchangeServer.AddExchangeMailboxPlan(PanelRequest.ItemID,
|
int planId = ES.Services.ExchangeServer.AddExchangeMailboxPlan(PanelRequest.ItemID,
|
||||||
|
|
|
@ -534,6 +534,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox archiveWarningQuota;
|
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox archiveWarningQuota;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkEnableForceArchiveDeletion 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 chkEnableForceArchiveDeletion;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// secRetentionPolicyTags control.
|
/// secRetentionPolicyTags control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -0,0 +1,317 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationDeletedUserGeneralSettings.ascx.cs" Inherits="WebsitePanel.Portal.HostedSolution.DeletedUserGeneralSettings" %>
|
||||||
|
<%@ Register Src="UserControls/UserSelector.ascx" TagName="UserSelector" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/CountrySelector.ascx" TagName="CountrySelector" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<%@ Register Src="../UserControls/PasswordControl.ascx" TagName="PasswordControl" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/EmailAddress.ascx" TagName="EmailAddress" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<%@ Register src="UserControls/DeletedUserTabs.ascx" tagname="UserTabs" tagprefix="uc1" %>
|
||||||
|
<%@ Register src="UserControls/MailboxTabs.ascx" tagname="MailboxTabs" tagprefix="uc1" %>
|
||||||
|
|
||||||
|
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Left">
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="Image1" SkinID="OrganizationUser48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Deleted User"></asp:Localize>
|
||||||
|
-
|
||||||
|
<asp:Literal ID="litDisplayName" runat="server" Text="John Smith" />
|
||||||
|
<asp:Image ID="imgVipUser" SkinID="VipUser16" runat="server" tooltip="VIP user" Visible="false"/>
|
||||||
|
<asp:Label ID="litServiceLevel" runat="server" style="float:right;padding-right:8px;" Visible="false"></asp:Label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormBody">
|
||||||
|
<uc1:UserTabs ID="UserTabsId" runat="server" SelectedTab="view_deleted_user" />
|
||||||
|
<uc1:MailboxTabs ID="MailboxTabsId" runat="server" SelectedTab="view_deleted_user" />
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locUserPrincipalName" runat="server" meta:resourcekey="locUserPrincipalName" Text="Login Name:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label runat="server" ID="lblUserPrincipalName" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:CheckBox ID="chkInherit" runat="server" meta:resourcekey="chkInherit" Text="Services inherit Login Name" checked="true" Enabled="false" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locDisplayName" runat="server" meta:resourcekey="locDisplayName" Text="Display Name: *" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblDisplayName" runat="server"></asp:Label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<br />
|
||||||
|
<asp:CheckBox ID="chkDisable" runat="server" meta:resourcekey="chkDisable" Text="Disable User" Enabled="false"/>
|
||||||
|
<br />
|
||||||
|
<asp:CheckBox ID="chkLocked" runat="server" meta:resourcekey="chkLocked" Text="Lock User" Enabled="false"/>
|
||||||
|
<br />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locFirstName" runat="server" meta:resourcekey="locFirstName" Text="First Name:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:label ID="lblFirstName" runat="server"></asp:label>
|
||||||
|
|
||||||
|
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Initials:" />
|
||||||
|
<asp:Label ID="lblInitials" runat="server"></asp:Label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locLastName" runat="server" meta:resourcekey="locLastName" Text="Last Name:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblLastName" runat="server"></asp:Label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150" valign="top">
|
||||||
|
<asp:Localize ID="locSubscriberNumber" runat="server" meta:resourcekey="locSubscriberNumber" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label runat="server" ID="lblSubscriberNumber" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150" valign="top">
|
||||||
|
<asp:Localize ID="locExternalEmailAddress" runat="server" meta:resourcekey="locExternalEmailAddress" />
|
||||||
|
</td>
|
||||||
|
<td><asp:Label runat="server" ID="lblExternalEmailAddress" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locNotes" runat="server" meta:resourcekey="locNotes" Text="Notes:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblNotes" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<wsp:CollapsiblePanel id="secServiceLevels" runat="server" IsCollapsed="true"
|
||||||
|
TargetControlID="ServiceLevels" meta:resourcekey="secServiceLevels" Text="Service Level Information">
|
||||||
|
</wsp:CollapsiblePanel>
|
||||||
|
|
||||||
|
<asp:Panel ID="ServiceLevels" runat="server" Height="0" style="overflow:hidden;">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locServiceLevel" runat="server" meta:resourcekey="locServiceLevel" Text="Service Level:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblServiceLevel" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locVIPUser" runat="server" meta:resourcekey="locVIPUser" Text="VIP:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:CheckBox ID="chkVIP" runat="server" Enabled="false" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<wsp:CollapsiblePanel id="secCompanyInfo" runat="server" IsCollapsed="true"
|
||||||
|
TargetControlID="CompanyInfo" meta:resourcekey="secCompanyInfo" Text="Company Information">
|
||||||
|
</wsp:CollapsiblePanel>
|
||||||
|
|
||||||
|
<asp:Panel ID="CompanyInfo" runat="server" Height="0" style="overflow:hidden;">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locJobTitle" runat="server" meta:resourcekey="locJobTitle" Text="Job Title:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblJobTitle" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locCompany" runat="server" meta:resourcekey="locCompany" Text="Company:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblCompany" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locDepartment" runat="server" meta:resourcekey="locDepartment" Text="Department:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblDepartment" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locOffice" runat="server" meta:resourcekey="locOffice" Text="Office:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblOffice" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locManager" runat="server" meta:resourcekey="locManager" Text="Manager:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblManager" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<wsp:CollapsiblePanel id="secContactInfo" runat="server" IsCollapsed="true"
|
||||||
|
TargetControlID="ContactInfo" meta:resourcekey="secContactInfo" Text="Contact Information">
|
||||||
|
</wsp:CollapsiblePanel>
|
||||||
|
|
||||||
|
<asp:Panel ID="ContactInfo" runat="server" Height="0" style="overflow:hidden;">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locBusinessPhone" runat="server" meta:resourcekey="locBusinessPhone" Text="Business Phone:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblBusinessPhone" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locFax" runat="server" meta:resourcekey="locFax" Text="Fax:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblFax" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locHomePhone" runat="server" meta:resourcekey="locHomePhone" Text="Home Phone:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblHomePhone" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locMobilePhone" runat="server" meta:resourcekey="locMobilePhone" Text="Mobile Phone:" />
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblMobilePhone" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locPager" runat="server" meta:resourcekey="locPager" Text="Pager:" />
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblPager" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locWebPage" runat="server" meta:resourcekey="locWebPage" Text="Web Page:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblWebPage" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<wsp:CollapsiblePanel id="secAddressInfo" runat="server" IsCollapsed="true"
|
||||||
|
TargetControlID="AddressInfo" meta:resourcekey="secAddressInfo" Text="Address">
|
||||||
|
</wsp:CollapsiblePanel>
|
||||||
|
|
||||||
|
<asp:Panel ID="AddressInfo" runat="server" Height="0" style="overflow:hidden;">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locAddress" runat="server" meta:resourcekey="locAddress" Text="Street Address:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblAddress" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locCity" runat="server" meta:resourcekey="locCity" Text="City:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblCity" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locState" runat="server" meta:resourcekey="locState" Text="State/Province:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblState" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locZip" runat="server" meta:resourcekey="locZip" Text="Zip/Postal Code:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label ID="lblZip" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locCountry" runat="server" meta:resourcekey="locCountry" Text="Country/Region:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label id="lblCountry" runat="server" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<wsp:CollapsiblePanel id="secAdvanced" runat="server" IsCollapsed="true"
|
||||||
|
TargetControlID="AdvancedInfo" meta:resourcekey="secAdvanced" Text="Advanced">
|
||||||
|
</wsp:CollapsiblePanel>
|
||||||
|
|
||||||
|
<asp:Panel ID="AdvancedInfo" runat="server" Height="0" style="overflow:hidden;">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locUserDomainName" runat="server" meta:resourcekey="locUserDomainName" Text="User Domain Name:" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:Label runat="server" ID="lblUserDomainName" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,199 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.ResultObjects;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.HostedSolution
|
||||||
|
{
|
||||||
|
public partial class DeletedUserGeneralSettings : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
BindServiceLevels();
|
||||||
|
|
||||||
|
BindSettings();
|
||||||
|
|
||||||
|
MailboxTabsId.Visible = (PanelRequest.Context == "Mailbox");
|
||||||
|
UserTabsId.Visible = (PanelRequest.Context == "User");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindSettings()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// get settings
|
||||||
|
OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID,
|
||||||
|
PanelRequest.AccountID);
|
||||||
|
|
||||||
|
litDisplayName.Text = PortalAntiXSS.Encode(user.DisplayName);
|
||||||
|
|
||||||
|
lblUserDomainName.Text = user.DomainUserName;
|
||||||
|
|
||||||
|
// bind form
|
||||||
|
lblDisplayName.Text = user.DisplayName;
|
||||||
|
|
||||||
|
chkDisable.Checked = user.Disabled;
|
||||||
|
|
||||||
|
lblFirstName.Text = user.FirstName;
|
||||||
|
lblInitials.Text = user.Initials;
|
||||||
|
lblLastName.Text = user.LastName;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
lblJobTitle.Text = user.JobTitle;
|
||||||
|
lblCompany.Text = user.Company;
|
||||||
|
lblDepartment.Text = user.Department;
|
||||||
|
lblOffice.Text = user.Office;
|
||||||
|
|
||||||
|
if (user.Manager != null)
|
||||||
|
{
|
||||||
|
lblManager.Text = user.Manager.DisplayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
lblBusinessPhone.Text = user.BusinessPhone;
|
||||||
|
lblFax.Text = user.Fax;
|
||||||
|
lblHomePhone.Text = user.HomePhone;
|
||||||
|
lblMobilePhone.Text = user.MobilePhone;
|
||||||
|
lblPager.Text = user.Pager;
|
||||||
|
lblWebPage.Text = user.WebPage;
|
||||||
|
|
||||||
|
lblAddress.Text = user.Address;
|
||||||
|
lblCity.Text = user.City;
|
||||||
|
lblState.Text = user.State;
|
||||||
|
lblZip.Text = user.Zip;
|
||||||
|
lblCountry.Text = user.Country;
|
||||||
|
|
||||||
|
lblNotes.Text = user.Notes;
|
||||||
|
lblExternalEmailAddress.Text = user.ExternalEmail;
|
||||||
|
|
||||||
|
lblExternalEmailAddress.Enabled = user.AccountType == ExchangeAccountType.User;
|
||||||
|
lblUserDomainName.Text = user.DomainUserName;
|
||||||
|
|
||||||
|
lblSubscriberNumber.Text = user.SubscriberNumber;
|
||||||
|
lblUserPrincipalName.Text = user.UserPrincipalName;
|
||||||
|
|
||||||
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER))
|
||||||
|
{
|
||||||
|
if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1)
|
||||||
|
{
|
||||||
|
locSubscriberNumber.Visible = false;
|
||||||
|
lblSubscriberNumber.Visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user.LevelId > 0 && secServiceLevels.Visible)
|
||||||
|
{
|
||||||
|
secServiceLevels.IsCollapsed = false;
|
||||||
|
|
||||||
|
ServiceLevel serviceLevel = ES.Services.Organizations.GetSupportServiceLevel(user.LevelId);
|
||||||
|
|
||||||
|
litServiceLevel.Visible = true;
|
||||||
|
litServiceLevel.Text = serviceLevel.LevelName;
|
||||||
|
litServiceLevel.ToolTip = serviceLevel.LevelDescription;
|
||||||
|
|
||||||
|
lblServiceLevel.Text = serviceLevel.LevelName;
|
||||||
|
}
|
||||||
|
|
||||||
|
chkVIP.Checked = user.IsVIP && secServiceLevels.Visible;
|
||||||
|
imgVipUser.Visible = user.IsVIP && secServiceLevels.Visible;
|
||||||
|
|
||||||
|
if (cntx.Quotas.ContainsKey(Quotas.ORGANIZATION_ALLOWCHANGEUPN))
|
||||||
|
{
|
||||||
|
if (cntx.Quotas[Quotas.ORGANIZATION_ALLOWCHANGEUPN].QuotaAllocatedValue != 1)
|
||||||
|
{
|
||||||
|
chkInherit.Visible = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chkInherit.Visible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user.Locked)
|
||||||
|
chkLocked.Enabled = true;
|
||||||
|
else
|
||||||
|
chkLocked.Enabled = false;
|
||||||
|
|
||||||
|
chkLocked.Checked = user.Locked;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANIZATION_GET_USER_SETTINGS", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindServiceLevels()
|
||||||
|
{
|
||||||
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
|
||||||
|
if (cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels))
|
||||||
|
{
|
||||||
|
List<ServiceLevel> enabledServiceLevels = new List<ServiceLevel>();
|
||||||
|
|
||||||
|
foreach (var quota in cntx.Quotas.Where(x => x.Key.Contains(Quotas.SERVICE_LEVELS)))
|
||||||
|
{
|
||||||
|
foreach (var serviceLevel in ES.Services.Organizations.GetSupportServiceLevels())
|
||||||
|
{
|
||||||
|
if (quota.Key.Replace(Quotas.SERVICE_LEVELS, "") == serviceLevel.LevelName && CheckServiceLevelQuota(quota.Value))
|
||||||
|
{
|
||||||
|
enabledServiceLevels.Add(serviceLevel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
secServiceLevels.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
secServiceLevels.Visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckServiceLevelQuota(QuotaValueInfo quota)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (quota.QuotaAllocatedValue != -1)
|
||||||
|
{
|
||||||
|
return quota.QuotaAllocatedValue > quota.QuotaUsedValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,699 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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.HostedSolution {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class DeletedUserGeneralSettings {
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// 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>
|
||||||
|
/// imgVipUser 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 imgVipUser;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// litServiceLevel control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label litServiceLevel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// UserTabsId 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.DeletedUserTabs UserTabsId;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// MailboxTabsId 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.MailboxTabs MailboxTabsId;
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// locUserPrincipalName 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 locUserPrincipalName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblUserPrincipalName control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblUserPrincipalName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkInherit 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 chkInherit;
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// lblDisplayName control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblDisplayName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkDisable 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 chkDisable;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkLocked 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 chkLocked;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locFirstName 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 locFirstName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblFirstName control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblFirstName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locInitials 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 locInitials;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblInitials control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblInitials;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locLastName 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 locLastName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblLastName control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblLastName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locSubscriberNumber 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 locSubscriberNumber;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblSubscriberNumber control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblSubscriberNumber;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locExternalEmailAddress 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 locExternalEmailAddress;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblExternalEmailAddress control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblExternalEmailAddress;
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// lblNotes control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblNotes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// secServiceLevels control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.CollapsiblePanel secServiceLevels;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ServiceLevels 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 ServiceLevels;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locServiceLevel 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 locServiceLevel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblServiceLevel control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblServiceLevel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locVIPUser 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 locVIPUser;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkVIP 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 chkVIP;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// secCompanyInfo control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.CollapsiblePanel secCompanyInfo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CompanyInfo 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 CompanyInfo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locJobTitle 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 locJobTitle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblJobTitle control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblJobTitle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locCompany 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 locCompany;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblCompany control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblCompany;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locDepartment 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 locDepartment;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblDepartment control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblDepartment;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locOffice 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 locOffice;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblOffice control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblOffice;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locManager 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 locManager;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblManager control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblManager;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// secContactInfo control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.CollapsiblePanel secContactInfo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ContactInfo 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 ContactInfo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locBusinessPhone 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 locBusinessPhone;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblBusinessPhone control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblBusinessPhone;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locFax 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 locFax;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblFax control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblFax;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locHomePhone 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 locHomePhone;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblHomePhone control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblHomePhone;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locMobilePhone 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 locMobilePhone;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblMobilePhone control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblMobilePhone;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locPager 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 locPager;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblPager control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblPager;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locWebPage 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 locWebPage;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblWebPage control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblWebPage;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// secAddressInfo control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.CollapsiblePanel secAddressInfo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddressInfo 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 AddressInfo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locAddress 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 locAddress;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblAddress control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblAddress;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locCity 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 locCity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblCity control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblCity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locState 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 locState;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblState control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblState;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locZip 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 locZip;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblZip control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblZip;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locCountry 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 locCountry;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblCountry control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblCountry;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// secAdvanced control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.CollapsiblePanel secAdvanced;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AdvancedInfo 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 AdvancedInfo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locUserDomainName 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 locUserDomainName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblUserDomainName control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblUserDomainName;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationDeletedUserMemberOf.ascx.cs" Inherits="WebsitePanel.Portal.HostedSolution.DeletedUserMemberOf" %>
|
||||||
|
<%@ Register Src="UserControls/UserSelector.ascx" TagName="UserSelector" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/CountrySelector.ascx" TagName="CountrySelector" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<%@ Register Src="../UserControls/PasswordControl.ascx" TagName="PasswordControl" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/EmailAddress.ascx" TagName="EmailAddress" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/AccountsList.ascx" TagName="AccountsList" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/GroupsList.ascx" TagName="GroupsList" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<%@ Register src="UserControls/DeletedUserTabs.ascx" tagname="UserTabs" tagprefix="uc1" %>
|
||||||
|
<%@ Register src="UserControls/MailboxTabs.ascx" tagname="MailboxTabs" tagprefix="uc1" %>
|
||||||
|
|
||||||
|
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Left">
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="Image1" SkinID="OrganizationUser48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit User"></asp:Localize>
|
||||||
|
-
|
||||||
|
<asp:Literal ID="litDisplayName" runat="server" Text="John Smith" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormBody">
|
||||||
|
<uc1:UserTabs ID="UserTabsId" runat="server" SelectedTab="deleted_user_memberof" />
|
||||||
|
<uc1:MailboxTabs ID="MailboxTabsId" runat="server" SelectedTab="deleted_user_memberof" />
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<wsp:CollapsiblePanel id="secGroups" runat="server" TargetControlID="GroupsPanel" meta:resourcekey="secGroups" Text="Groups"></wsp:CollapsiblePanel>
|
||||||
|
<asp:Panel ID="GroupsPanel" runat="server" Height="0" style="overflow:hidden;">
|
||||||
|
<asp:UpdatePanel ID="GeneralUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
|
||||||
|
<wsp:AccountsList id="groups" runat="server"
|
||||||
|
Disabled="true"
|
||||||
|
MailboxesEnabled="false"
|
||||||
|
EnableMailboxOnly="true"
|
||||||
|
ContactsEnabled="false"
|
||||||
|
DistributionListsEnabled="true"
|
||||||
|
SecurityGroupsEnabled="true" />
|
||||||
|
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,132 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.ResultObjects;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.HostedSolution
|
||||||
|
{
|
||||||
|
public partial class DeletedUserMemberOf : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
protected PackageContext cntx;
|
||||||
|
|
||||||
|
protected PackageContext Cntx
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (cntx == null)
|
||||||
|
{
|
||||||
|
cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cntx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected bool EnableDistributionLists
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Cntx.Groups.ContainsKey(ResourceGroups.Exchange) & Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, Cntx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected bool EnableSecurityGroups
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, Cntx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
groups.DistributionListsEnabled = EnableDistributionLists;
|
||||||
|
groups.SecurityGroupsEnabled = EnableSecurityGroups;
|
||||||
|
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
BindSettings();
|
||||||
|
|
||||||
|
MailboxTabsId.Visible = (PanelRequest.Context == "Mailbox");
|
||||||
|
|
||||||
|
UserTabsId.Visible = (PanelRequest.Context == "User");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindSettings()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// get settings
|
||||||
|
OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID);
|
||||||
|
|
||||||
|
groups.DistributionListsEnabled = EnableDistributionLists && (user.AccountType == ExchangeAccountType.Mailbox
|
||||||
|
|| user.AccountType == ExchangeAccountType.Room
|
||||||
|
|| user.AccountType == ExchangeAccountType.Equipment);
|
||||||
|
|
||||||
|
litDisplayName.Text = user.DisplayName;
|
||||||
|
|
||||||
|
List<ExchangeAccount> groupsList = new List<ExchangeAccount>();
|
||||||
|
|
||||||
|
if (EnableDistributionLists)
|
||||||
|
{
|
||||||
|
//Distribution Lists
|
||||||
|
ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
|
||||||
|
|
||||||
|
foreach (ExchangeAccount distList in dLists)
|
||||||
|
{
|
||||||
|
groupsList.Add(distList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EnableSecurityGroups)
|
||||||
|
{
|
||||||
|
//Security Groups
|
||||||
|
ExchangeAccount[] securGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
|
||||||
|
|
||||||
|
foreach (ExchangeAccount secGroup in securGroups)
|
||||||
|
{
|
||||||
|
groupsList.Add(secGroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
groups.SetAccounts(groupsList.ToArray());
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANIZATION_GET_USER_SETTINGS", 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.HostedSolution {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class DeletedUserMemberOf {
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// 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>
|
||||||
|
/// UserTabsId 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.DeletedUserTabs UserTabsId;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// MailboxTabsId 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.MailboxTabs MailboxTabsId;
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// secGroups control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.CollapsiblePanel secGroups;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// GroupsPanel 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 GroupsPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// GeneralUpdatePanel 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 GeneralUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// groups 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.AccountsList groups;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,119 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationDeletedUsers.ascx.cs" Inherits="WebsitePanel.Portal.HostedSolution.OrganizationDeletedUsers" %>
|
||||||
|
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" 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="Left">
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="Image1" SkinID="OrganizationUser48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Users"></asp:Localize>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormBody">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<div class="FormButtonsBarCleanRight">
|
||||||
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<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:ListItem Value="PrimaryEmailAddress" meta:resourcekey="ddlSearchColumnEmail">Email</asp:ListItem>
|
||||||
|
<asp:ListItem Value="AccountName" meta:resourcekey="ddlSearchColumnAccountName">AccountName</asp:ListItem>
|
||||||
|
<asp:ListItem Value="SubscriberNumber" meta:resourcekey="ddlSearchColumnSubscriberNumber">Account Number</asp:ListItem>
|
||||||
|
<asp:ListItem Value="UserPrincipalName" meta:resourcekey="ddlSearchColumnUserPrincipalName">Login</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="gvDeletedUsers" runat="server" AutoGenerateColumns="False" EnableViewState="true"
|
||||||
|
Width="100%" EmptyDataText="gvDeletedUsers" CssSelectorClass="NormalGridView"
|
||||||
|
OnRowCommand="gvDeletedUsers_RowCommand" AllowPaging="True" AllowSorting="True"
|
||||||
|
DataSourceID="odsAccountsPaged" PageSize="20">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField HeaderText="gvDeletedUsersDisplayName" SortExpression="DisplayName">
|
||||||
|
<ItemStyle Width="25%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Image ID="img1" runat="server" ImageUrl='<%# GetAccountImage((int)Eval("OriginAT"),(bool)Eval("User.IsVIP")) %>' ImageAlign="AbsMiddle"/>
|
||||||
|
<asp:hyperlink id="lnk1" runat="server"
|
||||||
|
NavigateUrl='<%# GetUserEditUrl(Eval("AccountId").ToString()) %>'>
|
||||||
|
<%# Eval("User.DisplayName") %>
|
||||||
|
</asp:hyperlink>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:BoundField HeaderText="gvDeletedUsersLogin" DataField="User.UserPrincipalName" SortExpression="UserPrincipalName" ItemStyle-Width="25%" />
|
||||||
|
<asp:TemplateField HeaderText="gvServiceLevel">
|
||||||
|
<ItemStyle Width="25%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Label id="lbServLevel" runat="server" ToolTip = '<%# GetServiceLevel((int)Eval("User.LevelId")).LevelDescription%>'>
|
||||||
|
<%# GetServiceLevel((int)Eval("User.LevelId")).LevelName%>
|
||||||
|
</asp:Label>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:BoundField HeaderText="gvDeletedUsersEmail" DataField="User.PrimaryEmailAddress" SortExpression="PrimaryEmailAddress" ItemStyle-Width="25%" />
|
||||||
|
<asp:BoundField HeaderText="gvSubscriberNumber" DataField="User.SubscriberNumber" ItemStyle-Width="20%" />
|
||||||
|
<asp:TemplateField ItemStyle-Wrap="False">
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:ImageButton ID="Image2" runat="server" Width="16px" Height="16px" ToolTip="Mail" ImageUrl='<%# GetMailImage((int)Eval("OriginAT")) %>' CommandName="OpenMailProperties" CommandArgument='<%# Eval("AccountId") %>' Enabled=<%# EnableMailImageButton((int)Eval("OriginAT")) %>/>
|
||||||
|
<asp:ImageButton ID="Image3" runat="server" Width="16px" Height="16px" ToolTip="UC" ImageUrl='<%# GetOCSImage((bool)Eval("User.IsOCSUser"),(bool)Eval("User.IsLyncUser")) %>' CommandName="OpenUCProperties" CommandArgument='<%# GetOCSArgument((int)Eval("AccountId"),(bool)Eval("User.IsOCSUser"),(bool)Eval("User.IsLyncUser")) %>' Enabled=<%# EnableOCSImageButton((bool)Eval("User.IsOCSUser"),(bool)Eval("User.IsLyncUser")) %>/>
|
||||||
|
<asp:ImageButton ID="Image4" runat="server" Width="16px" Height="16px" ToolTip="BlackBerry" ImageUrl='<%# GetBlackBerryImage((bool)Eval("User.IsBlackBerryUser")) %>' CommandName="OpenBlackBerryProperties" CommandArgument='<%# Eval("AccountId") %>' Enabled=<%# EnableBlackBerryImageButton((bool)Eval("User.IsBlackBerryUser")) %>/>
|
||||||
|
<asp:Image ID="Image5" runat="server" Width="16px" Height="16px" ToolTip="CRM" ImageUrl='<%# GetCRMImage((Guid)Eval("User.CrmUserId")) %>' />
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:HyperLink ID="lnkDownload" runat="server" Visible='<%# !(bool)Eval("IsArchiveEmpty") %>'
|
||||||
|
NavigateUrl='<%# (bool)Eval("IsArchiveEmpty") ? "#" : GetDownloadLink((string)Eval("StoragePath"),(string)Eval("FolderName"),(string)Eval("FileName")) %>'>
|
||||||
|
<%# Eval("FileName") %>
|
||||||
|
</asp:HyperLink>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:ImageButton ID="cmdDelete" runat="server" Text="Delete" SkinID="ExchangeDelete"
|
||||||
|
CommandName="DeleteItem" CommandArgument='<%# Eval("AccountId") %>'
|
||||||
|
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Remove this item?');"></asp:ImageButton>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
<asp:ObjectDataSource ID="odsAccountsPaged" runat="server" EnablePaging="True"
|
||||||
|
SelectCountMethod="GetOrganizationDeletedUsersPagedCount"
|
||||||
|
SelectMethod="GetOrganizationDeletedUsersPaged"
|
||||||
|
SortParameterName="sortColumn"
|
||||||
|
TypeName="WebsitePanel.Portal.OrganizationsHelper"
|
||||||
|
OnSelected="odsAccountsPaged_Selected">
|
||||||
|
<SelectParameters>
|
||||||
|
<asp:QueryStringParameter Name="itemId" QueryStringField="ItemID" DefaultValue="0" />
|
||||||
|
<asp:ControlParameter Name="filterColumn" ControlID="ddlSearchColumn" PropertyName="SelectedValue" />
|
||||||
|
<asp:ControlParameter Name="filterValue" ControlID="txtSearchValue" PropertyName="Text" />
|
||||||
|
</SelectParameters>
|
||||||
|
</asp:ObjectDataSource>
|
||||||
|
<br />
|
||||||
|
<div>
|
||||||
|
<asp:Localize ID="locQuota" runat="server" meta:resourcekey="locQuota" Text="Total Users Created:"></asp:Localize>
|
||||||
|
|
||||||
|
<wsp:QuotaViewer ID="deletedUsersQuota" runat="server" QuotaTypeId="2" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,345 @@
|
||||||
|
// Copyright (c) 2014, 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 SMB SAAS Systems Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.HostedSolution
|
||||||
|
{
|
||||||
|
public partial class OrganizationDeletedUsers : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
private ServiceLevel[] ServiceLevels;
|
||||||
|
private PackageContext cntx;
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string downloadFile = Request["DownloadFile"];
|
||||||
|
if (downloadFile != null)
|
||||||
|
{
|
||||||
|
// download file
|
||||||
|
Response.Clear();
|
||||||
|
Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(downloadFile));
|
||||||
|
Response.ContentType = "application/octet-stream";
|
||||||
|
|
||||||
|
int FILE_BUFFER_LENGTH = 5000000;
|
||||||
|
byte[] buffer = null;
|
||||||
|
int offset = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// read remote content
|
||||||
|
buffer = ES.Services.Organizations.GetArchiveFileBinaryChunk(PanelSecurity.PackageId, downloadFile, offset, FILE_BUFFER_LENGTH);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ARCHIVE_FILE_READ_FILE", ex);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// write to stream
|
||||||
|
Response.BinaryWrite(buffer);
|
||||||
|
|
||||||
|
offset += FILE_BUFFER_LENGTH;
|
||||||
|
}
|
||||||
|
while (buffer.Length == FILE_BUFFER_LENGTH);
|
||||||
|
Response.End();
|
||||||
|
}
|
||||||
|
|
||||||
|
cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
BindStats();
|
||||||
|
}
|
||||||
|
|
||||||
|
BindServiceLevels();
|
||||||
|
|
||||||
|
gvDeletedUsers.Columns[3].Visible = cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindServiceLevels()
|
||||||
|
{
|
||||||
|
ServiceLevels = ES.Services.Organizations.GetSupportServiceLevels();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindStats()
|
||||||
|
{
|
||||||
|
// quota values
|
||||||
|
OrganizationStatistics stats = ES.Services.Organizations.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID);
|
||||||
|
OrganizationStatistics tenantStats = ES.Services.Organizations.GetOrganizationStatistics(PanelRequest.ItemID);
|
||||||
|
deletedUsersQuota.QuotaUsedValue = stats.DeletedUsers;
|
||||||
|
deletedUsersQuota.QuotaValue = stats.AllocatedDeletedUsers;
|
||||||
|
if (stats.AllocatedUsers != -1) deletedUsersQuota.QuotaAvailable = tenantStats.AllocatedDeletedUsers - tenantStats.DeletedUsers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetUserEditUrl(string accountId)
|
||||||
|
{
|
||||||
|
return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "view_deleted_user",
|
||||||
|
"AccountID=" + accountId,
|
||||||
|
"ItemID=" + PanelRequest.ItemID,
|
||||||
|
"Context=User");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void odsAccountsPaged_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Exception != null)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANZATION_GET_USERS", e.Exception);
|
||||||
|
e.ExceptionHandled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void gvDeletedUsers_RowCommand(object sender, GridViewCommandEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.CommandName == "DeleteItem")
|
||||||
|
{
|
||||||
|
// delete user
|
||||||
|
int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int result = ES.Services.Organizations.DeleteUser(PanelRequest.ItemID, accountId);
|
||||||
|
if (result < 0)
|
||||||
|
{
|
||||||
|
messageBox.ShowResultMessage(result);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// rebind grid
|
||||||
|
gvDeletedUsers.DataBind();
|
||||||
|
|
||||||
|
// bind stats
|
||||||
|
BindStats();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANIZATIONS_DELETE_USERS", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.CommandName == "OpenMailProperties")
|
||||||
|
{
|
||||||
|
int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||||
|
|
||||||
|
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "mailbox_settings",
|
||||||
|
"AccountID=" + accountId,
|
||||||
|
"ItemID=" + PanelRequest.ItemID));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.CommandName == "OpenBlackBerryProperties")
|
||||||
|
{
|
||||||
|
int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||||
|
|
||||||
|
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_blackberry_user",
|
||||||
|
"AccountID=" + accountId,
|
||||||
|
"ItemID=" + PanelRequest.ItemID));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.CommandName == "OpenCRMProperties")
|
||||||
|
{
|
||||||
|
int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||||
|
|
||||||
|
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "mailbox_settings",
|
||||||
|
"AccountID=" + accountId,
|
||||||
|
"ItemID=" + PanelRequest.ItemID));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.CommandName == "OpenUCProperties")
|
||||||
|
{
|
||||||
|
string[] Tmp = e.CommandArgument.ToString().Split('|');
|
||||||
|
|
||||||
|
int accountId = Utils.ParseInt(Tmp[0], 0);
|
||||||
|
if (Tmp[1] == "True")
|
||||||
|
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_ocs_user",
|
||||||
|
"AccountID=" + accountId,
|
||||||
|
"ItemID=" + PanelRequest.ItemID));
|
||||||
|
else
|
||||||
|
if (Tmp[2] == "True")
|
||||||
|
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_lync_user",
|
||||||
|
"AccountID=" + accountId,
|
||||||
|
"ItemID=" + PanelRequest.ItemID));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetAccountImage(int accountTypeId, bool vip)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
default:
|
||||||
|
imgName = "admin_16.png";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (vip && cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels)) imgName = "vip_user_16.png";
|
||||||
|
|
||||||
|
return GetThemedImage("Exchange/" + imgName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetMailImage(int accountTypeId)
|
||||||
|
{
|
||||||
|
string imgName = "exchange24.png";
|
||||||
|
|
||||||
|
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
||||||
|
|
||||||
|
if (accountType == ExchangeAccountType.User)
|
||||||
|
imgName = "blank16.gif";
|
||||||
|
|
||||||
|
return GetThemedImage("Exchange/" + imgName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetOCSImage(bool IsOCSUser, bool IsLyncUser)
|
||||||
|
{
|
||||||
|
string imgName = "blank16.gif";
|
||||||
|
|
||||||
|
if (IsLyncUser)
|
||||||
|
imgName = "lync16.png";
|
||||||
|
else
|
||||||
|
if ((IsOCSUser))
|
||||||
|
imgName = "ocs16.png";
|
||||||
|
|
||||||
|
return GetThemedImage("Exchange/" + imgName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetBlackBerryImage(bool IsBlackBerryUser)
|
||||||
|
{
|
||||||
|
string imgName = "blank16.gif";
|
||||||
|
|
||||||
|
if (IsBlackBerryUser)
|
||||||
|
imgName = "blackberry16.png";
|
||||||
|
|
||||||
|
return GetThemedImage("Exchange/" + imgName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetCRMImage(Guid CrmUserId)
|
||||||
|
{
|
||||||
|
string imgName = "blank16.gif";
|
||||||
|
|
||||||
|
if (CrmUserId != Guid.Empty)
|
||||||
|
imgName = "crm_16.png";
|
||||||
|
|
||||||
|
return GetThemedImage("Exchange/" + imgName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
gvDeletedUsers.PageSize = Convert.ToInt16(ddlPageSize.SelectedValue);
|
||||||
|
|
||||||
|
// rebind grid
|
||||||
|
gvDeletedUsers.DataBind();
|
||||||
|
|
||||||
|
// bind stats
|
||||||
|
BindStats();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public bool EnableMailImageButton(int accountTypeId)
|
||||||
|
{
|
||||||
|
bool imgName = true;
|
||||||
|
|
||||||
|
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
||||||
|
|
||||||
|
if (accountType == ExchangeAccountType.User)
|
||||||
|
imgName = false;
|
||||||
|
|
||||||
|
return imgName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool EnableOCSImageButton(bool IsOCSUser, bool IsLyncUser)
|
||||||
|
{
|
||||||
|
bool imgName = false;
|
||||||
|
|
||||||
|
if (IsLyncUser)
|
||||||
|
imgName = true;
|
||||||
|
else
|
||||||
|
if ((IsOCSUser))
|
||||||
|
imgName = true;
|
||||||
|
|
||||||
|
return imgName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool EnableBlackBerryImageButton(bool IsBlackBerryUser)
|
||||||
|
{
|
||||||
|
bool imgName = false;
|
||||||
|
|
||||||
|
if (IsBlackBerryUser)
|
||||||
|
imgName = true;
|
||||||
|
|
||||||
|
return imgName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public string GetOCSArgument(int accountID, bool IsOCS, bool IsLync)
|
||||||
|
{
|
||||||
|
return accountID.ToString() + "|" + IsOCS.ToString() + "|" + IsLync.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServiceLevel GetServiceLevel(int levelId)
|
||||||
|
{
|
||||||
|
ServiceLevel serviceLevel = ServiceLevels.Where(x => x.LevelId == levelId).DefaultIfEmpty(new ServiceLevel { LevelName = "", LevelDescription = "" }).FirstOrDefault();
|
||||||
|
|
||||||
|
bool enable = !string.IsNullOrEmpty(serviceLevel.LevelName);
|
||||||
|
|
||||||
|
enable = enable ? cntx.Quotas.ContainsKey(Quotas.SERVICE_LEVELS + serviceLevel.LevelName) : false;
|
||||||
|
enable = enable ? cntx.Quotas[Quotas.SERVICE_LEVELS + serviceLevel.LevelName].QuotaAllocatedValue != 0 : false;
|
||||||
|
|
||||||
|
if (!enable)
|
||||||
|
{
|
||||||
|
serviceLevel.LevelName = "";
|
||||||
|
serviceLevel.LevelDescription = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return serviceLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetDownloadLink(string storagePath, string folderName, string fileName)
|
||||||
|
{
|
||||||
|
return NavigateURL(PortalUtils.SPACE_ID_PARAM,
|
||||||
|
PanelSecurity.PackageId.ToString(),
|
||||||
|
"ctl=" + PanelRequest.Ctl,
|
||||||
|
"ItemID=" + PanelRequest.ItemID,
|
||||||
|
"mid=" + this.ModuleID,
|
||||||
|
"DownloadFile=" + Server.UrlEncode(Path.Combine(storagePath, folderName, fileName)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,132 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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.HostedSolution {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class OrganizationDeletedUsers {
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// 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>
|
||||||
|
/// 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>
|
||||||
|
/// 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>
|
||||||
|
/// gvDeletedUsers 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 gvDeletedUsers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// odsAccountsPaged 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 odsAccountsPaged;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locQuota 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 locQuota;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// deletedUsersQuota control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.QuotaViewer deletedUsersQuota;
|
||||||
|
}
|
||||||
|
}
|
|
@ -65,6 +65,14 @@
|
||||||
<wsp:QuotaViewer ID="userStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
<wsp:QuotaViewer ID="userStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr class="OrgStatsRow">
|
||||||
|
<td class="OrgStatsQuota" nowrap>
|
||||||
|
<asp:HyperLink ID="lnkDeletedUsers" runat="server" meta:resourcekey="lnkDeletedUsers"></asp:HyperLink>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<wsp:QuotaViewer ID="deletedUserStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr class="OrgStatsRow" id="securGroupsStat" runat="server">
|
<tr class="OrgStatsRow" id="securGroupsStat" runat="server">
|
||||||
<td class="OrgStatsQuota" nowrap >
|
<td class="OrgStatsQuota" nowrap >
|
||||||
<asp:HyperLink ID="lnkGroups" runat="server" meta:resourcekey="lnkGroups" Text="Groups:"></asp:HyperLink>
|
<asp:HyperLink ID="lnkGroups" runat="server" meta:resourcekey="lnkGroups" Text="Groups:"></asp:HyperLink>
|
||||||
|
|
|
@ -189,7 +189,13 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
|
|
||||||
userStats.QuotaUsedValue = orgStats.CreatedUsers;
|
userStats.QuotaUsedValue = orgStats.CreatedUsers;
|
||||||
userStats.QuotaValue = orgStats.AllocatedUsers;
|
userStats.QuotaValue = orgStats.AllocatedUsers;
|
||||||
if (orgStats.AllocatedUsers != -1) userStats.QuotaAvailable = tenantStats.AllocatedUsers - tenantStats.CreatedUsers;
|
if (orgStats.AllocatedUsers != -1)
|
||||||
|
userStats.QuotaAvailable = tenantStats.AllocatedUsers - tenantStats.CreatedUsers;
|
||||||
|
|
||||||
|
deletedUserStats.QuotaUsedValue = orgStats.DeletedUsers;
|
||||||
|
deletedUserStats.QuotaValue = orgStats.AllocatedDeletedUsers;
|
||||||
|
if (orgStats.AllocatedDeletedUsers != -1)
|
||||||
|
userStats.QuotaAvailable = tenantStats.AllocatedDeletedUsers - tenantStats.DeletedUsers;
|
||||||
|
|
||||||
lnkDomains.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "domains",
|
lnkDomains.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "domains",
|
||||||
"SpaceID=" + PanelSecurity.PackageId);
|
"SpaceID=" + PanelSecurity.PackageId);
|
||||||
|
@ -197,6 +203,9 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
lnkUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "users",
|
lnkUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "users",
|
||||||
"SpaceID=" + PanelSecurity.PackageId);
|
"SpaceID=" + PanelSecurity.PackageId);
|
||||||
|
|
||||||
|
lnkDeletedUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "deleted_users",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId);
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, cntx))
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, cntx))
|
||||||
{
|
{
|
||||||
securGroupsStat.Visible = true;
|
securGroupsStat.Visible = true;
|
||||||
|
|
|
@ -138,6 +138,24 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::WebsitePanel.Portal.QuotaViewer userStats;
|
protected global::WebsitePanel.Portal.QuotaViewer userStats;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lnkDeletedUsers 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.HyperLink lnkDeletedUsers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// deletedUserStats control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.QuotaViewer deletedUserStats;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// securGroupsStat control.
|
/// securGroupsStat control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -0,0 +1,255 @@
|
||||||
|
<?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="buttonPanel.OnSaveClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Updating user settings...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkDisable.Text" xml:space="preserve">
|
||||||
|
<value>Disable User</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkLocked.Text" xml:space="preserve">
|
||||||
|
<value>Account is locked out</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkSetPassword.Text" xml:space="preserve">
|
||||||
|
<value>Set Password</value>
|
||||||
|
</data>
|
||||||
|
<data name="HSFormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="locAddress.Text" xml:space="preserve">
|
||||||
|
<value>Address:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locBusinessPhone.Text" xml:space="preserve">
|
||||||
|
<value>Business Phone:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locCity.Text" xml:space="preserve">
|
||||||
|
<value>City:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locCompany.Text" xml:space="preserve">
|
||||||
|
<value>Company:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locCountry.Text" xml:space="preserve">
|
||||||
|
<value>Country/Region:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locDepartment.Text" xml:space="preserve">
|
||||||
|
<value>Department:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locDisplayName.Text" xml:space="preserve">
|
||||||
|
<value>Display Name: *</value>
|
||||||
|
</data>
|
||||||
|
<data name="locExternalEmailAddress.Text" xml:space="preserve">
|
||||||
|
<value>External e-mail:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locFax.Text" xml:space="preserve">
|
||||||
|
<value>Fax:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locFirstName.Text" xml:space="preserve">
|
||||||
|
<value>First Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locHomePhone.Text" xml:space="preserve">
|
||||||
|
<value>Home Phone:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locInitials.Text" xml:space="preserve">
|
||||||
|
<value>Initials:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locJobTitle.Text" xml:space="preserve">
|
||||||
|
<value>Job Title:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locLastName.Text" xml:space="preserve">
|
||||||
|
<value>Last Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locManager.Text" xml:space="preserve">
|
||||||
|
<value>Manager:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locMobilePhone.Text" xml:space="preserve">
|
||||||
|
<value>Mobile Phone:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locNotes.Text" xml:space="preserve">
|
||||||
|
<value>Notes:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locOffice.Text" xml:space="preserve">
|
||||||
|
<value>Office:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locPager.Text" xml:space="preserve">
|
||||||
|
<value>Pager:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locPassword.Text" xml:space="preserve">
|
||||||
|
<value>Password:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locState.Text" xml:space="preserve">
|
||||||
|
<value>State/Province:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locSubscriberNumber.Text" xml:space="preserve">
|
||||||
|
<value>Account Number:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Edit User</value>
|
||||||
|
</data>
|
||||||
|
<data name="locUserDomainName.Text" xml:space="preserve">
|
||||||
|
<value>User Domain Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locWebPage.Text" xml:space="preserve">
|
||||||
|
<value>Web Page:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locZip.Text" xml:space="preserve">
|
||||||
|
<value>Zip/Postal Code:</value>
|
||||||
|
</data>
|
||||||
|
<data name="secAddressInfo.Text" xml:space="preserve">
|
||||||
|
<value>Address</value>
|
||||||
|
</data>
|
||||||
|
<data name="secAdvanced.Text" xml:space="preserve">
|
||||||
|
<value>Advanced</value>
|
||||||
|
</data>
|
||||||
|
<data name="secCompanyInfo.Text" xml:space="preserve">
|
||||||
|
<value>Company Information</value>
|
||||||
|
</data>
|
||||||
|
<data name="secContactInfo.Text" xml:space="preserve">
|
||||||
|
<value>Contact Information</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>User</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>
|
||||||
|
<data name="lblUserPrincipalName" xml:space="preserve">
|
||||||
|
<value>Login Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSetUserPassword.Text" xml:space="preserve">
|
||||||
|
<value>Set Password</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSetUserPrincipalName.Text" xml:space="preserve">
|
||||||
|
<value>Set Login Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkInherit.Text" xml:space="preserve">
|
||||||
|
<value>Update Services</value>
|
||||||
|
</data>
|
||||||
|
<data name="locServiceLevel.Text" xml:space="preserve">
|
||||||
|
<value>Service Level:</value>
|
||||||
|
</data>
|
||||||
|
<data name="locVIPUser.Text" xml:space="preserve">
|
||||||
|
<value>VIP:</value>
|
||||||
|
</data>
|
||||||
|
<data name="secServiceLevels.Text" xml:space="preserve">
|
||||||
|
<value>Service Level Information</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,129 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Edit User </value>
|
||||||
|
</data>
|
||||||
|
<data name="secGeneral.Text" xml:space="preserve">
|
||||||
|
<value>General</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Users</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -46,68 +46,107 @@
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<asp:Panel ID="UsersPanel" runat="server">
|
||||||
|
<asp:UpdatePanel ID="UsersUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
<asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="False" EnableViewState="true"
|
||||||
|
Width="100%" EmptyDataText="gvUsers" CssSelectorClass="NormalGridView" DataKeyNames="AccountId,AccountType"
|
||||||
|
OnRowCommand="gvUsers_RowCommand" AllowPaging="True" AllowSorting="True"
|
||||||
|
DataSourceID="odsAccountsPaged" PageSize="20">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Image ID="img2" runat="server" Width="16px" Height="16px" ImageUrl='<%# GetStateImage((bool)Eval("Locked"),(bool)Eval("Disabled")) %>' ImageAlign="AbsMiddle" />
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
|
||||||
<asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="False" EnableViewState="true"
|
<asp:TemplateField HeaderText="gvUsersDisplayName" SortExpression="DisplayName">
|
||||||
Width="100%" EmptyDataText="gvUsers" CssSelectorClass="NormalGridView"
|
<ItemStyle Width="25%"></ItemStyle>
|
||||||
OnRowCommand="gvUsers_RowCommand" AllowPaging="True" AllowSorting="True"
|
<ItemTemplate>
|
||||||
DataSourceID="odsAccountsPaged" PageSize="20">
|
<asp:Image ID="img1" runat="server" ImageUrl='<%# GetAccountImage((int)Eval("AccountType"),(bool)Eval("IsVIP")) %>' ImageAlign="AbsMiddle"/>
|
||||||
<Columns>
|
<asp:hyperlink id="lnk1" runat="server"
|
||||||
<asp:TemplateField>
|
NavigateUrl='<%# GetUserEditUrl(Eval("AccountId").ToString()) %>'>
|
||||||
<ItemTemplate>
|
<%# Eval("DisplayName") %>
|
||||||
<asp:Image ID="img2" runat="server" Width="16px" Height="16px" ImageUrl='<%# GetStateImage((bool)Eval("Locked"),(bool)Eval("Disabled")) %>' ImageAlign="AbsMiddle" />
|
</asp:hyperlink>
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
</asp:TemplateField>
|
</asp:TemplateField>
|
||||||
|
<asp:BoundField HeaderText="gvUsersLogin" DataField="UserPrincipalName" SortExpression="UserPrincipalName" ItemStyle-Width="25%" />
|
||||||
<asp:TemplateField HeaderText="gvUsersDisplayName" SortExpression="DisplayName">
|
<asp:TemplateField HeaderText="gvServiceLevel">
|
||||||
<ItemStyle Width="25%"></ItemStyle>
|
<ItemStyle Width="25%"></ItemStyle>
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<asp:Image ID="img1" runat="server" ImageUrl='<%# GetAccountImage((int)Eval("AccountType"),(bool)Eval("IsVIP")) %>' ImageAlign="AbsMiddle"/>
|
<asp:Label id="lbServLevel" runat="server" ToolTip = '<%# GetServiceLevel((int)Eval("LevelId")).LevelDescription%>'>
|
||||||
<asp:hyperlink id="lnk1" runat="server"
|
<%# GetServiceLevel((int)Eval("LevelId")).LevelName%>
|
||||||
NavigateUrl='<%# GetUserEditUrl(Eval("AccountId").ToString()) %>'>
|
</asp:Label>
|
||||||
<%# Eval("DisplayName") %>
|
</ItemTemplate>
|
||||||
</asp:hyperlink>
|
</asp:TemplateField>
|
||||||
</ItemTemplate>
|
<asp:BoundField HeaderText="gvUsersEmail" DataField="PrimaryEmailAddress" SortExpression="PrimaryEmailAddress" ItemStyle-Width="25%" />
|
||||||
</asp:TemplateField>
|
<asp:BoundField HeaderText="gvSubscriberNumber" DataField="SubscriberNumber" ItemStyle-Width="20%" />
|
||||||
<asp:BoundField HeaderText="gvUsersLogin" DataField="UserPrincipalName" SortExpression="UserPrincipalName" ItemStyle-Width="25%" />
|
<asp:TemplateField ItemStyle-Wrap="False">
|
||||||
<asp:TemplateField HeaderText="gvServiceLevel">
|
<ItemTemplate>
|
||||||
<ItemStyle Width="25%"></ItemStyle>
|
<asp:ImageButton ID="Image2" runat="server" Width="16px" Height="16px" ToolTip="Mail" ImageUrl='<%# GetMailImage((int)Eval("AccountType")) %>' CommandName="OpenMailProperties" CommandArgument='<%# Eval("AccountId") %>' Enabled=<%# EnableMailImageButton((int)Eval("AccountType")) %>/>
|
||||||
<ItemTemplate>
|
<asp:ImageButton ID="Image3" runat="server" Width="16px" Height="16px" ToolTip="UC" ImageUrl='<%# GetOCSImage((bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>' CommandName="OpenUCProperties" CommandArgument='<%# GetOCSArgument((int)Eval("AccountId"),(bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>' Enabled=<%# EnableOCSImageButton((bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>/>
|
||||||
<asp:Label id="lbServLevel" runat="server" ToolTip = '<%# GetServiceLevel((int)Eval("LevelId")).LevelDescription%>'>
|
<asp:ImageButton ID="Image4" runat="server" Width="16px" Height="16px" ToolTip="BlackBerry" ImageUrl='<%# GetBlackBerryImage((bool)Eval("IsBlackBerryUser")) %>' CommandName="OpenBlackBerryProperties" CommandArgument='<%# Eval("AccountId") %>' Enabled=<%# EnableBlackBerryImageButton((bool)Eval("IsBlackBerryUser")) %>/>
|
||||||
<%# GetServiceLevel((int)Eval("LevelId")).LevelName%>
|
<asp:Image ID="Image5" runat="server" Width="16px" Height="16px" ToolTip="CRM" ImageUrl='<%# GetCRMImage((Guid)Eval("CrmUserId")) %>' />
|
||||||
</asp:Label>
|
</ItemTemplate>
|
||||||
</ItemTemplate>
|
</asp:TemplateField>
|
||||||
</asp:TemplateField>
|
<asp:TemplateField>
|
||||||
<asp:BoundField HeaderText="gvUsersEmail" DataField="PrimaryEmailAddress" SortExpression="PrimaryEmailAddress" ItemStyle-Width="25%" />
|
<ItemTemplate>
|
||||||
<asp:BoundField HeaderText="gvSubscriberNumber" DataField="SubscriberNumber" ItemStyle-Width="20%" />
|
<asp:ImageButton ID="cmdDelete" runat="server" Text="Delete" SkinID="ExchangeDelete" CommandName="DeleteItem"
|
||||||
<asp:TemplateField ItemStyle-Wrap="False">
|
CommandArgument='<%# Container.DataItemIndex %>' meta:resourcekey="cmdDelete"></asp:ImageButton>
|
||||||
<ItemTemplate>
|
</ItemTemplate>
|
||||||
<asp:ImageButton ID="Image2" runat="server" Width="16px" Height="16px" ToolTip="Mail" ImageUrl='<%# GetMailImage((int)Eval("AccountType")) %>' CommandName="OpenMailProperties" CommandArgument='<%# Eval("AccountId") %>' Enabled=<%# EnableMailImageButton((int)Eval("AccountType")) %>/>
|
</asp:TemplateField>
|
||||||
<asp:ImageButton ID="Image3" runat="server" Width="16px" Height="16px" ToolTip="UC" ImageUrl='<%# GetOCSImage((bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>' CommandName="OpenUCProperties" CommandArgument='<%# GetOCSArgument((int)Eval("AccountId"),(bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>' Enabled=<%# EnableOCSImageButton((bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>/>
|
</Columns>
|
||||||
<asp:ImageButton ID="Image4" runat="server" Width="16px" Height="16px" ToolTip="BlackBerry" ImageUrl='<%# GetBlackBerryImage((bool)Eval("IsBlackBerryUser")) %>' CommandName="OpenBlackBerryProperties" CommandArgument='<%# Eval("AccountId") %>' Enabled=<%# EnableBlackBerryImageButton((bool)Eval("IsBlackBerryUser")) %>/>
|
</asp:GridView>
|
||||||
<asp:Image ID="Image5" runat="server" Width="16px" Height="16px" ToolTip="CRM" ImageUrl='<%# GetCRMImage((Guid)Eval("CrmUserId")) %>' />
|
<asp:ObjectDataSource ID="odsAccountsPaged" runat="server" EnablePaging="True"
|
||||||
</ItemTemplate>
|
SelectCountMethod="GetOrganizationUsersPagedCount"
|
||||||
</asp:TemplateField>
|
SelectMethod="GetOrganizationUsersPaged"
|
||||||
<asp:TemplateField>
|
SortParameterName="sortColumn"
|
||||||
<ItemTemplate>
|
TypeName="WebsitePanel.Portal.OrganizationsHelper"
|
||||||
<asp:ImageButton ID="cmdDelete" runat="server" Text="Delete" SkinID="ExchangeDelete"
|
OnSelected="odsAccountsPaged_Selected">
|
||||||
CommandName="DeleteItem" CommandArgument='<%# Eval("AccountId") %>'
|
<SelectParameters>
|
||||||
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Remove this item?');"></asp:ImageButton>
|
<asp:QueryStringParameter Name="itemId" QueryStringField="ItemID" DefaultValue="0" />
|
||||||
</ItemTemplate>
|
<asp:ControlParameter Name="filterColumn" ControlID="ddlSearchColumn" PropertyName="SelectedValue" />
|
||||||
</asp:TemplateField>
|
<asp:ControlParameter Name="filterValue" ControlID="txtSearchValue" PropertyName="Text" />
|
||||||
</Columns>
|
</SelectParameters>
|
||||||
</asp:GridView>
|
</asp:ObjectDataSource>
|
||||||
<asp:ObjectDataSource ID="odsAccountsPaged" runat="server" EnablePaging="True"
|
<asp:Panel ID="DeleteUserPanel" runat="server" CssClass="Popup" style="display:none">
|
||||||
SelectCountMethod="GetOrganizationUsersPagedCount"
|
<table class="Popup-Header" cellpadding="0" cellspacing="0">
|
||||||
SelectMethod="GetOrganizationUsersPaged"
|
<tr>
|
||||||
SortParameterName="sortColumn"
|
<td class="Popup-HeaderLeft"></td>
|
||||||
TypeName="WebsitePanel.Portal.OrganizationsHelper"
|
<td class="Popup-HeaderTitle">
|
||||||
OnSelected="odsAccountsPaged_Selected">
|
<asp:Localize ID="headerDeleteUser" runat="server" meta:resourcekey="headerDeleteUser"></asp:Localize>
|
||||||
<SelectParameters>
|
</td>
|
||||||
<asp:QueryStringParameter Name="itemId" QueryStringField="ItemID" DefaultValue="0" />
|
<td class="Popup-HeaderRight"></td>
|
||||||
<asp:ControlParameter Name="filterColumn" ControlID="ddlSearchColumn" PropertyName="SelectedValue" />
|
</tr>
|
||||||
<asp:ControlParameter Name="filterValue" ControlID="txtSearchValue" PropertyName="Text" />
|
</table>
|
||||||
</SelectParameters>
|
<div class="Popup-Content">
|
||||||
</asp:ObjectDataSource>
|
<div class="Popup-Body">
|
||||||
|
<br />
|
||||||
|
<asp:UpdatePanel ID="DeleteUserUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
<asp:HiddenField ID="hdAccountId" runat="server" Value="0" />
|
||||||
|
<asp:Literal ID="litDeleteUser" runat="server" meta:resourcekey="litDeleteUser"></asp:Literal>
|
||||||
|
<br />
|
||||||
|
<asp:CheckBox ID="chkEnableForceArchiveMailbox" runat="server" meta:resourcekey="chkEnableForceArchiveMailbox" Visible="false" Checked="false" />
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
<div class="FormFooter">
|
||||||
|
<asp:Button ID="btnDeleteUser" runat="server" CssClass="Button1" meta:resourcekey="btnDelete" Text="Delete" OnClientClick="return ShowProgressDialog('Deleting user...');" OnClick="btnDelete_Click" />
|
||||||
|
<asp:Button ID="btnCancelDelete" runat="server" CssClass="Button1" meta:resourcekey="btnCancel" Text="Cancel" CausesValidation="false" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</asp:Panel>
|
||||||
|
<asp:Button ID="btnDeleteUserFake" runat="server" style="display:none;" />
|
||||||
|
<ajaxToolkit:ModalPopupExtender ID="DeleteUserModal" runat="server" TargetControlID="btnDeleteUserFake" EnableViewState="true"
|
||||||
|
PopupControlID="DeleteUserPanel" BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="btnCancelDelete" />
|
||||||
|
</ContentTemplate>
|
||||||
|
<triggers>
|
||||||
|
<asp:PostBackTrigger ControlID="btnDeleteUser" />
|
||||||
|
</triggers>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
</asp:Panel>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
<asp:Localize ID="locQuota" runat="server" meta:resourcekey="locQuota" Text="Total Users Created:"></asp:Localize>
|
<asp:Localize ID="locQuota" runat="server" meta:resourcekey="locQuota" Text="Total Users Created:"></asp:Localize>
|
||||||
|
@ -127,7 +166,6 @@
|
||||||
</div>
|
</div>
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
</asp:Repeater>
|
</asp:Repeater>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -130,28 +130,30 @@ namespace WebsitePanel.Portal.HostedSolution
|
||||||
{
|
{
|
||||||
if (e.CommandName == "DeleteItem")
|
if (e.CommandName == "DeleteItem")
|
||||||
{
|
{
|
||||||
// delete user
|
int rowIndex = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||||
int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
|
||||||
|
|
||||||
try
|
var accountId = Utils.ParseInt(gvUsers.DataKeys[rowIndex][0], 0);
|
||||||
|
|
||||||
|
var accountType = (ExchangeAccountType)gvUsers.DataKeys[rowIndex][1];
|
||||||
|
|
||||||
|
if (cntx.Quotas.ContainsKey(Quotas.ORGANIZATION_DELETED_USERS) && accountType != ExchangeAccountType.User)
|
||||||
{
|
{
|
||||||
int result = ES.Services.Organizations.DeleteUser(PanelRequest.ItemID, accountId);
|
chkEnableForceArchiveMailbox.Visible = true;
|
||||||
if (result < 0)
|
|
||||||
{
|
|
||||||
messageBox.ShowResultMessage(result);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// rebind grid
|
var account = ES.Services.ExchangeServer.GetAccount(PanelRequest.ItemID, accountId);
|
||||||
gvUsers.DataBind();
|
var mailboxPlan = ES.Services.ExchangeServer.GetExchangeMailboxPlan(PanelRequest.ItemID, account.MailboxPlanId);
|
||||||
|
|
||||||
// bind stats
|
chkEnableForceArchiveMailbox.Checked = mailboxPlan.EnableForceArchiveDeletion;
|
||||||
BindStats();
|
chkEnableForceArchiveMailbox.Enabled = !mailboxPlan.EnableForceArchiveDeletion;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
else
|
||||||
{
|
{
|
||||||
messageBox.ShowErrorMessage("ORGANIZATIONS_DELETE_USERS", ex);
|
chkEnableForceArchiveMailbox.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hdAccountId.Value = accountId.ToString();
|
||||||
|
|
||||||
|
DeleteUserModal.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.CommandName == "OpenMailProperties")
|
if (e.CommandName == "OpenMailProperties")
|
||||||
|
@ -195,13 +197,9 @@ namespace WebsitePanel.Portal.HostedSolution
|
||||||
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_lync_user",
|
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_lync_user",
|
||||||
"AccountID=" + accountId,
|
"AccountID=" + accountId,
|
||||||
"ItemID=" + PanelRequest.ItemID));
|
"ItemID=" + PanelRequest.ItemID));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public string GetAccountImage(int accountTypeId, bool vip)
|
public string GetAccountImage(int accountTypeId, bool vip)
|
||||||
{
|
{
|
||||||
string imgName = string.Empty;
|
string imgName = string.Empty;
|
||||||
|
@ -354,5 +352,41 @@ namespace WebsitePanel.Portal.HostedSolution
|
||||||
|
|
||||||
return serviceLevel;
|
return serviceLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void btnDelete_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
DeleteUserModal.Hide();
|
||||||
|
|
||||||
|
// delete user
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
if (cntx.Quotas.ContainsKey(Quotas.ORGANIZATION_DELETED_USERS))
|
||||||
|
{
|
||||||
|
result = ES.Services.Organizations.SetDeletedUser(PanelRequest.ItemID, int.Parse(hdAccountId.Value), chkEnableForceArchiveMailbox.Checked);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = ES.Services.Organizations.DeleteUser(PanelRequest.ItemID, int.Parse(hdAccountId.Value));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result < 0)
|
||||||
|
{
|
||||||
|
messageBox.ShowResultMessage(result);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// rebind grid
|
||||||
|
gvUsers.DataBind();
|
||||||
|
|
||||||
|
// bind stats
|
||||||
|
BindStats();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("ORGANIZATIONS_DELETE_USERS", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -102,6 +102,24 @@ namespace WebsitePanel.Portal.HostedSolution {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.ImageButton cmdSearch;
|
protected global::System.Web.UI.WebControls.ImageButton cmdSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// UsersPanel 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 UsersPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// UsersUpdatePanel 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 UsersUpdatePanel;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// gvUsers control.
|
/// gvUsers control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -120,6 +138,96 @@ namespace WebsitePanel.Portal.HostedSolution {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.ObjectDataSource odsAccountsPaged;
|
protected global::System.Web.UI.WebControls.ObjectDataSource odsAccountsPaged;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DeleteUserPanel 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 DeleteUserPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// headerDeleteUser 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 headerDeleteUser;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DeleteUserUpdatePanel 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 DeleteUserUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// hdAccountId 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.HiddenField hdAccountId;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// litDeleteUser 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 litDeleteUser;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkEnableForceArchiveMailbox 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 chkEnableForceArchiveMailbox;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnDeleteUser 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 btnDeleteUser;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnCancelDelete 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 btnCancelDelete;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnDeleteUserFake 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 btnDeleteUserFake;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DeleteUserModal control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::AjaxControlToolkit.ModalPopupExtender DeleteUserModal;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// locQuota control.
|
/// locQuota control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -44,6 +44,12 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
Unselected
|
Unselected
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool Disabled
|
||||||
|
{
|
||||||
|
get { return ViewState["Disabled"] != null ? (bool)ViewState["Disabled"] : false; }
|
||||||
|
set { ViewState["Disabled"] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
public bool EnableMailboxOnly
|
public bool EnableMailboxOnly
|
||||||
{
|
{
|
||||||
get {return ViewState["EnableMailboxOnly"] != null ? (bool)ViewState["EnableMailboxOnly"]: false; }
|
get {return ViewState["EnableMailboxOnly"] != null ? (bool)ViewState["EnableMailboxOnly"]: false; }
|
||||||
|
@ -116,6 +122,11 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
// toggle controls
|
// toggle controls
|
||||||
if (!IsPostBack)
|
if (!IsPostBack)
|
||||||
{
|
{
|
||||||
|
if (Disabled)
|
||||||
|
{
|
||||||
|
btnAdd.Visible = btnDelete.Visible = gvAccounts.Columns[0].Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
chkIncludeMailboxes.Visible = chkIncludeRooms.Visible = chkIncludeEquipment.Visible = MailboxesEnabled;
|
chkIncludeMailboxes.Visible = chkIncludeRooms.Visible = chkIncludeEquipment.Visible = MailboxesEnabled;
|
||||||
chkIncludeMailboxes.Checked = chkIncludeRooms.Checked = chkIncludeEquipment.Checked = MailboxesEnabled;
|
chkIncludeMailboxes.Checked = chkIncludeRooms.Checked = chkIncludeEquipment.Checked = MailboxesEnabled;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,132 @@
|
||||||
|
<?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="Tab.Advanced" xml:space="preserve">
|
||||||
|
<value>Advanced</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tab.General" xml:space="preserve">
|
||||||
|
<value>General</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tab.Settings" xml:space="preserve">
|
||||||
|
<value>Settings</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tab.MemberOf" xml:space="preserve">
|
||||||
|
<value>Member Of</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -225,4 +225,7 @@
|
||||||
<data name="Text.RetentionPolicyTag" xml:space="preserve">
|
<data name="Text.RetentionPolicyTag" xml:space="preserve">
|
||||||
<value>Retention Policy Tag</value>
|
<value>Retention Policy Tag</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Text.DeletedUsers" xml:space="preserve">
|
||||||
|
<value>Deleted Users</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DeletedUserTabs.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.UserControls.DeletedUserTabs" %>
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="1">
|
||||||
|
<tr>
|
||||||
|
<td class="Tabs">
|
||||||
|
|
||||||
|
<asp:DataList ID="dlTabs" runat="server" RepeatDirection="Horizontal"
|
||||||
|
RepeatLayout="Flow" EnableViewState="false" RepeatColumns="6" SeparatorStyle-CssClass="Separator" SeparatorStyle-Height="22px" >
|
||||||
|
<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>
|
||||||
|
<SeparatorTemplate>
|
||||||
|
|
||||||
|
</SeparatorTemplate>
|
||||||
|
</asp:DataList>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
|
@ -0,0 +1,100 @@
|
||||||
|
// Copyright (c) 2014, 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;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
|
{
|
||||||
|
public partial class DeletedUserTabs : 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("view_deleted_user", "Tab.General"));
|
||||||
|
|
||||||
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
|
||||||
|
bool bSuccess = Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, cntx);
|
||||||
|
|
||||||
|
if (!bSuccess)
|
||||||
|
{
|
||||||
|
// get user settings
|
||||||
|
OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID);
|
||||||
|
|
||||||
|
bSuccess = (Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, cntx)
|
||||||
|
&& (user.AccountType == ExchangeAccountType.Mailbox
|
||||||
|
|| user.AccountType == ExchangeAccountType.Room
|
||||||
|
|| user.AccountType == ExchangeAccountType.Equipment));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bSuccess)
|
||||||
|
{
|
||||||
|
tabsList.Add(CreateTab("deleted_user_memberof", "Tab.MemberOf"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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(),
|
||||||
|
"Context=User"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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 DeletedUserTabs {
|
||||||
|
|
||||||
|
/// <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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -186,9 +186,13 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx))
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx))
|
||||||
organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "org_domains"));
|
organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "org_domains"));
|
||||||
}
|
}
|
||||||
|
|
||||||
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_DELETED_USERS, cntx))
|
||||||
|
organizationGroup.MenuItems.Add(CreateMenuItem("DeletedUsers", "deleted_users"));
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, cntx))
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, cntx))
|
||||||
organizationGroup.MenuItems.Add(CreateMenuItem("SecurityGroups", "secur_groups"));
|
organizationGroup.MenuItems.Add(CreateMenuItem("SecurityGroups", "secur_groups"));
|
||||||
|
|
||||||
|
|
|
@ -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="lblPrimaryDomainController.Text" xml:space="preserve">
|
<data name="lblPrimaryDomainController.Text" xml:space="preserve">
|
||||||
<value>Preferred Domain Controller:</value>
|
<value>Preferred Domain Controller:</value>
|
||||||
|
@ -135,4 +135,7 @@
|
||||||
<data name="listItemAppendOrgId.Text" xml:space="preserve">
|
<data name="listItemAppendOrgId.Text" xml:space="preserve">
|
||||||
<value>Append OrgID</value>
|
<value>Append OrgID</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lblArchiveStorageSpace.Text" xml:space="preserve">
|
||||||
|
<value>Archive Storage Path:</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -32,4 +32,8 @@
|
||||||
</asp:DropDownList>
|
</asp:DropDownList>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" nowrap="true"><asp:Label runat="server" ID="Label2" meta:resourcekey="lblArchiveStorageSpace" /></td>
|
||||||
|
<td><asp:TextBox runat="server" ID="txtArchiveStorageSpace" MaxLength="100" Width="200px" /></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
|
@ -36,6 +36,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
||||||
public const string PrimaryDomainController = "PrimaryDomainController";
|
public const string PrimaryDomainController = "PrimaryDomainController";
|
||||||
public const string TemporyDomainName = "TempDomain";
|
public const string TemporyDomainName = "TempDomain";
|
||||||
public const string UserNameFormat = "UserNameFormat";
|
public const string UserNameFormat = "UserNameFormat";
|
||||||
|
public const string ArchiveStoragePath = "ArchiveStoragePath";
|
||||||
|
|
||||||
protected void Page_Load(object sender, EventArgs e)
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
@ -53,6 +54,8 @@ namespace WebsitePanel.Portal.ProviderControls
|
||||||
UserNameFormatDropDown.SelectedValue =
|
UserNameFormatDropDown.SelectedValue =
|
||||||
UserNameFormatDropDown.Items.FindByText(settings[UserNameFormat]).Value;
|
UserNameFormatDropDown.Items.FindByText(settings[UserNameFormat]).Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
txtArchiveStorageSpace.Text = settings[ArchiveStoragePath];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveSettings(System.Collections.Specialized.StringDictionary settings)
|
public void SaveSettings(System.Collections.Specialized.StringDictionary settings)
|
||||||
|
@ -61,6 +64,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
||||||
settings[PrimaryDomainController] = txtPrimaryDomainController.Text.Trim();
|
settings[PrimaryDomainController] = txtPrimaryDomainController.Text.Trim();
|
||||||
settings[TemporyDomainName] = txtTemporyDomainName.Text.Trim();
|
settings[TemporyDomainName] = txtTemporyDomainName.Text.Trim();
|
||||||
settings[UserNameFormat] = UserNameFormatDropDown.SelectedItem.Text;
|
settings[UserNameFormat] = UserNameFormatDropDown.SelectedItem.Text;
|
||||||
|
settings[ArchiveStoragePath] = txtArchiveStorageSpace.Text.Trim();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -92,5 +92,23 @@ namespace WebsitePanel.Portal.ProviderControls {
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.DropDownList UserNameFormatDropDown;
|
protected global::System.Web.UI.WebControls.DropDownList UserNameFormatDropDown;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Label2 control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label Label2;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtArchiveStorageSpace 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 txtArchiveStorageSpace;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,10 @@
|
||||||
<td class="SubHead" nowrap><asp:Label ID="lblUserAccounts" runat="server" meta:resourcekey="lblUserAccounts" Text="User Accounts:"></asp:Label></td>
|
<td class="SubHead" nowrap><asp:Label ID="lblUserAccounts" runat="server" meta:resourcekey="lblUserAccounts" Text="User Accounts:"></asp:Label></td>
|
||||||
<td class="Normal"><wsp:Quota ID="quotaUserAccounts" runat="server" QuotaName="HostedSolution.Users" DisplayGauge="True" /></td>
|
<td class="Normal"><wsp:Quota ID="quotaUserAccounts" runat="server" QuotaName="HostedSolution.Users" DisplayGauge="True" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr ID="pnlDeletedUsers" runat="server">
|
||||||
|
<td class="SubHead" nowrap><asp:Label ID="lblDeletedUsers" runat="server" meta:resourcekey="lblDeletedUsers" Text="Deleted Users:"></asp:Label></td>
|
||||||
|
<td class="Normal"><wsp:Quota ID="quotaDeletedUsers" runat="server" QuotaName="HostedSolution.DeletedUsers" DisplayGauge="True" /></td>
|
||||||
|
</tr>
|
||||||
<tr ID="pnlExchangeAccounts" runat="server">
|
<tr ID="pnlExchangeAccounts" runat="server">
|
||||||
<td class="SubHead" nowrap><asp:Label ID="lblExchangeAccounts" runat="server" meta:resourcekey="lblExchangeAccounts" Text="Exchange Accounts:"></asp:Label></td>
|
<td class="SubHead" nowrap><asp:Label ID="lblExchangeAccounts" runat="server" meta:resourcekey="lblExchangeAccounts" Text="Exchange Accounts:"></asp:Label></td>
|
||||||
<td class="Normal"><wsp:Quota ID="quotaExchangeAccounts" runat="server" QuotaName="Exchange2007.Mailboxes" DisplayGauge="True" /></td>
|
<td class="Normal"><wsp:Quota ID="quotaExchangeAccounts" runat="server" QuotaName="Exchange2007.Mailboxes" DisplayGauge="True" /></td>
|
||||||
|
|
|
@ -60,6 +60,7 @@ namespace WebsitePanel.Portal
|
||||||
//{ "quotaDomainPointers", "pnlDomainPointers" },
|
//{ "quotaDomainPointers", "pnlDomainPointers" },
|
||||||
{ "quotaOrganizations", "pnlOrganizations" },
|
{ "quotaOrganizations", "pnlOrganizations" },
|
||||||
{ "quotaUserAccounts", "pnlUserAccounts" },
|
{ "quotaUserAccounts", "pnlUserAccounts" },
|
||||||
|
{ "quotaDeletedUsers", "pnlDeletedUsers" },
|
||||||
{ "quotaMailAccounts", "pnlMailAccounts" },
|
{ "quotaMailAccounts", "pnlMailAccounts" },
|
||||||
{ "quotaExchangeAccounts", "pnlExchangeAccounts" },
|
{ "quotaExchangeAccounts", "pnlExchangeAccounts" },
|
||||||
{ "quotaOCSUsers", "pnlOCSUsers" },
|
{ "quotaOCSUsers", "pnlOCSUsers" },
|
||||||
|
|
|
@ -183,6 +183,33 @@ namespace WebsitePanel.Portal {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::WebsitePanel.Portal.Quota quotaUserAccounts;
|
protected global::WebsitePanel.Portal.Quota quotaUserAccounts;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// pnlDeletedUsers control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.HtmlControls.HtmlTableRow pnlDeletedUsers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblDeletedUsers control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblDeletedUsers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// quotaDeletedUsers control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.Quota quotaDeletedUsers;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// pnlExchangeAccounts control.
|
/// pnlExchangeAccounts control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -169,9 +169,13 @@ namespace WebsitePanel.Portal.UserControls
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, Cntx))
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, Cntx))
|
||||||
items.Add(CreateMenuItem("DomainNames", "org_domains"));
|
items.Add(CreateMenuItem("DomainNames", "org_domains"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, Cntx))
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, Cntx))
|
||||||
items.Add(CreateMenuItem("Users", "users", @"Icons/user_48.png"));
|
items.Add(CreateMenuItem("Users", "users", @"Icons/user_48.png"));
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_DELETED_USERS, Cntx))
|
||||||
|
items.Add(CreateMenuItem("DeletedUsers", "deleted_users", @"Icons/deleted_user_48.png"));
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, Cntx))
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, Cntx))
|
||||||
items.Add(CreateMenuItem("SecurityGroups", "secur_groups", @"Icons/group_48.png"));
|
items.Add(CreateMenuItem("SecurityGroups", "secur_groups", @"Icons/group_48.png"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,6 +211,34 @@
|
||||||
<Compile Include="Code\ReportingServices\IResourceStorage.cs" />
|
<Compile Include="Code\ReportingServices\IResourceStorage.cs" />
|
||||||
<Compile Include="Code\ReportingServices\ReportingServicesUtils.cs" />
|
<Compile Include="Code\ReportingServices\ReportingServicesUtils.cs" />
|
||||||
<Compile Include="Code\UserControls\Tab.cs" />
|
<Compile Include="Code\UserControls\Tab.cs" />
|
||||||
|
<Compile Include="ExchangeServer\OrganizationDeletedUsers.ascx.cs">
|
||||||
|
<DependentUpon>OrganizationDeletedUsers.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationDeletedUsers.ascx.designer.cs">
|
||||||
|
<DependentUpon>OrganizationDeletedUsers.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationDeletedUserGeneralSettings.ascx.cs">
|
||||||
|
<DependentUpon>OrganizationDeletedUserGeneralSettings.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationDeletedUserGeneralSettings.ascx.designer.cs">
|
||||||
|
<DependentUpon>OrganizationDeletedUserGeneralSettings.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationDeletedUserMemberOf.ascx.cs">
|
||||||
|
<DependentUpon>OrganizationDeletedUserMemberOf.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\OrganizationDeletedUserMemberOf.ascx.designer.cs">
|
||||||
|
<DependentUpon>OrganizationDeletedUserMemberOf.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\UserControls\DeletedUserTabs.ascx.cs">
|
||||||
|
<DependentUpon>DeletedUserTabs.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ExchangeServer\UserControls\DeletedUserTabs.ascx.designer.cs">
|
||||||
|
<DependentUpon>DeletedUserTabs.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="RDSServersAddserver.ascx.cs">
|
<Compile Include="RDSServersAddserver.ascx.cs">
|
||||||
<DependentUpon>RDSServersAddserver.ascx</DependentUpon>
|
<DependentUpon>RDSServersAddserver.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -4230,6 +4258,10 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="ApplyEnableHardQuotaFeature.ascx" />
|
<Content Include="ApplyEnableHardQuotaFeature.ascx" />
|
||||||
|
<Content Include="ExchangeServer\OrganizationDeletedUsers.ascx" />
|
||||||
|
<Content Include="ExchangeServer\OrganizationDeletedUserGeneralSettings.ascx" />
|
||||||
|
<Content Include="ExchangeServer\OrganizationDeletedUserMemberOf.ascx" />
|
||||||
|
<Content Include="ExchangeServer\UserControls\DeletedUserTabs.ascx" />
|
||||||
<Content Include="RDSServersAddserver.ascx" />
|
<Content Include="RDSServersAddserver.ascx" />
|
||||||
<Content Include="RDSServers.ascx" />
|
<Content Include="RDSServers.ascx" />
|
||||||
<Content Include="RDS\AssignedRDSServers.ascx" />
|
<Content Include="RDS\AssignedRDSServers.ascx" />
|
||||||
|
@ -5547,6 +5579,20 @@
|
||||||
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionServers.ascx.resx" />
|
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionServers.ascx.resx" />
|
||||||
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionApps.ascx.resx" />
|
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionApps.ascx.resx" />
|
||||||
<Content Include="ProviderControls\App_LocalResources\RDS_Settings.ascx.resx" />
|
<Content Include="ProviderControls\App_LocalResources\RDS_Settings.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\App_LocalResources\OrganizationDeletedUsers.ascx.resx">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="ExchangeServer\OrganizationUserGeneralSettings.ascx.resx">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="ExchangeServer\OrganizationUserMemberOf.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\App_LocalResources\OrganizationDeletedUserGeneralSettings.ascx.resx">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="ExchangeServer\App_LocalResources\OrganizationDeletedUserMemberOf.ascx.resx" />
|
||||||
|
<Content Include="ExchangeServer\UserControls\App_LocalResources\DeletedUserTabs.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>
|
||||||
|
|
|
@ -114,6 +114,7 @@
|
||||||
<Content Include="App_Themes\Default\Icons\crm_orgs_48.png" />
|
<Content Include="App_Themes\Default\Icons\crm_orgs_48.png" />
|
||||||
<Content Include="App_Themes\Default\Icons\crm_storage_settings_48.png" />
|
<Content Include="App_Themes\Default\Icons\crm_storage_settings_48.png" />
|
||||||
<Content Include="App_Themes\Default\Icons\crm_users_48.png" />
|
<Content Include="App_Themes\Default\Icons\crm_users_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\deleted_user_48.png" />
|
||||||
<Content Include="App_Themes\Default\Icons\disclaimers_48.png" />
|
<Content Include="App_Themes\Default\Icons\disclaimers_48.png" />
|
||||||
<Content Include="App_Themes\Default\Icons\domains_48.png" />
|
<Content Include="App_Themes\Default\Icons\domains_48.png" />
|
||||||
<Content Include="App_Themes\Default\Icons\enterprisestorage_drive_maps_48.png" />
|
<Content Include="App_Themes\Default\Icons\enterprisestorage_drive_maps_48.png" />
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue