using System;
using System.Collections.Generic;
using System.Data;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.Newsletter;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.UIControls;
using CMS.ExtendedControls;
// Title
[Title("Objects/Newsletter_EmailTemplate/object.png", "newsletters.templates", "CMS_Newsletter_Templates", HelpName="helpTopic")]
public partial class CMSModules_Newsletters_Tools_Templates_NewsletterTemplate_List : CMSNewsletterTemplatesPage
{
protected void Page_Load(object sender, EventArgs e)
{
// Add subscriber link
string[,] actions = new string[1,6];
actions[0, 0] = HeaderActions.TYPE_HYPERLINK;
actions[0, 1] = GetString("NewsletterTemplate_List.NewItemCaption");
actions[0, 2] = null;
actions[0, 3] = ResolveUrl("NewsletterTemplate_New.aspx");
actions[0, 4] = null;
actions[0, 5] = GetImageUrl("Objects/Newsletter_EmailTemplate/add.png");
CurrentMaster.HeaderActions.Actions = actions;
UniGrid.OnAction += uniGrid_OnAction;
UniGrid.WhereCondition = "(TemplateSiteID = " + CMSContext.CurrentSiteID + ")";
UniGrid.OnExternalDataBound += UniGrid_OnExternalDataBound;
}
protected object UniGrid_OnExternalDataBound(object sender, string sourceName, object parameter)
{
switch (sourceName.ToLowerCSafe())
{
// Initialize template type column
case "templatetype":
switch (parameter.ToString().ToLowerCSafe())
{
case "u":
return GetString("NewsletterTemplate_List.Unsubscription");
case "s":
return GetString("NewsletterTemplate_List.Subscription");
case "d":
return GetString("NewsletterTemplate_List.OptIn");
default:
return GetString("NewsletterTemplate_List.Issue");
}
}
return parameter;
}
///
/// Increment counter at the end of string.
///
/// String
/// Left parathenses
/// Right parathenses
private string Increment(string s, string lpar, string rpar)
{
int i = 1;
s = s.Trim();
if ((rpar == String.Empty) || s.EndsWithCSafe(rpar))
{
int leftpar = s.LastIndexOfCSafe(lpar);
if (lpar == rpar)
{
leftpar = s.LastIndexOfCSafe(lpar, leftpar - 1);
}
if (leftpar >= 0)
{
i = ValidationHelper.GetSafeInteger(s.Substring(leftpar + lpar.Length, s.Length - leftpar - lpar.Length - rpar.Length), 0);
// Remove parathenses only if parathenses found
if (i > 0)
{
s = s.Remove(leftpar);
}
i++;
}
}
s += lpar + i + rpar;
return s;
}
///
/// Handles the UniGrid's OnAction event.
///
/// Name of item (button) that throws event
/// ID (value of Primary key) of corresponding data row
protected void uniGrid_OnAction(string actionName, object actionArgument)
{
string templateId = actionArgument.ToString();
switch (actionName.ToLowerCSafe())
{
// Edit the template
case "edit":
URLHelper.Redirect("NewsletterTemplate_Edit.aspx?templateid=" + templateId);
break;
// Delete the template
case "delete":
// Check 'Manage templates' permission
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "managetemplates"))
{
RedirectToCMSDeskAccessDenied("cms.newsletter", "managetemplates");
}
// Check if the template is used in a newsletter
string where = string.Format("(NewsletterTemplateID={0}) OR (NewsletterSubscriptionTemplateID={0}) OR (NewsletterUnsubscriptionTemplateID={0}) OR (NewsletterOptInTemplateID={0})", templateId);
DataSet newsByEmailtempl = NewsletterInfoProvider.GetNewsletters(where, null, 1, "NewsletterID");
if (DataHelper.DataSourceIsEmpty(newsByEmailtempl))
{
// Check if the template is used in an issue
DataSet newsletterIssues = IssueInfoProvider.GetIssues("IssueTemplateID = " + templateId, null, 1, "IssueID");
if (DataHelper.DataSourceIsEmpty(newsletterIssues))
{
// Delete EmailTemplate object from database
EmailTemplateInfoProvider.DeleteEmailTemplateInfo(ValidationHelper.GetInteger(templateId, 0));
}
else
{
ShowError(GetString("NewsletterTemplate_List.TemplateInUseByNewsletterIssue"));
}
}
else
{
ShowError(GetString("NewsletterTemplate_List.TemplateInUseByNewsletter"));
}
break;
}
}
}