diff -u b/plugins/views_plugin_exposed_form.inc b/plugins/views_plugin_exposed_form.inc --- b/plugins/views_plugin_exposed_form.inc +++ b/plugins/views_plugin_exposed_form.inc @@ -220,45 +220,46 @@ } if (count($exposed_sorts)) { - if (isset($form_state['input']['sort_by']) && isset($this->view->sort[$form_state['input']['sort_by']])) { - $default_sort_order = $form_state['input']['sort_by']; - } else { - $first_sort = reset($this->view->sort); - $default_sort_order = $first_sort->options['order']; - } - $form['sort_by'] = array( + 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_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 (!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' => $default_sort_order, + '#default_value' => $sort_by, ); - $sort_order = array( + $sort_options = 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']])) { - if (isset($form_state['input']['sort_order'])) { - $default_sort_order = $form_state['input']['sort_order']; - } else { - $default_sort_order = $this->view->sort[$form_state['input']['sort_by']]->options['order']; - } - } else { - $first_sort = $this->view->sort[key($exposed_sorts)]; - $default_sort_order = $first_sort->options['order']; - } - - if (!isset($form_state['input']['sort_by'])) { - $keys = array_keys($exposed_sorts); - $form_state['input']['sort_by'] = array_shift($keys); - $form_state['input']['sort_order'] = $default_sort_order; - } if ($this->options['expose_sort_order']) { $form['sort_order'] = array( '#type' => 'select', - '#options' => $sort_order, + '#options' => $sort_options, '#title' => t('Order'), - '#default_value' => $default_sort_order, + '#default_value' => $sort_order, ); } $form['submit']['#weight'] = 10;