protected void rptPartions_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { /*var ddlAttribute = ( DropDownList ) e.Item.FindControl( "ddlAttribute" ); * ddlAttribute.DataSource = attributes; * ddlAttribute.DataTextField = "Value"; * ddlAttribute.DataValueField = "Key"; * ddlAttribute.DataBind(); */ var partition = (( PartitionSettings )e.Item.DataItem); var phPartitionControl = ( PlaceHolder )e.Item.FindControl("phPartitionControl"); RockTextBox tbAttributeKey = (( RockTextBox )e.Item.FindControl("tbAttributeKey")); switch (partition.PartitionType) { case "Campus": phPartitionControl.Controls.Add(new LiteralControl("<div class='row'><div class='col-md-4'><strong>Name</strong></div><div class='col-md-8'><strong>Group</strong></div>")); foreach (var campus in CampusCache.All()) { phPartitionControl.Controls.Add(new LiteralControl("<div class='row'><div class='col-xs-4'>")); var campusCbl = new CheckBox(); campusCbl.ID = campus.Guid.ToString() + "_" + partition.Guid + "_checkbox"; if (partition.PartitionValue != null) { campusCbl.Checked = partition.PartitionValue.Contains(campus.Guid.ToString()); } campusCbl.Text = campus.Name; campusCbl.CheckedChanged += CampusCbl_CheckedChanged; campusCbl.AutoPostBack = true; if (partition.PartitionValue != null) { campusCbl.Checked = partition.PartitionValue.Contains(campus.Guid.ToString()); } phPartitionControl.Controls.Add(campusCbl); phPartitionControl.Controls.Add(new LiteralControl("</div>")); phPartitionControl.Controls.Add(new LiteralControl("<div class='col-xs-8'>")); var ddlPlacementGroup = new RockDropDownList(); ddlPlacementGroup.ID = campus.Guid.ToString() + "_" + partition.Guid + "_group"; ddlPlacementGroup.SelectedIndexChanged += DdlPlacementGroup_SelectedIndexChanged; ddlPlacementGroup.AutoPostBack = true; List <ListItem> groupList = getGroups().Select(g => new ListItem(String.Format("{0} ({1})", g.Name, g.Campus != null ? g.Campus.Name : "No Campus"), g.Id.ToString())).ToList(); groupList.Insert(0, new ListItem("Not Mapped", null)); ddlPlacementGroup.Items.AddRange(groupList.ToArray()); if (partition.GroupMap != null && partition.GroupMap.ContainsKey(campus.Guid.ToString())) { ddlPlacementGroup.SetValue(partition.GroupMap[campus.Guid.ToString()]); } phPartitionControl.Controls.Add(ddlPlacementGroup); phPartitionControl.Controls.Add(new LiteralControl("</div></div>")); } phPartitionControl.Controls.Add(new LiteralControl("</div>")); tbAttributeKey.ReadOnly = true; break; case "Schedule": phPartitionControl.Controls.Add(new LiteralControl("<strong>Schedule</strong><br />")); var schedule = new SchedulePicker() { AllowMultiSelect = true, ID = partition.Guid.ToString() }; schedule.SelectItem += Schedule_SelectItem; if (!string.IsNullOrWhiteSpace(partition.PartitionValue)) { ScheduleService scheduleService = new ScheduleService(new RockContext()); List <Guid> scheduleGuids = partition.PartitionValue.Split(',').Select(pv => pv.AsGuid()).ToList(); schedule.SetValues(scheduleService.GetByGuids(scheduleGuids).ToList().Select(s => s.Id).ToList()); } phPartitionControl.Controls.Add(schedule); break; case "DefinedType": phPartitionControl.Controls.Add(new LiteralControl("<strong>Defined Type</strong><br />")); var definedTypeRddl = new RockDropDownList() { ID = partition.Guid.ToString() }; DefinedTypeService definedTypeService = new DefinedTypeService(new RockContext()); var listItems = definedTypeService.Queryable().Select(dt => new { Name = (dt.Category != null ? dt.Category.Name + ": " : "") + dt.Name, Guid = dt.Guid }).ToList(); listItems.Insert(0, new { Name = "Select One . . .", Guid = Guid.Empty }); definedTypeRddl.DataSource = listItems; definedTypeRddl.DataTextField = "Name"; definedTypeRddl.DataValueField = "Guid"; definedTypeRddl.DataBind(); definedTypeRddl.AutoPostBack = true; definedTypeRddl.SelectedIndexChanged += DefinedTypeRddl_SelectedIndexChanged; if (!string.IsNullOrWhiteSpace(partition.PartitionValue)) { definedTypeRddl.SelectedValue = partition.PartitionValue; } phPartitionControl.Controls.Add(definedTypeRddl); break; case "Role": if (Settings.EntityTypeGuid == Rock.SystemGuid.EntityType.CONNECTION_OPPORTUNITY.AsGuid()) { ConnectionOpportunity connection = ( ConnectionOpportunity )Settings.Entity(); var roles = connection.ConnectionOpportunityGroupConfigs.Where(cogc => cogc.GroupMemberRole != null).OrderBy(r => r.GroupTypeId).ThenBy(r => r.GroupMemberRole.Order).Select(r => new { Name = r.GroupType.Name + ": " + r.GroupMemberRole.Name, Guid = r.GroupMemberRole.Guid }).ToList(); phPartitionControl.Controls.Add(new LiteralControl("<div class='row'><div class='col-md-4'><strong>Name</strong></div><div class='col-md-8'><strong>Group</strong></div>")); foreach (var role in roles) { phPartitionControl.Controls.Add(new LiteralControl("<div class='row'><div class='col-xs-4'>")); var roleCbl = new CheckBox(); roleCbl.ID = role.Guid.ToString() + "_" + partition.Guid + "_checkbox"; if (!string.IsNullOrWhiteSpace(partition.PartitionValue)) { roleCbl.Checked = partition.PartitionValue.Contains(role.Guid.ToString()); } roleCbl.Text = role.Name; roleCbl.CheckedChanged += CampusCbl_CheckedChanged; roleCbl.AutoPostBack = true; phPartitionControl.Controls.Add(roleCbl); phPartitionControl.Controls.Add(new LiteralControl("</div>")); phPartitionControl.Controls.Add(new LiteralControl("<div class='col-xs-8'>")); var ddlPlacementGroup = new RockDropDownList(); ddlPlacementGroup.ID = role.Guid.ToString() + "_" + partition.Guid + "_group"; ddlPlacementGroup.SelectedIndexChanged += DdlPlacementGroup_SelectedIndexChanged; ddlPlacementGroup.AutoPostBack = true; List <ListItem> groupList = getGroups().Select(g => new ListItem(String.Format("{0} ({1})", g.Name, g.Campus != null ? g.Campus.Name : "No Campus"), g.Id.ToString())).ToList(); groupList.Insert(0, new ListItem("Not Mapped", null)); ddlPlacementGroup.Items.AddRange(groupList.ToArray()); if (partition.GroupMap != null && partition.GroupMap.ContainsKey(role.Guid.ToString())) { ddlPlacementGroup.SetValue(partition.GroupMap[role.Guid.ToString()]); } phPartitionControl.Controls.Add(ddlPlacementGroup); phPartitionControl.Controls.Add(new LiteralControl("</div></div>")); } phPartitionControl.Controls.Add(new LiteralControl("</div>")); tbAttributeKey.ReadOnly = true; } break; } tbAttributeKey.ID = "attribute_key_" + partition.Guid.ToString(); tbAttributeKey.Text = partition.AttributeKey; (( LinkButton )e.Item.FindControl("bbPartitionDelete")).CommandArgument = partition.Guid.ToString(); } }
/// <summary> /// Creates the child controls. /// </summary> /// <returns></returns> public override Control[] CreateChildControls(Type entityType, FilterField filterControl) { var pGroupPicker = new GroupPicker(); pGroupPicker.AllowMultiSelect = true; pGroupPicker.ID = $"{filterControl.ID}_{nameof( pGroupPicker )}"; pGroupPicker.AddCssClass("js-group-picker"); filterControl.Controls.Add(pGroupPicker); var cbChildGroups = new RockCheckBox(); cbChildGroups.ID = $"{filterControl.ID}_{nameof( cbChildGroups )}"; cbChildGroups.AddCssClass("js-child-groups"); cbChildGroups.Text = "Include Child Groups"; filterControl.Controls.Add(cbChildGroups); var ddlIntegerCompare = ComparisonHelper.ComparisonControl(ComparisonHelper.NumericFilterComparisonTypes); ddlIntegerCompare.Label = "Attendance Count"; ddlIntegerCompare.ID = $"{filterControl.ID}_{nameof( ddlIntegerCompare )}"; ddlIntegerCompare.AddCssClass("js-filter-compare"); filterControl.Controls.Add(ddlIntegerCompare); var tbAttendedCount = new RockTextBox(); tbAttendedCount.ID = $"{filterControl.ID}_{nameof( tbAttendedCount )}"; tbAttendedCount.Label = " "; // give it whitespace label so it lines up nicely tbAttendedCount.AddCssClass("js-attended-count"); filterControl.Controls.Add(tbAttendedCount); var slidingDateRangePicker = new SlidingDateRangePicker(); slidingDateRangePicker.Label = "Date Range"; slidingDateRangePicker.ID = $"{filterControl.ID}_{nameof( slidingDateRangePicker )}"; slidingDateRangePicker.AddCssClass("js-sliding-date-range"); filterControl.Controls.Add(slidingDateRangePicker); var schedulePicker = new SchedulePicker(); schedulePicker.Label = "Schedules"; schedulePicker.ID = $"{filterControl.ID}_{nameof( schedulePicker )}"; schedulePicker.AddCssClass("js-schedule-picker"); schedulePicker.AllowMultiSelect = true; filterControl.Controls.Add(schedulePicker); var controls = new Control[6] { pGroupPicker, cbChildGroups, ddlIntegerCompare, tbAttendedCount, slidingDateRangePicker, schedulePicker }; var defaultGroupAttendanceFilterSelection = new GroupAttendanceFilterSelection { IntegerCompare = ComparisonType.GreaterThanOrEqualTo.ConvertToInt().ToString(), AttendedCount = 4, SlidingDateRange = slidingDateRangePicker.DelimitedValues, IncludeChildGroups = false, }; // set the default values in case this is a newly added filter SetSelection( entityType, controls, defaultGroupAttendanceFilterSelection.ToJson()); return(controls); }