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.Forums;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.ExtendedControls;
public partial class CMSModules_Forums_Controls_LiveControls_Group : CMSAdminItemsControl
{
#region "Variables"
private int mGroupId = 0;
private Guid mCommunityGroupGUID = Guid.Empty;
private const string breadCrumbsSeparator = " ";
private bool displayControlPerformed = false;
private bool listVisible = false;
#endregion
#region "Public properties"
///
/// Gets or sets the Group ID.
///
public int GroupID
{
get
{
return mGroupId;
}
set
{
mGroupId = value;
}
}
///
/// Gets or sets the Group GUID.
///
public Guid CommunityGroupGUID
{
get
{
return mCommunityGroupGUID;
}
set
{
mCommunityGroupGUID = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Visible)
{
EnableViewState = false;
}
#region "Security"
forumList.OnCheckPermissions += new CheckPermissionsEventHandler(forumList_OnCheckPermissions);
forumEdit.OnCheckPermissions += new CheckPermissionsEventHandler(forumEdit_OnCheckPermissions);
forumNew.OnCheckPermissions += new CheckPermissionsEventHandler(forumNew_OnCheckPermissions);
groupEdit.OnCheckPermissions += new CheckPermissionsEventHandler(groupEdit_OnCheckPermissions);
#endregion
listVisible = plcForumList.Visible;
tabForums.Visible = true;
plcForumList.Visible = true;
forumList.Visible = true;
tabElem.TabControlIdPrefix = "group";
groupEdit.GroupID = mGroupId;
groupEdit.DisplayMode = DisplayMode;
forumNew.GroupID = mGroupId;
forumNew.CommunityGroupGUID = CommunityGroupGUID;
forumNew.DisplayMode = DisplayMode;
forumNew.DisplayMode = DisplayMode;
forumList.GroupID = mGroupId;
int forumId = ValidationHelper.GetInteger(ViewState["ForumID"], 0);
forumEdit.ForumID = forumId;
forumEdit.DisplayMode = DisplayMode;
forumList.OnAction += new CommandEventHandler(forumList_OnAction);
forumNew.OnSaved += new EventHandler(forumNew_OnSaved);
// New item link
string[,] actions = new string[1,7];
actions[0, 0] = HeaderActions.TYPE_LINKBUTTON;
actions[0, 1] = GetString("Forum_List.NewItemCaption");
actions[0, 5] = GetImageUrl("Objects/Forums_Forum/add.png");
actions[0, 6] = "newforum";
actionsElem.Actions = actions;
actionsElem.ActionPerformed += new CommandEventHandler(actionsElem_ActionPerformed);
InitializeTabs();
InitializeBreadcrumbs();
titleElemEdit.TitleText = GetString("forum_edit.headercaption");
titleElemEdit.TitleImage = GetImageUrl("Objects/Forums_Forum/object.png");
}
#region "Security handlers"
private void groupEdit_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
RaiseOnCheckPermissions(permissionType, sender);
}
private void forumNew_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
RaiseOnCheckPermissions(permissionType, sender);
}
private void forumEdit_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
RaiseOnCheckPermissions(permissionType, sender);
}
private void forumList_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
RaiseOnCheckPermissions(permissionType, sender);
}
#endregion
///
/// New forum saved handler.
///
protected void forumNew_OnSaved(object sender, EventArgs e)
{
plcForumEdit.Visible = true;
plcForumList.Visible = false;
tabNewForum.Visible = false;
tabForums.Visible = true;
int forumId = forumNew.ForumID;
ViewState["ForumID"] = forumId;
ForumInfo fi = ForumInfoProvider.GetForumInfo(forumId);
if (fi != null)
{
lblEditBack.Text = breadCrumbsSeparator + HTMLHelper.HTMLEncode(fi.ForumDisplayName);
}
forumEdit.ForumID = forumId;
forumEdit.ReloadData();
}
///
/// New forum click handler.
///
protected void actionsElem_ActionPerformed(object sender, CommandEventArgs e)
{
switch (e.CommandName.ToLowerCSafe())
{
case "newforum":
DisplayControl("new");
break;
}
}
///
/// Edit forum action.
///
protected void forumList_OnAction(object sender, CommandEventArgs e)
{
switch (e.CommandName.ToString())
{
case "edit":
int forumId = ValidationHelper.GetInteger(e.CommandArgument, 0);
ViewState["ForumID"] = forumId;
ForumInfo fi = ForumInfoProvider.GetForumInfo(forumId);
if (fi != null)
{
lblEditBack.Text = breadCrumbsSeparator + HTMLHelper.HTMLEncode(fi.ForumDisplayName);
}
forumEdit.ForumID = forumId;
DisplayControl("edit");
break;
default:
DisplayControl("list");
break;
}
}
///
/// Show correct tab.
///
protected void forumTabElem_OnTabChanged(object sender, EventArgs e)
{
int tab = tabElem.SelectedTab;
if (tab == 0)
{
DisplayControl("list");
}
else if (tab == 1)
{
DisplayControl("group");
}
}
///
/// Reloads the form data.
///
public override void ReloadData()
{
groupEdit.GroupID = mGroupId;
groupEdit.DisplayMode = DisplayMode;
forumNew.GroupID = mGroupId;
forumNew.DisplayMode = DisplayMode;
forumList.GroupID = mGroupId;
DisplayControl("list");
}
///
/// Initializes the tabs.
///
private void InitializeTabs()
{
string[,] tabs = new string[2,4];
tabs[0, 0] = GetString("Group_General.Forums");
tabs[1, 0] = GetString("general.general");
tabElem.Tabs = tabs;
tabElem.OnTabClicked += new EventHandler(forumTabElem_OnTabChanged);
}
///
/// Initializes the breadcrumbs.
///
private void InitializeBreadcrumbs()
{
lblNewBack.Text = breadCrumbsSeparator + GetString("Forum_Edit.NewForum");
lnkEditBack.Text = GetString("forum_list.headercaption");
lnkNewBack.Text = GetString("forum_list.headercaption");
lnkEditBack.Click += new EventHandler(lnkEditBack_Click);
lnkNewBack.Click += new EventHandler(lnkNewBack_Click);
}
protected void lnkNewBack_Click(object sender, EventArgs e)
{
DisplayControl("list");
}
protected void lnkEditBack_Click(object sender, EventArgs e)
{
DisplayControl("list");
}
private void DisplayControl(string selectedControl)
{
tabElem.SelectedTab = 0;
plcForumList.Visible = false;
plcForumEdit.Visible = false;
tabForums.Visible = false;
tabGeneral.Visible = false;
tabNewForum.Visible = false;
displayControlPerformed = true;
switch (selectedControl.ToLowerCSafe())
{
// New forum
case "new":
forumNew.ReloadData();
tabNewForum.Visible = true;
break;
// Edit forum
case "edit":
forumEdit.ReloadData();
plcForumEdit.Visible = true;
tabForums.Visible = true;
break;
// Edit forum group
case "group":
groupEdit.ReloadData();
tabGeneral.Visible = true;
tabElem.SelectedTab = 1;
break;
// Forum list
default:
plcForumList.Visible = true;
tabForums.Visible = true;
forumList.ReloadData();
break;
}
}
protected override void OnPreRender(EventArgs e)
{
if (!displayControlPerformed)
{
plcForumList.Visible = listVisible;
if (listVisible)
{
forumList.ReloadData();
}
}
base.OnPreRender(e);
}
}