HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/wwwroot/CMSModules/Groups/Controls/GroupProfile.ascx.cs
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.Community;
using CMS.Helpers;
using CMS.LicenseProvider;
using CMS.Base;
using CMS.SiteProvider;
using CMS.Membership;
using CMS.UIControls;
using CMS.Controls.Configuration;
using CMS.DataEngine;
using CMS.Modules;

public partial class CMSModules_Groups_Controls_GroupProfile : CMSAdminEditControl
{
    #region "Variables"

    private int mGroupId = 0;

    private bool mShowContentTab = true;
    private bool mShowGeneralTab = true;
    private bool mShowSecurityTab = true;
    private bool mShowMembersTab = true;
    private bool mShowRolesTab = true;
    private bool mShowForumsTab = true;
    private bool mShowMediaTab = true;
    private bool mShowMessageBoardsTab = true;
    private bool mShowPollsTab = true;
    private bool mShowProjectTab = false;

    private int generalTabIndex = 0;
    private int securityTabIndex = 0;
    // Set -1 it there is a check for a presence of a module
    private int membersTabIndex = -1;
    private int rolesTabIndex = -1;
    private int forumsTabIndex = -1;
    private int mediaTabIndex = -1;
    private int messageBoardsTabIndex = -1;
    private int pollsTabIndex = -1;
    private int projectTabIndex = -1;

    private bool mHideWhenGroupIsNotSupplied = false;
    private GroupInfo gi = null;
    private CMSAdminControl ctrl = null;
    private bool mAllowChangeGroupDisplayName = false;
    private bool mAllowSelectTheme = false;

    #endregion


    #region "Public properties"

    /// <summary>
    /// Determines whether to hide the content of the control when GroupID is not supplied.
    /// </summary>
    public bool HideWhenGroupIsNotSupplied
    {
        get
        {
            return mHideWhenGroupIsNotSupplied;
        }
        set
        {
            mHideWhenGroupIsNotSupplied = value;
        }
    }


    /// <summary>
    /// If true group display name change allowed on live site.
    /// </summary>
    public bool AllowChangeGroupDisplayName
    {
        get
        {
            return mAllowChangeGroupDisplayName;
        }
        set
        {
            mAllowChangeGroupDisplayName = value;
        }
    }


    /// <summary>
    /// If true changing theme for group page is enabled.
    /// </summary>
    public bool AllowSelectTheme
    {
        get
        {
            return mAllowSelectTheme;
        }
        set
        {
            mAllowSelectTheme = value;
        }
    }


    /// <summary>
    /// Gets or sets the ID of the group to be edited.
    /// </summary>
    public int GroupID
    {
        get
        {
            return mGroupId;
        }
        set
        {
            mGroupId = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the content tab.
    /// </summary>
    public bool ShowContentTab
    {
        get
        {
            return mShowContentTab;
        }
        set
        {
            mShowContentTab = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the general tab.
    /// </summary>
    public bool ShowGeneralTab
    {
        get
        {
            return mShowGeneralTab;
        }
        set
        {
            mShowGeneralTab = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the security tab.
    /// </summary>
    public bool ShowSecurityTab
    {
        get
        {
            return mShowSecurityTab;
        }
        set
        {
            mShowSecurityTab = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the members tab.
    /// </summary>
    public bool ShowMembersTab
    {
        get
        {
            return mShowMembersTab;
        }
        set
        {
            mShowMembersTab = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the roles tab.
    /// </summary>
    public bool ShowRolesTab
    {
        get
        {
            return mShowRolesTab;
        }
        set
        {
            mShowRolesTab = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the forums tab.
    /// </summary>
    public bool ShowForumsTab
    {
        get
        {
            return mShowForumsTab;
        }
        set
        {
            mShowForumsTab = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the media tab.
    /// </summary>
    public bool ShowMediaTab
    {
        get
        {
            return mShowMediaTab;
        }
        set
        {
            mShowMediaTab = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the message boards tab.
    /// </summary>
    public bool ShowMessageBoardsTab
    {
        get
        {
            return mShowMessageBoardsTab;
        }
        set
        {
            mShowMessageBoardsTab = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the polls tab.
    /// </summary>
    public bool ShowPollsTab
    {
        get
        {
            return mShowPollsTab;
        }
        set
        {
            mShowPollsTab = value;
        }
    }


    /// <summary>
    /// Gets or sets the value which determines whether to show the projects tab.
    /// </summary>
    public bool ShowProjectsTab
    {
        get
        {
            return mShowProjectTab;
        }
        set
        {
            mShowProjectTab = value;
        }
    }


    /// <summary>
    /// Gets or sets switch to display appropriate controls.
    /// </summary>
    public string SelectedPage
    {
        get
        {
            return ValidationHelper.GetString(ViewState[ClientID + "SelectedPage"], "");
        }
        set
        {
            ViewState[ClientID + "SelectedPage"] = (object)value;
        }
    }

    #endregion


    protected override void CreateChildControls()
    {
        base.CreateChildControls();

        // Get page url
        string page = QueryHelper.GetText("tab", SelectedPage);
        if (!String.IsNullOrEmpty(page))
        {
            page = page.ToLowerCSafe();
        }

        // Check MANAGE permission
        if (RaiseOnCheckPermissions(PERMISSION_MANAGE, this))
        {
            if (StopProcessing)
            {
                return;
            }
        }

        if ((GroupID == 0) && HideWhenGroupIsNotSupplied)
        {
            // Hide if groupID == 0
            Visible = false;
            return;
        }

        gi = GroupInfoProvider.GetGroupInfo(GroupID);

        // If no group, display the info and return
        if (gi == null)
        {
            lblInfo.Text = GetString("group.groupprofile.nogroup");
            lblInfo.Visible = true;
            tabMenu.Visible = false;
            pnlContent.Visible = false;
            return;
        }

        // Get current URL
        string absoluteUri = RequestContext.CurrentURL;

        // Menu initialization
        tabMenu.TabControlIdPrefix = "GroupProfile";
        tabMenu.UrlTarget = "_self";       
        tabMenu.UsePostback = true;

        int i = 0;
        string defaultTab = null;
        
        #region "Show/hide tabs"

        // Show general tab
        if (ShowGeneralTab)
        {
            tabMenu.AddTab(new TabItem()
            {
                Text = GetString("General.General"),
                RedirectUrl = URLHelper.AddParameterToUrl(absoluteUri, "tab", "general"),
            });
            defaultTab = "general";
            generalTabIndex = i;
            i++;
        }

        // Show security tab
        if (ShowSecurityTab)
        {
            tabMenu.AddTab(new TabItem()
            {
                Text = GetString("General.Security"),
                RedirectUrl = URLHelper.AddParameterToUrl(absoluteUri, "tab", "security"),
            });
            if (String.IsNullOrEmpty(defaultTab))
            {
                defaultTab = "security";
            }

            securityTabIndex = i;
            i++;
        }

        // Show members tab
        if (ShowMembersTab)
        {
            tabMenu.AddTab(new TabItem()
            {
                Text = GetString("Group.Members"),
                RedirectUrl = URLHelper.AddParameterToUrl(absoluteUri, "tab", "members"),
            });
            if (String.IsNullOrEmpty(defaultTab))
            {
                defaultTab = "members";
            }

            membersTabIndex = i;
            i++;
        }

        // Show roles tab
        if (ShowRolesTab && ResourceSiteInfoProvider.IsResourceOnSite("CMS.Roles", SiteContext.CurrentSiteName))
        {
            tabMenu.AddTab(new TabItem()
            {
                Text = GetString("general.roles"),
                RedirectUrl = URLHelper.AddParameterToUrl(absoluteUri, "tab", "roles"),
            });
            if (String.IsNullOrEmpty(defaultTab))
            {
                defaultTab = "roles";
            }

            rolesTabIndex = i;
            i++;
        }

        // Show forums tab
        if (ShowForumsTab && ResourceSiteInfoProvider.IsResourceOnSite("CMS.Forums", SiteContext.CurrentSiteName))
        {
            tabMenu.AddTab(new TabItem()
            {
                Text = GetString("Group.Forums"),
                RedirectUrl = URLHelper.AddParameterToUrl(absoluteUri, "tab", "forums"),
            });
            if (String.IsNullOrEmpty(defaultTab))
            {
                defaultTab = "forums";
            }

            forumsTabIndex = i;
            i++;
        }

        // Show media tab
        if (ShowMediaTab && ResourceSiteInfoProvider.IsResourceOnSite("CMS.MediaLibrary", SiteContext.CurrentSiteName))
        {
            tabMenu.AddTab(new TabItem()
            {
                Text = GetString("Group.MediaLibrary"),
                RedirectUrl = URLHelper.AddParameterToUrl(absoluteUri, "tab", "medialibrary"),
            });
            if (String.IsNullOrEmpty(defaultTab))
            {
                defaultTab = "medialibrary";
            }

            mediaTabIndex = i;
            i++;
        }

        // Show message boards tab
        if (ShowMessageBoardsTab && ResourceSiteInfoProvider.IsResourceOnSite("CMS.MessageBoards", SiteContext.CurrentSiteName))
        {
            tabMenu.AddTab(new TabItem()
            {
                Text = GetString("Group.MessageBoards"),
                RedirectUrl = URLHelper.AddParameterToUrl(absoluteUri, "tab", "messageboards"),
            });
            if (String.IsNullOrEmpty(defaultTab))
            {
                defaultTab = "messageboards";
            }

            messageBoardsTabIndex = i;
            i++;
        }

        // Show polls tab
        if (ShowPollsTab && ResourceSiteInfoProvider.IsResourceOnSite("CMS.Polls", SiteContext.CurrentSiteName))
        {
            tabMenu.AddTab(new TabItem()
            {
                Text = GetString("Group.Polls"),
                RedirectUrl = URLHelper.AddParameterToUrl(absoluteUri, "tab", "polls"),
            });
            if (String.IsNullOrEmpty(defaultTab))
            {
                defaultTab = "polls";
            }

            pollsTabIndex = i;
            i++;
        }

        // Show projects tab
        if (ShowProjectsTab)
        {
            // Check whether license for project management is available
            // if no hide project management tab
            if (LicenseHelper.CheckFeature(RequestContext.CurrentDomain, FeatureEnum.ProjectManagement))
            {
                // Check site availability
                if (ResourceSiteInfoProvider.IsResourceOnSite("CMS.ProjectManagement", SiteContext.CurrentSiteName))
                {
                    tabMenu.AddTab(new TabItem()
                    {
                        Text = GetString("pm.project.list"),
                        RedirectUrl = URLHelper.AddParameterToUrl(absoluteUri, "tab", "projects"),
                    });
                    if (String.IsNullOrEmpty(defaultTab))
                    {
                        defaultTab = "projects";
                    }

                    projectTabIndex = i;
                }
            }
        }

        #endregion


        if (string.IsNullOrEmpty(page))
        {
            page = defaultTab;
            tabMenu.SelectedTab = 0;
        }

        // Select current page
        switch (page)
        {
            case "general":
                tabMenu.SelectedTab = generalTabIndex;

                // Show general content
                if (ShowGeneralTab)
                {
                    ctrl = this.LoadUserControl("~/CMSModules/Groups/Controls/GroupEdit.ascx") as CMSAdminControl;
                    ctrl.ID = "groupEditElem";

                    if (ctrl != null)
                    {
                        ctrl.SetValue("GroupID", gi.GroupID);
                        ctrl.SetValue("SiteID", SiteContext.CurrentSiteID);
                        ctrl.SetValue("IsLiveSite", IsLiveSite);
                        ctrl.SetValue("AllowChangeGroupDisplayName", AllowChangeGroupDisplayName);
                        ctrl.SetValue("AllowSelectTheme", AllowSelectTheme);
                        ctrl.OnCheckPermissions += new CheckPermissionsEventHandler(ctrl_OnCheckPermissions);
                        pnlContent.Controls.Add(ctrl);
                    }
                }
                break;

            case "security":
                tabMenu.SelectedTab = securityTabIndex;

                // Show security content
                if (ShowSecurityTab)
                {
                    ctrl = this.LoadUserControl("~/CMSModules/Groups/Controls/Security/GroupSecurity.ascx") as CMSAdminControl;
                    ctrl.ID = "securityElem";

                    if (ctrl != null)
                    {
                        ctrl.SetValue("GroupID", gi.GroupID);
                        ctrl.SetValue("IsLiveSite", IsLiveSite);
                        ctrl.OnCheckPermissions += new CheckPermissionsEventHandler(ctrl_OnCheckPermissions);
                        pnlContent.Controls.Add(ctrl);
                    }
                }
                break;

            case "members":
                if (membersTabIndex >= 0)
                {
                    tabMenu.SelectedTab = membersTabIndex;

                    // Show members content
                    if (ShowMembersTab)
                    {
                        ctrl = this.LoadUserControl("~/CMSModules/Groups/Controls/Members/Members.ascx") as CMSAdminControl;
                        ctrl.ID = "securityElem";

                        if (ctrl != null)
                        {
                            ctrl.SetValue("GroupID", gi.GroupID);
                            ctrl.SetValue("IsLiveSite", IsLiveSite);
                            ctrl.OnCheckPermissions += new CheckPermissionsEventHandler(ctrl_OnCheckPermissions);
                            pnlContent.Controls.Add(ctrl);
                        }
                    }
                }
                break;

            case "forums":
                if (forumsTabIndex >= 0)
                {
                    tabMenu.SelectedTab = forumsTabIndex;

                    // Show forums content
                    if (ShowForumsTab)
                    {
                        ctrl = this.LoadUserControl("~/CMSModules/Forums/Controls/LiveControls/Groups.ascx") as CMSAdminControl;
                        ctrl.ID = "forumElem";

                        if (ctrl != null)
                        {
                            ctrl.SetValue("GroupID", gi.GroupID);
                            ctrl.SetValue("CommunityGroupGUID", gi.GroupGUID);
                            ctrl.SetValue("IsLiveSite", IsLiveSite);
                            ctrl.DisplayMode = ControlDisplayModeEnum.Simple;
                            ctrl.OnCheckPermissions += new CheckPermissionsEventHandler(ctrl_OnCheckPermissions);

                            pnlContent.Controls.Add(ctrl);
                        }
                    }
                }
                break;

            case "roles":
                if (rolesTabIndex >= 0)
                {
                    tabMenu.SelectedTab = rolesTabIndex;
                    // Show roles content
                    if (ShowRolesTab)
                    {
                        ctrl = this.LoadUserControl("~/CMSModules/Membership/Controls/Roles/Roles.ascx") as CMSAdminControl;
                        ctrl.ID = "rolesElem";

                        if (ctrl != null)
                        {
                            ctrl.SetValue("GroupID", gi.GroupID);
                            ctrl.SetValue("GroupGUID", gi.GroupGUID);
                            ctrl.SetValue("SiteID", SiteContext.CurrentSiteID);
                            ctrl.SetValue("IsLiveSite", IsLiveSite);
                            ctrl.DisplayMode = ControlDisplayModeEnum.Simple;
                            ctrl.OnCheckPermissions += new CheckPermissionsEventHandler(ctrl_OnCheckPermissions);

                            pnlContent.Controls.Add(ctrl);
                        }
                    }
                }
                break;

            case "polls":
                if (pollsTabIndex >= 0)
                {
                    tabMenu.SelectedTab = pollsTabIndex;

                    // Show polls content
                    if (ShowPollsTab)
                    {
                        ctrl = this.LoadUserControl("~/CMSModules/Polls/Controls/Polls.ascx") as CMSAdminControl;
                        ctrl.ID = "pollsElem";

                        if (ctrl != null)
                        {
                            ctrl.SetValue("GroupID", gi.GroupID);
                            ctrl.SetValue("GroupGUID", gi.GroupGUID);
                            ctrl.SetValue("SiteID", SiteContext.CurrentSiteID);
                            ctrl.SetValue("IsLiveSite", IsLiveSite);
                            ctrl.DisplayMode = ControlDisplayModeEnum.Simple;
                            ctrl.OnCheckPermissions += new CheckPermissionsEventHandler(ctrl_OnCheckPermissions);
                            pnlContent.Controls.Add(ctrl);
                        }
                    }
                }
                break;

            case "messageboards":
                if (messageBoardsTabIndex >= 0)
                {
                    tabMenu.SelectedTab = messageBoardsTabIndex;

                    // Show message boards content
                    if (ShowMessageBoardsTab)
                    {
                        ctrl = this.LoadUserControl("~/CMSModules/MessageBoards/Controls/LiveControls/Boards.ascx") as CMSAdminControl;
                        ctrl.ID = "boardElem";

                        if (ctrl != null)
                        {
                            ctrl.SetValue("GroupID", gi.GroupID);
                            ctrl.SetValue("IsLiveSite", IsLiveSite);
                            ctrl.DisplayMode = ControlDisplayModeEnum.Simple;
                            ctrl.OnCheckPermissions += new CheckPermissionsEventHandler(ctrl_OnCheckPermissions);

                            pnlContent.Controls.Add(ctrl);
                        }
                    }
                }
                break;

            case "medialibrary":
                if (mediaTabIndex >= 0)
                {
                    tabMenu.SelectedTab = mediaTabIndex;

                    // Show media content
                    if (ShowMediaTab)
                    {
                        ctrl = this.LoadUserControl("~/CMSModules/MediaLibrary/Controls/LiveControls/MediaLibraries.ascx") as CMSAdminControl;
                        ctrl.ID = "libraryElem";

                        if (ctrl != null)
                        {
                            ctrl.SetValue("GroupGUID", gi.GroupID);
                            ctrl.SetValue("GroupID", gi.GroupID);
                            ctrl.SetValue("IsLiveSite", IsLiveSite);
                            ctrl.DisplayMode = ControlDisplayModeEnum.Simple;
                            ctrl.OnCheckPermissions += new CheckPermissionsEventHandler(ctrl_OnCheckPermissions);

                            pnlContent.Controls.Add(ctrl);
                        }
                    }
                }
                break;

            case "projects":
                if (projectTabIndex >= 0)
                {
                    tabMenu.SelectedTab = projectTabIndex;

                    // Show projects content
                    if (ShowProjectsTab)
                    {
                        ctrl = this.LoadUserControl("~/CMSModules/ProjectManagement/Controls/LiveControls/GroupProjects.ascx") as CMSAdminControl;
                        ctrl.ID = "projectElem";
                        if (ctrl != null)
                        {
                            ctrl.SetValue("CommunityGroupID", gi.GroupID);
                            ctrl.SetValue("IsLiveSite", IsLiveSite);
                            ctrl.DisplayMode = ControlDisplayModeEnum.Simple;
                            ctrl.OnCheckPermissions += new CheckPermissionsEventHandler(ctrl_OnCheckPermissions);
                            pnlContent.Controls.Add(ctrl);
                        }
                    }
                }
                break;


            default:
                break;
        }

        if (!RequestHelper.IsPostBack())
        {
            ReloadData();
        }
    }


    /// <summary>
    /// Reloads control.
    /// </summary>
    public override void ReloadData()
    {
        if (ctrl != null)
        {
            // Reload data
            ctrl.ReloadData();
        }
    }


    #region "Security handlers"

    /// <summary>
    /// Control - Check permission event handler.
    /// </summary>
    /// <param name="permissionType">Type of the permission to check</param>
    /// <param name="sender">Sender admin control</param>
    private void ctrl_OnCheckPermissions(string permissionType, CMSAdminControl sender)
    {
        if (!RaiseOnCheckPermissions(permissionType, sender))
        {
            // Check if user is allowed to create or modify the module records
            if ((!MembershipContext.AuthenticatedUser.IsGroupAdministrator(GroupID)) && (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Groups", PERMISSION_MANAGE)))
            {
                AccessDenied("CMS.Groups", PERMISSION_MANAGE);
            }
        }
    }

    #endregion
}