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/CMSFormControls/Filters/DocumentFilter.ascx.cs
using System;
using System.Web.UI;
using System.Web.UI.WebControls;

using CMS.Controls;
using CMS.DataEngine;
using CMS.ExtendedControls;
using CMS.Helpers;
using CMS.Membership;
using CMS.Base;
using CMS.DocumentEngine;
using CMS.FormEngine;

public partial class CMSFormControls_Filters_DocumentFilter : CMSAbstractBaseFilterControl
{
    #region "Variables"

    private bool mAllowSiteAutopostback = true;
    private bool mIncludeSiteCondition = false;
    private bool mLoadSites = false;

    #endregion


    #region "Properties"

    /// <summary>
    /// Gets show button.
    /// </summary>
    public LocalizedButton ShowButton
    {
        get
        {
            return btnShow;
        }
    }


    /// <summary>
    /// Gets sites placeholder.
    /// </summary>
    public PlaceHolder SitesPlaceHolder
    {
        get
        {
            return plcSites;
        }
    }


    /// <summary>
    /// Gets document name path placeholder.
    /// </summary>
    public PlaceHolder PathPlaceHolder
    {
        get
        {
            return plcPath;
        }
    }


    /// <summary>
    /// Gets class placeholder.
    /// </summary>
    public PlaceHolder ClassPlaceHolder
    {
        get
        {
            return plcClass;
        }
    }


    /// <summary>
    /// Determines whether to load site selector.
    /// </summary>
    public bool LoadSites
    {
        get
        {
            return mLoadSites;
        }
        set
        {
            mLoadSites = value;
        }
    }


    /// <summary>
    /// Determines whether to include condition for site to the resulting WHERE condition.
    /// </summary>
    public bool IncludeSiteCondition
    {
        get
        {
            return mIncludeSiteCondition;
        }
        set
        {
            mIncludeSiteCondition = value;
        }
    }


    /// <summary>
    /// Determines whether the site selector DDL has autopostback option on or off.
    /// </summary>
    public bool AllowSiteAutopostback
    {
        get
        {
            return mAllowSiteAutopostback;
        }
        set
        {
            mAllowSiteAutopostback = value;
        }
    }


    /// <summary>
    /// Returns selected site name.
    /// </summary>
    public string SelectedSite
    {
        get
        {
            Control postbackControl = ControlsHelper.GetPostBackControl(Page);
            return DataHelper.GetNotEmpty((postbackControl == btnShow) ? siteSelector.Value : ViewState["SelectedSite"], TreeProvider.ALL_SITES);
        }
        private set
        {
            ViewState["SelectedSite"] = value;
        }
    }


    /// <summary>
    /// Where condition.
    /// </summary>
    public override string WhereCondition
    {
        get
        {
            Control postbackControl = ControlsHelper.GetPostBackControl(Page);
            return DataHelper.GetNotEmpty((postbackControl == btnShow) ? CreateWhereCondition(base.WhereCondition) : ViewState["WhereCondition"], string.Empty);
        }
        set
        {
            base.WhereCondition = value;
            ViewState["WhereCondition"] = value;
        }
    }


    /// <summary>
    /// Determines whether filter is set.
    /// </summary>
    public override bool FilterIsSet
    {
        get
        {
            return nameFilter.FilterIsSet || classFilter.FilterIsSet || (SelectedSite != TreeProvider.ALL_SITES);
        }
    }

    #endregion


    #region "Delegates and events"

    public event EventHandler OnSiteSelectionChanged;

    #endregion


    #region "Page events"

    protected void Page_Load(object sender, EventArgs e)
    {
        siteSelector.DropDownSingleSelect.Width = new Unit(305);

        if (LoadSites)
        {
            LoadSiteSelector();
        }
    }

    #endregion


    #region "Methods"

    /// <summary>
    /// Loads the drop-down list with all the available sites.
    /// </summary>
    private void LoadSiteSelector()
    {
        var user = MembershipContext.AuthenticatedUser;

        // Get all user sites
        if (user.IsGlobalAdministrator)
        {
            // Set site selector
            siteSelector.DropDownSingleSelect.AutoPostBack = AllowSiteAutopostback;
            if (AllowSiteAutopostback)
            {
                siteSelector.UniSelector.OnSelectionChanged += OnSiteSelectionChanged;
            }

            // All options only if global admin has access to Site manager
            if (user.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin))
            {
                siteSelector.AllowAll = false;
                siteSelector.UniSelector.SpecialFields.Add(new SpecialField() { Text = GetString("general.selectall"), Value = TreeProvider.ALL_SITES }); 
            }

            // Preselect all
            if (!RequestHelper.IsPostBack())
            {
                siteSelector.Value = TreeProvider.ALL_SITES;
            }
        }
        else
        {
            plcSites.Visible = false;
        }
    }


    private string CreateWhereCondition(string originalWhere)
    {
        string where = originalWhere;
        // Add where conditions from filters
        string classCondition = classFilter.WhereCondition;
        if (!string.IsNullOrEmpty(classCondition))
        {
            classCondition = string.Format("NodeClassID IN (SELECT ClassID FROM CMS_Class WHERE {0})", classCondition);
        }
        where = SqlHelper.AddWhereCondition(where, classCondition);
        where = SqlHelper.AddWhereCondition(where, nameFilter.WhereCondition);

        if (IncludeSiteCondition && !string.IsNullOrEmpty(siteSelector.SiteName) && (siteSelector.SiteName != TreeProvider.ALL_SITES))
        {
            where = SqlHelper.AddWhereCondition(where, "SiteName = '" + SqlHelper.EscapeQuotes(siteSelector.SiteName) + "'");
        }
        return where;
    }

    #endregion


    #region "Control events"

    protected void btnShow_Click(object sender, EventArgs e)
    {
        WhereCondition = CreateWhereCondition(base.WhereCondition);
        SelectedSite = DataHelper.GetNotEmpty(siteSelector.Value, TreeProvider.ALL_SITES);
    }

    #endregion
}