using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CMS.EmailEngine;
using CMS.ExtendedControls.ActionsConfig;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.UIControls;
public partial class CMSModules_EmailQueue_MassEmails_Recipients : CMSModalSiteManagerPage
{
#region "Protected variables"
protected int emailId = 0;
protected bool isArchive = false;
#endregion
#region "Page events"
protected void Page_Load(object sender, EventArgs e)
{
emailId = QueryHelper.GetInteger("emailid", 0);
isArchive = QueryHelper.GetBoolean("archive", false);
gridElem.WhereCondition = "EmailID=" + emailId.ToString();
gridElem.OnExternalDataBound += gridElem_OnExternalDataBound;
gridElem.OnBeforeDataReload += gridElem_OnBeforeDataReload;
gridElem.OnAction += gridElem_OnAction;
gridElem.Pager.ShowPageSize = false;
gridElem.Pager.DefaultPageSize = 15;
CurrentMaster.Title.TitleText = GetString("emailqueue.sentdetails.title");
CurrentMaster.Title.TitleImage = GetImageUrl("Objects/CMS_User/massemail.png");
// Header action initialization
HeaderActions.AddAction(new HeaderAction()
{
Text = GetString("emailqueue.queue.deleteselected"),
ImageUrl = GetImageUrl("CMSModules/CMS_EmailQueue/deleteselected.png"),
OnClientClick = "if (!confirm(" + ScriptHelper.GetString(GetString("EmailQueue.DeleteSelectedRecipientConfirmation")) + ")) return false;",
CommandName = "delete"
});
HeaderActions.ActionPerformed += HeaderActions_ActionPerformed;
}
///
/// Remove selected recipients from mass e-mail.
///
protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
{
if (e.CommandName.EqualsCSafe("delete", true))
{
// Get list of selected users
List list = gridElem.SelectedItems;
if (list.Count > 0)
{
foreach (string userId in list)
{
// Remove specific recipient
EmailUserInfoProvider.DeleteEmailUserInfo(emailId, ValidationHelper.GetInteger(userId, 0));
}
gridElem.ResetSelection();
gridElem.Pager.UniPager.CurrentPage = 1;
gridElem.ReloadData();
}
}
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
// Enable header action and show grid if the grid is not empty
HeaderAction action = HeaderActions.ActionsList[0];
if (action != null)
{
action.Enabled = gridElem.Visible = gridElem.GridView.Rows.Count > 0;
}
}
#endregion
#region "Grid events"
protected void gridElem_OnBeforeDataReload()
{
// Hide status and last result columns in archive
gridElem.NamedColumns["result"].Visible = gridElem.NamedColumns["status"].Visible = !isArchive;
}
private object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
{
switch (sourceName.ToLowerCSafe())
{
case "userid":
// Get user friendly name instead of id
UserInfo ui = UserInfoProvider.GetUserInfo(ValidationHelper.GetInteger(parameter, 0));
if (ui != null)
{
return HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(ui.UserName) + " (" + ui.Email + ")");
}
else
{
return GetString("general.na");
}
case "result":
return TextHelper.LimitLength(parameter.ToString(), 50);
case "resulttooltip":
return HTMLHelper.HTMLEncodeLineBreaks(parameter.ToString());
case "status":
return GetEmailStatus(parameter);
}
return null;
}
private void gridElem_OnAction(string actionName, object actionArgument)
{
switch (actionName.ToLowerCSafe())
{
case "delete":
int userId = ValidationHelper.GetInteger(actionArgument, 0);
if (userId > 0)
{
EmailUserInfoProvider.DeleteEmailUserInfo(emailId, userId);
}
break;
}
}
///
/// Gets the e-mail status.
///
/// The parameter
/// E-mail status
private string GetEmailStatus(object parameter)
{
switch ((EmailStatusEnum)parameter)
{
case EmailStatusEnum.Created:
return GetString("emailstatus.created");
case EmailStatusEnum.Waiting:
return GetString("emailstatus.waiting");
case EmailStatusEnum.Sending:
return GetString("emailstatus.sending");
case EmailStatusEnum.Archived:
return GetString("general.archived");
default:
return string.Empty;
}
}
#endregion
}