using System; using CMS.Controls; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.CMSHelper; using System.Collections; public partial class CMSFormControls_Filters_ObjectFilter : CMSAbstractBaseFilterControl { #region "Private variables" private GeneralizedInfo currentObject = null; #endregion #region "Public properties" /// /// Gets or sets where condition to uni selector. /// public override string WhereCondition { get { if (plcParentObject.Visible) { return (ValidationHelper.GetString(parentSelector.Value, "") != "") ? currentObject.ParentIDColumn + " = " + parentSelector.Value : String.Empty; } else { return (currentObject.SiteIDColumn != TypeInfo.COLUMN_NAME_UNKNOWN) ? siteSelector.GetSiteWhereCondition(currentObject.SiteIDColumn) : String.Empty; } } set { base.WhereCondition = value; } } #endregion #region "Events" protected override void OnInit(EventArgs e) { base.OnInit(e); if (!StopProcessing) { SetupControl(); } } protected override void OnLoad(EventArgs e) { base.OnLoad(e); GeneralizedInfo parentObject = CMSObjectHelper.GetObject(currentObject.ParentObjectType); // Check if object or parent are site related if (((parentObject != null) && (parentObject.SiteIDColumn != TypeInfo.COLUMN_NAME_UNKNOWN)) || (currentObject.SiteIDColumn != TypeInfo.COLUMN_NAME_UNKNOWN)) { // Initialize site selector siteSelector.Reload(false); siteSelector.PostbackOnDropDownChange = true; siteSelector.DropDownSingleSelect.SelectedIndexChanged += new EventHandler(DropDownSingleSelect_SelectedIndexChanged); // Check if global is allowed else select current site if (((parentObject != null) && parentObject.TypeInfo.SupportsGlobalObjects) || (currentObject.TypeInfo.SupportsGlobalObjects)) { siteSelector.AllowGlobal = true; } else { if (!URLHelper.IsPostback()) { siteSelector.Value = CMSContext.CurrentSiteID; } } } else { plcSite.Visible = false; } if ((parentObject != null) && (parentObject.SiteIDColumn != TypeInfo.COLUMN_NAME_UNKNOWN)) { // Get site where condition parentSelector.WhereCondition = siteSelector.GetSiteWhereCondition(parentObject.SiteIDColumn); parentSelector.Reload(true); } } /// /// Initialize filter controls. /// private void SetupControl() { if ((Parameters != null) && (Parameters["ObjectType"] != null)) { // Get current object currentObject = CMSObjectHelper.GetObject(ValidationHelper.GetString(Parameters["ObjectType"], String.Empty)); // Check if object is not null and has parent object if ((currentObject != null) && !String.IsNullOrEmpty(currentObject.ParentObjectType)) { lblParent.ResourceString = "objecttype." + currentObject.ParentObjectType.Replace(".", "_"); // Set parent object selector properties parentSelector.ObjectType = currentObject.ParentObjectType; parentSelector.DropDownSingleSelect.AutoPostBack = true; parentSelector.OnSelectionChanged += new EventHandler(parentSelector_OnSelectionChanged); } else { plcParentObject.Visible = false; } } } protected void DropDownSingleSelect_SelectedIndexChanged(object sender, EventArgs e) { FilterChanged = true; RaiseOnFilterChanged(); } protected void parentSelector_OnSelectionChanged(object sender, EventArgs e) { FilterChanged = true; RaiseOnFilterChanged(); } #endregion }