updated ctools, needed by panles

This commit is contained in:
Bachir Soussi Chiadmi
2016-10-25 17:47:45 +02:00
parent f6f7fd575f
commit b11abbed59
59 changed files with 779 additions and 297 deletions

View File

@@ -143,68 +143,11 @@ function views_content_views_panes_content_type_render($subtype, $conf, $panel_a
return;
}
$conf['pane_contexts'] = $contexts;
$conf['panel_args'] = $panel_args;
$view->display_handler->set_pane_conf($conf);
$args = array();
$arguments = $view->display_handler->get_option('arguments');
$context_keys = isset($conf['context']) ? $conf['context'] : array();
foreach ($view->display_handler->get_argument_input() as $id => $argument) {
switch ($argument['type']) {
case 'context':
$key = array_shift($context_keys);
if (isset($contexts[$key])) {
if (strpos($argument['context'], '.')) {
list($context, $converter) = explode('.', $argument['context'], 2);
$args[] = ctools_context_convert_context($contexts[$key], $converter, array('sanitize' => FALSE));
}
else {
$args[] = $contexts[$key]->argument;
}
}
else {
$args[] = isset($arguments[$id]['exception']['value']) ? $arguments[$id]['exception']['value'] : 'all';
}
break;
case 'fixed':
$args[] = $argument['fixed'];
break;
case 'panel':
$args[] = isset($panel_args[$argument['panel']]) ? $panel_args[$argument['panel']] : NULL;
break;
case 'user':
$args[] = (isset($conf['arguments'][$id]) && $conf['arguments'][$id] !== '') ? ctools_context_keyword_substitute($conf['arguments'][$id], array(), $contexts) : NULL;
break;
case 'wildcard':
// Put in the wildcard.
$args[] = isset($arguments[$id]['wildcard']) ? $arguments[$id]['wildcard'] : '*';
break;
case 'none':
default:
// Put in NULL.
// views.module knows what to do with NULL (or missing) arguments
$args[] = NULL;
break;
}
}
// remove any trailing NULL arguments as these are non-args:
while (count($args) && end($args) === NULL) {
array_pop($args);
}
$view->set_arguments($args);
$allow = $view->display_handler->get_option('allow');
if (!empty($conf['path'])) {
$conf['path'] = ctools_context_keyword_substitute($conf['path'], array(), $contexts);
}
if ($allow['path_override'] && !empty($conf['path'])) {
$view->override_path = $conf['path'];
}
@@ -221,67 +164,6 @@ function views_content_views_panes_content_type_render($subtype, $conf, $panel_a
$block->title_link = $view->get_url();
}
// more link
if ($allow['more_link']) {
if (empty($conf['more_link'])) {
$view->display_handler->set_option('use_more', FALSE);
}
else {
$view->display_handler->set_option('use_more', TRUE);
// make sure the view runs the count query so we know whether or not the
// more link applies.
$view->get_total_rows = TRUE;
}
}
if ($allow['items_per_page'] && isset($conf['items_per_page'])) {
$view->set_items_per_page($conf['items_per_page']);
}
if ($allow['offset']) {
$view->set_offset($conf['offset']);
}
if ($allow['use_pager']) {
// Only set use_pager if they differ, this way we can avoid overwriting the
// pager type that Views uses.
$pager = $view->display_handler->get_option('pager');
if ($conf['use_pager'] && ($pager['type'] == 'none' || $pager['type'] == 'some')) {
$pager['type'] = 'full';
}
elseif (!$conf['use_pager'] && $pager['type'] != 'none' && $pager['type'] != 'some') {
$pager['type'] = $view->get_items_per_page() || !empty($pager['options']['items_per_page']) ? 'some' : 'none';
}
if ($conf['use_pager']) {
if (!isset($pager['options']['id']) || (isset($conf['pager_id']) && $pager['options']['id'] != $conf['pager_id'])) {
$pager['options']['id'] = (int) $conf['pager_id'];
}
}
$view->display_handler->set_option('pager', $pager);
}
if ($allow['fields_override']) {
if ($conf['fields_override']) {
$fields = $view->get_items('field');
foreach ($fields as $field => $field_display) {
$fields[$field]['exclude'] = empty($conf['fields_override'][$field]);
}
$view->display_handler->set_option('fields', $fields);
}
}
if ($allow['exposed_form'] && !empty($conf['exposed'])) {
foreach ($conf['exposed'] as $filter_name => $filter_value) {
if (!is_array($filter_value)) {
$conf['exposed'][$filter_name] = ctools_context_keyword_substitute($filter_value, array(), $contexts);
}
}
$view->set_exposed_input($conf['exposed']);
}
$stored_feeds = drupal_add_feed();
$block->content = $view->preview();
@@ -321,6 +203,10 @@ function views_content_views_panes_content_type_render($subtype, $conf, $panel_a
function views_content_views_panes_add_defaults(&$conf, $view) {
$pager = $view->display_handler->get_option('pager');
if (empty($conf)) {
$conf = array();
}
$conf += array(
'link_to_view' => $view->display_handler->get_option('link_to_view'),
'more_link' => $view->display_handler->get_option('use_more'),

View File

@@ -25,7 +25,7 @@ function views_content_views_plugins() {
'use more' => TRUE,
'accept attachments' => TRUE,
'help topic' => 'display-pane',
'contextual links locations' => array('panel_pane'),
'contextual links locations' => array('panel_pane', 'view'),
),
'ctools_context' => array(
'title' => t('Context'),

View File

@@ -48,8 +48,12 @@ class views_content_plugin_display_panel_pane extends views_plugin_display {
return isset($this->has_pane_conf);
}
function set_pane_conf($conf = array()) {
function set_pane_conf($conf = array(), $set_cache = TRUE) {
$this->set_option('pane_conf', $conf);
$this->view->dom_id = !empty($this->view->dom_id) ? $this->view->dom_id : md5($this->view->name . REQUEST_TIME . rand());
if ($set_cache) {
cache_set('view_panel_pane_' . $this->view->dom_id, $conf);
}
$this->has_pane_conf = TRUE;
}
@@ -412,5 +416,153 @@ class views_content_plugin_display_panel_pane extends views_plugin_display {
return empty($conf['exposed_form']);
}
/**
* Set the pane configuration options
* Done here in handler for reuse between views_content_views_panes_content_type_render
* and views_content_views_pre_view
*/
function pane_process_conf() {
ctools_include('context');
$conf = $this->get_option('pane_conf');
if (!$conf) {
// See if dom id has been cached and get conf from there.
if (!empty($this->view->dom_id) && ($cache = cache_get('view_panel_pane_' . $this->view->dom_id))) {
$conf = $cache->data;
}
if (!$conf) {
return;
}
$this->set_pane_conf($conf);
}
$contexts = $conf['pane_contexts'];
$panel_args = $conf['panel_args'];
$args = array();
$arguments = $this->get_option('arguments');
$context_keys = isset($conf['context']) ? $conf['context'] : array();
foreach ($this->get_argument_input() as $id => $argument) {
switch ($argument['type']) {
case 'context':
$key = array_shift($context_keys);
if (isset($contexts[$key])) {
if (strpos($argument['context'], '.')) {
list($context, $converter) = explode('.', $argument['context'], 2);
$args[] = ctools_context_convert_context($contexts[$key], $converter, array('sanitize' => FALSE));
}
else {
$args[] = $contexts[$key]->argument;
}
}
else {
$args[] = isset($arguments[$id]['exception']['value']) ? $arguments[$id]['exception']['value'] : 'all';
}
break;
case 'fixed':
$args[] = $argument['fixed'];
break;
case 'panel':
$args[] = isset($panel_args[$argument['panel']]) ? $panel_args[$argument['panel']] : NULL;
break;
case 'user':
$args[] = (isset($conf['arguments'][$id]) && $conf['arguments'][$id] !== '') ? ctools_context_keyword_substitute($conf['arguments'][$id], array(), $contexts) : NULL;
break;
case 'wildcard':
// Put in the wildcard.
$args[] = isset($arguments[$id]['wildcard']) ? $arguments[$id]['wildcard'] : '*';
break;
case 'none':
default:
// Put in NULL.
// views.module knows what to do with NULL (or missing) arguments
$args[] = NULL;
break;
}
}
// remove any trailing NULL arguments as these are non-args:
while (count($args) && end($args) === NULL) {
array_pop($args);
}
$this->view->set_arguments($args);
$allow = $this->get_option('allow');
if (!empty($conf['path'])) {
$conf['path'] = ctools_context_keyword_substitute($conf['path'], array(), $contexts);
}
if ($allow['path_override'] && !empty($conf['path'])) {
$this->view->override_path = $conf['path'];
}
else if ($path = $this->get_option('inherit_panels_path')) {
$this->view->override_path = $_GET['q'];
}
// more link
if ($allow['more_link']) {
if (empty($conf['more_link'])) {
$this->set_option('use_more', FALSE);
}
else {
$this->set_option('use_more', TRUE);
// make sure the view runs the count query so we know whether or not the
// more link applies.
$this->view->get_total_rows = TRUE;
}
}
if ($allow['items_per_page'] && isset($conf['items_per_page'])) {
$this->view->set_items_per_page($conf['items_per_page']);
}
if ($allow['offset']) {
$this->view->set_offset($conf['offset']);
}
if ($allow['use_pager']) {
// Only set use_pager if they differ, this way we can avoid overwriting the
// pager type that Views uses.
$pager = $this->get_option('pager');
if ($conf['use_pager'] && ($pager['type'] == 'none' || $pager['type'] == 'some')) {
$pager['type'] = 'full';
}
elseif (!$conf['use_pager'] && $pager['type'] != 'none' && $pager['type'] != 'some') {
$pager['type'] = $this->view->get_items_per_page() || !empty($pager['options']['items_per_page']) ? 'some' : 'none';
}
if ($conf['use_pager']) {
if (!isset($pager['options']['id']) || (isset($conf['pager_id']) && $pager['options']['id'] != $conf['pager_id'])) {
$pager['options']['id'] = (int) $conf['pager_id'];
}
}
$this->set_option('pager', $pager);
}
if ($allow['fields_override']) {
if ($conf['fields_override']) {
$fields = $this->view->get_items('field');
foreach ($fields as $field => $field_display) {
$fields[$field]['exclude'] = empty($conf['fields_override'][$field]);
}
$this->set_option('fields', $fields);
}
}
if ($allow['exposed_form'] && !empty($conf['exposed'])) {
foreach ($conf['exposed'] as $filter_name => $filter_value) {
if (!is_array($filter_value)) {
$conf['exposed'][$filter_name] = ctools_context_keyword_substitute($filter_value, array(), $contexts);
}
}
$this->view->set_exposed_input($conf['exposed']);
}
}
}

View File

@@ -10,9 +10,9 @@ files[] = plugins/views/views_content_plugin_display_ctools_context.inc
files[] = plugins/views/views_content_plugin_display_panel_pane.inc
files[] = plugins/views/views_content_plugin_style_ctools_context.inc
; Information added by Drupal.org packaging script on 2015-08-19
version = "7.x-1.9"
; Information added by Drupal.org packaging script on 2016-10-16
version = "7.x-1.11"
core = "7.x"
project = "ctools"
datestamp = "1440020680"
datestamp = "1476581654"

View File

@@ -295,3 +295,24 @@ function views_content_get_pane_links_alter(&$links, $pane, $content_type) {
);
}
}
/**
* Implements hook_module_implements_alter()
*/
function views_content_module_implements_alter(&$implementations, $hook) {
if ($hook == 'views_pre_view') {
$group = $implementations['views_content'];
unset($implementations['views_content']);
$implementations = array('views_content' => $group) + $implementations;
}
}
/**
* Implements hook_views_pre_view()
*/
function views_content_views_pre_view(&$view) {
if (method_exists($view->display_handler, 'pane_process_conf')) {
// process the pane configuration to prevent loss when using ajax
$view->display_handler->pane_process_conf();
}
}