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.ExtendedControls;
public partial class CMSModules_MessageBoards_Controls_LiveControls_Subscriptions : CMSAdminItemsControl
{
#region "Selected control enumeration"
private enum SelectedControlEnum
{
Listing,
Edit
};
#endregion
#region "Private fields"
private int mGroupID = 0;
private const string breadCrumbsSeparator = " ";
#endregion
#region "Private properties"
///
/// Returns currently selected control.
///
private SelectedControlEnum SelectedControl
{
get
{
if (plcEditSubscriptions.Visible)
{
return SelectedControlEnum.Edit;
}
else
{
return SelectedControlEnum.Listing;
}
}
set
{
switch (value)
{
case SelectedControlEnum.Listing:
boardSubscriptionList.StopProcessing = false;
boardSubscriptionEdit.StopProcessing = true;
plcEditSubscriptions.Visible = false;
plcSubscriptionList.Visible = true;
break;
case SelectedControlEnum.Edit:
boardSubscriptionList.StopProcessing = true;
boardSubscriptionEdit.StopProcessing = false;
plcEditSubscriptions.Visible = true;
plcSubscriptionList.Visible = false;
break;
}
}
}
///
/// Current subscription ID for internal use.
///
private int SubscriptionID
{
get
{
return ValidationHelper.GetInteger(ViewState["SubscriptionID"], 0);
}
}
#endregion
#region "Public properties"
///
/// Current board ID.
///
public int BoardID
{
get
{
return boardSubscriptionEdit.BoardID;
}
set
{
boardSubscriptionEdit.BoardID = value;
boardSubscriptionList.BoardID = value;
}
}
///
/// Current group ID.
///
public int GroupID
{
get
{
if (mGroupID == 0)
{
mGroupID = ValidationHelper.GetInteger(GetValue("GroupID"), 0);
}
if (mGroupID == 0)
{
mGroupID = QueryHelper.GetInteger("groupid", 0);
}
return mGroupID;
}
set
{
mGroupID = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
// If control should be hidden save view state memory
if (!Visible)
{
EnableViewState = false;
}
// Initializes the controls
SetupControls();
// Reload data if necessary
if (!URLHelper.IsPostback() && !IsLiveSite)
{
ReloadData();
}
}
///
/// Initializes all the nested controls.
///
private void SetupControls()
{
boardSubscriptionEdit.OnCheckPermissions += new CheckPermissionsEventHandler(boardSubscriptionEdit_OnCheckPermissions);
boardSubscriptionList.OnCheckPermissions += new CheckPermissionsEventHandler(boardSubscriptionList_OnCheckPermissions);
boardSubscriptionList.IsLiveSite = IsLiveSite;
newSubscription.IsLiveSite = IsLiveSite;
boardSubscriptionList.OnAction += new CommandEventHandler(boardSubscriptionList_OnAction);
boardSubscriptionEdit.GroupID = GroupID;
boardSubscriptionEdit.SubscriptionID = SubscriptionID;
boardSubscriptionEdit.OnSaved += new EventHandler(boardSubscriptionEdit_OnSaved);
lnkEditSubscriptionBack.Text = GetString("Group_General.Boards.Boards.BackToSubscriptions");
lnkEditSubscriptionBack.Click += new EventHandler(lnkEditSubscriptionBack_Click);
// New subscription link
string[,] actions = new string[1,7];
actions[0, 0] = HeaderActions.TYPE_LINKBUTTON;
actions[0, 1] = GetString("Group_General.Boards.Boards.NewSubscription");
actions[0, 5] = GetImageUrl("CMSModules/CMS_MessageBoards/newsubscription.png");
actions[0, 6] = "newsubscription";
newSubscription.Actions = actions;
newSubscription.ActionPerformed += new CommandEventHandler(newSubscription_ActionPerformed);
InitBreadCrumbs();
}
///
/// Displays specified control.
///
/// Control to be displayed
/// If True, ReloadData on child control is called
private void DisplayControl(SelectedControlEnum selectedControl, bool reload)
{
// Set correct tab
SelectedControl = selectedControl;
// Enable currently selected element
switch (selectedControl)
{
case SelectedControlEnum.Listing:
if (reload)
{
boardSubscriptionList.BoardID = BoardID;
boardSubscriptionList.ReloadData();
}
break;
case SelectedControlEnum.Edit:
if (reload)
{
boardSubscriptionEdit.GroupID = GroupID;
boardSubscriptionEdit.SubscriptionID = SubscriptionID;
boardSubscriptionEdit.ReloadData();
}
break;
}
}
///
/// Reloads the contol data.
///
public override void ReloadData()
{
base.ReloadData();
SetupControls();
DisplayControl(SelectedControlEnum.Listing, true);
newSubscription.ReloadData();
}
private void InitBreadCrumbs()
{
// Initialize subscription breadcrumbs
if (SubscriptionID > 0)
{
BoardSubscriptionInfo subscription = BoardSubscriptionInfoProvider.GetBoardSubscriptionInfo(SubscriptionID);
if (subscription != null)
{
lblEditSubscriptionBack.Text = breadCrumbsSeparator + HTMLHelper.HTMLEncode(subscription.SubscriptionEmail);
}
}
else
{
lblEditSubscriptionBack.Text = breadCrumbsSeparator + GetString("Group_General.Boards.Boards.NewSubscription");
}
}
#region "Event handlers"
protected void newSubscription_ActionPerformed(object sender, CommandEventArgs e)
{
ViewState.Add("SubscriptionID", 0);
DisplayControl(SelectedControlEnum.Edit, true);
InitBreadCrumbs();
}
protected void boardSubscriptionList_OnAction(object sender, CommandEventArgs e)
{
// Check if command is edit
if ((e.CommandName.ToLowerCSafe() == "edit") && boardSubscriptionList.Visible)
{
ViewState.Add("SubscriptionID", e.CommandArgument);
DisplayControl(SelectedControlEnum.Edit, true);
InitBreadCrumbs();
}
}
protected void boardSubscriptionEdit_OnSaved(object sender, EventArgs e)
{
ViewState.Add("SubscriptionID", boardSubscriptionEdit.SubscriptionID);
DisplayControl(SelectedControlEnum.Edit, true);
InitBreadCrumbs();
}
protected void lnkEditSubscriptionBack_Click(object sender, EventArgs e)
{
DisplayControl(SelectedControlEnum.Listing, true);
}
#endregion
#region "Security event handlers"
protected void boardSubscriptionList_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
// Raise event
RaiseOnCheckPermissions(permissionType, sender);
}
protected void boardSubscriptionEdit_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
// Raise event
RaiseOnCheckPermissions(permissionType, sender);
}
#endregion
}