Partial checkin on litigation hold
This commit is contained in:
parent
65594c80cc
commit
61d803b26b
16 changed files with 243 additions and 72 deletions
|
@ -221,6 +221,79 @@ RETURN
|
||||||
GO
|
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
|
||||||
|
FROM
|
||||||
|
ExchangeMailboxPlans
|
||||||
|
WHERE
|
||||||
|
MailboxPlanId = @MailboxPlanId
|
||||||
|
RETURN
|
||||||
|
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ALTER PROCEDURE [dbo].[GetExchangeOrganizationStatistics]
|
||||||
|
(
|
||||||
|
@ItemID int
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
|
||||||
|
IF -1 IN (SELECT B.MailboxSizeMB FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID)
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 1 OR AccountType = 5 OR AccountType = 6) AND ItemID = @ItemID) AS CreatedMailboxes,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 2 AND ItemID = @ItemID) AS CreatedContacts,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 3 AND ItemID = @ItemID) AS CreatedDistributionLists,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains,
|
||||||
|
(SELECT MIN(B.MailboxSizeMB) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedDiskSpace,
|
||||||
|
(SELECT MIN(B.RecoverableItemsSpace) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedLitigationHoldSpace
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 1 OR AccountType = 5 OR AccountType = 6) AND ItemID = @ItemID) AS CreatedMailboxes,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 2 AND ItemID = @ItemID) AS CreatedContacts,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 3 AND ItemID = @ItemID) AS CreatedDistributionLists,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders,
|
||||||
|
(SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains,
|
||||||
|
(SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedDiskSpace,
|
||||||
|
(SELECT SUM(B.RecoverableItemsSpace) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedLitigationHoldSpace
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
-- UPDATE Domains SET IsDomainPointer=0, DomainItemID=NULL WHERE MailDomainID IS NOT NULL AND isDomainPointer=1
|
-- UPDATE Domains SET IsDomainPointer=0, DomainItemID=NULL WHERE MailDomainID IS NOT NULL AND isDomainPointer=1
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2563,8 +2563,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
new SqlParameter("@HideFromAddressBook", hideFromAddressBook),
|
new SqlParameter("@HideFromAddressBook", hideFromAddressBook),
|
||||||
new SqlParameter("@MailboxPlanType", mailboxPlanType),
|
new SqlParameter("@MailboxPlanType", mailboxPlanType),
|
||||||
new SqlParameter("@AllowLitigationHold",enabledLitigationHold),
|
new SqlParameter("@AllowLitigationHold",enabledLitigationHold),
|
||||||
new SqlParameter("@RecoverableItemsWarningPct", recoverabelItemsSpace),
|
new SqlParameter("@RecoverableItemsWarningPct", recoverabelItemsWarning),
|
||||||
new SqlParameter("@RecoverableItemsSpace",recoverabelItemsWarning)
|
new SqlParameter("@RecoverableItemsSpace",recoverabelItemsSpace)
|
||||||
);
|
);
|
||||||
|
|
||||||
return Convert.ToInt32(outParam.Value);
|
return Convert.ToInt32(outParam.Value);
|
||||||
|
@ -2600,8 +2600,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
new SqlParameter("@HideFromAddressBook", hideFromAddressBook),
|
new SqlParameter("@HideFromAddressBook", hideFromAddressBook),
|
||||||
new SqlParameter("@MailboxPlanType", mailboxPlanType),
|
new SqlParameter("@MailboxPlanType", mailboxPlanType),
|
||||||
new SqlParameter("@AllowLitigationHold", enabledLitigationHold),
|
new SqlParameter("@AllowLitigationHold", enabledLitigationHold),
|
||||||
new SqlParameter("@RecoverableItemsWarningPct", recoverabelItemsSpace),
|
new SqlParameter("@RecoverableItemsWarningPct", recoverabelItemsWarning),
|
||||||
new SqlParameter("@RecoverableItemsSpace", recoverabelItemsWarning)
|
new SqlParameter("@RecoverableItemsSpace", recoverabelItemsSpace)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -192,6 +192,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
stats.CreatedDomains = tempStats.CreatedDomains;
|
stats.CreatedDomains = tempStats.CreatedDomains;
|
||||||
stats.CreatedPublicFolders = tempStats.CreatedPublicFolders;
|
stats.CreatedPublicFolders = tempStats.CreatedPublicFolders;
|
||||||
stats.UsedDiskSpace = tempStats.UsedDiskSpace;
|
stats.UsedDiskSpace = tempStats.UsedDiskSpace;
|
||||||
|
stats.UsedLitigationHoldSpace = tempStats.UsedLitigationHoldSpace;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -218,6 +219,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
stats.CreatedDomains += tempStats.CreatedDomains;
|
stats.CreatedDomains += tempStats.CreatedDomains;
|
||||||
stats.CreatedPublicFolders += tempStats.CreatedPublicFolders;
|
stats.CreatedPublicFolders += tempStats.CreatedPublicFolders;
|
||||||
stats.UsedDiskSpace += tempStats.UsedDiskSpace;
|
stats.UsedDiskSpace += tempStats.UsedDiskSpace;
|
||||||
|
stats.UsedLitigationHoldSpace += tempStats.UsedLitigationHoldSpace;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -235,6 +237,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
stats.AllocatedDistributionLists = cntx.Quotas[Quotas.EXCHANGE2007_DISTRIBUTIONLISTS].QuotaAllocatedValue;
|
stats.AllocatedDistributionLists = cntx.Quotas[Quotas.EXCHANGE2007_DISTRIBUTIONLISTS].QuotaAllocatedValue;
|
||||||
stats.AllocatedPublicFolders = cntx.Quotas[Quotas.EXCHANGE2007_PUBLICFOLDERS].QuotaAllocatedValue;
|
stats.AllocatedPublicFolders = cntx.Quotas[Quotas.EXCHANGE2007_PUBLICFOLDERS].QuotaAllocatedValue;
|
||||||
stats.AllocatedDiskSpace = cntx.Quotas[Quotas.EXCHANGE2007_DISKSPACE].QuotaAllocatedValue;
|
stats.AllocatedDiskSpace = cntx.Quotas[Quotas.EXCHANGE2007_DISKSPACE].QuotaAllocatedValue;
|
||||||
|
stats.AllocatedLitigationHoldSpace = cntx.Quotas[Quotas.EXCHANGE2007_RECOVERABLEITEMSSPACE].QuotaAllocatedValue;
|
||||||
|
|
||||||
return stats;
|
return stats;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,10 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
private int allocatedDiskSpace;
|
private int allocatedDiskSpace;
|
||||||
private int usedDiskSpace;
|
private int usedDiskSpace;
|
||||||
|
|
||||||
|
private int allocatedLitigationHoldSpace;
|
||||||
|
private int usedLitigationHoldSpace;
|
||||||
|
|
||||||
|
|
||||||
private int allocatedSharePointSiteCollections;
|
private int allocatedSharePointSiteCollections;
|
||||||
private int createdSharePointSiteCollections;
|
private int createdSharePointSiteCollections;
|
||||||
|
|
||||||
|
@ -154,6 +158,18 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
set { usedDiskSpace = value; }
|
set { usedDiskSpace = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int AllocatedLitigationHoldSpace
|
||||||
|
{
|
||||||
|
get { return allocatedLitigationHoldSpace; }
|
||||||
|
set { allocatedLitigationHoldSpace = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int UsedLitigationHoldSpace
|
||||||
|
{
|
||||||
|
get { return usedLitigationHoldSpace; }
|
||||||
|
set { usedLitigationHoldSpace = value; }
|
||||||
|
}
|
||||||
|
|
||||||
public int AllocatedSharePointSiteCollections
|
public int AllocatedSharePointSiteCollections
|
||||||
{
|
{
|
||||||
get { return allocatedSharePointSiteCollections; }
|
get { return allocatedSharePointSiteCollections; }
|
||||||
|
|
|
@ -2110,7 +2110,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
return cn;
|
return cn;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ExchangeAccount GetManager(DirectoryEntry entry)
|
internal virtual ExchangeAccount GetManager(DirectoryEntry entry)
|
||||||
{
|
{
|
||||||
ExchangeAccount retUser = null;
|
ExchangeAccount retUser = null;
|
||||||
string path = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Manager);
|
string path = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Manager);
|
||||||
|
@ -2129,7 +2129,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
return retUser;
|
return retUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ExchangeMailbox GetMailboxGeneralSettingsInternal(string accountName)
|
internal virtual ExchangeMailbox GetMailboxGeneralSettingsInternal(string accountName)
|
||||||
{
|
{
|
||||||
ExchangeLog.LogStart("GetMailboxGeneralSettingsInternal");
|
ExchangeLog.LogStart("GetMailboxGeneralSettingsInternal");
|
||||||
ExchangeLog.DebugInfo("Account: {0}", accountName);
|
ExchangeLog.DebugInfo("Account: {0}", accountName);
|
||||||
|
|
|
@ -78,6 +78,74 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
internal override ExchangeMailbox GetMailboxGeneralSettingsInternal(string accountName)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("GetMailboxGeneralSettingsInternal");
|
||||||
|
ExchangeLog.DebugInfo("Account: {0}", accountName);
|
||||||
|
|
||||||
|
ExchangeMailbox info = new ExchangeMailbox();
|
||||||
|
info.AccountName = accountName;
|
||||||
|
Runspace runSpace = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runSpace = OpenRunspace();
|
||||||
|
|
||||||
|
Collection<PSObject> result = GetMailboxObject(runSpace, accountName);
|
||||||
|
PSObject mailbox = result[0];
|
||||||
|
|
||||||
|
string id = GetResultObjectDN(result);
|
||||||
|
string path = AddADPrefix(id);
|
||||||
|
DirectoryEntry entry = GetADObject(path);
|
||||||
|
|
||||||
|
|
||||||
|
//ADAccountOptions userFlags = (ADAccountOptions)entry.Properties["userAccountControl"].Value;
|
||||||
|
//info.Disabled = ((userFlags & ADAccountOptions.UF_ACCOUNTDISABLE) != 0);
|
||||||
|
info.Disabled = (bool)entry.InvokeGet("AccountDisabled");
|
||||||
|
|
||||||
|
info.DisplayName = (string)GetPSObjectProperty(mailbox, "DisplayName");
|
||||||
|
info.HideFromAddressBook = (bool)GetPSObjectProperty(mailbox, "HiddenFromAddressListsEnabled");
|
||||||
|
info.EnableLitigationHold = (bool)GetPSObjectProperty(mailbox, "LitigationHoldEnabled");
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-User");
|
||||||
|
cmd.Parameters.Add("Identity", accountName);
|
||||||
|
result = ExecuteShellCommand(runSpace, cmd);
|
||||||
|
PSObject user = result[0];
|
||||||
|
|
||||||
|
info.FirstName = (string)GetPSObjectProperty(user, "FirstName");
|
||||||
|
info.Initials = (string)GetPSObjectProperty(user, "Initials");
|
||||||
|
info.LastName = (string)GetPSObjectProperty(user, "LastName");
|
||||||
|
|
||||||
|
info.Address = (string)GetPSObjectProperty(user, "StreetAddress");
|
||||||
|
info.City = (string)GetPSObjectProperty(user, "City");
|
||||||
|
info.State = (string)GetPSObjectProperty(user, "StateOrProvince");
|
||||||
|
info.Zip = (string)GetPSObjectProperty(user, "PostalCode");
|
||||||
|
info.Country = CountryInfoToString((CountryInfo)GetPSObjectProperty(user, "CountryOrRegion"));
|
||||||
|
info.JobTitle = (string)GetPSObjectProperty(user, "Title");
|
||||||
|
info.Company = (string)GetPSObjectProperty(user, "Company");
|
||||||
|
info.Department = (string)GetPSObjectProperty(user, "Department");
|
||||||
|
info.Office = (string)GetPSObjectProperty(user, "Office");
|
||||||
|
|
||||||
|
|
||||||
|
info.ManagerAccount = GetManager(entry); //GetExchangeAccount(runSpace, ObjToString(GetPSObjectProperty(user, "Manager")));
|
||||||
|
info.BusinessPhone = (string)GetPSObjectProperty(user, "Phone");
|
||||||
|
info.Fax = (string)GetPSObjectProperty(user, "Fax");
|
||||||
|
info.HomePhone = (string)GetPSObjectProperty(user, "HomePhone");
|
||||||
|
info.MobilePhone = (string)GetPSObjectProperty(user, "MobilePhone");
|
||||||
|
info.Pager = (string)GetPSObjectProperty(user, "Pager");
|
||||||
|
info.WebPage = (string)GetPSObjectProperty(user, "WebPage");
|
||||||
|
info.Notes = (string)GetPSObjectProperty(user, "Notes");
|
||||||
|
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
|
||||||
|
CloseRunspace(runSpace);
|
||||||
|
}
|
||||||
|
ExchangeLog.LogEnd("GetMailboxGeneralSettingsInternal");
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
internal override ExchangeMailbox GetMailboxAdvancedSettingsInternal(string accountName)
|
internal override ExchangeMailbox GetMailboxAdvancedSettingsInternal(string accountName)
|
||||||
{
|
{
|
||||||
ExchangeLog.LogStart("GetMailboxAdvancedSettingsInternal");
|
ExchangeLog.LogStart("GetMailboxAdvancedSettingsInternal");
|
||||||
|
@ -237,11 +305,11 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
if (result.Count > 0)
|
if (result.Count > 0)
|
||||||
{
|
{
|
||||||
PSObject statistics = result[0];
|
PSObject statistics = result[0];
|
||||||
Unlimited<ByteQuantifiedSize> totalItemSize = (Unlimited<ByteQuantifiedSize>)GetPSObjectProperty(statistics, "FolderAndSubfolderSize");
|
ByteQuantifiedSize totalItemSize = (ByteQuantifiedSize)GetPSObjectProperty(statistics, "FolderAndSubfolderSize");
|
||||||
info.LitigationHoldTotalSize = ConvertUnlimitedToBytes(totalItemSize);
|
info.LitigationHoldTotalSize = (totalItemSize == null) ? 0 : ConvertUnlimitedToBytes(totalItemSize);
|
||||||
|
|
||||||
uint? itemCount = (uint?)GetPSObjectProperty(statistics, "ItemsInFolder");
|
Int32 itemCount = (Int32)GetPSObjectProperty(statistics, "ItemsInFolder");
|
||||||
info.LitigationHoldTotalItems = ConvertNullableToInt32(itemCount);
|
info.LitigationHoldTotalItems = (itemCount == null) ? 0 : itemCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -287,7 +355,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
cmd.Parameters.Add("LitigationHoldEnabled", enabledLitigationHold);
|
cmd.Parameters.Add("LitigationHoldEnabled", enabledLitigationHold);
|
||||||
cmd.Parameters.Add("RecoverableItemsQuota", ConvertKBToUnlimited(recoverabelItemsSpace));
|
cmd.Parameters.Add("RecoverableItemsQuota", ConvertKBToUnlimited(recoverabelItemsSpace));
|
||||||
cmd.Parameters.Add("RecoverableItemsWarningQuota", ConvertKBToUnlimited(recoverabelItemsWarning));
|
|
||||||
|
if (recoverabelItemsSpace != -1) cmd.Parameters.Add("RecoverableItemsWarningQuota", ConvertKBToUnlimited(recoverabelItemsWarning));
|
||||||
|
|
||||||
ExecuteShellCommand(runSpace, cmd);
|
ExecuteShellCommand(runSpace, cmd);
|
||||||
|
|
||||||
|
|
|
@ -5073,6 +5073,12 @@
|
||||||
<data name="Quota.Exchange2007.EnablePlansEditing" xml:space="preserve">
|
<data name="Quota.Exchange2007.EnablePlansEditing" xml:space="preserve">
|
||||||
<value>Enable Mailbox Plans Editing</value>
|
<value>Enable Mailbox Plans Editing</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Quota.Exchange2007.AllowLitigationHold" xml:space="preserve">
|
||||||
|
<value>Allow Litigation Hold</value>
|
||||||
|
</data>
|
||||||
|
<data name="Quota.Exchange2007.RecoverableItemsSpace" xml:space="preserve">
|
||||||
|
<value>Recoverable Items Storage, MB</value>
|
||||||
|
</data>
|
||||||
<data name="Error.LYNC_DELETE_DOMAIN" xml:space="preserve">
|
<data name="Error.LYNC_DELETE_DOMAIN" xml:space="preserve">
|
||||||
<value>Error deleting organization domain name. See audit log for more details.</value>
|
<value>Error deleting organization domain name. See audit log for more details.</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -163,9 +163,9 @@
|
||||||
<value>Enable Litigation Hold</value>
|
<value>Enable Litigation Hold</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="locLitigationHoldSpace.Text" xml:space="preserve">
|
<data name="locLitigationHoldSpace.Text" xml:space="preserve">
|
||||||
<value>Litigation Hold Space:</value>
|
<value>Litigation Hold Storage:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="secLitigationHoldSettings.Text" xml:space="preserve">
|
<data name="secLitigationHoldSettings.Text" xml:space="preserve">
|
||||||
<value>Litigation Hold Settings</value>
|
<value>Litigation Hold</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -207,4 +207,7 @@
|
||||||
<data name="Unlimited.Text" xml:space="preserve">
|
<data name="Unlimited.Text" xml:space="preserve">
|
||||||
<value>Unlimited</value>
|
<value>Unlimited</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lnkExchangeLitigationHold.Text" xml:space="preserve">
|
||||||
|
<value>Litigation Hold Storage (Mb):</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -69,11 +69,12 @@
|
||||||
</asp:UpdatePanel>
|
</asp:UpdatePanel>
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
|
|
||||||
<wsp:CollapsiblePanel id="secLitigationHoldSettings" runat="server" TargetControlID="LitigationHoldSettings" meta:resourcekey="secGeneral" Text="General"></wsp:CollapsiblePanel>
|
<wsp:CollapsiblePanel id="secLitigationHoldSettings" runat="server" TargetControlID="LitigationHoldSettings" meta:resourcekey="secLitigationHoldSettings" Text="Litigation Hold"></wsp:CollapsiblePanel>
|
||||||
<asp:Panel ID="LitigationHoldSettings" runat="server" Height="0" style="overflow:hidden;">
|
<asp:Panel ID="LitigationHoldSettings" runat="server" Height="0" style="overflow:hidden;">
|
||||||
<asp:UpdatePanel ID="LitigationHoldUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
<asp:UpdatePanel ID="LitigationHoldUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
<ContentTemplate>
|
<ContentTemplate>
|
||||||
<table>
|
<table>
|
||||||
|
<!--
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -82,6 +83,7 @@
|
||||||
<br />
|
<br />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
-->
|
||||||
<tr>
|
<tr>
|
||||||
<td class="FormLabel150"><asp:Localize ID="locLitigationHoldSpace" runat="server" meta:resourcekey="locLitigationHoldSpace" Text="Litigation Hold Space:"></asp:Localize></td>
|
<td class="FormLabel150"><asp:Localize ID="locLitigationHoldSpace" runat="server" meta:resourcekey="locLitigationHoldSpace" Text="Litigation Hold Space:"></asp:Localize></td>
|
||||||
<td>
|
<td>
|
||||||
|
|
|
@ -102,7 +102,7 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
|
|
||||||
secCalendarSettings.Visible = ((account.AccountType == ExchangeAccountType.Equipment) | (account.AccountType == ExchangeAccountType.Room));
|
secCalendarSettings.Visible = ((account.AccountType == ExchangeAccountType.Equipment) | (account.AccountType == ExchangeAccountType.Room));
|
||||||
|
|
||||||
chkEnableLitigationHold.Checked = mailbox.EnableLitigationHold;
|
secLitigationHoldSettings.Visible = mailbox.EnableLitigationHold;
|
||||||
|
|
||||||
litigationHoldSpace.QuotaUsedValue = Convert.ToInt32(stats.LitigationHoldTotalSize / 1024 / 1024);
|
litigationHoldSpace.QuotaUsedValue = Convert.ToInt32(stats.LitigationHoldTotalSize / 1024 / 1024);
|
||||||
litigationHoldSpace.QuotaValue = (stats.LitigationHoldMaxSize == -1) ? -1 : (int)Math.Round((double)(stats.LitigationHoldMaxSize / 1024 / 1024));
|
litigationHoldSpace.QuotaValue = (stats.LitigationHoldMaxSize == -1) ? -1 : (int)Math.Round((double)(stats.LitigationHoldMaxSize / 1024 / 1024));
|
||||||
|
|
|
@ -1,30 +1,3 @@
|
||||||
// Copyright (c) 2012, Outercurve Foundation.
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
// are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// - Redistributions of source code must retain the above copyright notice, this
|
|
||||||
// list of conditions and the following disclaimer.
|
|
||||||
//
|
|
||||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
//
|
|
||||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
|
||||||
// contributors may be used to endorse or promote products derived from this
|
|
||||||
// software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
|
|
@ -118,6 +118,15 @@
|
||||||
<wsp:QuotaViewer ID="exchangeStorageStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
<wsp:QuotaViewer ID="exchangeStorageStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr class="OrgStatsRow" id="rowExchangeLitigationHold" runat="server">
|
||||||
|
<td align="right" nowrap>
|
||||||
|
<asp:HyperLink ID="lnkExchangeLitigationHold" runat="server" meta:resourcekey="lnkExchangeLitigationHold"></asp:HyperLink>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<wsp:QuotaViewer ID="exchangeLitigationHoldStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
|
|
||||||
<asp:Panel runat="server" ID="besStatsPanel">
|
<asp:Panel runat="server" ID="besStatsPanel">
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BindExchangeStats(bool hideItems)
|
private void BindExchangeStats(bool hideItems, PackageContext cntx)
|
||||||
{
|
{
|
||||||
OrganizationStatistics exchangeOrgStats = ES.Services.ExchangeServer.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID);
|
OrganizationStatistics exchangeOrgStats = ES.Services.ExchangeServer.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID);
|
||||||
OrganizationStatistics exchangeTenantStats = ES.Services.ExchangeServer.GetOrganizationStatistics(PanelRequest.ItemID);
|
OrganizationStatistics exchangeTenantStats = ES.Services.ExchangeServer.GetOrganizationStatistics(PanelRequest.ItemID);
|
||||||
|
@ -63,6 +63,10 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
lnkFolders.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "public_folders",
|
lnkFolders.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "public_folders",
|
||||||
"SpaceID=" + PanelSecurity.PackageId.ToString());
|
"SpaceID=" + PanelSecurity.PackageId.ToString());
|
||||||
|
|
||||||
|
lnkExchangeLitigationHold.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "storage_usage",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId.ToString());
|
||||||
|
|
||||||
|
|
||||||
mailboxesStats.QuotaUsedValue = exchangeOrgStats.CreatedMailboxes;
|
mailboxesStats.QuotaUsedValue = exchangeOrgStats.CreatedMailboxes;
|
||||||
mailboxesStats.QuotaValue = exchangeOrgStats.AllocatedMailboxes;
|
mailboxesStats.QuotaValue = exchangeOrgStats.AllocatedMailboxes;
|
||||||
if (exchangeOrgStats.AllocatedMailboxes != -1) mailboxesStats.QuotaAvailable = exchangeTenantStats.AllocatedMailboxes - exchangeTenantStats.CreatedMailboxes;
|
if (exchangeOrgStats.AllocatedMailboxes != -1) mailboxesStats.QuotaAvailable = exchangeTenantStats.AllocatedMailboxes - exchangeTenantStats.CreatedMailboxes;
|
||||||
|
@ -103,6 +107,19 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
foldersStats.QuotaValue = exchangeOrgStats.AllocatedPublicFolders;
|
foldersStats.QuotaValue = exchangeOrgStats.AllocatedPublicFolders;
|
||||||
if (exchangeOrgStats.AllocatedPublicFolders != -1) foldersStats.QuotaAvailable = exchangeTenantStats.AllocatedPublicFolders - exchangeTenantStats.CreatedPublicFolders;
|
if (exchangeOrgStats.AllocatedPublicFolders != -1) foldersStats.QuotaAvailable = exchangeTenantStats.AllocatedPublicFolders - exchangeTenantStats.CreatedPublicFolders;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((!hideItems) && (Utils.CheckQouta(Quotas.EXCHANGE2007_ALLOWLITIGATIONHOLD, cntx)))
|
||||||
|
{
|
||||||
|
exchangeLitigationHoldStats.QuotaUsedValue = exchangeOrgStats.UsedLitigationHoldSpace;
|
||||||
|
exchangeLitigationHoldStats.QuotaValue = exchangeOrgStats.AllocatedLitigationHoldSpace;
|
||||||
|
if (exchangeOrgStats.AllocatedLitigationHoldSpace != -1)
|
||||||
|
{
|
||||||
|
exchangeLitigationHoldStats.QuotaAvailable = exchangeTenantStats.AllocatedLitigationHoldSpace - exchangeTenantStats.UsedLitigationHoldSpace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.rowExchangeLitigationHold.Style.Add("display", "none");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BindOrgStats()
|
private void BindOrgStats()
|
||||||
|
@ -160,7 +177,7 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.Exchange))
|
if (cntx.Groups.ContainsKey(ResourceGroups.Exchange))
|
||||||
{
|
{
|
||||||
exchangeStatsPanel.Visible = true;
|
exchangeStatsPanel.Visible = true;
|
||||||
BindExchangeStats(hideItems);
|
BindExchangeStats(hideItems, cntx);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
exchangeStatsPanel.Visible = false;
|
exchangeStatsPanel.Visible = false;
|
||||||
|
|
|
@ -1,31 +1,3 @@
|
||||||
// Copyright (c) 2012, Outercurve Foundation.
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
// are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// - Redistributions of source code must retain the above copyright notice, this
|
|
||||||
// list of conditions and the following disclaimer.
|
|
||||||
//
|
|
||||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
//
|
|
||||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
|
||||||
// contributors may be used to endorse or promote products derived from this
|
|
||||||
// software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
@ -328,6 +300,33 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::WebsitePanel.Portal.QuotaViewer exchangeStorageStats;
|
protected global::WebsitePanel.Portal.QuotaViewer exchangeStorageStats;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// rowExchangeLitigationHold 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 rowExchangeLitigationHold;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lnkExchangeLitigationHold control.
|
||||||
|
/// </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 lnkExchangeLitigationHold;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// exchangeLitigationHoldStats control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.QuotaViewer exchangeLitigationHoldStats;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// besStatsPanel control.
|
/// besStatsPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -320,6 +320,7 @@
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ProviderControls\CRM2011_Settings.ascx.cs">
|
<Compile Include="ProviderControls\CRM2011_Settings.ascx.cs">
|
||||||
<DependentUpon>CRM2011_Settings.ascx</DependentUpon>
|
<DependentUpon>CRM2011_Settings.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ProviderControls\CRM2011_Settings.ascx.designer.cs">
|
<Compile Include="ProviderControls\CRM2011_Settings.ascx.designer.cs">
|
||||||
<DependentUpon>CRM2011_Settings.ascx</DependentUpon>
|
<DependentUpon>CRM2011_Settings.ascx</DependentUpon>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue