Hide gender & deceased filters for non-individual entityRef
authorColeman Watts <coleman@civicrm.org>
Tue, 22 Jan 2019 17:35:13 +0000 (12:35 -0500)
committerColeman Watts <coleman@civicrm.org>
Tue, 22 Jan 2019 17:35:13 +0000 (12:35 -0500)
CRM/Core/Resources.php
js/Common.js

index 195d224063b14f810926b1733e83569a569eed95..a472f3a2fcd6d1a2af7f2a56a1e6dc625f73c888 100644 (file)
@@ -837,18 +837,18 @@ class CRM_Core_Resources {
       array('key' => 'status_id', 'value' => ts('Activity Status')),
     );
 
-    $filters['contact'] = array(
-      array('key' => 'contact_type', 'value' => ts('Contact Type')),
-      array('key' => 'group', 'value' => ts('Group'), 'entity' => 'group_contact'),
-      array('key' => 'tag', 'value' => ts('Tag'), 'entity' => 'entity_tag'),
-      array('key' => 'state_province', 'value' => ts('State/Province'), 'entity' => 'address'),
-      array('key' => 'country', 'value' => ts('Country'), 'entity' => 'address'),
-      array('key' => 'gender_id', 'value' => ts('Gender')),
-      array('key' => 'is_deceased', 'value' => ts('Deceased')),
-      array('key' => 'contact_id', 'value' => ts('Contact ID'), 'type' => 'text'),
-      array('key' => 'external_identifier', 'value' => ts('External ID'), 'type' => 'text'),
-      array('key' => 'source', 'value' => ts('Contact Source'), 'type' => 'text'),
-    );
+    $filters['contact'] = [
+      ['key' => 'contact_type', 'value' => ts('Contact Type')],
+      ['key' => 'group', 'value' => ts('Group'), 'entity' => 'group_contact'],
+      ['key' => 'tag', 'value' => ts('Tag'), 'entity' => 'entity_tag'],
+      ['key' => 'state_province', 'value' => ts('State/Province'), 'entity' => 'address'],
+      ['key' => 'country', 'value' => ts('Country'), 'entity' => 'address'],
+      ['key' => 'gender_id', 'value' => ts('Gender'), 'condition' => ['contact_type' => 'Individual']],
+      ['key' => 'is_deceased', 'value' => ts('Deceased'), 'condition' => ['contact_type' => 'Individual']],
+      ['key' => 'contact_id', 'value' => ts('Contact ID'), 'type' => 'text'],
+      ['key' => 'external_identifier', 'value' => ts('External ID'), 'type' => 'text'],
+      ['key' => 'source', 'value' => ts('Contact Source'), 'type' => 'text'],
+    ];
 
     if (in_array('CiviCase', $config->enableComponents)) {
       $filters['case'] = array(
index 2eeec554d6ba81c701dd4a9c0cb7c3bfefa1d04c..54ffa13c3421233414e4dcf80dd37bd6101461f8 100644 (file)
@@ -725,6 +725,10 @@ if (!CRM.vars) CRM.vars = {};
       var filter = $.extend({type: 'select', 'attributes': {}, entity: entity}, this);
       $.extend(this, filter);
       if (!params[filter.key]) {
+        // Filter out options if params don't match its condition
+        if (filter.condition && !_.isMatch(params, _.pick(filter.condition, _.keys(params)))) {
+          return;
+        }
         result.push(filter);
       }
       else if (filter.key == 'contact_type' && typeof params.contact_sub_type === 'undefined') {