using System; using System.Web.UI.WebControls; using System.Web.UI; using CMS.Controls; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.UIControls; public partial class CMSFormControls_Filters_SiteGroupFilter : CMSAbstractBaseFilterControl { #region "Properties" /// /// Where condition. /// public override string WhereCondition { get { if (ShowSiteFilter) { base.WhereCondition = SqlHelperClass.AddWhereCondition(siteFilter.WhereCondition, GenerateWhereCondition(SelectedGroupID)); } else { base.WhereCondition = GenerateWhereCondition(SelectedGroupID); } return base.WhereCondition; } set { base.WhereCondition = value; } } /// /// Filtered control. /// public override Control FilteredControl { get { return siteFilter.FilteredControl; } set { base.FilteredControl = value; siteFilter.FilteredControl = value; } } /// /// Indicates if site filter should be displayed. /// public bool ShowSiteFilter { get { return ValidationHelper.GetBoolean(((CMSUserControl)siteFilter.FilteredControl).GetValue("ShowSiteFilter"), false); } } /// /// Document group ID. /// public int GroupID { get { return ValidationHelper.GetInteger(((CMSUserControl)siteFilter.FilteredControl).GetValue("GroupID"), 0); } } /// /// Selected group. /// private int SelectedGroupID { get { return ValidationHelper.GetInteger(drpGroup.SelectedValue, 0); } } #endregion #region "Page events" /// /// OnLoad override - check wheter filter is set. /// protected override void OnLoad(EventArgs e) { base.OnLoad(e); // Hide default site filter label siteFilter.ShowLabel = false; siteFilter.Selector.OnSelectionChanged += Filter_Changed; // Check if site filter should be displayed if (ShowSiteFilter) { lblSite.ResourceString = "general.site"; lblSite.DisplayColon = true; } else { plcSite.Visible = false; } // Check if group filter should be displayed if (GroupID > 0) { // Initialize DDL if (!RequestHelper.IsPostBack()) { string groupName = String.Empty; GeneralizedInfo gi = ModuleCommands.CommunityGetGroupInfo(GroupID); if (gi != null) { groupName = ValidationHelper.GetString(gi.GetValue("GroupDisplayName"), ""); } // Initialize DDL using obtained group name switch (siteFilter.FilterMode) { case "user": drpGroup.Items.Add(new ListItem(ResHelper.GetString("sitegroupselector.generalusers"), "0")); if (!String.IsNullOrEmpty(groupName)) { drpGroup.Items.Add(new ListItem(groupName, GroupID.ToString())); } break; case "role": drpGroup.Items.Add(new ListItem(ResHelper.GetString("sitegroupselector.generalroles"), "0")); if (!String.IsNullOrEmpty(groupName)) { drpGroup.Items.Add(new ListItem(groupName, GroupID.ToString())); } break; } } // Initialize group label lblGroup.Visible = true; lblGroup.ResourceString = "general.group"; lblGroup.DisplayColon = true; } else { plcGroup.Visible = false; } // Generate current where condition if (ShowSiteFilter) { WhereCondition = SqlHelperClass.AddWhereCondition(siteFilter.WhereCondition, GenerateWhereCondition(SelectedGroupID)); } else { WhereCondition = GenerateWhereCondition(SelectedGroupID); } } #endregion #region "Other methods" /// /// Generates where condition. /// protected string GenerateWhereCondition(int groupId) { if (!String.IsNullOrEmpty(siteFilter.FilterMode)) { switch (siteFilter.FilterMode) { case "user": { // If some group filter users if (groupId > 0) { return "UserID IN(SELECT MemberUserID FROM Community_GroupMember WHERE MemberGroupID = " + groupId + ")"; } } break; case "role": { // If some group filter users if (groupId > 0) { return "RoleGroupID = " + groupId; } return "RoleGroupID IS NULL"; } } } return String.Empty; } #endregion #region "Other events" /// /// Handles group DDL OnSelectionChanged event. /// protected void drpGroup_SelectedIndexChanged(object sender, EventArgs e) { // Raise OnFilterChange event RaiseOnFilterChanged(); } /// /// Handles site DDL OnSelectionChanged event. /// protected void Filter_Changed(object sender, EventArgs e) { // Raise OnFilterChange event RaiseOnFilterChanged(); } #endregion }