using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.Newsletter; using CMS.SettingsProvider; using CMS.UIControls; public partial class CMSModules_Newsletters_Controls_TemplateFlatSelector : CMSAdminControl { #region "Variables" private int mNewsletterId = 0; private int mSiteId = 0; private string mTemplateType = EmailTemplateType.Issue; #endregion #region "Flat selector properties" /// /// Gets or sets the newsletter id. Only templates of this newsletter will be diplayed if set. /// public int NewsletterId { get { return mNewsletterId; } set { mNewsletterId = value; } } /// /// Gets or sets selected item (TemplateID) in flat selector. /// public string SelectedItem { get { return flatElem.SelectedItem; } set { flatElem.SelectedItem = value; } } /// /// Gets or sets the site id. Only templates of this site will be diplayed if set. /// It is not required if NewsletterId property is set. /// public int SiteId { get { return mSiteId; } set { mSiteId = value; } } /// /// Indicates if the control should perform the operations. /// public override bool StopProcessing { get { return base.StopProcessing; } set { base.StopProcessing = value; flatElem.StopProcessing = value; EnableViewState = !value; } } /// /// Gets or sets the template type (available in EmailTemplateType class). Issue templates are displayed if not set. /// public string TemplateType { get { return mTemplateType; } set { switch (value) { case EmailTemplateType.Issue: case EmailTemplateType.Subscription: case EmailTemplateType.Unsubscription: case EmailTemplateType.DoubleOptIn: mTemplateType = value; break; } } } /// /// Returns inner instance of UniFlatSelector control. /// public UniFlatSelector UniFlatSelector { get { return flatElem; } } /// /// Gets or sets name of javascript function which is used for passing selected item out of selector. /// public string SelectFunction { get { return flatElem.SelectFunction; } set { flatElem.SelectFunction = value; } } #endregion #region "Page events" protected void Page_Load(object sender, EventArgs e) { if (StopProcessing) { return; } // Register jquery ScriptHelper.RegisterJQuery(Page); // Setup flat selector flatElem.QueryName = "newsletter.emailtemplate.selectall"; flatElem.ValueColumn = "TemplateID"; flatElem.SearchLabelResourceString = "newslettertemplate.templatename"; flatElem.SearchColumn = "TemplateDisplayName"; flatElem.SelectedColumns = "TemplateID, TemplateDisplayName, TemplateThumbnailGUID"; flatElem.PageSize = 15; flatElem.OrderBy = "TemplateDisplayName"; flatElem.NotAvailableImageUrl = GetImageUrl("Objects/Newsletter_EmailTemplate/notavailable.png"); flatElem.NoRecordsMessage = "newslettertemplate.norecords"; flatElem.NoRecordsSearchMessage = "newslettertemplate.norecordsfound"; // Select templates of specified type flatElem.WhereCondition = "TemplateType='" + TemplateType + "'"; if (NewsletterId > 0) { // Select templates that are in default newsletter configuration, assigned to the newsletter or available to all newsletters on specified site flatElem.WhereCondition = SqlHelperClass.AddWhereCondition(flatElem.WhereCondition, String.Format("TemplateID IN (SELECT NewsletterTemplateID FROM Newsletter_Newsletter WHERE NewsletterID={0})" + " OR TemplateID IN (SELECT TemplateID FROM Newsletter_EmailTemplateNewsletter WHERE NewsletterID={0})", NewsletterId)); } if (SiteId > 0) { // Select templates from specified site flatElem.WhereCondition = SqlHelperClass.AddWhereCondition(flatElem.WhereCondition, "TemplateSiteID=" + CMSContext.CurrentSiteID); } flatElem.OnItemSelected += new UniFlatSelector.ItemSelectedEventHandler(flatElem_OnItemSelected); } /// /// On PreRender. /// protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (StopProcessing) { return; } // Description area litCategory.Text = ShowInDescriptionArea(SelectedItem); } #endregion #region "Event handling" /// /// Updates description after item is selected in flat selector. /// protected string flatElem_OnItemSelected(string selectedValue) { return ShowInDescriptionArea(selectedValue); } #endregion #region "Methods" /// /// Reloads data. /// public override void ReloadData() { flatElem.ReloadData(); pnlUpdate.Update(); } /// /// Add a reload script to the page which will update the page size (items count) according to the window size. /// /// Indicates whether to invoke resizing of the page before calculating the items count public void RegisterRefreshPageSizeScript(bool forceResize) { flatElem.RegisterRefreshPageSizeScript(forceResize); } /// /// Generates HTML text to be used in description area. /// ///Selected item for which generate description private string ShowInDescriptionArea(string selectedValue) { string name = String.Empty; string description = String.Empty; if (!String.IsNullOrEmpty(selectedValue)) { int templateId = ValidationHelper.GetInteger(selectedValue, 0); DataSet ds = EmailTemplateInfoProvider.GetEmailTemplates("TemplateID=" + templateId, null, 1, "TemplateDisplayName, TemplateSubject"); if (!DataHelper.DataSourceIsEmpty(ds)) { name = ResHelper.LocalizeString(ValidationHelper.GetString(ds.Tables[0].Rows[0]["TemplateDisplayName"], string.Empty)); description = ValidationHelper.GetString(ds.Tables[0].Rows[0]["TemplateSubject"], string.Empty); } } else { name = GetString("newslettertemplate.selectitem"); } string text = "
" + HTMLHelper.HTMLEncode(name) + "
"; if (description != null) { text += "
" + HTMLHelper.HTMLEncode(description) + "
"; } return text; } #endregion }