using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using CMS.UIControls;
using CMS.SettingsProvider;
using CMS.GlobalHelper;
using CMS.DataEngine;
using CMS.FormControls;
public partial class CMSFormControls_Basic_SelectConnectionString : FormEngineUserControl
{
#region "Variables"
private String mDefaultConnectionString = String.Empty;
private bool mDisplayInherit = false;
#endregion
#region "Properties
///
/// Item's default connection string
///
public String DefaultConnectionString
{
get
{
if (String.IsNullOrEmpty(mDefaultConnectionString))
{
mDefaultConnectionString = (Scope == PredefinedObjectType.REPORT) ? ModuleCommands.GetDefaultReportConnectionString() : SqlHelper.DEFAULT_CONNECTIONSTRING_NAME;
}
return mDefaultConnectionString;
}
set
{
mDefaultConnectionString = value;
}
}
///
/// If true, inherit button is displayed
///
public bool DisplayInherit
{
get
{
return mDisplayInherit;
}
set
{
mDisplayInherit = value;
pnlInherit.Visible = value;
}
}
///
/// Scope of control's usage
///
public String Scope
{
get;
set;
}
///
/// Connection string selected value
///
public override object Value
{
get
{
if ((chkInherit.Checked) && DisplayInherit)
{
return String.Empty;
}
return drpConnString.SelectedValue;
}
set
{
CreateList();
if ((ValidationHelper.GetString(value, String.Empty) == String.Empty))
{
drpConnString.SelectedValue = DefaultConnectionString;
chkInherit.Checked = true;
}
else
{
drpConnString.SelectedValue = ValidationHelper.GetString(value, DefaultConnectionString);
}
}
}
#endregion
#region "Methods"
///
/// Creates list of items
///
private void CreateList()
{
drpConnString.Items.Clear();
drpConnString.Items.Add(new ListItem(GetString("general.defaultchoice"), SqlHelper.DEFAULT_CONNECTIONSTRING_NAME));
// Add basic conn. string when in development mode
if (SettingsKeyProvider.DevelopmentMode)
{
drpConnString.Items.Add(new ListItem("CMSOMConnectionString", "CMSOMConnectionString"));
drpConnString.Items.Add(new ListItem("CMSReadOnlyConnectionString", "CMSReadOnlyConnectionString"));
}
// Add all connection strings in web config
foreach (ConnectionStringSettings sett in ConfigurationManager.ConnectionStrings)
{
// If key is not already in dropdown or is not default connection string -- add it
if (!drpConnString.Items.Contains(new ListItem(sett.Name, sett.Name)) && (sett.Name != SqlHelper.DEFAULT_CONNECTIONSTRING_NAME) && IsConnectionStringValid(sett.ConnectionString))
{
drpConnString.Items.Add(sett.Name);
}
}
}
///
/// Test if connection string is to be shown in selector
///
/// Connection string text
protected bool IsConnectionStringValid(String conn)
{
return !conn.StartsWithCSafe("ldap", true);
}
protected override void OnLoad(EventArgs e)
{
// If list was not already created (create it now)
if (!RequestHelper.IsPostBack() && (drpConnString.Items.Count == 0))
{
CreateList();
}
chkInherit.Attributes["onclick"] = "var drp = document.getElementById('" + drpConnString.ClientID + "');if (this.checked){drp.value ='" + DefaultConnectionString + "'};drp.disabled = (this.checked);";
if (DisplayInherit)
{
drpConnString.Enabled = !chkInherit.Checked;
// As disabled dropdown returns no value, reset default value
if (chkInherit.Checked)
{
drpConnString.SelectedValue = DefaultConnectionString;
}
pnlMain.CssClass = "ConnectionStringBox";
}
base.OnLoad(e);
}
#endregion
}