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/CMS/CMSModules/Permissions/Controls/PermissionsFilter.ascx.cs
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

using CMS.CustomTables;
using CMS.ExtendedControls;
using CMS.Helpers;
using CMS.Membership;
using CMS.UIControls;
using CMS.Modules;

public partial class CMSModules_Permissions_Controls_PermissionsFilter : CMSAdminControl
{
    #region "Variables"

    private bool globalRecord = false;

    #endregion


    #region "Properties"

    /// <summary>
    /// Indicates if site selector contain sites.
    /// </summary>
    public bool HasSites
    {
        get
        {
            if (SiteID > 0)
            {
                return (true);
            }
            return siteSelector.DropDownSingleSelect.Items.Count > 0;
        }
    }


    /// <summary>
    /// Gets or sets Site ID.
    /// </summary>
    public int SiteID
    {
        get;
        set;
    }


    /// <summary>
    /// If false site selector is hidden no matter what.
    /// </summary>
    public bool HideSiteSelector
    {
        get;
        set;
    }


    /// <summary>
    /// Value for (global) item record.
    /// </summary>
    public string GlobalRecordValue
    {
        get
        {
            return siteSelector.GlobalRecordValue;
        }
        set
        {
            siteSelector.GlobalRecordValue = value;
        }
    }


    /// <summary>
    /// Gets or sets Role ID.
    /// </summary>
    public int RoleID
    {
        get;
        set;
    }


    /// <summary>
    /// Gets ID selected in the moduleSelector or docTypeSelector or customTableSelector according to the selected PermissionType.
    /// </summary>
    public string SelectedID
    {
        get
        {
            if (drpPermissionType.SelectedIndex > -1)
            {
                if ((drpPermissionType.SelectedValue == PermissionTypes.Module.ToString()) && (moduleSelector.UniSelector.HasData))
                {
                    return ValidationHelper.GetString(moduleSelector.Value, "0");
                }
                else if ((drpPermissionType.SelectedValue == PermissionTypes.DocumentType.ToString()) && (docTypeSelector.UniSelector.HasData))
                {
                    return ValidationHelper.GetString(docTypeSelector.Value, "0");
                }
                else if ((drpPermissionType.SelectedValue == PermissionTypes.CustomTable.ToString()) && (customTableSelector.UniSelector.HasData))
                {
                    return ValidationHelper.GetString(customTableSelector.Value, "0");
                }
                else
                {
                    return "0";
                }
            }
            else
            {
                return "0";
            }
        }
    }


    /// <summary>
    /// Gets type constant according to the selected value in the moduleSelector or docTypeSelector or customTableSelector and the selected PermissionType.
    /// </summary>
    public string SelectedType
    {
        get
        {
            if (drpPermissionType.SelectedIndex > -1)
            {
                if ((drpPermissionType.SelectedValue == PermissionTypes.Module.ToString()) && (moduleSelector.UniSelector.HasData))
                {
                    return "r";
                }
                else if (((drpPermissionType.SelectedValue == PermissionTypes.DocumentType.ToString()) && (docTypeSelector.UniSelector.HasData)) || (customTableSelector.UniSelector.HasData))
                {
                    return "c";
                }
                else
                {
                    return string.Empty;
                }
            }
            else
            {
                return string.Empty;
            }
        }
    }


    /// <summary>
    /// Gets selected site ID.
    /// </summary>
    public int SelectedSiteID
    {
        get
        {
            return ValidationHelper.GetInteger(siteSelector.Value, 0);
        }
    }


    /// <summary>
    /// Indicates if user selector will be displayed.
    /// </summary>
    public bool ShowUserSelector
    {
        get
        {
            return plcUser.Visible;
        }
        set
        {
            plcUser.Visible = value;
        }
    }


    /// <summary>
    /// Gets selected user ID.
    /// </summary>
    public int SelectedUserID
    {
        get
        {
            return ValidationHelper.GetInteger(userSelector.Value, 0);
        }
    }


    /// <summary>
    /// Gets or sets live site mode.
    /// </summary>
    public override bool IsLiveSite
    {
        get
        {
            return siteSelector.IsLiveSite;
        }
        set
        {
            customTableSelector.IsLiveSite = value;
            moduleSelector.IsLiveSite = value;
            docTypeSelector.IsLiveSite = value;
            siteSelector.IsLiveSite = value;
            userSelector.IsLiveSite = value;
        }
    }


    /// <summary>
    /// Indicates if only user roles should be displayed.
    /// </summary>
    public bool UserRolesOnly
    {
        get
        {
            return chkUserOnly.Checked;
        }
    }


    /// <summary>
    /// Indicates if filter was changed.
    /// </summary>
    public bool FilterChanged
    {
        get;
        set;
    }


    /// <summary>
    /// Indicates whether singledropdownlist uses autocomplete mode.
    /// </summary>
    public bool UseUniSelectorAutocomplete
    {
        get
        {
            return moduleSelector.UseUniSelectorAutocomplete;
        }
        set
        {
            moduleSelector.UseUniSelectorAutocomplete = value;
        }
    }


    /// <summary>
    /// Messages placeholder
    /// </summary>
    public override MessagesPlaceHolder MessagesPlaceHolder
    {
        get
        {
            return plcMess;
        }
    }

    #endregion


    #region "Enums"

    private enum PermissionTypes
    {
        DocumentType = 1,
        Module,
        CustomTable
    };

    #endregion


    #region "Page Evenets"

    protected void Page_Load(object sender, EventArgs e)
    {
        // Initialize site selector, if no site supplied        
        if (SiteID <= 0)
        {
            // Set site selector
            siteSelector.OnlyRunningSites = false;
            siteSelector.AllowAll = false;
            siteSelector.AllowEmpty = false;
            siteSelector.AllowGlobal = true;

            if (!RequestHelper.IsPostBack())
            {
                SiteID = 0;
                siteSelector.Value = ValidationHelper.GetInteger(siteSelector.GlobalRecordValue, 0);

                // Force siteselector to reload
                siteSelector.Reload(false);
            }
        }
        else
        {
            plcSite.Visible = false;
            siteSelector.Value = SiteID;
        }

        // Hide site selector used from role edit
        if (HideSiteSelector)
        {
            plcSite.Visible = false;
        }

        if (ValidationHelper.GetString(siteSelector.Value, String.Empty) == siteSelector.GlobalRecordValue)
        {
            globalRecord = true;
        }

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

        // Get truly selected value
        SiteID = ValidationHelper.GetInteger(siteSelector.Value, 0);

        // Inicialize user selector
        userSelector.SiteID = (SiteID > 0) ? SiteID : 0;
        userSelector.ShowSiteFilter = false;
        userSelector.DisplayUsersFromAllSites = (userSelector.SiteID <= 0);
        userSelector.UniSelector.OnSelectionChanged += userSelector_OnSelectionChanged;

        moduleSelector.DisplayOnlyForGivenSite = !globalRecord;
        InitializeDropDownListPermissionMatrix();

        siteSelector.UniSelector.OnSelectionChanged += siteSelector_OnSelectionChanged;

        // Set auto postback for selector
        siteSelector.DropDownSingleSelect.AutoPostBack = true;
        moduleSelector.DropDownSingleSelect.AutoPostBack = true;
        docTypeSelector.DropDownSingleSelect.AutoPostBack = true;
        customTableSelector.DropDownSingleSelect.AutoPostBack = true;
        userSelector.DropDownSingleSelect.AutoPostBack = true;
        moduleSelector.UniSelector.OnSelectionChanged += moduleSelector_SelectedIndexChanged;
        chkUserOnly.Text = GetString("Administration-Permissions_Header.UserRoles");
        chkUserOnly.CheckedChanged += chkUserOnly_CheckedChanged;
    }


    /// <summary>
    /// Page pre render event.
    /// </summary>
    protected void Page_PreRender(object sender, EventArgs e)
    {
        // Disable empty uniselectors
        moduleSelector.Enabled = moduleSelector.UniSelector.HasData;
        docTypeSelector.Enabled = docTypeSelector.UniSelector.HasData;
    }

    #endregion


    #region "Private & protected methods"

    /// <summary>
    /// Initialize permission type drop down list.
    /// </summary>
    private void InitializeDropDownListPermissionType()
    {
        // Initialize drop down list with types
        drpPermissionType.Items.Clear();
        drpPermissionType.Items.Add(new ListItem(GetString("objecttype.cms_resource"), PermissionTypes.Module.ToString()));
        drpPermissionType.Items.Add(new ListItem(GetString("general.documenttype"), PermissionTypes.DocumentType.ToString()));

        // Check if any custom table available under site
        if (CustomTableHelper.GetCustomTableClasses(SiteID).HasResults()
            || (ValidationHelper.GetString(siteSelector.Value, String.Empty) == siteSelector.GlobalRecordValue)
            || (globalRecord && MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin)))
        {
            drpPermissionType.Items.Add(new ListItem(GetString("general.customtable"), PermissionTypes.CustomTable.ToString()));
        }
    }


    /// <summary>
    /// Initialize permission matrix drop down list.
    /// </summary>
    private void InitializeDropDownListPermissionMatrix()
    {
        string permissionType = null;
        if (drpPermissionType.SelectedIndex > -1)
        {
            permissionType = drpPermissionType.SelectedValue;
        }

        if (!string.IsNullOrEmpty(permissionType))
        {
            moduleSelector.Visible = (permissionType == PermissionTypes.Module.ToString());
            // Ensure module selection from query string
            if ((moduleSelector.Visible) && (!URLHelper.IsPostback()))
            {
                string selectedModule = QueryHelper.GetString("module", null);
                if (!String.IsNullOrEmpty(selectedModule))
                {
                    ResourceInfo ri = ResourceInfoProvider.GetResourceInfo(selectedModule);
                    if (ri != null)
                    {
                        moduleSelector.Value = ri.ResourceId;
                    }
                }
            }
            docTypeSelector.Visible = (permissionType == PermissionTypes.DocumentType.ToString());
            customTableSelector.Visible = (permissionType == PermissionTypes.CustomTable.ToString());

            if (SiteID > 0)
            {
                string where = "ClassID IN (SELECT ClassID FROM CMS_ClassSite WHERE SiteID = " + SiteID + ")";
                moduleSelector.SiteID = SiteID;
                customTableSelector.WhereCondition = where;
                docTypeSelector.WhereCondition = where;
            }
        }
    }

    #endregion


    #region "Event Handlers"

    protected void siteSelector_OnSelectionChanged(object sender, EventArgs e)
    {
        userSelector.ReloadData();
        userSelector_OnSelectionChanged(null, null);
        InitializeDropDownListPermissionType();
        InitializeDropDownListPermissionMatrix();
        ReloadSelectors();
        FilterChanged = true;
    }


    protected void userSelector_OnSelectionChanged(object sender, EventArgs e)
    {
        // Disable check box if no user selected
        int selUser = ValidationHelper.GetInteger(userSelector.Value, 0);
        if (selUser > 0)
        {
            chkUserOnly.Enabled = true;
        }
        else
        {
            chkUserOnly.Checked = false;
            chkUserOnly.Enabled = false;
        }
        FilterChanged = true;
    }


    protected void drpPermissionType_SelectedIndexChanged(object sender, EventArgs e)
    {
        InitializeDropDownListPermissionMatrix();
        ReloadSelectors();
        FilterChanged = true;
    }


    protected void moduleSelector_SelectedIndexChanged(object sender, EventArgs e)
    {
        FilterChanged = true;
    }


    protected void chkUserOnly_CheckedChanged(object sender, EventArgs e)
    {
        FilterChanged = true;
    }


    private void ReloadSelectors()
    {
        globalRecord = (ValidationHelper.GetString(siteSelector.Value, String.Empty) == siteSelector.GlobalRecordValue);

        if (drpPermissionType.SelectedValue == PermissionTypes.Module.ToString())
        {
            moduleSelector.DisplayOnlyForGivenSite = !globalRecord;
            moduleSelector.ReloadData(true);
            if (moduleSelector.DropDownSingleSelect.Items.Count > 0)
            {
                moduleSelector.Value = null;
            }
        }
        else if (drpPermissionType.SelectedValue == PermissionTypes.DocumentType.ToString())
        {
            docTypeSelector.ReloadData(true);
            if (moduleSelector.DropDownSingleSelect.Items.Count > 0)
            {
                docTypeSelector.Value = null;
            }
        }
        else if (drpPermissionType.SelectedValue == PermissionTypes.CustomTable.ToString())
        {
            customTableSelector.ReloadData(true);
            if (moduleSelector.DropDownSingleSelect.Items.Count > 0)
            {
                customTableSelector.Value = null;
            }
        }
    }

    #endregion
}