From 2112726c5b17cea00e63939ee5678188fe140f82 Mon Sep 17 00:00:00 2001 From: "pool.fi" Date: Mon, 26 Jan 2015 17:04:37 -0500 Subject: [PATCH] Issue #1485574 by jgullstr: White error screen on use of exposed filter and remember --- date_views/date_views.module | 18 ++++++++++++++++++ .../includes/date_views_filter_handler_simple.inc | 11 +++++++++++ 2 files changed, 29 insertions(+) diff --git a/date_views/date_views.module b/date_views/date_views.module index c050e56..f44f34a 100644 --- a/date_views/date_views.module +++ b/date_views/date_views.module @@ -540,3 +540,21 @@ function date_views_date_formatter_pre_view_alter(&$entity, &$variables) { } } } + +/** + * Implements hook_date_select_pre_validate_alter(). + * + * Persist submitted views exposed form values before they get modified by + * date_select_validate(). These values are needed when "Remember the last + * selection" is enabled on an exposed date select filter. + */ +function date_views_date_select_pre_validate_alter(&$element, &$form_state, &$input) { + if ($form_state['build_info']['form_id'] == 'views_exposed_form') { + if (!isset($form_state['date_select_values'])) { + $form_state['date_select_values'] = array(); + } + // Remove empty values from input. + $input = array_filter($input); + drupal_array_set_nested_value($form_state['date_select_values'], $element['#parents'], $input); + } +} diff --git a/date_views/includes/date_views_filter_handler_simple.inc b/date_views/includes/date_views_filter_handler_simple.inc index cfb297e..7b59ce5 100644 --- a/date_views/includes/date_views_filter_handler_simple.inc +++ b/date_views/includes/date_views_filter_handler_simple.inc @@ -541,5 +541,16 @@ class date_views_filter_handler_simple extends views_handler_filter_date { return $output; } + /** + * For exposed date_select fields, replace string values with the original + * date arrays before loading the view's exposed data. + * + * @see date_views_date_select_pre_validate_alter() + */ + function exposed_validate(&$form, &$form_state) { + if (isset($form_state['date_select_values'])) { + $form_state['values'] = $form_state['date_select_values'] + $form_state['values']; + } + } } // @codingStandardsIgnoreEnd -- 2.2.1