applied patch to views module diff --git a/docroot/sites/all/modules/contrib/views/plugins/views_plugin_exposed_form.inc b/docroot/sites/all/modules/contrib/views/plugins/views_plugin_exposed_form.inc index 5d54600..d2d5653 100644 --- a/docroot/sites/all/modules/contrib/views/plugins/views_plugin_exposed_form.inc +++ b/docroot/sites/all/modules/contrib/views/plugins/views_plugin_exposed_form.inc @@ -219,41 +219,53 @@ function exposed_form_alter(&$form, &$form_state) { } } - if (count($exposed_sorts)) { - $form['sort_by'] = array( - '#type' => 'select', - '#options' => $exposed_sorts, - '#title' => $this->options['exposed_sorts_label'], - ); - $sort_order = array( - 'ASC' => $this->options['sort_asc_label'], - 'DESC' => $this->options['sort_desc_label'], - ); - if (isset($form_state['input']['sort_by']) && isset($this->view->sort[$form_state['input']['sort_by']])) { - $default_sort_order = $this->view->sort[$form_state['input']['sort_by']]->options['order']; - } else { - $first_sort = reset($this->view->sort); - $default_sort_order = $first_sort->options['order']; - } + if (count($exposed_sorts)) { + if (isset($form_state['input']['sort_by'])) { + $sort_by = $form_state['input']['sort_by']; + } else { + $keys = array_keys($exposed_sorts); + $sort_by = array_shift($keys); + } - if (!isset($form_state['input']['sort_by'])) { - $keys = array_keys($exposed_sorts); - $form_state['input']['sort_by'] = array_shift($keys); - } + if (isset($form_state['input']['sort_order'])) { + $sort_order = $form_state['input']['sort_order']; + } else if (isset($this->view->sort[$sort_by])) { + $sort_order = $this->view->sort[$sort_by]->options['order']; + } else { + $first_sort = reset($this->view->sort); + $sort_order = $first_sort->options['order']; + } - if ($this->options['expose_sort_order']) { - $form['sort_order'] = array( - '#type' => 'select', - '#options' => $sort_order, - '#title' => t('Order'), - '#default_value' => $default_sort_order, - ); - } - $form['submit']['#weight'] = 10; - if (isset($form['reset'])) { - $form['reset']['#weight'] = 10; + if (!isset($form_state['input']['sort_by'])) { + $form_state['input']['sort_by'] = $sort_by; + } + + if (!isset($form_state['input']['sort_order'])) { + $form_state['input']['sort_order'] = $sort_order; + } + $form['sort_by'] = array( + '#type' => 'select', + '#options' => $exposed_sorts, + '#title' => $this->options['exposed_sorts_label'], + '#default_value' => $sort_by, + ); + $sort_options = array( + 'ASC' => $this->options['sort_asc_label'], + 'DESC' => $this->options['sort_desc_label'], + ); + if ($this->options['expose_sort_order']) { + $form['sort_order'] = array( + '#type' => 'select', + '#options' => $sort_options, + '#title' => t('Order'), + '#default_value' => $sort_order, + ); + } + $form['submit']['#weight'] = 10; + if (isset($form['reset'])) { + $form['reset']['#weight'] = 10; + } } - } $pager = $this->view->display_handler->get_plugin('pager'); if ($pager) {