From: Andrew Engelbrecht Date: Mon, 18 Sep 2017 22:19:40 +0000 (-0400) Subject: Allow admin to change the names of filtered groups X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=0be78dff75fed71db6ce45cb19ba5072fe120ece;p=civicrm-core.git Allow admin to change the names of filtered groups This feature lets one mimic a custom field by allowing admins to change the text that appears next to each group's check box, via drush. The json format is a bit more nested, but indented json can be used. An exmple is included in CRM/Contact/Form/Edit/TagsAndGroups.php. --- diff --git a/CRM/Contact/Form/Edit/TagsAndGroups.php b/CRM/Contact/Form/Edit/TagsAndGroups.php index 4e410c3e10..0b12eade67 100644 --- a/CRM/Contact/Form/Edit/TagsAndGroups.php +++ b/CRM/Contact/Form/Edit/TagsAndGroups.php @@ -130,21 +130,27 @@ class CRM_Contact_Form_Edit_TagsAndGroups { case 'CRM_Profile_Form_Edit': $page_id = $form->get('gid'); // gid, not id - $filter = $groups_field_filters['profile'][strval($page_id)]; + $filter_config = $groups_field_filters['profile'][strval($page_id)]; break; case 'CRM_Contribute_Form_Contribution_Main': case 'CRM_Contribute_Form_Contribution_Confirm': case 'CRM_Contribute_Form_Contribution_ThankYou': $page_id = $form->get('id'); // id, not gid - $filter = $groups_field_filters['contribution'][strval($page_id)]; + $filter_config = $groups_field_filters['contribution'][strval($page_id)]; break; case 'CRM_Event_Form_Registration_Register': $page_id = $form->get('id'); // id, not gid - $filter = $groups_field_filters['event'][strval($page_id)]; + $filter_config = $groups_field_filters['event'][strval($page_id)]; break; } + + if (isset($filter_config)) { + + $filter_ids = $filter_config['groups']; + $filter_titles = $filter_config['titles']; + } // sudoman hack continues further below $attributes['skiplabel'] = TRUE; @@ -155,10 +161,10 @@ class CRM_Contact_Form_Edit_TagsAndGroups { // sudoman hack continues // filter groups if a filter is set - if (isset($filter) and !in_array($id, $filter)) { + if (isset($filter_ids) and !in_array($id, $filter_ids)) { continue; } - // sudoman hack continues with calls to CRM_Contact_Form_Edit_TagsAndGroups::reInsertFilteredGroupMemberships + // sudoman hack continues further below // make sure that this group has public visibility if ($visibility && @@ -171,8 +177,22 @@ class CRM_Contact_Form_Edit_TagsAndGroups { $groupsOptions[$key] = $group; } else { + + // sudoman hack continues + if (isset($filter_titles)) { + $custom_group_title = $filter_titles[array_search($id, $filter_ids)]; + } + if (isset($custom_group_title)) { + $group_title = $custom_group_title; + } else { + $group_title = $group['title']; + } + + // only slight modification here $form->_tagGroup[$fName][$id]['description'] = $group['description']; $elements[] = &$form->addElement('advcheckbox', $id, NULL, $group['text'], $attributes); + + // sudoman hack continues with calls to CRM_Contact_Form_Edit_TagsAndGroups::reInsertFilteredGroupMemberships } } @@ -301,7 +321,7 @@ class CRM_Contact_Form_Edit_TagsAndGroups { $contactID, $ignorePermission, $params) { $groups_field_filters = json_decode(variable_get('groups_field_filters', NULL), $assoc = TRUE); - $filter = $groups_field_filters[$page_type][strval($page_id)]; + $filter_ids = $groups_field_filters[$page_type][strval($page_id)]['groups']; if ($contactID !== NULL) { @@ -312,7 +332,7 @@ class CRM_Contact_Form_Edit_TagsAndGroups { foreach ($contactGroupList as $value) { $groupId = $value['group_id']; - if (!empty($filter) && !in_array($groupId, $filter)) { + if (!empty($filter_ids) && !in_array($groupId, $filter_ids)) { $params['group'][strval($groupId)] = 1; }