? .bzr ? 645990-fix-view-join.patch ? 705642-fix_glossary-view.patch ? exposed_sort.patch ? views-228510-exposed_sorts-2.patch Index: views.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/views.module,v retrieving revision 1.341.4.11 diff -u -p -r1.341.4.11 views.module --- views.module 6 Feb 2010 14:17:10 -0000 1.341.4.11 +++ views.module 6 Feb 2010 14:29:12 -0000 @@ -994,7 +994,7 @@ function views_exposed_form($form, &$for $form['submit'] = array( '#name' => '', // prevent from showing up in $_GET. '#type' => 'submit', - '#value' => t('Apply'), + '#value' => t('Submit'), '#id' => drupal_html_id('edit-submit-' . $view->name), ); @@ -1046,7 +1046,7 @@ function views_exposed_form_submit(&$for $form_state['view']->exposed_raw_input = array(); - $exclude = array('q', 'submit', 'form_build_id', 'form_id', 'form_token', 'submit_button', 'exposed_form_plugin', ''); + $exclude = array('q', 'submit', 'form_build_id', 'form_id', 'form_token', 'exposed_form_plugin', ''); $exposed_form_plugin = $form_state['exposed_form_plugin']; $exposed_form_plugin->exposed_form_submit($form, $form_state, $exclude); @@ -1295,4 +1295,3 @@ function views_process_dependency($eleme return $element; } - Index: includes/handlers.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/includes/handlers.inc,v retrieving revision 1.119.4.4 diff -u -p -r1.119.4.4 handlers.inc --- includes/handlers.inc 28 Jan 2010 22:44:36 -0000 1.119.4.4 +++ includes/handlers.inc 6 Feb 2010 14:29:13 -0000 @@ -19,11 +19,11 @@ function _views_create_handler($definiti !class_exists($definition['override handler'])) { return; } - + if (!class_exists($definition['handler'])) { return; } - + if (!empty($definition['override handler'])) { $handler = new $definition['override handler']; } @@ -951,6 +951,14 @@ function views_get_timezone() { function views_date_sql_field($field, $field_type = 'int', $set_offset = NULL) { $db_type = db_driver(); $offset = $set_offset !== NULL ? $set_offset : views_get_timezone(); + if (isset($offset) && !is_numeric($offset)) { + $tz = date_default_timezone_get(); + $current = time('Z'); + date_default_timezone_set($offset); + $offset_seconds = $current - time('Z'); + date_default_timezone_set($tz); + } + switch ($db_type) { case 'mysql': case 'mysqli': @@ -962,7 +970,7 @@ function views_date_sql_field($field, $f break; } if (!empty($offset)) { - $field = "($field + INTERVAL $offset SECOND)"; + $field = "($field + INTERVAL $offset_seconds SECOND)"; } return $field; case 'pgsql': @@ -974,7 +982,7 @@ function views_date_sql_field($field, $f break; } if (!empty($offset)) { - $field = "($field + INTERVAL '$offset SECONDS')"; + $field = "($field + INTERVAL '$offset_seconds SECONDS')"; } return $field; } @@ -1143,7 +1151,7 @@ function views_views_handlers() { 'views_handler_sort_date', 'views_handler_sort_menu_hierarchy', 'views_handler_sort_random', - + // group by handlers 'views_handler_argument_group_by_numeric' => array( 'parent' => 'views_handler_argument', @@ -1256,7 +1264,7 @@ class views_join { * @param $view_query * The source query, implementation of views_plugin_query. * @return - * + * */ function build_join($select_query, $table, $view_query) { if (empty($this->definition['table formula'])) { Index: includes/view.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/includes/view.inc,v retrieving revision 1.167.4.9 diff -u -p -r1.167.4.9 view.inc --- includes/view.inc 6 Feb 2010 13:29:48 -0000 1.167.4.9 +++ includes/view.inc 6 Feb 2010 14:29:15 -0000 @@ -203,7 +203,7 @@ class view extends views_db_object { } } } - + $this->current_display = 'default'; $this->display_handler = &$this->display['default']->handler; Index: modules/node/views_handler_argument_dates_various.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/modules/node/views_handler_argument_dates_various.inc,v retrieving revision 1.4 diff -u -p -r1.4 views_handler_argument_dates_various.inc --- modules/node/views_handler_argument_dates_various.inc 8 Jan 2009 00:25:19 -0000 1.4 +++ modules/node/views_handler_argument_dates_various.inc 6 Feb 2010 14:29:15 -0000 @@ -63,14 +63,16 @@ class views_handler_argument_node_create */ function summary_name($data) { $created = $data->{$this->name_alias}; - return format_date(strtotime($created . "15"), 'custom', $this->format, 0); + // @todo fix this! I removed ,0 but the whole timezone handling is broken. + return format_date(strtotime($created . "15"), 'custom', $this->format); } /** * Provide a link to the next level of the view */ function title() { - return format_date(strtotime($this->argument . "15"), 'custom', $this->format, 0); + // @todo fix this! I removed ,0 but the whole timezone handling is broken. + return format_date(strtotime($this->argument . "15"), 'custom', $this->format); } } Index: plugins/views_plugin_exposed_form.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/plugins/views_plugin_exposed_form.inc,v retrieving revision 1.2.2.5 diff -u -p -r1.2.2.5 views_plugin_exposed_form.inc --- plugins/views_plugin_exposed_form.inc 6 Feb 2010 13:29:48 -0000 1.2.2.5 +++ plugins/views_plugin_exposed_form.inc 6 Feb 2010 14:29:15 -0000 @@ -32,6 +32,10 @@ class views_plugin_exposed_form extends function option_definition() { $options = parent::option_definition(); $options['submit_button'] = array('default' => t('Apply'), 'translatable' => TRUE); + $options['reset_button'] = array('default' => FALSE, 'bool' => TRUE); + $options['exposed_sorts_label'] = array('default' => 'Sort By', 'translatable' => TRUE); + $options['sort_asc_label'] = array('default' => 'Asc', 'translatable' => TRUE); + $options['sort_desc_label'] = array('default' => 'Desc', 'translatable' => TRUE); return $options; } @@ -41,14 +45,39 @@ class views_plugin_exposed_form extends '#title' => t('Submit button text'), '#description' => t('Text to display in the submit button of the exposed form.'), '#default_value' => $this->options['submit_button'], + '#required' => TRUE, ); - + $form['reset_button'] = array ( '#type' => 'checkbox', '#title' => t('Include reset button'), '#description' => t('If checked the exposed form will provide a button to reset all the applied exposed filters'), '#default_value' => $this->options['reset_button'], ); + + $form['exposed_sorts_label'] = array( + '#type' => 'textfield', + '#title' => t('Exposed sorts label'), + '#description' => t('Text to display as the label of the exposed sort select box.'), + '#default_value' => $this->options['exposed_sorts_label'], + '#required' => TRUE, + ); + + $form['sort_asc_label'] = array( + '#type' => 'textfield', + '#title' => t('Ascending'), + '#description' => t('Text to use when exposed sort is ordered ascending.'), + '#default_value' => $this->options['sort_asc_label'], + '#required' => TRUE, + ); + + $form['sort_desc_label'] = array( + '#type' => 'textfield', + '#title' => t('Descending'), + '#description' => t('Text to use when exposed sort is ordered descending.'), + '#default_value' => $this->options['sort_desc_label'], + '#required' => TRUE, + ); } /** @@ -66,7 +95,6 @@ class views_plugin_exposed_form extends 'method' => 'get', 'rerender' => TRUE, 'no_redirect' => TRUE, - 'submit_button' => $this->options['submit_button'], ); // Some types of displays (eg. attachments) may wish to use the exposed @@ -89,7 +117,26 @@ class views_plugin_exposed_form extends return $output; } - function query() { } + function query() { + $view = $this->view; + $exposed_data = $view->exposed_data; + $sort_by = $exposed_data['sort_by']; + if (!empty($sort_by)) { + $handler = $view->sort[$sort_by]; + if (isset($handler)) { + $view->query->orderby = array(); + if (isset($exposed_data['sort_order']) && in_array($exposed_data['sort_order'], array('asc', 'desc'))) { + $handler->options['order'] = $exposed_data['sort_order']; + } + $handler->query(); + foreach ($view->sort as $sort) { + if (!$sort->is_exposed()) { + $sort->query(); + } + } + } + } + } function pre_render() { } @@ -106,6 +153,36 @@ class views_plugin_exposed_form extends '#type' => 'submit', ); } + + $form['submit']['#value'] = t($this->options['submit_button']); + // Check if there is exposed sorts for this view + $exposed_sorts = array(); + foreach ($this->view->sort as $id => $handler) { + if ($handler->can_expose() && $handler->is_exposed()) { + $exposed_sorts[$id] = check_plain($handler->options['expose']['label']); + } + } + + if (count($exposed_sorts)) { + $form['sort_by'] = array( + '#type' => 'select', + '#options' => $exposed_sorts, + '#title' => t($this->options['exposed_sorts_label']), + ); + $sort_order = array( + 'asc' => t($this->options['sort_asc_label']), + 'desc' => t($this->options['sort_desc_label']), + ); + $form['sort_order'] = array( + '#type' => 'select', + '#options' => $sort_order, + '#title' => t('Order'), + ); + $form['submit']['#weight'] = 10; + if (isset($form['reset'])) { + $form['reset']['#weight'] = 10; + } + } } function exposed_form_validate(&$form, &$form_state) { } @@ -126,7 +203,7 @@ class views_plugin_exposed_form extends $this->reset_form($form, $form_state); } } - + function reset_form(&$form, &$form_state) { unset($_SESSION['views'][$this->view->name][$this->view->current_display]); $form_state = array(); Index: plugins/views_plugin_query_default.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/plugins/Attic/views_plugin_query_default.inc,v retrieving revision 1.1.4.13 diff -u -p -r1.1.4.13 views_plugin_query_default.inc --- plugins/views_plugin_query_default.inc 6 Feb 2010 13:35:12 -0000 1.1.4.13 +++ plugins/views_plugin_query_default.inc 6 Feb 2010 14:29:16 -0000 @@ -1215,4 +1215,3 @@ class views_plugin_query_default extends function views_query_default_aggregation_method_simple($group_type, $field) { return strtoupper($group_type) . '(' . $field . ')'; } -