diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs
index fa3c8d81..8cb893f1 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs
@@ -36,6 +36,10 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
[System.Xml.Serialization.XmlIncludeAttribute(typeof(ServiceProviderItem))]
public partial class esOrganizations : Microsoft.Web.Services3.WebServicesClientProtocol {
+ private System.Threading.SendOrPostCallback UpdateOrganizationGeneralSettingsOperationCompleted;
+
+ private System.Threading.SendOrPostCallback GetOrganizationGeneralSettingsOperationCompleted;
+
private System.Threading.SendOrPostCallback UpdateOrganizationPasswordSettingsOperationCompleted;
private System.Threading.SendOrPostCallback GetOrganizationPasswordSettingsOperationCompleted;
@@ -149,6 +153,12 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
this.Url = "http://localhost:9002/esOrganizations.asmx";
}
+ ///
+ public event UpdateOrganizationGeneralSettingsCompletedEventHandler UpdateOrganizationGeneralSettingsCompleted;
+
+ ///
+ public event GetOrganizationGeneralSettingsCompletedEventHandler GetOrganizationGeneralSettingsCompleted;
+
///
public event UpdateOrganizationPasswordSettingsCompletedEventHandler UpdateOrganizationPasswordSettingsCompleted;
@@ -311,6 +321,89 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
///
public event GetSupportServiceLevelCompletedEventHandler GetSupportServiceLevelCompleted;
+ ///
+ [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/UpdateOrganizationGeneralSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
+ public void UpdateOrganizationGeneralSettings(int itemId, OrganizationGeneralSettings settings) {
+ this.Invoke("UpdateOrganizationGeneralSettings", new object[] {
+ itemId,
+ settings});
+ }
+
+ ///
+ public System.IAsyncResult BeginUpdateOrganizationGeneralSettings(int itemId, OrganizationGeneralSettings settings, System.AsyncCallback callback, object asyncState) {
+ return this.BeginInvoke("UpdateOrganizationGeneralSettings", new object[] {
+ itemId,
+ settings}, callback, asyncState);
+ }
+
+ ///
+ public void EndUpdateOrganizationGeneralSettings(System.IAsyncResult asyncResult) {
+ this.EndInvoke(asyncResult);
+ }
+
+ ///
+ public void UpdateOrganizationGeneralSettingsAsync(int itemId, OrganizationGeneralSettings settings) {
+ this.UpdateOrganizationGeneralSettingsAsync(itemId, settings, null);
+ }
+
+ ///
+ public void UpdateOrganizationGeneralSettingsAsync(int itemId, OrganizationGeneralSettings settings, object userState) {
+ if ((this.UpdateOrganizationGeneralSettingsOperationCompleted == null)) {
+ this.UpdateOrganizationGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateOrganizationGeneralSettingsOperationCompleted);
+ }
+ this.InvokeAsync("UpdateOrganizationGeneralSettings", new object[] {
+ itemId,
+ settings}, this.UpdateOrganizationGeneralSettingsOperationCompleted, userState);
+ }
+
+ private void OnUpdateOrganizationGeneralSettingsOperationCompleted(object arg) {
+ if ((this.UpdateOrganizationGeneralSettingsCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.UpdateOrganizationGeneralSettingsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ ///
+ [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetOrganizationGeneralSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
+ public OrganizationGeneralSettings GetOrganizationGeneralSettings(int itemId) {
+ object[] results = this.Invoke("GetOrganizationGeneralSettings", new object[] {
+ itemId});
+ return ((OrganizationGeneralSettings)(results[0]));
+ }
+
+ ///
+ public System.IAsyncResult BeginGetOrganizationGeneralSettings(int itemId, System.AsyncCallback callback, object asyncState) {
+ return this.BeginInvoke("GetOrganizationGeneralSettings", new object[] {
+ itemId}, callback, asyncState);
+ }
+
+ ///
+ public OrganizationGeneralSettings EndGetOrganizationGeneralSettings(System.IAsyncResult asyncResult) {
+ object[] results = this.EndInvoke(asyncResult);
+ return ((OrganizationGeneralSettings)(results[0]));
+ }
+
+ ///
+ public void GetOrganizationGeneralSettingsAsync(int itemId) {
+ this.GetOrganizationGeneralSettingsAsync(itemId, null);
+ }
+
+ ///
+ public void GetOrganizationGeneralSettingsAsync(int itemId, object userState) {
+ if ((this.GetOrganizationGeneralSettingsOperationCompleted == null)) {
+ this.GetOrganizationGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetOrganizationGeneralSettingsOperationCompleted);
+ }
+ this.InvokeAsync("GetOrganizationGeneralSettings", new object[] {
+ itemId}, this.GetOrganizationGeneralSettingsOperationCompleted, userState);
+ }
+
+ private void OnGetOrganizationGeneralSettingsOperationCompleted(object arg) {
+ if ((this.GetOrganizationGeneralSettingsCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.GetOrganizationGeneralSettingsCompleted(this, new GetOrganizationGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
///
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/UpdateOrganizationPasswordSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void UpdateOrganizationPasswordSettings(int itemId, OrganizationPasswordSettings settings) {
@@ -3029,6 +3122,36 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
}
}
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
+ public delegate void UpdateOrganizationGeneralSettingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
+ public delegate void GetOrganizationGeneralSettingsCompletedEventHandler(object sender, GetOrganizationGeneralSettingsCompletedEventArgs e);
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class GetOrganizationGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal GetOrganizationGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ ///
+ public OrganizationGeneralSettings Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((OrganizationGeneralSettings)(this.results[0]));
+ }
+ }
+ }
+
///
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
public delegate void UpdateOrganizationPasswordSettingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
index 5f0a1e59..e87226ba 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
@@ -1685,6 +1685,40 @@ namespace WebsitePanel.EnterpriseServer
return GetOrganizationSettings(itemId, OrganizationSettings.PasswordSettings);
}
+ public static void UpdateOrganizationGeneralSettings(int itemId, OrganizationGeneralSettings settings)
+ {
+ TaskManager.StartTask("ORGANIZATION", "UPDATE_GENERAL_SETTINGS");
+
+ try
+ {
+ // load organization
+ Organization org = GetOrganization(itemId);
+
+ if (org == null)
+ {
+ TaskManager.WriteWarning("Organization with itemId '{0}' not found", itemId.ToString());
+ return;
+ }
+
+ var xml = ObjectUtils.Serialize(settings);
+
+ DataProvider.UpdateOrganizationSettings(itemId, OrganizationSettings.GeneralSettings, xml);
+ }
+ catch (Exception ex)
+ {
+ throw TaskManager.WriteError(ex);
+ }
+ finally
+ {
+ TaskManager.CompleteTask();
+ }
+ }
+
+ public static OrganizationGeneralSettings GetOrganizationGeneralSettings(int itemId)
+ {
+ return GetOrganizationSettings(itemId, OrganizationSettings.GeneralSettings);
+ }
+
private static T GetOrganizationSettings(int itemId, string settingsName)
{
var entity = ObjectUtils.FillObjectFromDataReader(DataProvider.GetOrganizationSettings(itemId, settingsName));
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/UserPasswordExpirationNotificationTask.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/UserPasswordExpirationNotificationTask.cs
index afc3b575..4508a845 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/UserPasswordExpirationNotificationTask.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/UserPasswordExpirationNotificationTask.cs
@@ -39,6 +39,8 @@ namespace WebsitePanel.EnterpriseServer
{
var usersWithExpiredPasswords = OrganizationController.GetOrganizationUsersWithExpiredPassword(organization.Id, daysBeforeNotify);
+ var generalSettings = OrganizationController.GetOrganizationGeneralSettings(organization.Id);
+
foreach (var user in usersWithExpiredPasswords)
{
user.ItemId = organization.Id;
@@ -49,7 +51,7 @@ namespace WebsitePanel.EnterpriseServer
continue;
}
- OrganizationController.SendResetUserPasswordEmail(owner, user, "Scheduler Password Expiration Notification", user.PrimaryEmailAddress, string.Empty);
+ OrganizationController.SendResetUserPasswordEmail(owner, user, "Scheduler Password Expiration Notification", user.PrimaryEmailAddress, generalSettings.OrganizationLogoUrl);
}
}
}
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs
index 0524c2d8..e26cd9f3 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs
@@ -47,6 +47,18 @@ namespace WebsitePanel.EnterpriseServer
{
#region Organizations
+ [WebMethod]
+ public void UpdateOrganizationGeneralSettings(int itemId, OrganizationGeneralSettings settings)
+ {
+ OrganizationController.UpdateOrganizationGeneralSettings(itemId, settings);
+ }
+
+ [WebMethod]
+ public OrganizationGeneralSettings GetOrganizationGeneralSettings(int itemId)
+ {
+ return OrganizationController.GetOrganizationGeneralSettings(itemId);
+ }
+
[WebMethod]
public void UpdateOrganizationPasswordSettings(int itemId, OrganizationPasswordSettings settings)
{
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationGeneralSettings.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationGeneralSettings.cs
new file mode 100644
index 00000000..345fd0e2
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationGeneralSettings.cs
@@ -0,0 +1,7 @@
+namespace WebsitePanel.Providers.HostedSolution
+{
+ public class OrganizationGeneralSettings
+ {
+ public string OrganizationLogoUrl { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationSettings.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationSettings.cs
index 38e01f95..4fe39b96 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationSettings.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationSettings.cs
@@ -3,5 +3,6 @@
public class OrganizationSettings
{
public const string PasswordSettings = "PasswordSettings";
+ public const string GeneralSettings = "GeneralSettings";
}
}
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
index a8951639..ce9cc986 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
@@ -119,6 +119,7 @@
+
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config
index 4a2b2c76..8e94ffca 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config
@@ -477,6 +477,7 @@
+
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx
index 2e38b9a4..d3d1e91f 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx
@@ -241,6 +241,6 @@
Edit
- Organization settings
+ Organization settings:
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationSettingsGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationSettingsGeneralSettings.ascx.resx
new file mode 100644
index 00000000..5e45627c
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationSettingsGeneralSettings.ascx.resx
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ General settings
+
+
+ Organization logo URL:
+
+
+ Edit settings
+
+
+ *
+
+
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationSettingsPasswordSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationSettingsPasswordSettings.ascx.resx
index 8387aed9..4aa72a90 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationSettingsPasswordSettings.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationSettingsPasswordSettings.ascx.resx
@@ -192,6 +192,9 @@
*
+
+ *
+
*
@@ -204,6 +207,9 @@
*
+
+ *
+
*
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx
new file mode 100644
index 00000000..931c6283
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx
@@ -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" %>
+
+
+
+
+
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx.cs
new file mode 100644
index 00000000..e5777b0a
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx.cs
@@ -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;
+ }
+ }
+}
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx.designer.cs
new file mode 100644
index 00000000..b3478050
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsGeneralSettings.ascx.designer.cs
@@ -0,0 +1,132 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.Portal.ExchangeServer {
+
+
+ public partial class OrganizationSettingsGeneralSettings {
+
+ ///
+ /// asyncTasks control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
+
+ ///
+ /// Image1 control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Image Image1;
+
+ ///
+ /// locTitle control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Localize locTitle;
+
+ ///
+ /// litOrganizationName control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Literal litOrganizationName;
+
+ ///
+ /// tabs control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::WebsitePanel.Portal.ExchangeServer.UserControls.OrganizationSettingsTabs tabs;
+
+ ///
+ /// messageBox control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
+
+ ///
+ /// colGeneralSettings control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::WebsitePanel.Portal.CollapsiblePanel colGeneralSettings;
+
+ ///
+ /// panelGeneralSettings control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Panel panelGeneralSettings;
+
+ ///
+ /// GenerralSettignsTable control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlTable GenerralSettignsTable;
+
+ ///
+ /// lblOrganizationLogoUrl control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblOrganizationLogoUrl;
+
+ ///
+ /// txtOrganizationLogoUrl control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtOrganizationLogoUrl;
+
+ ///
+ /// valRequireMinLength control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireMinLength;
+
+ ///
+ /// buttonPanel control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx
index 0b99d95e..f29446db 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx
@@ -23,8 +23,8 @@
-
+
+
@@ -86,6 +86,8 @@
meta:resourcekey="lblLockedOut" Text="Account Lockout threshold:">
+
|
@@ -96,6 +98,8 @@
meta:resourcekey="lblResetAccountLockout" Text="Reset account lockout counter after (minutes):">
+
|
@@ -154,7 +158,7 @@
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx.designer.cs
index 345b5367..0b6398ac 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx.designer.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx.designer.cs
@@ -300,6 +300,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
///
protected global::System.Web.UI.WebControls.TextBox txtLockedOut;
+ ///
+ /// valRequiredLockedOut control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequiredLockedOut;
+
///
/// valCorrectLockedOut control.
///
@@ -336,6 +345,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
///
protected global::System.Web.UI.WebControls.TextBox txtResetAccountLockout;
+ ///
+ /// valRequireResetAccountLockout control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireResetAccountLockout;
+
///
/// valResetAccountLockout control.
///
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/App_LocalResources/OrganizationSettingsTabs.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/App_LocalResources/OrganizationSettingsTabs.ascx.resx
index ecbb2a94..13e577fc 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/App_LocalResources/OrganizationSettingsTabs.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/App_LocalResources/OrganizationSettingsTabs.ascx.resx
@@ -117,6 +117,9 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ General Settings
+
Password Settings
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/OrganizationSettingsTabs.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/OrganizationSettingsTabs.ascx.cs
index 3fa348da..9d8b50bd 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/OrganizationSettingsTabs.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/OrganizationSettingsTabs.ascx.cs
@@ -20,8 +20,11 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
private void BindTabs()
{
List tabsList = new List();
+ 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)
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj
index cde0ab55..989d4f45 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj
@@ -244,6 +244,13 @@
OrganizationDeletedUserGeneralSettings.ascx
ASPXCodeBehind
+
+ OrganizationSettingsGeneralSettings.ascx
+ ASPXCodeBehind
+
+
+ OrganizationSettingsGeneralSettings.ascx
+
OrganizationSettingsPasswordSettings.ascx
ASPXCodeBehind
@@ -4571,6 +4578,7 @@
+
@@ -4640,6 +4648,7 @@
+