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 System.Collections.Generic;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.MessageBoard;
using CMS.SettingsProvider;
using CMS.DocumentEngine;
using CMS.UIControls;
using CMS.WebAnalytics;
using CMS.PortalEngine;
using CMS.SiteProvider;
using CMS.ExtendedControls;
using TreeNode = CMS.DocumentEngine.TreeNode;
public partial class CMSModules_MessageBoards_Controls_Boards_BoardUserSubscriptions : CMSAdminControl
{
private int mSiteId = 0;
private int mUserId = 0;
private string mSiteName;
#region "Public properties"
///
/// Messages placeholder
///
public override MessagesPlaceHolder MessagesPlaceHolder
{
get
{
return plcMess;
}
}
///
/// Indicates if control is used on live site.
///
public override bool IsLiveSite
{
get
{
return base.IsLiveSite;
}
set
{
plcMess.IsLiveSite = value;
base.IsLiveSite = value;
}
}
///
/// Site ID.
///
public int SiteID
{
get
{
return mSiteId;
}
set
{
mSiteId = value;
}
}
///
/// User ID.
///
public int UserID
{
get
{
return mUserId;
}
set
{
mUserId = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (StopProcessing || !Visible)
{
EnableViewState = false;
boardSubscriptions.StopProcessing = true;
return;
}
// If control should be hidden save view state memory
if (!Visible)
{
EnableViewState = false;
}
// Initialize controls
SetupControls();
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (DataHelper.DataSourceIsEmpty(boardSubscriptions.GridView.DataSource))
{
lblMessage.Visible = false;
}
}
#region "Private methods"
///
/// Initializes controls on the page.
///
private void SetupControls()
{
if (UserID > 0)
{
boardSubscriptions.Visible = true;
if (CMSContext.CurrentUser.UserID == UserID)
{
boardSubscriptions.ZeroRowsText = GetString("boardsubscripitons.userhasnosubscriptions");
}
else
{
boardSubscriptions.ZeroRowsText = GetString("boardsubscripitons.NoDataUser");
}
// Setup UniGrid control
boardSubscriptions.IsLiveSite = IsLiveSite;
boardSubscriptions.Pager.DefaultPageSize = 10;
boardSubscriptions.OnAction += boardSubscriptions_OnAction;
boardSubscriptions.OnExternalDataBound += boardSubscriptions_OnExternalDataBound;
boardSubscriptions.OnDataReload += boardSubscriptions_OnDataReload;
boardSubscriptions.ShowActionsMenu = true;
BoardSubscriptionInfo bsi = new BoardSubscriptionInfo();
boardSubscriptions.AllColumns = SqlHelperClass.MergeColumns(SqlHelperClass.MergeColumns(bsi.ColumnNames), "BoardID, BoardDisplayName, BoardSiteID, NodeAliasPath, DocumentCulture, SubscriptionApproved");
mSiteName = SiteInfoProvider.GetSiteName(SiteID);
}
else
{
boardSubscriptions.Visible = false;
}
}
#endregion
#region "UniGrid events handling"
protected DataSet boardSubscriptions_OnDataReload(string completeWhere, string currentOrder, int currentTopN, string columns, int currentOffset, int currentPageSize, ref int totalRecords)
{
DataSet ds = BoardSubscriptionInfoProvider.GetSubscriptions(UserID, SiteID, currentTopN);
totalRecords = DataHelper.GetItemsCount(ds);
return ds;
}
///
/// On action event handling.
///
/// Name of the action.
/// Parameter for the action.
protected void boardSubscriptions_OnAction(string actionName, object actionArgument)
{
int boardSubscriptionId = ValidationHelper.GetInteger(actionArgument, 0);
switch (actionName.ToLowerCSafe())
{
case "delete":
if (RaiseOnCheckPermissions(PERMISSION_MANAGE, this))
{
if (StopProcessing)
{
return;
}
}
try
{
BoardSubscriptionInfoProvider.DeleteBoardSubscriptionInfo(boardSubscriptionId);
}
catch (Exception ex)
{
ShowError(ex.Message);
}
break;
case "approve":
if (RaiseOnCheckPermissions(PERMISSION_MANAGE, this))
{
if (StopProcessing)
{
return;
}
}
// Approve BoardSubscriptionInfo object
BoardSubscriptionInfo bsi = BoardSubscriptionInfoProvider.GetBoardSubscriptionInfo(boardSubscriptionId);
if ((bsi != null) && !bsi.SubscriptionApproved)
{
bsi.SubscriptionApproved = true;
BoardSubscriptionInfoProvider.SetBoardSubscriptionInfo(bsi);
// Send confirmation mail
BoardInfo bi = BoardInfoProvider.GetBoardInfo(bsi.SubscriptionBoardID);
if ((bi != null) && bi.BoardSendOptInConfirmation)
{
BoardSubscriptionInfoProvider.SendConfirmationEmail(bsi, true);
}
// Log activity
if (CMSContext.CurrentUser.UserID == UserID)
{
BoardSubscriptionInfoProvider.LogSubscriptionActivity(bsi, bi, PredefinedActivityType.SUBSCRIPTION_MESSAGE_BOARD, false);
}
}
break;
}
}
///
/// Handles the UniGrid's OnExternalDataBound event.
///
private object boardSubscriptions_OnExternalDataBound(object sender, string sourceName, object parameter)
{
switch (sourceName.ToLowerCSafe())
{
case "displayname":
DataRowView dr = (DataRowView)parameter;
string url = ResolveUrl(TreePathUtils.GetUrl(ValidationHelper.GetString(dr["NodeAliasPath"], ""), null, mSiteName));
string lang = ValidationHelper.GetString(dr["DocumentCulture"], "");
if (!String.IsNullOrEmpty(lang))
{
url += "?" + URLHelper.LanguageParameterName + "=" + lang;
}
return "" + HTMLHelper.HTMLEncode(ValidationHelper.GetString(dr["BoardDisplayName"], "")) + "";
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 parameter;
}
public override void SetValue(string propertyName, object value)
{
base.SetValue(propertyName, value);
if (propertyName != null)
{
switch (propertyName.ToLowerCSafe())
{
case "siteid":
SiteID = ValidationHelper.GetInteger(value, 0);
break;
case "userid":
UserID = ValidationHelper.GetInteger(value, 0);
break;
case "islivesite":
IsLiveSite = ValidationHelper.GetBoolean(value, true);
break;
}
}
}
#endregion
}