using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using CMS.CMSHelper; using CMS.Controls; using CMS.ExtendedControls; using CMS.GlobalHelper; using CMS.SettingsProvider; public partial class CMSModules_Content_Controls_Filters_ObjectsRecycleBinFilter : CMSAbstractBaseFilterControl { #region "Private variables" private bool mIsSingleSite = false; private bool mLoadObjTypes = true; #endregion #region "Public properties" /// /// Returns selected user identifier. /// public int SelectedUser { get { Control postbackControl = ControlsHelper.GetPostBackControl(Page); return ValidationHelper.GetInteger((postbackControl == btnShow) ? userSelector.Value : ViewState["SelectedUser"], CMSContext.CurrentUser.UserID); } private set { userSelector.Value = value; ViewState["SelectedUser"] = value; WhereCondition = CreateWhereCondition(base.WhereCondition); } } /// /// Where condition. /// 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; } } /// /// Determines whether filter is set. /// public bool FilterIsSet { get { int userId = ValidationHelper.GetInteger(userSelector.Value, 0); string objType = ValidationHelper.GetString(objTypeSelector.Value, ""); return nameFilter.FilterIsSet || !String.IsNullOrEmpty(objType) || ((userId > 0) && UsersPlaceHolder.Visible); } } /// /// Gets place holder with user selector. /// public PlaceHolder UsersPlaceHolder { get { return plcUsers; } } /// /// Site ID to filter usable values. /// public int SiteID { get { return userSelector.SiteID; } set { userSelector.SiteID = value; } } /// /// Indicates if all item should be displayed in user selector. /// public bool IsSingleSite { get { return mIsSingleSite; } set { mIsSingleSite = value; } } /// /// Indicates if all available users should be displayed. /// public bool DisplayUsersFromAllSites { get { return userSelector.DisplayUsersFromAllSites; } set { userSelector.DisplayUsersFromAllSites = value; } } #endregion #region "Page events" /// /// Page Init event. /// protected void Page_Init(object sender, EventArgs e) { if (!RequestHelper.IsPostBack()) { // Preselect default value SelectedUser = CMSContext.CurrentUser.UserID; } } /// /// Page load event. /// protected void Page_Load(object sender, EventArgs e) { userSelector.DropDownSingleSelect.AutoPostBack = true; if (!RequestHelper.IsCallback()) { userSelector.DropDownSingleSelect.Width = new Unit(305); objTypeSelector.DropDownListControl.Width = new Unit(305); } if (!RequestHelper.IsPostBack()) { // Preselect default value SelectedUser = CMSContext.CurrentUser.UserID; } } /// /// Page pre render event. /// protected void Page_PreRender(object sender, EventArgs e) { if (mLoadObjTypes) { SetObjTypeSelector(); objTypeSelector.Reload(true); } pnlObjType.Update(); } #endregion #region "Control methods" /// /// Reload control data. /// public void ReloadData() { SetObjTypeSelector(); objTypeSelector.Reload(true); mLoadObjTypes = false; WhereCondition = null; } private string CreateWhereCondition(string originalWhere) { string where = originalWhere; // Add where conditions from filters where = SqlHelperClass.AddWhereCondition(where, nameFilter.WhereCondition); string objType = SqlHelperClass.GetSafeQueryString(ValidationHelper.GetString(objTypeSelector.Value, ""), false); if (!string.IsNullOrEmpty(objType)) { where = SqlHelperClass.AddWhereCondition(where, "VersionObjectType LIKE N'" + objType + "'"); } int userId = ValidationHelper.GetInteger(userSelector.Value, 0); if (userId > 0) { where = SqlHelperClass.AddWhereCondition(where, "VersionDeletedByUserID = " + userId); } return where; } /// /// Set object type selector properties /// protected void SetObjTypeSelector() { objTypeSelector.UserID = ValidationHelper.GetInteger(userSelector.Value, 0); if (SiteID > 0) { objTypeSelector.WhereCondition = "VersionObjectSiteID = " + SiteID; if (IsSingleSite) { objTypeSelector.WhereCondition = SqlHelperClass.AddWhereCondition(objTypeSelector.WhereCondition, "VersionObjectSiteID IS NULL", "OR"); } } else if ((SiteID == 0) && !IsSingleSite) { objTypeSelector.WhereCondition = SqlHelperClass.AddWhereCondition(objTypeSelector.WhereCondition, "VersionObjectSiteID IS NULL"); } } #endregion #region "Control events" protected void btnShow_Click(object sender, EventArgs e) { SelectedUser = ValidationHelper.GetInteger(userSelector.Value, CMSContext.CurrentUser.UserID); } #endregion }