*/
public static function getEntityRefFilters() {
$filters = array();
+ $config = CRM_Core_Config::singleton();
- $filters['event'] = array(
- array('key' => 'event_type_id', 'value' => ts('Event Type')),
- array(
- 'key' => 'start_date',
- 'value' => ts('Start Date'),
- 'options' => array(
- array('key' => '{">":"now"}', 'value' => ts('Upcoming')),
- array('key' => '{"BETWEEN":["now - 3 month","now"]}', 'value' => ts('Past 3 Months')),
- array('key' => '{"BETWEEN":["now - 6 month","now"]}', 'value' => ts('Past 6 Months')),
- array('key' => '{"BETWEEN":["now - 1 year","now"]}', 'value' => ts('Past Year')),
+ if (in_array('CiviEvent', $config->enableComponents)) {
+ $filters['event'] = array(
+ array('key' => 'event_type_id', 'value' => ts('Event Type')),
+ array(
+ 'key' => 'start_date',
+ 'value' => ts('Start Date'),
+ 'options' => array(
+ array('key' => '{">":"now"}', 'value' => ts('Upcoming')),
+ array(
+ 'key' => '{"BETWEEN":["now - 3 month","now"]}',
+ 'value' => ts('Past 3 Months'),
+ ),
+ array(
+ 'key' => '{"BETWEEN":["now - 6 month","now"]}',
+ 'value' => ts('Past 6 Months'),
+ ),
+ array(
+ 'key' => '{"BETWEEN":["now - 1 year","now"]}',
+ 'value' => ts('Past Year'),
+ ),
+ ),
),
- ),
- );
+ );
+ }
$filters['activity'] = array(
array('key' => 'activity_type_id', 'value' => ts('Activity Type')),
array('key' => 'is_deceased', 'value' => ts('Deceased')),
);
+ if (in_array('CiviCase', $config->enableComponents)) {
+ $filters['case'] = array(
+ array(
+ 'key' => 'case_id.case_type_id',
+ 'value' => ts('Case Type'),
+ 'entity' => 'Case',
+ ),
+ array(
+ 'key' => 'case_id.status_id',
+ 'value' => ts('Case Status'),
+ 'entity' => 'Case',
+ ),
+ );
+ foreach ($filters['contact'] as $filter) {
+ $filter += array('entity' => 'contact');
+ $filter['key'] = 'contact_id.' . $filter['key'];
+ $filters['case'][] = $filter;
+ }
+ }
+
return $filters;
}
combined = _.cloneDeep(params),
filter = $.extend({}, $el.data('user-filter') || {});
if (filter.key && filter.value) {
+ // Fieldname may be prefixed with joins
+ var fieldName = _.last(filter.key.split('.'));
// Special case for contact type/sub-type combo
- if (filter.key === 'contact_type' && (filter.value.indexOf('__') > 0)) {
- combined.params.contact_type = filter.value.split('__')[0];
- combined.params.contact_sub_type = filter.value.split('__')[1];
+ if (fieldName === 'contact_type' && (filter.value.indexOf('__') > 0)) {
+ combined.params[filter.key] = filter.value.split('__')[0];
+ combined.params[filter.key.replace('contact_type', 'contact_sub_type')] = filter.value.split('__')[1];
} else {
// Allow json-encoded api filters e.g. {"BETWEEN":[123,456]}
combined.params[filter.key] = filter.value.charAt(0) === '{' ? $.parseJSON(filter.value) : filter.value;
CRM.utils.setOptions($valField, filterSpec.options, false, filter.value);
} else {
$valField.prop('disabled', true);
- CRM.api3(filterSpec.entity || $el.data('api-entity'), 'getoptions', {field: filter.key, context: 'search', sequential: 1})
+ // Fieldname may be prefixed with joins - strip those out
+ var fieldName = _.last(filter.key.split('.'));
+ CRM.api3(filterSpec.entity || $el.data('api-entity'), 'getoptions', {field: fieldName, context: 'search', sequential: 1})
.done(function(result) {
var entity = $el.data('api-entity').toLowerCase(),
globalFilterSpec = _.find(CRM.config.entityRef.filters[entity], {key: filter.key}) || {};