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; } } }