This commit is contained in:
Virtuworks 2014-01-05 17:57:43 -05:00
commit 5a2d487e55
41 changed files with 891 additions and 426 deletions

View file

@ -150,10 +150,22 @@
<data name="locFolderSize" xml:space="preserve">
<value>Folder Limit Size (Gb):</value>
</data>
<data name="valNumericFolderSize" xml:space="preserve">
<data name="rangeFolderSize" xml:space="preserve">
<value>*</value>
</data>
<data name="valNumericFolderSize.ErrorMessage" xml:space="preserve">
<data name="valRequireFolderSize.ErrorMessage" xml:space="preserve">
<value>Enter Folder Size</value>
</data>
<data name="locQuotaType" xml:space="preserve">
<value>Quota Type:</value>
</data>
<data name="valRequireFolderSize" xml:space="preserve">
<value>*</value>
</data>
<data name="rbtnQuotaHard" xml:space="preserve">
<value>Hard</value>
</data>
<data name="rbtnQuotaSoft" xml:space="preserve">
<value>Soft</value>
</data>
</root>

View file

@ -145,7 +145,7 @@
<value>Folder Name</value>
</data>
<data name="gvFolderSize.Header" xml:space="preserve">
<value>Folder Size</value>
<value>Used Space</value>
</data>
<data name="locTitle" xml:space="preserve">
<value>Folders</value>
@ -154,6 +154,9 @@
<value>Url</value>
</data>
<data name="locQuotaSpace.Text" xml:space="preserve">
<value>Total Space Allocated (Mb):</value>
<value>Total Space Allocated (Gb):</value>
</data>
<data name="gvFolderQuota.Header" xml:space="preserve">
<value>Allocated Space</value>
</data>
</root>

View file

@ -214,7 +214,7 @@
<value>Folders:</value>
</data>
<data name="lnkEnterpriseStorageSpace.Text" xml:space="preserve">
<value>Used Diskspace (Mb):</value>
<value>Used Diskspace (Gb):</value>
</data>
<data name="locEnterpriseStorage.Text" xml:space="preserve">
<value>Enterprise Storage</value>

View file

@ -73,7 +73,7 @@ namespace WebsitePanel.Portal.ExchangeServer
if (!result.IsSuccess && result.ErrorCodes.Count > 0)
{
messageBox.ShowMessage(result, "ENTERPRISE_STORAGE_FOLDER", "EnterpriseStorage");
messageBox.ShowMessage(result, "ENTERPRISE_STORAGE_CREATE_FOLDER", "Enterprise Storage");
return;
}

View file

@ -39,14 +39,22 @@
<td class="FormLabel150"><asp:Localize ID="locFolderSize" runat="server" meta:resourcekey="locFolderSize" Text="Folder Limit Size (Gb):"></asp:Localize></td>
<td>
<asp:TextBox ID="txtFolderSize" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
<asp:CompareValidator ID="valNumericFolderSize" runat="server" meta:resourcekey="valNumericFolderSize" ControlToValidate="txtFolderSize"
Type="Integer" Operator="DataTypeCheck" ValidationGroup="EditFolder" Display="Dynamic" Text="*" SetFocusOnError="True"
ErrorMessage="Enter Folder Size" />
<br />
<br />
<asp:RequiredFieldValidator ID="valRequireFolderSize" runat="server" meta:resourcekey="valRequireFolderSize" ControlToValidate="txtFolderSize"
ErrorMessage="Enter Folder Size" ValidationGroup="EditFolder" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="rangeFolderSize" runat="server" ControlToValidate="txtFolderSize" MaximumValue="99999" MinimumValue="1"
ValidationGroup="EditFolder" Display="Dynamic" Text="*" SetFocusOnError="True"
ErrorMessage="The quota youve entered exceeds the available quota for tenant" />
</td>
</tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locQuotaType" runat="server" meta:resourcekey="locQuotaType" Text="Quota Type:"></asp:Localize></td>
<td class="FormRBtnL">
<asp:RadioButton ID="rbtnQuotaSoft" runat="server" meta:resourcekey="rbtnQuotaSoft" Text="Soft" GroupName="QuotaType" Checked="true" />
<asp:RadioButton ID="rbtnQuotaHard" runat="server" meta:resourcekey="rbtnQuotaHard" Text="Hard" GroupName="QuotaType" />
<br />
<br />
</td>
</tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locFolderUrl" runat="server" meta:resourcekey="locFolderUrl" Text="Folder Url:"></asp:Localize></td>
<td><asp:Label runat="server" ID="lblFolderUrl" /></td>

View file

@ -45,12 +45,6 @@ namespace WebsitePanel.Portal.ExchangeServer
{
public partial class EnterpriseStorageFolderGeneralSettings : WebsitePanelModuleBase
{
#region Constansts
const int OneMb = 1024;
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
@ -63,6 +57,16 @@ namespace WebsitePanel.Portal.ExchangeServer
BindSettings();
}
OrganizationStatistics organizationStats = ES.Services.Organizations.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID);
if (organizationStats.AllocatedEnterpriseStorageSpace != -1)
{
OrganizationStatistics tenantStats = ES.Services.Organizations.GetOrganizationStatistics(PanelRequest.ItemID);
rangeFolderSize.MaximumValue = (tenantStats.AllocatedEnterpriseStorageSpace - tenantStats.UsedEnterpriseStorageSpace + Utils.ParseInt(txtFolderSize.Text, 0)).ToString();
rangeFolderSize.ErrorMessage = string.Format("The quota youve entered exceeds the available quota for tenant ({0}Gb)", rangeFolderSize.MaximumValue);
}
}
private void BindSettings()
@ -70,7 +74,6 @@ namespace WebsitePanel.Portal.ExchangeServer
try
{
// get settings
Organization org = ES.Services.Organizations.GetOrganization(PanelRequest.ItemID);
SystemFile folder = ES.Services.EnterpriseStorage.GetEnterpriseFolder(
@ -82,9 +85,19 @@ namespace WebsitePanel.Portal.ExchangeServer
txtFolderName.Text = folder.Name;
lblFolderUrl.Text = folder.Url;
if (folder.FRSMQuotaMB != -1)
if (folder.FRSMQuotaGB != -1)
{
txtFolderSize.Text = ((int)(folder.FRSMQuotaMB / OneMb)).ToString();
txtFolderSize.Text = folder.FRSMQuotaGB.ToString();
}
switch (folder.FsrmQuotaType)
{
case QuotaType.Hard:
rbtnQuotaHard.Checked = true;
break;
case QuotaType.Soft:
rbtnQuotaSoft.Checked = true;
break;
}
var esPermissions = ES.Services.EnterpriseStorage.GetEnterpriseFolderPermissions(PanelRequest.ItemID,folder.Name);
@ -92,7 +105,6 @@ namespace WebsitePanel.Portal.ExchangeServer
chkDirectoryBrowsing.Checked = ES.Services.EnterpriseStorage.GetDirectoryBrowseEnabled(PanelRequest.ItemID, folder.Url);
permissions.SetPermissions(esPermissions);
}
catch (Exception ex)
{
@ -131,10 +143,22 @@ namespace WebsitePanel.Portal.ExchangeServer
}
folder = ES.Services.EnterpriseStorage.RenameEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID, txtFolderName.Text);
if (folder == null)
{
messageBox.ShowErrorMessage("FOLDER_ALREADY_EXIST");
return;
}
}
ES.Services.EnterpriseStorage.SetEnterpriseFolderSettings(PanelRequest.ItemID, folder, permissions.GetPemissions(),
chkDirectoryBrowsing.Checked, txtFolderSize.Text.Length == 0 ? -1 : int.Parse(txtFolderSize.Text) * OneMb);
ES.Services.EnterpriseStorage.SetEnterpriseFolderSettings(
PanelRequest.ItemID,
folder,
permissions.GetPemissions(),
chkDirectoryBrowsing.Checked,
int.Parse(txtFolderSize.Text),
rbtnQuotaSoft.Checked ? QuotaType.Soft : QuotaType.Hard);
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folders",

View file

@ -149,13 +149,49 @@ namespace WebsitePanel.Portal.ExchangeServer {
protected global::System.Web.UI.WebControls.TextBox txtFolderSize;
/// <summary>
/// valNumericFolderSize control.
/// valRequireFolderSize control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CompareValidator valNumericFolderSize;
protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireFolderSize;
/// <summary>
/// rangeFolderSize control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RangeValidator rangeFolderSize;
/// <summary>
/// locQuotaType control.
/// </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 locQuotaType;
/// <summary>
/// rbtnQuotaSoft control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RadioButton rbtnQuotaSoft;
/// <summary>
/// rbtnQuotaHard control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RadioButton rbtnQuotaHard;
/// <summary>
/// locFolderUrl control.

View file

@ -60,6 +60,12 @@
</asp:hyperlink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="gvFolderQuota" SortExpression="FRSMQuotaGB">
<ItemStyle Width="20%"></ItemStyle>
<ItemTemplate>
<asp:Literal id="litFolderQuota" runat="server" Text='<%# Eval("FRSMQuotaGB").ToString() + " Gb" %>'></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="gvFolderSize" SortExpression="Size">
<ItemStyle Width="20%"></ItemStyle>
<ItemTemplate>
@ -99,9 +105,9 @@
<br />
<br />
<asp:Localize ID="locQuotaSpace" runat="server" meta:resourcekey="locQuotaSpace" Text="Total Space Allocated (Mb):"></asp:Localize>
<asp:Localize ID="locQuotaSpace" runat="server" meta:resourcekey="locQuotaSpace" Text="Total Space Allocated (Gb):"></asp:Localize>
&nbsp;&nbsp;&nbsp;
<wsp:QuotaViewer ID="spaceQuota" runat="server" QuotaTypeId="2" />
<wsp:QuotaViewer ID="spaceQuota" runat="server" QuotaTypeId="3" />
</div>
</div>
</div>

View file

@ -63,27 +63,26 @@ namespace WebsitePanel.Portal.ExchangeServer
protected void BindEnterpriseStorageStats()
{
btnAddFolder.Enabled = true;
OrganizationStatistics organizationStats = ES.Services.Organizations.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID);
OrganizationStatistics tenantStats = ES.Services.Organizations.GetOrganizationStatistics(PanelRequest.ItemID);
foldersQuota.QuotaUsedValue = organizationStats.CreatedEnterpriseStorageFolders;
foldersQuota.QuotaValue = organizationStats.AllocatedEnterpriseStorageFolders;
if (organizationStats.AllocatedEnterpriseStorageFolders != -1)
{
int folderAvailable = foldersQuota.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageFolders - tenantStats.CreatedEnterpriseStorageFolders;
int spaceAvailable = tenantStats.AllocatedEnterpriseStorageSpace - tenantStats.UsedEnterpriseStorageSpace;
if (folderAvailable <= 0)
if (folderAvailable <= 0 || spaceAvailable <= 0)
{
btnAddFolder.Enabled = false;
}
}
spaceQuota.QuotaUsedValue = organizationStats.UsedEnterpriseStorageSpace;
spaceQuota.QuotaValue = organizationStats.AllocatedEnterpriseStorageSpace;
spaceQuota.QuotaValue = organizationStats.UsedEnterpriseStorageSpace;
}
protected void btnAddFolder_Click(object sender, EventArgs e)
@ -109,6 +108,8 @@ namespace WebsitePanel.Portal.ExchangeServer
}
gvFolders.DataBind();
BindEnterpriseStorageStats();
}
catch (Exception ex)
{

View file

@ -298,16 +298,14 @@ namespace WebsitePanel.Portal.ExchangeServer
{
enterpriseStorageSpaceStats.QuotaValue = stats.AllocatedEnterpriseStorageSpace;
enterpriseStorageSpaceStats.QuotaUsedValue = stats.UsedEnterpriseStorageSpace;
if (stats.AllocatedEnterpriseStorageSpace != -1) enterpriseStorageSpaceStats.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageSpace - tenantStats.UsedEnterpriseStorageSpace;
lnkBESUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "enterprisestorage_folders",
"SpaceID=" + PanelSecurity.PackageId.ToString());
enterpriseStorageFoldersStats.QuotaValue = stats.AllocatedEnterpriseStorageFolders;
enterpriseStorageFoldersStats.QuotaUsedValue = stats.CreatedEnterpriseStorageFolders;
if (stats.AllocatedEnterpriseStorageFolders != -1)
{
enterpriseStorageFoldersStats.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageFolders - tenantStats.CreatedEnterpriseStorageFolders;
}
if (stats.AllocatedEnterpriseStorageFolders != -1) enterpriseStorageFoldersStats.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageFolders - tenantStats.CreatedEnterpriseStorageFolders;
lnkBESUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "enterprisestorage_folders",
"SpaceID=" + PanelSecurity.PackageId.ToString());

View file

@ -129,11 +129,17 @@
<data name="btnDelete.Text" xml:space="preserve">
<value>Delete</value>
</data>
<data name="btnSetReadOnly.Text" xml:space="preserve">
<value>Set Read-Only</value>
<data name="btnSet.Text" xml:space="preserve">
<value>Set Permissions</value>
</data>
<data name="btnSetReadWrite.Text" xml:space="preserve">
<value>Set Read-Write</value>
<data name="chkRead" xml:space="preserve">
<value>Read</value>
</data>
<data name="chkSource" xml:space="preserve">
<value>Source</value>
</data>
<data name="chkWrite" xml:space="preserve">
<value>Write</value>
</data>
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
<value>Display Name</value>

View file

@ -38,8 +38,11 @@
</asp:GridView>
<br />
<div class="FormButtonsBarClean">
<asp:Button ID="btnSetReadOnly" runat="server" Text="Set Read-Only" CssClass="Button1" OnClick="btn_UpdateAccess" CommandArgument="Read-Only" meta:resourcekey="btnSetReadOnly" />
<asp:Button ID="btnSetReadWrite" runat="server" Text="Set Read-Write" CssClass="Button1" OnClick="btn_UpdateAccess" CommandArgument="Read-Write" meta:resourcekey="btnSetReadWrite"/>
<asp:CheckBox ID="chkRead" runat="server" Text="Read" meta:resourcekey="chkRead" />
<asp:CheckBox ID="chkWrite" runat="server" Text="Write" meta:resourcekey="chkWrite" />
<asp:CheckBox ID="chkSource" runat="server" Text="Source" meta:resourcekey="chkSource" />
<br />
<asp:Button ID="btnSet" runat="server" Text="Set Permissions" CssClass="Button1" OnClick="btn_UpdateAccess" meta:resourcekey="btnSet" />
</div>

View file

@ -103,7 +103,7 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
{
Account = account.AccountName,
DisplayName = account.DisplayName,
Access = "Read-Only",
Access = "Read",
});
}
@ -281,9 +281,34 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
if (chkSelect.Checked)
{
chkSelect.Checked = false;
litAccess.Text = ((Button)sender).CommandArgument;
litAccess.Text = "";
if (chkRead.Checked)
{
litAccess.Text = "Read,";
}
if (chkWrite.Checked)
{
litAccess.Text += "Write,";
}
if (chkSource.Checked)
{
litAccess.Text += "Source";
}
if (litAccess.Text[litAccess.Text.Length - 1] == ',')
{
litAccess.Text = litAccess.Text.Remove(litAccess.Text.Length - 1);
}
}
}
chkRead.Checked = false;
chkWrite.Checked = false;
chkSource.Checked = false;
}
}
}

View file

@ -77,22 +77,40 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls {
protected global::System.Web.UI.WebControls.GridView gvPermissions;
/// <summary>
/// btnSetReadOnly control.
/// chkRead control.
/// </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 btnSetReadOnly;
protected global::System.Web.UI.WebControls.CheckBox chkRead;
/// <summary>
/// btnSetReadWrite control.
/// chkWrite control.
/// </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 btnSetReadWrite;
protected global::System.Web.UI.WebControls.CheckBox chkWrite;
/// <summary>
/// chkSource control.
/// </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 chkSource;
/// <summary>
/// btnSet control.
/// </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 btnSet;
/// <summary>
/// AddAccountsPanel control.