using System;
using System.Data;
using System.Web.UI.WebControls;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.Newsletter;
using CMS.CMSHelper;
public partial class CMSModules_Newsletters_Tools_Templates_Tab_Newsletters : CMSNewsletterTemplatesPage
{
#region "Variables"
private EmailTemplateInfo emailTemplateInfo;
private DataSet templateNewsletters;
private int templateId;
private string currentValues;
#endregion
#region "Page events"
protected void Page_Load(object sender, EventArgs e)
{
templateId = QueryHelper.GetInteger("templateid", 0);
if (templateId <= 0)
{
pnlAvailability.Visible = false;
return;
}
EditedObject = emailTemplateInfo = EmailTemplateInfoProvider.GetEmailTemplateInfo(templateId);
// Initialize newsletter selector
usNewsletters.WhereCondition = String.Format("NewsletterSiteID={0} AND NewsletterType='{1}' AND NewsletterTemplateID<>{2}", CMSContext.CurrentSiteID,
SqlHelperClass.GetSafeQueryString(NewsletterType.TemplateBased), emailTemplateInfo.TemplateID);
if (!RequestHelper.IsPostBack())
{
LoadSiteBindings();
}
usNewsletters.OnSelectionChanged += usSites_OnSelectionChanged;
}
#endregion
#region "Control event handlers"
///
/// Uniselector event handler.
///
protected void usSites_OnSelectionChanged(object sender, EventArgs e)
{
SaveSiteBindings();
}
#endregion
#region "Private methods"
///
/// Load control.
///
private void LoadSiteBindings()
{
GetCurrentNewsletters();
usNewsletters.Value = currentValues;
usNewsletters.Reload(true);
}
///
/// Loads current newsletters from DB.
///
private void GetCurrentNewsletters()
{
string where = string.Format("TemplateID = {0}", emailTemplateInfo.TemplateID);
templateNewsletters = EmailTemplateNewsletterInfoProvider.GetEmailTemplatesNewsletters(where, "NewsletterID");
if (!DataHelper.DataSourceIsEmpty(templateNewsletters))
{
currentValues = TextHelper.Join(";", SystemDataHelper.GetStringValues(templateNewsletters.Tables[0], "NewsletterID"));
}
else
{
currentValues = string.Empty;
}
}
///
/// Save changes.
///
private void SaveSiteBindings()
{
// Check 'Manage templates' permission
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "managetemplates"))
{
RedirectToCMSDeskAccessDenied("cms.newsletter", "managetemplates");
}
if (RequestHelper.IsPostBack())
{
GetCurrentNewsletters();
}
string newValues = ValidationHelper.GetString(usNewsletters.Value, null);
RemoveOldRecords(newValues, currentValues);
AddNewRecords(newValues, currentValues);
currentValues = newValues;
}
///
/// Remove newsletters from template.
///
private void RemoveOldRecords(string newValues, string currentValues)
{
string items = DataHelper.GetNewItemsInList(newValues, currentValues);
if (!String.IsNullOrEmpty(items))
{
string[] modifiedItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
if (modifiedItems != null)
{
foreach (string item in modifiedItems)
{
EmailTemplateNewsletterInfoProvider.RemoveNewsletterFromTemplate(templateId, ValidationHelper.GetInteger(item, 0));
}
}
}
}
///
/// Add newsletters to template.
///
private void AddNewRecords(string newValues, string currentValues)
{
string items = DataHelper.GetNewItemsInList(currentValues, newValues);
if (!String.IsNullOrEmpty(items))
{
string[] modifiedItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
if (modifiedItems != null)
{
foreach (string item in modifiedItems)
{
EmailTemplateNewsletterInfoProvider.AddNewsletterToTemplate(templateId, ValidationHelper.GetInteger(item, 0));
}
}
}
}
#endregion
}