From e30af20dd2d83d9f1b519a14e97d486af877aaff Mon Sep 17 00:00:00 2001 From: eileen Date: Sun, 29 Apr 2018 14:08:59 +1200 Subject: [PATCH] Fix regression whereby relationship types option no longer in adv search --- CRM/Contact/Form/Search.php | 26 +++++++++++++++++++ CRM/Contact/Form/Search/Criteria.php | 1 + .../Contact/Form/Search/AdvancedCriteria.tpl | 11 ++------ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/CRM/Contact/Form/Search.php b/CRM/Contact/Form/Search.php index 2df8b362cf..2cca3ae78c 100644 --- a/CRM/Contact/Form/Search.php +++ b/CRM/Contact/Form/Search.php @@ -209,6 +209,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { 'resultFile' => 'CRM/Contact/Form/Selector.tpl', 'resultContext' => NULL, 'taskClassName' => 'CRM_Contact_Task', + 'component' => '', ), CRM_Contact_BAO_Query::MODE_CONTRIBUTE => array( 'selectorName' => 'CRM_Contribute_Selector_Search', @@ -218,6 +219,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { 'resultFile' => 'CRM/Contribute/Form/Selector.tpl', 'resultContext' => 'Search', 'taskClassName' => 'CRM_Contribute_Task', + 'component' => 'CiviContribute', ), CRM_Contact_BAO_Query::MODE_EVENT => array( 'selectorName' => 'CRM_Event_Selector_Search', @@ -227,6 +229,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { 'resultFile' => 'CRM/Event/Form/Selector.tpl', 'resultContext' => 'Search', 'taskClassName' => 'CRM_Event_Task', + 'component' => 'CiviEvent', ), CRM_Contact_BAO_Query::MODE_ACTIVITY => array( 'selectorName' => 'CRM_Activity_Selector_Search', @@ -236,6 +239,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { 'resultFile' => 'CRM/Activity/Form/Selector.tpl', 'resultContext' => 'Search', 'taskClassName' => 'CRM_Activity_Task', + 'component' => 'activity', ), CRM_Contact_BAO_Query::MODE_MEMBER => array( 'selectorName' => 'CRM_Member_Selector_Search', @@ -245,6 +249,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { 'resultFile' => 'CRM/Member/Form/Selector.tpl', 'resultContext' => 'Search', 'taskClassName' => 'CRM_Member_Task', + 'component' => 'CiviMember', ), CRM_Contact_BAO_Query::MODE_CASE => array( 'selectorName' => 'CRM_Case_Selector_Search', @@ -254,6 +259,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { 'resultFile' => 'CRM/Case/Form/Selector.tpl', 'resultContext' => 'Search', 'taskClassName' => 'CRM_Case_Task', + 'component' => 'CiviCase', ), CRM_Contact_BAO_Query::MODE_CONTACTSRELATED => array( 'selectorName' => self::$_selectorName, @@ -263,6 +269,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { 'resultFile' => 'CRM/Contact/Form/Selector.tpl', 'resultContext' => NULL, 'taskClassName' => 'CRM_Contact_Task', + 'component' => 'related_contact', ), CRM_Contact_BAO_Query::MODE_MAILING => array( 'selectorName' => 'CRM_Mailing_Selector_Search', @@ -272,6 +279,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { 'resultFile' => 'CRM/Mailing/Form/Selector.tpl', 'resultContext' => 'Search', 'taskClassName' => 'CRM_Mailing_Task', + 'component' => 'CiviMail', ), ); } @@ -292,6 +300,24 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { return self::$_modeValues[$mode]; } + /** + * Get a mapping of modes to components. + * + * This will map the integers to the components. Contact has an empty component + * an pseudo-components exist for activity & related_contact. + * + * @return array + */ + public static function getModeToComponentMapping() { + $mapping = []; + self::setModeValues(); + + foreach (self::$_modeValues as $id => $metadata) { + $mapping[$id] = $metadata['component']; + } + return $mapping; + } + /** * @return array */ diff --git a/CRM/Contact/Form/Search/Criteria.php b/CRM/Contact/Form/Search/Criteria.php index 87159ac23b..d47739a364 100644 --- a/CRM/Contact/Form/Search/Criteria.php +++ b/CRM/Contact/Form/Search/Criteria.php @@ -158,6 +158,7 @@ class CRM_Contact_Form_Search_Criteria { ); $componentModes = CRM_Contact_Form_Search::getModeSelect(); + $form->assign('component_mappings', json_encode(CRM_Contact_Form_Search::getModeToComponentMapping())); if (count($componentModes) > 1) { $form->add('select', 'component_mode', diff --git a/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl b/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl index 8f2f0acb8c..47e8915dd7 100644 --- a/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl +++ b/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl @@ -56,14 +56,7 @@ CRM.$(function($) { return false; }); // TODO: Why are the modes numeric? If they used the string there would be no need for this map - var modes = { - '2': 'CiviContribute', - '3': 'CiviEvent', - '4': 'activity', - '5': 'CiviMember', - '6': 'CiviCase', - '8': 'CiviMail' - }; + var modes = {/literal}{$component_mappings}{literal}; // Handle change of results mode $('#component_mode').change(function() { // Reset task dropdown @@ -73,7 +66,7 @@ CRM.$(function($) { $('.crm-' + mode + '-accordion.collapsed').crmAccordionToggle(); loadPanes(mode); } - if ($('#component_mode').val() == '7') { + if ('related_contact' === modes[$('#component_mode').val()]) { $('#crm-display_relationship_type').show(); } else { -- 2.25.1