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.CMSHelper;
using CMS.GlobalHelper;
using CMS.MessageBoard;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.ExtendedControls;
public partial class CMSModules_MessageBoards_Controls_Boards_BoardModerators : CMSAdminEditControl
{
#region "Variables"
protected int mBoardID = 0;
protected BoardInfo mBoard = null;
private string currentValues = String.Empty;
private bool canModify = false;
private bool mShouldReloadData = false;
#endregion
#region "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;
}
}
///
/// 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;
}
}
#endregion
#region "Private properties"
///
/// Indicates whether the data should be reloaded on PreRender.
///
private bool ShouldReloadData
{
get
{
return mShouldReloadData;
}
set
{
mShouldReloadData = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
// Register script for pendingCallbacks repair
ScriptHelper.FixPendingCallbacks(Page);
// Initializes the controls
SetupControls();
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
// Reload data if necessary
if (ShouldReloadData || (!URLHelper.IsPostback() && !IsLiveSite))
{
currentValues = "";
userSelector.CurrentValues = GetModerators();
ReloadData();
}
if (Board != null)
{
userSelector.Enabled = Board.BoardModerated && canModify;
chkBoardModerated.Enabled = canModify;
}
}
private void SetupControls()
{
// Get resource strings
lblModerators.Text = GetString("board.moderators.title") + ResHelper.Colon;
chkBoardModerated.Text = GetString("board.moderators.ismoderated");
userSelector.CurrentSelector.OnSelectionChanged += new EventHandler(CurrentSelector_OnSelectionChanged);
if (BoardID > 0)
{
EditedObject = Board;
}
if (Board != null)
{
// Check permissions
if (Board.BoardGroupID > 0)
{
canModify = CMSContext.CurrentUser.IsAuthorizedPerResource("cms.groups", CMSAdminControl.PERMISSION_MANAGE);
}
else
{
canModify = CMSContext.CurrentUser.IsAuthorizedPerResource("cms.messageboards", CMSAdminControl.PERMISSION_MODIFY);
}
userSelector.BoardID = BoardID;
userSelector.GroupID = Board.BoardGroupID;
userSelector.CurrentSelector.SelectionMode = SelectionModeEnum.Multiple;
userSelector.ShowSiteFilter = false;
userSelector.SiteID = CMSContext.CurrentSiteID;
userSelector.CurrentValues = GetModerators();
userSelector.IsLiveSite = IsLiveSite;
}
}
///
/// Reloads form data.
///
public override void ReloadData()
{
ReloadData(true);
}
///
/// Reloads form data.
///
public override void ReloadData(bool forceReload)
{
base.ReloadData(forceReload);
// Get board info
if (Board != null)
{
chkBoardModerated.Checked = Board.BoardModerated;
if (forceReload)
{
if (!String.IsNullOrEmpty(currentValues))
{
string where = SqlHelperClass.AddWhereCondition(userSelector.CurrentSelector.WhereCondition, "UserID IN (" + currentValues.Replace(';', ',') + ")", "OR");
userSelector.CurrentSelector.WhereCondition = where;
}
userSelector.CurrentSelector.Value = GetModerators();
userSelector.ReloadData();
}
}
}
///
/// Returns ID of users who are moderators to this board.
///
protected string GetModerators()
{
if (String.IsNullOrEmpty(currentValues))
{
// Get all message board moderators
DataSet ds = BoardModeratorInfoProvider.GetBoardModerators(BoardID, "UserID", null, null, 0);
if (!DataHelper.DataSourceIsEmpty(ds))
{
currentValues = TextHelper.Join(";", SystemDataHelper.GetStringValues(ds.Tables[0], "UserID"));
}
}
return currentValues;
}
///
/// Board moderated checkbox change.
///
protected void chkBoardModerated_CheckedChanged(object sender, EventArgs e)
{
if (!canModify)
{
return;
}
if (Board != null)
{
Board.BoardModerated = chkBoardModerated.Checked;
BoardInfoProvider.SetBoardInfo(Board);
ShowChangesSaved();
ShouldReloadData = true;
}
}
private void CurrentSelector_OnSelectionChanged(object sender, EventArgs e)
{
ShouldReloadData = true;
}
}