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_Groups : CMSAdminItemsControl
{
#region "Variables"
private int mGroupId = 0;
private Guid mCommunityGroupGUID = Guid.Empty;
private bool mHideWhenGroupIsNotSupplied = false;
private bool displayControlPerformed = false;
private bool listVisible = false;
#endregion
#region "Public properties"
///
/// Determines whether to hide the content of the control when GroupID is not supplied.
///
public bool HideWhenGroupIsNotSupplied
{
get
{
return mHideWhenGroupIsNotSupplied;
}
set
{
mHideWhenGroupIsNotSupplied = value;
}
}
///
/// Gets or sets the Community group GUID.
///
public Guid CommunityGroupGUID
{
get
{
if (mCommunityGroupGUID == Guid.Empty)
{
mCommunityGroupGUID = ValidationHelper.GetGuid(GetValue("CommunityGroupGUID"), Guid.Empty);
}
return mCommunityGroupGUID;
}
set
{
mCommunityGroupGUID = value;
}
}
///
/// Gets or sets the Community group ID.
///
public int GroupID
{
get
{
if (mGroupId <= 0)
{
mGroupId = ValidationHelper.GetInteger(GetValue("GroupID"), 0);
}
return mGroupId;
}
set
{
mGroupId = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
listVisible = plcList.Visible;
plcList.Visible = true;
groupList.Visible = true;
#region "Security"
groupList.OnCheckPermissions += new CheckPermissionsEventHandler(groupList_OnCheckPermissions);
groupEdit.OnCheckPermissions += new CheckPermissionsEventHandler(groupEdit_OnCheckPermissions);
groupNew.OnCheckPermissions += new CheckPermissionsEventHandler(groupNew_OnCheckPermissions);
#endregion
if (!Visible || StopProcessing)
{
//this.groupList.Visible = false;
//this.groupEdit.Visible = false;
//this.groupNew.Visible = false;
}
else
{
groupNew.IsLiveSite = true;
groupList.IsLiveSite = true;
groupEdit.IsLiveSite = true;
groupList.OnAction += new CommandEventHandler(subscriptionList_OnAction);
if (GroupID > 0)
{
groupList.CommunityGroupId = GroupID;
}
else
{
// Hide controls if the control should be hidden
if (HideWhenGroupIsNotSupplied)
{
Visible = false;
return;
}
}
groupNew.CommunityGroupID = GroupID;
int groupId = ValidationHelper.GetInteger(ViewState["GroupID"], 0);
groupEdit.GroupID = groupId;
// New item link
string[,] actions = new string[1,7];
actions[0, 0] = HeaderActions.TYPE_LINKBUTTON;
actions[0, 1] = GetString("Group_List.NewItemCaption");
actions[0, 5] = GetImageUrl("Objects/Forums_ForumGroup/add.png");
actions[0, 6] = "newgroup";
actionsElem.Actions = actions;
actionsElem.ActionPerformed += new CommandEventHandler(actionsElem_ActionPerformed);
groupNew.OnSaved += new EventHandler(groupNew_OnSaved);
// Set display mode
groupEdit.DisplayMode = DisplayMode;
groupEdit.CommunityGroupGUID = CommunityGroupGUID;
groupNew.DisplayMode = DisplayMode;
groupNew.CommunityGroupGUID = CommunityGroupGUID;
InitializeBreadcrumbs();
}
}
protected override void OnPreRender(EventArgs e)
{
if (!RequestHelper.IsPostBack())
{
DisplayControl("list");
}
else if (!displayControlPerformed)
{
plcList.Visible = listVisible;
groupList.Visible = listVisible;
if (listVisible)
{
groupList.ReloadData();
}
}
}
#region "Security handlers"
private void groupNew_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
RaiseOnCheckPermissions(permissionType, sender);
}
private void groupEdit_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
RaiseOnCheckPermissions(permissionType, sender);
}
private void groupList_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
RaiseOnCheckPermissions(permissionType, sender);
}
#endregion
protected void groupNew_OnSaved(object sender, EventArgs e)
{
int groupId = groupNew.GroupID;
ViewState["GroupID"] = groupId;
ForumGroupInfo fgi = ForumGroupInfoProvider.GetForumGroupInfo(groupId);
if (fgi != null)
{
lblEditBack.Text = " " + HTMLHelper.HTMLEncode(fgi.GroupDisplayName);
}
groupEdit.GroupID = groupId;
DisplayControl("edit");
}
///
/// New subscription link handler.
///
protected void actionsElem_ActionPerformed(object sender, CommandEventArgs e)
{
switch (e.CommandName.ToLowerCSafe())
{
case "newgroup":
DisplayControl("new");
break;
}
}
///
/// Edit subscription handler.
///
protected void subscriptionList_OnAction(object sender, CommandEventArgs e)
{
switch (e.CommandName.ToLowerCSafe())
{
case "edit":
DisplayControl("edit");
int groupId = ValidationHelper.GetInteger(e.CommandArgument, 0);
ViewState["GroupID"] = groupId;
groupEdit.GroupID = groupId;
groupEdit.ReloadData();
ForumGroupInfo fgi = ForumGroupInfoProvider.GetForumGroupInfo(groupId);
if (fgi != null)
{
lblEditBack.Text = " " + HTMLHelper.HTMLEncode(fgi.GroupDisplayName);
}
break;
default:
DisplayControl("list");
break;
}
}
///
/// Reloads the form data.
///
public override void ReloadData()
{
DisplayControl("list");
}
///
/// Initializes the breadcrumbs.
///
private void InitializeBreadcrumbs()
{
lblNewBack.Text = " " + GetString("Group_General.NewGroup");
lnkEditBack.Text = GetString("Group_General.GroupList");
lnkNewBack.Text = GetString("Group_General.GroupList");
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");
}
///
/// Displays only specified control. Other controls hides.
///
/// Selected control
private void DisplayControl(string selectedControl)
{
displayControlPerformed = true;
// Disable all controls
plcEdit.Visible = false;
plcList.Visible = false;
plcNew.Visible = false;
switch (selectedControl.ToLowerCSafe())
{
// Show group edit control
case "edit":
plcEdit.Visible = true;
groupEdit.Visible = true;
groupEdit.ReloadData();
break;
// Show group new control
case "new":
plcNew.Visible = true;
groupNew.Visible = true;
groupNew.ReloadData();
break;
// Show group list control
default:
plcList.Visible = true;
groupList.Visible = true;
groupList.ReloadData();
break;
}
}
}