/// <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
            });
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        /// <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
            });
        }
Пример #4
0
        /// <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()));
        }
Пример #5
0
        /// <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();
            }
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
        /// <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);
            }
        }
Пример #8
0
        /// <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]);
                }
            }
        }
Пример #9
0
        /// <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);
        }
Пример #11
0
 /// <summary>
 /// Populates the step campuses.
 /// </summary>
 private void PopulateStepCampuses(RockCheckBoxList cblStepCampus)
 {
     cblStepCampus.DataSource     = CampusCache.All();
     cblStepCampus.DataTextField  = "Name";
     cblStepCampus.DataValueField = "Guid";
     cblStepCampus.DataBind();
 }
Пример #12
0
        /// <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
            });
        }
Пример #13
0
        /// <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);
                }
            }
        }
Пример #14
0
        /// <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);
                }
            }
        }
Пример #15
0
        /// <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);
        }
Пример #16
0
        /// <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
            });
        }
Пример #17
0
        /// <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;
        }
Пример #18
0
        /// <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);
        }
Пример #19
0
        /// <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);
            }
        }
Пример #20
0
        /// <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);
                    }
                }
            }
        }
Пример #21
0
        /// <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);
                        }
                    }
                }
            }
        }
Пример #22
0
        /// <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;
            }
        }
Пример #23
0
        /// <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);
        }
Пример #25
0
 /// <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);
         }
     }
 }
Пример #26
0
        /// <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);
        }
Пример #27
0
        /// <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);
        }
Пример #28
0
        /// <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
            });
        }
Пример #30
0
        /// <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);
            }
        }