diff --git a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php index 335fd99..b098e4c 100644 --- a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php +++ b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php @@ -823,6 +823,22 @@ public function groupForm(&$form, FormStateInterface $form_state) { $form_state->setUserInput($user_input); } } + elseif (!empty($this->options['group_info']['remember'])) { + $user_input = $form_state->getUserInput(); + if ( + !empty($user_input) + && isset($user_input[$value]) + && isset($user_input[$value . '_group']) + && is_array($user_input[$value]) + ) { + $user_input[$value] = $user_input[$value . '_group']; + $form_state->setUserInput($user_input); + } + elseif (isset($user_input[$value]) && is_array($user_input[$value])) { + $user_input[$value] = $this->group_info; + $form_state->setUserInput($user_input); + } + } $this->options['expose']['label'] = ''; } @@ -1288,13 +1304,16 @@ public function convertExposedInput(&$input, $selected_group_id = NULL) { if (isset($selected_group) && isset($this->options['group_info']['group_items'][$selected_group])) { $input[$this->options['expose']['operator']] = $this->options['group_info']['group_items'][$selected_group]['operator']; + $this->options['expose']['use_operator'] = TRUE; + // Value can be optional, For example for 'empty' and 'not empty' filters. if (isset($this->options['group_info']['group_items'][$selected_group]['value']) && $this->options['group_info']['group_items'][$selected_group]['value'] !== '') { $input[$this->options['expose']['identifier']] = $this->options['group_info']['group_items'][$selected_group]['value']; + $this->group_info = $selected_group; + } + else { + $this->group_info = $input[$this->options['group_info']['identifier']]; } - $this->options['expose']['use_operator'] = TRUE; - - $this->group_info = $input[$this->options['group_info']['identifier']]; return TRUE; } else { @@ -1359,6 +1378,7 @@ public function storeGroupInput($input, $status) { $session = &$_SESSION['views'][$this->view->storage->id()][$display_id]; $session[$this->options['group_info']['identifier']] = $input[$this->options['group_info']['identifier']]; + $session[$this->options['group_info']['identifier'] . '_group'] = $this->group_info; } }