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
}