Fix regression whereby relationship types option no longer in adv search
authoreileen <emcnaughton@wikimedia.org>
Sun, 29 Apr 2018 02:08:59 +0000 (14:08 +1200)
committereileen <emcnaughton@wikimedia.org>
Sun, 29 Apr 2018 05:04:53 +0000 (17:04 +1200)
CRM/Contact/Form/Search.php
CRM/Contact/Form/Search/Criteria.php
templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl

index 2df8b362cf7e8ff1750139e0743e1172edc54819..2cca3ae78c5f07413a8dd5cd0fd7321d42385256 100644 (file)
@@ -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
    */
index 87159ac23b9eb255aaff8003744d555e1efc9ffd..d47739a3644e9c113f13677b1d8271526e11bcab 100644 (file)
@@ -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',
index 8f2f0acb8c058856e8e51a7cef4b5d3e8dd61f09..47e8915dd7a43ab4f7b4e05e328bdc1bcfa7fbfa 100644 (file)
@@ -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 {