This commit is contained in:
vfedosevich 2015-02-26 23:19:19 -08:00
commit e9c7b0868b
580 changed files with 247313 additions and 5211 deletions

View file

@ -402,6 +402,9 @@
<data name="Error.MAIL_UPDATE_ACCOUNT" xml:space="preserve">
<value>Error updating mail account</value>
</data>
<data name="Error.MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY" xml:space="preserve">
<value>Password doesn't meet complexity. Perhaps the password length is less 5 characters.</value>
</data>
<data name="Error.MAIL_UPDATE_DOMAIN" xml:space="preserve">
<value>Error updating mail domain</value>
</data>
@ -3136,6 +3139,15 @@
<data name="Success.ORGANIZATION_UPDATE_USER_SETTINGS" xml:space="preserve">
<value>User general settings have been successfully updated.</value>
</data>
<data name="Success.ACTIONS_MESSAGE" xml:space="preserve">
<value>Action has been successfully performed.</value>
</data>
<data name="Error.ACTIONS_MESSAGE" xml:space="preserve">
<value>Failed to perform action.</value>
</data>
<data name="Warning.ACTIONS_MESSAGE" xml:space="preserve">
<value>Please select the items for which you want to perform action.</value>
</data>
<data name="Success.ORGANIZATION_SET_USER_PASSWORD" xml:space="preserve">
<value>User password has been successfully updated.</value>
</data>
@ -5335,6 +5347,9 @@
<data name="Success.EXCHANGE_UPDATEPLANS" xml:space="preserve">
<value>Mailbox plan updated</value>
</data>
<data name="Success.EXCHANGE_SET_DEFAULT_MAILBOXPLAN" xml:space="preserve">
<value>Succesfully set default mailbox plan.</value>
</data>
<data name="Error.LYNC_UPDATEPLANS" xml:space="preserve">
<value>Lync plan update failed</value>
</data>

View file

@ -32,11 +32,13 @@ Default skin template. The following skins are provided as examples only.
<asp:ImageButton SkinID="StopMedium" runat="server" ImageUrl="Images/stop_24.png" ImageAlign="AbsMiddle" Width="24" Height="24"/>
<asp:ImageButton SkinID="ContinueMedium" runat="server" ImageUrl="Images/play_24.png" ImageAlign="AbsMiddle" Width="24" Height="24"/>
<asp:ImageButton SkinID="RecycleMedium" runat="server" ImageUrl="Images/restart_24.png" ImageAlign="AbsMiddle" Width="24" Height="24"/>
<asp:ImageButton SkinID="ApplyMedium" runat="server" ImageUrl="Images/apply_24.png" ImageAlign="AbsMiddle" Width="24" Height="24"/>
<asp:ImageButton SkinID="PauseSmall" runat="server" ImageUrl="Images/pause_16.png" ImageAlign="AbsMiddle" Width="16" Height="16"/>
<asp:ImageButton SkinID="StartSmall" runat="server" ImageUrl="Images/play_16.png" ImageAlign="AbsMiddle" Width="16" Height="16"/>
<asp:ImageButton SkinID="StopSmall" runat="server" ImageUrl="Images/stop_16.png" ImageAlign="AbsMiddle" Width="16" Height="16"/>
<asp:ImageButton SkinID="ContinueSmall" runat="server" ImageUrl="Images/play_16.png" ImageAlign="AbsMiddle" Width="16" Height="16"/>
<asp:ImageButton SkinID="ApplySmall" runat="server" ImageUrl="Images/apply_16.png" ImageAlign="AbsMiddle" Width="16" Height="16"/>
<asp:ImageButton SkinID="VpsDelete" runat="server" ImageUrl="Images/VPS/delete.png" ImageAlign="AbsMiddle" Width="16" Height="16"/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -93,6 +93,8 @@ select:disabled {border:1px solid #ccc; background:#f5f5f5; color:#ccc; cursor:n
textarea {font-family:inherit; font-size:inherit; color:inherit; background:#fff; border: 1px solid #ccc; padding:3px 0 3px 3px; margin:0; resize:none;}
/* checkbox */
input[type=checkbox], input[type=radio] {margin:8px 4px 8px; vertical-align:-1px;}
.HeaderCheckbox {margin-left:5px;}
.GridCheckbox input[type=checkbox] {margin-top:0px;}
input[type=image] {margin-right:4px;}
.LoginLabel {display:block; line-height:34px; width:auto !important; padding-right:8px;}
.LoginContainer .SubHead {padding-right:8px; color:#333;}
@ -177,9 +179,12 @@ h2.ProductTitle.Huge {margin:0;}
.FormButtonsBar .Left {float: left;}
.FormButtonsBar .Right {float:right;}
.FormButtonsBar Button2.Right {text-align: right; margin-bottom: 3px;}
.FormButtonsBarClean {clear: both; padding-bottom: 4px;}
.FormButtonsBarClean {clear: both; padding-bottom: 4px; height: 26px;}
.FormButtonsBarCleanLeft {float: left;}
.FormButtonsBarCleanRight {text-align: right;}
.FormButtonsBarCleanMiddle {float: right;}
.FormButtonsBarCleanSeparator {padding-right: 30px;}
.FormButtonsBarCleanSeparatorSmall {padding-right: 3px;}
.GridFooter .Left {float: left;}
.GridFooter .Right {text-align: right;}
.FormRow {padding-top: 4px; padding-bottom: 4px;}
@ -190,6 +195,7 @@ SPAN.Checkbox.Bold {font-weight: bold;}
.Checkbox INPUT {vertical-align: middle;}
.FormFooter {padding:10px 0;}
.FormFooterClean {font-size: 9pt; margin-top: 10px; padding: 10px 10px 0px 0px; border-top: solid 1px #DFDFDF;}
.FormFooterMiddle {padding:10px;}
.FormRBtnL {padding-top: 10px;}
UL.VerticalButtons {margin: 0px; list-style: none; padding-left: 20px; float: right; width: 150px;}
UL.VerticalButtons LI {padding-top: 2px; padding-bottom: 2px;}

View file

@ -249,4 +249,7 @@
<data name="secRetentionPolicy.Text" xml:space="preserve">
<value>Retention policy</value>
</data>
<data name="lblDefaultMailboxPlan.Text" xml:space="preserve">
<value>Default</value>
</data>
</root>

View file

@ -328,21 +328,21 @@ namespace WebsitePanel.Portal
return idn.GetAscii(domainName);
}
/// <summary>
/// Adds the specified parameter to the Query String.
/// </summary>
/// <param name="url"></param>
/// <param name="paramName">Name of the parameter to add.</param>
/// <param name="paramValue">Value for the parameter to add.</param>
/// <returns>Url with added parameter.</returns>
public static Uri AddParameter(this Uri url, string paramName, string paramValue)
public static List<T> GetCheckboxValuesFromGrid<T>(GridView gridView, string checkboxName)
{
var uriBuilder = new UriBuilder(url);
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
query[paramName] = paramValue;
uriBuilder.Query = query.ToString();
// Get checked users
var userIds = new List<T>();
return new Uri(uriBuilder.ToString());
foreach (GridViewRow gvr in gridView.Rows)
{
if (((CheckBox)gvr.FindControl(checkboxName)).Checked)
{
string userId = gridView.DataKeys[gvr.DataItemIndex].Value.ToString();
userIds.Add((T)Convert.ChangeType(userId, typeof(T)));
}
}
return userIds;
}
}
}

View file

@ -66,6 +66,24 @@ namespace WebsitePanel.Portal.Code.Helpers
|| PackagesHelper.CheckGroupQuotaEnabled(packageId, t.ResourceGroup, t.Quota)
select t;
}
/// <summary>
/// Adds the specified parameter to the Query String.
/// </summary>
/// <param name="url"></param>
/// <param name="paramName">Name of the parameter to add.</param>
/// <param name="paramValue">Value for the parameter to add.</param>
/// <returns>Url with added parameter.</returns>
public static Uri AddParameter(this Uri url, string paramName, string paramValue)
{
var uriBuilder = new UriBuilder(url);
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
query[paramName] = paramValue;
uriBuilder.Query = query.ToString();
return new Uri(uriBuilder.ToString());
}
}
public class Tab

View file

@ -3,10 +3,18 @@
<%@ Register Src="UserControls/ServerDetails.ascx" TagName="ServerDetails" TagPrefix="wsp" %>
<%@ Register Src="UserControls/UserDetails.ascx" TagName="UserDetails" TagPrefix="wsp" %>
<%@ Register Src="UserControls/SearchBox.ascx" TagName="SearchBox" TagPrefix="wsp" %>
<%@ Register Src="UserControls/DomainActions.ascx" TagName="DomainActions" TagPrefix="wsp" %>
<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
<script src="JavaScript/jquery-1.4.4.min.js" type="text/javascript"></script>
<script language="javascript">
function SelectAllCheckboxes(box) {
$(".NormalGridView tbody :checkbox").attr("checked", $(box).attr("checked"));
}
</script>
<div class="FormButtonsBar">
<div class="Left">
@ -16,14 +24,32 @@
</div>
<div class="Right">
<wsp:SearchBox ID="searchBox" runat="server" />
<table>
<tr>
<td>
<wsp:DomainActions ID="websiteActions" runat="server" GridViewID="gvDomains" CheckboxesName="chkSelectedIds" />
</td>
<td class="FormButtonsBarCleanSeparator"></td>
<td>
<wsp:SearchBox ID="searchBox" runat="server" />
</td>
</tr>
</table>
</div>
</div>
<asp:GridView ID="gvDomains" runat="server" AutoGenerateColumns="False" Width="100%" AllowSorting="True" DataSourceID="odsDomainsPaged"
EmptyDataText="gvDomains"
EmptyDataText="gvDomains" DataKeyNames="DomainID"
CssSelectorClass="NormalGridView" AllowPaging="True" OnRowCommand="gvDomains_RowCommand">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="selectAll" Runat="server" onclick="javascript:SelectAllCheckboxes(this);" CssClass="HeaderCheckbox"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkSelectedIds" CssClass="GridCheckbox"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField SortExpression="DomainName" HeaderText="gvDomainsName">
<ItemStyle Width="45%" Wrap="False"></ItemStyle>
<ItemTemplate>

View file

@ -55,10 +55,10 @@ namespace WebsitePanel.Portal
// visibility
chkRecursive.Visible = (PanelSecurity.SelectedUser.Role != UserRole.User);
gvDomains.Columns[4].Visible = gvDomains.Columns[5].Visible =
gvDomains.Columns[5].Visible = gvDomains.Columns[6].Visible =
(PanelSecurity.SelectedUser.Role != UserRole.User) && chkRecursive.Checked;
gvDomains.Columns[6].Visible = (PanelSecurity.SelectedUser.Role == UserRole.Administrator);
gvDomains.Columns[7].Visible = (PanelSecurity.EffectiveUser.Role == UserRole.Administrator);
gvDomains.Columns[7].Visible = (PanelSecurity.SelectedUser.Role == UserRole.Administrator);
gvDomains.Columns[8].Visible = (PanelSecurity.EffectiveUser.Role == UserRole.Administrator);
if (!IsPostBack)
{

View file

@ -1,31 +1,3 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -40,6 +12,15 @@ namespace WebsitePanel.Portal {
public partial class Domains {
/// <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>
/// btnAddDomain control.
/// </summary>
@ -58,6 +39,15 @@ namespace WebsitePanel.Portal {
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkRecursive;
/// <summary>
/// websiteActions control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.DomainActions websiteActions;
/// <summary>
/// searchBox control.
/// </summary>

View file

@ -189,4 +189,7 @@
<data name="SharedMailbox.Text" xml:space="preserve">
<value>Shared Mailbox</value>
</data>
<data name="chkUserMustChangePassword.Text" xml:space="preserve">
<value>User must change password at next logon</value>
</data>
</root>

View file

@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreateMailbox.Text" xml:space="preserve">
<value>Create New Mailbox</value>
<value>New Mailbox</value>
</data>
<data name="cmdDelete.OnClientClick" xml:space="preserve">
<value>if(!confirm('Are you sure you want to delete this mailbox?')) return false; else ShowProgressDialog('Deleting mailbox...');</value>

View file

@ -159,4 +159,7 @@
<data name="valRequireSubscriberNumber.Text" xml:space="preserve">
<value>*</value>
</data>
<data name="chkUserMustChangePassword.Text" xml:space="preserve">
<value>User must change password at next logon</value>
</data>
</root>

View file

@ -252,4 +252,7 @@
<data name="secServiceLevels.Text" xml:space="preserve">
<value>Service Level Information</value>
</data>
<data name="chkUserMustChangePassword.Text" xml:space="preserve">
<value>User must change password at next logon</value>
</data>
</root>

View file

@ -110,6 +110,7 @@
<td>
<wsp:PasswordControl id="password" runat="server" ValidationGroup="CreateMailbox" AllowGeneratePassword="true">
</wsp:PasswordControl>
<asp:CheckBox ID="chkUserMustChangePassword" runat="server" meta:resourcekey="chkUserMustChangePassword" Text="User must change password at next login" />
</td>
</tr>
<tr>

View file

@ -236,7 +236,8 @@ namespace WebsitePanel.Portal.ExchangeServer
user.ExternalEmail,
txtSubscriberNumber.Text,
0,
false);
false,
chkUserMustChangePassword.Checked);
}

View file

@ -1,31 +1,3 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -274,6 +246,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
protected global::WebsitePanel.Portal.PasswordControl password;
/// <summary>
/// chkUserMustChangePassword control.
/// </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 chkUserMustChangePassword;
/// <summary>
/// locMailboxType control.
/// </summary>

View file

@ -2,6 +2,15 @@
<%@ 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" %>
<%@ Register Src="../UserControls/UserActions.ascx" TagName="UserActions" TagPrefix="wsp" %>
<script src="JavaScript/jquery-1.4.4.min.js" type="text/javascript"></script>
<script language="javascript">
function SelectAllCheckboxes(box) {
$(".NormalGridView tbody :checkbox").attr("checked", $(box).attr("checked"));
}
</script>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
@ -21,40 +30,59 @@
<div class="FormButtonsBarClean">
<div class="FormButtonsBarCleanLeft">
<asp:Button ID="btnCreateMailbox" runat="server" meta:resourcekey="btnCreateMailbox"
Text="Create New Mailbox" CssClass="Button1" OnClick="btnCreateMailbox_Click" />
Text="New Mailbox" CssClass="Button1" OnClick="btnCreateMailbox_Click" />
</div>
<div class="FormButtonsBarCleanRight">
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
<asp:CheckBox ID="chkMailboxes" runat="server" meta:resourcekey="chkMailboxes" Text="Mailboxes" AutoPostBack="true" OnCheckedChanged="chkMailboxes_CheckedChanged"/>
<asp:CheckBox ID="chkResourceMailboxes" runat="server" meta:resourcekey="chkResourceMailboxes" Text="Resource Mailboxes" AutoPostBack="true" OnCheckedChanged="chkMailboxes_CheckedChanged"/>
<asp:CheckBox ID="chkSharedMailboxes" runat="server" meta:resourcekey="chkSharedMailboxes" Text="Shared Mailboxes" AutoPostBack="true" OnCheckedChanged="chkMailboxes_CheckedChanged"/>
<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>
<div class="FormButtonsBarCleanMiddle">
<table>
<tr>
<td>
<wsp:UserActions ID="userActions" runat="server" GridViewID="gvMailboxes" CheckboxesName="chkSelectedUsersIds" ShowSetMailboxPlan="true" />
</td>
<td class="FormButtonsBarCleanSeparatorSmall"></td>
<td>
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
<asp:CheckBox ID="chkMailboxes" runat="server" meta:resourcekey="chkMailboxes" Text="Mailboxes" AutoPostBack="true" OnCheckedChanged="chkMailboxes_CheckedChanged" CssClass="Small" />
<asp:CheckBox ID="chkResourceMailboxes" runat="server" meta:resourcekey="chkResourceMailboxes" Text="Resource Mailboxes" AutoPostBack="true" OnCheckedChanged="chkMailboxes_CheckedChanged" CssClass="Small" />
<asp:CheckBox ID="chkSharedMailboxes" runat="server" meta:resourcekey="chkSharedMailboxes" Text="Shared Mailboxes" AutoPostBack="true" OnCheckedChanged="chkMailboxes_CheckedChanged" CssClass="Small" />
<asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged" Width="50">
<asp:ListItem>10</asp:ListItem>
<asp:ListItem Selected="True">20</asp:ListItem>
<asp:ListItem>50</asp:ListItem>
<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>
<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>
</td>
</tr>
</table>
</div>
</div>
<asp:GridView ID="gvMailboxes" runat="server" AutoGenerateColumns="False" EnableViewState="true"
Width="100%" EmptyDataText="gvMailboxes" CssSelectorClass="NormalGridView"
Width="100%" EmptyDataText="gvMailboxes" CssSelectorClass="NormalGridView" DataKeyNames="AccountId"
OnRowCommand="gvMailboxes_RowCommand" AllowPaging="True" AllowSorting="True"
DataSourceID="odsAccountsPaged" PageSize="20">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="selectAll" Runat="server" onclick="javascript:SelectAllCheckboxes(this);" CssClass="HeaderCheckbox"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkSelectedUsersIds" CssClass="GridCheckbox"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="img2" runat="server" Width="16px" Height="16px" ImageUrl='<%# GetStateImage((bool)Eval("Locked"),(bool)Eval("Disabled")) %>' ImageAlign="AbsMiddle" />
@ -80,7 +108,7 @@
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="gvServiceLevel">
<ItemStyle Width="20%"></ItemStyle>
<ItemStyle Width="15%"></ItemStyle>
<ItemTemplate>
<asp:Label id="lbServLevel" runat="server" ToolTip = '<%# GetServiceLevel((int)Eval("LevelId")).LevelDescription%>'>
<%# GetServiceLevel((int)Eval("LevelId")).LevelName%>

View file

@ -69,16 +69,15 @@ namespace WebsitePanel.Portal.ExchangeServer
BindServiceLevels();
if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER))
{
if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1)
{
gvMailboxes.Columns[4].Visible = false;
gvMailboxes.Columns[6].Visible = false;
}
}
gvMailboxes.Columns[3].Visible = cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels);
gvMailboxes.Columns[4].Visible = cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels);
}
private void BindServiceLevels()
@ -272,6 +271,5 @@ namespace WebsitePanel.Portal.ExchangeServer
odsAccountsPaged.SelectParameters["accountTypes"].DefaultValue = string.Join(",", accountTypes);
}
}
}

View file

@ -1,31 +1,3 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -85,6 +57,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnCreateMailbox;
/// <summary>
/// userActions control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.UserActions userActions;
/// <summary>
/// SearchPanel control.
/// </summary>

View file

@ -81,6 +81,7 @@
<td>
<wsp:PasswordControl id="password" runat="server" ValidationGroup="CreateMailbox" AllowGeneratePassword="true" >
</wsp:PasswordControl>
<asp:CheckBox ID="chkUserMustChangePassword" runat="server" meta:resourcekey="chkUserMustChangePassword" Text="User must change password at next login" />
</td>
</tr>

View file

@ -169,7 +169,8 @@ namespace WebsitePanel.Portal.HostedSolution
user.ExternalEmail,
txtSubscriberNumber.Text,
0,
false);
false,
chkUserMustChangePassword.Checked);
}
}
}

View file

@ -1,31 +1,3 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -229,6 +201,15 @@ namespace WebsitePanel.Portal.HostedSolution {
/// </remarks>
protected global::WebsitePanel.Portal.PasswordControl password;
/// <summary>
/// chkUserMustChangePassword control.
/// </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 chkUserMustChangePassword;
/// <summary>
/// chkSendInstructions control.
/// </summary>

View file

@ -77,10 +77,10 @@
</td>
</tr>
<tr>
<td></td>
<td>
<asp:CheckBox ID="chkUserMustChangePassword" runat="server" meta:resourcekey="chkUserMustChangePassword" Text="User must change password at next login" />
<br />
<asp:CheckBox ID="chkDisable" runat="server" meta:resourcekey="chkDisable" Text="Disable User" />
<br />

View file

@ -231,6 +231,8 @@ namespace WebsitePanel.Portal.HostedSolution
password.ValidationEnabled = true;
password.Password = string.Empty;
chkUserMustChangePassword.Checked = user.UserMustChangePassword;
}
catch (Exception ex)
{
@ -323,7 +325,8 @@ namespace WebsitePanel.Portal.HostedSolution
txtExternalEmailAddress.Text,
txtSubscriberNumber.Text,
string.IsNullOrEmpty(ddlServiceLevels.SelectedValue) ? 0 : int.Parse(ddlServiceLevels.SelectedValue),
chkVIP.Checked);
chkVIP.Checked,
chkUserMustChangePassword.Checked);
if (result < 0)
{

View file

@ -1,31 +1,3 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -238,6 +210,15 @@ namespace WebsitePanel.Portal.HostedSolution {
/// </remarks>
protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary2;
/// <summary>
/// chkUserMustChangePassword control.
/// </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 chkUserMustChangePassword;
/// <summary>
/// chkDisable control.
/// </summary>

View file

@ -3,6 +3,15 @@
<%@ 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" %>
<%@ Register Src="../UserControls/UserActions.ascx" TagName="UserActions" TagPrefix="wsp" %>
<script src="JavaScript/jquery-1.4.4.min.js" type="text/javascript"></script>
<script language="javascript">
function SelectAllCheckboxes(box) {
$(".NormalGridView tbody :checkbox").attr("checked", $(box).attr("checked"));
}
</script>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
@ -25,25 +34,35 @@
<asp:Button ID="btnCreateUser" runat="server" meta:resourcekey="btnCreateUser"
Text="Create New User" CssClass="Button1" OnClick="btnCreateUser_Click" />
</div>
<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>
<div class="FormButtonsBarCleanMiddle">
<table>
<tr>
<td>
<wsp:UserActions ID="userActions" runat="server" GridViewID="gvUsers" CheckboxesName="chkSelectedUsersIds" />
</td>
<td class="FormButtonsBarCleanSeparator"></td>
<td>
<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>
<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>
</td>
</tr>
</table>
</div>
</div>
<asp:Panel ID="UsersPanel" runat="server">
@ -54,12 +73,19 @@
OnRowCommand="gvUsers_RowCommand" AllowPaging="True" AllowSorting="True"
DataSourceID="odsAccountsPaged" PageSize="20">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="selectAll" Runat="server" onclick="javascript:SelectAllCheckboxes(this);" CssClass="HeaderCheckbox"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkSelectedUsersIds" CssClass="GridCheckbox"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<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:TemplateField HeaderText="gvUsersDisplayName" SortExpression="DisplayName">
<ItemStyle Width="25%"></ItemStyle>
<ItemTemplate>

View file

@ -56,10 +56,10 @@ namespace WebsitePanel.Portal.HostedSolution
{
if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1)
{
gvUsers.Columns[5].Visible = false;
gvUsers.Columns[6].Visible = false;
}
}
gvUsers.Columns[3].Visible = cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels);
gvUsers.Columns[4].Visible = cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels);
}
private void BindServiceLevels()
@ -136,7 +136,7 @@ namespace WebsitePanel.Portal.HostedSolution
var accountType = (ExchangeAccountType)gvUsers.DataKeys[rowIndex][1];
if (cntx.Quotas.ContainsKey(Quotas.ORGANIZATION_DELETED_USERS) && accountType != ExchangeAccountType.User)
if (Utils.CheckQouta(Quotas.ORGANIZATION_DELETED_USERS, cntx) && accountType != ExchangeAccountType.User)
{
chkEnableForceArchiveMailbox.Visible = true;
@ -362,7 +362,7 @@ namespace WebsitePanel.Portal.HostedSolution
{
int result = 0;
if (cntx.Quotas.ContainsKey(Quotas.ORGANIZATION_DELETED_USERS))
if (Utils.CheckQouta(Quotas.ORGANIZATION_DELETED_USERS, cntx))
{
result = ES.Services.Organizations.SetDeletedUser(PanelRequest.ItemID, int.Parse(hdAccountId.Value), chkEnableForceArchiveMailbox.Checked);
}
@ -388,5 +388,6 @@ namespace WebsitePanel.Portal.HostedSolution
messageBox.ShowErrorMessage("ORGANIZATIONS_DELETE_USERS", ex);
}
}
}
}

View file

@ -1,31 +1,3 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -85,6 +57,15 @@ namespace WebsitePanel.Portal.HostedSolution {
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnCreateUser;
/// <summary>
/// userActions control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.UserActions userActions;
/// <summary>
/// SearchPanel control.
/// </summary>

View file

@ -40,7 +40,7 @@ namespace WebsitePanel.Portal
{
public partial class FileManager : WebsitePanelModuleBase
{
public static string ALLOWED_EDIT_EXTENSIONS = ".txt,.htm,.html,.php,.pl,.sql,.cs,.vb,.ascx,.aspx,.inc,.asp,.config,.xml,.xsl,.xslt,.xsd,.master,.htaccess,.htpasswd,.cshtml,.vbhtml,.ini,.config";
public static string ALLOWED_EDIT_EXTENSIONS = ".txt,.htm,.html,.cfc,.cfml,.cfm,.php,.pl,.sql,.cs,.vb,.ascx,.aspx,.inc,.asp,.config,.xml,.xsl,.xslt,.xsd,.master,.htaccess,.htpasswd,.cshtml,.vbhtml,.ini,.config";
protected void Page_Load(object sender, EventArgs e)
{

View file

@ -31,6 +31,7 @@ using System.Web.UI.WebControls;
using System.Collections.Generic;
using WebsitePanel.Providers.Common;
using System.Text;
using WebsitePanel.Portal.Code.Helpers;
namespace WebsitePanel.Portal
{

View file

@ -235,9 +235,9 @@ namespace WebsitePanel.Portal
try
{
int result = ES.Services.MailServers.AddMailAccount(item);
if (result < 0)
if (result == BusinessErrorCodes.ERROR_MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY)
{
ShowResultMessage(result);
ShowErrorMessage("MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY");
return;
}
if (result == BusinessErrorCodes.ERROR_MAIL_LICENSE_DOMAIN_QUOTA)
@ -250,7 +250,11 @@ namespace WebsitePanel.Portal
ShowResultMessage(result);
return;
}
if (result < 0)
{
ShowResultMessage(result);
return;
}
}
catch (Exception ex)
{
@ -264,6 +268,11 @@ namespace WebsitePanel.Portal
try
{
int result = ES.Services.MailServers.UpdateMailAccount(item);
if (result == BusinessErrorCodes.ERROR_MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY)
{
ShowErrorMessage("MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY");
return;
}
if (result < 0)
{
ShowResultMessage(result);

View file

@ -0,0 +1,168 @@
<?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="cbChangePassword.Text" xml:space="preserve">
<value>Change Password</value>
</data>
<data name="cbDomainAdmin.Text" xml:space="preserve">
<value>Domain Administrator</value>
</data>
<data name="cbDomainAdministrator.Text" xml:space="preserve">
<value>Domain Administrator</value>
</data>
<data name="cbEnableAccount.Text" xml:space="preserve">
<value>Account enabled</value>
</data>
<data name="chkDeleteOnForward.Text" xml:space="preserve">
<value>Delete Message on Forward</value>
</data>
<data name="chkResponderEnabled.Text" xml:space="preserve">
<value>Yes</value>
</data>
<data name="lblFirstName.Text" xml:space="preserve">
<value>First Name:</value>
</data>
<data name="lblForwardTo.Text" xml:space="preserve">
<value>Forward Mail to Address:</value>
</data>
<data name="lblLastName.Text" xml:space="preserve">
<value>Last Name:</value>
</data>
<data name="lblMessage.Text" xml:space="preserve">
<value>Message:</value>
</data>
<data name="lblReplyTo.Text" xml:space="preserve">
<value>Reply to Address:</value>
</data>
<data name="lblResponderEnabled.Text" xml:space="preserve">
<value>Enable Autoresponder:</value>
</data>
<data name="lblSignature.Text" xml:space="preserve">
<value>Signature:</value>
</data>
<data name="lblSubject.Text" xml:space="preserve">
<value>Subject:</value>
</data>
<data name="secAutoresponder.Text" xml:space="preserve">
<value>Autoresponder</value>
</data>
<data name="secForwarding.Text" xml:space="preserve">
<value>Mail Forwarding</value>
</data>
</root>

View file

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lblAbuse.Text" xml:space="preserve">
<value>Abuse Account:</value>
</data>
<data name="lblCatchAll.Text" xml:space="preserve">
<value>Catch-All Account:</value>
</data>
<data name="lblDomainAliases.Text" xml:space="preserve">
<value>Domain Aliases :</value>
</data>
<data name="lblDomainDiskSpace.Text" xml:space="preserve">
<value>Domain Disk Space, MB :</value>
</data>
<data name="lblMailingListsQuota.Text" xml:space="preserve">
<value>Mailing Lists :</value>
</data>
<data name="lblMessageSizeQuota.Text" xml:space="preserve">
<value>Max Message Size, KB :</value>
</data>
<data name="lblPopRetreivalAccounts.Text" xml:space="preserve">
<value>POP Retrieval Accounts:</value>
</data>
<data name="lblPostmaster.Text" xml:space="preserve">
<value>Postmaster Account:</value>
</data>
<data name="lblRecipientsPerMessageQuota.Text" xml:space="preserve">
<value>Max Recipients per Message :</value>
</data>
<data name="lblUserAliasesQuota.Text" xml:space="preserve">
<value>User Aliases :</value>
</data>
<data name="lblUserQuota.Text" xml:space="preserve">
<value>Users :</value>
</data>
<data name="secFeatures.Text" xml:space="preserve">
<value>Features</value>
</data>
<data name="secLimits.Text" xml:space="preserve">
<value>Limits</value>
</data>
<data name="secSharing.Text" xml:space="preserve">
<value>Sharing</value>
</data>
<data name="secTechnical.Text" xml:space="preserve">
<value>Technical</value>
</data>
<data name="secThrottling.Text" xml:space="preserve">
<value>Throttling</value>
</data>
<data name="Text.NotSelected" xml:space="preserve">
<value>&lt;Not Selected&gt;</value>
</data>
</root>

View file

@ -0,0 +1,168 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lbEnableCatchAlls.Text" xml:space="preserve">
<value>Enable Catch-Alls</value>
</data>
<data name="lbEnableIMAPRetreival.Text" xml:space="preserve">
<value>Enable IMAP Retreival</value>
</data>
<data name="lbEnableMailReports.Text" xml:space="preserve">
<value>Enable Email Reports</value>
</data>
<data name="lbEnableMailSigning.Text" xml:space="preserve">
<value>Enable Mail Signing</value>
</data>
<data name="lbEnablePopRetreival.Text" xml:space="preserve">
<value>Enable POP Retrieval</value>
</data>
<data name="lbEnableSyncML.Text" xml:space="preserve">
<value>Enable SyncML</value>
</data>
<data name="lbPopRetrieval.Text" xml:space="preserve">
<value>Pop Retreival</value>
</data>
<data name="lbShowCalendar.Text" xml:space="preserve">
<value>Calendar</value>
</data>
<data name="lbShowContacts.Text" xml:space="preserve">
<value>Contacts</value>
</data>
<data name="lbShowcontentfilteringmenu.Text" xml:space="preserve">
<value>Domain Content Filtering</value>
</data>
<data name="lbShowdomainaliasmenu.Text" xml:space="preserve">
<value>Domain Aliases</value>
</data>
<data name="lbShowDomainReports.Text" xml:space="preserve">
<value>Domain Reports</value>
</data>
<data name="lbShowlistmenu.Text" xml:space="preserve">
<value>Mailing Lists</value>
</data>
<data name="lbShowNotes.Text" xml:space="preserve">
<value>Notes</value>
</data>
<data name="lbShowspammenu.Text" xml:space="preserve">
<value>Domain Spam Options</value>
</data>
<data name="lbShowTasks.Text" xml:space="preserve">
<value>Tasks</value>
</data>
</root>

View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="cbGlobalAddressList.Text" xml:space="preserve">
<value>Global Address List</value>
</data>
<data name="cbSharedCalendars.Text" xml:space="preserve">
<value>Shared Calendars</value>
</data>
<data name="cbSharedContacts.Text" xml:space="preserve">
<value>Shared Contacts</value>
</data>
<data name="cbSharedFolders.Text" xml:space="preserve">
<value>Shared Folders</value>
</data>
<data name="cbSharedNotes.Text" xml:space="preserve">
<value>Shared Notes</value>
</data>
<data name="cbSharedTasks.Text" xml:space="preserve">
<value>Shared Tasks</value>
</data>
</root>

View file

@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lbBandwidthPerHour.Text" xml:space="preserve">
<value>Outgoing Bandwidth per Hour, MB:</value>
</data>
<data name="lbBouncesPerHour.Text" xml:space="preserve">
<value>Bounces Received per Hour:</value>
</data>
<data name="lbEnabled.Text" xml:space="preserve">
<value>Enabled</value>
</data>
<data name="lbMessagesPerHour.Text" xml:space="preserve">
<value>Outgoing Messages per Hour:</value>
</data>
</root>

View file

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
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">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</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.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:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lblGroupMembers.Text" xml:space="preserve">
<value>Group E-Mails:</value>
</data>
</root>

View file

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="chkPasswordEnabled.Text" xml:space="preserve">
<value>Enabled</value>
</data>
<data name="chkReplyToList.Text" xml:space="preserve">
<value>Reply To List</value>
</data>
<data name="chkSubjectPrefixEnabled.Text" xml:space="preserve">
<value>Enabled</value>
</data>
<data name="ctxValDomain.Text" xml:space="preserve">
<value>Moderator should be within mail domain where Mail List is located</value>
</data>
<data name="ddlPostingModeItem.Anyone" xml:space="preserve">
<value>Anyone</value>
</data>
<data name="ddlPostingModeItem.MembersOnly" xml:space="preserve">
<value>Subscribers Only</value>
</data>
<data name="ddlPostingModeItem.ModeratorOnly" xml:space="preserve">
<value>Moderator Only</value>
</data>
<data name="ddlPostingModeItem.Password" xml:space="preserve">
<value>Password Protected Posting</value>
</data>
<data name="ddlReplyToItem.List" xml:space="preserve">
<value>List</value>
</data>
<data name="ddlReplyToItem.Moderator" xml:space="preserve">
<value>Moderator</value>
</data>
<data name="ddlReplyToItem.Sender" xml:space="preserve">
<value>Sender</value>
</data>
<data name="lblDescription.Text" xml:space="preserve">
<value>List Description:</value>
</data>
<data name="lblListOptions.Text" xml:space="preserve">
<value>List Options:</value>
</data>
<data name="lblMaxMessageSize.Text" xml:space="preserve">
<value>Max Message Size, KB:</value>
</data>
<data name="lblMaxRecipients.Text" xml:space="preserve">
<value>Max Recipients per Message:</value>
</data>
<data name="lblMembers.Text" xml:space="preserve">
<value>Mailing List Members:</value>
</data>
<data name="lblModerationEnabled.Text" xml:space="preserve">
<value>Moderation is Enabled:</value>
</data>
<data name="lblModeratorAddress.Text" xml:space="preserve">
<value>List Moderator:</value>
</data>
<data name="lblPostingMode.Text" xml:space="preserve">
<value>Who Can Post:</value>
</data>
<data name="lblPostingPassword.Text" xml:space="preserve">
<value>List Password:</value>
</data>
<data name="lblReplyTo.Text" xml:space="preserve">
<value>Subscribers Reply To:</value>
</data>
<data name="lblSubjectPrefix.Text" xml:space="preserve">
<value>Subject Prefix:</value>
</data>
<data name="Text.SelectModerator" xml:space="preserve">
<value>&lt;Choose a moderator&gt;</value>
</data>
<data name="AdditionalOptions.Text" xml:space="preserve">
<value>List Additional Options</value>
</data>
<data name="lbAllowUnsubscribe.Text" xml:space="preserve">
<value>Enable Unsubscribe from Subject:</value>
</data>
<data name="lbDigestMode.Text" xml:space="preserve">
<value>Enable Digest Mode:</value>
</data>
<data name="lbDisableListcommand.Text" xml:space="preserve">
<value>Enable LIST Command:</value>
</data>
<data name="lbDisableSubscribecommand.Text" xml:space="preserve">
<value>Enable SUBSCRIBE Command:</value>
</data>
<data name="lblListFromAddress.Text" xml:space="preserve">
<value>List From Address:</value>
</data>
<data name="lblListReplyToAddress.Text" xml:space="preserve">
<value>List Reply To Address:</value>
</data>
<data name="lblListToAddress.Text" xml:space="preserve">
<value>List To Address:</value>
</data>
<data name="lbSendSubscribe.Text" xml:space="preserve">
<value>Send Subscribe Email:</value>
</data>
<data name="lbSendUnsubscribe.Text" xml:space="preserve">
<value>Send Unsubscribe Email:</value>
</data>
</root>

View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="cbEnableDomainAdmin.Text" xml:space="preserve">
<value>Enable Domain Administrators</value>
</data>
<data name="cbImportDomainAdmin.Text" xml:space="preserve">
<value>Import Domain Admin</value>
</data>
<data name="cbImportSystemAdmin.Text" xml:space="preserve">
<value>Import System Admin</value>
</data>
<data name="cbInheritDefaultLimits.Text" xml:space="preserve">
<value>Inherit Domain Default Limits &amp;nbsp; (Domain Default Limits will be applied for all new created domains)</value>
</data>
<data name="lblAdminLogin.Text" xml:space="preserve">
<value>Admin Login:</value>
</data>
<data name="lblAdminPassword.Text" xml:space="preserve">
<value>Admin Password:</value>
</data>
<data name="lblCurrPassword.Text" xml:space="preserve">
<value>Current Admin Password:</value>
</data>
<data name="lblDomainsPath.Text" xml:space="preserve">
<value>Domains Root Folder:</value>
</data>
<data name="lblPublicIP.Text" xml:space="preserve">
<value>Public IP Address:</value>
</data>
<data name="lblServiceUrl.Text" xml:space="preserve">
<value>SmarterMail Web Services URL:</value>
</data>
</root>

View file

@ -0,0 +1,114 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100_EditAccount.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.SmarterMail100_EditAccount" %>
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
<table width="100%">
<tr runat="server" id="passwordRow">
<td>
</td>
<td class="SubHead" height="37px">
<asp:CheckBox runat="server" meta:resourcekey="cbChangePassword" ID="cbChangePassword" Text="Change password" />
</td>
</tr>
<tr>
<td>
</td>
<td class="SubHead" height="37px">
<asp:CheckBox runat="server" meta:resourcekey="cbEnableAccount" ID="cbEnableAccount" Text="Account enabled" Checked="True" />
</td>
</tr>
<tr>
<td>
</td>
<td class="SubHead" height="37px">
<asp:CheckBox runat="server" meta:resourcekey="cbDomainAdmin" ID="cbDomainAdmin" Text="Domain Administrator" />
</td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap>
<asp:Label ID="lblFirstName" runat="server" meta:resourcekey="lblFirstName" Text="First Name:"></asp:Label>
</td>
<td class="normal" width="100%">
<asp:TextBox ID="txtFirstName" runat="server" Width="200px" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblLastName" runat="server" meta:resourcekey="lblLastName" Text="Last Name:"></asp:Label>
</td>
<td class="normal" valign="top">
<asp:TextBox ID="txtLastName" runat="server" Width="200px" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblReplyTo" runat="server" meta:resourcekey="lblReplyTo" Text="Reply to address:"></asp:Label></td>
<td class="normal">
<asp:TextBox ID="txtReplyTo" runat="server" Width="200px" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblSignature" runat="server" meta:resourcekey="lblSignature" Text="Signature:"></asp:Label></td>
<td class="normal">
<asp:TextBox ID="txtSignature" runat="server" Width="200px" TextMode="MultiLine"
Rows="4" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
</table>
<wsp:CollapsiblePanel id="secAutoresponder" runat="server" TargetControlID="AutoresponderPanel"
meta:resourcekey="secAutoresponder" Text="Autoresponder">
</wsp:CollapsiblePanel>
<asp:Panel ID="AutoresponderPanel" runat="server" Height="0" Style="overflow: hidden;">
<table width="100%">
<tr>
<td class="SubHead" width="200" nowrap>
<asp:Label ID="lblResponderEnabled" runat="server" meta:resourcekey="lblResponderEnabled"
Text="Enable autoresponder:"></asp:Label></td>
<td class="normal" width="100%">
<asp:CheckBox ID="chkResponderEnabled" runat="server" meta:resourcekey="chkResponderEnabled"
Text="Yes"></asp:CheckBox>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblSubject" runat="server" meta:resourcekey="lblSubject" Text="Subject:"></asp:Label></td>
<td class="normal" valign="top">
<asp:TextBox ID="txtSubject" runat="server" Width="400px" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr>
<td class="SubHead" valign="top">
<asp:Label ID="lblMessage" runat="server" meta:resourcekey="lblMessage" Text="Message:"></asp:Label></td>
<td class="normal">
<asp:TextBox ID="txtMessage" runat="server" Width="400px" TextMode="MultiLine" Rows="5"
CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
</table>
</asp:Panel>
<wsp:CollapsiblePanel id="secForwarding" runat="server" TargetControlID="ForwardingPanel"
meta:resourcekey="secForwarding" Text="Mail Forwarding">
</wsp:CollapsiblePanel>
<asp:Panel ID="ForwardingPanel" runat="server" Height="0" Style="overflow: hidden;">
<table width="100%">
<tr>
<td class="SubHead" width="200" nowrap>
<asp:Label ID="lblForwardTo" runat="server" meta:resourcekey="lblForwardTo" Text="Forward mail to address:"></asp:Label></td>
<td class="normal" width="100%" valign="top">
<asp:TextBox ID="txtForward" runat="server" Width="200px" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr>
<td class="SubHead">
</td>
<td class="Normal">
<asp:CheckBox ID="chkDeleteOnForward" runat="server" meta:resourcekey="chkDeleteOnForward"
Text="Delete Message on Forward"></asp:CheckBox>
</td>
</tr>
</table>
</asp:Panel>

View file

@ -0,0 +1,75 @@
// Copyright (c) 2015, 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 WebsitePanel.Providers.Mail;
namespace WebsitePanel.Portal.ProviderControls
{
public partial class SmarterMail100_EditAccount : WebsitePanelControlBase, IMailEditAccountControl
{
protected void Page_Load(object sender, EventArgs e)
{
passwordRow.Visible = (PanelRequest.ItemID > 0);
}
public void BindItem(MailAccount item)
{
txtFirstName.Text = item.FirstName;
txtLastName.Text = item.LastName;
txtSignature.Text = item.Signature;
cbEnableAccount.Checked = item.Enabled;
chkResponderEnabled.Checked = item.ResponderEnabled;
txtReplyTo.Text = item.ReplyTo;
txtSubject.Text = item.ResponderSubject;
txtMessage.Text = item.ResponderMessage;
txtForward.Text = item.ForwardingAddresses != null ? String.Join("; ", item.ForwardingAddresses) : "";
chkDeleteOnForward.Checked = item.DeleteOnForward;
cbDomainAdmin.Visible = item.IsDomainAdminEnabled;
cbDomainAdmin.Checked = item.IsDomainAdmin;
}
public void SaveItem(MailAccount item)
{
item.FirstName = txtFirstName.Text;
item.LastName = txtLastName.Text;
item.Signature = txtSignature.Text;
item.ResponderEnabled = chkResponderEnabled.Checked;
item.Enabled = cbEnableAccount.Checked;
item.ReplyTo = txtReplyTo.Text;
item.ResponderSubject = txtSubject.Text;
item.ResponderMessage = txtMessage.Text;
item.ForwardingAddresses = Utils.ParseDelimitedString(txtForward.Text, ';', ' ', ',');
item.DeleteOnForward = chkDeleteOnForward.Checked;
item.ChangePassword = cbChangePassword.Checked;
item.ChangePassword = cbChangePassword.Checked;
item.IsDomainAdmin = cbDomainAdmin.Checked;
}
}
}

View file

@ -0,0 +1,240 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls {
public partial class SmarterMail100_EditAccount {
/// <summary>
/// passwordRow 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 passwordRow;
/// <summary>
/// cbChangePassword control.
/// </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 cbChangePassword;
/// <summary>
/// cbEnableAccount control.
/// </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 cbEnableAccount;
/// <summary>
/// cbDomainAdmin control.
/// </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 cbDomainAdmin;
/// <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>
/// txtFirstName control.
/// </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 txtFirstName;
/// <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>
/// txtLastName control.
/// </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 txtLastName;
/// <summary>
/// lblReplyTo control.
/// </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 lblReplyTo;
/// <summary>
/// txtReplyTo control.
/// </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 txtReplyTo;
/// <summary>
/// lblSignature control.
/// </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 lblSignature;
/// <summary>
/// txtSignature control.
/// </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 txtSignature;
/// <summary>
/// secAutoresponder control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secAutoresponder;
/// <summary>
/// AutoresponderPanel control.
/// </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 AutoresponderPanel;
/// <summary>
/// lblResponderEnabled control.
/// </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 lblResponderEnabled;
/// <summary>
/// chkResponderEnabled control.
/// </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 chkResponderEnabled;
/// <summary>
/// lblSubject control.
/// </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 lblSubject;
/// <summary>
/// txtSubject control.
/// </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 txtSubject;
/// <summary>
/// lblMessage control.
/// </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 lblMessage;
/// <summary>
/// txtMessage control.
/// </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 txtMessage;
/// <summary>
/// secForwarding control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secForwarding;
/// <summary>
/// ForwardingPanel control.
/// </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 ForwardingPanel;
/// <summary>
/// lblForwardTo control.
/// </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 lblForwardTo;
/// <summary>
/// txtForward control.
/// </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 txtForward;
/// <summary>
/// chkDeleteOnForward control.
/// </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 chkDeleteOnForward;
}
}

View file

@ -0,0 +1,145 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100_EditDomain.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.SmarterMail100_EditDomain" %>
<%@ Register Src="SmarterMail60_EditDomain_Features.ascx" TagName="SmarterMail60_EditDomain_Features"
TagPrefix="uc4" %>
<%@ Register Src="SmarterMail60_EditDomain_Sharing.ascx" TagName="SmarterMail60_EditDomain_Sharing"
TagPrefix="uc3" %>
<%@ Register Src="SmarterMail60_EditDomain_Throttling.ascx" TagName="SmarterMail60_EditDomain_Throttling"
TagPrefix="uc5" %>
<%@ Register Src="../UserControls/QuotaEditor.ascx" TagName="QuotaEditor" TagPrefix="uc1" %>
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
<table width="100%">
<tr>
<td class="SubHead" width="200" nowrap>
<asp:Label ID="lblCatchAll" runat="server" meta:resourcekey="lblCatchAll" Text="Catch-All Account:"></asp:Label></td>
<td class="Normal" width="100%">
<asp:DropDownList ID="ddlCatchAllAccount" runat="server" CssClass="NormalTextBox">
</asp:DropDownList></td>
</tr>
</table>
<asp:Panel runat="server" ID="AdvancedSettingsPanel">
<wsp:collapsiblepanel id="secFeatures" runat="server" targetcontrolid="FeaturesPanel"
meta:resourcekey="secFeatures" ></wsp:collapsiblepanel>
<asp:Panel runat="server" ID="FeaturesPanel">
<uc4:SmarterMail60_EditDomain_Features id="featuresSection" runat="server"></uc4:SmarterMail60_EditDomain_Features>
</asp:Panel>
<wsp:collapsiblepanel id="secSharing" runat="server" targetcontrolid="SharingPanel"
meta:resourcekey="secSharing" ></wsp:collapsiblepanel>
<asp:Panel runat="server" ID="SharingPanel">
<uc3:SmarterMail60_EditDomain_Sharing id="sharingSection" runat="server"></uc3:SmarterMail60_EditDomain_Sharing>
</asp:Panel>
<wsp:collapsiblepanel id="secThrottling" runat="server" targetcontrolid="ThrottlingPanel"
meta:resourcekey="secThrottling" ></wsp:collapsiblepanel>
<asp:Panel runat="server" ID="ThrottlingPanel">
<uc5:SmarterMail60_EditDomain_Throttling id="throttlingSection" runat="server"></uc5:SmarterMail60_EditDomain_Throttling>
</asp:Panel>
<wsp:collapsiblepanel id="secLimits" runat="server" targetcontrolid="LimitsPanel"
meta:resourcekey="secLimits" text="Limits"></wsp:collapsiblepanel>
<asp:Panel runat="server" ID="LimitsPanel">
<table width="100%">
<tr>
<td class="SubHead" width="200" nowrap align="right">
<asp:Label ID="lblDomainDiskSpace" runat="server" meta:resourcekey="lblDomainDiskSpace"></asp:Label></td>
<td width="100%" align="left">
<asp:TextBox runat="server" ID="txtSize" Text="0" Width="80px" CssClass="NormalTextBox" />
<asp:RangeValidator Type="Integer" ID="valDomainDiskSpace" MinimumValue="0" runat="server" ControlToValidate="txtSize"
Display="Dynamic" />
<asp:RequiredFieldValidator ID="reqValDiskSpace" runat="server" ControlToValidate="txtSize"
Display="Dynamic" />
</td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap align="right">
<asp:Label ID="lblDomainAliases" runat="server" meta:resourcekey="lblDomainAliases"></asp:Label></td>
<td width="100%" align="left">
<asp:TextBox runat="server" ID="txtDomainAliases" Text="0" Width="80px" CssClass="NormalTextBox"/>
<asp:RangeValidator Type="Integer" ID="valDomainAliases" MinimumValue="0" runat="server" ControlToValidate="txtDomainAliases"
Display="Dynamic" />
<asp:RequiredFieldValidator ID="reqValDomainAliases" runat="server" ControlToValidate="txtDomainAliases"
Display="Dynamic" />
</td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap align="right">
<asp:Label ID="lblUserQuota" runat="server" meta:resourcekey="lblUserQuota"></asp:Label></td>
<td width="100%" align="left">
<asp:TextBox runat="server" ID="txtUser" Width="80px" CssClass="NormalTextBox"/>
<asp:RangeValidator Type="Integer" MinimumValue="0" ID="valUser" runat="server" ControlToValidate="txtUser"
Display="Dynamic" />
<asp:RequiredFieldValidator ID="reqValUser" runat="server" ControlToValidate="txtUser"
Display="Dynamic" />
</td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap align="right">
<asp:Label ID="lblUserAliasesQuota" runat="server" meta:resourcekey="lblUserAliasesQuota"></asp:Label></td>
<td width="100%" align="left">
<asp:TextBox runat="server" ID="txtUserAliases" Width="80px" CssClass="NormalTextBox"/>
<asp:RangeValidator Type="Integer" runat="server" ID="valUserAliases" ControlToValidate="txtUserAliases"
MinimumValue="0" Display="Dynamic" />
<asp:RequiredFieldValidator ID="reqValUserAliases" runat="server" ControlToValidate="txtUserAliases"
Display="Dynamic" />
</td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap align="right">
<asp:Label ID="lblMailingListsQuota" runat="server" meta:resourcekey="lblMailingListsQuota"></asp:Label></td>
<td width="100%" align="left">
<asp:TextBox runat="server" Width="80px" ID="txtMailingLists" CssClass="NormalTextBox"/>
<asp:RangeValidator Type="Integer" runat="server" ID="valMailingLists" ControlToValidate="txtMailingLists"
MinimumValue="0" Display="Dynamic" />
<asp:RequiredFieldValidator ID="reqValMailingLists" runat="server" ControlToValidate="txtMailingLists"
Display="Dynamic" />
</td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap align="right">
<asp:Label ID="lblPopRetreivalAccounts" runat="server" meta:resourcekey="lblPopRetreivalAccounts"></asp:Label></td>
<td width="100%" align="left">
<asp:TextBox runat="server" Width="80px" ID="txtPopRetreivalAccounts" CssClass="NormalTextBox"/>
<asp:RangeValidator Type="Integer" runat="server" ID="valPopRetreivalAccounts" ControlToValidate="txtPopRetreivalAccounts"
MinimumValue="0" Display="None"/>
<asp:RequiredFieldValidator ID="reqPopRetreivalAccounts" runat="server" ControlToValidate="txtPopRetreivalAccounts"
Display="None"/>
</td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap align="right">
<asp:Label ID="lblMessageSizeQuota" runat="server" meta:resourcekey="lblMessageSizeQuota"></asp:Label></td>
<td width="100%" align="left">
<asp:TextBox runat="server" ID="txtMessageSize" CssClass="NormalTextBox" Width="80px"/>
<asp:RangeValidator Type="Integer" runat="server" ID="valMessageSize" ControlToValidate="txtMessageSize"
MinimumValue="0" Display="Dynamic" />
<asp:RequiredFieldValidator ID="reqValMessageSize" runat="server" ControlToValidate="txtMessageSize"
Display="Dynamic" />
</td>
</tr>
<tr>
<td class="SubHead" width="200" nowrap align="right">
<asp:Label ID="lblRecipientsPerMessageQuota" runat="server" meta:resourcekey="lblRecipientsPerMessageQuota"></asp:Label></td>
<td width="100%" align="left">
<asp:TextBox runat="server" ID="txtRecipientsPerMessage" CssClass="NormalTextBox" Width="80px"/>
<asp:RangeValidator Type="Integer" runat="server" ID="valRecipientsPerMessage" ControlToValidate="txtRecipientsPerMessage"
MinimumValue="0" Display="Dynamic" />
<asp:RequiredFieldValidator ID="reqValRecipientsPerMessage" runat="server" ControlToValidate="txtRecipientsPerMessage"
Display="Dynamic" />
</td>
</tr>
</table>
</asp:Panel>
</asp:Panel>

View file

@ -0,0 +1,183 @@
// Copyright (c) 2015, 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 WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.Mail;
namespace WebsitePanel.Portal.ProviderControls
{
public partial class SmarterMail100_EditDomain : WebsitePanelControlBase, IMailEditDomainControl
{
protected void Page_Load(object sender, EventArgs e)
{
PackageInfo info = ES.Services.Packages.GetPackage(PanelSecurity.PackageId);
AdvancedSettingsPanel.Visible = PanelSecurity.EffectiveUser.Role == UserRole.Administrator;
InitValidators();
}
public void BindItem(MailDomain item)
{
BindMailboxes(item);
BindQuotas(item);
featuresSection.BindItem(item);
sharingSection.BindItem(item);
throttlingSection.BindItem(item);
if (item[MailDomain.SMARTERMAIL_LICENSE_TYPE] == "PRO")
{
secSharing.Visible = false;
sharingSection.Visible = false;
secThrottling.Visible = false;
throttlingSection.Visible = false;
}
else
{
sharingSection.BindItem(item);
throttlingSection.BindItem(item);
}
}
public void SaveItem(MailDomain item)
{
item.CatchAllAccount = ddlCatchAllAccount.SelectedValue;
SaveQuotas(item);
featuresSection.SaveItem(item);
sharingSection.SaveItem(item);
throttlingSection.SaveItem(item);
if (item[MailDomain.SMARTERMAIL_LICENSE_TYPE] == "PRO")
{
secSharing.Visible = false;
sharingSection.Visible = false;
secThrottling.Visible = false;
throttlingSection.Visible = false;
}
else
{
sharingSection.SaveItem(item);
throttlingSection.SaveItem(item);
}
}
private void SaveQuotas(MailDomain item)
{
item.MaxDomainSizeInMB = Utils.ParseInt(txtSize.Text);
item.MaxDomainAliases = Utils.ParseInt(txtDomainAliases.Text);
item.MaxDomainUsers = Utils.ParseInt(txtUser.Text);
item.MaxAliases = Utils.ParseInt(txtUserAliases.Text);
item.MaxLists = Utils.ParseInt(txtMailingLists.Text);
item[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ACCOUNTS] = txtPopRetreivalAccounts.Text;
item.MaxRecipients = Utils.ParseInt(txtRecipientsPerMessage.Text);
item.MaxMessageSize = Utils.ParseInt(txtMessageSize.Text);
}
private void BindQuotas(MailDomain item)
{
txtSize.Text = item.MaxDomainSizeInMB.ToString();
txtDomainAliases.Text = item.MaxDomainAliases.ToString();
txtUser.Text = item.MaxDomainUsers.ToString();
txtUserAliases.Text = item.MaxAliases.ToString();
txtMailingLists.Text = item.MaxLists.ToString();
txtPopRetreivalAccounts.Text = item[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ACCOUNTS];
txtRecipientsPerMessage.Text = item.MaxRecipients.ToString();
txtMessageSize.Text = item.MaxMessageSize.ToString();
}
private void BindMailboxes(MailDomain item)
{
MailAccount[] accounts = ES.Services.MailServers.GetMailAccounts(item.PackageId, false);
MailAlias[] forwardings = ES.Services.MailServers.GetMailForwardings(item.PackageId, false);
BindAccounts(item, ddlCatchAllAccount, accounts);
BindAccounts(item, ddlCatchAllAccount, forwardings);
Utils.SelectListItem(ddlCatchAllAccount, item.CatchAllAccount);
}
private void BindAccounts(MailDomain item, DropDownList ddl, MailAccount[] accounts)
{
if (ddl.Items.Count == 0)
ddl.Items.Add(new ListItem(GetLocalizedString("Text.NotSelected"), ""));
foreach (MailAccount account in accounts)
{
int idx = account.Name.IndexOf("@");
string accountName = account.Name.Substring(0, idx);
string accountDomain = account.Name.Substring(idx + 1);
if (String.Compare(accountDomain, item.Name, true) == 0)
ddl.Items.Add(new ListItem(account.Name, accountName));
}
}
private void InitValidators()
{
string message = "*";
reqValRecipientsPerMessage.ErrorMessage = message;
valRecipientsPerMessage.ErrorMessage = message;
valRecipientsPerMessage.MaximumValue = int.MaxValue.ToString();
reqValMessageSize.ErrorMessage = message;
valMessageSize.ErrorMessage = message;
valMessageSize.MaximumValue = int.MaxValue.ToString();
reqValMailingLists.ErrorMessage = message;
valMailingLists.ErrorMessage = message;
valMailingLists.MaximumValue = int.MaxValue.ToString();
reqPopRetreivalAccounts.ErrorMessage = message;
valPopRetreivalAccounts.ErrorMessage = message;
valPopRetreivalAccounts.MaximumValue = int.MaxValue.ToString();
reqValUser.ErrorMessage = message;
valUser.ErrorMessage = message;
valUser.MaximumValue = int.MaxValue.ToString();
reqValUserAliases.ErrorMessage = message;
valUserAliases.ErrorMessage = message;
valUserAliases.MaximumValue = int.MaxValue.ToString();
reqValDomainAliases.ErrorMessage = message;
valDomainAliases.ErrorMessage = message;
valDomainAliases.MaximumValue = int.MaxValue.ToString();
reqValDiskSpace.ErrorMessage = message;
valDomainDiskSpace.ErrorMessage = message;
valDomainDiskSpace.MaximumValue = int.MaxValue.ToString();
}
}
}

View file

@ -0,0 +1,429 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls {
public partial class SmarterMail100_EditDomain {
/// <summary>
/// lblCatchAll control.
/// </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 lblCatchAll;
/// <summary>
/// ddlCatchAllAccount control.
/// </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 ddlCatchAllAccount;
/// <summary>
/// AdvancedSettingsPanel control.
/// </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 AdvancedSettingsPanel;
/// <summary>
/// secFeatures control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secFeatures;
/// <summary>
/// FeaturesPanel control.
/// </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 FeaturesPanel;
/// <summary>
/// featuresSection control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ProviderControls.SmarterMail60_EditDomain_Features featuresSection;
/// <summary>
/// secSharing control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secSharing;
/// <summary>
/// SharingPanel control.
/// </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 SharingPanel;
/// <summary>
/// sharingSection control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ProviderControls.SmarterMail60_EditDomain_Sharing sharingSection;
/// <summary>
/// secThrottling control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secThrottling;
/// <summary>
/// ThrottlingPanel control.
/// </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 ThrottlingPanel;
/// <summary>
/// throttlingSection control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ProviderControls.SmarterMail60_EditDomain_Throttling throttlingSection;
/// <summary>
/// secLimits control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secLimits;
/// <summary>
/// LimitsPanel control.
/// </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 LimitsPanel;
/// <summary>
/// lblDomainDiskSpace control.
/// </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 lblDomainDiskSpace;
/// <summary>
/// txtSize control.
/// </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 txtSize;
/// <summary>
/// valDomainDiskSpace control.
/// </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 valDomainDiskSpace;
/// <summary>
/// reqValDiskSpace control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValDiskSpace;
/// <summary>
/// lblDomainAliases control.
/// </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 lblDomainAliases;
/// <summary>
/// txtDomainAliases control.
/// </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 txtDomainAliases;
/// <summary>
/// valDomainAliases control.
/// </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 valDomainAliases;
/// <summary>
/// reqValDomainAliases control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValDomainAliases;
/// <summary>
/// lblUserQuota control.
/// </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 lblUserQuota;
/// <summary>
/// txtUser control.
/// </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 txtUser;
/// <summary>
/// valUser control.
/// </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 valUser;
/// <summary>
/// reqValUser control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValUser;
/// <summary>
/// lblUserAliasesQuota control.
/// </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 lblUserAliasesQuota;
/// <summary>
/// txtUserAliases control.
/// </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 txtUserAliases;
/// <summary>
/// valUserAliases control.
/// </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 valUserAliases;
/// <summary>
/// reqValUserAliases control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValUserAliases;
/// <summary>
/// lblMailingListsQuota control.
/// </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 lblMailingListsQuota;
/// <summary>
/// txtMailingLists control.
/// </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 txtMailingLists;
/// <summary>
/// valMailingLists control.
/// </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 valMailingLists;
/// <summary>
/// reqValMailingLists control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValMailingLists;
/// <summary>
/// lblPopRetreivalAccounts control.
/// </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 lblPopRetreivalAccounts;
/// <summary>
/// txtPopRetreivalAccounts control.
/// </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 txtPopRetreivalAccounts;
/// <summary>
/// valPopRetreivalAccounts control.
/// </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 valPopRetreivalAccounts;
/// <summary>
/// reqPopRetreivalAccounts control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqPopRetreivalAccounts;
/// <summary>
/// lblMessageSizeQuota control.
/// </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 lblMessageSizeQuota;
/// <summary>
/// txtMessageSize control.
/// </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 txtMessageSize;
/// <summary>
/// valMessageSize control.
/// </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 valMessageSize;
/// <summary>
/// reqValMessageSize control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValMessageSize;
/// <summary>
/// lblRecipientsPerMessageQuota control.
/// </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 lblRecipientsPerMessageQuota;
/// <summary>
/// txtRecipientsPerMessage control.
/// </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 txtRecipientsPerMessage;
/// <summary>
/// valRecipientsPerMessage control.
/// </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 valRecipientsPerMessage;
/// <summary>
/// reqValRecipientsPerMessage control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValRecipientsPerMessage;
}
}

View file

@ -0,0 +1,69 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100_EditDomain_Features.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.SmarterMail100_EditDomain_Features" %>
<table width="100%">
<tr>
<td width="200px" align="right"><asp:Label ID="Label1" runat="server" meta:resourcekey="lbShowcontentfilteringmenu" /></td>
<td>
<asp:CheckBox runat="server" ID="cbShowcontentfilteringmenu" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label2" meta:resourcekey="lbShowdomainaliasmenu" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbShowdomainaliasmenu" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label3" meta:resourcekey="lbShowlistmenu" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbShowlistmenu" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label4" meta:resourcekey="lbShowspammenu" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbShowspammenu" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label5" meta:resourcekey="lbShowDomainReports" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbShowDomainReports" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label6" meta:resourcekey="lbEnablePopRetreival" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbEnablePopRetreival" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label7" meta:resourcekey="lbEnableCatchAlls" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbEnableCatchAlls" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label8" meta:resourcekey="lbEnableIMAPRetreival" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbEnableIMAPRetreival" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label9" meta:resourcekey="lbEnableMailSigning" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbEnableEmailSigning" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label10" meta:resourcekey="lbEnableMailReports" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbEnableEmailReports" />
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label11" meta:resourcekey="lbEnableSyncML" runat="server" /></td>
<td>
<asp:CheckBox runat="server" ID="cbEnableSyncML" />
</td>
</tr>
</table>

View file

@ -0,0 +1,71 @@
// Copyright (c) 2015, 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 WebsitePanel.Providers.Mail;
namespace WebsitePanel.Portal.ProviderControls
{
public partial class SmarterMail100_EditDomain_Features : WebsitePanelControlBase
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void SaveItem(MailDomain item)
{
item.ShowContentFilteringMenu = cbShowcontentfilteringmenu.Checked;
item.ShowDomainAliasMenu = cbShowdomainaliasmenu.Checked;
item.ShowListMenu = cbShowlistmenu.Checked;
item.ShowSpamMenu = cbShowspammenu.Checked;
item[MailDomain.SMARTERMAIL5_SHOW_DOMAIN_REPORTS] = cbShowDomainReports.Checked.ToString();
item[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ENABLED] = cbEnablePopRetreival.Checked.ToString();
item[MailDomain.SMARTERMAIL5_CATCHALLS_ENABLED] = cbEnableCatchAlls.Checked.ToString();
item[MailDomain.SMARTERMAIL6_IMAP_RETREIVAL_ENABLED] = cbEnableIMAPRetreival.ToString();
item[MailDomain.SMARTERMAIL6_MAIL_SIGNING_ENABLED] = cbEnableEmailSigning.ToString();
item[MailDomain.SMARTERMAIL6_EMAIL_REPORTS_ENABLED] = cbEnableEmailReports.ToString();
item[MailDomain.SMARTERMAIL6_SYNCML_ENABLED] = cbEnableSyncML.ToString();
}
public void BindItem(MailDomain item)
{
cbShowcontentfilteringmenu.Checked = item.ShowContentFilteringMenu;
cbShowdomainaliasmenu.Checked = item.ShowDomainAliasMenu;
cbShowlistmenu.Checked = item.ShowListMenu;
cbShowspammenu.Checked = item.ShowSpamMenu;
cbShowDomainReports.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_SHOW_DOMAIN_REPORTS]);
cbEnablePopRetreival.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ENABLED]);
cbEnableCatchAlls.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_CATCHALLS_ENABLED]);
cbEnableIMAPRetreival.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL6_IMAP_RETREIVAL_ENABLED]);
cbEnableEmailSigning.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL6_MAIL_SIGNING_ENABLED]);
cbEnableEmailReports.Checked = Convert.ToBoolean((item[MailDomain.SMARTERMAIL6_EMAIL_REPORTS_ENABLED]));
cbEnableSyncML.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL6_SYNCML_ENABLED]);
}
}
}

View file

@ -0,0 +1,213 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls {
public partial class SmarterMail100_EditDomain_Features {
/// <summary>
/// Label1 control.
/// </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 Label1;
/// <summary>
/// cbShowcontentfilteringmenu control.
/// </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 cbShowcontentfilteringmenu;
/// <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>
/// cbShowdomainaliasmenu control.
/// </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 cbShowdomainaliasmenu;
/// <summary>
/// Label3 control.
/// </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 Label3;
/// <summary>
/// cbShowlistmenu control.
/// </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 cbShowlistmenu;
/// <summary>
/// Label4 control.
/// </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 Label4;
/// <summary>
/// cbShowspammenu control.
/// </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 cbShowspammenu;
/// <summary>
/// Label5 control.
/// </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 Label5;
/// <summary>
/// cbShowDomainReports control.
/// </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 cbShowDomainReports;
/// <summary>
/// Label6 control.
/// </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 Label6;
/// <summary>
/// cbEnablePopRetreival control.
/// </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 cbEnablePopRetreival;
/// <summary>
/// Label7 control.
/// </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 Label7;
/// <summary>
/// cbEnableCatchAlls control.
/// </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 cbEnableCatchAlls;
/// <summary>
/// Label8 control.
/// </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 Label8;
/// <summary>
/// cbEnableIMAPRetreival control.
/// </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 cbEnableIMAPRetreival;
/// <summary>
/// Label9 control.
/// </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 Label9;
/// <summary>
/// cbEnableEmailSigning control.
/// </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 cbEnableEmailSigning;
/// <summary>
/// Label10 control.
/// </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 Label10;
/// <summary>
/// cbEnableEmailReports control.
/// </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 cbEnableEmailReports;
/// <summary>
/// Label11 control.
/// </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 Label11;
/// <summary>
/// cbEnableSyncML control.
/// </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 cbEnableSyncML;
}
}

View file

@ -0,0 +1,27 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100_EditDomain_Sharing.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.SmarterMail100_EditDomain_Sharing" %>
<table width="100%">
<tr>
<td width="200px" align="right"><asp:Label ID="Label1" runat="server" meta:resourcekey="cbGlobalAddressList"/></td>
<td><asp:CheckBox runat="server" ID="cbGlobalAddressList" /></td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label2" runat="server" meta:resourcekey="cbSharedCalendars" /></td>
<td><asp:CheckBox runat="server" ID="cbSharedCalendars" /></td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label3" runat="server" meta:resourcekey="cbSharedContacts" /></td>
<td><asp:CheckBox runat="server" ID="cbSharedContacts" /></td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label4" runat="server" meta:resourcekey="cbSharedFolders"/></td>
<td><asp:CheckBox runat="server" ID="cbSharedFolders" /></td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label5" runat="server" meta:resourcekey="cbSharedNotes" /></td>
<td><asp:CheckBox runat="server" ID="cbSharedNotes" /></td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="Label6" runat="server" meta:resourcekey="cbSharedTasks" /></td>
<td><asp:CheckBox runat="server" ID="cbSharedTasks" /></td>
</tr>
</table>

View file

@ -0,0 +1,63 @@
// Copyright (c) 2015, 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 WebsitePanel.Providers.Mail;
namespace WebsitePanel.Portal.ProviderControls
{
public partial class SmarterMail100_EditDomain_Sharing : WebsitePanelControlBase
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void SaveItem(MailDomain item)
{
item.IsGlobalAddressList = cbGlobalAddressList.Checked;
item.SharedCalendars = cbSharedCalendars.Checked;
item.SharedContacts = cbSharedContacts.Checked;
item.SharedFolders = cbSharedFolders.Checked;
item.SharedNotes = cbSharedNotes.Checked;
item.SharedTasks = cbSharedTasks.Checked;
}
public void BindItem(MailDomain item)
{
cbGlobalAddressList.Checked = item.IsGlobalAddressList;
cbSharedCalendars.Checked = item.SharedCalendars;
cbSharedContacts.Checked = item.SharedContacts;
cbSharedFolders.Checked = item.SharedFolders;
cbSharedNotes.Checked = item.SharedNotes;
cbSharedTasks.Checked = item.SharedTasks;
}
}
}

View file

@ -0,0 +1,123 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls {
public partial class SmarterMail100_EditDomain_Sharing {
/// <summary>
/// Label1 control.
/// </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 Label1;
/// <summary>
/// cbGlobalAddressList control.
/// </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 cbGlobalAddressList;
/// <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>
/// cbSharedCalendars control.
/// </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 cbSharedCalendars;
/// <summary>
/// Label3 control.
/// </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 Label3;
/// <summary>
/// cbSharedContacts control.
/// </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 cbSharedContacts;
/// <summary>
/// Label4 control.
/// </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 Label4;
/// <summary>
/// cbSharedFolders control.
/// </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 cbSharedFolders;
/// <summary>
/// Label5 control.
/// </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 Label5;
/// <summary>
/// cbSharedNotes control.
/// </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 cbSharedNotes;
/// <summary>
/// Label6 control.
/// </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 Label6;
/// <summary>
/// cbSharedTasks control.
/// </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 cbSharedTasks;
}
}

View file

@ -0,0 +1,45 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100_EditDomain_Throttling.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.SmarterMail100_EditDomain_Throttling" %>
<table>
<tr>
<td align="right" width = "200"><asp:Label ID="lbMessagesPerHour" runat="server" meta:resourcekey="lbMessagesPerHour" /></td>
<td width = "100">
<asp:TextBox runat="server" ID="txtMessagesPerHour" Text="0" Width="80px" CssClass="NormalTextBox" />
<asp:RangeValidator Type="Integer" runat="server" ID="valMessagesPerHour" ControlToValidate="txtMessagesPerHour"
MinimumValue="0" Display="Dynamic" />
<asp:RequiredFieldValidator ID="reqValMessagesPerHour" runat="server" ControlToValidate="txtMessagesPerHour"
Display="Dynamic" />
</td>
<td align="left" width = "10">
<asp:CheckBox runat="server" ID="cbMessagesPerHour" />
</td>
<td width = "50" align="left"><asp:Label ID="lbMessagesPerHourEnabled" runat="server" meta:resourcekey="lbEnabled" /></td>
</tr>
<tr>
<td align="right" width = "200"><asp:Label ID="lbBandwidthPerHour" runat="server" meta:resourcekey="lbBandwidthPerHour" /></td>
<td width = "100">
<asp:TextBox runat="server" ID="txtBandwidthPerHour" Text="0" Width="80px" CssClass="NormalTextBox" />
<asp:RangeValidator Type="Integer" runat="server" ID="valBandwidthPerHour" ControlToValidate="txtBandwidthPerHour"
MinimumValue="0" Display="Dynamic" />
<asp:RequiredFieldValidator ID="reqValBandwidth" runat="server" ControlToValidate="txtBandwidthPerHour"
Display="Dynamic" />
</td>
<td align="left" width = "10">
<asp:CheckBox runat="server" ID="cbBandwidthPerHour"/>
</td>
<td width = "50" align="left"><asp:Label ID="lbBandwidthPerHourEnabled" runat="server" meta:resourcekey="lbEnabled" /></td>
</tr>
<tr>
<td align="right" width = "200"><asp:Label ID="lbBouncesPerHour" runat="server" meta:resourcekey="lbBouncesPerHour" /></td>
<td width = "100">
<asp:TextBox runat="server" ID="txtBouncesPerHour" Text="0" Width="80px" CssClass="NormalTextBox" />
<asp:RangeValidator Type="Integer" runat="server" ID="valBouncesPerHour" ControlToValidate="txtBouncesPerHour"
MinimumValue="0" Display="None" />
<asp:RequiredFieldValidator ID="reqValBouncesPerHour" runat="server" ControlToValidate="txtBouncesPerHour"
Display="None" />
</td>
<td align="left" width = "10">
<asp:CheckBox runat="server" ID="cbBouncesPerHour" />
</td>
<td width = "50" align="left"><asp:Label ID="lbBouncesPerHourEnabled" runat="server" meta:resourcekey="lbEnabled" /></td>
</tr>
</table>

View file

@ -0,0 +1,79 @@
// Copyright (c) 2015, 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 WebsitePanel.Providers.Mail;
namespace WebsitePanel.Portal.ProviderControls
{
public partial class SmarterMail100_EditDomain_Throttling : WebsitePanelControlBase
{
protected void Page_Load(object sender, EventArgs e)
{
InitValidators();
}
public void SaveItem(MailDomain item)
{
item[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR] = txtMessagesPerHour.Text;
item[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR_ENABLED] = cbMessagesPerHour.Checked.ToString();
item[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR] = txtBandwidthPerHour.Text;
item[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR_ENABLED] = cbBandwidthPerHour.Checked.ToString();
item[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR] = txtBouncesPerHour.Text;
item[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR_ENABLED] = cbBouncesPerHour.Checked.ToString();
}
public void BindItem(MailDomain item)
{
txtMessagesPerHour.Text = item[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR];
cbMessagesPerHour.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR_ENABLED]);
txtBandwidthPerHour.Text = item[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR];
cbBandwidthPerHour.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR_ENABLED]);
txtBouncesPerHour.Text = item[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR];
cbBouncesPerHour.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR_ENABLED]);
}
public void InitValidators()
{
string message = "*";
reqValMessagesPerHour.ErrorMessage = message;
valMessagesPerHour.ErrorMessage = message;
valMessagesPerHour.MaximumValue = int.MaxValue.ToString();
reqValBandwidth.ErrorMessage = message;
valBandwidthPerHour.ErrorMessage = message;
valBandwidthPerHour.MaximumValue = int.MaxValue.ToString();
reqValBouncesPerHour.ErrorMessage = message;
valBouncesPerHour.ErrorMessage = message;
valBouncesPerHour.MaximumValue = int.MaxValue.ToString();
}
}
}

View file

@ -0,0 +1,177 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls {
public partial class SmarterMail100_EditDomain_Throttling {
/// <summary>
/// lbMessagesPerHour control.
/// </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 lbMessagesPerHour;
/// <summary>
/// txtMessagesPerHour control.
/// </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 txtMessagesPerHour;
/// <summary>
/// valMessagesPerHour control.
/// </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 valMessagesPerHour;
/// <summary>
/// reqValMessagesPerHour control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValMessagesPerHour;
/// <summary>
/// cbMessagesPerHour control.
/// </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 cbMessagesPerHour;
/// <summary>
/// lbMessagesPerHourEnabled control.
/// </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 lbMessagesPerHourEnabled;
/// <summary>
/// lbBandwidthPerHour control.
/// </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 lbBandwidthPerHour;
/// <summary>
/// txtBandwidthPerHour control.
/// </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 txtBandwidthPerHour;
/// <summary>
/// valBandwidthPerHour control.
/// </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 valBandwidthPerHour;
/// <summary>
/// reqValBandwidth control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValBandwidth;
/// <summary>
/// cbBandwidthPerHour control.
/// </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 cbBandwidthPerHour;
/// <summary>
/// lbBandwidthPerHourEnabled control.
/// </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 lbBandwidthPerHourEnabled;
/// <summary>
/// lbBouncesPerHour control.
/// </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 lbBouncesPerHour;
/// <summary>
/// txtBouncesPerHour control.
/// </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 txtBouncesPerHour;
/// <summary>
/// valBouncesPerHour control.
/// </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 valBouncesPerHour;
/// <summary>
/// reqValBouncesPerHour control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValBouncesPerHour;
/// <summary>
/// cbBouncesPerHour control.
/// </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 cbBouncesPerHour;
/// <summary>
/// lbBouncesPerHourEnabled control.
/// </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 lbBouncesPerHourEnabled;
}
}

View file

@ -0,0 +1 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100_EditForwarding .ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.SmarterMail100_EditForwarding" %>

View file

@ -0,0 +1,51 @@
// Copyright (c) 2015, 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 WebsitePanel.Providers.Mail;
namespace WebsitePanel.Portal.ProviderControls
{
public partial class SmarterMail100_EditForwarding : WebsitePanelControlBase, IMailEditForwardingControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void BindItem(MailAlias item)
{
}
public void SaveItem(MailAlias item)
{
}
}
}

View file

@ -0,0 +1,15 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls {
public partial class SmarterMail100_EditForwarding {
}
}

View file

@ -0,0 +1,12 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100_EditGroup.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.SmarterMail100_EditGroup" %>
<%@ Register TagPrefix="dnc" TagName="EditItemsList" Src="../MailEditItems.ascx" %>
<table cellSpacing="0" cellPadding="3" width="100%">
<tr>
<td class="SubHead" width="200" nowrap valign="top">
<asp:Label ID="lblGroupMembers" runat="server" meta:resourcekey="lblGroupMembers" Text="Group e-mails:"></asp:Label>
</td>
<td class="normal" width="100%" valign="top">
<dnc:EditItemsList id="mailEditItems" runat="server"></dnc:EditItemsList>
</td>
</tr>
</table>

View file

@ -0,0 +1,51 @@
// Copyright (c) 2015, 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 WebsitePanel.Providers.Mail;
namespace WebsitePanel.Portal.ProviderControls
{
public partial class SmarterMail100_EditGroup : WebsitePanelControlBase, IMailEditGroupControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void BindItem(MailGroup item)
{
mailEditItems.Items = item.Members;
}
public void SaveItem(MailGroup item)
{
item.Members = mailEditItems.Items;
}
}
}

View file

@ -0,0 +1,33 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls {
public partial class SmarterMail100_EditGroup {
/// <summary>
/// lblGroupMembers control.
/// </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 lblGroupMembers;
/// <summary>
/// mailEditItems control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.MailEditItems mailEditItems;
}
}

View file

@ -0,0 +1,175 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100_EditList.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.SmarterMail100_EditList" %>
<%@ Register TagPrefix="dnc" TagName="EditItemsList" Src="../MailEditItems.ascx" %>
<%@ Register TagPrefix="wsp" Namespace="WebsitePanel.WebPortal.Code.Controls" Assembly="WebsitePanel.WebPortal" %>
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
<table cellSpacing="0" cellPadding="3" width="100%">
<tr>
<td class="SubHead" width="200" nowrap>
<asp:Label ID="lblDescription" runat="server" meta:resourcekey="lblDescription" Text="List Description:"></asp:Label>
</td>
<td class="normal" width="100%">
<asp:TextBox ID="txtDescription" runat="server" TextMode="MultiLine" Rows="3" Width="300px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblModeratorAddress" runat="server" meta:resourcekey="lblModeratorAddress" Text="List Moderator:"></asp:Label>
</td>
<td class="normal">
<asp:DropDownList ID="ddlListModerators" DataTextField="Moderator"
runat="server" Height="25px" Width="200px">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="reqValModerator" runat="server" ControlToValidate="ddlListModerators"
Display="Dynamic" ErrorMessage = "*"/>
<wsp:DesktopContextValidator runat="server" ID="ctxValDomain" CssClass="QuickLabel" Display="Dynamic" EnableViewState="false"
OnEvaluatingContext="ctxValDomain_EvaluatingContext" EnableClientScript="false" meta:resourcekey="ctxValDomain" />
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblPostingPassword" runat="server" meta:resourcekey="lblPostingPassword" Text="Posting password:"></asp:Label>
</td>
<td class="normal">
<asp:TextBox id="txtPassword" runat="server" CssClass="NormalTextBox" Width="150px"></asp:TextBox>
<asp:CheckBox ID="chkPasswordEnabled" runat="server" meta:resourcekey="chkPasswordEnabled" Text="Enabled" />
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblPostingMode" runat="server" resourcekey="lblPostingMode" Text="Posting mode:"></asp:Label>
</td>
<td class="normal">
<asp:DropDownList id="ddlPostingMode" runat="server" resourcekey="ddlPostingMode" CssClass="NormalTextBox" Width="150px">
<asp:ListItem Value="AnyoneCanPost">Anyone</asp:ListItem>
<asp:ListItem Value="MembersCanPost">MembersOnly</asp:ListItem>
<asp:ListItem Value="ModeratorCanPost">ModeratorOnly</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblSubjectPrefix" runat="server" meta:resourcekey="lblSubjectPrefix" Text="Subject Prefix:"></asp:Label>
</td>
<td class="normal">
<asp:TextBox id="txtSubjectPrefix" runat="server" CssClass="NormalTextBox" Width="150px"></asp:TextBox>
<asp:CheckBox ID="chkSubjectPrefixEnabled" runat="server" meta:resourcekey="chkSubjectPrefixEnabled" Text="Enabled" />
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblMaxMessageSize" runat="server" meta:resourcekey="lblMaxMessageSize" Text="Max Message Size, KB:"></asp:Label>
</td>
<td class="normal">
<asp:TextBox id="txtMaxMessageSize" runat="server" CssClass="NormalTextBox" Width="50px">0</asp:TextBox>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblMaxRecipients" runat="server" meta:resourcekey="lblMaxRecipients" Text="Max Recipients per Message:"></asp:Label>
</td>
<td class="normal">
<asp:TextBox id="txtMaxRecipients" runat="server" CssClass="NormalTextBox" Width="50px">10</asp:TextBox>
</td>
</tr>
<tr>
<td class="Normal">&nbsp;</td>
</tr>
<tr>
<td width="200px" align="right>
<asp:Label ID="lblListOptions" runat="server" meta:resourcekey="lblListOptions" Text="List Options:"></asp:Label>
</td>
<td>
<asp:CheckBox ID="chkReplyToList" runat="server" meta:resourcekey="chkReplyToList" Text="Reply To List" />
</td>
<td class="Normal"></td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblListToAddress" runat="server" resourcekey="lblListToAddress"></asp:Label>
</td>
<td class="normal">
<asp:DropDownList id="ddlListToAddress" runat="server" resourcekey="ddlListToAddress" CssClass="NormalTextBox" Width="150px">
<asp:ListItem Value="DEFAULT">Default</asp:ListItem>
<asp:ListItem Value="LISTADDRESS">List Address</asp:ListItem>
<asp:ListItem Value="SUBSCRIBERADDRESS">Subscriber Address</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblListFromAddress" runat="server" resourcekey="lblListFromAddress"></asp:Label>
</td>
<td class="normal">
<asp:DropDownList id="ddlListFromAddress" runat="server" resourcekey="ddlListFromAddress" CssClass="NormalTextBox" Width="150px">
<asp:ListItem Value="LISTADDRESS">List Address</asp:ListItem>
<asp:ListItem Value="POSTERADDRESS">Poster Address</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblListReplyToAddress" runat="server" resourcekey="lblListReplyToAddress"></asp:Label>
</td>
<td class="normal">
<asp:DropDownList id="ddlListReplyToAddress" runat="server" resourcekey="ddlListReplyToAddress" CssClass="NormalTextBox" Width="150px">
<asp:ListItem Value="LISTADDRESS">List Address</asp:ListItem>
<asp:ListItem Value="POSTERADDRESS">Poster Address</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="Normal">&nbsp;</td>
</tr>
<tr>
<td class="SubHead" vAlign="top">
<asp:Label ID="lblMembers" runat="server" meta:resourcekey="lblMembers" Text="Mailing list members:"></asp:Label>
</td>
<td vAlign="top">
<dnc:EditItemsList id="mailEditItems" runat="server"></dnc:EditItemsList>
</td>
</tr>
</table>
&nbsp
<wsp:collapsiblepanel id="AdditionalOptions" runat="server" targetcontrolid="pAdditionalOptions"
meta:resourcekey="AdditionalOptions" ></wsp:collapsiblepanel>
<asp:Panel runat="server" ID="pAdditionalOptions">
<table width="100%">
<tr>
<td width="200px" align="right"><asp:Label ID="lbDigestMode" runat="server" meta:resourcekey="lbDigestMode" /></td>
<td>
<asp:CheckBox runat="server" ID="cbDigestMode"/>
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="lbSendSubscribe" runat="server" meta:resourcekey="lbSendSubscribe" /></td>
<td>
<asp:CheckBox runat="server" ID="cbSendSubcsribe"/>
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="lbSendUnsubscribe" runat="server" meta:resourcekey="lbSendUnsubscribe" /></td>
<td>
<asp:CheckBox runat="server" ID="cbSendUnsubscribe"/>
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="lbAllowUnsubscribe" runat="server" meta:resourcekey="lbAllowUnsubscribe" /></td>
<td>
<asp:CheckBox runat="server" ID="cbAllowUnsubscribe"/>
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="lbDisableListcommand" runat="server" meta:resourcekey="lbDisableListcommand" /></td>
<td>
<asp:CheckBox runat="server" ID="cbDisableListcommand"/>
</td>
</tr>
<tr>
<td width="200px" align="right"><asp:Label ID="lbDisableSubscribecommand" runat="server" meta:resourcekey="lbDisableSubscribecommand" /></td>
<td>
<asp:CheckBox runat="server" ID="cbDisableSubscribecommand"/>
</td>
</tr>
</table>
</asp:Panel>

View file

@ -0,0 +1,210 @@
// Copyright (c) 2015, 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 WebsitePanel.Providers.Mail;
using WebsitePanel.WebPortal.Code.Controls;
namespace WebsitePanel.Portal.ProviderControls
{
public partial class SmarterMail100_EditList : WebsitePanelControlBase, IMailEditListControl
{
private string selectedModerator = null;
private string selectedListToAddress = null;
private string selectedListFromAddress = null;
private string selectedListReplyToAddress = null;
private string itemName = null;
private MailEditAddress ctrl = null;
protected void Page_Load(object sender, EventArgs e)
{
txtPassword.Attributes["value"] = txtPassword.Text;
BindListModerators();
}
public void BindItem(MailList item)
{
itemName = item.Name;
txtDescription.Text = item.Description;
if (String.IsNullOrEmpty(item.ModeratorAddress))
{
Utils.SelectListItem(ddlListModerators, GetLocalizedString("Text.SelectModerator"));
selectedModerator = GetLocalizedString("Text.SelectModerator");
}
else
{
Utils.SelectListItem(ddlListModerators, item.ModeratorAddress);
selectedModerator = item.ModeratorAddress;
}
chkReplyToList.Checked = (item.ReplyToMode == ReplyTo.RepliesToList);
Utils.SelectListItem(ddlPostingMode, item.PostingMode);
Utils.SelectListItem(ddlListToAddress, item.ListToAddress);
selectedListToAddress = item.ListToAddress;
Utils.SelectListItem(ddlListFromAddress, item.ListFromAddress);
selectedListFromAddress = item.ListFromAddress;
Utils.SelectListItem(ddlListReplyToAddress, item.ListReplyToAddress);
selectedListReplyToAddress = item.ListReplyToAddress;
txtPassword.Text = item.Password;
chkPasswordEnabled.Checked = item.RequirePassword;
cbDigestMode.Checked = item.DigestMode;
cbSendSubcsribe.Checked = item.SendSubscribe;
cbSendUnsubscribe.Checked = item.SendUnsubscribe;
cbAllowUnsubscribe.Checked = item.AllowUnsubscribe;
cbDisableListcommand.Checked = !item.DisableListcommand;
cbDisableSubscribecommand.Checked = !item.DisableSubscribecommand;
txtSubjectPrefix.Text = item.SubjectPrefix;
chkSubjectPrefixEnabled.Checked = item.EnableSubjectPrefix;
txtMaxMessageSize.Text = item.MaxMessageSize.ToString();
txtMaxRecipients.Text = item.MaxRecipientsPerMessage.ToString();
// members
mailEditItems.Items = item.Members;
}
public void SaveItem(MailList item)
{
item.Description = txtDescription.Text;
if (ddlListModerators.SelectedValue == GetLocalizedString("Text.SelectModerator"))
{
item.ModeratorAddress = null;
}
else
{
item.ModeratorAddress = ddlListModerators.SelectedValue;
}
item.ReplyToMode = chkReplyToList.Checked ? ReplyTo.RepliesToList : ReplyTo.RepliesToSender;
item.PostingMode = (PostingMode)Enum.Parse(typeof(PostingMode), ddlPostingMode.SelectedValue, true);
item.ListToAddress = ddlListToAddress.SelectedValue;
item.ListFromAddress = ddlListFromAddress.SelectedValue;
item.ListReplyToAddress = ddlListReplyToAddress.SelectedValue;
item.Password = txtPassword.Text;
item.RequirePassword = chkPasswordEnabled.Checked;
item.SubjectPrefix = txtSubjectPrefix.Text;
item.EnableSubjectPrefix = chkSubjectPrefixEnabled.Checked;
item.DigestMode = cbDigestMode.Checked;
item.SendSubscribe = cbSendSubcsribe.Checked;
item.SendUnsubscribe = cbSendUnsubscribe.Checked;
item.AllowUnsubscribe = cbAllowUnsubscribe.Checked;
item.DisableListcommand = !cbDisableListcommand.Checked;
item.DisableSubscribecommand = !cbDisableSubscribecommand.Checked;
item.MaxMessageSize = Int32.Parse(txtMaxMessageSize.Text);
item.MaxRecipientsPerMessage = Int32.Parse(txtMaxRecipients.Text);
item.Members = mailEditItems.Items;
ctrl = null;
}
public void BindListModerators()
{
string domainName = null;
if (!String.IsNullOrEmpty(itemName))
{
domainName = GetDomainName(itemName);
MailAccount[] moderators = ES.Services.MailServers.GetMailAccounts(PanelSecurity.PackageId, true);
ddlListModerators.Items.Clear();
ddlListModerators.Items.Insert(0, new ListItem(GetLocalizedString("Text.SelectModerator"), ""));
if (moderators != null)
foreach (MailAccount account in moderators)
{
if (GetDomainName(account.Name) == domainName)
{
if (ddlListModerators != null)
{
ddlListModerators.Items.Add(new ListItem(account.Name));
ddlListToAddress.Items.Add(new ListItem(account.Name));
ddlListFromAddress.Items.Add(new ListItem(account.Name));
ddlListReplyToAddress.Items.Add(new ListItem(account.Name));
}
}
}
Utils.SelectListItem(ddlListModerators, selectedModerator);
Utils.SelectListItem(ddlListToAddress, selectedListToAddress);
Utils.SelectListItem(ddlListFromAddress, selectedListFromAddress);
Utils.SelectListItem(ddlListReplyToAddress, selectedListReplyToAddress);
}
else
{
MailAccount[] moderators = ES.Services.MailServers.GetMailAccounts(PanelSecurity.PackageId, true);
ddlListModerators.Items.Clear();
ddlListModerators.Items.Insert(0, new ListItem(GetLocalizedString("Text.SelectModerator"), ""));
if (moderators != null)
foreach (MailAccount account in moderators)
{
if (ddlListModerators != null)
{
ddlListModerators.Items.Add(new ListItem(account.Name));
ddlListToAddress.Items.Add(new ListItem(account.Name));
ddlListFromAddress.Items.Add(new ListItem(account.Name));
ddlListReplyToAddress.Items.Add(new ListItem(account.Name));
}
}
Utils.SelectListItem(ddlListModerators, selectedModerator);
Utils.SelectListItem(ddlListToAddress, selectedListToAddress);
Utils.SelectListItem(ddlListFromAddress, selectedListFromAddress);
Utils.SelectListItem(ddlListReplyToAddress, selectedListReplyToAddress);
}
}
private string GetDomainName(string email)
{
return email.Substring(email.IndexOf("@") + 1);
}
protected void ctxValDomain_EvaluatingContext(object sender, DesktopValidationEventArgs e)
{
if (Parent != null) ctrl = (MailEditAddress)Parent.Parent.FindControl("emailAddress");
string moderator = ddlListModerators.SelectedValue;
if (ctrl != null)
{
if (String.Equals(GetDomainName(moderator), GetDomainName(ctrl.Email), StringComparison.InvariantCultureIgnoreCase))
{
e.ContextIsValid = true;
return;
}
}
e.ContextIsValid = false;
}
}
}

View file

@ -0,0 +1,393 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls {
public partial class SmarterMail100_EditList {
/// <summary>
/// lblDescription control.
/// </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 lblDescription;
/// <summary>
/// txtDescription control.
/// </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 txtDescription;
/// <summary>
/// lblModeratorAddress control.
/// </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 lblModeratorAddress;
/// <summary>
/// ddlListModerators control.
/// </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 ddlListModerators;
/// <summary>
/// reqValModerator control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValModerator;
/// <summary>
/// ctxValDomain control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.WebPortal.Code.Controls.DesktopContextValidator ctxValDomain;
/// <summary>
/// lblPostingPassword control.
/// </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 lblPostingPassword;
/// <summary>
/// txtPassword control.
/// </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 txtPassword;
/// <summary>
/// chkPasswordEnabled control.
/// </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 chkPasswordEnabled;
/// <summary>
/// lblPostingMode control.
/// </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 lblPostingMode;
/// <summary>
/// ddlPostingMode control.
/// </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 ddlPostingMode;
/// <summary>
/// lblSubjectPrefix control.
/// </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 lblSubjectPrefix;
/// <summary>
/// txtSubjectPrefix control.
/// </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 txtSubjectPrefix;
/// <summary>
/// chkSubjectPrefixEnabled control.
/// </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 chkSubjectPrefixEnabled;
/// <summary>
/// lblMaxMessageSize control.
/// </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 lblMaxMessageSize;
/// <summary>
/// txtMaxMessageSize control.
/// </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 txtMaxMessageSize;
/// <summary>
/// lblMaxRecipients control.
/// </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 lblMaxRecipients;
/// <summary>
/// txtMaxRecipients control.
/// </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 txtMaxRecipients;
/// <summary>
/// lblListOptions control.
/// </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 lblListOptions;
/// <summary>
/// chkReplyToList control.
/// </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 chkReplyToList;
/// <summary>
/// lblListToAddress control.
/// </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 lblListToAddress;
/// <summary>
/// ddlListToAddress control.
/// </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 ddlListToAddress;
/// <summary>
/// lblListFromAddress control.
/// </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 lblListFromAddress;
/// <summary>
/// ddlListFromAddress control.
/// </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 ddlListFromAddress;
/// <summary>
/// lblListReplyToAddress control.
/// </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 lblListReplyToAddress;
/// <summary>
/// ddlListReplyToAddress control.
/// </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 ddlListReplyToAddress;
/// <summary>
/// lblMembers control.
/// </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 lblMembers;
/// <summary>
/// mailEditItems control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.MailEditItems mailEditItems;
/// <summary>
/// AdditionalOptions control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel AdditionalOptions;
/// <summary>
/// pAdditionalOptions control.
/// </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 pAdditionalOptions;
/// <summary>
/// lbDigestMode control.
/// </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 lbDigestMode;
/// <summary>
/// cbDigestMode control.
/// </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 cbDigestMode;
/// <summary>
/// lbSendSubscribe control.
/// </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 lbSendSubscribe;
/// <summary>
/// cbSendSubcsribe control.
/// </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 cbSendSubcsribe;
/// <summary>
/// lbSendUnsubscribe control.
/// </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 lbSendUnsubscribe;
/// <summary>
/// cbSendUnsubscribe control.
/// </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 cbSendUnsubscribe;
/// <summary>
/// lbAllowUnsubscribe control.
/// </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 lbAllowUnsubscribe;
/// <summary>
/// cbAllowUnsubscribe control.
/// </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 cbAllowUnsubscribe;
/// <summary>
/// lbDisableListcommand control.
/// </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 lbDisableListcommand;
/// <summary>
/// cbDisableListcommand control.
/// </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 cbDisableListcommand;
/// <summary>
/// lbDisableSubscribecommand control.
/// </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 lbDisableSubscribecommand;
/// <summary>
/// cbDisableSubscribecommand control.
/// </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 cbDisableSubscribecommand;
}
}

View file

@ -0,0 +1,62 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100_Settings.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.SmarterMail100_Settings" %>
<%@ Register Src="../UserControls/SelectIPAddress.ascx" TagName="SelectIPAddress" TagPrefix="uc1" %>
<table cellpadding="7" cellspacing="0" width="100%">
<tr>
<td class="SubHead" nowrap width="200">
<asp:Label ID="lblServiceUrl" runat="server" meta:resourcekey="lblServiceUrl" Text="Web Services URL:"></asp:Label>
</td>
<td width="100%"><asp:TextBox Runat="server" ID="txtServiceUrl" CssClass="NormalTextBox" Width="200px"></asp:TextBox></td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblPublicIP" runat="server" meta:resourcekey="lblPublicIP" Text="Public IP Address:"></asp:Label>
</td>
<td>
<uc1:SelectIPAddress ID="ipAddress" runat="server" ServerIdParam="ServerID" UseAddressValueAsKey="true" />
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblDomainsPath" runat="server" meta:resourcekey="lblDomainsPath" Text="Domains Root Folder:"></asp:Label>
</td>
<td>
<asp:TextBox Runat="server" ID="txtDomainsFolder" CssClass="NormalTextBox" Width="200px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblAdminLogin" runat="server" meta:resourcekey="lblAdminLogin" Text="Admin Login:"></asp:Label>
</td>
<td>
<asp:TextBox Runat="server" ID="txtUsername" CssClass="NormalTextBox" Width="200px"></asp:TextBox>
</td>
</tr>
<tr id="rowPassword" runat="server">
<td class="SubHead">
<asp:Label ID="lblCurrPassword" runat="server" meta:resourcekey="lblCurrPassword" Text="Current Admin Password:"></asp:Label>
</td>
<td class="Normal">*******
</td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblAdminPassword" runat="server" meta:resourcekey="lblAdminPassword" Text="Admin Password:"></asp:Label>
</td>
<td>
<asp:TextBox Runat="server" ID="txtPassword" CssClass="NormalTextBox" Width="200px" TextMode="Password"></asp:TextBox>
</td>
</tr>
<tr>
<td></td>
<td><asp:CheckBox runat="server" ID="cbImportDomainAdmin" meta:resourcekey="cbImportDomainAdmin"/></td>
</tr>
<tr>
<td></td>
<td><asp:CheckBox runat="server" ID="cbInheritDefaultLimits" meta:resourcekey="cbInheritDefaultLimits"/></td>
</tr>
<tr>
<td></td>
<td><asp:CheckBox runat="server" ID="cbEnableDomainAdmin" meta:resourcekey="cbEnableDomainAdmin"/></td>
</tr>
</table>

View file

@ -0,0 +1,66 @@
// Copyright (c) 2015, 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.Specialized;
using WebsitePanel.Providers.Common;
namespace WebsitePanel.Portal.ProviderControls
{
public partial class SmarterMail100_Settings : WebsitePanelControlBase, IHostingServiceProviderSettings
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void BindSettings(StringDictionary settings)
{
txtServiceUrl.Text = settings["ServiceUrl"];
ipAddress.AddressValue = settings["ServerIPAddress"];
txtDomainsFolder.Text = settings["DomainsPath"];
txtUsername.Text = settings["AdminUsername"];
ViewState["PWD"] = settings["AdminPassword"];
rowPassword.Visible = ((string)ViewState["PWD"]) != "";
cbImportDomainAdmin.Checked = Utils.ParseBool(settings[Constants.ImportDomainAdmin], false);
cbInheritDefaultLimits.Checked = Utils.ParseBool(settings[Constants.InheritDomainDefaultLimits], false);
cbEnableDomainAdmin.Checked = Utils.ParseBool(settings[Constants.EnableDomainAdministrators], false);
}
public void SaveSettings(StringDictionary settings)
{
settings["ServiceUrl"] = txtServiceUrl.Text.Trim();
settings["ServerIPAddress"] = ipAddress.AddressValue;
settings["DomainsPath"] = txtDomainsFolder.Text.Trim();
settings["AdminUsername"] = txtUsername.Text.Trim();
settings["AdminPassword"] = (txtPassword.Text.Length > 0) ? txtPassword.Text : (string)ViewState["PWD"];
settings[Constants.ImportDomainAdmin] = cbImportDomainAdmin.Checked.ToString();
settings[Constants.InheritDomainDefaultLimits] = cbInheritDefaultLimits.Checked.ToString();
settings[Constants.EnableDomainAdministrators] = cbEnableDomainAdmin.Checked.ToString();
}
}
}

View file

@ -0,0 +1,150 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ProviderControls {
public partial class SmarterMail100_Settings {
/// <summary>
/// lblServiceUrl control.
/// </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 lblServiceUrl;
/// <summary>
/// txtServiceUrl control.
/// </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 txtServiceUrl;
/// <summary>
/// lblPublicIP control.
/// </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 lblPublicIP;
/// <summary>
/// ipAddress control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.SelectIPAddress ipAddress;
/// <summary>
/// lblDomainsPath control.
/// </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 lblDomainsPath;
/// <summary>
/// txtDomainsFolder control.
/// </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 txtDomainsFolder;
/// <summary>
/// lblAdminLogin control.
/// </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 lblAdminLogin;
/// <summary>
/// txtUsername control.
/// </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 txtUsername;
/// <summary>
/// rowPassword 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 rowPassword;
/// <summary>
/// lblCurrPassword control.
/// </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 lblCurrPassword;
/// <summary>
/// lblAdminPassword control.
/// </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 lblAdminPassword;
/// <summary>
/// txtPassword control.
/// </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 txtPassword;
/// <summary>
/// cbImportDomainAdmin control.
/// </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 cbImportDomainAdmin;
/// <summary>
/// cbInheritDefaultLimits control.
/// </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 cbInheritDefaultLimits;
/// <summary>
/// cbEnableDomainAdmin control.
/// </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 cbEnableDomainAdmin;
}
}

View file

@ -36,6 +36,7 @@ using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using WebsitePanel.Portal.Code.Helpers;
namespace WebsitePanel.Portal
{

View file

@ -28,6 +28,15 @@
<asp:Label id="lnkDisplayMailboxPlan" runat="server" EnableViewState="true" ><%# PortalAntiXSS.Encode((string)Eval("MailboxPlan"))%></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<ItemStyle Width="15%"></ItemStyle>
<ItemTemplate>
&nbsp;<label>
<input type="radio" name="DefaultMailboxPlan" value='<%# Eval("MailboxPlanId") %>' <%# IsChecked((bool) Eval("IsDefault")) %>/>
<asp:Label runat="server" meta:resourcekey="lblDefaultMailboxPlan" Text="Default"></asp:Label>
</label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
&nbsp;<asp:ImageButton id="imgDelMailboxPlan" runat="server" Text="Delete" SkinID="ExchangeDelete"
@ -52,7 +61,11 @@
</Columns>
</asp:GridView>
<br />
<br />
<div style="text-align: center">
<asp:Button ID="btnSetDefaultMailboxPlan" runat="server" meta:resourcekey="btnSetDefaultMailboxPlan"
Text="Set Default Mailboxplan" CssClass="Button1" OnClick="btnSetDefaultMailboxPlan_Click" />
</div>
<wsp:CollapsiblePanel id="secMailboxPlan" runat="server"
TargetControlID="MailboxPlan" meta:resourcekey="secMailboxPlan" Text="Mailboxplan">
</wsp:CollapsiblePanel>

View file

@ -36,7 +36,7 @@ using System.Xml.Serialization;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
@ -99,21 +99,7 @@ namespace WebsitePanel.Portal
private void BindMailboxPlans()
{
Providers.HostedSolution.Organization[] orgs = null;
if (PanelSecurity.SelectedUserId != 1)
{
PackageInfo[] Packages = ES.Services.Packages.GetPackages(PanelSecurity.SelectedUserId);
if ((Packages != null) & (Packages.GetLength(0) > 0))
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Packages[0].PackageId, false);
}
}
else
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, false);
}
Providers.HostedSolution.Organization[] orgs = GetOrganizations();
if ((orgs != null) & (orgs.GetLength(0) > 0))
{
@ -123,6 +109,9 @@ namespace WebsitePanel.Portal
gvMailboxPlans.DataBind();
}
// enable set default plan button if organization has two or more plans
btnSetDefaultMailboxPlan.Enabled = gvMailboxPlans.Rows.Count > 1;
btnUpdateMailboxPlan.Enabled = (string.IsNullOrEmpty(txtMailboxPlan.Text)) ? false : true;
}
@ -185,21 +174,7 @@ namespace WebsitePanel.Portal
if (PanelSecurity.SelectedUser.Role == UserRole.Reseller)
plan.MailboxPlanType = (int)ExchangeMailboxPlanType.Reseller;
Providers.HostedSolution.Organization[] orgs = null;
if (PanelSecurity.SelectedUserId != 1)
{
PackageInfo[] Packages = ES.Services.Packages.GetPackages(PanelSecurity.SelectedUserId);
if ((Packages != null) & (Packages.GetLength(0) > 0))
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Packages[0].PackageId, false);
}
}
else
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, false);
}
Providers.HostedSolution.Organization[] orgs = GetOrganizations();
if ((orgs != null) & (orgs.GetLength(0) > 0))
@ -231,20 +206,7 @@ namespace WebsitePanel.Portal
case "DeleteItem":
try
{
if (PanelSecurity.SelectedUserId != 1)
{
PackageInfo[] Packages = ES.Services.Packages.GetPackages(PanelSecurity.SelectedUserId);
if ((Packages != null) & (Packages.GetLength(0) > 0))
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Packages[0].PackageId, false);
}
}
else
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, false);
}
orgs = GetOrganizations();
plan = ES.Services.ExchangeServer.GetExchangeMailboxPlan(orgs[0].Id, mailboxPlanId);
@ -308,20 +270,7 @@ namespace WebsitePanel.Portal
case "EditItem":
ViewState["MailboxPlanID"] = mailboxPlanId;
if (PanelSecurity.SelectedUserId != 1)
{
PackageInfo[] Packages = ES.Services.Packages.GetPackages(PanelSecurity.SelectedUserId);
if ((Packages != null) & (Packages.GetLength(0) > 0))
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Packages[0].PackageId, false);
}
}
else
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, false);
}
orgs = GetOrganizations();
plan = ES.Services.ExchangeServer.GetExchangeMailboxPlan(orgs[0].Id, mailboxPlanId);
txtMailboxPlan.Text = plan.MailboxPlan;
@ -421,24 +370,9 @@ namespace WebsitePanel.Portal
return;
int mailboxPlanId = (int)ViewState["MailboxPlanID"];
Providers.HostedSolution.Organization[] orgs = null;
Providers.HostedSolution.Organization[] orgs = GetOrganizations();
Providers.HostedSolution.ExchangeMailboxPlan plan;
if (PanelSecurity.SelectedUserId != 1)
{
PackageInfo[] Packages = ES.Services.Packages.GetPackages(PanelSecurity.SelectedUserId);
if ((Packages != null) & (Packages.GetLength(0) > 0))
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Packages[0].PackageId, false);
}
}
else
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, false);
}
plan = ES.Services.ExchangeServer.GetExchangeMailboxPlan(orgs[0].Id, mailboxPlanId);
if (plan.ItemId != orgs[0].Id)
@ -668,36 +602,22 @@ namespace WebsitePanel.Portal
{
ddTags.Items.Clear();
Providers.HostedSolution.Organization[] orgs = null;
Organization[] orgs = GetOrganizations();
if (PanelSecurity.SelectedUserId != 1)
{
PackageInfo[] Packages = ES.Services.Packages.GetPackages(PanelSecurity.SelectedUserId);
if ((Packages != null) & (Packages.GetLength(0) > 0))
if ((orgs != null) && (orgs.GetLength(0) > 0))
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Packages[0].PackageId, false);
}
}
else
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, false);
}
Providers.HostedSolution.ExchangeRetentionPolicyTag[] allTags = ES.Services.ExchangeServer.GetExchangeRetentionPolicyTags(orgs[0].Id);
List<ExchangeMailboxPlanRetentionPolicyTag> selectedTags = ViewState["Tags"] as List<ExchangeMailboxPlanRetentionPolicyTag>;
if ((orgs != null) & (orgs.GetLength(0) > 0))
{
Providers.HostedSolution.ExchangeRetentionPolicyTag[] allTags = ES.Services.ExchangeServer.GetExchangeRetentionPolicyTags(orgs[0].Id);
List<ExchangeMailboxPlanRetentionPolicyTag> selectedTags = ViewState["Tags"] as List<ExchangeMailboxPlanRetentionPolicyTag>;
foreach (Providers.HostedSolution.ExchangeRetentionPolicyTag tag in allTags)
{
if (selectedTags != null)
foreach (Providers.HostedSolution.ExchangeRetentionPolicyTag tag in allTags)
{
if (selectedTags.Find(x => x.TagID == tag.TagID) != null)
continue;
}
if (selectedTags != null)
{
if (selectedTags.Find(x => x.TagID == tag.TagID) != null)
continue;
}
ddTags.Items.Add(new System.Web.UI.WebControls.ListItem(tag.TagName, tag.TagID.ToString()));
ddTags.Items.Add(new System.Web.UI.WebControls.ListItem(tag.TagName, tag.TagID.ToString()));
}
}
@ -737,5 +657,55 @@ namespace WebsitePanel.Portal
}
protected Organization[] GetOrganizations()
{
Organization[] orgs = null;
if (PanelSecurity.SelectedUserId != 1)
{
PackageInfo[] Packages = ES.Services.Packages.GetPackages(PanelSecurity.SelectedUserId);
if ((Packages != null) & (Packages.GetLength(0) > 0))
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Packages[0].PackageId, false);
}
}
else
{
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, false);
}
return orgs;
}
protected void btnSetDefaultMailboxPlan_Click(object sender, EventArgs e)
{
// get domain
int mailboxPlanId = Utils.ParseInt(Request.Form["DefaultMailboxPlan"], 0);
try
{
var orgs = GetOrganizations();
if ((orgs != null) && (orgs.GetLength(0) > 0))
{
ES.Services.ExchangeServer.SetOrganizationDefaultExchangeMailboxPlan(orgs[0].Id, mailboxPlanId);
messageBox.ShowSuccessMessage("EXCHANGE_SET_DEFAULT_MAILBOXPLAN");
// rebind domains
BindMailboxPlans();
}
}
catch (Exception ex)
{
messageBox.ShowErrorMessage("EXCHANGE_SET_DEFAULT_MAILBOXPLAN", ex);
}
}
protected string IsChecked(bool val)
{
return val ? "checked" : "";
}
}
}

View file

@ -35,11 +35,13 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal {
public partial class SettingsExchangeMailboxPlansPolicy {
namespace WebsitePanel.Portal
{
public partial class SettingsExchangeMailboxPlansPolicy
{
/// <summary>
/// asyncTasks control.
/// </summary>
@ -48,7 +50,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
/// <summary>
/// messageBox control.
/// </summary>
@ -57,7 +59,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
/// <summary>
/// gvMailboxPlans control.
/// </summary>
@ -66,7 +68,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.GridView gvMailboxPlans;
/// <summary>
/// secMailboxPlan control.
/// </summary>
@ -75,7 +77,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secMailboxPlan;
/// <summary>
/// MailboxPlan control.
/// </summary>
@ -84,7 +86,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Panel MailboxPlan;
/// <summary>
/// txtMailboxPlan control.
/// </summary>
@ -93,7 +95,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtMailboxPlan;
/// <summary>
/// valRequireMailboxPlan control.
/// </summary>
@ -102,7 +104,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireMailboxPlan;
/// <summary>
/// secMailboxFeatures control.
/// </summary>
@ -111,7 +113,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secMailboxFeatures;
/// <summary>
/// MailboxFeatures control.
/// </summary>
@ -120,7 +122,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Panel MailboxFeatures;
/// <summary>
/// chkPOP3 control.
/// </summary>
@ -129,7 +131,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkPOP3;
/// <summary>
/// chkIMAP control.
/// </summary>
@ -138,7 +140,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkIMAP;
/// <summary>
/// chkOWA control.
/// </summary>
@ -147,7 +149,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkOWA;
/// <summary>
/// chkMAPI control.
/// </summary>
@ -156,7 +158,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkMAPI;
/// <summary>
/// chkActiveSync control.
/// </summary>
@ -165,7 +167,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkActiveSync;
/// <summary>
/// secMailboxGeneral control.
/// </summary>
@ -174,7 +176,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secMailboxGeneral;
/// <summary>
/// MailboxGeneral control.
/// </summary>
@ -183,7 +185,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Panel MailboxGeneral;
/// <summary>
/// chkHideFromAddressBook control.
/// </summary>
@ -192,7 +194,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkHideFromAddressBook;
/// <summary>
/// secStorageQuotas control.
/// </summary>
@ -201,7 +203,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secStorageQuotas;
/// <summary>
/// StorageQuotas control.
/// </summary>
@ -210,7 +212,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Panel StorageQuotas;
/// <summary>
/// locMailboxSize control.
/// </summary>
@ -219,7 +221,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locMailboxSize;
/// <summary>
/// mailboxSize control.
/// </summary>
@ -228,7 +230,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.QuotaEditor mailboxSize;
/// <summary>
/// locMaxRecipients control.
/// </summary>
@ -237,7 +239,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locMaxRecipients;
/// <summary>
/// maxRecipients control.
/// </summary>
@ -246,7 +248,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.QuotaEditor maxRecipients;
/// <summary>
/// locMaxSendMessageSizeKB control.
/// </summary>
@ -255,7 +257,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locMaxSendMessageSizeKB;
/// <summary>
/// maxSendMessageSizeKB control.
/// </summary>
@ -264,7 +266,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.QuotaEditor maxSendMessageSizeKB;
/// <summary>
/// locMaxReceiveMessageSizeKB control.
/// </summary>
@ -273,7 +275,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locMaxReceiveMessageSizeKB;
/// <summary>
/// maxReceiveMessageSizeKB control.
/// </summary>
@ -282,7 +284,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.QuotaEditor maxReceiveMessageSizeKB;
/// <summary>
/// locWhenSizeExceeds control.
/// </summary>
@ -291,7 +293,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locWhenSizeExceeds;
/// <summary>
/// locIssueWarning control.
/// </summary>
@ -300,7 +302,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locIssueWarning;
/// <summary>
/// sizeIssueWarning control.
/// </summary>
@ -309,7 +311,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox sizeIssueWarning;
/// <summary>
/// locProhibitSend control.
/// </summary>
@ -318,7 +320,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locProhibitSend;
/// <summary>
/// sizeProhibitSend control.
/// </summary>
@ -327,7 +329,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox sizeProhibitSend;
/// <summary>
/// locProhibitSendReceive control.
/// </summary>
@ -336,7 +338,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locProhibitSendReceive;
/// <summary>
/// sizeProhibitSendReceive control.
/// </summary>
@ -345,7 +347,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox sizeProhibitSendReceive;
/// <summary>
/// secDeleteRetention control.
/// </summary>
@ -354,7 +356,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secDeleteRetention;
/// <summary>
/// DeleteRetention control.
/// </summary>
@ -363,7 +365,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Panel DeleteRetention;
/// <summary>
/// locKeepDeletedItems control.
/// </summary>
@ -372,7 +374,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locKeepDeletedItems;
/// <summary>
/// daysKeepDeletedItems control.
/// </summary>
@ -381,7 +383,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.DaysBox daysKeepDeletedItems;
/// <summary>
/// secLitigationHold control.
/// </summary>
@ -390,7 +392,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secLitigationHold;
/// <summary>
/// LitigationHold control.
/// </summary>
@ -399,7 +401,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Panel LitigationHold;
/// <summary>
/// chkEnableLitigationHold control.
/// </summary>
@ -408,7 +410,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkEnableLitigationHold;
/// <summary>
/// locRecoverableItemsSpace control.
/// </summary>
@ -417,7 +419,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locRecoverableItemsSpace;
/// <summary>
/// recoverableItemsSpace control.
/// </summary>
@ -426,7 +428,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.QuotaEditor recoverableItemsSpace;
/// <summary>
/// locRecoverableItemsWarning control.
/// </summary>
@ -435,7 +437,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locRecoverableItemsWarning;
/// <summary>
/// recoverableItemsWarning control.
/// </summary>
@ -444,7 +446,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox recoverableItemsWarning;
/// <summary>
/// lblLitigationHoldUrl control.
/// </summary>
@ -453,7 +455,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblLitigationHoldUrl;
/// <summary>
/// txtLitigationHoldUrl control.
/// </summary>
@ -462,7 +464,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtLitigationHoldUrl;
/// <summary>
/// lblLitigationHoldMsg control.
/// </summary>
@ -471,7 +473,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblLitigationHoldMsg;
/// <summary>
/// txtLitigationHoldMsg control.
/// </summary>
@ -480,7 +482,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtLitigationHoldMsg;
/// <summary>
/// secArchiving control.
/// </summary>
@ -489,7 +491,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secArchiving;
/// <summary>
/// Archiving control.
/// </summary>
@ -498,7 +500,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Panel Archiving;
/// <summary>
/// chkEnableArchiving control.
/// </summary>
@ -507,7 +509,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkEnableArchiving;
/// <summary>
/// locArchiveQuota control.
/// </summary>
@ -516,7 +518,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locArchiveQuota;
/// <summary>
/// archiveQuota control.
/// </summary>
@ -525,7 +527,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.QuotaEditor archiveQuota;
/// <summary>
/// locArchiveWarningQuota control.
/// </summary>
@ -534,7 +536,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locArchiveWarningQuota;
/// <summary>
/// archiveWarningQuota control.
/// </summary>
@ -543,7 +545,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox archiveWarningQuota;
/// <summary>
/// secRetentionPolicyTags control.
/// </summary>
@ -552,7 +554,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secRetentionPolicyTags;
/// <summary>
/// RetentionPolicyTags control.
/// </summary>
@ -561,7 +563,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Panel RetentionPolicyTags;
/// <summary>
/// GeneralUpdatePanel control.
/// </summary>
@ -570,7 +572,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.UpdatePanel GeneralUpdatePanel;
/// <summary>
/// gvPolicy control.
/// </summary>
@ -579,7 +581,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.GridView gvPolicy;
/// <summary>
/// ddTags control.
/// </summary>
@ -588,7 +590,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddTags;
/// <summary>
/// bntAddTag control.
/// </summary>
@ -597,7 +599,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button bntAddTag;
/// <summary>
/// btnAddMailboxPlan control.
/// </summary>
@ -606,7 +608,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnAddMailboxPlan;
/// <summary>
/// btnUpdateMailboxPlan control.
/// </summary>
@ -615,7 +617,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnUpdateMailboxPlan;
/// <summary>
/// txtStatus control.
/// </summary>
@ -624,5 +626,7 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtStatus;
protected global::System.Web.UI.WebControls.Button btnSetDefaultMailboxPlan;
}
}

View file

@ -181,6 +181,23 @@
<td class="Normal">
<asp:CheckBox ID="chkCgiBin" runat="server" Text="Installed" /></td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblCfExt" runat="server" meta:resourcekey="lblCfExt" Text="ColdFusion:"></asp:Label>
</td>
<td class="Normal">
<asp:CheckBox ID="chkCfExt" runat="server" Text="Enabled" /></td>
</tr>
<tr>
<td class="SubHead">
<asp:Label ID="lblVirtDir" runat="server" meta:resourcekey="lblVirtDir" Text="CFVirtualDirectories:"></asp:Label>
</td>
<td class="Normal">
<asp:CheckBox ID="chkVirtDir" runat="server" Text="Enabled" /></td>
</tr>
</table>
</asp:Panel>

View file

@ -76,6 +76,8 @@ namespace WebsitePanel.Portal
chkPerl.Checked = Utils.ParseBool(settings["PerlInstalled"], false);
chkPython.Checked = Utils.ParseBool(settings["PythonInstalled"], false);
chkCgiBin.Checked = Utils.ParseBool(settings["CgiBinInstalled"], false);
chkCfExt.Checked = Utils.ParseBool(settings["ColdFusionInstalled"], false);
chkVirtDir.Checked = Utils.ParseBool(settings["CreateCFVirtualDirectoriesPol"], false);
// anonymous account policy
anonymousUsername.Value = settings["AnonymousAccountPolicy"];
@ -130,6 +132,8 @@ namespace WebsitePanel.Portal
settings["PerlInstalled"] = chkPerl.Checked.ToString();
settings["PythonInstalled"] = chkPython.Checked.ToString();
settings["CgiBinInstalled"] = chkCgiBin.Checked.ToString();
settings["ColdFusionInstalled"] = chkCfExt.Checked.ToString();
settings["CreateCFVirtualDirectoriesPol"] = chkVirtDir.Checked.ToString();
// anonymous account policy
settings["AnonymousAccountPolicy"] = anonymousUsername.Value;

View file

@ -462,6 +462,42 @@ namespace WebsitePanel.Portal {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkCgiBin;
/// <summary>
/// lblCfExt control.
/// </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 lblCfExt;
/// <summary>
/// chkCfExt control.
/// </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 chkCfExt;
/// <summary>
/// lblVirtDir control.
/// </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 lblVirtDir;
/// <summary>
/// chkVirtDir control.
/// </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 chkVirtDir;
/// <summary>
/// secAnonymousAccount control.

View file

@ -0,0 +1,144 @@
// Copyright (c) 2015, 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;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Web.UI.WebControls;
namespace WebsitePanel.Portal.UserControls
{
public abstract class ActionListControlBase<TEnum> : WebsitePanelControlBase
{
public event CancelEventHandler ExecutingAction;
public event EventHandler ExecutedAction;
#region Properties
public string GridViewID { get; set; }
public string CheckboxesName { get; set; }
private string _message = "ACTIONS_MESSAGE";
public string Message
{
get { return _message; }
set { _message = value; }
}
#endregion
protected abstract DropDownList ActionsList { get; }
protected abstract int DoAction(List<int> ids);
public TEnum SelectedAction
{
get
{
return (TEnum)(object)Convert.ToInt32(ActionsList.SelectedValue);
}
}
protected GridView GridView
{
get { return Parent.FindControl(GridViewID) as GridView; }
}
public void ResetSelection()
{
ActionsList.ClearSelection();
}
public void RemoveActionItem<TNum>(TNum value)
{
ActionsList.Items.Remove(ActionsList.Items.FindByValue(((int)(object)value).ToString()));
}
protected void FireExecuteAction()
{
if (ExecutingAction != null)
{
var e = new CancelEventArgs();
ExecutingAction(this, e);
if (e.Cancel)
return;
}
DoAction();
if (ExecutedAction != null)
ExecutedAction(this, new EventArgs());
}
protected void DoAction()
{
if (GridView == null || String.IsNullOrWhiteSpace(CheckboxesName))
return;
// Get checked users
var ids = Utils.GetCheckboxValuesFromGrid<int>(GridView, CheckboxesName);
if ((int)(object)SelectedAction != 0)
{
if (ids.Count > 0)
{
try
{
var result = DoAction(ids);
if (result < 0)
{
HostModule.ShowResultMessage(result);
return;
}
HostModule.ShowSuccessMessage(Message);
}
catch (Exception ex)
{
HostModule.ShowErrorMessage(Message, ex);
}
// Refresh users grid
GridView.DataBind();
}
else
{
HostModule.ShowWarningMessage(Message);
}
}
}
}
}

View file

@ -0,0 +1,138 @@
<?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="btnApply.Text" xml:space="preserve">
<value>Apply</value>
</data>
<data name="ddlDomainActionsItem.Actions" xml:space="preserve">
<value>- Actions -</value>
</data>
<data name="ddlDomainActionsItem.CreateInstantAlias" xml:space="preserve">
<value>Create Instant Alias</value>
</data>
<data name="ddlDomainActionsItem.DeleteInstantAlias" xml:space="preserve">
<value>Delete Instant Alias</value>
</data>
<data name="ddlDomainActionsItem.DisableDns" xml:space="preserve">
<value>Disable Dns</value>
</data>
<data name="ddlDomainActionsItem.EnableDns" xml:space="preserve">
<value>Enable Dns</value>
</data>
</root>

View file

@ -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="btnApply.Text" xml:space="preserve">
<value>Apply</value>
</data>
<data name="ddlMailAccountActionsItem.Actions" xml:space="preserve">
<value>- Actions -</value>
</data>
<data name="ddlMailAccountActionsItem.Disable" xml:space="preserve">
<value>Disable</value>
</data>
<data name="ddlMailAccountActionsItem.Enable" xml:space="preserve">
<value>Enable</value>
</data>
</root>

View file

@ -0,0 +1,174 @@
<?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="btnApply.Text" xml:space="preserve">
<value>Apply</value>
</data>
<data name="btnMailboxPlanCancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="btnMailboxPlanOk.Text" xml:space="preserve">
<value>Ok</value>
</data>
<data name="btnServiceLevelCancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="btnServiceLevelOk.Text" xml:space="preserve">
<value>Ok</value>
</data>
<data name="cmdApply.AlternateText" xml:space="preserve">
<value>Apply</value>
</data>
<data name="ddlUserActionsItem.Actions" xml:space="preserve">
<value>- Actions -</value>
</data>
<data name="ddlUserActionsItem.Disable" xml:space="preserve">
<value>Disable</value>
</data>
<data name="ddlUserActionsItem.Enable" xml:space="preserve">
<value>Enable</value>
</data>
<data name="ddlUserActionsItem.SetMailboxPlan" xml:space="preserve">
<value>Set Mailbox Plan</value>
</data>
<data name="ddlUserActionsItem.SetServiceLevel" xml:space="preserve">
<value>Set Service Level</value>
</data>
<data name="ddlUserActionsItem.SetVIP" xml:space="preserve">
<value>Set VIP</value>
</data>
<data name="ddlUserActionsItem.UnsetVIP" xml:space="preserve">
<value>Unset VIP</value>
</data>
<data name="headerMailboxPlanLabel.Text" xml:space="preserve">
<value>Mailbox Plan</value>
</data>
<data name="headerServiceLevel.Text" xml:space="preserve">
<value>Service Level</value>
</data>
<data name="litMailboxPlan.text" xml:space="preserve">
<value>Please select a Mailbox Plan for the all checked mailboxes</value>
</data>
<data name="litServiceLevel.text" xml:space="preserve">
<value>Please select a Service Level for the all checked users</value>
</data>
<data name="litVIP.Text" xml:space="preserve">
<value>Please select a VIP status for the all checked users</value>
</data>
</root>

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=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="btnApply.Text" xml:space="preserve">
<value>Apply</value>
</data>
<data name="ddlWebsiteActionsItem.Actions" xml:space="preserve">
<value>- Actions -</value>
</data>
<data name="ddlWebsiteActionsItem.RestartAppPool" xml:space="preserve">
<value>Restart App Pool</value>
</data>
<data name="ddlWebsiteActionsItem.Start" xml:space="preserve">
<value>Start</value>
</data>
<data name="ddlWebsiteActionsItem.Stop" xml:space="preserve">
<value>Stop</value>
</data>
</root>

View file

@ -0,0 +1,37 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainActions.ascx.cs" Inherits="WebsitePanel.Portal.DomainActions" %>
<script language="javascript">
function ShowProgress(btn) {
var action = $(btn).prev().val();
if (action === 1) {
ShowProgressDialog("Enabling Dns...");
} else if (action == 2) {
ShowProgressDialog("Disabling Dns...");
} else if (action == 3) {
ShowProgressDialog("Creating Instant Alias...");
} else if (action == 4) {
ShowProgressDialog("Removing Instant Alias...");
}
}
</script>
<asp:UpdatePanel ID="tblActions" runat="server" CssClass="NormalBold" UpdateMode="Conditional" ChildrenAsTriggers="true" >
<ContentTemplate>
<asp:DropDownList ID="ddlDomainActions" runat="server" CssClass="NormalTextBox" resourcekey="ddlDomainActions" AutoPostBack="True">
<asp:ListItem Value="0">Actions</asp:ListItem>
<asp:ListItem Value="1">EnableDns</asp:ListItem>
<asp:ListItem Value="2">DisableDns</asp:ListItem>
<asp:ListItem Value="3">CreateInstantAlias</asp:ListItem>
<asp:ListItem Value="4">DeleteInstantAlias</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnApply" runat="server" meta:resourcekey="btnApply"
Text="Apply" CssClass="Button1" OnClick="btnApply_Click" OnClientClick="return ShowProgress(this);" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnApply" />
</Triggers>
</asp:UpdatePanel>

View file

@ -0,0 +1,179 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Web.Services3.Referral;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
using WebsitePanel.Portal.UserControls;
using WebsitePanel.Providers;
using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Portal
{
public enum DomainActionTypes
{
None = 0,
EnableDns = 1,
DisableDns = 2,
CreateInstantAlias = 3,
DeleteInstantAlias = 4,
}
public partial class DomainActions : ActionListControlBase<DomainActionTypes>
{
protected void Page_Load(object sender, EventArgs e)
{
// Remove DNS items if current Hosting plan does not allow it
if (!PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId).Groups.ContainsKey(ResourceGroups.Dns))
{
RemoveActionItem(DomainActionTypes.EnableDns);
RemoveActionItem(DomainActionTypes.DisableDns);
}
// Remove Instant Alias items if current Hosting plan does not allow it
PackageSettings packageSettings = ES.Services.Packages.GetPackageSettings(PanelSecurity.PackageId, PackageSettings.INSTANT_ALIAS);
if (packageSettings == null || String.IsNullOrEmpty(packageSettings["InstantAlias"]))
{
RemoveActionItem(DomainActionTypes.CreateInstantAlias);
RemoveActionItem(DomainActionTypes.DeleteInstantAlias);
}
// hide control if no actions allowed
if (ActionsList.Items.Count <= 1)
{
Visible = false;
}
}
protected override DropDownList ActionsList
{
get { return ddlDomainActions; }
}
protected override int DoAction(List<int> ids)
{
switch (SelectedAction)
{
case DomainActionTypes.EnableDns:
return EnableDns(true, ids);
case DomainActionTypes.DisableDns:
return EnableDns(false, ids);
case DomainActionTypes.CreateInstantAlias:
return CreateInstantAlias(true, ids);
case DomainActionTypes.DeleteInstantAlias:
return CreateInstantAlias(false, ids);
}
return 0;
}
protected void btnApply_Click(object sender, EventArgs e)
{
switch (SelectedAction)
{
case DomainActionTypes.EnableDns:
case DomainActionTypes.DisableDns:
case DomainActionTypes.CreateInstantAlias:
case DomainActionTypes.DeleteInstantAlias:
FireExecuteAction();
break;
}
}
private int EnableDns(bool enable, List<int> ids)
{
foreach (var id in ids)
{
// load domain
DomainInfo domain = ES.Services.Servers.GetDomain(id);
if (domain == null)
continue;
// load package context
PackageContext cntx = PackagesHelper.GetCachedPackageContext(domain.PackageId);
bool dnsEnabled = cntx.Groups.ContainsKey(ResourceGroups.Dns);
if (!dnsEnabled)
continue;
int result;
if (enable)
result = ES.Services.Servers.EnableDomainDns(id);
else
result = ES.Services.Servers.DisableDomainDns(id);
if (result < 0)
return result;
}
return 0;
}
private int CreateInstantAlias(bool enable, List<int> ids)
{
foreach (var id in ids)
{
// load domain
DomainInfo domain = ES.Services.Servers.GetDomain(id);
if (domain == null)
continue;
// instant alias
bool instantAliasAllowed = !String.IsNullOrEmpty(domain.InstantAliasName);
if (!instantAliasAllowed || domain.IsDomainPointer || domain.IsInstantAlias)
continue;
int result;
if (enable)
result = ES.Services.Servers.CreateDomainInstantAlias("", id);
else
result = ES.Services.Servers.DeleteDomainInstantAlias(id);
if (result < 0)
return result;
}
return 0;
}
}
}

View file

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal {
public partial class DomainActions {
/// <summary>
/// tblActions 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 tblActions;
/// <summary>
/// ddlDomainActions control.
/// </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 ddlDomainActions;
/// <summary>
/// btnApply control.
/// </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 btnApply;
}
}

View file

@ -125,7 +125,7 @@ namespace WebsitePanel.Portal
public string WrapComment(string text)
{
return (text != null) ? PortalAntiXSS.EncodeOld(text.Replace("\n", "<br/>")) : text;
return (text != null) ? Server.HtmlEncode(text).Replace("\n", "<br/>") : text;
}
protected void gvComments_RowDeleting(object sender, GridViewDeleteEventArgs e)

View file

@ -0,0 +1,31 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MailAccountActions.ascx.cs" Inherits="WebsitePanel.Portal.MailAccountActions" %>
<script language="javascript">
function ShowProgress(btn) {
var action = $(btn).prev().val();
if (action === 1) {
ShowProgressDialog("Enabling mail account...");
} else if (action === 2) {
ShowProgressDialog("Disabling mail account...");
}
}
</script>
<asp:UpdatePanel ID="tblActions" runat="server" CssClass="NormalBold" UpdateMode="Conditional" ChildrenAsTriggers="true" >
<ContentTemplate>
<asp:DropDownList ID="ddlMailAccountActions" runat="server" CssClass="NormalTextBox" resourcekey="ddlWebsiteActions" AutoPostBack="True">
<asp:ListItem Value="0">Actions</asp:ListItem>
<asp:ListItem Value="1">Disable</asp:ListItem>
<asp:ListItem Value="2">Enable</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnApply" runat="server" meta:resourcekey="btnApply"
Text="Apply" CssClass="Button1" OnClick="btnApply_Click" OnClientClick="return ShowProgress(this);" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnApply" />
</Triggers>
</asp:UpdatePanel>

View file

@ -0,0 +1,109 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Web.Services3.Referral;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
using WebsitePanel.Portal.UserControls;
using WebsitePanel.Providers;
using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Portal
{
public enum MailAccountActionTypes
{
None = 0,
Disable = 1,
Enable = 2,
}
public partial class MailAccountActions : ActionListControlBase<MailAccountActionTypes>
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override DropDownList ActionsList
{
get { return ddlMailAccountActions; }
}
protected override int DoAction(List<int> ids)
{
switch (SelectedAction)
{
case MailAccountActionTypes.Disable:
return ChangeMailAccountState(false, ids);
case MailAccountActionTypes.Enable:
return ChangeMailAccountState(true, ids);
}
return 0;
}
protected void btnApply_Click(object sender, EventArgs e)
{
switch (SelectedAction)
{
case MailAccountActionTypes.Disable:
case MailAccountActionTypes.Enable:
FireExecuteAction();
break;
}
}
private int ChangeMailAccountState(bool enable, List<int> ids)
{
foreach (var id in ids)
{
var mailAccount = ES.Services.MailServers.GetMailAccount(id);
mailAccount.Enabled = enable;
int result = ES.Services.MailServers.UpdateMailAccount(mailAccount);
if (result < 0)
return result;
}
return 0;
}
}
}

View file

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal {
public partial class MailAccountActions {
/// <summary>
/// tblActions 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 tblActions;
/// <summary>
/// ddlMailAccountActions control.
/// </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 ddlMailAccountActions;
/// <summary>
/// btnApply control.
/// </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 btnApply;
}
}

View file

@ -2,6 +2,17 @@
<%@ Register Src="Quota.ascx" TagName="Quota" TagPrefix="wsp" %>
<%@ Register Src="ServerDetails.ascx" TagName="ServerDetails" TagPrefix="wsp" %>
<%@ Register Src="SearchBox.ascx" TagName="SearchBox" TagPrefix="wsp" %>
<%@ Register Src="WebsiteActions.ascx" TagName="WebsiteActions" TagPrefix="wsp" %>
<%@ Register Src="MailAccountActions.ascx" TagName="MailAccountActions" TagPrefix="wsp" %>
<script src="JavaScript/jquery-1.4.4.min.js" type="text/javascript"></script>
<script language="javascript">
function SelectAllCheckboxes(box) {
$(".NormalGridView tbody :checkbox").attr("checked", $(box).attr("checked"));
}
</script>
<div class="FormButtonsBar">
<div class="Left">
<asp:Button ID="btnAddItem" runat="server" Text="btnAddItem" CssClass="Button3" OnClick="btnAddItem_Click" />
@ -9,7 +20,21 @@
meta:resourcekey="chkRecursive" AutoPostBack="true" Checked="True" CssClass="Normal" />
</div>
<div class="Right">
<wsp:SearchBox ID="searchBox" runat="server" />
<table>
<tr>
<%-- Action lists --%>
<td>
<%-- Web Sites --%>
<wsp:WebsiteActions ID="websiteActions" runat="server" GridViewID="gvItems" CheckboxesName="chkSelectedIds" Visible="False" />
<%-- Mail Accounts --%>
<wsp:MailAccountActions ID="mailActions" runat="server" GridViewID="gvItems" CheckboxesName="chkSelectedIds" Visible="False" />
</td>
<td class="FormButtonsBarCleanSeparator"></td>
<td>
<wsp:SearchBox ID="searchBox" runat="server" />
</td>
</tr>
</table>
</div>
</div>
<asp:Literal ID="litGroupName" runat="server" Visible="false"></asp:Literal>
@ -19,9 +44,17 @@
<ContentTemplate>
<asp:GridView ID="gvItems" runat="server" AutoGenerateColumns="False" AllowSorting="True"
DataSourceID="odsItemsPaged" EmptyDataText="gvItems" CssSelectorClass="NormalGridView"
DataSourceID="odsItemsPaged" EmptyDataText="gvItems" CssSelectorClass="NormalGridView" DataKeyNames="ItemID"
AllowPaging="True" OnRowCommand="gvItems_RowCommand" OnRowDataBound="gvItems_RowDataBound">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="selectAll" Runat="server" onclick="javascript:SelectAllCheckboxes(this);" CssClass="HeaderCheckbox"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkSelectedIds" CssClass="GridCheckbox"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField SortExpression="ItemName" HeaderText="gvItemsName">
<ItemStyle Width="100%"></ItemStyle>
<ItemTemplate>

View file

@ -108,11 +108,13 @@ namespace WebsitePanel.Portal.UserControls
// visibility
chkRecursive.Visible = (PanelSecurity.SelectedUser.Role != UserRole.User);
gvItems.Columns[1].Visible = !String.IsNullOrEmpty(ViewLinkText);
gvItems.Columns[2].Visible = gvItems.Columns[3].Visible =
gvItems.Columns[2].Visible = !String.IsNullOrEmpty(ViewLinkText);
gvItems.Columns[3].Visible = gvItems.Columns[4].Visible =
(PanelSecurity.SelectedUser.Role != UserRole.User) && chkRecursive.Checked;
gvItems.Columns[4].Visible = (PanelSecurity.SelectedUser.Role == UserRole.Administrator);
gvItems.Columns[5].Visible = (PanelSecurity.EffectiveUser.Role == UserRole.Administrator);
gvItems.Columns[5].Visible = (PanelSecurity.SelectedUser.Role == UserRole.Administrator);
gvItems.Columns[6].Visible = (PanelSecurity.EffectiveUser.Role == UserRole.Administrator);
ShowActionList();
if (!IsPostBack)
{
@ -206,5 +208,24 @@ namespace WebsitePanel.Portal.UserControls
string localizedLinkText = HostModule.GetLocalizedString(ViewLinkText + ".Text");
lnkView.Text = localizedLinkText != null ? localizedLinkText : ViewLinkText;
}
private void ShowActionList()
{
websiteActions.Visible = false;
mailActions.Visible = false;
switch (QuotaName)
{
case "Web.Sites":
websiteActions.Visible = true;
break;
case "Mail.Accounts":
ProviderInfo provider = ES.Services.Servers.GetPackageServiceProvider(PanelSecurity.PackageId, "Mail");
if (provider.EditorControl == "SmarterMail100")
mailActions.Visible = true;
break;
}
}
}
}

View file

@ -1,31 +1,3 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -58,6 +30,24 @@ namespace WebsitePanel.Portal.UserControls {
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkRecursive;
/// <summary>
/// websiteActions control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.WebsiteActions websiteActions;
/// <summary>
/// mailActions control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.MailAccountActions mailActions;
/// <summary>
/// searchBox control.
/// </summary>

View file

@ -0,0 +1,108 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserActions.ascx.cs" Inherits="WebsitePanel.Portal.UserActions" %>
<%@ Register Src="../ExchangeServer/UserControls/MailboxPlanSelector.ascx" TagName="MailboxPlanSelector" TagPrefix="wsp" %>
<script language="javascript">
function CloseAndShowProgressDialog(text) {
$(".Popup").hide();
return ShowProgressDialog(text);
}
function ShowProgress(btn) {
var action = $(btn).prev().val();
if (action == 1) {
ShowProgressDialog('Disabling users...');
} else if (action == 2) {
ShowProgressDialog('Enabling users...');
} else if (action == 3) {
ShowProgressDialog('Prepare...');
} else if (action == 4) {
ShowProgressDialog('Setting VIP...');
} else if (action == 5) {
ShowProgressDialog('Unsetting VIP...');
}
}
</script>
<asp:UpdatePanel ID="tblActions" runat="server" CssClass="NormalBold" UpdateMode="Conditional" ChildrenAsTriggers="true" >
<ContentTemplate>
<asp:DropDownList ID="ddlUserActions" runat="server" CssClass="NormalTextBox" resourcekey="ddlUserActions"
AutoPostBack="True">
<asp:ListItem Value="0">Actions</asp:ListItem>
<asp:ListItem Value="1">Disable</asp:ListItem>
<asp:ListItem Value="2">Enable</asp:ListItem>
<asp:ListItem Value="3">SetServiceLevel</asp:ListItem>
<asp:ListItem Value="4">SetVIP</asp:ListItem>
<asp:ListItem Value="5">UnsetVIP</asp:ListItem>
<asp:ListItem Value="6">SetMailboxPlan</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnApply" runat="server" meta:resourcekey="btnApply"
Text="Apply" CssClass="Button1" OnClick="btnApply_Click" OnClientClick="return ShowProgress(this);" />
<ajaxToolkit:ModalPopupExtender ID="Modal" runat="server" EnableViewState="true" TargetControlID="FakeModalPopupTarget"
PopupControlID="FakeModalPopupTarget" BackgroundCssClass="modalBackground" DropShadow="false" />
<%--Set Service Level--%>
<asp:Panel ID="ServiceLevelPanel" runat="server" CssClass="Popup" Style="display: none">
<table class="Popup-Header">
<tr>
<td class="Popup-HeaderLeft"></td>
<td class="Popup-HeaderTitle"><asp:Localize ID="headerServiceLevel" runat="server" meta:resourcekey="headerServiceLevel"></asp:Localize></td>
<td class="Popup-HeaderRight"></td>
</tr>
</table>
<div class="Popup-Content">
<div class="Popup-Body">
<br/>
<asp:Literal ID="litServiceLevel" runat="server" meta:resourcekey="litServiceLevel"></asp:Literal>
<br/>
<asp:DropDownList ID="ddlServiceLevels" runat="server" CssClass="NormalTextBox" />
<br/>
</div>
<div class="FormFooterMiddle">
<asp:Button ID="btnServiceLevelOk" runat="server" CssClass="Button1" meta:resourcekey="btnServiceLevelOk" Text="Ok"
OnClientClick="return CloseAndShowProgressDialog('Setting Service Level...')" OnClick="btnModalOk_Click" />
<asp:Button ID="btnServiceLevelCancel" runat="server" CssClass="Button1" meta:resourcekey="btnServiceLevelCancel" Text="Cancel"
OnClick="btnModalCancel_OnClick" CausesValidation="false" />
</div>
</div>
</asp:Panel>
<%--Set MailboxPlan--%>
<asp:Panel ID="MailboxPlanPanel" runat="server" CssClass="Popup" Style="display: none">
<table class="Popup-Header">
<tr>
<td class="Popup-HeaderLeft"></td>
<td class="Popup-HeaderTitle"><asp:Localize ID="headerMailboxPlanLabel" runat="server" meta:resourcekey="headerMailboxPlanLabel"></asp:Localize></td>
<td class="Popup-HeaderRight"></td>
</tr>
</table>
<div class="Popup-Content">
<div class="Popup-Body">
<br/>
<asp:Literal ID="litMailboxPlan" runat="server" meta:resourcekey="litMailboxPlan"></asp:Literal>
<br/>
<wsp:MailboxPlanSelector ID="mailboxPlanSelector" runat="server" />
<br/>
</div>
<div class="FormFooterMiddle">
<asp:Button ID="btnMailboxPlanOk" runat="server" CssClass="Button1" meta:resourcekey="btnMailboxPlanOk" Text="Ok"
OnClientClick="return CloseAndShowProgressDialog('Setting Mailbox Plan ...')" OnClick="btnModalOk_Click" />
<asp:Button ID="btnMailboxPlanCancel" runat="server" CssClass="Button1" meta:resourcekey="btnMailboxPlanCancel" Text="Cancel"
OnClick="btnModalCancel_OnClick" CausesValidation="false" />
</div>
</div>
</asp:Panel>
<asp:Button ID="FakeModalPopupTarget" runat="server" Style="display: none;" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnServiceLevelOk" />
<asp:PostBackTrigger ControlID="btnMailboxPlanOk" />
<asp:PostBackTrigger ControlID="btnApply" />
</Triggers>
</asp:UpdatePanel>

View file

@ -0,0 +1,305 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Web.Services3.Referral;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
using WebsitePanel.Portal.UserControls;
using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Portal
{
public enum UserActionTypes
{
None = 0,
Disable = 1,
Enable = 2,
SetServiceLevel = 3,
SetVIP = 4,
UnsetVIP = 5,
SetMailboxPlan = 6
}
public partial class UserActions : ActionListControlBase<UserActionTypes>
{
public bool ShowSetMailboxPlan { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
// Remove Service Level item and VIP item from Action List if current Hosting plan does not allow Service Levels
if (!PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId).Groups.ContainsKey(ResourceGroups.ServiceLevels))
{
RemoveActionItem(UserActionTypes.SetServiceLevel);
RemoveActionItem(UserActionTypes.SetVIP);
RemoveActionItem(UserActionTypes.UnsetVIP);
}
if (!ShowSetMailboxPlan)
RemoveActionItem(UserActionTypes.SetMailboxPlan);
}
protected override DropDownList ActionsList
{
get { return ddlUserActions; }
}
protected override int DoAction(List<int> userIds)
{
switch (SelectedAction)
{
case UserActionTypes.Disable:
return ChangeUsersSettings(userIds, true, null, null);
case UserActionTypes.Enable:
return ChangeUsersSettings(userIds, false, null, null);
case UserActionTypes.SetServiceLevel:
return ChangeUsersServiceLevel(userIds);
case UserActionTypes.SetVIP:
return ChangeUsersSettings(userIds, null, null, true);
case UserActionTypes.UnsetVIP:
return ChangeUsersSettings(userIds, null, null, false);
case UserActionTypes.SetMailboxPlan:
return SetMailboxPlan(userIds);
}
return 0;
}
protected int ChangeUsersServiceLevel(List<int> userIds)
{
if (ddlServiceLevels.SelectedItem == null)
return 0;
string levelName = ddlServiceLevels.SelectedItem.Text;
if (string.IsNullOrEmpty(levelName))
return 0;
int levelId;
if (!int.TryParse(ddlServiceLevels.SelectedItem.Value, out levelId))
return 0;
string quotaName = Quotas.SERVICE_LEVELS + levelName;
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
if (!cntx.Quotas.ContainsKey(quotaName))
return 0;
List<OrganizationUser> users = new List<OrganizationUser>();
foreach (int id in userIds)
users.Add(ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, id));
int usersCount = users.Count - users.Where(x => (x.LevelId == levelId)).Count();
if (!CheckServiceLevelQuota(cntx.Quotas[quotaName], usersCount))
return -1;
return ChangeUsersSettings(userIds, null, levelId, null);
}
protected void btnModalOk_Click(object sender, EventArgs e)
{
FireExecuteAction();
}
protected void btnModalCancel_OnClick(object sender, EventArgs e)
{
ResetSelection();
}
protected int ChangeUsersSettings(List<int> userIds, bool? disable, int? serviceLevelId, bool? isVIP)
{
foreach (var userId in userIds)
{
OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, userId);
int result = ES.Services.Organizations.SetUserGeneralSettings(
PanelRequest.ItemID,
userId,
user.DisplayName,
string.Empty,
false,
disable ?? user.Disabled,
user.Locked,
user.FirstName,
user.Initials,
user.LastName,
user.Address,
user.City,
user.State,
user.Zip,
user.Country,
user.JobTitle,
user.Company,
user.Department,
user.Office,
user.Manager != null ? user.Manager.AccountName : String.Empty,
user.BusinessPhone,
user.Fax,
user.HomePhone,
user.MobilePhone,
user.Pager,
user.WebPage,
user.Notes,
user.ExternalEmail,
user.SubscriberNumber,
serviceLevelId ?? user.LevelId,
isVIP ?? user.IsVIP,
user.UserMustChangePassword);
if (result < 0)
return result;
}
return 0;
}
protected int SetMailboxPlan(List<int> userIds)
{
int planId;
if (!int.TryParse(mailboxPlanSelector.MailboxPlanId, out planId))
return 0;
if (planId < 0) return 0;
foreach (int userId in userIds)
{
ExchangeAccount account = ES.Services.ExchangeServer.GetAccount(PanelRequest.ItemID, userId);
int result = ES.Services.ExchangeServer.SetExchangeMailboxPlan(PanelRequest.ItemID, userId, planId,
account.ArchivingMailboxPlanId, account.EnableArchiving);
if (result < 0)
return result;
}
return 0;
}
#region ServiceLevel
protected void FillServiceLevelsList()
{
if (GridView == null || String.IsNullOrWhiteSpace(CheckboxesName))
return;
List<int> ids = Utils.GetCheckboxValuesFromGrid<int>(GridView, CheckboxesName);
List<OrganizationUser> users = new List<OrganizationUser>();
foreach(int id in ids)
users.Add(ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, id));
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 (ServiceLevel serviceLevel in ES.Services.Organizations.GetSupportServiceLevels())
{
int usersCount = users.Count - users.Where(x => (x.LevelId == serviceLevel.LevelId)).Count();
if (quota.Key.Replace(Quotas.SERVICE_LEVELS, "") == serviceLevel.LevelName && CheckServiceLevelQuota(quota.Value, usersCount))
enabledServiceLevels.Add(serviceLevel);
}
}
ddlServiceLevels.DataSource = enabledServiceLevels;
ddlServiceLevels.DataTextField = "LevelName";
ddlServiceLevels.DataValueField = "LevelId";
ddlServiceLevels.DataBind();
ddlServiceLevels.Items.Insert(0, new ListItem("<Select Service Level>", string.Empty));
ddlServiceLevels.Items.FindByValue(string.Empty).Selected = true;
}
}
private bool CheckServiceLevelQuota(QuotaValueInfo quota, int itemCount)
{
if (quota.QuotaAllocatedValue != -1)
{
return quota.QuotaAllocatedValue >= quota.QuotaUsedValue + itemCount;
}
return true;
}
#endregion
protected void btnApply_Click(object sender, EventArgs e)
{
switch (SelectedAction)
{
case UserActionTypes.Disable:
case UserActionTypes.Enable:
case UserActionTypes.SetVIP:
case UserActionTypes.UnsetVIP:
FireExecuteAction();
break;
case UserActionTypes.SetServiceLevel:
FillServiceLevelsList();
Modal.PopupControlID = ServiceLevelPanel.ID;
Modal.Show();
break;
case UserActionTypes.SetMailboxPlan:
Modal.PopupControlID = MailboxPlanPanel.ID;
Modal.Show();
break;
}
}
}
}

View file

@ -0,0 +1,168 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal {
public partial class UserActions {
/// <summary>
/// tblActions 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 tblActions;
/// <summary>
/// ddlUserActions control.
/// </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 ddlUserActions;
/// <summary>
/// btnApply control.
/// </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 btnApply;
/// <summary>
/// Modal control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::AjaxControlToolkit.ModalPopupExtender Modal;
/// <summary>
/// ServiceLevelPanel control.
/// </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 ServiceLevelPanel;
/// <summary>
/// headerServiceLevel control.
/// </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 headerServiceLevel;
/// <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.Literal litServiceLevel;
/// <summary>
/// ddlServiceLevels control.
/// </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 ddlServiceLevels;
/// <summary>
/// btnServiceLevelOk control.
/// </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 btnServiceLevelOk;
/// <summary>
/// btnServiceLevelCancel control.
/// </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 btnServiceLevelCancel;
/// <summary>
/// MailboxPlanPanel control.
/// </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 MailboxPlanPanel;
/// <summary>
/// headerMailboxPlanLabel control.
/// </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 headerMailboxPlanLabel;
/// <summary>
/// litMailboxPlan control.
/// </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 litMailboxPlan;
/// <summary>
/// mailboxPlanSelector 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.MailboxPlanSelector mailboxPlanSelector;
/// <summary>
/// btnMailboxPlanOk control.
/// </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 btnMailboxPlanOk;
/// <summary>
/// btnMailboxPlanCancel control.
/// </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 btnMailboxPlanCancel;
/// <summary>
/// FakeModalPopupTarget control.
/// </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 FakeModalPopupTarget;
}
}

View file

@ -0,0 +1,34 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebsiteActions.ascx.cs" Inherits="WebsitePanel.Portal.WebsiteActions" %>
<script language="javascript">
function ShowProgress(btn) {
var action = $(btn).prev().val();
if (action === 1) {
ShowProgressDialog("Stopping websites...");
} else if (action == 2) {
ShowProgressDialog("Starting websites...");
} else if (action == 3) {
ShowProgressDialog("Restarting App Pools...");
}
}
</script>
<asp:UpdatePanel ID="tblActions" runat="server" CssClass="NormalBold" UpdateMode="Conditional" ChildrenAsTriggers="true" >
<ContentTemplate>
<asp:DropDownList ID="ddlWebsiteActions" runat="server" CssClass="NormalTextBox" resourcekey="ddlWebsiteActions" AutoPostBack="True">
<asp:ListItem Value="0">Actions</asp:ListItem>
<asp:ListItem Value="1">Stop</asp:ListItem>
<asp:ListItem Value="2">Start</asp:ListItem>
<asp:ListItem Value="3">RestartAppPool</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnApply" runat="server" meta:resourcekey="btnApply"
Text="Apply" CssClass="Button1" OnClick="btnApply_Click" OnClientClick="return ShowProgress(this);" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnApply" />
</Triggers>
</asp:UpdatePanel>

View file

@ -0,0 +1,125 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Web.Services3.Referral;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
using WebsitePanel.Portal.UserControls;
using WebsitePanel.Providers;
using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Portal
{
public enum WebsiteActionTypes
{
None = 0,
Stop = 1,
Start = 2,
RestartAppPool = 3,
}
public partial class WebsiteActions : ActionListControlBase<WebsiteActionTypes>
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override DropDownList ActionsList
{
get { return ddlWebsiteActions; }
}
protected override int DoAction(List<int> ids)
{
switch (SelectedAction)
{
case WebsiteActionTypes.Stop:
return ChangeWebsiteState(false, ids);
case WebsiteActionTypes.Start:
return ChangeWebsiteState(true, ids);
case WebsiteActionTypes.RestartAppPool:
return RestartAppPool(ids);
}
return 0;
}
protected void btnApply_Click(object sender, EventArgs e)
{
switch (SelectedAction)
{
case WebsiteActionTypes.Stop:
case WebsiteActionTypes.Start:
case WebsiteActionTypes.RestartAppPool:
FireExecuteAction();
break;
}
}
private int ChangeWebsiteState(bool enable, List<int> ids)
{
foreach (var id in ids)
{
var state = enable ? ServerState.Started : ServerState.Paused;
int result = ES.Services.WebServers.ChangeSiteState(id, state);
if (result < 0)
return result;
}
return 0;
}
private int RestartAppPool(List<int> ids)
{
foreach (var id in ids)
{
int result = ES.Services.WebServers.ChangeAppPoolState(id, AppPoolState.Recycle);
if (result < 0)
return result;
}
return 0;
}
}
}

View file

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal {
public partial class WebsiteActions {
/// <summary>
/// tblActions 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 tblActions;
/// <summary>
/// ddlWebsiteActions control.
/// </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 ddlWebsiteActions;
/// <summary>
/// btnApply control.
/// </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 btnApply;
}
}

View file

@ -49,6 +49,8 @@ namespace WebsitePanel.Portal
XmlNodeList xmlIcons = null;
DataSet myPackages;
int currentPackage;
int currentUser;
protected void Page_Load(object sender, EventArgs e)
{
@ -69,26 +71,26 @@ namespace WebsitePanel.Portal
ddlPackageSelect.DataTextField = myPackages.Tables[0].Columns[2].ColumnName;
ddlPackageSelect.DataValueField = myPackages.Tables[0].Columns[0].ColumnName;
ddlPackageSelect.DataBind();
if(Session["currentPackage"] == null) {
if(Session["currentPackage"] == null || ((int)Session["currentUser"]) != PanelSecurity.SelectedUserId) {
if(ddlPackageSelect.Items.Count > 0) {
Session["currentPackage"] = ddlPackageSelect.Items[0].Value;
currentPackage = int.Parse(Session["currentPackage"].ToString());
Session["currentUser"] = PanelSecurity.SelectedUserId;
}
} else {
currentPackage = int.Parse(Session["currentPackage"].ToString());
currentUser = int.Parse(Session["currentUser"].ToString());
ddlPackageSelect.SelectedValue = currentPackage.ToString();
}
}
// USER
UserPackagesPanel.Visible = true;
if(!IsPostBack)
{
if(ddlPackageSelect.UniqueID != Page.Request.Params["__EVENTTARGET"]) {
if(ddlPackageSelect.Items.Count == 0) {
litEmptyList.Text = GetLocalizedString("gvPackages.Empty");
EmptyPackagesList.Visible = true;
} else {
ddlPackageSelect.Visible = true;
myPackages = new PackagesHelper().GetMyPackage(currentPackage);
myPackages = new PackagesHelper().GetMyPackage(int.Parse(Session["currentPackage"].ToString()));
PackagesList.DataSource = myPackages;
PackagesList.DataBind();
}

View file

@ -1,5 +1,8 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebSites.ascx.cs" Inherits="WebsitePanel.Portal.WebSites" %>
<%@ Register Src="UserControls/SpaceServiceItems.ascx" TagName="SpaceServiceItems" TagPrefix="wsp" %>
<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
<wsp:SpaceServiceItems ID="itemsList" runat="server"
CreateButtonText="btnAddWebSite"

View file

@ -1,31 +1,3 @@
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -40,6 +12,15 @@ namespace WebsitePanel.Portal {
public partial class WebSites {
/// <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>
/// itemsList control.
/// </summary>

Some files were not shown because too many files have changed in this diff Show more