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
}