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 }