reverted: --- b/plugins/views_plugin_exposed_form.inc +++ a/plugins/views_plugin_exposed_form.inc @@ -220,37 +220,25 @@ } 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( '#type' => 'select', '#options' => $exposed_sorts, '#title' => $this->options['exposed_sorts_label'], - '#default_value' => $default_sort_order, ); $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']; - 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 = reset($this->view->sort); - $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']) { only in patch2: unchanged: --- plugins/views_plugin_exposed_form.inc (revision 63e1d67c7125cdcf7e5aeaeefe375f8c49ce92d8) +++ plugins/views_plugin_exposed_form.inc (revision ) @@ -220,33 +220,45 @@ } 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_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' => $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']])) { - $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 (!isset($form_state['input']['sort_by'])) { - $keys = array_keys($exposed_sorts); - $form_state['input']['sort_by'] = array_shift($keys); - } - 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;