Commit 236c5826 authored by Riccardo Padovani's avatar Riccardo Padovani

Updated views to 7.x-3.10

parent 5e8ef58b
File mode changed from 100755 to 100644
...@@ -423,12 +423,14 @@ class views_handler_argument extends views_handler { ...@@ -423,12 +423,14 @@ class views_handler_argument extends views_handler {
$plugin->options_validate($form['argument_default'][$default_id], $form_state, $form_state['values']['options']['argument_default'][$default_id]); $plugin->options_validate($form['argument_default'][$default_id], $form_state, $form_state['values']['options']['argument_default'][$default_id]);
} }
// summary plugin // Validate summary plugin options if one is present.
if (isset($form_state['values']['options']['summary']['format'])) {
$summary_id = $form_state['values']['options']['summary']['format']; $summary_id = $form_state['values']['options']['summary']['format'];
$plugin = $this->get_plugin('style', $summary_id); $plugin = $this->get_plugin('style', $summary_id);
if ($plugin) { if ($plugin) {
$plugin->options_validate($form['summary']['options'][$summary_id], $form_state, $form_state['values']['options']['summary']['options'][$summary_id]); $plugin->options_validate($form['summary']['options'][$summary_id], $form_state, $form_state['values']['options']['summary']['options'][$summary_id]);
} }
}
$validate_id = $form_state['values']['options']['validate']['type']; $validate_id = $form_state['values']['options']['validate']['type'];
$plugin = $this->get_plugin('argument validator', $validate_id); $plugin = $this->get_plugin('argument validator', $validate_id);
...@@ -453,7 +455,8 @@ class views_handler_argument extends views_handler { ...@@ -453,7 +455,8 @@ class views_handler_argument extends views_handler {
$form_state['values']['options']['default_argument_options'] = $options; $form_state['values']['options']['default_argument_options'] = $options;
} }
// summary plugin // Handle summary plugin options if one is present.
if (isset($form_state['values']['options']['summary']['format'])) {
$summary_id = $form_state['values']['options']['summary']['format']; $summary_id = $form_state['values']['options']['summary']['format'];
$plugin = $this->get_plugin('style', $summary_id); $plugin = $this->get_plugin('style', $summary_id);
if ($plugin) { if ($plugin) {
...@@ -462,6 +465,7 @@ class views_handler_argument extends views_handler { ...@@ -462,6 +465,7 @@ class views_handler_argument extends views_handler {
// Copy the now submitted options to their final resting place so they get saved. // Copy the now submitted options to their final resting place so they get saved.
$form_state['values']['options']['summary_options'] = $options; $form_state['values']['options']['summary_options'] = $options;
} }
}
$validate_id = $form_state['values']['options']['validate']['type']; $validate_id = $form_state['values']['options']['validate']['type'];
$plugin = $this->get_plugin('argument validator', $validate_id); $plugin = $this->get_plugin('argument validator', $validate_id);
......
...@@ -14,6 +14,7 @@ class views_handler_field_counter extends views_handler_field { ...@@ -14,6 +14,7 @@ class views_handler_field_counter extends views_handler_field {
function option_definition() { function option_definition() {
$options = parent::option_definition(); $options = parent::option_definition();
$options['counter_start'] = array('default' => 1); $options['counter_start'] = array('default' => 1);
$options['reverse'] = array('default' => FALSE);
return $options; return $options;
} }
...@@ -26,6 +27,13 @@ class views_handler_field_counter extends views_handler_field { ...@@ -26,6 +27,13 @@ class views_handler_field_counter extends views_handler_field {
'#size' => 2, '#size' => 2,
); );
$form['reverse'] = array(
'#type' => 'checkbox',
'#title' => t('Reverse'),
'#default_value' => $this->options['reverse'],
'#description' => t('Reverse the counter.'),
);
parent::options_form($form, $form_state); parent::options_form($form, $form_state);
} }
...@@ -34,16 +42,24 @@ class views_handler_field_counter extends views_handler_field { ...@@ -34,16 +42,24 @@ class views_handler_field_counter extends views_handler_field {
} }
function render($values) { function render($values) {
$reverse = empty($this->options['reverse']) ? 1 : -1;
// Note: 1 is subtracted from the counter start value below because the // Note: 1 is subtracted from the counter start value below because the
// counter value is incremented by 1 at the end of this function. // counter value is incremented by 1 at the end of this function.
$count = is_numeric($this->options['counter_start']) ? $this->options['counter_start'] - 1 : 0; $counter_start = is_numeric($this->options['counter_start']) ? $this->options['counter_start'] : 0;
$count = ($reverse == -1) ? count($this->view->result) + $counter_start : $counter_start -1;
$pager = $this->view->query->pager; $pager = $this->view->query->pager;
// Get the base count of the pager. // Get the base count of the pager.
if ($pager->use_pager()) { if ($pager->use_pager()) {
$count += ($pager->get_items_per_page() * $pager->get_current_page() + $pager->get_offset()); if ($reverse == -1) {
$count = ($pager->total_items + $counter_start - ($pager->get_current_page() * $pager->get_items_per_page()) + $pager->get_offset());
} else {
$count += (($pager->get_items_per_page() * $pager->get_current_page() + $pager->get_offset())) * $reverse;
}
} }
// Add the counter for the current site. // Add the counter for the current site.
$count += $this->view->row_index + 1; $count += ($this->view->row_index + 1) * $reverse;
return $count; return $count;
} }
......
...@@ -855,9 +855,6 @@ function views_ui_break_lock_confirm($form, &$form_state, $view) { ...@@ -855,9 +855,6 @@ function views_ui_break_lock_confirm($form, &$form_state, $view) {
} }
$cancel = 'admin/structure/views/view/' . $view->name . '/edit'; $cancel = 'admin/structure/views/view/' . $view->name . '/edit';
if (!empty($_REQUEST['cancel'])) {
$cancel = $_REQUEST['cancel'];
}
$account = user_load($view->locked->uid); $account = user_load($view->locked->uid);
return confirm_form($form, return confirm_form($form,
...@@ -2964,7 +2961,7 @@ function views_ui_ajax_form($js, $key, $view, $display_id = '') { ...@@ -2964,7 +2961,7 @@ function views_ui_ajax_form($js, $key, $view, $display_id = '') {
else { else {
$output = array(); $output = array();
$output[] = views_ajax_command_dismiss_form(); $output[] = views_ajax_command_dismiss_form();
$output[] = views_ajax_command_show_buttons(); $output[] = views_ajax_command_show_buttons(!empty($view->changed));
$output[] = views_ajax_command_trigger_preview(); $output[] = views_ajax_command_trigger_preview();
if (!empty($form_state['#page_title'])) { if (!empty($form_state['#page_title'])) {
$output[] = views_ajax_command_replace_title($form_state['#page_title']); $output[] = views_ajax_command_replace_title($form_state['#page_title']);
......
...@@ -169,12 +169,16 @@ function views_ajax_command_scroll_top($selector) { ...@@ -169,12 +169,16 @@ function views_ajax_command_scroll_top($selector) {
/** /**
* Shows Save and Cancel buttons. * Shows Save and Cancel buttons.
* *
* @param bool $changed
* Whether of not the view has changed.
*
* @return * @return
* An array suitable for use with the ajax_render() function. * An array suitable for use with the ajax_render() function.
*/ */
function views_ajax_command_show_buttons() { function views_ajax_command_show_buttons($changed) {
$command = array( $command = array(
'command' => 'viewsShowButtons', 'command' => 'viewsShowButtons',
'changed' => (bool) $changed,
); );
return $command; return $command;
} }
......
...@@ -117,7 +117,7 @@ class views_object { ...@@ -117,7 +117,7 @@ class views_object {
$localization_keys = $this->localization_keys; $localization_keys = $this->localization_keys;
} }
// but plugins don't because there isn't a common init() these days. // but plugins don't because there isn't a common init() these days.
else if (!empty($this->is_plugin)) { else if (!empty($this->is_plugin) && empty($localization_keys)) {
if ($this->plugin_type != 'display') { if ($this->plugin_type != 'display') {
$localization_keys = array($this->view->current_display); $localization_keys = array($this->view->current_display);
$localization_keys[] = $this->plugin_type; $localization_keys[] = $this->plugin_type;
......
...@@ -61,7 +61,9 @@ ...@@ -61,7 +61,9 @@
Drupal.ajax.prototype.commands.viewsShowButtons = function (ajax, response, status) { Drupal.ajax.prototype.commands.viewsShowButtons = function (ajax, response, status) {
$('div.views-edit-view div.form-actions').removeClass('js-hide'); $('div.views-edit-view div.form-actions').removeClass('js-hide');
if (response.changed) {
$('div.views-edit-view div.view-changed.messages').removeClass('js-hide'); $('div.views-edit-view div.view-changed.messages').removeClass('js-hide');
}
}; };
Drupal.ajax.prototype.commands.viewsTriggerPreview = function (ajax, response, status) { Drupal.ajax.prototype.commands.viewsTriggerPreview = function (ajax, response, status) {
......
...@@ -57,7 +57,7 @@ Drupal.views.ajaxView = function(settings) { ...@@ -57,7 +57,7 @@ Drupal.views.ajaxView = function(settings) {
this.settings = settings; this.settings = settings;
// Add the ajax to exposed forms. // Add the ajax to exposed forms.
this.$exposed_form = $('form#views-exposed-form-'+ settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-')); this.$exposed_form = this.$view.children('.view-filters').children('form');
this.$exposed_form.once(jQuery.proxy(this.attachExposedFormAjax, this)); this.$exposed_form.once(jQuery.proxy(this.attachExposedFormAjax, this));
// Add the ajax to pagers. // Add the ajax to pagers.
...@@ -67,6 +67,12 @@ Drupal.views.ajaxView = function(settings) { ...@@ -67,6 +67,12 @@ Drupal.views.ajaxView = function(settings) {
.filter(jQuery.proxy(this.filterNestedViews, this)) .filter(jQuery.proxy(this.filterNestedViews, this))
.once(jQuery.proxy(this.attachPagerAjax, this)); .once(jQuery.proxy(this.attachPagerAjax, this));
// Add a trigger to update this view specifically. In order to trigger a
// refresh use the following code.
//
// @code
// jQuery('.view-name').trigger('RefreshView');
// @endcode
// Add a trigger to update this view specifically. // Add a trigger to update this view specifically.
var self_settings = this.element_settings; var self_settings = this.element_settings;
self_settings.event = 'RefreshView'; self_settings.event = 'RefreshView';
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
*/ */
(function ($, undefined) { (function ($, undefined) {
if ($.ui && $.ui.dialog) { if ($.ui && $.ui.dialog && $.ui.dialog.overlay) {
$.ui.dialog.overlay.events = $.map('focus,keydown,keypress'.split(','), $.ui.dialog.overlay.events = $.map('focus,keydown,keypress'.split(','),
function(event) { return event + '.dialog-overlay'; }).join(' '); function(event) { return event + '.dialog-overlay'; }).join(' ');
} }
......
...@@ -9,7 +9,7 @@ Drupal.behaviors.viewsContextualLinks = { ...@@ -9,7 +9,7 @@ Drupal.behaviors.viewsContextualLinks = {
// If there are views-related contextual links attached to the main page // If there are views-related contextual links attached to the main page
// content, find the smallest region that encloses both the links and the // content, find the smallest region that encloses both the links and the
// view, and display it as a contextual links region. // view, and display it as a contextual links region.
$('.views-contextual-links-page', context).closest(':has(.view)').addClass('contextual-links-region'); $('.views-contextual-links-page', context).closest(':has(".view"):not("body")').addClass('contextual-links-region');
} }
}; };
......
...@@ -25,7 +25,8 @@ function comment_views_default_views() { ...@@ -25,7 +25,8 @@ function comment_views_default_views() {
$handler = $view->new_display('default', 'Master', 'default'); $handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Recent comments'; $handler->display->display_options['title'] = 'Recent comments';
$handler->display->display_options['use_more'] = TRUE; $handler->display->display_options['use_more'] = TRUE;
$handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access comments';
$handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['query']['options']['query_comment'] = FALSE;
...@@ -134,7 +135,8 @@ function comment_views_default_views() { ...@@ -134,7 +135,8 @@ function comment_views_default_views() {
/* Display: Master */ /* Display: Master */
$handler = $view->new_display('default', 'Master', 'default'); $handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Recent posts'; $handler->display->display_options['title'] = 'Recent posts';
$handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access content';
$handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['query']['options']['query_comment'] = FALSE;
......
...@@ -488,8 +488,14 @@ function list_field_views_data($field) { ...@@ -488,8 +488,14 @@ function list_field_views_data($field) {
foreach ($data as $table_name => $table_data) { foreach ($data as $table_name => $table_data) {
foreach ($table_data as $field_name => $field_data) { foreach ($table_data as $field_name => $field_data) {
if (isset($field_data['filter']) && $field_name != 'delta') { if (isset($field_data['filter']) && $field_name != 'delta') {
if ($field['type'] == 'list_boolean') {
// Special handler for boolean fields.
$data[$table_name][$field_name]['filter']['handler'] = 'views_handler_filter_field_list_boolean';
}
else {
$data[$table_name][$field_name]['filter']['handler'] = 'views_handler_filter_field_list'; $data[$table_name][$field_name]['filter']['handler'] = 'views_handler_filter_field_list';
} }
}
if (isset($field_data['argument']) && $field_name != 'delta') { if (isset($field_data['argument']) && $field_name != 'delta') {
if ($field['type'] == 'list_text') { if ($field['type'] == 'list_text') {
$data[$table_name][$field_name]['argument']['handler'] = 'views_handler_argument_field_list_string'; $data[$table_name][$field_name]['argument']['handler'] = 'views_handler_argument_field_list_string';
......
<?php
/**
* @file
* Definition of views_handler_filter_field_list_boolean.
*/
/**
* Filter handler for boolean fields.
*
* @ingroup views_filter_handlers
*/
class views_handler_filter_field_list_boolean extends views_handler_filter_field_list {
function get_value_options() {
$field = field_info_field($this->definition['field_name']);
$value_options = list_allowed_values($field);
// Boolean fields have an option for using the label as the 'on' value. This
// results in there being no label values in the allows values array.
// If this is the case, we need to provide the labels.
$filtered = array_filter($value_options);
if (empty($filtered)) {
// We can't provide the label in the same way the FieldAPI formatter does,
// as these are different on each instance, and we may be operating on
// more than one bundle.
$value_options[0] = t('Off');
$value_options[1] = t('On');
}
$this->value_options = $value_options;
}
}
...@@ -24,7 +24,8 @@ function node_views_default_views() { ...@@ -24,7 +24,8 @@ function node_views_default_views() {
/* Display: Master */ /* Display: Master */
$handler = $view->new_display('default', 'Master', 'default'); $handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Monthly archive'; $handler->display->display_options['title'] = 'Monthly archive';
$handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access content';
$handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['query']['options']['query_comment'] = FALSE;
...@@ -110,7 +111,8 @@ function node_views_default_views() { ...@@ -110,7 +111,8 @@ function node_views_default_views() {
/* Display: Master */ /* Display: Master */
$handler = $view->new_display('default', 'Master', 'default'); $handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access content';
$handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['query']['options']['query_comment'] = FALSE;
...@@ -192,7 +194,8 @@ function node_views_default_views() { ...@@ -192,7 +194,8 @@ function node_views_default_views() {
/* Display: Master */ /* Display: Master */
$handler = $view->new_display('default', 'Master', 'default'); $handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['use_ajax'] = TRUE; $handler->display->display_options['use_ajax'] = TRUE;
$handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access content';
$handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['query']['options']['query_comment'] = FALSE;
......
...@@ -24,6 +24,7 @@ function node_views_templates() { ...@@ -24,6 +24,7 @@ function node_views_templates() {
$handler = $view->new_display('default', 'Defaults', 'default'); $handler = $view->new_display('default', 'Defaults', 'default');
$handler->display->display_options['title'] = 'Image gallery'; $handler->display->display_options['title'] = 'Image gallery';
$handler->display->display_options['access']['type'] = 'perm'; $handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access content';
$handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic'; $handler->display->display_options['exposed_form']['type'] = 'basic';
......
...@@ -23,7 +23,8 @@ function search_views_default_views() { ...@@ -23,7 +23,8 @@ function search_views_default_views() {
/* Display: Master */ /* Display: Master */
$handler = $view->new_display('default', 'Master', 'default'); $handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access content';
$handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['query']['options']['query_comment'] = FALSE;
......
...@@ -25,7 +25,8 @@ function statistics_views_default_views() { ...@@ -25,7 +25,8 @@ function statistics_views_default_views() {
$handler = $view->new_display('default', 'Master', 'default'); $handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Popular content'; $handler->display->display_options['title'] = 'Popular content';
$handler->display->display_options['use_more'] = TRUE; $handler->display->display_options['use_more'] = TRUE;
$handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access content';
$handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['query']['options']['query_comment'] = FALSE;
......
...@@ -23,7 +23,8 @@ function taxonomy_views_default_views() { ...@@ -23,7 +23,8 @@ function taxonomy_views_default_views() {
/* Display: Master */ /* Display: Master */
$handler = $view->new_display('default', 'Master', 'default'); $handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access content';
$handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['query']['options']['query_comment'] = FALSE;
......
...@@ -75,6 +75,7 @@ class ViewsUiCommentViewsWizard extends ViewsUiBaseViewsWizard { ...@@ -75,6 +75,7 @@ class ViewsUiCommentViewsWizard extends ViewsUiBaseViewsWizard {
// Add permission-based access control. // Add permission-based access control.
$display_options['access']['type'] = 'perm'; $display_options['access']['type'] = 'perm';
$display_options['access']['perm'] = 'access comments';
// Add a relationship to nodes. // Add a relationship to nodes.
$display_options['relationships']['nid']['id'] = 'nid'; $display_options['relationships']['nid']['id'] = 'nid';
......
...@@ -64,6 +64,7 @@ class ViewsUiNodeViewsWizard extends ViewsUiBaseViewsWizard { ...@@ -64,6 +64,7 @@ class ViewsUiNodeViewsWizard extends ViewsUiBaseViewsWizard {
// Add permission-based access control. // Add permission-based access control.
$display_options['access']['type'] = 'perm'; $display_options['access']['type'] = 'perm';
$display_options['access']['perm'] = 'access content';
// Remove the default fields, since we are customizing them here. // Remove the default fields, since we are customizing them here.
unset($display_options['fields']); unset($display_options['fields']);
......
...@@ -15,6 +15,7 @@ class ViewsUiTaxonomyTermViewsWizard extends ViewsUiBaseViewsWizard { ...@@ -15,6 +15,7 @@ class ViewsUiTaxonomyTermViewsWizard extends ViewsUiBaseViewsWizard {
// Add permission-based access control. // Add permission-based access control.
$display_options['access']['type'] = 'perm'; $display_options['access']['type'] = 'perm';
$display_options['access']['perm'] = 'access content';
// Remove the default fields, since we are customizing them here. // Remove the default fields, since we are customizing them here.
unset($display_options['fields']); unset($display_options['fields']);
......
...@@ -5,9 +5,9 @@ core = 7.x ...@@ -5,9 +5,9 @@ core = 7.x
dependencies[] = views dependencies[] = views
hidden = TRUE hidden = TRUE
; Information added by Drupal.org packaging script on 2014-05-20 ; Information added by Drupal.org packaging script on 2015-02-11
version = "7.x-3.8" version = "7.x-3.10"
core = "7.x" core = "7.x"
project = "views" project = "views"
datestamp = "1400618928" datestamp = "1423648085"
...@@ -910,7 +910,7 @@ function hook_views_pre_view(&$view, &$display_id, &$args) { ...@@ -910,7 +910,7 @@ function hook_views_pre_view(&$view, &$display_id, &$args) {
user_access('administer site configuration') && user_access('administer site configuration') &&
$display_id == 'public_display' $display_id == 'public_display'
) { ) {
$display_id = 'private_display'; $view->set_display('private_display');
} }
} }
......
...@@ -102,6 +102,7 @@ files[] = modules/contact/views_handler_field_contact_link.inc ...@@ -102,6 +102,7 @@ files[] = modules/contact/views_handler_field_contact_link.inc
files[] = modules/field/views_handler_field_field.inc files[] = modules/field/views_handler_field_field.inc
files[] = modules/field/views_handler_relationship_entity_reverse.inc files[] = modules/field/views_handler_relationship_entity_reverse.inc
files[] = modules/field/views_handler_argument_field_list.inc files[] = modules/field/views_handler_argument_field_list.inc
files[] = modules/field/views_handler_filter_field_list_boolean.inc
files[] = modules/field/views_handler_argument_field_list_string.inc files[] = modules/field/views_handler_argument_field_list_string.inc
files[] = modules/field/views_handler_filter_field_list.inc files[] = modules/field/views_handler_filter_field_list.inc
files[] = modules/filter/views_handler_field_filter_format_name.inc files[] = modules/filter/views_handler_field_filter_format_name.inc
...@@ -317,9 +318,9 @@ files[] = tests/views_cache.test ...@@ -317,9 +318,9 @@ files[] = tests/views_cache.test
files[] = tests/views_view.test files[] = tests/views_view.test
files[] = tests/views_ui.test files[] = tests/views_ui.test
; Information added by Drupal.org packaging script on 2014-05-20 ; Information added by Drupal.org packaging script on 2015-02-11
version = "7.x-3.8" version = "7.x-3.10"
core = "7.x" core = "7.x"
project = "views" project = "views"
datestamp = "1400618928" datestamp = "1423648085"
...@@ -467,14 +467,29 @@ function views_menu_alter(&$callbacks) { ...@@ -467,14 +467,29 @@ function views_menu_alter(&$callbacks) {
function views_arg_load($value, $name, $display_id, $index) { function views_arg_load($value, $name, $display_id, $index) {
static $views = array(); static $views = array();
// Make sure we haven't already loaded this views argument for a similar menu $display_ids = is_array($display_id) ? $display_id : array($display_id);
// item elsewhere. $display_id = reset($display_ids);
$key = $name . ':' . $display_id . ':' . $value . ':' . $index;
foreach ($display_ids as $id) {
// Make sure we haven't already loaded this views argument for a similar
// menu item elsewhere. Since access is always checked for the current user,
// we are sure that the static cache contains valid entries.
$key = $name . ':' . $id . ':' . $value . ':' . $index;
if (isset($views[$key])) { if (isset($views[$key])) {
return $views[$key]; return $views[$key];
} }
// Lazy load the view object to avoid unnecessary work.
if (!isset($view)) {
$view = views_get_view($name);
}
// Pick the first display we have access to.
if ($view && count($display_ids) > 1 && $view->access($id)) {
$display_id = $id;
break;
}
}
if ($view = views_get_view($name)) { if ($view) {
$view->set_display($display_id); $view->set_display($display_id);
$view->init_handlers(); $view->init_handlers();
...@@ -548,7 +563,7 @@ function views_page_alter(&$page) { ...@@ -548,7 +563,7 @@ function views_page_alter(&$page) {
} }
/** /**
* Implements MODULE_preprocess_HOOK(). * Implements MODULE_preprocess_HOOK() for html.tpl.php.
*/ */
function views_preprocess_html(&$variables) { function views_preprocess_html(&$variables) {
// If the page contains a view as its main content, contextual links may have // If the page contains a view as its main content, contextual links may have
...@@ -566,7 +581,7 @@ function views_preprocess_html(&$variables) { ...@@ -566,7 +581,7 @@ function views_preprocess_html(&$variables) {
if (!empty($variables['page']['#views_contextual_links_info'])) { if (!empty($variables['page']['#views_contextual_links_info'])) {
$key = array_search('contextual-links-region', $variables['classes_array']); $key = array_search('contextual-links-region', $variables['classes_array']);
if ($key !== FALSE) { if ($key !== FALSE) {
unset($variables['classes_array'][$key]); $variables['classes_array'] = array_diff($variables['classes_array'], array('contextual-links-region'));
// Add the JavaScript, with a group and weight such that it will run // Add the JavaScript, with a group and weight such that it will run
// before modules/contextual/contextual.js. // before modules/contextual/contextual.js.
drupal_add_js(drupal_get_path('module', 'views') . '/js/views-contextual.js', array('group' => JS_LIBRARY, 'weight' => -1)); drupal_add_js(drupal_get_path('module', 'views') . '/js/views-contextual.js', array('group' => JS_LIBRARY, 'weight' => -1));
...@@ -574,6 +589,27 @@ function views_preprocess_html(&$variables) { ...@@ -574,6 +589,27 @@ function views_preprocess_html(&$variables) {
} }
} }
/**
* Implements hook_preprocess_HOOK() for page.tpl.php.
*/
function views_preprocess_page(&$variables) {
// If the page contains a view as its main content, contextual links may have
// been attached to the page as a whole; for example, by views_page_alter().
// This allows them to be associated with the page and rendered by default
// next to the page title (which we want). However, it also causes the
// Contextual Links module to treat the wrapper for the entire page (i.e.,
// the <body> tag) as the HTML element that these contextual links are
// associated with. This we don't want; for better visual highlighting, we
// prefer a smaller region to be chosen. The region we prefer differs from
// theme to theme and depends on the details of the theme's markup in
// page.tpl.php, so we can only find it using JavaScript. We therefore remove
// the "contextual-links-region" class from the <body> tag here and add
// JavaScript that will insert it back in the correct place.
if (!empty($variables['page']['#views_contextual_links_info'])) {
$variables['classes_array'] = array_diff($variables['classes_array'], array('contextual-links-region'));
}
}
/** /**
* Implements hook_contextual_links_view_alter(). * Implements hook_contextual_links_view_alter().
*/ */
......
...@@ -7,9 +7,9 @@ dependencies[] = views ...@@ -7,9 +7,9 @@ dependencies[] = views
files[] = views_ui.module files[] = views_ui.module
files[] = plugins/views_wizard/views_ui_base_views_wizard.class.php files[] = plugins/views_wizard/views_ui_base_views_wizard.class.php
; Information added by Drupal.org packaging script on 2014-05-20 ; Information added by Drupal.org packaging script on 2015-02-11
version = "7.x-3.8" version = "7.x-3.10"
core = "7.x" core = "7.x"
project = "views" project = "views"
datestamp = "1400618928" datestamp = "1423648085"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment