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.GlobalHelper;
using CMS.MessageBoard;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.WebAnalytics;
public partial class CMSModules_MessageBoards_Controls_Boards_BoardSubscriptions : CMSAdminListControl
{
// Current board ID
private int mBoardId = 0;
private BoardInfo mBoard = null;
private int mGroupId = 0;
private bool mChangeMaster = false;
#region "Public properties"
///
/// ID of the current message board.
///
public int BoardID
{
get
{
if (mBoard != null)
{
return mBoard.BoardID;
}
return mBoardId;
}
set
{
mBoardId = value;
mBoard = null;
}
}
///
/// Current message board info object.
///
public BoardInfo Board
{
get
{
return mBoard ?? (mBoard = BoardInfoProvider.GetBoardInfo(BoardID));
}
set
{
mBoard = value;
mBoardId = 0;
}
}
///
/// ID of the current group.
///
public int GroupID
{
get
{
return mGroupId;
}
set
{
mGroupId = value;
}
}
///
/// Gets or sets to change master according to tab level.
///
public bool ChangeMaster
{
get
{
return mChangeMaster;
}
set
{
mChangeMaster = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
// Initialize controls
SetupControl();
}
protected void Page_PreRender(object sender, EventArgs e)
{
// If data grid
if (boardSubscriptions.GridView.Rows.Count <= 0)
{
pnlSendConfirmationEmail.Visible = false;
}
}
///
/// Reloads the control content.
///
public override void ReloadData()
{
boardSubscriptions.ReloadData();
}
#region "Private methods"
///
/// Initializes controls on the page.
///
private void SetupControl()
{
boardSubscriptions.OnAction += new OnActionEventHandler(boardSubscriptions_OnAction);
boardSubscriptions.OnExternalDataBound += new OnExternalDataBoundEventHandler(boardSubscriptions_OnExternalDataBound);
boardSubscriptions.IsLiveSite = IsLiveSite;
boardSubscriptions.ZeroRowsText = GetString("general.nodatafound");
// Get current board ID
if (BoardID > 0)
{
boardSubscriptions.WhereCondition = "SubscriptionBoardID = " + BoardID;
boardSubscriptions.Visible = true;
}
else
{
boardSubscriptions.Visible = false;
}
}
#endregion
#region "UniGrid events handling"
protected object boardSubscriptions_OnExternalDataBound(object sender, string sourceName, object parameter)
{
// If parameter for binding supplied
switch (sourceName.ToLowerCSafe())
{
case "formattedusername":
string userName = ValidationHelper.GetString(parameter, null);
if (userName == null)
{
return "-";
}
else
{
return HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(userName, IsLiveSite));
}
case "approved":
return UniGridFunctions.ColoredSpanYesNo(parameter, true);
case "approve":
ImageButton button = ((ImageButton)sender);
if (button != null)
{
bool isApproved = ValidationHelper.GetBoolean(((DataRowView)((GridViewRow)parameter).DataItem).Row["SubscriptionApproved"], true);
if (isApproved)
{
button.Visible = false;
}
}
break;
}
return HTMLHelper.HTMLEncode(Convert.ToString(parameter));
}
protected void boardSubscriptions_OnAction(string actionName, object actionArgument)
{
BoardSubscriptionInfo bsi = null;
// Get currently processed subscription ID
int subscriptionId = ValidationHelper.GetInteger(actionArgument, 0);
if (subscriptionId > 0)
{
switch (actionName.ToLowerCSafe())
{
case "delete":
if (!CheckPermissions("cms.messageboards", PERMISSION_MODIFY))
{
return;
}
// Get subscription according current ID
bsi = BoardSubscriptionInfoProvider.GetBoardSubscriptionInfo(subscriptionId);
if (bsi != null)
{
if (chkSendConfirmationEmail.Checked && bsi.SubscriptionApproved)
{
BoardSubscriptionInfoProvider.SendConfirmationEmail(bsi, false);
}
BoardSubscriptionInfoProvider.DeleteBoardSubscriptionInfo(bsi);
}
break;
case "approve":
if (!CheckPermissions("cms.messageboards", PERMISSION_MODIFY))
{
return;
}
// Approve ForumSubscriptionInfo object
bsi = BoardSubscriptionInfoProvider.GetBoardSubscriptionInfo(subscriptionId);
if ((bsi != null) && !bsi.SubscriptionApproved)
{
bsi.SubscriptionApproved = true;
BoardSubscriptionInfoProvider.SetBoardSubscriptionInfo(bsi);
if (chkSendConfirmationEmail.Checked)
{
BoardSubscriptionInfoProvider.SendConfirmationEmail(bsi, true);
}
}
break;
default:
break;
}
RaiseOnAction(actionName, actionArgument);
}
}
#endregion
}