function filter_harmonizer_form_views_ui_config_item_form_alter in Views Filter Harmonizer 7
Implements hook_form_FORMID_alter().
File
- ./
filter_harmonizer.module, line 25 - filter_harmonizer.module For Views where both exposed and contextual filters are active on a page.
Code
function filter_harmonizer_form_views_ui_config_item_form_alter(&$form, &$form_state) {
if (variable_get('filter_harmonizer_always') || empty($form_state['section'])) {
// Nothing to do (in the wrong place).
return;
}
switch ($form_state['section']) {
case 'arguments':
$filter_handlers = $form_state['view']->display_handler
->get_handlers('filter');
if (!empty($filter_handlers[$form_state['handler']->field])) {
$title = t("Ignore this contextual filter <em>after</em> initial page load, when the user applies this same field's <em>exposed</em> filter.");
break;
}
// This contextual filter does not have a regular filter counterpart.
return;
case 'filters':
$contextual_handlers = $form_state['view']->display_handler
->get_handlers('argument');
if (!empty($contextual_handlers[$form_state['handler']->field])) {
$title = t('Override the companion <em>contextual</em> filter');
break;
}
// This regular filter does not have a contextual filter counterpart.
return;
default:
// Only want this tickbox on regular and contextual filter forms.
return;
}
$filter_harmonizer_contextual_filters = variable_get('filter_harmonizer_contextual_filters', array());
$view_name = $form_state['view']->name;
$display_id = $form_state['display_id'];
$field_name = $form_state['id'];
$form['options']['filter_harmonizer_enable'] = array(
'#type' => 'checkbox',
'#title' => $title,
'#description' => t("When ticked, the contextual filter will apply only on initial page load when the exposed filter has not been applied yet."),
'#default_value' => !empty($filter_harmonizer_contextual_filters[$view_name][$display_id][$field_name]),
'#fieldset' => 'argument_present',
);
$form['buttons']['submit']['#submit'][] = 'filter_harmonizer_views_ui_config_item_form_submit';
}