/// <summary> /// Creates the child controls. /// </summary> /// <param name="parentControl"></param> /// <returns></returns> public override System.Web.UI.Control[] CreateChildControls(System.Web.UI.Control parentControl) { var groupTypePicker = new GroupTypePicker(); groupTypePicker.ID = parentControl.ID + "_groupTypePicker"; groupTypePicker.Label = "Group Type"; groupTypePicker.GroupTypes = new GroupTypeService(new RockContext()).Queryable().OrderBy(a => a.Order).ThenBy(a => a.Name).ToList(); groupTypePicker.SelectedIndexChanged += groupTypePicker_SelectedIndexChanged; groupTypePicker.AutoPostBack = true; parentControl.Controls.Add(groupTypePicker); int?selectedGroupTypeId = parentControl.Page.Request.Params[groupTypePicker.UniqueID].AsIntegerOrNull(); groupTypePicker.SelectedGroupTypeId = selectedGroupTypeId; var cblRole = new RockCheckBoxList(); cblRole.Label = "with Group Role(s)"; cblRole.ID = parentControl.ID + "_cblRole"; parentControl.Controls.Add(cblRole); PopulateGroupRolesCheckList(groupTypePicker.SelectedGroupTypeId ?? 0, cblRole); return(new Control[2] { groupTypePicker, cblRole }); }
/// <summary> /// Creates the control(s) necessary for prompting user for a new value /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id"></param> /// <returns> /// The control /// </returns> public override System.Web.UI.Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id) { RockCheckBoxList editControl = new RockCheckBoxList { ID = id }; editControl.RepeatDirection = RepeatDirection.Horizontal; // Fixed bug preventing what was is stated in the 'Columns' help text: "If blank or 0 then 4 columns..." if (configurationValues.ContainsKey(REPEAT_COLUMNS) && configurationValues[REPEAT_COLUMNS].Value.AsInteger() != 0) { editControl.RepeatColumns = configurationValues[REPEAT_COLUMNS].Value.AsInteger(); } if (ListSource.Any()) { foreach (var item in ListSource) { ListItem listItem = new ListItem(item.Value, item.Key); editControl.Items.Add(listItem); } return(editControl); } else { return(null); } }
/// <summary> /// Creates the child controls. /// </summary> /// <returns></returns> public override Control[] CreateChildControls(Type entityType, FilterField filterControl) { int?selectedGroupTypeId = null; if (groupTypePicker != null) { selectedGroupTypeId = groupTypePicker.SelectedGroupTypeId; } groupTypePicker = new GroupTypePicker(); groupTypePicker.ID = filterControl.ID + "_groupTypePicker"; groupTypePicker.Label = "Group Type"; groupTypePicker.GroupTypes = new GroupTypeService(new RockContext()).Queryable().OrderBy(a => a.Order).ThenBy(a => a.Name).ToList(); groupTypePicker.SelectedIndexChanged += groupTypePicker_SelectedIndexChanged; groupTypePicker.AutoPostBack = true; groupTypePicker.SelectedGroupTypeId = selectedGroupTypeId; filterControl.Controls.Add(groupTypePicker); cblRole = new RockCheckBoxList(); cblRole.Label = "with Group Role(s)"; cblRole.ID = filterControl.ID + "_cblRole"; filterControl.Controls.Add(cblRole); PopulateGroupRolesCheckList(groupTypePicker.SelectedGroupTypeId ?? 0); return(new Control[2] { groupTypePicker, cblRole }); }
/// <summary> /// Gets the selection. /// </summary> /// <param name="entityType">Type of the entity.</param> /// <param name="controls">The controls.</param> /// <returns></returns> public override string GetSelection(Type entityType, Control[] controls) { if (controls.Count() < 6) { return(null); } GroupPicker groupPicker = controls[0] as GroupPicker; RockCheckBox cbChildGroups = controls[1] as RockCheckBox; RockCheckBox cbIncludeSelectedGroup = controls[2] as RockCheckBox; RockCheckBox cbChildGroupsPlusDescendants = controls[3] as RockCheckBox; RockCheckBoxList cblRoles = controls[4] as RockCheckBoxList; RockDropDownList ddlGroupMemberStatus = controls[5] as RockDropDownList; RockCheckBox cbInactiveGroups = controls[6] as RockCheckBox; List <int> groupIdList = groupPicker.SelectedValues.AsIntegerList(); var groupGuids = new GroupService(new RockContext()).GetByIds(groupIdList).Select(a => a.Guid).Distinct().ToList(); return(string.Format( "{0}|{1}|{2}|{3}|{4}|{5}|{6}", groupGuids.AsDelimited(","), cblRoles.SelectedValues.AsDelimited(","), cbChildGroups.Checked.ToString(), ddlGroupMemberStatus.SelectedValue, cbIncludeSelectedGroup.Checked.ToString(), cbChildGroupsPlusDescendants.Checked.ToString(), cbIncludeInactiveGroups.Checked.ToString())); }
/// <summary> /// Renders the controls. /// </summary> /// <param name="entityType">Type of the entity.</param> /// <param name="filterControl">The filter control.</param> /// <param name="writer">The writer.</param> /// <param name="controls">The controls.</param> public override void RenderControls(Type entityType, FilterField filterControl, HtmlTextWriter writer, Control[] controls) { if (controls.Count() >= 3) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "row"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Class, "col-md-6"); writer.RenderBeginTag(HtmlTextWriterTag.Div); GroupPicker groupPicker = controls[0] as GroupPicker; groupPicker.RenderControl(writer); RockCheckBox cbChildGroups = controls[1] as RockCheckBox; cbChildGroups.RenderControl(writer); writer.RenderEndTag(); writer.AddAttribute(HtmlTextWriterAttribute.Class, "col-md-6"); writer.RenderBeginTag(HtmlTextWriterTag.Div); RockCheckBoxList cblRoles = controls[2] as RockCheckBoxList; cblRoles.RenderControl(writer); RockDropDownList ddlGroupMemberStatus = controls[3] as RockDropDownList; ddlGroupMemberStatus.RenderControl(writer); writer.RenderEndTag(); writer.RenderEndTag(); } }
/// <summary> /// Creates the control(s) necessary for prompting user for a new value /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id"></param> /// <returns> /// The control /// </returns> public override Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id) { if (configurationValues != null) { ListControl editControl = new RockCheckBoxList { ID = id }; (( RockCheckBoxList )editControl).DisplayAsCheckList = true; (( RockCheckBoxList )editControl).RepeatDirection = RepeatDirection.Vertical; if (configurationValues.ContainsKey(VALUES_KEY)) { var values = JsonConvert.DeserializeObject <List <KeyValuePair> >(configurationValues[VALUES_KEY].Value); if (values != null) { foreach (var val in values) { editControl.Items.Add(new ListItem(val.Value, val.Key.ToString())); } } } if (editControl.Items.Count > 0) { return(editControl); } } return(null); }
/// <summary> /// Creates the control(s) necessary for prompting user for a new value /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id"></param> /// <returns> /// The control /// </returns> public override System.Web.UI.Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id) { RockCheckBoxList editControl = new RockCheckBoxList { ID = id }; editControl.RepeatDirection = RepeatDirection.Horizontal; if (configurationValues.ContainsKey(REPEAT_COLUMNS)) { editControl.RepeatColumns = configurationValues[REPEAT_COLUMNS].Value.AsInteger(); } if (ListSource.Any()) { foreach (var item in ListSource) { ListItem listItem = new ListItem(item.Value, item.Key); editControl.Items.Add(listItem); } return(editControl); } else { return(null); } }
/// <summary> /// Sets the selection. /// </summary> /// <param name="controls">The controls.</param> /// <param name="selection">The selection.</param> public override void SetSelection(System.Web.UI.Control[] controls, string selection) { string[] selectionValues = selection.Split('|'); if (selectionValues.Length >= 1) { RockRadioButtonList rblShowAsLinkType = controls[0] as RockRadioButtonList; GroupTypePicker groupTypePicker = controls[1] as GroupTypePicker; RockCheckBoxList cblRole = controls[2] as RockCheckBoxList; RockDropDownList ddlGroupMemberStatus = controls[3] as RockDropDownList; rblShowAsLinkType.SelectedValue = selectionValues[0].ConvertToEnum <ShowAsLinkType>(ShowAsLinkType.NameOnly).ConvertToInt().ToString(); if (selectionValues.Length >= 3) { Guid groupTypeGuid = selectionValues[1].AsGuid(); var groupTypeId = new GroupTypeService(new RockContext()).GetId(groupTypeGuid); if (groupTypeId.HasValue) { groupTypePicker.SetValue(groupTypeId.Value); } groupTypePicker_SelectedIndexChanged(groupTypePicker, new EventArgs()); string[] selectedRoleGuids = selectionValues[2].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in cblRole.Items.OfType <ListItem>()) { item.Selected = selectedRoleGuids.Contains(item.Value); } ddlGroupMemberStatus.SetValue(selectionValues[3]); } } }
/// <summary> /// Creates the control(s) necessary for prompting user for a new value /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id"></param> /// <returns> /// The control /// </returns> public override Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id) { if (configurationValues != null) { ListControl editControl = null; if (configurationValues.ContainsKey(ENHANCED_SELECTION_KEY) && configurationValues[ENHANCED_SELECTION_KEY].Value.AsBoolean()) { editControl = new RockListBox { ID = id }; ((RockListBox)editControl).DisplayDropAsAbsolute = true; } else { editControl = new RockCheckBoxList { ID = id }; ((RockCheckBoxList)editControl).RepeatDirection = RepeatDirection.Horizontal; } foreach (var keyVal in Helper.GetConfiguredValues(configurationValues)) { editControl.Items.Add(new ListItem(keyVal.Value, keyVal.Key)); } if (editControl.Items.Count > 0) { return(editControl); } } return(null); }
/// <summary> /// Creates the HTML controls required to configure this type of field /// </summary> /// <returns></returns> public override List <Control> ConfigurationControls() { List <Control> controls = new List <Control>(); var clbSlidingDateRangeTypes = new RockCheckBoxList(); clbSlidingDateRangeTypes.Label = "Enabled Sliding Date Range Types"; clbSlidingDateRangeTypes.Help = "Select specific types or leave all blank to use all of them"; controls.Add(clbSlidingDateRangeTypes); var typesList = Enum.GetValues(typeof(SlidingDateRangePicker.SlidingDateRangeType)).Cast <SlidingDateRangePicker.SlidingDateRangeType>(); foreach (var type in typesList) { clbSlidingDateRangeTypes.Items.Add(new ListItem(type.ConvertToString(), type.ConvertToInt().ToString())); } var clbSlidingDateRangeUnits = new RockCheckBoxList(); clbSlidingDateRangeUnits.Label = "Enabled Sliding Date Range Units"; clbSlidingDateRangeUnits.Help = "Select specific units or leave all blank to use all of them"; controls.Add(clbSlidingDateRangeUnits); var unitsList = Enum.GetValues(typeof(SlidingDateRangePicker.TimeUnitType)).Cast <SlidingDateRangePicker.TimeUnitType>(); foreach (var type in unitsList) { clbSlidingDateRangeUnits.Items.Add(new ListItem(type.ConvertToString(), type.ConvertToInt().ToString())); } return(controls); }
/// <summary> /// Populates the step campuses. /// </summary> private void PopulateStepCampuses(RockCheckBoxList cblStepCampus) { cblStepCampus.DataSource = CampusCache.All(); cblStepCampus.DataTextField = "Name"; cblStepCampus.DataValueField = "Guid"; cblStepCampus.DataBind(); }
/// <summary> /// Creates the child controls. /// </summary> /// <returns></returns> public override Control[] CreateChildControls(Type entityType, FilterField filterControl) { gp = new GroupPicker(); gp.ID = filterControl.ID + "_gp"; gp.Label = "Group"; gp.SelectItem += gp_SelectItem; filterControl.Controls.Add(gp); cbChildGroups = new RockCheckBox(); cbChildGroups.ID = filterControl.ID + "_cbChildsGroups"; cbChildGroups.Text = "Include Child Group(s)"; cbChildGroups.AutoPostBack = true; cbChildGroups.CheckedChanged += gp_SelectItem; filterControl.Controls.Add(cbChildGroups); cblRole = new RockCheckBoxList(); cblRole.Label = "with Group Member Role(s) (optional)"; cblRole.ID = filterControl.ID + "_cblRole"; cblRole.Visible = false; filterControl.Controls.Add(cblRole); RockDropDownList ddlGroupMemberStatus = new RockDropDownList(); ddlGroupMemberStatus.CssClass = "js-group-member-status"; ddlGroupMemberStatus.ID = filterControl.ID + "_ddlGroupMemberStatus"; ddlGroupMemberStatus.Label = "with Group Member status"; ddlGroupMemberStatus.Help = "Select a specific group member status to only include group members with that status"; ddlGroupMemberStatus.BindToEnum <GroupMemberStatus>(true); ddlGroupMemberStatus.SetValue(GroupMemberStatus.Active.ConvertToInt()); filterControl.Controls.Add(ddlGroupMemberStatus); return(new Control[4] { gp, cbChildGroups, cblRole, ddlGroupMemberStatus }); }
/// <summary> /// Sets the selection. /// </summary> /// <param name="entityType">Type of the entity.</param> /// <param name="controls">The controls.</param> /// <param name="selection">The selection.</param> public override void SetSelection(Type entityType, Control[] controls, string selection) { string[] selectionValues = selection.Split('|'); if (selectionValues.Length >= 2) { Guid groupTypeGuid = selectionValues[0].AsGuid(); var groupType = new GroupTypeService(new RockContext()).Get(groupTypeGuid); if (groupType != null) { (controls[0] as GroupTypePicker).SetValue(groupType.Id); } groupTypePicker_SelectedIndexChanged(this, new EventArgs()); string[] selectedRoleGuids = selectionValues[1].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); RockCheckBoxList cblRole = controls[1] as RockCheckBoxList; foreach (var item in cblRole.Items.OfType <ListItem>()) { item.Selected = selectedRoleGuids.Contains(item.Value); } RockDropDownList ddlGroupMemberStatus = controls[2] as RockDropDownList; if (selectionValues.Length >= 3) { ddlGroupMemberStatus.SetValue(selectionValues[2]); } else { ddlGroupMemberStatus.SetValue(string.Empty); } } }
/// <summary> /// Sets the selection. /// </summary> /// <param name="entityType">Type of the entity.</param> /// <param name="controls">The controls.</param> /// <param name="selection">The selection.</param> public override void SetSelection(Type entityType, Control[] controls, string selection) { string[] selectionValues = selection.Split('|'); if (selectionValues.Length >= 2) { Guid groupGuid = selectionValues[0].AsGuid(); var group = new GroupService(new RockContext()).Get(groupGuid); if (group != null) { (controls[0] as GroupPicker).SetValue(group.Id); } CheckBox cbChildGroups = controls[1] as CheckBox; if (selectionValues.Length >= 3) { cbChildGroups.Checked = selectionValues[2].AsBooleanOrNull() ?? false; } gp_SelectItem(this, new EventArgs()); string[] selectedRoleGuids = selectionValues[1].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); RockCheckBoxList cblRole = controls[2] as RockCheckBoxList; foreach (var item in cblRole.Items.OfType <ListItem>()) { item.Selected = selectedRoleGuids.Contains(item.Value); } } }
/// <summary> /// Creates the HTML controls required to configure this type of field /// </summary> /// <returns></returns> public override List <Control> ConfigurationControls() { var controls = base.ConfigurationControls(); // Add checkbox for deciding if the filter mode should be hidden var cbHideFilterMode = new RockCheckBox { AutoPostBack = true, Label = "Hide Filter mode", Text = "Yes", Help = "When set, filter mode will be hidden." }; cbHideFilterMode.CheckedChanged += OnQualifierUpdated; controls.Add(cbHideFilterMode); var defaultComparisonType = Reporting.ComparisonHelper.StringFilterComparisonTypes | Model.ComparisonType.RegularExpression; var cbComparisonTypes = new RockCheckBoxList() { AutoPostBack = true, Label = "Comparison Types", Required = true, RepeatColumns = 2, Help = "The comparison types the user can select from." }; cbComparisonTypes.BindToEnum <Model.ComparisonType>(); cbComparisonTypes.SetValues(defaultComparisonType.GetFlags <Model.ComparisonType>().Cast <int>()); cbComparisonTypes.SelectedIndexChanged += OnQualifierUpdated; controls.Add(cbComparisonTypes); return(controls); }
/// <summary> /// Creates the child controls. /// </summary> /// <returns></returns> public override Control[] CreateChildControls(Type entityType, FilterField filterControl) { gp = new GroupPicker(); gp.ID = filterControl.ID + "_gp"; gp.Label = "Group"; gp.SelectItem += gp_SelectItem; filterControl.Controls.Add(gp); cbChildGroups = new RockCheckBox(); cbChildGroups.ID = filterControl.ID + "_cbChildsGroups"; cbChildGroups.Text = "Include Child Group(s)"; cbChildGroups.AutoPostBack = true; cbChildGroups.CheckedChanged += gp_SelectItem; filterControl.Controls.Add(cbChildGroups); cblRole = new RockCheckBoxList(); cblRole.Label = "with Group Member Role(s) (optional)"; cblRole.ID = filterControl.ID + "_cblRole"; cblRole.Visible = false; filterControl.Controls.Add(cblRole); return(new Control[3] { gp, cbChildGroups, cblRole }); }
/// <summary> /// Populates the group roles. /// </summary> /// <param name="checkboxList"></param> /// <param name="groupTypeGuid"></param> private void PopulateRelationshipTypesSelector(RockCheckBoxList checkboxList, Guid?groupTypeGuid) { bool showSelector = false; checkboxList.Items.Clear(); var groupType = GroupTypeCache.Read(groupTypeGuid.GetValueOrDefault()); if (groupType != null) { var selectableRoles = new GroupTypeRoleService(new RockContext()).GetByGroupTypeId(groupType.Id); // Exclude the Owner Role from the list of selectable Roles because a Person cannot be related to themselves. var ownerGuid = GroupRole.GROUPROLE_KNOWN_RELATIONSHIPS_OWNER.AsGuid(); selectableRoles = selectableRoles.Where(x => x.Guid != ownerGuid); checkboxList.Items.Clear(); foreach (var item in selectableRoles) { checkboxList.Items.Add(new ListItem(item.Name, item.Guid.ToString())); } showSelector = checkboxList.Items.Count > 0; } checkboxList.Visible = showSelector; }
/// <summary> /// Gets the filter value control. /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id">The identifier.</param> /// <param name="required">if set to <c>true</c> [required].</param> /// <param name="filterMode">The filter mode.</param> /// <returns></returns> public override Control FilterValueControl(Dictionary <string, ConfigurationValue> configurationValues, string id, bool required, FilterMode filterMode) { var cbList = new RockCheckBoxList(); cbList.ID = string.Format("{0}_cbList", id); cbList.AddCssClass("js-filter-control"); cbList.RepeatDirection = RepeatDirection.Horizontal; bool includeInactive = (configurationValues != null && configurationValues.ContainsKey(INCLUDE_INACTIVE_KEY) && configurationValues[INCLUDE_INACTIVE_KEY].Value.AsBoolean()); var campusList = CampusCache.All(includeInactive); if (campusList.Any()) { foreach (var campus in campusList) { ListItem listItem = new ListItem(campus.Name, campus.Guid.ToString()); cbList.Items.Add(listItem); } return(cbList); } return(null); }
/// <summary> /// Finds all approved prayer requests for the given selected categories and orders them by least prayed-for. /// Also updates the prayer count for the first item in the list. /// </summary> /// <param name="categoriesList"></param> private void SetAndDisplayPrayerRequests(RockCheckBoxList categoriesList) { RockContext rockContext = new RockContext(); PrayerRequestService service = new PrayerRequestService(rockContext); var prayerRequestQuery = service.GetByCategoryIds(categoriesList.SelectedValuesAsInt); var campusId = cpCampus.SelectedValueAsInt(); if (campusId.HasValue) { prayerRequestQuery = prayerRequestQuery.Where(a => a.CampusId == campusId); } var limitToPublic = GetAttributeValue(PUBLIC_ONLY).AsBoolean(); if (limitToPublic) { prayerRequestQuery = prayerRequestQuery.Where(a => a.IsPublic.HasValue && a.IsPublic.Value); } var prayerRequests = prayerRequestQuery.OrderByDescending(p => p.IsUrgent).ThenBy(p => p.PrayerCount).ToList(); List <int> list = prayerRequests.Select(p => p.Id).ToList <int>(); PrayerRequestIds = list; if (list.Count > 0) { UpdateSessionCountLabel(1, list.Count); hfPrayerIndex.Value = "0"; PrayerRequest request = prayerRequests.First(); ShowPrayerRequest(request, rockContext); } }
/// <summary> /// Loads the custom filters. /// </summary> private void LoadCustomFilters() { var enabledModelIds = new List <int>(); if (GetAttributeValue(AttributeKey.EnabledModels).IsNotNullOrWhiteSpace()) { enabledModelIds = GetAttributeValue(AttributeKey.EnabledModels).Split(',').Select(int.Parse).ToList(); } var entities = EntityTypeCache.All(); var indexableEntities = entities.Where(i => i.IsIndexingEnabled == true).ToList(); // if select entities are configured further filter by them if (enabledModelIds.Count > 0) { indexableEntities = indexableEntities.Where(i => enabledModelIds.Contains(i.Id)).ToList(); } foreach (var entity in indexableEntities) { var entityType = entity.GetEntityType(); if (SupportsIndexFieldFiltering(entityType)) { var filterOptions = GetIndexFilterConfig(entityType); RockCheckBoxList filterConfig = new RockCheckBoxList(); filterConfig.Label = filterOptions.FilterLabel; filterConfig.CssClass = "js-entity-id-" + entity.Id.ToString(); filterConfig.CssClass += " js-entity-filter-field"; filterConfig.RepeatDirection = RepeatDirection.Horizontal; filterConfig.Attributes.Add("entity-id", entity.Id.ToString()); filterConfig.Attributes.Add("entity-filter-field", filterOptions.FilterField); filterConfig.DataSource = filterOptions.FilterValues.Where(i => i != null); filterConfig.DataBind(); // set any selected values from the query string if (!string.IsNullOrWhiteSpace(PageParameter(filterOptions.FilterField))) { List <string> selectedValues = PageParameter(filterOptions.FilterField).Split(',').ToList(); foreach (ListItem item in filterConfig.Items) { if (selectedValues.Contains(item.Value)) { item.Selected = true; } } } if (filterOptions.FilterValues.Count > 0) { HtmlGenericContainer filterWrapper = new HtmlGenericContainer("div", "col-md-6"); filterWrapper.Controls.Add(filterConfig); phFilters.Controls.Add(filterWrapper); } } } }
/// <summary> /// Sets the configuration value. /// </summary> /// <param name="controls"></param> /// <param name="configurationValues"></param> public override void SetConfigurationValues(List <Control> controls, Dictionary <string, ConfigurationValue> configurationValues) { base.SetConfigurationValues(controls, configurationValues); if (controls != null && configurationValues != null) { CheckBox cbIncludeInactive = controls.Count > 2 ? controls[2] as CheckBox : null; RockCheckBoxList cblCampusTypes = controls.Count > 3 ? controls[3] as RockCheckBoxList : null; RockCheckBoxList cblCampusStatuses = controls.Count > 4 ? controls[4] as RockCheckBoxList : null; RockCheckBoxList cblSelectableValues = controls.Count > 5 ? controls[5] as RockCheckBoxList : null; if (cbIncludeInactive != null) { cbIncludeInactive.Checked = configurationValues.GetValueOrNull(INCLUDE_INACTIVE_KEY).AsBooleanOrNull() ?? false; } if (cblCampusTypes != null) { var selectedCampusTypes = configurationValues.GetValueOrNull(FILTER_CAMPUS_TYPES_KEY)?.SplitDelimitedValues(false); if (selectedCampusTypes != null && selectedCampusTypes.Any()) { foreach (ListItem listItem in cblCampusTypes.Items) { listItem.Selected = selectedCampusTypes.Contains(listItem.Value); } } } if (cblCampusStatuses != null) { var selectedCampusStatuses = configurationValues.GetValueOrNull(FILTER_CAMPUS_STATUS_KEY)?.SplitDelimitedValues(false); if (selectedCampusStatuses != null && selectedCampusStatuses.Any()) { foreach (ListItem listItem in cblCampusStatuses.Items) { listItem.Selected = selectedCampusStatuses.Contains(listItem.Value); } } } if (cblSelectableValues != null) { var selectableValues = configurationValues.GetValueOrNull(SELECTABLE_CAMPUSES_KEY)?.SplitDelimitedValues(false); var activeCampuses = CampusCache.All(cbIncludeInactive.Checked).Select(v => new { Text = v.Name, Value = v.Id }); cblSelectableValues.DataSource = activeCampuses; cblSelectableValues.DataBind(); if (selectableValues != null && selectableValues.Any()) { foreach (ListItem listItem in cblSelectableValues.Items) { listItem.Selected = selectableValues.Contains(listItem.Value); } } } } }
/// <summary> /// Populates the selection lists for Step Type and Step Status. /// </summary> /// <param name="filterField">The filter field.</param> private void PopulateStepProgramRelatedSelectionLists(FilterField filterField) { var dataContext = new RockContext(); var programService = new StepProgramService(dataContext); SingleEntityPicker <StepProgram> stepProgramSingleEntityPicker = filterField.ControlsOfTypeRecursive <SingleEntityPicker <StepProgram> >().FirstOrDefault(c => c.HasCssClass("js-step-program-picker")); RockCheckBoxList cblStepType = filterField.ControlsOfTypeRecursive <RockCheckBoxList>().FirstOrDefault(c => c.HasCssClass("js-step-type")); RockCheckBoxList _cblStepStatus = filterField.ControlsOfTypeRecursive <RockCheckBoxList>().FirstOrDefault(c => c.HasCssClass("js-step-status")); int?stepProgramId = stepProgramSingleEntityPicker.SelectedId; StepProgram stepProgram = null; if (stepProgramId != null) { stepProgram = programService.Get(stepProgramId.Value); } if (stepProgram != null) { // Step Type list cblStepType.Items.Clear(); var stepTypeService = new StepTypeService(dataContext); var stepTypes = stepTypeService.Queryable().Where(x => x.StepProgramId == stepProgramId); foreach (var item in stepTypes) { cblStepType.Items.Add(new ListItem(item.Name, item.Guid.ToString())); } cblStepType.Visible = cblStepType.Items.Count > 0; // Step Status list _cblStepStatus.Items.Clear(); var stepStatusService = new StepStatusService(dataContext); var stepStatuses = stepStatusService.Queryable().Where(x => x.StepProgramId == stepProgramId); foreach (var item in stepStatuses) { _cblStepStatus.Items.Add(new ListItem(item.Name, item.Guid.ToString())); } _cblStepStatus.Visible = _cblStepStatus.Items.Count > 0; } else { cblStepType.Visible = false; _cblStepStatus.Visible = false; } }
/// <summary> /// Creates the control(s) necessary for prompting user for a new value /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id"></param> /// <returns> /// The control /// </returns> public override Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id) { int entityTypeId = 0; string qualifierColumn = string.Empty; string qualifierValue = string.Empty; if (configurationValues != null) { if (configurationValues.ContainsKey(ENTITY_TYPE_NAME_KEY)) { string entityTypeName = configurationValues[ENTITY_TYPE_NAME_KEY].Value; if (!string.IsNullOrWhiteSpace(entityTypeName) && entityTypeName != None.IdValue) { var entityType = EntityTypeCache.Read(entityTypeName); if (entityType != null) { entityTypeId = entityType.Id; } } } if (configurationValues.ContainsKey(QUALIFIER_COLUMN_KEY)) { qualifierColumn = configurationValues[QUALIFIER_COLUMN_KEY].Value; } if (configurationValues.ContainsKey(QUALIFIER_VALUE_KEY)) { qualifierValue = configurationValues[QUALIFIER_VALUE_KEY].Value; } } RockCheckBoxList editControl = new RockCheckBoxList { ID = id }; editControl.RepeatDirection = RepeatDirection.Horizontal; using (var rockContext = new RockContext()) { var noteTypes = new NoteTypeService(rockContext).Get(entityTypeId, qualifierColumn, qualifierValue).ToList(); if (noteTypes.Any()) { foreach (var noteType in noteTypes) { ListItem listItem = new ListItem(noteType.Name, noteType.Guid.ToString().ToUpper()); editControl.Items.Add(listItem); } return(editControl); } } return(null); }
/// <summary> /// Gets the selected groups. /// </summary> /// <returns></returns> private List <int> GetSelectedGroups() { var groups = new List <int>(); foreach (RepeaterItem item in rptGroups.Items) { RockCheckBoxList rockCheckBoxList = ( RockCheckBoxList )item.FindControl("cblGroups"); groups.AddRange(rockCheckBoxList.SelectedValues.AsIntegerList()); } return(groups); }
/// <summary> /// Sets the selection. /// </summary> /// <param name="controls">The controls.</param> /// <param name="selection">The selection.</param> public override void SetSelection(System.Web.UI.Control[] controls, string selection) { if (controls.Count() == 1) { RockCheckBoxList checkBoxList = controls[0] as RockCheckBoxList; if (checkBoxList != null && !string.IsNullOrEmpty(selection)) { string[] values = selection.Split(','); checkBoxList.SetValues(values); } } }
/// <summary> /// Gets the configuration value. /// </summary> /// <param name="controls">The controls.</param> /// <returns></returns> public override Dictionary <string, ConfigurationValue> ConfigurationValues(List <Control> controls) { Dictionary <string, ConfigurationValue> configurationValues = new Dictionary <string, ConfigurationValue>(); configurationValues.Add(INCLUDE_INACTIVE_KEY, new ConfigurationValue("Include Inactive", "When set, inactive campuses will be included in the list.", string.Empty)); configurationValues.Add(FILTER_CAMPUS_TYPES_KEY, new ConfigurationValue("Filter Campus Types", string.Empty, string.Empty)); configurationValues.Add(FILTER_CAMPUS_STATUS_KEY, new ConfigurationValue("Filter Campus Status", string.Empty, string.Empty)); configurationValues.Add(SELECTABLE_CAMPUSES_KEY, new ConfigurationValue(" Selectable Campuses", "Specify the campuses eligible for this control. If none are specified then all will be displayed.", string.Empty)); if (controls != null) { CheckBox cbIncludeInactive = controls.Count > 0 ? controls[0] as CheckBox : null; RockCheckBoxList cblCampusTypes = controls.Count > 1 ? controls[1] as RockCheckBoxList : null; RockCheckBoxList cblCampusStatuses = controls.Count > 2 ? controls[2] as RockCheckBoxList : null; RockCheckBoxList cblSelectableValues = controls.Count > 3 ? controls[3] as RockCheckBoxList : null; if (cbIncludeInactive != null) { configurationValues[INCLUDE_INACTIVE_KEY].Value = cbIncludeInactive.Checked.ToString(); } if (cblCampusTypes != null) { configurationValues[FILTER_CAMPUS_TYPES_KEY].Value = string.Join(",", cblCampusTypes.SelectedValues); } if (cblCampusStatuses != null) { configurationValues[FILTER_CAMPUS_STATUS_KEY].Value = string.Join(",", cblCampusStatuses.SelectedValues); } if (cblSelectableValues != null) { var selectableValues = new List <string>(cblSelectableValues.SelectedValues); var activeCampuses = CampusCache.All(cbIncludeInactive.Checked).Select(v => new { Text = v.Name, Value = v.Id }); cblSelectableValues.DataSource = activeCampuses; cblSelectableValues.DataBind(); if (selectableValues != null && selectableValues.Any()) { foreach (ListItem listItem in cblSelectableValues.Items) { listItem.Selected = selectableValues.Contains(listItem.Value); } } configurationValues[SELECTABLE_CAMPUSES_KEY].Value = string.Join(",", cblSelectableValues.SelectedValues); } } return(configurationValues); }
/// <summary> /// Gets the selection. /// </summary> /// <param name="controls">The controls.</param> /// <returns></returns> public override string GetSelection(System.Web.UI.Control[] controls) { if (controls.Count() == 1) { RockCheckBoxList checkBoxList = controls[0] as RockCheckBoxList; if (checkBoxList != null) { return(string.Join(",", checkBoxList.SelectedValues)); } } return(null); }
/// <summary> /// Renders the controls. /// </summary> /// <param name="entityType">Type of the entity.</param> /// <param name="filterControl">The filter control.</param> /// <param name="writer">The writer.</param> /// <param name="controls">The controls.</param> public override void RenderControls(Type entityType, FilterField filterControl, HtmlTextWriter writer, Control[] controls) { if (controls.Count() < 9) { return; } GroupPicker groupPicker = controls[0] as GroupPicker; RockCheckBox cbChildGroups = controls[1] as RockCheckBox; RockCheckBox cbIncludeSelectedGroup = controls[2] as RockCheckBox; RockCheckBox cbChildGroupsPlusDescendants = controls[3] as RockCheckBox; RockCheckBoxList cblRoles = controls[4] as RockCheckBoxList; RockDropDownList ddlGroupMemberStatus = controls[5] as RockDropDownList; RockCheckBox cbIncludeInactiveGroups = controls[6] as RockCheckBox; PanelWidget pwAdvanced = controls[8] as PanelWidget; writer.AddAttribute(HtmlTextWriterAttribute.Class, "row"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Class, "col-md-6"); writer.RenderBeginTag(HtmlTextWriterTag.Div); groupPicker.RenderControl(writer); cbChildGroups.RenderControl(writer); if (!cbChildGroups.Checked) { writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled"); } writer.RenderBeginTag(HtmlTextWriterTag.Div); cbIncludeSelectedGroup.ContainerCssClass = "margin-l-md"; cbIncludeSelectedGroup.RenderControl(writer); cbChildGroupsPlusDescendants.ContainerCssClass = "margin-l-md"; cbChildGroupsPlusDescendants.RenderControl(writer); cbIncludeInactiveGroups.ContainerCssClass = "margin-l-md"; cbIncludeInactiveGroups.RenderControl(writer); writer.RenderEndTag(); writer.RenderEndTag(); writer.AddAttribute(HtmlTextWriterAttribute.Class, "col-md-6"); writer.RenderBeginTag(HtmlTextWriterTag.Div); cblRoles.RenderControl(writer); ddlGroupMemberStatus.RenderControl(writer); pwAdvanced.RenderControl(writer); writer.RenderEndTag(); writer.RenderEndTag(); }
/// <summary> /// Creates the child controls. /// </summary> /// <returns></returns> public override Control[] CreateChildControls(Type entityType, FilterField filterControl) { int?selectedGroupTypeId = null; if (groupTypePicker != null) { selectedGroupTypeId = groupTypePicker.SelectedGroupTypeId; } groupTypePicker = new GroupTypePicker(); groupTypePicker.ID = filterControl.ID + "_groupTypePicker"; groupTypePicker.Label = "Group Type"; groupTypePicker.GroupTypes = new GroupTypeService(new RockContext()).Queryable().OrderBy(a => a.Order).ThenBy(a => a.Name).ToList(); groupTypePicker.SelectedIndexChanged += groupTypePicker_SelectedIndexChanged; groupTypePicker.AutoPostBack = true; groupTypePicker.SelectedGroupTypeId = selectedGroupTypeId; filterControl.Controls.Add(groupTypePicker); cblRole = new RockCheckBoxList(); cblRole.Label = "with Group Role(s)"; cblRole.ID = filterControl.ID + "_cblRole"; filterControl.Controls.Add(cblRole); PopulateGroupRolesCheckList(groupTypePicker.SelectedGroupTypeId ?? 0); RockDropDownList ddlGroupMemberStatus = new RockDropDownList(); ddlGroupMemberStatus.CssClass = "js-group-member-status"; ddlGroupMemberStatus.ID = filterControl.ID + "_ddlGroupMemberStatus"; ddlGroupMemberStatus.Label = "with Group Member Status"; ddlGroupMemberStatus.Help = "Select a specific group member status to only include group members with that status. Leaving this blank will return all members."; ddlGroupMemberStatus.BindToEnum <GroupMemberStatus>(true); ddlGroupMemberStatus.SetValue(GroupMemberStatus.Active.ConvertToInt()); filterControl.Controls.Add(ddlGroupMemberStatus); RockDropDownList ddlGroupStatus = new RockDropDownList(); ddlGroupStatus.CssClass = "js-group-status"; ddlGroupStatus.ID = filterControl.ID + "_ddlGroupStatus"; ddlGroupStatus.Label = "with Group Status"; ddlGroupStatus.Items.Insert(0, new ListItem("[All]", "")); ddlGroupStatus.Items.Insert(1, new ListItem("Active", "True")); ddlGroupStatus.Items.Insert(2, new ListItem("Inactive", "False")); ddlGroupStatus.SetValue(true.ToString()); filterControl.Controls.Add(ddlGroupStatus); return(new Control[4] { groupTypePicker, cblRole, ddlGroupStatus, ddlGroupMemberStatus }); }
/// <summary> /// Creates the control(s) necessary for prompting user for a new value /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id"></param> /// <returns> /// The control /// </returns> public override System.Web.UI.Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id) { if (configurationValues == null) { return(null); } ListControl editControl = null; if (configurationValues.ContainsKey(ENHANCED_SELECTION_KEY) && configurationValues[ENHANCED_SELECTION_KEY].Value.AsBoolean()) { editControl = new RockListBox { ID = id }; (( RockListBox )editControl).DisplayDropAsAbsolute = true; } else { editControl = new RockCheckBoxList { ID = id }; var rockCheckBoxList = ( RockCheckBoxList )editControl; rockCheckBoxList.RepeatDirection = RepeatDirection.Horizontal; // Fixed bug preventing what was is stated in the 'Columns' help text: "If blank or 0 then 4 columns..." if (configurationValues.ContainsKey(REPEAT_COLUMNS) && configurationValues[REPEAT_COLUMNS].Value.AsInteger() != 0) { rockCheckBoxList.RepeatColumns = configurationValues[REPEAT_COLUMNS].Value.AsInteger(); } } var listSource = GetListSource(configurationValues); if (listSource.Any()) { foreach (var item in listSource) { ListItem listItem = new ListItem(item.Value, item.Key); editControl.Items.Add(listItem); } return(editControl); } else { return(null); } }