using System; using System.Data; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using CMS.CMSHelper; using CMS.FormControls; using CMS.GlobalHelper; using CMS.Newsletter; using CMS.FormEngine; using CMS.SettingsProvider; public partial class CMSModules_Newsletters_FormControls_NewsletterIssueSelector : FormEngineUserControl { #region "Variables" private int mValue = 0; #endregion #region "Properties" /// /// Enables or disables showing variants in uniselector. /// public bool ShowVariants { get { return ValidationHelper.GetBoolean(GetValue("ShowVariants"), true); } set { SetValue("ShowVariants", value); } } /// /// Gets or Sets return column name. Default is IssueID. /// public string ReturnColumnName { get { string returnColumnName = ValidationHelper.GetString(GetValue("ReturnColumnName"), ""); if (String.IsNullOrEmpty(returnColumnName)) { returnColumnName = "IssueID"; } return returnColumnName; } set { SetValue("ReturnColumnName", value); } } /// /// Gets or sets the enabled state of the control. /// public override bool Enabled { get { return base.Enabled; } set { EnsureChildControls(); base.Enabled = value; usNewsletters.Enabled = value; usIssues.Enabled = value; } } /// /// Gets value display name. /// public override string ValueDisplayName { get { return usIssues.ValueDisplayName; } } /// /// Gets or sets field value. /// public override object Value { get { if (FieldInfo.DataType == CMS.FormEngine.FormFieldDataTypeEnum.GUID) { return usIssues.Value; } return (ValidationHelper.GetInteger(usIssues.Value, 0) == 0? null : usIssues.Value); } set { mValue = ValidationHelper.GetInteger(value, 0); } } #endregion #region "Methods" protected override void CreateChildControls() { if (usNewsletters == null) { pnlUpdate.LoadContainer(); } base.CreateChildControls(); if (!StopProcessing) { ReloadData(); } } /// /// Reloads dropdown lists. /// protected void ReloadData() { usNewsletters.WhereCondition = "NewsletterSiteID = " + CMSContext.CurrentSiteID; usNewsletters.ButtonRemoveSelected.CssClass = "XLongButton"; usNewsletters.ButtonAddItems.CssClass = "XLongButton"; usNewsletters.ReturnColumnName = "NewsletterID"; usNewsletters.DropDownSingleSelect.SelectedIndexChanged += new EventHandler(DropDownSingleSelect_SelectedIndexChanged); usNewsletters.DropDownSingleSelect.AutoPostBack = true; usIssues.WhereCondition = GetIssueWhereCondition(usNewsletters.Value);; usIssues.ButtonRemoveSelected.CssClass = "XLongButton"; usIssues.ButtonAddItems.CssClass = "XLongButton"; usIssues.ReturnColumnName = ReturnColumnName; // Initialize both dropdown lists according to incoming issue ID if (!RequestHelper.IsPostBack()) { if (mValue > 0) { // Retrieve newsletter ID from issue info IssueInfo issue = IssueInfoProvider.GetIssueInfo(mValue); int issueNewsletterID = 0; if (issue != null) { issueNewsletterID = issue.IssueNewsletterID; } usNewsletters.Value = issueNewsletterID; usIssues.WhereCondition = GetIssueWhereCondition(issueNewsletterID);; usIssues.Reload(true); usIssues.DropDownSingleSelect.SelectedValue = mValue.ToString(); usIssues.Value = mValue; } } } protected void DropDownSingleSelect_SelectedIndexChanged(object sender, EventArgs e) { // Reload issues dropdown list usIssues.WhereCondition = GetIssueWhereCondition(usNewsletters.Value); usIssues.Reload(true); mValue = 0; } /// /// Returns WHERE condition for issue dropdown list /// /// Newsletter ID private string GetIssueWhereCondition(object value) { string where = "IssueNewsletterID=" + ValidationHelper.GetInteger(value, 0); // Filter variants if (!ShowVariants) { where = SqlHelperClass.AddWhereCondition(where, "(IssueVariantOfIssueID <= 0 OR IssueVariantOfIssueID IS NULL)"); } return where; } #endregion }