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.SettingsProvider; using CMS.SiteProvider; using CMS.UIControls; using CMS.EmailEngine; public partial class CMSModules_EmailTemplates_FormControls_EmailTemplateSelector : FormEngineUserControl { #region "Private variables" private int mSiteId = 0; private string mReturnColumnName = "EmailTemplateName"; private string mNewDialogUrl = "~/CMSModules/EmailTemplates/Pages/Edit.aspx"; private string mEditDialogUrl = "~/CMSModules/EmailTemplates/Pages/Frameset.aspx"; #endregion #region "Public properties" /// /// Gets or sets the enabled state of the control. /// public override bool Enabled { get { return base.Enabled; } set { EnsureChildControls(); base.Enabled = value; usTemplate.Enabled = value; } } /// /// Gets the current UniSelector instance. /// public UniSelector CurrentSelector { get { EnsureChildControls(); return usTemplate; } } /// /// Gets the current drop down control. /// public DropDownList CurrentDropDown { get { EnsureChildControls(); return usTemplate.DropDownSingleSelect; } } /// /// Gets or sets template name. /// public override object Value { get { EnsureChildControls(); return usTemplate.Value; } set { EnsureChildControls(); usTemplate.Value = value; } } /// /// Gets ClientID of the dropdownlist with stylesheets. /// public override string ValueElementID { get { EnsureChildControls(); return usTemplate.ClientID; } } /// /// Indicates if control is used on live site. /// public override bool IsLiveSite { get { return base.IsLiveSite; } set { base.IsLiveSite = value; usTemplate.IsLiveSite = value; } } /// /// E-mail template type. (null represents all types) /// public EmailTemplateMacros.EmailType? TemplateType { get { EmailTemplateMacros.EmailType? emailType = GetValue("TemplateType") as EmailTemplateMacros.EmailType?; if(emailType.HasValue) { return emailType.Value; } string val = ValidationHelper.GetString(GetValue("TemplateType"), null); if (val != null) { return EmailTemplateMacros.GetEmailTypeEnum(val); } return null; } set { SetValue("TemplateType", value); } } /// /// Gets or sets the site id. If set, only templates of the site are displayed. /// public int SiteId { get { if ((mSiteId == 0) && !String.IsNullOrEmpty(SiteName)) { string siteName = SiteName.ToLowerCSafe(); if (siteName == "##all##") { mSiteId = -1; } else if (siteName == "##currentsite##") { mSiteId = CMSContext.CurrentSiteID; } else { // Get site id from site name if sets. mSiteId = SiteInfoProvider.GetSiteID(siteName); } } return mSiteId; } set { mSiteId = value; } } /// /// Gets or sets the site name. If set, only templates of the site are displayed. /// public string SiteName { get { return ValidationHelper.GetString(GetValue("SiteName"), String.Empty); } set { SetValue("SiteName", value); } } /// /// Name of the column used for return value. /// public string ReturnColumnName { get { return mReturnColumnName; } set { mReturnColumnName = value; } } /// /// URL of creation dialog for uniselector. /// public string NewDialogUrl { get { return mNewDialogUrl; } set { mNewDialogUrl = value; } } /// /// URL of edit dialog for uniselector. /// public string EditDialogUrl { get { return mEditDialogUrl; } set { mEditDialogUrl = value; } } #endregion #region "Methods" /// /// Page load event. /// protected void Page_Load(object sender, EventArgs e) { usTemplate.WhereCondition = SqlHelperClass.AddWhereCondition(usTemplate.WhereCondition, (SiteId > 0) ? "EmailTemplateSiteID = " + SiteId : "EmailTemplateSiteID IS NULL"); // Filter type if (TemplateType.HasValue) { usTemplate.WhereCondition = SqlHelperClass.AddWhereCondition(usTemplate.WhereCondition, "EmailTemplateType = '" + SqlHelperClass.GetSafeQueryString(EmailTemplateMacros.GetEmailTypeString(TemplateType.Value)) + "'"); } // Edit button initialization if (CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.EmailTemplates", "Modify")) { string templateType = null; if (TemplateType != null) { templateType = "&templatetype=" + EmailTemplateMacros.GetEmailTypeString(TemplateType.Value); } if (!String.IsNullOrEmpty(EditDialogUrl)) { string url = EditDialogUrl + "?name=##ITEMID##&tabmode=1&editonlycode=1" + templateType; url = URLHelper.AddParameterToUrl(url, "hash", QueryHelper.GetHash("?editonlycode=1" + templateType)); usTemplate.EditItemPageUrl = url; } if (!String.IsNullOrEmpty(NewDialogUrl)) { string url = NewDialogUrl + "?editonlycode=1" + templateType; url = URLHelper.AddParameterToUrl(url, "hash", QueryHelper.GetHash("?editonlycode=1" + templateType)); usTemplate.NewItemPageUrl = url; } } usTemplate.ButtonClear.Visible = false; usTemplate.ReturnColumnName = ReturnColumnName; CheckRegularExpression = true; } /// /// Reloads the selector's data. /// /// Indicates whether data should be forcibly reloaded public void Reload(bool forceReload) { usTemplate.Reload(forceReload); } /// /// Creates child controls and loads update panel container if it is required. /// protected override void CreateChildControls() { // If selector is not defined load update panel container if (usTemplate == null) { pnlUpdate.LoadContainer(); } // Call base method base.CreateChildControls(); } #endregion }