function global_filter_field_slider_widget_form_alter in Views Global Filter 8
Same name and namespace in other branches
- 7 widgets/global_filter.rangewidget.inc \global_filter_field_slider_widget_form_alter()
Called via hook_field_widget_form_alter().
Turns slider widget into a slider range widget... ...provided this was requested on the Global Filter block configuration ...provided Contextual Range Filter module is enabled.
1 call to global_filter_field_slider_widget_form_alter()
File
- widgets/
global_filter.rangewidget.inc, line 17 - global_filter.rangewidget.inc
Code
function global_filter_field_slider_widget_form_alter(&$element, &$form_state, $context) {
// Or $context['instance']['field_name']; ?
$name = $element['#field_name'];
$filter_key = global_filter_key_by_name($name);
$convert_to_range = global_filter_get_parameter($filter_key, 'convert_to_range');
$autosubmit = global_filter_get_parameter($filter_key, 'set_on_select');
$slider_settings =& $element['value']['#attached']['js']['0']['data']['slider'];
$lang = $form_state['language'];
// Normally loops only once.
foreach ($slider_settings as &$settings) {
$settings['autosubmit'] = $autosubmit;
// Only convert slider to range slider if we can support ranges via module
// Contextual Range Filter. Maybe we should also check if this field is
// actually enabled as a CRF ?
if ($convert_to_range && module_exists('contextual_range_filter')) {
$settings['range'] = TRUE;
// Remove validation and ease maxlength restriction on textfield when
// it's a range.
unset($element['value']['#element_validate']);
// #maxlength is used in _form_validate() (form.inc)
if (isset($element['value']['#maxlength'])) {
// Add 2 for delimiter.
$element['value']['#maxlength'] = 2 * $element['value']['#maxlength'] + 2;
}
if (empty($form_state['input'][$name][$lang][0])) {
$range = global_filter_get_session_value($name);
}
else {
$range = reset($form_state['input'][$name][$lang][0]);
}
list($from, $to) = contextual_range_filter_split(is_array($range) ? reset($range) : $range);
$settings['values'] = array(
empty($from) ? $settings['min'] : $from,
empty($to) ? $settings['max'] : $to,
);
unset($settings['value']);
}
}
}