Merge
This commit is contained in:
commit
81fa984bdc
180 changed files with 13490 additions and 1913 deletions
|
@ -13,6 +13,7 @@
|
|||
<Control key="edit_user" general_key="users" /> <!--?-->
|
||||
<Control key="create_user" general_key="users" />
|
||||
<Control key="user_memberof" general_key="users" />
|
||||
<Control key="user_reset_password" general_key="users" />
|
||||
<!--<Control key="organization_user_setup" />-->
|
||||
|
||||
<Control key="deleted_users" />
|
||||
|
|
|
@ -489,10 +489,13 @@
|
|||
<Control key="" src="WebsitePanel/ExchangeServer/Organizations.ascx" title="Organizations" type="View" />
|
||||
<Control key="edit_user" src="WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx" title="OrganizationUserGeneralSettings" type="View" />
|
||||
<Control key="users" src="WebsitePanel/ExchangeServer/OrganizationUsers.ascx" title="OrganizationUsers" type="View" />
|
||||
<Control key="user_reset_password" src="WebsitePanel/ExchangeServer/OrganizationUserResetPassword.ascx" title="OrganizationUsers" type="View" />
|
||||
<Control key="create_user" src="WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx" title="CreateUser" type="View" />
|
||||
<Control key="create_organization" src="WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx" title="OrganizationCreateOrganization" type="View" />
|
||||
<Control key="organization_home" src="WebsitePanel/ExchangeServer/OrganizationHome.ascx" title="OrganizationHome" type="View" />
|
||||
<Control key="organization_user_setup" src="WebsitePanel/ExchangeServer/OrganizationUserSetupInstructions.ascx" title="OrganizationUserSetupInstructions" type="View" />
|
||||
<Control key="organization_settings_password_settings" src="WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx" title="OrganizationSettings" type="View" />
|
||||
<Control key="organization_settings_general_settings" src="WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx" title="OrganizationSettings" type="View" />
|
||||
<Control key="mailboxes" src="WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx" title="ExchangeMailboxes" type="View" />
|
||||
<Control key="archivingmailboxes" src="WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx" title="ExchangeArchivingMailboxes" type="View" />
|
||||
<Control key="create_mailbox" src="WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx" title="ExchangeCreateMailbox" type="View" />
|
||||
|
@ -666,6 +669,7 @@
|
|||
<Control key="vps_dvd" src="WebsitePanel/VPS2012/VpsDetailsDvd.ascx" title="VpsDetailsDvd" type="View" />
|
||||
<Control key="vps_insert_dvd" src="WebsitePanel/VPS2012/VpsDetailsInsertDvd.ascx" title="VpsDetailsInsertDvd" type="View" />
|
||||
<Control key="vps_snapshots" src="WebsitePanel/VPS2012/VpsDetailsSnapshots.ascx" title="VpsDetailsSnapshots" type="View" />
|
||||
<Control key="vps_replication" src="WebsitePanel/VPS2012/VpsDetailsReplications.ascx" title="VpsDetailReplications" type="View" />
|
||||
<Control key="vps_network" src="WebsitePanel/VPS2012/VpsDetailsNetwork.ascx" title="VpsDetailsNetwork" type="View" />
|
||||
<Control key="vps_add_external_ip" src="WebsitePanel/VPS2012/VpsDetailsAddExternalAddress.ascx" title="VpsDetailsAddExternalAddress" type="View" />
|
||||
<Control key="vps_add_private_ip" src="WebsitePanel/VPS2012/VpsDetailsAddPrivateAddress.ascx" title="VpsDetailsAddPrivateAddress" type="View" />
|
||||
|
|
|
@ -3345,7 +3345,6 @@
|
|||
</data>
|
||||
<data name="ResourceGroup.Hosted CRM" xml:space="preserve">
|
||||
<value>CRM 4/2011</value>
|
||||
<comment> </comment>
|
||||
</data>
|
||||
<data name="ResourceGroup.BlackBerry" xml:space="preserve">
|
||||
<value>BlackBerry</value>
|
||||
|
@ -3374,7 +3373,10 @@
|
|||
<data name="ResourceGroup.SharePoint Foundation Server" xml:space="preserve">
|
||||
<value>SharePoint Foundation Server</value>
|
||||
</data>
|
||||
<data name="ResourceGroup.SharePoint Enterprise Server" xml:space="preserve">
|
||||
<data name="ResourceGroup.SharePoint Server" xml:space="preserve">
|
||||
<value>SharePoint Server</value>
|
||||
</data>
|
||||
<data name="ResourceGroup.SharePoint Enterprise Server" xml:space="preserve">
|
||||
<value>SharePoint Enterprise Server</value>
|
||||
</data>
|
||||
<data name="ResourceGroup.OCS" xml:space="preserve">
|
||||
|
@ -4073,6 +4075,53 @@
|
|||
<data name="Error.VPS_ERROR_TAKE_SNAPSHOT" xml:space="preserve">
|
||||
<value>Cannot take virtual machine snapshot</value>
|
||||
</data>
|
||||
<data name="Error.VPS_ERROR_SET_VM_REPLICATION" xml:space="preserve">
|
||||
<value>Cannot enable/set replication for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Error.VPS_ERROR_DISABLE_VM_REPLICATION" xml:space="preserve">
|
||||
<value>Cannot disable replication for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Error.VPS_ERROR_GET_VM_REPLICATION" xml:space="preserve">
|
||||
<value>Cannot get replication for the virtual machine</value>
|
||||
</data>
|
||||
|
||||
<data name="Error.VPS_SET_REPLICA_SERVER_ERROR" xml:space="preserve">
|
||||
<value>Cannot set replication for the server</value>
|
||||
</data>
|
||||
<data name="Error.VPS_UNSET_REPLICA_SERVER_ERROR" xml:space="preserve">
|
||||
<value>Cannot unset replication for the server</value>
|
||||
</data>
|
||||
<data name="Error.VPS_NO_REPLICA_SERVER_ERROR" xml:space="preserve">
|
||||
<value>Cannot find replication server</value>
|
||||
</data>
|
||||
<data name="Error.VPS_SET_REPLICATION_ERROR" xml:space="preserve">
|
||||
<value>Cannot enable\set replication for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Success.VPS_SET_REPLICATION_ERROR" xml:space="preserve">
|
||||
<value>Replication set\enabled for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Error.VPS_DISABLE_REPLICATION_ERROR" xml:space="preserve">
|
||||
<value>Cannot disable replication for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Success.VPS_DISABLE_REPLICATION_ERROR" xml:space="preserve">
|
||||
<value>Replication disabled for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Error.VPS_PAUSE_REPLICATION_ERROR" xml:space="preserve">
|
||||
<value>Cannot pause replication for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Success.VPS_PAUSE_REPLICATION_ERROR" xml:space="preserve">
|
||||
<value>Replication paused for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Error.VPS_RESUME_REPLICATION_ERROR" xml:space="preserve">
|
||||
<value>Cannot resume replication for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Success.VPS_RESUME_REPLICATION_ERROR" xml:space="preserve">
|
||||
<value>Replication resumed for the virtual machine</value>
|
||||
</data>
|
||||
<data name="Error.VPS_REQUIRED" xml:space="preserve">
|
||||
<value>Please fill required fields</value>
|
||||
</data>
|
||||
|
||||
<data name="VPS.VPS_JOB_FAILED_ERROR" xml:space="preserve">
|
||||
<value>Job execution failed with the following code: {1}</value>
|
||||
</data>
|
||||
|
@ -5794,4 +5843,13 @@
|
|||
<data name="Success.REMOTE_DESKTOP_SERVICES_USER_EXPERIENCE" xml:space="preserve">
|
||||
<value>RDS User experience has been updated</value>
|
||||
</data>
|
||||
<data name="SchedulerTask.SCHEDULE_TASK_USER_PASSWORD_EXPIRATION_NOTIFICATION" xml:space="preserve">
|
||||
<value>User password expiration notification</value>
|
||||
</data>
|
||||
<data name="ERROR.ORANIZATIONSETTINGS_NOT_UPDATED" xml:space="preserve">
|
||||
<value>Error during updating settings.</value>
|
||||
</data>
|
||||
<data name="Error.UNABLETOLOADPASSWORDSETTINGS" xml:space="preserve">
|
||||
<value>Unable to load password settings</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,156 @@
|
|||
<?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="ddlPriorityItem.High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
</data>
|
||||
<data name="ddlPriorityItem.Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
</data>
|
||||
<data name="ddlPriorityItem.Normal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
<data name="lblFrom.Text" xml:space="preserve">
|
||||
<value>From:</value>
|
||||
</data>
|
||||
<data name="lblHtmlBody.Text" xml:space="preserve">
|
||||
<value>HTML Body:</value>
|
||||
</data>
|
||||
<data name="lblLogoUrl.Text" xml:space="preserve">
|
||||
<value>Logo Url:</value>
|
||||
</data>
|
||||
<data name="lblNoChangesHtmlBody" xml:space="preserve">
|
||||
<value>No Changes HTML Body:</value>
|
||||
</data>
|
||||
<data name="lblNoChangesTextBody.Text" xml:space="preserve">
|
||||
<value>No Changes Text Body:</value>
|
||||
</data>
|
||||
<data name="lblPriority.Text" xml:space="preserve">
|
||||
<value>Priority:</value>
|
||||
</data>
|
||||
<data name="lblSubject.Text" xml:space="preserve">
|
||||
<value>Subject:</value>
|
||||
</data>
|
||||
<data name="lblTextBody.Text" xml:space="preserve">
|
||||
<value>Text Body:</value>
|
||||
</data>
|
||||
<data name="lblWebDavPortalResetUrl.Text" xml:space="preserve">
|
||||
<value>Webdav portal reset URL:</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,153 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ddlPriorityItem.High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
</data>
|
||||
<data name="ddlPriorityItem.Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
</data>
|
||||
<data name="ddlPriorityItem.Normal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
<data name="lblFrom.Text" xml:space="preserve">
|
||||
<value>From:</value>
|
||||
</data>
|
||||
<data name="lblHtmlBody.Text" xml:space="preserve">
|
||||
<value>HTML Body:</value>
|
||||
</data>
|
||||
<data name="lblLogoUrl.Text" xml:space="preserve">
|
||||
<value>Logo Url:</value>
|
||||
</data>
|
||||
<data name="lblNoChangesHtmlBody" xml:space="preserve">
|
||||
<value>No Changes HTML Body:</value>
|
||||
</data>
|
||||
<data name="lblNoChangesTextBody.Text" xml:space="preserve">
|
||||
<value>No Changes Text Body:</value>
|
||||
</data>
|
||||
<data name="lblPriority.Text" xml:space="preserve">
|
||||
<value>Priority:</value>
|
||||
</data>
|
||||
<data name="lblSubject.Text" xml:space="preserve">
|
||||
<value>Subject:</value>
|
||||
</data>
|
||||
<data name="lblTextBody.Text" xml:space="preserve">
|
||||
<value>Text Body:</value>
|
||||
</data>
|
||||
</root>
|
|
@ -168,4 +168,16 @@
|
|||
<data name="RdsSettings.Text" xml:space="preserve">
|
||||
<value>RDS</value>
|
||||
</data>
|
||||
<data name="lblWebdavPortalUrl.Text" xml:space="preserve">
|
||||
<value>Webdav Portal URL</value>
|
||||
</data>
|
||||
<data name="WebdavPortalSettings.Text" xml:space="preserve">
|
||||
<value>Webdav Portal</value>
|
||||
</data>
|
||||
<data name="chkEnablePasswordReset.Text" xml:space="preserve">
|
||||
<value>Yes</value>
|
||||
</data>
|
||||
<data name="locEnablePasswordReset.Text" xml:space="preserve">
|
||||
<value>Enable password reset:</value>
|
||||
</data>
|
||||
</root>
|
|
@ -150,4 +150,10 @@
|
|||
<data name="lnkRdsSetupLetter.Text" xml:space="preserve">
|
||||
<value>RDS Setup Letter</value>
|
||||
</data>
|
||||
<data name="lnkUserPasswordExpirationLetter.Text" xml:space="preserve">
|
||||
<value>Organization User Password Expiration Letter</value>
|
||||
</data>
|
||||
<data name="lnkOrganizationUserPasswordResetLetter.Text" xml:space="preserve">
|
||||
<value>Organization User Password Reset Letter</value>
|
||||
</data>
|
||||
</root>
|
|
@ -267,4 +267,7 @@
|
|||
<data name="Text.DeletedUsers" xml:space="preserve">
|
||||
<value>Deleted Users</value>
|
||||
</data>
|
||||
<data name="Text.PasswordPolicy" xml:space="preserve">
|
||||
<value>Password Policy</value>
|
||||
</data>
|
||||
</root>
|
|
@ -30,6 +30,7 @@
|
|||
using WebsitePanel.Providers.Virtualization;
|
||||
using System.Web;
|
||||
using System;
|
||||
using System.Collections.Specialized;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
|
@ -125,5 +126,30 @@ namespace WebsitePanel.Portal
|
|||
return privateAddresses.Count;
|
||||
}
|
||||
#endregion
|
||||
|
||||
public static StringDictionary ConvertArrayToDictionary(string[] settings)
|
||||
{
|
||||
StringDictionary r = new StringDictionary();
|
||||
foreach (string setting in settings)
|
||||
{
|
||||
int idx = setting.IndexOf('=');
|
||||
r.Add(setting.Substring(0, idx), setting.Substring(idx + 1));
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
public static bool IsReplicationEnabled(int packageId)
|
||||
{
|
||||
var vmsMeta = (new VirtualMachines2012Helper()).GetVirtualMachines(packageId, null, null, null, 1, 0);
|
||||
if (vmsMeta.Length == 0) return false;
|
||||
|
||||
var packageVm = ES.Services.VPS2012.GetVirtualMachineItem(vmsMeta[0].ItemID);
|
||||
if (packageVm == null) return false;
|
||||
|
||||
var serviceSettings = ConvertArrayToDictionary(ES.Services.Servers.GetServiceSettings(packageVm.ServiceId));
|
||||
if (serviceSettings == null) return false;
|
||||
|
||||
return serviceSettings["ReplicaMode"] == ReplicaMode.ReplicationEnabled.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -240,4 +240,10 @@
|
|||
<data name="locSharePointEnterprise.Text" xml:space="preserve">
|
||||
<value>SharePoint Server</value>
|
||||
</data>
|
||||
<data name="lnkEditOrganizationSettings.Text" xml:space="preserve">
|
||||
<value>Edit</value>
|
||||
</data>
|
||||
<data name="OrganizationSettings.Text" xml:space="preserve">
|
||||
<value>Organization settings:</value>
|
||||
</data>
|
||||
</root>
|
|
@ -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="colGeneralSettings.Text" xml:space="preserve">
|
||||
<value>General settings</value>
|
||||
</data>
|
||||
<data name="lblOrganizationLogoUrl.Text" xml:space="preserve">
|
||||
<value>Organization logo URL:</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Edit settings</value>
|
||||
</data>
|
||||
<data name="valRequireOrganizationLogoUrl.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,222 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="btnSave.Text" xml:space="preserve">
|
||||
<value>Save Changes</value>
|
||||
</data>
|
||||
<data name="chkLockOutSettigns.Text" xml:space="preserve">
|
||||
<value>Enable Lockout Settings</value>
|
||||
</data>
|
||||
<data name="chkPasswordComplexity" xml:space="preserve">
|
||||
<value>Enable Password Complexity</value>
|
||||
</data>
|
||||
<data name="colPasswordSettings.Text" xml:space="preserve">
|
||||
<value>Password settings</value>
|
||||
</data>
|
||||
<data name="lblAccountLockoutDuration.Text" xml:space="preserve">
|
||||
<value>Account lockout duration (minutes):</value>
|
||||
</data>
|
||||
<data name="lblEnforcePasswordHistory.Text" xml:space="preserve">
|
||||
<value>Enforce password history:</value>
|
||||
</data>
|
||||
<data name="lblLockedOut.Text" xml:space="preserve">
|
||||
<value>Account lockout threshold:</value>
|
||||
</data>
|
||||
<data name="lblLockOutSettigns.Text" xml:space="preserve">
|
||||
<value>Lock out settings:</value>
|
||||
</data>
|
||||
<data name="lblMaximumLength.Text" xml:space="preserve">
|
||||
<value>Maximum length:</value>
|
||||
</data>
|
||||
<data name="lblMinimumLength.Text" xml:space="preserve">
|
||||
<value>Minimum length:</value>
|
||||
</data>
|
||||
<data name="lblMinimumNumbers.Text" xml:space="preserve">
|
||||
<value>Numbers:</value>
|
||||
</data>
|
||||
<data name="lblMinimumSymbols.Text" xml:space="preserve">
|
||||
<value>Non-alphanumeric symbols:</value>
|
||||
</data>
|
||||
<data name="lblMinimumUppercase.Text" xml:space="preserve">
|
||||
<value>Uppercase letters:</value>
|
||||
</data>
|
||||
<data name="lblResetAccountLockout.Text" xml:space="preserve">
|
||||
<value>Reset account lockout counter after (minutes):</value>
|
||||
</data>
|
||||
<data name="lblShouldContain.Text" xml:space="preserve">
|
||||
<value>Password should contain at least:</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Edit settings</value>
|
||||
</data>
|
||||
<data name="valCorrectAccountLockoutDuration.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valCorrectEnforcePasswordHistory.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valCorrectLockedOut.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valCorrectMaxLength.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valCorrectMinLength.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valCorrectNumbers.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valCorrectSymbols.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valCorrectUppercase.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireAccountLockoutDuration.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequiredLockedOut.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireEnforcePasswordHistory.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireMaxLength.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireMinLength.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireNumbers.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireResetAccountLockout.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireSymbols.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireUppercase.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valResetAccountLockout.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
</root>
|
|
@ -255,4 +255,7 @@
|
|||
<data name="chkUserMustChangePassword.Text" xml:space="preserve">
|
||||
<value>User must change password at next logon</value>
|
||||
</data>
|
||||
<data name="btnResetUserPassword.Text" xml:space="preserve">
|
||||
<value>Reset Password</value>
|
||||
</data>
|
||||
</root>
|
|
@ -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="btnResetPassoword.Text" xml:space="preserve">
|
||||
<value>Send Password Reset Email</value>
|
||||
</data>
|
||||
<data name="locEmailAddress.Text" xml:space="preserve">
|
||||
<value>Email:</value>
|
||||
</data>
|
||||
<data name="locReason.Text" xml:space="preserve">
|
||||
<value>Reason:</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Reset Password</value>
|
||||
</data>
|
||||
</root>
|
|
@ -75,16 +75,16 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
ddlLetters.Items.Add(new ListItem(Convert.ToChar(i).ToString() + ":", Convert.ToChar(i).ToString()));// Add uppercase letters to possible drive letters
|
||||
}
|
||||
|
||||
string[] usedLetters = ES.Services.EnterpriseStorage.GetUsedDriveLetters(PanelRequest.ItemID);
|
||||
//string[] usedLetters = ES.Services.EnterpriseStorage.GetUsedDriveLetters(PanelRequest.ItemID);
|
||||
|
||||
foreach (string elem in usedLetters)
|
||||
{
|
||||
ListItem item = new ListItem(elem + ":", elem);
|
||||
if (ddlLetters.Items.Contains(item))
|
||||
{
|
||||
ddlLetters.Items.Remove(item);
|
||||
}
|
||||
}
|
||||
//foreach (string elem in usedLetters)
|
||||
//{
|
||||
// ListItem item = new ListItem(elem + ":", elem);
|
||||
// if (ddlLetters.Items.Contains(item))
|
||||
// {
|
||||
// ddlLetters.Items.Remove(item);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
protected void btnCreate_Click(object sender, EventArgs e)
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
<asp:TemplateField>
|
||||
<ItemTemplate>
|
||||
<asp:ImageButton ID="imgDelDriveMap" runat="server" Text="Delete" SkinID="ExchangeDelete"
|
||||
CommandName="DeleteItem" CommandArgument='<%# Eval("DriveLetter") %>'
|
||||
CommandName="DeleteItem" CommandArgument='<%# Eval("Folder.Name") %>'
|
||||
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Are you sure you want to delete selected map drive?')"></asp:ImageButton>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -49,23 +49,7 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
|
||||
if (!IsPostBack)
|
||||
{
|
||||
password.SetPackagePolicy(PanelSecurity.PackageId, UserSettings.EXCHANGE_POLICY, "MailboxPasswordPolicy");
|
||||
PasswordPolicyResult passwordPolicy = ES.Services.Organizations.GetPasswordPolicy(PanelRequest.ItemID);
|
||||
if (passwordPolicy.IsSuccess)
|
||||
{
|
||||
password.MinimumLength = passwordPolicy.Value.MinLength;
|
||||
if (passwordPolicy.Value.IsComplexityEnable)
|
||||
{
|
||||
password.MinimumNumbers = 1;
|
||||
password.MinimumSymbols = 1;
|
||||
password.MinimumUppercase = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
messageBox.ShowMessage(passwordPolicy, "EXCHANGE_CREATE_MAILBOX", "HostedOrganization");
|
||||
return;
|
||||
}
|
||||
BindPasswordSettings();
|
||||
|
||||
string instructions = ES.Services.ExchangeServer.GetMailboxSetupInstructions(PanelRequest.ItemID, PanelRequest.AccountID, false, false, false);
|
||||
if (!string.IsNullOrEmpty(instructions))
|
||||
|
@ -135,6 +119,20 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
|
||||
}
|
||||
|
||||
private void BindPasswordSettings()
|
||||
{
|
||||
var grainedPasswordSettigns = ES.Services.Organizations.GetOrganizationPasswordSettings(PanelRequest.ItemID);
|
||||
|
||||
if (grainedPasswordSettigns != null)
|
||||
{
|
||||
password.SetUserPolicy(grainedPasswordSettigns);
|
||||
}
|
||||
else
|
||||
{
|
||||
messageBox.ShowErrorMessage("UNABLETOLOADPASSWORDSETTINGS");
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnCreate_Click(object sender, EventArgs e)
|
||||
{
|
||||
CreateMailbox();
|
||||
|
|
|
@ -40,23 +40,7 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
password.SetPackagePolicy(PanelSecurity.PackageId, UserSettings.EXCHANGE_POLICY, "MailboxPasswordPolicy");
|
||||
|
||||
PasswordPolicyResult passwordPolicy = ES.Services.Organizations.GetPasswordPolicy(PanelRequest.ItemID);
|
||||
if (passwordPolicy.IsSuccess)
|
||||
{
|
||||
password.MinimumLength = passwordPolicy.Value.MinLength;
|
||||
if (passwordPolicy.Value.IsComplexityEnable)
|
||||
{
|
||||
password.MinimumNumbers = 1;
|
||||
password.MinimumSymbols = 1;
|
||||
password.MinimumUppercase = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
messageBox.ShowMessage(passwordPolicy, "CREATE_ORGANIZATION_USER", "HostedOrganization");
|
||||
}
|
||||
BindPasswordSettings();
|
||||
|
||||
string instructions = ES.Services.Organizations.GetOrganizationUserSummuryLetter(PanelRequest.ItemID, PanelRequest.AccountID, false, false, false);
|
||||
if (!string.IsNullOrEmpty(instructions))
|
||||
|
@ -88,6 +72,20 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
|
||||
}
|
||||
|
||||
private void BindPasswordSettings()
|
||||
{
|
||||
var grainedPasswordSettigns = ES.Services.Organizations.GetOrganizationPasswordSettings(PanelRequest.ItemID);
|
||||
|
||||
if (grainedPasswordSettigns != null)
|
||||
{
|
||||
password.SetUserPolicy(grainedPasswordSettigns);
|
||||
}
|
||||
else
|
||||
{
|
||||
messageBox.ShowErrorMessage("UNABLETOLOADPASSWORDSETTINGS");
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnCreate_Click(object sender, EventArgs e)
|
||||
{
|
||||
CreateMailbox();
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<div class="FormBody">
|
||||
<table>
|
||||
<tr class="OrgStatsRow">
|
||||
<td align="right">
|
||||
<td>
|
||||
<asp:Label runat="server" ID="lblOrganizationName" meta:resourcekey="lblOrganizationName" />
|
||||
</td>
|
||||
<td>
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationSettingsGeneralSettings.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationSettingsGeneralSettings" %>
|
||||
|
||||
|
||||
|
||||
<%@ Register Src="UserControls/OrganizationSettingsTabs.ascx" TagName="CollectionTabs" TagPrefix="wsp" %>
|
||||
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
|
||||
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
||||
|
||||
<wsp:EnableAsyncTasksSupport ID="asyncTasks" runat="server" />
|
||||
|
||||
<div id="ExchangeContainer">
|
||||
<div class="Module">
|
||||
<div class="Left">
|
||||
</div>
|
||||
<div class="Content">
|
||||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="Image1" SkinID="ExchangeList48" runat="server" />
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit Settings"></asp:Localize>
|
||||
|
||||
<asp:Literal ID="litOrganizationName" runat="server" Text="Organization" />
|
||||
</div>
|
||||
<div class="FormBody">
|
||||
|
||||
<wsp:CollectionTabs ID="tabs" runat="server" SelectedTab="organization_settings_general_settings" />
|
||||
<wsp:SimpleMessageBox ID="messageBox" runat="server" />
|
||||
<wsp:CollapsiblePanel ID="colGeneralSettings" runat="server" TargetControlID="panelGeneralSettings" meta:ResourceKey="colGeneralSettings" Text="General settings"></wsp:CollapsiblePanel>
|
||||
|
||||
<asp:Panel runat="server" ID="panelGeneralSettings">
|
||||
<table id="GenerralSettignsTable" runat="server" cellpadding="2">
|
||||
<tr>
|
||||
<td class="Normal" style="width: 150px;">
|
||||
<asp:Label ID="lblOrganizationLogoUrl" runat="server"
|
||||
meta:resourcekey="lblOrganizationLogoUrl" Text="Minimum length:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtOrganizationLogoUrl" runat="server" CssClass="NormalTextBox" Width="400px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireMinLength" runat="server" ControlToValidate="txtOrganizationLogoUrl" meta:resourcekey="valRequireOrganizationLogoUrl"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
<div class="FormFooterClean">
|
||||
<wsp:ItemButtonPanel ID="buttonPanel" runat="server" ValidationGroup="SettingsEditor"
|
||||
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,86 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer
|
||||
{
|
||||
public partial class OrganizationSettingsGeneralSettings : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
Organization org = ES.Services.Organizations.GetOrganization(PanelRequest.ItemID);
|
||||
litOrganizationName.Text = org.OrganizationId;
|
||||
|
||||
BindSettings();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void BindSettings()
|
||||
{
|
||||
var settings = ES.Services.Organizations.GetOrganizationGeneralSettings(PanelRequest.ItemID);
|
||||
|
||||
if (settings != null)
|
||||
{
|
||||
txtOrganizationLogoUrl.Text = settings.OrganizationLogoUrl;
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Page.IsValid)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SaveGeneralSettings(GetSettings());
|
||||
}
|
||||
|
||||
protected void btnSaveExit_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Page.IsValid)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (SaveGeneralSettings(GetSettings()))
|
||||
{
|
||||
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "organization_home",
|
||||
"SpaceID=" + PanelSecurity.PackageId));
|
||||
}
|
||||
}
|
||||
|
||||
private OrganizationGeneralSettings GetSettings()
|
||||
{
|
||||
var settings = new OrganizationGeneralSettings
|
||||
{
|
||||
OrganizationLogoUrl = txtOrganizationLogoUrl.Text
|
||||
};
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
|
||||
private bool SaveGeneralSettings(OrganizationGeneralSettings settings)
|
||||
{
|
||||
try
|
||||
{
|
||||
ES.Services.Organizations.UpdateOrganizationGeneralSettings(PanelRequest.ItemID, GetSettings());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("ORANIZATIONSETTINGS_NOT_UPDATED", ex);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,132 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer {
|
||||
|
||||
|
||||
public partial class OrganizationSettingsGeneralSettings {
|
||||
|
||||
/// <summary>
|
||||
/// asyncTasks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
|
||||
/// <summary>
|
||||
/// Image1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Image Image1;
|
||||
|
||||
/// <summary>
|
||||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
/// <summary>
|
||||
/// litOrganizationName control.
|
||||
/// </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 litOrganizationName;
|
||||
|
||||
/// <summary>
|
||||
/// tabs control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.OrganizationSettingsTabs tabs;
|
||||
|
||||
/// <summary>
|
||||
/// messageBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
||||
|
||||
/// <summary>
|
||||
/// colGeneralSettings control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel colGeneralSettings;
|
||||
|
||||
/// <summary>
|
||||
/// panelGeneralSettings control.
|
||||
/// </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 panelGeneralSettings;
|
||||
|
||||
/// <summary>
|
||||
/// GenerralSettignsTable 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.HtmlTable GenerralSettignsTable;
|
||||
|
||||
/// <summary>
|
||||
/// lblOrganizationLogoUrl control.
|
||||
/// </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 lblOrganizationLogoUrl;
|
||||
|
||||
/// <summary>
|
||||
/// txtOrganizationLogoUrl control.
|
||||
/// </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 txtOrganizationLogoUrl;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireMinLength control.
|
||||
/// </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 valRequireMinLength;
|
||||
|
||||
/// <summary>
|
||||
/// buttonPanel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,168 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationSettingsPasswordSettings.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationSettingsPasswordSettings" %>
|
||||
|
||||
<%@ Register Src="UserControls/OrganizationSettingsTabs.ascx" TagName="CollectionTabs" TagPrefix="wsp" %>
|
||||
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
|
||||
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
||||
|
||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||
|
||||
<div id="ExchangeContainer">
|
||||
<div class="Module">
|
||||
<div class="Left">
|
||||
</div>
|
||||
<div class="Content">
|
||||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="Image1" SkinID="ExchangeList48" runat="server" />
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit Settings"></asp:Localize>
|
||||
|
||||
<asp:Literal ID="litOrganizationName" runat="server" Text="Organization" />
|
||||
</div>
|
||||
<div class="FormBody">
|
||||
|
||||
<wsp:CollectionTabs id="tabs" runat="server" SelectedTab="organization_settings_password_settings" />
|
||||
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
<asp:UpdatePanel runat="server" ID="PasswordPolicyPanel" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||
<ContentTemplate>
|
||||
<wsp:CollapsiblePanel id="colPasswordSettings" runat="server" TargetControlID="panelPasswordSettings" meta:resourcekey="colPasswordSettings" Text="Password settings">
|
||||
</wsp:CollapsiblePanel>
|
||||
|
||||
<asp:Panel runat="server" ID="panelPasswordSettings">
|
||||
<table id="PolicyTable" runat="server" cellpadding="2">
|
||||
<tr>
|
||||
<td class="Normal" style="width:150px;"><asp:Label ID="lblMinimumLength" runat="server"
|
||||
meta:resourcekey="lblMinimumLength" Text="Minimum length:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtMinimumLength" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireMinLength" runat="server" ControlToValidate="txtMinimumLength" meta:resourcekey="valRequireMinLength"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectMinLength" runat="server" ControlToValidate="txtMinimumLength" meta:resourcekey="valCorrectMinLength"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal"><asp:Label ID="lblMaximumLength" runat="server"
|
||||
meta:resourcekey="lblMaximumLength" Text="Maximum length:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtMaximumLength" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireMaxLength" runat="server" ControlToValidate="txtMaximumLength" meta:resourcekey="valRequireMaxLength"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectMaxLength" runat="server" ControlToValidate="txtMaximumLength" meta:resourcekey="valCorrectMaxLength"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal" style="width:150px;"><asp:Label ID="lblEnforcePasswordHistory" runat="server"
|
||||
meta:resourcekey="lblEnforcePasswordHistory" Text="Enforce Password History:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtEnforcePasswordHistory" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireEnforcePasswordHistory" runat="server" ControlToValidate="txtEnforcePasswordHistory" meta:resourcekey="valRequireEnforcePasswordHistory"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectEnforcePasswordHistory" runat="server" ControlToValidate="txtEnforcePasswordHistory" meta:resourcekey="valCorrectEnforcePasswordHistory"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator></td>
|
||||
</tr>
|
||||
<tr id="RowChkLockOutSettigns" runat="server">
|
||||
<td colspan="2" class="NormalBold">
|
||||
<asp:CheckBox id="chkLockOutSettigns" runat="server" meta:resourcekey="chkLockOutSettigns"
|
||||
Text="Enable Lockout Settings" CssClass="NormalBold" AutoPostBack="true" OnCheckedChanged="chkLockOutSettigns_CheckedChanged" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="RowAccountLockoutDuration" runat="server">
|
||||
<td class="Normal" style="width:150px;"><asp:Label ID="lblAccountLockoutDuration" runat="server"
|
||||
meta:resourcekey="lblAccountLockoutDuration" Text="Account Lockout Duration (minutes):"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtAccountLockoutDuration" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireAccountLockoutDuration" runat="server" ControlToValidate="txtAccountLockoutDuration" meta:resourcekey="valRequireAccountLockoutDuration"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectAccountLockoutDuration" runat="server" ControlToValidate="txtAccountLockoutDuration" meta:resourcekey="valCorrectAccountLockoutDuration"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator></td>
|
||||
</tr>
|
||||
<tr id="RowLockedOut" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblLockedOut" runat="server"
|
||||
meta:resourcekey="lblLockedOut" Text="Account Lockout threshold:"></asp:Label>
|
||||
</td>
|
||||
<td class="Normal"><asp:TextBox ID="txtLockedOut" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequiredLockedOut" runat="server" ControlToValidate="txtLockedOut" meta:resourcekey="valRequiredLockedOut"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectLockedOut" runat="server" ControlToValidate="txtLockedOut" meta:resourcekey="valCorrectLockedOut"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,10}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="RowResetAccountLockout" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblResetAccountLockout" runat="server"
|
||||
meta:resourcekey="lblResetAccountLockout" Text="Reset account lockout counter after (minutes):"></asp:Label>
|
||||
</td>
|
||||
<td class="Normal"><asp:TextBox ID="txtResetAccountLockout" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireResetAccountLockout" runat="server" ControlToValidate="txtResetAccountLockout" meta:resourcekey="valRequireResetAccountLockout"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valResetAccountLockout" runat="server" ControlToValidate="txtResetAccountLockout" meta:resourcekey="valResetAccountLockout"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,10}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2" class="NormalBold">
|
||||
<asp:CheckBox id="chkPasswordComplexity" runat="server" meta:resourcekey="chkPasswordComplexity"
|
||||
Text="Enable Password Complexity" CssClass="NormalBold" AutoPostBack="true" OnCheckedChanged="chkPasswordComplexity_CheckedChanged" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="RowMinimumUppercase" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblMinimumUppercase" runat="server"
|
||||
meta:resourcekey="lblMinimumUppercase" Text="Uppercase letters:"></asp:Label>
|
||||
</td>
|
||||
<td class="Normal"><asp:TextBox ID="txtMinimumUppercase" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireUppercase" runat="server" ControlToValidate="txtMinimumUppercase" meta:resourcekey="valRequireUppercase"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectUppercase" runat="server" ControlToValidate="txtMinimumUppercase" meta:resourcekey="valCorrectUppercase"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="RowMinimumNumbers" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblMinimumNumbers" runat="server"
|
||||
meta:resourcekey="lblMinimumNumbers" Text="Numbers:"></asp:Label>
|
||||
</td>
|
||||
<td class="Normal"><asp:TextBox ID="txtMinimumNumbers" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireNumbers" runat="server" ControlToValidate="txtMinimumNumbers" meta:resourcekey="valRequireNumbers"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectNumbers" runat="server" ControlToValidate="txtMinimumNumbers" meta:resourcekey="valCorrectNumbers"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="RowMinimumSymbols" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblMinimumSymbols" runat="server"
|
||||
meta:resourcekey="lblMinimumSymbols" Text="Non-alphanumeric symbols:"></asp:Label>
|
||||
</td>
|
||||
<td class="Normal"><asp:TextBox ID="txtMinimumSymbols" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireSymbols" runat="server" ControlToValidate="txtMinimumSymbols" meta:resourcekey="valRequireSymbols"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectSymbols" runat="server" ControlToValidate="txtMinimumSymbols" meta:resourcekey="valCorrectSymbols"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="rowEqualUsername" runat="server" visible="false">
|
||||
<td class="Normal" colspan="2">
|
||||
<asp:CheckBox id="chkNotEqualUsername" runat="server" meta:resourcekey="chkNotEqualUsername" Text="Should not be equal to username" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
|
||||
<div class="FormFooterClean">
|
||||
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="SettingsEditor"
|
||||
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,163 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer
|
||||
{
|
||||
public partial class OrganizationSettingsPasswordSettings : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
Organization org = ES.Services.Organizations.GetOrganization(PanelRequest.ItemID);
|
||||
litOrganizationName.Text = org.OrganizationId;
|
||||
|
||||
BindSettings();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void BindSettings()
|
||||
{
|
||||
var settings = ES.Services.Organizations.GetOrganizationPasswordSettings(PanelRequest.ItemID);
|
||||
|
||||
if (settings == null)
|
||||
{
|
||||
var defaultSettings = ES.Services.Users.GetUserSettings(PanelSecurity.LoggedUserId, UserSettings.EXCHANGE_POLICY);
|
||||
|
||||
BindDefaultSettings(defaultSettings[UserSettings.HOSTED_ORGANIZATION_PASSWORD_POLICY]);
|
||||
}
|
||||
else
|
||||
{
|
||||
BindSettings(settings);
|
||||
}
|
||||
|
||||
ToggleLockoutControls(chkLockOutSettigns.Checked);
|
||||
ToggleComplexityControls(chkPasswordComplexity.Checked);
|
||||
}
|
||||
|
||||
private void BindDefaultSettings(string defaultSettings)
|
||||
{
|
||||
// parse settings
|
||||
string[] parts = defaultSettings.Split(';');
|
||||
txtMinimumLength.Text = parts[1];
|
||||
txtMaximumLength.Text = parts[2];
|
||||
txtMinimumUppercase.Text = parts[3];
|
||||
txtMinimumNumbers.Text = parts[4];
|
||||
txtMinimumSymbols.Text = parts[5];
|
||||
chkNotEqualUsername.Checked = Utils.ParseBool(parts[6], false);
|
||||
txtLockedOut.Text = parts[7];
|
||||
|
||||
txtEnforcePasswordHistory.Text = PasswordPolicyEditor.GetValueSafe(parts, 8, "0");
|
||||
txtAccountLockoutDuration.Text = PasswordPolicyEditor.GetValueSafe(parts, 9, "0");
|
||||
txtResetAccountLockout.Text = PasswordPolicyEditor.GetValueSafe(parts, 10, "0");
|
||||
chkLockOutSettigns.Checked = PasswordPolicyEditor.GetValueSafe(parts, 11, false);
|
||||
chkPasswordComplexity.Checked = PasswordPolicyEditor.GetValueSafe(parts, 12, true);
|
||||
}
|
||||
|
||||
private void BindSettings(OrganizationPasswordSettings settings)
|
||||
{
|
||||
txtMinimumLength.Text = settings.MinimumLength.ToString();
|
||||
txtMaximumLength.Text = settings.MaximumLength.ToString();
|
||||
txtMinimumUppercase.Text = settings.UppercaseLettersCount.ToString();
|
||||
txtMinimumNumbers.Text = settings.NumbersCount.ToString();
|
||||
txtMinimumSymbols.Text = settings.SymbolsCount.ToString();
|
||||
txtLockedOut.Text = settings.AccountLockoutThreshold.ToString();
|
||||
|
||||
txtEnforcePasswordHistory.Text = settings.EnforcePasswordHistory.ToString();
|
||||
txtAccountLockoutDuration.Text = settings.AccountLockoutDuration.ToString();
|
||||
txtResetAccountLockout.Text = settings.ResetAccountLockoutCounterAfter.ToString();
|
||||
chkLockOutSettigns.Checked = settings.LockoutSettingsEnabled;
|
||||
chkPasswordComplexity.Checked = settings.PasswordComplexityEnabled;
|
||||
}
|
||||
|
||||
private OrganizationPasswordSettings GetSettings()
|
||||
{
|
||||
var settings = new OrganizationPasswordSettings();
|
||||
|
||||
settings.MinimumLength = Utils.ParseInt(txtMinimumLength.Text, 3);
|
||||
settings.MaximumLength = Utils.ParseInt(txtMaximumLength.Text, 7);
|
||||
settings.UppercaseLettersCount = Utils.ParseInt(txtMinimumUppercase.Text, 3);
|
||||
settings.NumbersCount = Utils.ParseInt(txtMinimumNumbers.Text, 3);
|
||||
settings.SymbolsCount = Utils.ParseInt(txtMinimumSymbols.Text, 3);
|
||||
settings.AccountLockoutThreshold = Utils.ParseInt(txtLockedOut.Text, 3);
|
||||
settings.EnforcePasswordHistory = Utils.ParseInt(txtEnforcePasswordHistory.Text, 3);
|
||||
settings.AccountLockoutDuration = Utils.ParseInt(txtAccountLockoutDuration.Text, 3);
|
||||
settings.ResetAccountLockoutCounterAfter = Utils.ParseInt(txtResetAccountLockout.Text, 3);
|
||||
|
||||
settings.LockoutSettingsEnabled = chkLockOutSettigns.Checked;
|
||||
settings.PasswordComplexityEnabled =chkPasswordComplexity.Checked;
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
|
||||
private bool SavePasswordSettings()
|
||||
{
|
||||
try
|
||||
{
|
||||
ES.Services.Organizations.UpdateOrganizationPasswordSettings(PanelRequest.ItemID, GetSettings());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("ORANIZATIONSETTINGS_NOT_UPDATED", ex);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Page.IsValid)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SavePasswordSettings();
|
||||
}
|
||||
|
||||
private void ToggleLockoutControls(bool visible)
|
||||
{
|
||||
RowAccountLockoutDuration.Visible = visible;
|
||||
RowLockedOut.Visible = visible;
|
||||
RowResetAccountLockout.Visible = visible;
|
||||
}
|
||||
|
||||
protected void chkLockOutSettigns_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ToggleLockoutControls(chkLockOutSettigns.Checked);
|
||||
}
|
||||
|
||||
private void ToggleComplexityControls(bool visible)
|
||||
{
|
||||
RowMinimumUppercase.Visible = visible;
|
||||
RowMinimumNumbers.Visible = visible;
|
||||
RowMinimumSymbols.Visible = visible;
|
||||
}
|
||||
|
||||
protected void chkPasswordComplexity_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ToggleComplexityControls(chkPasswordComplexity.Checked);
|
||||
}
|
||||
|
||||
protected void btnSaveExit_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Page.IsValid)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (SavePasswordSettings())
|
||||
{
|
||||
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "organization_home", "SpaceID=" + PanelSecurity.PackageId));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,537 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer {
|
||||
|
||||
|
||||
public partial class OrganizationSettingsPasswordSettings {
|
||||
|
||||
/// <summary>
|
||||
/// asyncTasks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
|
||||
/// <summary>
|
||||
/// Image1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Image Image1;
|
||||
|
||||
/// <summary>
|
||||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
/// <summary>
|
||||
/// litOrganizationName control.
|
||||
/// </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 litOrganizationName;
|
||||
|
||||
/// <summary>
|
||||
/// tabs control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.OrganizationSettingsTabs tabs;
|
||||
|
||||
/// <summary>
|
||||
/// messageBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
||||
|
||||
/// <summary>
|
||||
/// PasswordPolicyPanel 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 PasswordPolicyPanel;
|
||||
|
||||
/// <summary>
|
||||
/// colPasswordSettings control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel colPasswordSettings;
|
||||
|
||||
/// <summary>
|
||||
/// panelPasswordSettings control.
|
||||
/// </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 panelPasswordSettings;
|
||||
|
||||
/// <summary>
|
||||
/// PolicyTable 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.HtmlTable PolicyTable;
|
||||
|
||||
/// <summary>
|
||||
/// lblMinimumLength control.
|
||||
/// </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 lblMinimumLength;
|
||||
|
||||
/// <summary>
|
||||
/// txtMinimumLength control.
|
||||
/// </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 txtMinimumLength;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireMinLength control.
|
||||
/// </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 valRequireMinLength;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectMinLength control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectMinLength;
|
||||
|
||||
/// <summary>
|
||||
/// lblMaximumLength control.
|
||||
/// </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 lblMaximumLength;
|
||||
|
||||
/// <summary>
|
||||
/// txtMaximumLength control.
|
||||
/// </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 txtMaximumLength;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireMaxLength control.
|
||||
/// </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 valRequireMaxLength;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectMaxLength control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectMaxLength;
|
||||
|
||||
/// <summary>
|
||||
/// lblEnforcePasswordHistory control.
|
||||
/// </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 lblEnforcePasswordHistory;
|
||||
|
||||
/// <summary>
|
||||
/// txtEnforcePasswordHistory control.
|
||||
/// </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 txtEnforcePasswordHistory;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireEnforcePasswordHistory control.
|
||||
/// </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 valRequireEnforcePasswordHistory;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectEnforcePasswordHistory control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectEnforcePasswordHistory;
|
||||
|
||||
/// <summary>
|
||||
/// RowChkLockOutSettigns 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 RowChkLockOutSettigns;
|
||||
|
||||
/// <summary>
|
||||
/// chkLockOutSettigns control.
|
||||
/// </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 chkLockOutSettigns;
|
||||
|
||||
/// <summary>
|
||||
/// RowAccountLockoutDuration 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 RowAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// lblAccountLockoutDuration control.
|
||||
/// </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 lblAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// txtAccountLockoutDuration control.
|
||||
/// </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 txtAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireAccountLockoutDuration control.
|
||||
/// </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 valRequireAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectAccountLockoutDuration control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// RowLockedOut 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 RowLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// lblLockedOut control.
|
||||
/// </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 lblLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// txtLockedOut control.
|
||||
/// </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 txtLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// valRequiredLockedOut control.
|
||||
/// </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 valRequiredLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectLockedOut control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// RowResetAccountLockout 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 RowResetAccountLockout;
|
||||
|
||||
/// <summary>
|
||||
/// lblResetAccountLockout control.
|
||||
/// </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 lblResetAccountLockout;
|
||||
|
||||
/// <summary>
|
||||
/// txtResetAccountLockout control.
|
||||
/// </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 txtResetAccountLockout;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireResetAccountLockout control.
|
||||
/// </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 valRequireResetAccountLockout;
|
||||
|
||||
/// <summary>
|
||||
/// valResetAccountLockout control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valResetAccountLockout;
|
||||
|
||||
/// <summary>
|
||||
/// chkPasswordComplexity control.
|
||||
/// </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 chkPasswordComplexity;
|
||||
|
||||
/// <summary>
|
||||
/// RowMinimumUppercase 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 RowMinimumUppercase;
|
||||
|
||||
/// <summary>
|
||||
/// lblMinimumUppercase control.
|
||||
/// </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 lblMinimumUppercase;
|
||||
|
||||
/// <summary>
|
||||
/// txtMinimumUppercase control.
|
||||
/// </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 txtMinimumUppercase;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireUppercase control.
|
||||
/// </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 valRequireUppercase;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectUppercase control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectUppercase;
|
||||
|
||||
/// <summary>
|
||||
/// RowMinimumNumbers 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 RowMinimumNumbers;
|
||||
|
||||
/// <summary>
|
||||
/// lblMinimumNumbers control.
|
||||
/// </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 lblMinimumNumbers;
|
||||
|
||||
/// <summary>
|
||||
/// txtMinimumNumbers control.
|
||||
/// </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 txtMinimumNumbers;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireNumbers control.
|
||||
/// </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 valRequireNumbers;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectNumbers control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectNumbers;
|
||||
|
||||
/// <summary>
|
||||
/// RowMinimumSymbols 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 RowMinimumSymbols;
|
||||
|
||||
/// <summary>
|
||||
/// lblMinimumSymbols control.
|
||||
/// </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 lblMinimumSymbols;
|
||||
|
||||
/// <summary>
|
||||
/// txtMinimumSymbols control.
|
||||
/// </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 txtMinimumSymbols;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireSymbols control.
|
||||
/// </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 valRequireSymbols;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectSymbols control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectSymbols;
|
||||
|
||||
/// <summary>
|
||||
/// rowEqualUsername 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 rowEqualUsername;
|
||||
|
||||
/// <summary>
|
||||
/// chkNotEqualUsername control.
|
||||
/// </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 chkNotEqualUsername;
|
||||
|
||||
/// <summary>
|
||||
/// buttonPanel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||
}
|
||||
}
|
|
@ -74,6 +74,8 @@
|
|||
<asp:Button id="btnSetUserPassword" runat="server" Text="Set Password" CssClass="Button1"
|
||||
meta:resourcekey="btnSetUserPassword" OnClick="btnSetUserPassword_Click" ValidationGroup="ValidatePassword"></asp:Button>
|
||||
<asp:ValidationSummary ID="ValidationSummary2" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="ValidatePassword" />
|
||||
<asp:Button id="btnResetUserPassword" runat="server" Text="Reset Password" CssClass="Button1"
|
||||
meta:resourcekey="btnResetUserPassword" OnClick="btnResetUserPassword_Click"></asp:Button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
|
|
@ -59,18 +59,7 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
{
|
||||
try
|
||||
{
|
||||
password.SetPackagePolicy(PanelSecurity.PackageId, UserSettings.EXCHANGE_POLICY, "MailboxPasswordPolicy");
|
||||
PasswordPolicyResult passwordPolicy = ES.Services.Organizations.GetPasswordPolicy(PanelRequest.ItemID);
|
||||
if (passwordPolicy.IsSuccess)
|
||||
{
|
||||
password.MinimumLength = passwordPolicy.Value.MinLength;
|
||||
if (passwordPolicy.Value.IsComplexityEnable)
|
||||
{
|
||||
password.MinimumNumbers = 1;
|
||||
password.MinimumSymbols = 1;
|
||||
password.MinimumUppercase = 1;
|
||||
}
|
||||
}
|
||||
BindPasswordSettings();
|
||||
|
||||
// get settings
|
||||
OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID,
|
||||
|
@ -232,6 +221,10 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
password.ValidationEnabled = true;
|
||||
password.Password = string.Empty;
|
||||
|
||||
var settings = ES.Services.Organizations.GetWebDavSystemSettings();
|
||||
|
||||
btnResetUserPassword.Visible = settings != null && Utils.ParseBool(settings[EnterpriseServer.SystemSettings.WEBDAV_PASSWORD_RESET_ENABLED_KEY], false);
|
||||
|
||||
chkUserMustChangePassword.Checked = user.UserMustChangePassword;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -273,6 +266,20 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
|
||||
}
|
||||
|
||||
private void BindPasswordSettings()
|
||||
{
|
||||
var grainedPasswordSettigns = ES.Services.Organizations.GetOrganizationPasswordSettings(PanelRequest.ItemID);
|
||||
|
||||
if (grainedPasswordSettigns != null)
|
||||
{
|
||||
password.SetUserPolicy(grainedPasswordSettigns);
|
||||
}
|
||||
else
|
||||
{
|
||||
messageBox.ShowErrorMessage("UNABLETOLOADPASSWORDSETTINGS");
|
||||
}
|
||||
}
|
||||
|
||||
private bool CheckServiceLevelQuota(QuotaValueInfo quota)
|
||||
{
|
||||
|
||||
|
@ -435,5 +442,13 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
|
||||
}
|
||||
|
||||
protected void btnResetUserPassword_Click(object sender, EventArgs e)
|
||||
{
|
||||
Response.Redirect(PortalUtils.EditUrl("ItemID", PanelRequest.ItemID.ToString(),
|
||||
"user_reset_password",
|
||||
"SpaceID=" + PanelSecurity.PackageId,
|
||||
"Context=" + ((PanelRequest.Context == "Mailbox") ? "Mailbox" : "User"),
|
||||
"AccountID=" + PanelRequest.AccountID));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -210,6 +210,15 @@ namespace WebsitePanel.Portal.HostedSolution {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary2;
|
||||
|
||||
/// <summary>
|
||||
/// btnResetUserPassword control.
|
||||
/// </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 btnResetUserPassword;
|
||||
|
||||
/// <summary>
|
||||
/// chkUserMustChangePassword control.
|
||||
/// </summary>
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationUserResetPassword.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationUserResetPassword" %>
|
||||
|
||||
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||
|
||||
|
||||
<div id="ExchangeContainer">
|
||||
<div class="Module">
|
||||
<div class="Left">
|
||||
</div>
|
||||
<div class="Content">
|
||||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="Image1" SkinID="OrganizationUser48" runat="server" />
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Reset Password"></asp:Localize>
|
||||
-
|
||||
<asp:Literal ID="litDisplayName" runat="server" Text="John Smith" />
|
||||
</div>
|
||||
|
||||
<div class="FormBody">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150" valign="top"><asp:Localize ID="locEmailAddress" runat="server" meta:resourcekey="locEmailAddress" ></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox runat="server" ID="txtEmailAddress" CssClass="TextBox200"/>
|
||||
<asp:RequiredFieldValidator ID="valEmailAddress" runat="server" ErrorMessage="*" ControlToValidate="txtEmailAddress" ValidationGroup="ResetUserPassword"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ValidationGroup="ResetUserPassword" ControlToValidate="txtEmailAddress" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="locReason" runat="server" meta:resourcekey="locReason" Text="Reason:"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtReason" runat="server" CssClass="TextBox200" Rows="4" TextMode="MultiLine"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valReason" runat="server" ErrorMessage="*" ControlToValidate="txtReason" ValidationGroup="ResetUserPassword"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="FormFooterClean">
|
||||
<asp:Button id="btnResetPassoword" runat="server" Text="Send Password Reset Email" CssClass="Button1" meta:resourcekey="btnResetPassoword" ValidationGroup="ResetUserPassword" OnClick="btnResetPassoword_Click"></asp:Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer
|
||||
{
|
||||
public partial class OrganizationUserResetPassword : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
BindSettings();
|
||||
}
|
||||
}
|
||||
|
||||
private void BindSettings()
|
||||
{
|
||||
OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID,
|
||||
PanelRequest.AccountID);
|
||||
|
||||
litDisplayName.Text = PortalAntiXSS.Encode(user.DisplayName);
|
||||
|
||||
txtEmailAddress.Text = user.PrimaryEmailAddress;
|
||||
}
|
||||
|
||||
protected void btnResetPassoword_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Page.IsValid)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ES.Services.Organizations.SendResetUserPasswordEmail(PanelRequest.ItemID,PanelRequest.AccountID, txtReason.Text, txtEmailAddress.Text);
|
||||
|
||||
Response.Redirect(PortalUtils.EditUrl("ItemID", PanelRequest.ItemID.ToString(),
|
||||
(PanelRequest.Context == "Mailbox") ? "mailboxes" : "users",
|
||||
"SpaceID=" + PanelSecurity.PackageId));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,114 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer {
|
||||
|
||||
|
||||
public partial class OrganizationUserResetPassword {
|
||||
|
||||
/// <summary>
|
||||
/// Image1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Image Image1;
|
||||
|
||||
/// <summary>
|
||||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
/// <summary>
|
||||
/// litDisplayName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal litDisplayName;
|
||||
|
||||
/// <summary>
|
||||
/// locEmailAddress control.
|
||||
/// </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 locEmailAddress;
|
||||
|
||||
/// <summary>
|
||||
/// txtEmailAddress control.
|
||||
/// </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 txtEmailAddress;
|
||||
|
||||
/// <summary>
|
||||
/// valEmailAddress control.
|
||||
/// </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 valEmailAddress;
|
||||
|
||||
/// <summary>
|
||||
/// regexEmailValid control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator regexEmailValid;
|
||||
|
||||
/// <summary>
|
||||
/// locReason control.
|
||||
/// </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 locReason;
|
||||
|
||||
/// <summary>
|
||||
/// txtReason control.
|
||||
/// </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 txtReason;
|
||||
|
||||
/// <summary>
|
||||
/// valReason control.
|
||||
/// </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 valReason;
|
||||
|
||||
/// <summary>
|
||||
/// btnResetPassoword control.
|
||||
/// </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 btnResetPassoword;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,126 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Tab.GeneralSettigns" xml:space="preserve">
|
||||
<value>General Settings</value>
|
||||
</data>
|
||||
<data name="Tab.PasswordSettings" xml:space="preserve">
|
||||
<value>Password Settings</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,32 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationSettingsTabs.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.UserControls.OrganizationSettingsTabs" %>
|
||||
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="1">
|
||||
<tr>
|
||||
<td class="Tabs">
|
||||
<asp:DataList ID="osTabs" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" EnableViewState="false">
|
||||
<ItemStyle Wrap="False" />
|
||||
<ItemTemplate >
|
||||
<asp:HyperLink ID="lnkTab" runat="server" CssClass="Tab" NavigateUrl='<%# Eval("Url") %>' OnClick="return tabClicked();">
|
||||
<%# Eval("Name") %>
|
||||
</asp:HyperLink>
|
||||
</ItemTemplate>
|
||||
<SelectedItemStyle Wrap="False" />
|
||||
<SelectedItemTemplate>
|
||||
<asp:HyperLink ID="lnkSelTab" runat="server" CssClass="ActiveTab" NavigateUrl='<%# Eval("Url") %>' OnClick="return tabClicked;">
|
||||
<%# Eval("Name") %>
|
||||
</asp:HyperLink>
|
||||
</SelectedItemTemplate>
|
||||
</asp:DataList>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
|
||||
<script type="text/javascript">
|
||||
function tabClicked() {
|
||||
ShowProgressDialog('Loading');
|
||||
ShowProgressDialogInternal();
|
||||
return true;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,53 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.Portal.Code.UserControls;
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
||||
{
|
||||
public partial class OrganizationSettingsTabs : WebsitePanelControlBase
|
||||
{
|
||||
public string SelectedTab { get; set; }
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
BindTabs();
|
||||
}
|
||||
|
||||
private void BindTabs()
|
||||
{
|
||||
List<Tab> tabsList = new List<Tab>();
|
||||
tabsList.Add(CreateTab("organization_settings_general_settings", "Tab.GeneralSettigns"));
|
||||
tabsList.Add(CreateTab("organization_settings_password_settings", "Tab.PasswordSettings"));
|
||||
|
||||
|
||||
|
||||
int idx = 0;
|
||||
|
||||
foreach (Tab tab in tabsList)
|
||||
{
|
||||
if (String.Compare(tab.Id, SelectedTab, true) == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
idx++;
|
||||
}
|
||||
|
||||
osTabs.SelectedIndex = idx;
|
||||
osTabs.DataSource = tabsList;
|
||||
osTabs.DataBind();
|
||||
}
|
||||
|
||||
private Tab CreateTab(string id, string text)
|
||||
{
|
||||
return new Tab(id, GetLocalizedString(text),
|
||||
HostModule.EditUrl("ItemID", PanelRequest.ItemID.ToString(), id,
|
||||
"SpaceID=" + PanelSecurity.PackageId
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer.UserControls {
|
||||
|
||||
|
||||
public partial class OrganizationSettingsTabs {
|
||||
|
||||
/// <summary>
|
||||
/// osTabs control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.DataList osTabs;
|
||||
}
|
||||
}
|
|
@ -153,6 +153,7 @@ namespace WebsitePanel.Portal
|
|||
if (maxMailboxSizeLimit == -1 || maxMailboxSizeLimit == 0)
|
||||
{
|
||||
MaxMailboxSizeLimitValidator.Enabled = false;
|
||||
CompareValidator1.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -157,8 +157,8 @@
|
|||
<td colspan="2">
|
||||
<asp:RadioButtonList ID="ReplicationModeList" runat="server" AutoPostBack="true"
|
||||
OnSelectedIndexChanged="radioServer_SelectedIndexChanged">
|
||||
<asp:ListItem Value="Disable" meta:resourcekey="ReplicationModeDisabled" Selected="True">No Hyper-v Replication</asp:ListItem>
|
||||
<asp:ListItem Value="Enable" meta:resourcekey="ReplicationModeEnabled">Enable Hyper-V Replication</asp:ListItem>
|
||||
<asp:ListItem Value="None" meta:resourcekey="ReplicationModeDisabled" Selected="True">No Hyper-v Replication</asp:ListItem>
|
||||
<asp:ListItem Value="ReplicationEnabled" meta:resourcekey="ReplicationModeEnabled">Enable Hyper-V Replication</asp:ListItem>
|
||||
<asp:ListItem Value="IsReplicaServer" meta:resourcekey="ReplicationModeIsReplicaServer">This is a Replica Server</asp:ListItem>
|
||||
</asp:RadioButtonList>
|
||||
</td>
|
||||
|
|
|
@ -47,8 +47,8 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
public bool IsRemoteServer { get { return radioServer.SelectedIndex > 0; } }
|
||||
public string RemoteServerName { get { return IsRemoteServer ? txtServerName.Text.Trim() : ""; } }
|
||||
public string CertificateThumbprint { get { return IsRemoteServer ? txtCertThumbnail.Text.Trim() : ddlCertThumbnail.SelectedValue; } }
|
||||
public bool IsReplicaServer { get { return ReplicationModeList.SelectedValue == "IsReplicaServer"; } }
|
||||
public bool EnabledReplica { get { return ReplicationModeList.SelectedValue == "Enable"; } }
|
||||
public bool IsReplicaServer { get { return ReplicationModeList.SelectedValue == ReplicaMode.IsReplicaServer.ToString(); } }
|
||||
public bool EnabledReplica { get { return ReplicationModeList.SelectedValue == ReplicaMode.ReplicationEnabled.ToString(); } }
|
||||
public string ReplicaServerId { get; set; }
|
||||
|
||||
void IHostingServiceProviderSettings.BindSettings(StringDictionary settings)
|
||||
|
@ -106,7 +106,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
radioStopAction.SelectedValue = settings["StopAction"];
|
||||
|
||||
// replica
|
||||
ReplicationModeList.SelectedValue = settings["ReplicaMode"] ?? "Disabled";
|
||||
ReplicationModeList.SelectedValue = settings["ReplicaMode"] ?? ReplicaMode.None.ToString();
|
||||
txtReplicaPath.Text = settings["ReplicaServerPath"];
|
||||
ReplicaServerId = settings["ReplicaServerId"];
|
||||
|
||||
|
@ -115,12 +115,13 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
// replica
|
||||
txtCertThumbnail.Text = settings["ReplicaServerThumbprint"];
|
||||
ddlCertThumbnail.SelectedValue = settings["ReplicaServerThumbprint"];
|
||||
ddlReplicaServer.SelectedValue = settings["ReplicaServerId"];
|
||||
|
||||
if (IsReplicaServer)
|
||||
{
|
||||
var serverIsRealReplica = ES.Services.VPS2012.IsReplicaServer(PanelRequest.ServiceId, RemoteServerName);
|
||||
var realReplica = ES.Services.VPS2012.GetReplicaServer(PanelRequest.ServiceId, RemoteServerName);
|
||||
|
||||
if (!serverIsRealReplica)
|
||||
if (realReplica == null)
|
||||
ReplicaErrorTr.Visible = true;
|
||||
}
|
||||
}
|
||||
|
@ -181,7 +182,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
settings["ReplicaServerPath"] = txtReplicaPath.Text;
|
||||
settings["ReplicaServerThumbprint"] = CertificateThumbprint;
|
||||
|
||||
SetReplication();
|
||||
SetUnsetReplication();
|
||||
}
|
||||
|
||||
private void BindNetworksList()
|
||||
|
@ -237,7 +238,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
continue;
|
||||
|
||||
var currentServiceSettings = ConvertArrayToDictionary(ES.Services.Servers.GetServiceSettings(serviceId));
|
||||
if (currentServiceSettings["ReplicaMode"] == ReplicaMode.IsReplicaServer.ToString())
|
||||
if (currentServiceSettings["ReplicaMode"] != ReplicaMode.IsReplicaServer.ToString())
|
||||
continue;
|
||||
|
||||
var exists = false;
|
||||
|
@ -261,7 +262,6 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
list.Add(serviceInfo);
|
||||
}
|
||||
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
|
@ -294,11 +294,10 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
ManagePreferredNameServerRow.Visible = ManageNicConfigRow.Visible && (ddlManageNicConfig.SelectedIndex == 0);
|
||||
|
||||
// Replica
|
||||
IsReplicaServerRow.Visible = IsReplicaServer;
|
||||
EnableReplicaRow.Visible = EnabledReplica;
|
||||
ddlCertThumbnail.Visible = !IsRemoteServer;
|
||||
txtCertThumbnail.Visible = CertificateThumbnailValidator.Visible = IsRemoteServer;
|
||||
IsReplicaServerRow.Visible = IsReplicaServer;
|
||||
ddlCertThumbnail.Visible = CertificateDdlThumbnailValidator.Visible = !IsRemoteServer;
|
||||
txtCertThumbnail.Visible = CertificateThumbnailValidator.Visible = IsRemoteServer;
|
||||
ReplicaPathErrorTr.Visible = ReplicaErrorTr.Visible = false;
|
||||
if (IsReplicaServer) BindCertificates();
|
||||
if (EnabledReplica) BindReplicaServices();
|
||||
|
@ -332,13 +331,16 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
protected void btnSetReplicaServer_Click(object sender, EventArgs e)
|
||||
{
|
||||
ToggleControls();
|
||||
SetReplication();
|
||||
SetUnsetReplication();
|
||||
}
|
||||
|
||||
private void SetReplication()
|
||||
private void SetUnsetReplication()
|
||||
{
|
||||
if (!IsReplicaServer)
|
||||
{
|
||||
ES.Services.VPS2012.UnsetReplicaServer(PanelRequest.ServiceId, RemoteServerName);
|
||||
return;
|
||||
}
|
||||
|
||||
if (txtReplicaPath.Text == "")
|
||||
{
|
||||
|
|
|
@ -43,6 +43,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
secForwarding.Visible = (PanelRequest.ItemID > 0);
|
||||
OlderMailsPanel.Visible = (PanelRequest.ItemID > 0);
|
||||
secOlderMails.Visible = (PanelRequest.ItemID > 0);
|
||||
Utils.SelectListItem(ddlAccountType, "1"); // Set default account type to POP3 & IMAP
|
||||
}
|
||||
|
||||
public void BindItem(MailAccount item)
|
||||
|
@ -108,7 +109,6 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
item.ForwardingAddresses = Utils.ParseDelimitedString(txtForward.Text, ';', ' ', ',');
|
||||
item.DeleteOnForward = cbDeleteOnForward.Checked;
|
||||
item.ChangePassword = cbChangePassword.Checked;
|
||||
item.ChangePassword = cbChangePassword.Checked;
|
||||
item.IsDomainAdmin = cbDomainAdmin.Checked;
|
||||
|
||||
item.DeleteOlder = cbDeleteOlder.Checked;
|
||||
|
|
|
@ -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>
|
|
@ -0,0 +1,13 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserPasswordExpirationNotificationView.ascx.cs" Inherits="WebsitePanel.Portal.ScheduleTaskControls.UserPasswordExpirationNotificationView" %>
|
||||
|
||||
|
||||
<table cellspacing="0" cellpadding="4" width="100%">
|
||||
<tr>
|
||||
<td class="SubHead" nowrap>
|
||||
<asp:Label ID="lblDayBeforeNotify" runat="server" meta:resourcekey="lblDayBeforeNotify" Text="Notify before (days):"></asp:Label>
|
||||
</td>
|
||||
<td class="Normal" width="100%">
|
||||
<asp:TextBox ID="txtDaysBeforeNotify" runat="server" Width="95%" CssClass="NormalTextBox" MaxLength="1000"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Portal.UserControls.ScheduleTaskView;
|
||||
|
||||
namespace WebsitePanel.Portal.ScheduleTaskControls
|
||||
{
|
||||
public partial class UserPasswordExpirationNotificationView : EmptyView
|
||||
{
|
||||
private static readonly string DaysBeforeParameter = "DAYS_BEFORE_EXPIRATION";
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets scheduler task parameters on view.
|
||||
/// </summary>
|
||||
/// <param name="parameters">Parameters list to be set on view.</param>
|
||||
public override void SetParameters(ScheduleTaskParameterInfo[] parameters)
|
||||
{
|
||||
base.SetParameters(parameters);
|
||||
|
||||
this.SetParameter(this.txtDaysBeforeNotify, DaysBeforeParameter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets scheduler task parameters from view.
|
||||
/// </summary>
|
||||
/// <returns>Parameters list filled from view.</returns>
|
||||
public override ScheduleTaskParameterInfo[] GetParameters()
|
||||
{
|
||||
ScheduleTaskParameterInfo daysBefore = this.GetParameter(this.txtDaysBeforeNotify, DaysBeforeParameter);
|
||||
|
||||
return new[] { daysBefore };
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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.ScheduleTaskControls {
|
||||
|
||||
|
||||
public partial class UserPasswordExpirationNotificationView {
|
||||
|
||||
/// <summary>
|
||||
/// lblDayBeforeNotify control.
|
||||
/// </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 lblDayBeforeNotify;
|
||||
|
||||
/// <summary>
|
||||
/// txtDaysBeforeNotify control.
|
||||
/// </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 txtDaysBeforeNotify;
|
||||
}
|
||||
}
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
</td>
|
||||
<td>
|
||||
<wsp:PasswordPolicyEditor id="mailboxPasswordPolicy" runat="server" />
|
||||
<wsp:PasswordPolicyEditor id="mailboxPasswordPolicy" runat="server" ShowLockoutSettings="true"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -1,30 +1,11 @@
|
|||
// Copyright (c) 2015, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// 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.
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal {
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SettingsUserPasswordExpirationLetter.ascx.cs" Inherits="WebsitePanel.Portal.SettingsUserPasswordExpirationLetter" %>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="SubHead" width="150" nowrap><asp:Label ID="lblFrom" runat="server" meta:resourcekey="lblFrom" Text="From:"></asp:Label></td>
|
||||
<td class="Normal" width="100%">
|
||||
<asp:TextBox ID="txtFrom" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label ID="lblSubject" runat="server" meta:resourcekey="lblSubject" Text="Subject:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtSubject" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label ID="lblPriority" runat="server" meta:resourcekey="lblPriority" Text="Priority"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:DropDownList ID="ddlPriority" runat="server" CssClass="NormalTextBox" resourcekey="ddlPriority">
|
||||
<asp:ListItem Value="High">High</asp:ListItem>
|
||||
<asp:ListItem Value="Normal">Normal</asp:ListItem>
|
||||
<asp:ListItem Value="Low">Low</asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label ID="lblLogoUrl" runat="server" meta:resourcekey="lblLogoUrl" Text="Logo Url:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtLogoUrl" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblHtmlBody" runat="server" meta:resourcekey="lblHtmlBody" Text="HTML Body:"></asp:Label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal" colspan="2">
|
||||
<asp:TextBox ID="txtHtmlBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblTextBody" runat="server" meta:resourcekey="lblTextBody" Text="Text Body:"></asp:Label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal" colspan="2">
|
||||
<asp:TextBox ID="txtTextBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
|
@ -0,0 +1,33 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
public partial class SettingsUserPasswordExpirationLetter : WebsitePanelControlBase, IUserSettingsEditorControl
|
||||
{
|
||||
public void BindSettings(UserSettings settings)
|
||||
{
|
||||
txtFrom.Text = settings["From"];
|
||||
txtSubject.Text = settings["Subject"];
|
||||
Utils.SelectListItem(ddlPriority, settings["Priority"]);
|
||||
txtHtmlBody.Text = settings["HtmlBody"];
|
||||
txtTextBody.Text = settings["TextBody"];
|
||||
txtLogoUrl.Text = settings["LogoUrl"];
|
||||
}
|
||||
|
||||
public void SaveSettings(UserSettings settings)
|
||||
{
|
||||
settings["From"] = txtFrom.Text;
|
||||
settings["Subject"] = txtSubject.Text;
|
||||
settings["Priority"] = ddlPriority.SelectedValue;
|
||||
settings["HtmlBody"] = txtHtmlBody.Text;
|
||||
settings["TextBody"] = txtTextBody.Text;
|
||||
settings["LogoUrl"] = txtLogoUrl.Text;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 {
|
||||
|
||||
|
||||
public partial class SettingsUserPasswordExpirationLetter {
|
||||
|
||||
/// <summary>
|
||||
/// lblFrom control.
|
||||
/// </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 lblFrom;
|
||||
|
||||
/// <summary>
|
||||
/// txtFrom control.
|
||||
/// </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 txtFrom;
|
||||
|
||||
/// <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>
|
||||
/// lblPriority control.
|
||||
/// </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 lblPriority;
|
||||
|
||||
/// <summary>
|
||||
/// ddlPriority control.
|
||||
/// </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 ddlPriority;
|
||||
|
||||
/// <summary>
|
||||
/// lblLogoUrl control.
|
||||
/// </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 lblLogoUrl;
|
||||
|
||||
/// <summary>
|
||||
/// txtLogoUrl control.
|
||||
/// </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 txtLogoUrl;
|
||||
|
||||
/// <summary>
|
||||
/// lblHtmlBody control.
|
||||
/// </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 lblHtmlBody;
|
||||
|
||||
/// <summary>
|
||||
/// txtHtmlBody control.
|
||||
/// </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 txtHtmlBody;
|
||||
|
||||
/// <summary>
|
||||
/// lblTextBody control.
|
||||
/// </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 lblTextBody;
|
||||
|
||||
/// <summary>
|
||||
/// txtTextBody control.
|
||||
/// </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 txtTextBody;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SettingsUserPasswordResetLetter.ascx.cs" Inherits="WebsitePanel.Portal.SettingsUserPasswordResetLetter" %>
|
||||
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="SubHead" width="150" nowrap><asp:Label ID="lblFrom" runat="server" meta:resourcekey="lblFrom" Text="From:"></asp:Label></td>
|
||||
<td class="Normal" width="100%">
|
||||
<asp:TextBox ID="txtFrom" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label ID="lblSubject" runat="server" meta:resourcekey="lblSubject" Text="Subject:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtSubject" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label ID="lblPriority" runat="server" meta:resourcekey="lblPriority" Text="Priority"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:DropDownList ID="ddlPriority" runat="server" CssClass="NormalTextBox" resourcekey="ddlPriority">
|
||||
<asp:ListItem Value="High">High</asp:ListItem>
|
||||
<asp:ListItem Value="Normal">Normal</asp:ListItem>
|
||||
<asp:ListItem Value="Low">Low</asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label ID="lblLogoUrl" runat="server" meta:resourcekey="lblLogoUrl" Text="Logo Url:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtLogoUrl" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblHtmlBody" runat="server" meta:resourcekey="lblHtmlBody" Text="HTML Body:"></asp:Label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal" colspan="2">
|
||||
<asp:TextBox ID="txtHtmlBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblTextBody" runat="server" meta:resourcekey="lblTextBody" Text="Text Body:"></asp:Label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal" colspan="2">
|
||||
<asp:TextBox ID="txtTextBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
|
@ -0,0 +1,33 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
public partial class SettingsUserPasswordResetLetter : WebsitePanelControlBase, IUserSettingsEditorControl
|
||||
{
|
||||
public void BindSettings(UserSettings settings)
|
||||
{
|
||||
txtFrom.Text = settings["From"];
|
||||
txtSubject.Text = settings["Subject"];
|
||||
Utils.SelectListItem(ddlPriority, settings["Priority"]);
|
||||
txtHtmlBody.Text = settings["HtmlBody"];
|
||||
txtTextBody.Text = settings["TextBody"];
|
||||
txtLogoUrl.Text = settings["LogoUrl"];
|
||||
}
|
||||
|
||||
public void SaveSettings(UserSettings settings)
|
||||
{
|
||||
settings["From"] = txtFrom.Text;
|
||||
settings["Subject"] = txtSubject.Text;
|
||||
settings["Priority"] = ddlPriority.SelectedValue;
|
||||
settings["HtmlBody"] = txtHtmlBody.Text;
|
||||
settings["TextBody"] = txtTextBody.Text;
|
||||
settings["LogoUrl"] = txtLogoUrl.Text;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 {
|
||||
|
||||
|
||||
public partial class SettingsUserPasswordResetLetter {
|
||||
|
||||
/// <summary>
|
||||
/// lblFrom control.
|
||||
/// </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 lblFrom;
|
||||
|
||||
/// <summary>
|
||||
/// txtFrom control.
|
||||
/// </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 txtFrom;
|
||||
|
||||
/// <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>
|
||||
/// lblPriority control.
|
||||
/// </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 lblPriority;
|
||||
|
||||
/// <summary>
|
||||
/// ddlPriority control.
|
||||
/// </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 ddlPriority;
|
||||
|
||||
/// <summary>
|
||||
/// lblLogoUrl control.
|
||||
/// </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 lblLogoUrl;
|
||||
|
||||
/// <summary>
|
||||
/// txtLogoUrl control.
|
||||
/// </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 txtLogoUrl;
|
||||
|
||||
/// <summary>
|
||||
/// lblHtmlBody control.
|
||||
/// </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 lblHtmlBody;
|
||||
|
||||
/// <summary>
|
||||
/// txtHtmlBody control.
|
||||
/// </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 txtHtmlBody;
|
||||
|
||||
/// <summary>
|
||||
/// lblTextBody control.
|
||||
/// </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 lblTextBody;
|
||||
|
||||
/// <summary>
|
||||
/// txtTextBody control.
|
||||
/// </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 txtTextBody;
|
||||
}
|
||||
}
|
|
@ -82,6 +82,22 @@
|
|||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
<wsp:CollapsiblePanel ID="WebdavPortalSettings" runat="server" TargetControlID="PanelWebdavPortalSettings" meta:resourcekey="WebdavPortalSettings" Text="Webdav Portal" />
|
||||
<asp:Panel ID="PanelWebdavPortalSettings" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Localize ID="locEnablePasswordReset" runat="server" meta:resourcekey="locEnablePasswordReset" /></td>
|
||||
<td class="Normal">
|
||||
<asp:CheckBox ID="chkEnablePasswordReset" runat="server" Text="Yes" meta:resourcekey="chkEnablePasswordReset" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead" style="width:200px;"><asp:Localize ID="lblWebdavPortalUrl" runat="server" meta:resourcekey="lblWebdavPortalUrl" />
|
||||
<td><asp:TextBox runat="server" ID="txtWebdavPortalUrl" Width="450px" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
</div>
|
||||
<div class="FormFooter">
|
||||
<asp:Button runat="server" ID="btnSaveSettings" meta:resourcekey="btnSaveSettings"
|
||||
|
|
|
@ -52,6 +52,8 @@ namespace WebsitePanel.Portal
|
|||
public const string BACKUPS_PATH = "BackupsPath";
|
||||
public const string FILE_MANAGER_EDITABLE_EXTENSIONS = "EditableExtensions";
|
||||
public const string RDS_MAIN_CONTROLLER = "RdsMainController";
|
||||
public const string WEBDAV_PORTAL_URL = "WebdavPortalUrl";
|
||||
public const string WEBDAV_PASSWORD_RESET_ENABLED = "WebdavPasswordResetEnabled";
|
||||
|
||||
/*
|
||||
public const string FEED_ENABLE_MICROSOFT = "FeedEnableMicrosoft";
|
||||
|
@ -156,6 +158,15 @@ namespace WebsitePanel.Portal
|
|||
{
|
||||
ddlRdsController.SelectedValue = ddlRdsController.Items[0].Value;
|
||||
}
|
||||
|
||||
// Webdav portal
|
||||
settings = ES.Services.System.GetSystemSettings(WSP.SystemSettings.WEBDAV_PORTAL_SETTINGS);
|
||||
|
||||
if (settings != null)
|
||||
{
|
||||
chkEnablePasswordReset.Checked = Utils.ParseBool(settings[WSP.SystemSettings.WEBDAV_PASSWORD_RESET_ENABLED_KEY], false);
|
||||
txtWebdavPortalUrl.Text = settings[WEBDAV_PORTAL_URL];
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveSettings()
|
||||
|
@ -237,6 +248,11 @@ namespace WebsitePanel.Portal
|
|||
settings[RDS_MAIN_CONTROLLER] = ddlRdsController.SelectedValue;
|
||||
result = ES.Services.System.SetSystemSettings(WSP.SystemSettings.RDS_SETTINGS, settings);
|
||||
|
||||
settings = new WSP.SystemSettings();
|
||||
settings[WEBDAV_PORTAL_URL] = txtWebdavPortalUrl.Text;
|
||||
settings[WSP.SystemSettings.WEBDAV_PASSWORD_RESET_ENABLED_KEY] = chkEnablePasswordReset.Checked.ToString();
|
||||
result = ES.Services.System.SetSystemSettings(WSP.SystemSettings.WEBDAV_PORTAL_SETTINGS, settings);
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
ShowResultMessage(result);
|
||||
|
|
|
@ -228,6 +228,60 @@ namespace WebsitePanel.Portal {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.DropDownList ddlRdsController;
|
||||
|
||||
/// <summary>
|
||||
/// WebdavPortalSettings control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel WebdavPortalSettings;
|
||||
|
||||
/// <summary>
|
||||
/// PanelWebdavPortalSettings control.
|
||||
/// </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 PanelWebdavPortalSettings;
|
||||
|
||||
/// <summary>
|
||||
/// locEnablePasswordReset control.
|
||||
/// </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 locEnablePasswordReset;
|
||||
|
||||
/// <summary>
|
||||
/// chkEnablePasswordReset control.
|
||||
/// </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 chkEnablePasswordReset;
|
||||
|
||||
/// <summary>
|
||||
/// lblWebdavPortalUrl control.
|
||||
/// </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 lblWebdavPortalUrl;
|
||||
|
||||
/// <summary>
|
||||
/// txtWebdavPortalUrl control.
|
||||
/// </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 txtWebdavPortalUrl;
|
||||
|
||||
/// <summary>
|
||||
/// btnSaveSettings control.
|
||||
/// </summary>
|
||||
|
|
|
@ -42,6 +42,14 @@
|
|||
<asp:HyperLink ID="lnkRdsSetupLetter" runat="server" meta:resourcekey="lnkRdsSetupLetter"
|
||||
Text="RDS Setup Letter" NavigateUrl='<%# GetSettingsLink("RdsSetupLetter", "SettingsRdsSetupLetter") %>'></asp:HyperLink>
|
||||
</li>
|
||||
<li>
|
||||
<asp:HyperLink ID="lnkUserPasswordExpirationLetter" runat="server" meta:resourcekey="lnkUserPasswordExpirationLetter"
|
||||
Text="User Password Expiration Letter" NavigateUrl='<%# GetSettingsLink("UserPasswordExpirationLetter", "SettingsUserPasswordExpirationLetter") %>'></asp:HyperLink>
|
||||
</li>
|
||||
<li>
|
||||
<asp:HyperLink ID="lnkOrganizationUserPasswordResetLetter" runat="server" meta:resourcekey="lnkOrganizationUserPasswordResetLetter"
|
||||
Text="User Password Reset Letter" NavigateUrl='<%# GetSettingsLink("UserPasswordResetLetter", "SettingsUserPasswordResetLetter") %>'></asp:HyperLink>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="FormFooter">
|
||||
|
|
|
@ -102,6 +102,24 @@ namespace WebsitePanel.Portal {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.HyperLink lnkRdsSetupLetter;
|
||||
|
||||
/// <summary>
|
||||
/// lnkUserPasswordExpirationLetter control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.HyperLink lnkUserPasswordExpirationLetter;
|
||||
|
||||
/// <summary>
|
||||
/// lnkOrganizationUserPasswordResetLetter control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.HyperLink lnkOrganizationUserPasswordResetLetter;
|
||||
|
||||
/// <summary>
|
||||
/// btnCancel control.
|
||||
/// </summary>
|
||||
|
|
|
@ -120,11 +120,26 @@
|
|||
<data name="chkEnabled.Text" xml:space="preserve">
|
||||
<value>Enable Policy</value>
|
||||
</data>
|
||||
<data name="chkLockOutSettigns.Text" xml:space="preserve">
|
||||
<value>Enable Lockout Settings</value>
|
||||
</data>
|
||||
<data name="chkNotEqualUsername.Text" xml:space="preserve">
|
||||
<value>Should not be equal to username</value>
|
||||
</data>
|
||||
<data name="chkPasswordComplexity" xml:space="preserve">
|
||||
<value>Enable Password Complexity</value>
|
||||
</data>
|
||||
<data name="lblAccountLockoutDuration.Text" xml:space="preserve">
|
||||
<value>Account lockout duration (minutes):</value>
|
||||
</data>
|
||||
<data name="lblEnforcePasswordHistory.Text" xml:space="preserve">
|
||||
<value>Enforce password history:</value>
|
||||
</data>
|
||||
<data name="lblLockedOut.Text" xml:space="preserve">
|
||||
<value>Lock out after # attempts:</value>
|
||||
<value>Account lockout threshold:</value>
|
||||
</data>
|
||||
<data name="lblLockOutSettigns.Text" xml:space="preserve">
|
||||
<value>Lock out settings:</value>
|
||||
</data>
|
||||
<data name="lblMaximumLength.Text" xml:space="preserve">
|
||||
<value>Maximum length:</value>
|
||||
|
@ -141,9 +156,18 @@
|
|||
<data name="lblMinimumUppercase.Text" xml:space="preserve">
|
||||
<value>Uppercase letters:</value>
|
||||
</data>
|
||||
<data name="lblResetAccountLockout.Text" xml:space="preserve">
|
||||
<value>Reset account lockout counter after (minutes):</value>
|
||||
</data>
|
||||
<data name="lblShouldContain.Text" xml:space="preserve">
|
||||
<value>Password should contain at least:</value>
|
||||
</data>
|
||||
<data name="valCorrectAccountLockoutDuration.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valCorrectEnforcePasswordHistory.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valCorrectLockedOut.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
|
@ -162,6 +186,12 @@
|
|||
<data name="valCorrectUppercase.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireAccountLockoutDuration.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireEnforcePasswordHistory.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valRequireMaxLength.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
|
@ -177,4 +207,7 @@
|
|||
<data name="valRequireUppercase.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="valResetAccountLockout.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
</root>
|
|
@ -181,6 +181,8 @@ namespace WebsitePanel.Portal.UserControls
|
|||
|
||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, Cntx))
|
||||
items.Add(CreateMenuItem("SecurityGroups", "secur_groups", @"Icons/group_48.png"));
|
||||
|
||||
items.Add(CreateMenuItem("PasswordPolicy", "organization_settings_password_settings", @"Icons/user_48.png"));
|
||||
}
|
||||
|
||||
private void PrepareExchangeMenuRoot(MenuItemCollection items)
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
using System;
|
||||
using System.Configuration.Internal;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Collections;
|
||||
|
@ -41,6 +42,7 @@ using System.Web.UI.WebControls.WebParts;
|
|||
using System.Web.UI.HtmlControls;
|
||||
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
|
@ -112,7 +114,14 @@ namespace WebsitePanel.Portal
|
|||
public int MaximumLength
|
||||
{
|
||||
get { return (ViewState["MaximumLength"] != null) ? (int)ViewState["MaximumLength"] : 0; }
|
||||
set { ViewState["MaximumLength"] = value; }
|
||||
set
|
||||
{
|
||||
{
|
||||
txtPassword.MaxLength = value;
|
||||
txtConfirmPassword.MaxLength = value;
|
||||
ViewState["MaximumLength"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int MinimumNumbers
|
||||
|
@ -182,6 +191,38 @@ namespace WebsitePanel.Portal
|
|||
ToggleControls();
|
||||
}
|
||||
|
||||
public void SetUserPolicy(OrganizationPasswordSettings settings)
|
||||
{
|
||||
int minimumUppercase;
|
||||
int minimumNumbers;
|
||||
int minimumSymbols;
|
||||
|
||||
|
||||
if (settings.PasswordComplexityEnabled)
|
||||
{
|
||||
minimumUppercase = settings.UppercaseLettersCount;
|
||||
minimumNumbers = settings.NumbersCount;
|
||||
minimumSymbols = settings.SymbolsCount;
|
||||
}
|
||||
else
|
||||
{
|
||||
minimumUppercase = 0;
|
||||
minimumNumbers = 0;
|
||||
minimumSymbols = 0;
|
||||
}
|
||||
|
||||
PolicyValue = string.Join(";", true, settings.MinimumLength, settings.MaximumLength, minimumUppercase, minimumNumbers, minimumSymbols, true);
|
||||
|
||||
ToggleControls();
|
||||
}
|
||||
|
||||
public void SetUserPolicy(bool enabled, int minLength, int maxLength, int minimumUppercase, int minimumNumbers, int minimumSymbols, bool notEqualToUsername)
|
||||
{
|
||||
PolicyValue = string.Join(";", enabled, minLength, maxLength, minimumUppercase, minimumNumbers, minimumSymbols, notEqualToUsername);
|
||||
|
||||
ToggleControls();
|
||||
}
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
txtPassword.Attributes["value"] = txtPassword.Text;
|
||||
|
|
|
@ -28,10 +28,59 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" class="NormalBold"><asp:Label ID="lblShouldContain" runat="server"
|
||||
meta:resourcekey="lblShouldContain" Text="Password should contain at least:"></asp:Label></td>
|
||||
<td class="Normal" style="width:150px;"><asp:Label ID="lblEnforcePasswordHistory" runat="server"
|
||||
meta:resourcekey="lblEnforcePasswordHistory" Text="Enforce Password History:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtEnforcePasswordHistory" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireEnforcePasswordHistory" runat="server" ControlToValidate="txtEnforcePasswordHistory" meta:resourcekey="valRequireEnforcePasswordHistory"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectEnforcePasswordHistory" runat="server" ControlToValidate="txtEnforcePasswordHistory" meta:resourcekey="valCorrectEnforcePasswordHistory"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator></td>
|
||||
</tr>
|
||||
<tr id="RowChkLockOutSettigns" runat="server">
|
||||
<td colspan="2" class="NormalBold">
|
||||
<asp:CheckBox id="chkLockOutSettigns" runat="server" meta:resourcekey="chkLockOutSettigns"
|
||||
Text="Enable Lockout Settings" CssClass="NormalBold" AutoPostBack="true" OnCheckedChanged="chkLockOutSettigns_CheckedChanged" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="RowAccountLockoutDuration" runat="server">
|
||||
<td class="Normal" style="width:150px;"><asp:Label ID="lblAccountLockoutDuration" runat="server"
|
||||
meta:resourcekey="lblAccountLockoutDuration" Text="Account Lockout Duration (minutes):"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtAccountLockoutDuration" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireAccountLockoutDuration" runat="server" ControlToValidate="txtAccountLockoutDuration" meta:resourcekey="valRequireAccountLockoutDuration"
|
||||
ErrorMessage="*" ValidationGroup="SettingsEditor" Display="Dynamic"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="valCorrectAccountLockoutDuration" runat="server" ControlToValidate="txtAccountLockoutDuration" meta:resourcekey="valCorrectAccountLockoutDuration"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator></td>
|
||||
</tr>
|
||||
<tr id="RowLockedOut" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblLockedOut" runat="server"
|
||||
meta:resourcekey="lblLockedOut" Text="Account Lockout threshold:"></asp:Label>
|
||||
</td>
|
||||
<td class="Normal"><asp:TextBox ID="txtLockedOut" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RegularExpressionValidator ID="valCorrectLockedOut" runat="server" ControlToValidate="txtLockedOut" meta:resourcekey="valCorrectLockedOut"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,10}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="RowResetAccountLockout" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblResetAccountLockout" runat="server"
|
||||
meta:resourcekey="lblResetAccountLockout" Text="Reset account lockout counter after (minutes):"></asp:Label>
|
||||
</td>
|
||||
<td class="Normal"><asp:TextBox ID="txtResetAccountLockout" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RegularExpressionValidator ID="valResetAccountLockout" runat="server" ControlToValidate="txtResetAccountLockout" meta:resourcekey="valResetAccountLockout"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,10}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2" class="NormalBold">
|
||||
<asp:CheckBox id="chkPasswordComplexity" runat="server" meta:resourcekey="chkPasswordComplexity"
|
||||
Text="Enable Password Complexity" CssClass="NormalBold" AutoPostBack="true" OnCheckedChanged="chkPasswordComplexity_CheckedChanged" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="RowMinimumUppercase" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblMinimumUppercase" runat="server"
|
||||
meta:resourcekey="lblMinimumUppercase" Text="Uppercase letters:"></asp:Label>
|
||||
|
@ -43,7 +92,7 @@
|
|||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr id="RowMinimumNumbers" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblMinimumNumbers" runat="server"
|
||||
meta:resourcekey="lblMinimumNumbers" Text="Numbers:"></asp:Label>
|
||||
|
@ -55,7 +104,7 @@
|
|||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,3}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr id="RowMinimumSymbols" runat="server">
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblMinimumSymbols" runat="server"
|
||||
meta:resourcekey="lblMinimumSymbols" Text="Non-alphanumeric symbols:"></asp:Label>
|
||||
|
@ -72,18 +121,6 @@
|
|||
<asp:CheckBox id="chkNotEqualUsername" runat="server" meta:resourcekey="chkNotEqualUsername" Text="Should not be equal to username" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="Normal">
|
||||
<asp:Label ID="lblLockedOut" runat="server"
|
||||
meta:resourcekey="lblLockedOut" Text="Lock out after :"></asp:Label>
|
||||
</td>
|
||||
<td class="Normal"><asp:TextBox ID="txtLockedOut" runat="server" CssClass="NormalTextBox" Width="40px"></asp:TextBox>
|
||||
<asp:RegularExpressionValidator ID="valCorrectLockedOut" runat="server" ControlToValidate="txtLockedOut" meta:resourcekey="valCorrectLockedOut"
|
||||
Display="Dynamic" ErrorMessage="*" ValidationExpression="\d{1,10}" ValidationGroup="SettingsEditor"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</ContentTemplate>
|
||||
|
|
|
@ -42,6 +42,8 @@ namespace WebsitePanel.Portal
|
|||
{
|
||||
public partial class PasswordPolicyEditor : WebsitePanelControlBase
|
||||
{
|
||||
public bool ShowLockoutSettings { get; set; }
|
||||
|
||||
public string Value
|
||||
{
|
||||
get
|
||||
|
@ -56,6 +58,12 @@ namespace WebsitePanel.Portal
|
|||
sb.Append(chkNotEqualUsername.Checked.ToString()).Append(";");
|
||||
sb.Append(txtLockedOut.Text).Append(";");
|
||||
|
||||
sb.Append(txtEnforcePasswordHistory.Text).Append(";");
|
||||
sb.Append(txtAccountLockoutDuration.Text).Append(";");
|
||||
sb.Append(txtResetAccountLockout.Text).Append(";");
|
||||
sb.Append(chkLockOutSettigns.Checked.ToString()).Append(";");
|
||||
sb.Append(chkPasswordComplexity.Checked.ToString()).Append(";");
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
set
|
||||
|
@ -70,6 +78,7 @@ namespace WebsitePanel.Portal
|
|||
txtMinimumNumbers.Text = "0";
|
||||
txtMinimumSymbols.Text = "0";
|
||||
txtLockedOut.Text = "3";
|
||||
chkPasswordComplexity.Checked = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -85,8 +94,17 @@ namespace WebsitePanel.Portal
|
|||
txtMinimumSymbols.Text = parts[5];
|
||||
chkNotEqualUsername.Checked = Utils.ParseBool(parts[6], false);
|
||||
txtLockedOut.Text = parts[7];
|
||||
|
||||
txtEnforcePasswordHistory.Text = GetValueSafe(parts, 8, "0");
|
||||
txtAccountLockoutDuration.Text = GetValueSafe(parts, 9, "0");
|
||||
txtResetAccountLockout.Text = GetValueSafe(parts, 10, "0");
|
||||
chkLockOutSettigns.Checked = GetValueSafe(parts, 11, false) && ShowLockoutSettings;
|
||||
chkPasswordComplexity.Checked = GetValueSafe(parts, 12, true);
|
||||
}
|
||||
catch
|
||||
{
|
||||
/* skip */
|
||||
}
|
||||
catch { /* skip */ }
|
||||
}
|
||||
ToggleControls();
|
||||
}
|
||||
|
@ -99,11 +117,56 @@ namespace WebsitePanel.Portal
|
|||
private void ToggleControls()
|
||||
{
|
||||
PolicyTable.Visible = chkEnabled.Checked;
|
||||
|
||||
ToggleLockOutSettignsControls();
|
||||
TogglePasswordCompelxitySettignsControls();
|
||||
|
||||
RowChkLockOutSettigns.Visible = ShowLockoutSettings;
|
||||
}
|
||||
|
||||
protected void chkEnabled_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ToggleControls();
|
||||
}
|
||||
|
||||
private void ToggleLockOutSettignsControls()
|
||||
{
|
||||
RowAccountLockoutDuration.Visible = chkLockOutSettigns.Checked;
|
||||
RowLockedOut.Visible = chkLockOutSettigns.Checked;
|
||||
RowResetAccountLockout.Visible = chkLockOutSettigns.Checked;
|
||||
}
|
||||
|
||||
private void TogglePasswordCompelxitySettignsControls()
|
||||
{
|
||||
RowMinimumUppercase.Visible = chkPasswordComplexity.Checked;
|
||||
RowMinimumNumbers.Visible = chkPasswordComplexity.Checked;
|
||||
RowMinimumSymbols.Visible = chkPasswordComplexity.Checked;
|
||||
}
|
||||
|
||||
protected void chkLockOutSettigns_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ToggleLockOutSettignsControls();
|
||||
}
|
||||
|
||||
protected void chkPasswordComplexity_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
TogglePasswordCompelxitySettignsControls();
|
||||
}
|
||||
|
||||
public static T GetValueSafe<T>(string[] array, int index, T defaultValue)
|
||||
{
|
||||
if (array.Length > index)
|
||||
{
|
||||
if (string.IsNullOrEmpty(array[index]))
|
||||
{
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
return (T)Convert.ChangeType(array[index], typeof(T));
|
||||
}
|
||||
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
@ -140,13 +112,193 @@ namespace WebsitePanel.Portal {
|
|||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectMaxLength;
|
||||
|
||||
/// <summary>
|
||||
/// lblShouldContain control.
|
||||
/// lblEnforcePasswordHistory control.
|
||||
/// </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 lblShouldContain;
|
||||
protected global::System.Web.UI.WebControls.Label lblEnforcePasswordHistory;
|
||||
|
||||
/// <summary>
|
||||
/// txtEnforcePasswordHistory control.
|
||||
/// </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 txtEnforcePasswordHistory;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireEnforcePasswordHistory control.
|
||||
/// </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 valRequireEnforcePasswordHistory;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectEnforcePasswordHistory control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectEnforcePasswordHistory;
|
||||
|
||||
/// <summary>
|
||||
/// RowChkLockOutSettigns 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 RowChkLockOutSettigns;
|
||||
|
||||
/// <summary>
|
||||
/// chkLockOutSettigns control.
|
||||
/// </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 chkLockOutSettigns;
|
||||
|
||||
/// <summary>
|
||||
/// RowAccountLockoutDuration 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 RowAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// lblAccountLockoutDuration control.
|
||||
/// </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 lblAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// txtAccountLockoutDuration control.
|
||||
/// </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 txtAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// valRequireAccountLockoutDuration control.
|
||||
/// </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 valRequireAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectAccountLockoutDuration control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectAccountLockoutDuration;
|
||||
|
||||
/// <summary>
|
||||
/// RowLockedOut 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 RowLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// lblLockedOut control.
|
||||
/// </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 lblLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// txtLockedOut control.
|
||||
/// </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 txtLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectLockedOut control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// RowResetAccountLockout 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 RowResetAccountLockout;
|
||||
|
||||
/// <summary>
|
||||
/// lblResetAccountLockout control.
|
||||
/// </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 lblResetAccountLockout;
|
||||
|
||||
/// <summary>
|
||||
/// txtResetAccountLockout control.
|
||||
/// </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 txtResetAccountLockout;
|
||||
|
||||
/// <summary>
|
||||
/// valResetAccountLockout control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valResetAccountLockout;
|
||||
|
||||
/// <summary>
|
||||
/// chkPasswordComplexity control.
|
||||
/// </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 chkPasswordComplexity;
|
||||
|
||||
/// <summary>
|
||||
/// RowMinimumUppercase 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 RowMinimumUppercase;
|
||||
|
||||
/// <summary>
|
||||
/// lblMinimumUppercase control.
|
||||
|
@ -184,6 +336,15 @@ namespace WebsitePanel.Portal {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectUppercase;
|
||||
|
||||
/// <summary>
|
||||
/// RowMinimumNumbers 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 RowMinimumNumbers;
|
||||
|
||||
/// <summary>
|
||||
/// lblMinimumNumbers control.
|
||||
/// </summary>
|
||||
|
@ -220,6 +381,15 @@ namespace WebsitePanel.Portal {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectNumbers;
|
||||
|
||||
/// <summary>
|
||||
/// RowMinimumSymbols 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 RowMinimumSymbols;
|
||||
|
||||
/// <summary>
|
||||
/// lblMinimumSymbols control.
|
||||
/// </summary>
|
||||
|
@ -273,32 +443,5 @@ namespace WebsitePanel.Portal {
|
|||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkNotEqualUsername;
|
||||
|
||||
/// <summary>
|
||||
/// lblLockedOut control.
|
||||
/// </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 lblLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// txtLockedOut control.
|
||||
/// </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 txtLockedOut;
|
||||
|
||||
/// <summary>
|
||||
/// valCorrectLockedOut control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator valCorrectLockedOut;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -186,4 +186,7 @@
|
|||
<data name="btnFastCreate.Text" xml:space="preserve">
|
||||
<value>Fast Create VM</value>
|
||||
</data>
|
||||
<data name="gvReplication.HeaderText" xml:space="preserve">
|
||||
<value>Replication status</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,270 @@
|
|||
<?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="btnPause.OnClientClick" xml:space="preserve">
|
||||
<value>ShowProgressDialog('Pausing VM replication...');</value>
|
||||
</data>
|
||||
<data name="btnResume.OnClientClick" xml:space="preserve">
|
||||
<value>ShowProgressDialog('Resuming VM replication...');</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Replication</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Close</value>
|
||||
</data>
|
||||
<data name="btnDetailInfo.Text" xml:space="preserve">
|
||||
<value>Details</value>
|
||||
</data>
|
||||
<data name="btnPause.Text" xml:space="preserve">
|
||||
<value>Pause</value>
|
||||
</data>
|
||||
<data name="btnResume.Text" xml:space="preserve">
|
||||
<value>Resume</value>
|
||||
</data>
|
||||
<data name="btnUpdate.Text" xml:space="preserve">
|
||||
<value>Update</value>
|
||||
</data>
|
||||
<data name="chbEnable.Text" xml:space="preserve">
|
||||
<value>Enable replication</value>
|
||||
</data>
|
||||
<data name="chbVSS.Text" xml:space="preserve">
|
||||
<value>Volume Shadow Copy Service (VSS) snapshot frequency (in hours):</value>
|
||||
</data>
|
||||
<data name="ddlFrequency15minutes.Text" xml:space="preserve">
|
||||
<value>15 minutes</value>
|
||||
</data>
|
||||
<data name="ddlFrequency30seconds.Text" xml:space="preserve">
|
||||
<value>30 seconds</value>
|
||||
</data>
|
||||
<data name="ddlFrequency5minutes.Text" xml:space="preserve">
|
||||
<value>5 minutes</value>
|
||||
</data>
|
||||
<data name="locAverageLatency.Text" xml:space="preserve">
|
||||
<value>Average latency:</value>
|
||||
</data>
|
||||
<data name="locAverageSize.Text" xml:space="preserve">
|
||||
<value>Average size:</value>
|
||||
</data>
|
||||
<data name="locCeritficate.Text" xml:space="preserve">
|
||||
<value>SSL ceritficate:</value>
|
||||
</data>
|
||||
<data name="locDetails.Text" xml:space="preserve">
|
||||
<value>Replication details</value>
|
||||
</data>
|
||||
<data name="locDetailsHealth.Text" xml:space="preserve">
|
||||
<value>Replication Health:</value>
|
||||
</data>
|
||||
<data name="locDetailsMode.Text" xml:space="preserve">
|
||||
<value>Replication Mode:</value>
|
||||
</data>
|
||||
<data name="locDetailsPrimary.Text" xml:space="preserve">
|
||||
<value>Current Primary Server:</value>
|
||||
</data>
|
||||
<data name="locDetailsReplica.Text" xml:space="preserve">
|
||||
<value>Current Replica Server:</value>
|
||||
</data>
|
||||
<data name="locDetailsState.Text" xml:space="preserve">
|
||||
<value>Replication State:</value>
|
||||
</data>
|
||||
<data name="locErrorsEncountered.Text" xml:space="preserve">
|
||||
<value>Errors encountered:</value>
|
||||
</data>
|
||||
<data name="locFrequency.Text" xml:space="preserve">
|
||||
<value>Replication Frequency</value>
|
||||
</data>
|
||||
<data name="locFromTime.Text" xml:space="preserve">
|
||||
<value>From time:</value>
|
||||
</data>
|
||||
<data name="locHealth.Text" xml:space="preserve">
|
||||
<value>Health:</value>
|
||||
</data>
|
||||
<data name="locLastSynchronized.Text" xml:space="preserve">
|
||||
<value>Last synchronized at:</value>
|
||||
</data>
|
||||
<data name="locLastSyncro.Text" xml:space="preserve">
|
||||
<value>Last synchronized at:</value>
|
||||
</data>
|
||||
<data name="locMaximumSize.Text" xml:space="preserve">
|
||||
<value>Maximum size:</value>
|
||||
</data>
|
||||
<data name="locPrimaryServer.Text" xml:space="preserve">
|
||||
<value>Primary Server:</value>
|
||||
</data>
|
||||
<data name="locRecoveryPoints.Text" xml:space="preserve">
|
||||
<value>Additional Recovery Points:</value>
|
||||
</data>
|
||||
<data name="locRecoveryPointsAdditional.Text" xml:space="preserve">
|
||||
<value>Coverage provided by additional recovery points (in hours):</value>
|
||||
</data>
|
||||
<data name="locReplicaServer.Text" xml:space="preserve">
|
||||
<value>Replica Server:</value>
|
||||
</data>
|
||||
<data name="locSizeData.Text" xml:space="preserve">
|
||||
<value>Size of data yet to be replicated:</value>
|
||||
</data>
|
||||
<data name="locSuccessfulReplicationCycles.Text" xml:space="preserve">
|
||||
<value>Successful replication cycles:</value>
|
||||
</data>
|
||||
<data name="locToTime.Text" xml:space="preserve">
|
||||
<value>To time:</value>
|
||||
</data>
|
||||
<data name="locVHDs.Text" xml:space="preserve">
|
||||
<value>Choose Replication VHDs:</value>
|
||||
</data>
|
||||
<data name="radRecoveryPointsAdditional.Text" xml:space="preserve">
|
||||
<value>Create additional hourly recovery points</value>
|
||||
</data>
|
||||
<data name="radRecoveryPointsLast.Text" xml:space="preserve">
|
||||
<value>Maintain only the latest recovery point</value>
|
||||
</data>
|
||||
<data name="secPendingReplication.Text" xml:space="preserve">
|
||||
<value>Pending replication:</value>
|
||||
</data>
|
||||
<data name="secReplication.Text" xml:space="preserve">
|
||||
<value>Replication Configuration</value>
|
||||
</data>
|
||||
<data name="secReplicationDetails.Text" xml:space="preserve">
|
||||
<value>Health</value>
|
||||
</data>
|
||||
<data name="secStatisticPanel.Text" xml:space="preserve">
|
||||
<value>Statistic for past </value>
|
||||
</data>
|
||||
<data name="valCeritficateRequire.ErrorMessage" xml:space="preserve">
|
||||
<value>SSL certificate is required</value>
|
||||
</data>
|
||||
<data name="valRecoveryPointsAdditionalRange.ErrorMessage" xml:space="preserve">
|
||||
<value>chbVSS</value>
|
||||
</data>
|
||||
<data name="valRecoveryPointsAdditionalRequire.ErrorMessage" xml:space="preserve">
|
||||
<value>Additional recovery points cannot be empty</value>
|
||||
</data>
|
||||
<data name="valRecoveryPointsVSSRange.ErrorMessage" xml:space="preserve">
|
||||
<value>VSS snapshot frequency range is 1-12</value>
|
||||
</data>
|
||||
<data name="valRecoveryPointsVSSRequire.ErrorMessage" xml:space="preserve">
|
||||
<value>VSS snapshot frequency cannot be empty</value>
|
||||
</data>
|
||||
<data name="valVHDs.ErrorMessage" xml:space="preserve">
|
||||
<value>Please select at least one VHD</value>
|
||||
</data>
|
||||
<data name="btnUpdate.OnClientClick" xml:space="preserve">
|
||||
<value>ShowProgressDialog('Updating VM replication...');</value>
|
||||
</data>
|
||||
</root>
|
|
@ -144,6 +144,9 @@
|
|||
<data name="Tab.Snapshots" xml:space="preserve">
|
||||
<value>Snapshots</value>
|
||||
</data>
|
||||
<data name="Tab.Replication" xml:space="preserve">
|
||||
<value>Replication</value>
|
||||
</data>
|
||||
<data name="Tab.Tools" xml:space="preserve">
|
||||
<value>Tools</value>
|
||||
</data>
|
||||
|
|
|
@ -133,12 +133,15 @@ namespace WebsitePanel.Portal.VPS2012.UserControls
|
|||
if ((vm.ExternalNetworkEnabled || vm.PrivateNetworkEnabled) && !createError)
|
||||
tabsList.Add(CreateTab("vps_network", "Tab.Network"));
|
||||
|
||||
if (VirtualMachines2012Helper.IsReplicationEnabled(PanelSecurity.PackageId) && !createError)
|
||||
tabsList.Add(CreateTab("vps_replication", "Tab.Replication"));
|
||||
|
||||
//tabsList.Add(CreateTab("vps_permissions", "Tab.Permissions"));
|
||||
//tabsList.Add(CreateTab("vps_tools", "Tab.Tools"));
|
||||
tabsList.Add(CreateTab("vps_audit_log", "Tab.AuditLog"));
|
||||
|
||||
if (!createError)
|
||||
tabsList.Add(CreateTab("vps_help", "Tab.Help"));
|
||||
//if (!createError)
|
||||
// tabsList.Add(CreateTab("vps_help", "Tab.Help"));
|
||||
|
||||
|
||||
// find selected menu item
|
||||
|
@ -158,7 +161,7 @@ namespace WebsitePanel.Portal.VPS2012.UserControls
|
|||
if(createError && idx == 0)
|
||||
messageBox.ShowErrorMessage("VPS_PROVISION_ERROR");
|
||||
}
|
||||
|
||||
|
||||
private void BindTask(VirtualMachine vm)
|
||||
{
|
||||
task = ES.Services.Tasks.GetTaskWithLogRecords(vm.CurrentTaskId, DateTime.MinValue);
|
||||
|
|
|
@ -73,6 +73,11 @@
|
|||
<%# Eval("UserName") %>
|
||||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField HeaderText="Replication" meta:resourcekey="gvReplication" >
|
||||
<ItemTemplate>
|
||||
<asp:Localize id="locReplication" runat="server" Text='<%# GetReplicationStatus((int)Eval("ItemID")) %>'></asp:Localize>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField>
|
||||
<ItemTemplate>
|
||||
|
|
|
@ -27,11 +27,10 @@
|
|||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Linq;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.Virtualization;
|
||||
|
||||
namespace WebsitePanel.Portal.VPS2012
|
||||
{
|
||||
|
@ -52,15 +51,19 @@ namespace WebsitePanel.Portal.VPS2012
|
|||
gvServers.Columns[3].Visible = !isUserSelected;
|
||||
gvServers.Columns[4].Visible = !isUserSelected;
|
||||
|
||||
// replication
|
||||
gvServers.Columns[5].Visible = VirtualMachines2012Helper.IsReplicationEnabled(PanelSecurity.PackageId);
|
||||
|
||||
// check package quotas
|
||||
bool manageAllowed = VirtualMachines2012Helper.IsVirtualMachineManagementAllowed(PanelSecurity.PackageId);
|
||||
|
||||
btnCreate.Visible = manageAllowed;
|
||||
btnImport.Visible = (PanelSecurity.EffectiveUser.Role == UserRole.Administrator);
|
||||
gvServers.Columns[5].Visible = manageAllowed; // delete column
|
||||
gvServers.Columns[6].Visible = manageAllowed; // delete column
|
||||
|
||||
// admin operations column
|
||||
gvServers.Columns[6].Visible = (PanelSecurity.EffectiveUser.Role == UserRole.Administrator);
|
||||
gvServers.Columns[7].Visible = (PanelSecurity.EffectiveUser.Role == UserRole.Administrator);
|
||||
|
||||
}
|
||||
|
||||
public string GetServerEditUrl(string itemID)
|
||||
|
@ -79,6 +82,22 @@ namespace WebsitePanel.Portal.VPS2012
|
|||
return PortalUtils.GetUserHomePageUrl(userId);
|
||||
}
|
||||
|
||||
private VirtualMachine[] _machines;
|
||||
public string GetReplicationStatus(int itemID)
|
||||
{
|
||||
if (_machines == null)
|
||||
{
|
||||
var packageVm = ES.Services.VPS2012.GetVirtualMachineItem(itemID);
|
||||
_machines = ES.Services.VPS2012.GetVirtualMachinesByServiceId(packageVm.ServiceId);
|
||||
}
|
||||
|
||||
var vmItem = ES.Services.VPS2012.GetVirtualMachineItem(itemID);
|
||||
if (vmItem == null) return "";
|
||||
|
||||
var vm = _machines.FirstOrDefault(v => v.VirtualMachineId == vmItem.VirtualMachineId);
|
||||
return vm != null ? vm.ReplicationState.ToString() : "";
|
||||
}
|
||||
|
||||
protected void odsServersPaged_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
||||
{
|
||||
if (e.Exception != null)
|
||||
|
|
|
@ -0,0 +1,369 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VpsDetailsReplications.ascx.cs" Inherits="WebsitePanel.Portal.VPS2012.VpsDetailsReplications" %>
|
||||
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/ServerTabs.ascx" TagName="ServerTabs" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/FormTitle.ascx" TagName="FormTitle" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %>
|
||||
|
||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||
|
||||
<script type="text/javascript">
|
||||
function ValidateCheckBoxList(sender, args) {
|
||||
var checkBoxList = document.getElementsByClassName("vhdContainer");
|
||||
var checkboxes = checkBoxList.getElementsByTagName("input");
|
||||
var isValid = false;
|
||||
for (var i = 0; i < checkboxes.length; i++) {
|
||||
if (checkboxes[i].checked) {
|
||||
isValid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
args.IsValid = isValid;
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.ReplicaTable td {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.ReplicaTable .AdditionalPoints td {
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="VpsContainer">
|
||||
<div class="Module">
|
||||
|
||||
<div class="Header">
|
||||
<wsp:Breadcrumb id="breadcrumb" runat="server" />
|
||||
</div>
|
||||
|
||||
<div class="Left">
|
||||
<wsp:Menu id="menu" runat="server" SelectedItem="" />
|
||||
</div>
|
||||
|
||||
<div class="Content">
|
||||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="imgIcon" SkinID="Servers48" runat="server" />
|
||||
<wsp:FormTitle ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Replication" />
|
||||
</div>
|
||||
<div class="FormBody">
|
||||
<wsp:ServerTabs ID="tabs" runat="server" SelectedTab="vps_replication" />
|
||||
<wsp:SimpleMessageBox ID="messageBox" runat="server" />
|
||||
|
||||
<asp:ValidationSummary ID="validatorsSummary" runat="server"
|
||||
ValidationGroup="Vps" ShowMessageBox="True" ShowSummary="False" />
|
||||
|
||||
<wsp:CollapsiblePanel ID="secReplicationDetails" runat="server" Visible="False"
|
||||
TargetControlID="ReplicationDetailsPanel" meta:ResourceKey="secReplicationDetails" Text="Health"></wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="ReplicationDetailsPanel" runat="server" Height="0" Style="overflow: hidden; padding: 10px; width: 750px;">
|
||||
<asp:Localize ID="locHealth" runat="server" meta:resourcekey="locHealth" Text="Health:"></asp:Localize>
|
||||
<asp:Label ID="labHealth" runat="server"></asp:Label>
|
||||
<asp:Button ID="btnDetailInfo" runat="server" CausesValidation="false" CssClass="ActionButtonRename"
|
||||
meta:resourcekey="btnDetailInfo" Text="Details" Style="margin-left: 20px"></asp:Button>
|
||||
<asp:Button ID="btnPause" runat="server" CausesValidation="false" CssClass="ActionButtonRename"
|
||||
meta:resourcekey="btnPause" Text="Pause" OnClick="btnPause_Click" Style="margin-left: 20px"></asp:Button>
|
||||
<asp:Button ID="btnResume" runat="server" CausesValidation="false" CssClass="ActionButtonRename"
|
||||
meta:resourcekey="btnResume" Text="Resume" OnClick="btnResume_Click" Style="margin-left: 20px"></asp:Button>
|
||||
</asp:Panel>
|
||||
|
||||
<wsp:CollapsiblePanel ID="secReplication" runat="server" Visible="True"
|
||||
TargetControlID="ReplicationPanel" meta:ResourceKey="secReplication" Text="Replication Configuration">
|
||||
</wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="ReplicationPanel" runat="server" Height="0" Style="overflow: hidden; padding: 10px; width: 750px;">
|
||||
<div class="FormButtonsBarClean" onclick="ShowProgressDialog('Prepare UI...');">
|
||||
<asp:CheckBox ID="chbEnable" runat="server" meta:resourcekey="chbEnable" Text="Enable replication" AutoPostBack="True" />
|
||||
</div>
|
||||
<table runat="server" id="ReplicaTable" class="ReplicaTable" style="margin: 10px; width: 100%;">
|
||||
<tr>
|
||||
<td style="width: 200px;">
|
||||
<asp:Localize ID="locPrimaryServer" runat="server" meta:resourcekey="locPrimaryServer" Text="Primary Server:"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labPrimaryServer" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locReplicaServer" runat="server" meta:resourcekey="locReplicaServer" Text="Replica Server:"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labReplicaServer" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locLastSynchronized" runat="server" meta:resourcekey="locLastSynchronized" Text="Last synchronized at:"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labLastSynchronized" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr runat="server" ID="trVHDEditable">
|
||||
<td>
|
||||
<asp:Localize ID="locVHDs" runat="server" meta:resourcekey="locVHDs" Text="Choose Replication VHDs:"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:CheckBoxList runat="server" ID="chlVHDs" class="vhdContainer"/>
|
||||
<asp:CustomValidator ID="valVHDs" ErrorMessage="Please select at least one VHD" ValidationGroup="Vps" Display="Dynamic" SetFocusOnError="true"
|
||||
ForeColor="Red" ClientValidationFunction="ValidateCheckBoxList" runat="server" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr runat="server" ID="trVHDReadOnly" Visible="False">
|
||||
<td>
|
||||
<asp:Localize ID="locVHDsReadOnly" runat="server" meta:resourcekey="locVHDsReadOnly" Text="Replication VHDs:"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labVHDs" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locCeritficate" runat="server" meta:resourcekey="locCeritficate" Text="SSL ceritficate:"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<div runat="server" ID="ddlCeritficateDiv">
|
||||
<asp:DropDownList runat="server" ID="ddlCeritficate" />
|
||||
<asp:RequiredFieldValidator runat="server" ControlToValidate="ddlCeritficate" ValidationGroup="Vps" Display="Dynamic" SetFocusOnError="true"
|
||||
ErrorMessage="SSL certificate is required" ForeColor="Red" meta:resourcekey="valCeritficateRequire" Text="*" />
|
||||
</div>
|
||||
<div runat="server" ID="txtCeritficateDiv">
|
||||
<asp:TextBox runat="server" ID="txtCeritficate" Width="350px"/>
|
||||
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtCeritficate" ValidationGroup="Vps" Display="Dynamic" SetFocusOnError="true"
|
||||
ErrorMessage="SSL certificate is required" ForeColor="Red" meta:resourcekey="valCeritficateRequire" Text="*" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locFrequency" runat="server" meta:resourcekey="locFrequency" Text="Replication Frequency:"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:DropDownList runat="server" ID="ddlFrequency" >
|
||||
<asp:ListItem Value="30" Selected="True" meta:resourcekey="ddlFrequency30seconds">30seconds</asp:ListItem>
|
||||
<asp:ListItem Value="300" meta:resourcekey="ddlFrequency5minutes">5minutes</asp:ListItem>
|
||||
<asp:ListItem Value="900" meta:resourcekey="ddlFrequency15minutes">15minutes</asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="AdditionalPoints">
|
||||
<td colspan="2">
|
||||
<asp:Label ID="locRecoveryPoints" runat="server" meta:resourcekey="locRecoveryPoints"
|
||||
Text="Additional Recovery Points:" style="margin-bottom: 10px;"></asp:Label>
|
||||
|
||||
<asp:RadioButtonList ID="radRecoveryPoints" runat="server" AutoPostBack="true">
|
||||
<asp:ListItem Value="OnlyLast" meta:resourcekey="radRecoveryPointsLast" Selected="True">Maintain only the latest recovery point</asp:ListItem>
|
||||
<asp:ListItem Value="Additional" meta:resourcekey="radRecoveryPointsAdditional">Create additional hourly recovery points</asp:ListItem>
|
||||
</asp:RadioButtonList>
|
||||
|
||||
<table runat="server" ID="tabAdditionalRecoveryPoints" class="AdditionalPoints" style="margin: 10px; width: 100%;">
|
||||
<tr>
|
||||
<td style="width: 480px;">
|
||||
<asp:Localize ID="locRecoveryPointsAdditional" runat="server" meta:resourcekey="locRecoveryPointsAdditional"
|
||||
Text="Coverage provided by additional recovery points (in hours):"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:TextBox runat="server" ID="txtRecoveryPointsAdditional" Width="30px"></asp:TextBox>
|
||||
|
||||
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtRecoveryPointsAdditional" Display="Dynamic" SetFocusOnError="true"
|
||||
ErrorMessage="Additional recovery points cannot be empty." ForeColor="Red" ValidationGroup="Vps"
|
||||
meta:resourcekey="valRecoveryPointsAdditionalRequire" Text="*" />
|
||||
<asp:RangeValidator runat="server" ControlToValidate="txtRecoveryPointsAdditional" MinimumValue="1" MaximumValue="24"
|
||||
ErrorMessage="Additional recovery points range is 1-24." ValidationGroup="Vps" Display="Dynamic" SetFocusOnError="true"
|
||||
meta:resourcekey="valRecoveryPointsAdditionalRange" ForeColor="Red" Type="Integer" Text="*" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox runat="server" ID="chbVSS" AutoPostBack="True" meta:resourcekey="chbVSS" Text="Volume Shadow Copy Service (VSS) snapshot frequency (in hours):" />
|
||||
</td>
|
||||
<td>
|
||||
<div runat="server" ID="VSSdiv">
|
||||
<asp:TextBox runat="server" ID="txtRecoveryPointsVSS" Width="30px"></asp:TextBox>
|
||||
|
||||
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtRecoveryPointsVSS"
|
||||
ErrorMessage="VSS snapshot frequency cannot be empty." ForeColor="Red" Display="Dynamic" SetFocusOnError="true"
|
||||
meta:resourcekey="valRecoveryPointsVSSRequire" Text="*" ValidationGroup="Vps"/>
|
||||
<asp:RangeValidator runat="server" ControlToValidate="txtRecoveryPointsVSS" MinimumValue="1" MaximumValue="24"
|
||||
ErrorMessage="VSS snapshot frequency range is 1-12." ValidationGroup="Vps" Display="Dynamic" SetFocusOnError="true"
|
||||
meta:resourcekey="valRecoveryPointsVSSRange" Text="*" ForeColor="Red" Type="Integer" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="FormButtonsBarClean">
|
||||
<asp:Button ID="btnUpdate" runat="server" CssClass="ActionButtonRename"
|
||||
meta:resourcekey="btnUpdate" Text="Update" OnClick="btnUpdate_Click" ValidationGroup="Vps"></asp:Button>
|
||||
</div>
|
||||
</asp:Panel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<asp:Panel ID="DetailsPanel" runat="server" CssClass="Popup" style="display:none;">
|
||||
<table class="Popup-Header" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="Popup-HeaderLeft"></td>
|
||||
<td class="Popup-HeaderTitle">
|
||||
<asp:Localize ID="locDetails" runat="server" Text="Replication details" meta:resourcekey="locDetails"></asp:Localize>
|
||||
</td>
|
||||
<td class="Popup-HeaderRight"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="Popup-Content">
|
||||
<div class="Popup-Body">
|
||||
<br />
|
||||
|
||||
<table cellspacing="10">
|
||||
<tr>
|
||||
<td style="width: 180px">
|
||||
<asp:Localize ID="locDetailsState" runat="server" Text="Replication State:" meta:resourcekey="locDetailsState"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labDetailsState" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locDetailsMode" runat="server" Text="Replication Mode:" meta:resourcekey="locDetailsMode"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labDetailsMode" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locDetailsPrimary" runat="server" Text="Current Primary Server:" meta:resourcekey="locDetailsPrimary"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labDetailsPrimary" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locDetailsReplica" runat="server" Text="Current Replica Server:" meta:resourcekey="locDetailsReplica"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labDetailsReplica" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locDetailsHealth" runat="server" Text="Replication Health:" meta:resourcekey="locDetailsHealth"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labDetailsHealth" runat="server"></asp:Label>
|
||||
<br/>
|
||||
<asp:Label ID="labDetailsHealthDetails" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<wsp:CollapsiblePanel ID="StatisticCollapsiblePanel" runat="server" Visible="True"
|
||||
TargetControlID="StatisticPanel" meta:ResourceKey="secStatisticPanel" Text="Statistic for past "></wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="StatisticPanel" runat="server" Height="0" Style="overflow: hidden; padding: 10px; width: 400px;">
|
||||
<table cellspacing="10">
|
||||
<tr>
|
||||
<td style="width: 180px">
|
||||
<asp:Localize ID="locFromTime" runat="server" Text="From time:" meta:resourcekey="locFromTime"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labFromTime" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locToTime" runat="server" Text="To time:" meta:resourcekey="locToTime"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labToTime" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locAverageSize" runat="server" Text="Average size:" meta:resourcekey="locAverageSize"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labAverageSize" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locMaximumSize" runat="server" Text="Maximum size:" meta:resourcekey="locMaximumSize"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labMaximumSize" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locAverageLatency" runat="server" Text="Average latency:" meta:resourcekey="locAverageLatency"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labAverageLatency" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locErrorsEncountered" runat="server" Text="Errors encountered:" meta:resourcekey="locErrorsEncountered"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labErrorsEncountered" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locSuccessfulReplicationCycles" runat="server" Text="Successful replication cycles:" meta:resourcekey="locSuccessfulReplicationCycles"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labSuccessfulReplicationCycles" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
|
||||
<wsp:CollapsiblePanel ID="PendingReplicationCollapsiblePanel" runat="server" Visible="True"
|
||||
TargetControlID="PendingReplicationPanel" meta:ResourceKey="secPendingReplication" Text="Pending replication"></wsp:CollapsiblePanel>
|
||||
<asp:Panel ID="PendingReplicationPanel" runat="server" Height="0" Style="overflow: hidden; padding: 10px; width: 400px;">
|
||||
<table cellspacing="10">
|
||||
<tr>
|
||||
<td style="width: 180px">
|
||||
<asp:Localize ID="locSizeData" runat="server" Text="Size of data yet to be replicated:" meta:resourcekey="locSizeData"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labSizeData" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:Localize ID="locLastSyncro" runat="server" Text="Last synchronized at:" meta:resourcekey="locLastSyncro"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<asp:Label ID="labLastSyncro" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<div class="FormFooter">
|
||||
<asp:Button ID="btnCancel" runat="server" CssClass="Button1" meta:resourcekey="btnCancel" Text="Cancel" CausesValidation="false" />
|
||||
</div>
|
||||
</div>
|
||||
</asp:Panel>
|
||||
|
||||
<ajaxToolkit:ModalPopupExtender ID="DetailModal" runat="server" BehaviorID="DetailModal"
|
||||
TargetControlID="btnDetailInfo" PopupControlID="DetailsPanel"
|
||||
BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="btnCancel" />
|
|
@ -0,0 +1,353 @@
|
|||
// 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.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.Providers.Common;
|
||||
using WebsitePanel.Providers.Virtualization;
|
||||
|
||||
namespace WebsitePanel.Portal.VPS2012
|
||||
{
|
||||
public partial class VpsDetailsReplications : WebsitePanelModuleBase
|
||||
{
|
||||
private const string DateFormat = "MM/dd/yyyy h:mm:ss tt";
|
||||
private const string na = "n/a";
|
||||
private const string cyclesTemplate = "{0} out of {1} ({2}%)";
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
Bind();
|
||||
}
|
||||
|
||||
Toogle();
|
||||
}
|
||||
|
||||
private void Toogle()
|
||||
{
|
||||
ReplicaTable.Visible = chbEnable.Checked;
|
||||
|
||||
switch (radRecoveryPoints.SelectedValue)
|
||||
{
|
||||
case "OnlyLast":
|
||||
tabAdditionalRecoveryPoints.Visible = false;
|
||||
break;
|
||||
case "Additional":
|
||||
tabAdditionalRecoveryPoints.Visible = true;
|
||||
VSSdiv.Visible = chbVSS.Checked;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void Bind()
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
var packageVm = ES.Services.VPS2012.GetVirtualMachineItem(PanelRequest.ItemID);
|
||||
var vm = ES.Services.VPS2012.GetVirtualMachineExtendedInfo(packageVm.ServiceId, packageVm.VirtualMachineId);
|
||||
var serviceSettings = VirtualMachines2012Helper.ConvertArrayToDictionary(ES.Services.Servers.GetServiceSettings(packageVm.ServiceId));
|
||||
|
||||
//var replicaMode = Enum.Parse(typeof(ReplicaMode), serviceSettings["ReplicaMode"]);
|
||||
var computerName = serviceSettings["ServerName"];
|
||||
|
||||
var vmReplica = ES.Services.VPS2012.GetReplication(PanelRequest.ItemID);
|
||||
var vmReplicaInfo = ES.Services.VPS2012.GetReplicationInfo(PanelRequest.ItemID);
|
||||
|
||||
// Enable checkpoint
|
||||
chbEnable.Checked = ReplicaTable.Visible = vmReplica != null;
|
||||
|
||||
if (vmReplicaInfo != null)
|
||||
{
|
||||
// General labels
|
||||
labPrimaryServer.Text = vmReplicaInfo.PrimaryServerName;
|
||||
labReplicaServer.Text = vmReplicaInfo.ReplicaServerName;
|
||||
labLastSynchronized.Text = vmReplicaInfo.LastSynhronizedAt == DateTime.MinValue ? na : vmReplicaInfo.LastSynhronizedAt.ToString(DateFormat);
|
||||
|
||||
// Details
|
||||
labHealth.Text = vmReplicaInfo.Health.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
labPrimaryServer.Text = labReplicaServer.Text = labLastSynchronized.Text = na;
|
||||
labHealth.Text = "";
|
||||
}
|
||||
|
||||
// Certificates list
|
||||
ddlCeritficate.Items.Clear();
|
||||
var certificates = ES.Services.VPS2012.GetCertificates(packageVm.ServiceId, computerName);
|
||||
if (certificates != null)
|
||||
{
|
||||
foreach (var cert in certificates)
|
||||
{
|
||||
ddlCeritficate.Items.Add(new ListItem(cert.Title, cert.Thumbprint));
|
||||
}
|
||||
}
|
||||
if (string.IsNullOrEmpty(computerName))
|
||||
{
|
||||
ddlCeritficateDiv.Visible = true;
|
||||
txtCeritficateDiv.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
ddlCeritficateDiv.Visible = false;
|
||||
txtCeritficateDiv.Visible = true;
|
||||
}
|
||||
|
||||
// VHDs editable
|
||||
trVHDEditable.Visible = true;
|
||||
trVHDReadOnly.Visible = false;
|
||||
chlVHDs.Items.Clear();
|
||||
chlVHDs.Items.AddRange(vm.Disks.Select(d => new ListItem(d.Path) {Selected = true}).ToArray());
|
||||
|
||||
if (vmReplica != null)
|
||||
{
|
||||
// VHDs readonly
|
||||
labVHDs.Text = "";
|
||||
foreach (var disk in vm.Disks)
|
||||
{
|
||||
if (vmReplica.VhdToReplicate.Any(p=>string.Equals(p, disk.Path, StringComparison.OrdinalIgnoreCase)))
|
||||
labVHDs.Text += disk.Path + "<br>";
|
||||
}
|
||||
trVHDEditable.Visible = false;
|
||||
trVHDReadOnly.Visible = true;
|
||||
|
||||
// Certificates
|
||||
ddlCeritficate.SelectedValue = txtCeritficate.Text = vmReplica.Thumbprint;
|
||||
|
||||
// Frequency
|
||||
ddlFrequency.SelectedValue = ((int) vmReplica.ReplicaFrequency).ToString();
|
||||
|
||||
// Recovery points
|
||||
if (vmReplica.AdditionalRecoveryPoints == 0)
|
||||
{
|
||||
radRecoveryPoints.SelectedValue = "OnlyLast";
|
||||
tabAdditionalRecoveryPoints.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
radRecoveryPoints.SelectedValue = "Additional";
|
||||
tabAdditionalRecoveryPoints.Visible = true;
|
||||
txtRecoveryPointsAdditional.Text = vmReplica.AdditionalRecoveryPoints.ToString();
|
||||
|
||||
// VSS
|
||||
if (vmReplica.VSSSnapshotFrequencyHour == 0)
|
||||
{
|
||||
chbVSS.Checked = false;
|
||||
VSSdiv.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
chbVSS.Checked = true;
|
||||
VSSdiv.Visible = true;
|
||||
txtRecoveryPointsVSS.Text = vmReplica.VSSSnapshotFrequencyHour.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
BindDetailsPopup(vmReplicaInfo);
|
||||
}
|
||||
|
||||
// Details
|
||||
secReplicationDetails.Visible = ReplicationDetailsPanel.Visible = vmReplica != null;
|
||||
|
||||
// Pause buttons
|
||||
if (vm.ReplicationState == ReplicationState.Suspended)
|
||||
{
|
||||
btnResume.Visible = true;
|
||||
btnPause.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
btnResume.Visible = false;
|
||||
btnPause.Visible = true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
messageBox.ShowErrorMessage("VPS_ERROR_GET_VM_REPLICATION", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void BindDetailsPopup(ReplicationDetailInfo vmReplicaInfo)
|
||||
{
|
||||
labDetailsState.Text = vmReplicaInfo.State.ToString();
|
||||
labDetailsMode.Text = vmReplicaInfo.Mode.ToString();
|
||||
labDetailsPrimary.Text = vmReplicaInfo.PrimaryServerName;
|
||||
labDetailsReplica.Text = vmReplicaInfo.ReplicaServerName;
|
||||
labDetailsHealth.Text = vmReplicaInfo.Health.ToString();
|
||||
labDetailsHealthDetails.Text = vmReplicaInfo.HealthDetails;
|
||||
|
||||
// statistic
|
||||
StatisticCollapsiblePanel.Text += ToReadableString(vmReplicaInfo.ToTime - vmReplicaInfo.FromTime);
|
||||
labFromTime.Text = vmReplicaInfo.FromTime.ToString(DateFormat);
|
||||
labToTime.Text = vmReplicaInfo.ToTime.ToString(DateFormat);
|
||||
labAverageSize.Text = vmReplicaInfo.AverageSize;
|
||||
labMaximumSize.Text = vmReplicaInfo.MaximumSize;
|
||||
labAverageLatency.Text = vmReplicaInfo.AverageLatency.ToString("c");
|
||||
labErrorsEncountered.Text = vmReplicaInfo.Errors.ToString();
|
||||
|
||||
var totalCycles = vmReplicaInfo.SuccessfulReplications + vmReplicaInfo.MissedReplicationCount;
|
||||
if (totalCycles > 0)
|
||||
labSuccessfulReplicationCycles.Text = string.Format(cyclesTemplate,
|
||||
vmReplicaInfo.SuccessfulReplications, totalCycles,
|
||||
Convert.ToInt32(100*vmReplicaInfo.SuccessfulReplications/totalCycles));
|
||||
else
|
||||
labSuccessfulReplicationCycles.Text = na;
|
||||
|
||||
// pending replication
|
||||
labSizeData.Text = vmReplicaInfo.PendingSize;
|
||||
labLastSyncro.Text = vmReplicaInfo.LastSynhronizedAt == DateTime.MinValue ? na : vmReplicaInfo.LastSynhronizedAt.ToString(DateFormat);
|
||||
}
|
||||
|
||||
protected void btnUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Page.IsValid)
|
||||
{
|
||||
ShowErrorMessage("VPS_REQUIRED");
|
||||
return;
|
||||
}
|
||||
|
||||
if (chbEnable.Checked)
|
||||
SetReplication();
|
||||
else
|
||||
DisableReplication();
|
||||
}
|
||||
|
||||
private void SetReplication()
|
||||
{
|
||||
var vmReplica = new VmReplication();
|
||||
|
||||
vmReplica.VhdToReplicate = chlVHDs.Items.Cast<ListItem>()
|
||||
.Where(li => li.Selected)
|
||||
.Select(li => li.Value)
|
||||
.ToArray();
|
||||
|
||||
vmReplica.Thumbprint = ddlCeritficateDiv.Visible ? ddlCeritficate.SelectedValue : txtCeritficate.Text;
|
||||
vmReplica.ReplicaFrequency = (ReplicaFrequency) Convert.ToInt32(ddlFrequency.SelectedValue);
|
||||
vmReplica.AdditionalRecoveryPoints = radRecoveryPoints.SelectedValue == "OnlyLast" ? 0 : Convert.ToInt32(txtRecoveryPointsAdditional.Text);
|
||||
vmReplica.VSSSnapshotFrequencyHour = chbVSS.Checked ? Convert.ToInt32(txtRecoveryPointsVSS.Text) : 0;
|
||||
|
||||
try
|
||||
{
|
||||
ResultObject res = ES.Services.VPS2012.SetVmReplication(PanelRequest.ItemID, vmReplica);
|
||||
|
||||
if (res.IsSuccess)
|
||||
{
|
||||
Bind();
|
||||
ShowSuccessMessage("VPS_SET_REPLICATION_ERROR");
|
||||
}
|
||||
else
|
||||
messageBox.ShowMessage(res, "VPS_SET_REPLICATION_ERROR", "VPS");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("VPS_SET_REPLICATION_ERROR", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void DisableReplication()
|
||||
{
|
||||
try
|
||||
{
|
||||
ResultObject res = ES.Services.VPS2012.DisableVmReplication(PanelRequest.ItemID);
|
||||
|
||||
if (res.IsSuccess)
|
||||
{
|
||||
Bind();
|
||||
ShowSuccessMessage("VPS_DISABLE_REPLICATION_ERROR");
|
||||
}
|
||||
else
|
||||
messageBox.ShowMessage(res, "VPS_DISABLE_REPLICATION_ERROR", "VPS");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("VPS_DISABLE_REPLICATION_ERROR", ex);
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnPause_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
ResultObject res = ES.Services.VPS2012.PauseReplication(PanelRequest.ItemID);
|
||||
|
||||
if (res.IsSuccess)
|
||||
{
|
||||
Bind();
|
||||
ShowSuccessMessage("VPS_PAUSE_REPLICATION_ERROR");
|
||||
}
|
||||
else
|
||||
messageBox.ShowMessage(res, "VPS_PAUSE_REPLICATION_ERROR", "VPS");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("VPS_PAUSE_REPLICATION_ERROR", ex);
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnResume_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
ResultObject res = ES.Services.VPS2012.ResumeReplication(PanelRequest.ItemID);
|
||||
|
||||
if (res.IsSuccess)
|
||||
{
|
||||
Bind();
|
||||
ShowSuccessMessage("VPS_RESUME_REPLICATION_ERROR");
|
||||
}
|
||||
else
|
||||
messageBox.ShowMessage(res, "VPS_RESUME_REPLICATION_ERROR", "VPS");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("VPS_RESUME_REPLICATION_ERROR", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public string ToReadableString(TimeSpan span)
|
||||
{
|
||||
string formatted = string.Format("{0}{1}{2}",
|
||||
span.Duration().Days > 0 ? string.Format("{0:0} Day{1}, ", span.Days, span.Days == 1 ? String.Empty : "s") : string.Empty,
|
||||
span.Duration().Hours > 0 ? string.Format("{0:0} Hour{1}, ", span.Hours, span.Hours == 1 ? String.Empty : "s") : string.Empty,
|
||||
span.Duration().Minutes > 0 ? string.Format("{0:0} Minute{1}, ", span.Minutes, span.Minutes == 1 ? String.Empty : "s") : string.Empty);
|
||||
|
||||
if (formatted.EndsWith(", ")) formatted = formatted.Substring(0, formatted.Length - 2);
|
||||
|
||||
if (string.IsNullOrEmpty(formatted)) formatted = "0 Minutes";
|
||||
|
||||
return formatted;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,780 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <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.VPS2012 {
|
||||
|
||||
|
||||
public partial class VpsDetailsReplications {
|
||||
|
||||
/// <summary>
|
||||
/// asyncTasks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
|
||||
/// <summary>
|
||||
/// breadcrumb control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.VPS2012.UserControls.Breadcrumb breadcrumb;
|
||||
|
||||
/// <summary>
|
||||
/// menu control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.VPS2012.UserControls.Menu menu;
|
||||
|
||||
/// <summary>
|
||||
/// imgIcon control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Image imgIcon;
|
||||
|
||||
/// <summary>
|
||||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.VPS2012.UserControls.FormTitle locTitle;
|
||||
|
||||
/// <summary>
|
||||
/// tabs control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.VPS2012.UserControls.ServerTabs tabs;
|
||||
|
||||
/// <summary>
|
||||
/// messageBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
||||
|
||||
/// <summary>
|
||||
/// validatorsSummary control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ValidationSummary validatorsSummary;
|
||||
|
||||
/// <summary>
|
||||
/// secReplicationDetails control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secReplicationDetails;
|
||||
|
||||
/// <summary>
|
||||
/// ReplicationDetailsPanel control.
|
||||
/// </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 ReplicationDetailsPanel;
|
||||
|
||||
/// <summary>
|
||||
/// locHealth control.
|
||||
/// </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 locHealth;
|
||||
|
||||
/// <summary>
|
||||
/// labHealth control.
|
||||
/// </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 labHealth;
|
||||
|
||||
/// <summary>
|
||||
/// btnDetailInfo control.
|
||||
/// </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 btnDetailInfo;
|
||||
|
||||
/// <summary>
|
||||
/// btnPause control.
|
||||
/// </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 btnPause;
|
||||
|
||||
/// <summary>
|
||||
/// btnResume control.
|
||||
/// </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 btnResume;
|
||||
|
||||
/// <summary>
|
||||
/// secReplication control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secReplication;
|
||||
|
||||
/// <summary>
|
||||
/// ReplicationPanel control.
|
||||
/// </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 ReplicationPanel;
|
||||
|
||||
/// <summary>
|
||||
/// chbEnable control.
|
||||
/// </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 chbEnable;
|
||||
|
||||
/// <summary>
|
||||
/// ReplicaTable 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.HtmlTable ReplicaTable;
|
||||
|
||||
/// <summary>
|
||||
/// locPrimaryServer control.
|
||||
/// </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 locPrimaryServer;
|
||||
|
||||
/// <summary>
|
||||
/// labPrimaryServer control.
|
||||
/// </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 labPrimaryServer;
|
||||
|
||||
/// <summary>
|
||||
/// locReplicaServer control.
|
||||
/// </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 locReplicaServer;
|
||||
|
||||
/// <summary>
|
||||
/// labReplicaServer control.
|
||||
/// </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 labReplicaServer;
|
||||
|
||||
/// <summary>
|
||||
/// locLastSynchronized control.
|
||||
/// </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 locLastSynchronized;
|
||||
|
||||
/// <summary>
|
||||
/// labLastSynchronized control.
|
||||
/// </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 labLastSynchronized;
|
||||
|
||||
/// <summary>
|
||||
/// trVHDEditable 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 trVHDEditable;
|
||||
|
||||
/// <summary>
|
||||
/// locVHDs control.
|
||||
/// </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 locVHDs;
|
||||
|
||||
/// <summary>
|
||||
/// chlVHDs control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBoxList chlVHDs;
|
||||
|
||||
/// <summary>
|
||||
/// valVHDs control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CustomValidator valVHDs;
|
||||
|
||||
/// <summary>
|
||||
/// trVHDReadOnly 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 trVHDReadOnly;
|
||||
|
||||
/// <summary>
|
||||
/// locVHDsReadOnly control.
|
||||
/// </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 locVHDsReadOnly;
|
||||
|
||||
/// <summary>
|
||||
/// labVHDs control.
|
||||
/// </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 labVHDs;
|
||||
|
||||
/// <summary>
|
||||
/// locCeritficate control.
|
||||
/// </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 locCeritficate;
|
||||
|
||||
/// <summary>
|
||||
/// ddlCeritficateDiv 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.HtmlGenericControl ddlCeritficateDiv;
|
||||
|
||||
/// <summary>
|
||||
/// ddlCeritficate control.
|
||||
/// </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 ddlCeritficate;
|
||||
|
||||
/// <summary>
|
||||
/// txtCeritficateDiv 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.HtmlGenericControl txtCeritficateDiv;
|
||||
|
||||
/// <summary>
|
||||
/// txtCeritficate control.
|
||||
/// </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 txtCeritficate;
|
||||
|
||||
/// <summary>
|
||||
/// locFrequency control.
|
||||
/// </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 locFrequency;
|
||||
|
||||
/// <summary>
|
||||
/// ddlFrequency control.
|
||||
/// </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 ddlFrequency;
|
||||
|
||||
/// <summary>
|
||||
/// locRecoveryPoints control.
|
||||
/// </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 locRecoveryPoints;
|
||||
|
||||
/// <summary>
|
||||
/// radRecoveryPoints control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButtonList radRecoveryPoints;
|
||||
|
||||
/// <summary>
|
||||
/// tabAdditionalRecoveryPoints 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.HtmlTable tabAdditionalRecoveryPoints;
|
||||
|
||||
/// <summary>
|
||||
/// locRecoveryPointsAdditional control.
|
||||
/// </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 locRecoveryPointsAdditional;
|
||||
|
||||
/// <summary>
|
||||
/// txtRecoveryPointsAdditional control.
|
||||
/// </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 txtRecoveryPointsAdditional;
|
||||
|
||||
/// <summary>
|
||||
/// chbVSS control.
|
||||
/// </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 chbVSS;
|
||||
|
||||
/// <summary>
|
||||
/// VSSdiv 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.HtmlGenericControl VSSdiv;
|
||||
|
||||
/// <summary>
|
||||
/// txtRecoveryPointsVSS control.
|
||||
/// </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 txtRecoveryPointsVSS;
|
||||
|
||||
/// <summary>
|
||||
/// btnUpdate control.
|
||||
/// </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 btnUpdate;
|
||||
|
||||
/// <summary>
|
||||
/// DetailsPanel control.
|
||||
/// </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 DetailsPanel;
|
||||
|
||||
/// <summary>
|
||||
/// locDetails control.
|
||||
/// </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 locDetails;
|
||||
|
||||
/// <summary>
|
||||
/// locDetailsState control.
|
||||
/// </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 locDetailsState;
|
||||
|
||||
/// <summary>
|
||||
/// labDetailsState control.
|
||||
/// </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 labDetailsState;
|
||||
|
||||
/// <summary>
|
||||
/// locDetailsMode control.
|
||||
/// </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 locDetailsMode;
|
||||
|
||||
/// <summary>
|
||||
/// labDetailsMode control.
|
||||
/// </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 labDetailsMode;
|
||||
|
||||
/// <summary>
|
||||
/// locDetailsPrimary control.
|
||||
/// </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 locDetailsPrimary;
|
||||
|
||||
/// <summary>
|
||||
/// labDetailsPrimary control.
|
||||
/// </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 labDetailsPrimary;
|
||||
|
||||
/// <summary>
|
||||
/// locDetailsReplica control.
|
||||
/// </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 locDetailsReplica;
|
||||
|
||||
/// <summary>
|
||||
/// labDetailsReplica control.
|
||||
/// </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 labDetailsReplica;
|
||||
|
||||
/// <summary>
|
||||
/// locDetailsHealth control.
|
||||
/// </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 locDetailsHealth;
|
||||
|
||||
/// <summary>
|
||||
/// labDetailsHealth control.
|
||||
/// </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 labDetailsHealth;
|
||||
|
||||
/// <summary>
|
||||
/// labDetailsHealthDetails control.
|
||||
/// </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 labDetailsHealthDetails;
|
||||
|
||||
/// <summary>
|
||||
/// StatisticCollapsiblePanel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel StatisticCollapsiblePanel;
|
||||
|
||||
/// <summary>
|
||||
/// StatisticPanel control.
|
||||
/// </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 StatisticPanel;
|
||||
|
||||
/// <summary>
|
||||
/// locFromTime control.
|
||||
/// </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 locFromTime;
|
||||
|
||||
/// <summary>
|
||||
/// labFromTime control.
|
||||
/// </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 labFromTime;
|
||||
|
||||
/// <summary>
|
||||
/// locToTime control.
|
||||
/// </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 locToTime;
|
||||
|
||||
/// <summary>
|
||||
/// labToTime control.
|
||||
/// </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 labToTime;
|
||||
|
||||
/// <summary>
|
||||
/// locAverageSize control.
|
||||
/// </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 locAverageSize;
|
||||
|
||||
/// <summary>
|
||||
/// labAverageSize control.
|
||||
/// </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 labAverageSize;
|
||||
|
||||
/// <summary>
|
||||
/// locMaximumSize control.
|
||||
/// </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 locMaximumSize;
|
||||
|
||||
/// <summary>
|
||||
/// labMaximumSize control.
|
||||
/// </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 labMaximumSize;
|
||||
|
||||
/// <summary>
|
||||
/// locAverageLatency control.
|
||||
/// </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 locAverageLatency;
|
||||
|
||||
/// <summary>
|
||||
/// labAverageLatency control.
|
||||
/// </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 labAverageLatency;
|
||||
|
||||
/// <summary>
|
||||
/// locErrorsEncountered control.
|
||||
/// </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 locErrorsEncountered;
|
||||
|
||||
/// <summary>
|
||||
/// labErrorsEncountered control.
|
||||
/// </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 labErrorsEncountered;
|
||||
|
||||
/// <summary>
|
||||
/// locSuccessfulReplicationCycles control.
|
||||
/// </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 locSuccessfulReplicationCycles;
|
||||
|
||||
/// <summary>
|
||||
/// labSuccessfulReplicationCycles control.
|
||||
/// </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 labSuccessfulReplicationCycles;
|
||||
|
||||
/// <summary>
|
||||
/// PendingReplicationCollapsiblePanel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel PendingReplicationCollapsiblePanel;
|
||||
|
||||
/// <summary>
|
||||
/// PendingReplicationPanel control.
|
||||
/// </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 PendingReplicationPanel;
|
||||
|
||||
/// <summary>
|
||||
/// locSizeData control.
|
||||
/// </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 locSizeData;
|
||||
|
||||
/// <summary>
|
||||
/// labSizeData control.
|
||||
/// </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 labSizeData;
|
||||
|
||||
/// <summary>
|
||||
/// locLastSyncro control.
|
||||
/// </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 locLastSyncro;
|
||||
|
||||
/// <summary>
|
||||
/// labLastSyncro control.
|
||||
/// </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 labLastSyncro;
|
||||
|
||||
/// <summary>
|
||||
/// btnCancel control.
|
||||
/// </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 btnCancel;
|
||||
|
||||
/// <summary>
|
||||
/// DetailModal control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::AjaxControlToolkit.ModalPopupExtender DetailModal;
|
||||
}
|
||||
}
|
|
@ -248,6 +248,27 @@
|
|||
<DependentUpon>OrganizationDeletedUserGeneralSettings.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\OrganizationSettingsGeneralSettings.ascx.cs">
|
||||
<DependentUpon>OrganizationSettingsGeneralSettings.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\OrganizationSettingsGeneralSettings.ascx.designer.cs">
|
||||
<DependentUpon>OrganizationSettingsGeneralSettings.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\OrganizationSettingsPasswordSettings.ascx.cs">
|
||||
<DependentUpon>OrganizationSettingsPasswordSettings.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\OrganizationSettingsPasswordSettings.ascx.designer.cs">
|
||||
<DependentUpon>OrganizationSettingsPasswordSettings.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\OrganizationUserResetPassword.ascx.cs">
|
||||
<DependentUpon>OrganizationUserResetPassword.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\OrganizationUserResetPassword.ascx.designer.cs">
|
||||
<DependentUpon>OrganizationUserResetPassword.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\UserControls\EnterpriseStorageEditFolderTabs.ascx.cs">
|
||||
<DependentUpon>EnterpriseStorageEditFolderTabs.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
|
@ -262,10 +283,17 @@
|
|||
<Compile Include="ExchangeServer\UserControls\EnterpriseStorageOwaUsersList.ascx.designer.cs">
|
||||
<DependentUpon>EnterpriseStorageOwaUsersList.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\UserControls\OrganizationSettingsTabs.ascx.cs">
|
||||
<DependentUpon>OrganizationSettingsTabs.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="HostedSharePoint\HostedSharePointEnterpriseBackupSiteCollection.ascx.cs">
|
||||
<DependentUpon>HostedSharePointEnterpriseBackupSiteCollection.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\UserControls\OrganizationSettingsTabs.ascx.designer.cs">
|
||||
<DependentUpon>OrganizationSettingsTabs.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="HostedSharePoint\HostedSharePointEnterpriseBackupSiteCollection.ascx.designer.cs">
|
||||
<DependentUpon>HostedSharePointEnterpriseBackupSiteCollection.ascx</DependentUpon>
|
||||
</Compile>
|
||||
|
@ -311,10 +339,35 @@
|
|||
<Compile Include="ProviderControls\HyperV2012R2_Settings.ascx.designer.cs">
|
||||
<DependentUpon>HyperV2012R2_Settings.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ScheduleTaskControls\UserPasswordExpirationNotificationView.ascx.cs">
|
||||
<DependentUpon>UserPasswordExpirationNotificationView.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SearchObject.ascx.cs">
|
||||
<DependentUpon>SearchObject.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ScheduleTaskControls\UserPasswordExpirationNotificationView.ascx.designer.cs">
|
||||
<DependentUpon>UserPasswordExpirationNotificationView.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordExpirationLetter.ascx.cs">
|
||||
<DependentUpon>SettingsUserPasswordExpirationLetter.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordExpirationLetter.ascx.designer.cs">
|
||||
<DependentUpon>SettingsUserPasswordExpirationLetter.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordResetLetter.ascx.cs">
|
||||
<DependentUpon>SettingsUserPasswordResetLetter.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordResetLetter.ascx.designer.cs">
|
||||
<DependentUpon>SettingsUserPasswordResetLetter.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile>
|
||||
<DependentUpon>SearchObject.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SearchObject.ascx.designer.cs">
|
||||
<DependentUpon>SearchObject.ascx</DependentUpon>
|
||||
</Compile>
|
||||
|
@ -322,6 +375,23 @@
|
|||
<DependentUpon>Connect.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ScheduleTaskControls\UserPasswordExpirationNotificationView.ascx.designer.cs">
|
||||
<DependentUpon>UserPasswordExpirationNotificationView.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordExpirationLetter.ascx.cs">
|
||||
<DependentUpon>SettingsUserPasswordExpirationLetter.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordExpirationLetter.ascx.designer.cs">
|
||||
<DependentUpon>SettingsUserPasswordExpirationLetter.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordResetLetter.ascx.cs">
|
||||
<DependentUpon>SettingsUserPasswordResetLetter.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordResetLetter.ascx.designer.cs">
|
||||
<DependentUpon>SettingsUserPasswordResetLetter.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="VPS2012\RemoteDesktop\Connect.aspx.designer.cs">
|
||||
<DependentUpon>Connect.aspx</DependentUpon>
|
||||
</Compile>
|
||||
|
@ -520,6 +590,13 @@
|
|||
<Compile Include="VPS2012\VpsDetailsPermissions.ascx.designer.cs">
|
||||
<DependentUpon>VpsDetailsPermissions.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="VPS2012\VpsDetailsReplications.ascx.cs">
|
||||
<DependentUpon>VpsDetailsReplications.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="VPS2012\VpsDetailsReplications.ascx.designer.cs">
|
||||
<DependentUpon>VpsDetailsReplications.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="VPS2012\VpsDetailsSnapshots.ascx.cs">
|
||||
<DependentUpon>VpsDetailsSnapshots.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
|
@ -4819,8 +4896,12 @@
|
|||
<Content Include="ExchangeServer\EnterpriseStorageFolderSettingsFolderPermissions.ascx" />
|
||||
<Content Include="ExchangeServer\EnterpriseStorageFolderSettingsOwaEditing.ascx" />
|
||||
<Content Include="ExchangeServer\ExchangeCheckDomainName.ascx" />
|
||||
<Content Include="ExchangeServer\OrganizationSettingsGeneralSettings.ascx" />
|
||||
<Content Include="ExchangeServer\OrganizationSettingsPasswordSettings.ascx" />
|
||||
<Content Include="ExchangeServer\OrganizationUserResetPassword.ascx" />
|
||||
<Content Include="ExchangeServer\UserControls\EnterpriseStorageEditFolderTabs.ascx" />
|
||||
<Content Include="ExchangeServer\UserControls\EnterpriseStorageOwaUsersList.ascx" />
|
||||
<Content Include="ExchangeServer\UserControls\OrganizationSettingsTabs.ascx" />
|
||||
<Content Include="HostedSharePoint\HostedSharePointEnterpriseBackupSiteCollection.ascx" />
|
||||
<Content Include="HostedSharePoint\HostedSharePointEnterpriseEditSiteCollection.ascx" />
|
||||
<Content Include="HostedSharePoint\HostedSharePointEnterpriseSiteCollections.ascx" />
|
||||
|
@ -4829,6 +4910,11 @@
|
|||
<Content Include="HostedSharePoint\HostedSharePointEnterpriseStorageUsage.ascx" />
|
||||
<Content Include="ProviderControls\HyperV2012R2_Settings.ascx" />
|
||||
<Content Include="SearchObject.ascx" />
|
||||
<Content Include="ScheduleTaskControls\UserPasswordExpirationNotificationView.ascx" />
|
||||
|
||||
<Content Include="SearchObject.ascx" />
|
||||
<Content Include="SettingsUserPasswordExpirationLetter.ascx" />
|
||||
<Content Include="SettingsUserPasswordResetLetter.ascx" />
|
||||
<Content Include="VPS2012\RemoteDesktop\Connect.aspx" />
|
||||
<Content Include="VPS2012\RemoteDesktop\msrdp.cab" />
|
||||
<Content Include="VPS2012\TestVirtualMachineTemplate.aspx" />
|
||||
|
@ -4858,6 +4944,7 @@
|
|||
<Content Include="VPS2012\VpsDetailsInsertDvd.ascx" />
|
||||
<Content Include="VPS2012\VpsDetailsNetwork.ascx" />
|
||||
<Content Include="VPS2012\VpsDetailsPermissions.ascx" />
|
||||
<Content Include="VPS2012\VpsDetailsReplications.ascx" />
|
||||
<Content Include="VPS2012\VpsDetailsSnapshots.ascx" />
|
||||
<Content Include="VPS2012\VpsDetailsTools.ascx" />
|
||||
<Content Include="VPS2012\VpsMoveServer.ascx" />
|
||||
|
@ -4934,6 +5021,14 @@
|
|||
<Content Include="HostedSharePoint\App_LocalResources\HostedSharePointEnterpriseStorageUsage.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="ExchangeServer\App_LocalResources\OrganizationUserResetPassword.ascx.resx" />
|
||||
<Content Include="App_LocalResources\SettingsUserPasswordExpirationLetter.ascx.resx" />
|
||||
<Content Include="ExchangeServer\UserControls\App_LocalResources\OrganizationSettingsTabs.ascx.resx" />
|
||||
<Content Include="ExchangeServer\App_LocalResources\OrganizationSettingsPasswordSettings.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="ExchangeServer\App_LocalResources\OrganizationSettingsGeneralSettings.ascx.resx" />
|
||||
<Content Include="App_LocalResources\SettingsUserPasswordResetLetter.ascx.resx" />
|
||||
<EmbeddedResource Include="RDS\App_LocalResources\RDSEditCollectionSettings.ascx.resx" />
|
||||
<Content Include="RDSServersEditServer.ascx" />
|
||||
<Content Include="RDS\AssignedRDSServers.ascx" />
|
||||
|
@ -5127,8 +5222,12 @@
|
|||
<Content Include="PhoneNumbersAddPhoneNumber.ascx" />
|
||||
<Content Include="PhoneNumbersEditPhoneNumber.ascx" />
|
||||
<Content Include="UserControls\App_LocalResources\UserActions.ascx.resx" />
|
||||
<Content Include="UserControls\App_LocalResources\DomainActions.ascx.resx" />
|
||||
<Content Include="UserControls\App_LocalResources\DomainActions.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="UserControls\App_LocalResources\MailAccountActions.ascx.resx" />
|
||||
<Content Include="ScheduleTaskControls\App_LocalResources\UserPasswordExpirationNotificationView.ascx.resx" />
|
||||
|
||||
<Content Include="SkinControls\App_LocalResources\SearchObject.ascx.resx" />
|
||||
<EmbeddedResource Include="UserControls\App_LocalResources\WebsiteActions.ascx.resx" />
|
||||
<Content Include="VPS\UserControls\App_LocalResources\Generation.ascx.resx">
|
||||
|
@ -5230,6 +5329,9 @@
|
|||
<Content Include="VPS2012\UserControls\App_LocalResources\ServerTabs.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="VPS2012\App_LocalResources\VpsDetailsReplications.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_LocalResources\BandwidthReport.ascx.resx">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue