Projet

Général

Profil

Révision 5a7e6170

Ajouté par Florent Torregrosa il y a environ 10 ans

Update :

  • panels : 7.x-3.3 -> 7.x-3.4
  • pdf_reader : 7.x-1.0-rc4 -> 7.x-1.0-rc5

Voir les différences:

drupal7/sites/all/modules/panels/plugins/task_handlers/panel_context.inc
184 184
  'default conf' => array(
185 185
    'title' => t('Panel'),
186 186
    'no_blocks' => FALSE,
187
    'pipeline' => 'standard',
187
    'pipeline' => variable_get('panels_renderer_default', 'standard'),
188 188
    'body_classes_to_remove' => '',
189 189
    'body_classes_to_add' => '',
190 190
    'css_id' => '',
......
238 238
  return $handler->conf['display'];
239 239
}
240 240

  
241
/**
242
 * Build the cache key so that the editor and IPE can properly find
243
 * everything needed for this display.
244
 */
245
function panels_panel_context_cache_key($task_name, $handler_id, $args) {
246
  $arguments = array();
247
  foreach ($args as $arg) {
248
    // Sadly things like panels everywhere actually use non-string arguments
249
    // and they basically can't be represented here. Luckily, PE also does
250
    // not use a system where this matters, so replace its args with a 0
251
    // for a placeholder.
252
    if (is_string($arg)) {
253
      $arguments[] = $arg;
254
    }
255
    else {
256
      $arguments[] = '0';
257
    }
258
  }
259
  $cache_key = 'panel_context:' . $task_name . '::' . $handler_id . '::' . implode('\\', $arguments) . '::';
260
  return $cache_key;
261
}
262

  
241 263
/**
242 264
 * Check selection rules and, if passed, render the contexts.
243 265
 */
......
267 289
  $display->css_id = $handler->conf['css_id'];
268 290
  $task_name = page_manager_make_task_name($handler->task, $handler->subtask);
269 291

  
270
  $display->cache_key = 'panel_context:' . $task_name . ':' . $handler->name;
292
  $display->cache_key = panels_panel_context_cache_key($task_name, $handler->name, $args);
271 293

  
272 294
  // Check to see if there is any CSS.
273 295
  if (!empty($handler->conf['css'])) {
......
284 306
  panels_get_current_page_display($display);
285 307

  
286 308
  $renderer = panels_get_renderer($handler->conf['pipeline'], $display);
309
  // If the IPE is enabled, but the user does not have access to edit
310
  // load the standard renderer instead.
311

  
312
  $parents = class_parents($renderer);
313
  if (!empty($parents['panels_renderer_editor']) && !user_access('user page manager') && !user_access('use ipe with page manager')) {
314
    $renderer = panels_get_renderer_handler('standard', $display);
315
  }
287 316

  
288 317
  // Remove and add body element classes
289 318
  $panel_body_css = &drupal_static('panel_body_css');
......
364 393
      unset($handler->conf[$item]);
365 394
    }
366 395
  }
367
  $display->did = 'new';
396
  $display = (object) array(
397
    'did' => 'new',
398
    'uuid' => ctools_uuid_generate(),
399
  );
368 400
  $handler->conf['display'] = $display;
369 401
}
370 402

  
......
629 661
  $form_state['display'] = &panels_panel_context_get_display($form_state['handler']);
630 662
  $form_state['layout'] = $form_state['handler']->conf['temp_layout'];
631 663

  
632
  $form_state['cache_key'] = 'panel_context:' . $form_state['task_name'] . ':' . $form_state['handler_id'];
664
  $form_state['cache_key'] = panels_panel_context_cache_key($form_state['task_name'], $form_state['handler_id'], array());
633 665

  
634 666
  ctools_include('common', 'panels');
635 667
  ctools_include('display-layout', 'panels');
......
666 698
  ctools_include('context');
667 699
  ctools_include('context-task-handler');
668 700

  
669
  $cache = panels_edit_cache_get('panel_context:' . $form_state['task_name'] . ':' . $form_state['handler_id']);
701
  $cache = panels_edit_cache_get(panels_panel_context_cache_key($form_state['task_name'], $form_state['handler_id'], array()));
670 702

  
671 703
  $form_state['renderer'] = panels_get_renderer_handler('editor', $cache->display);
672 704
  $form_state['renderer']->cache = &$cache;
......
868 900
  $display->context = $contexts;
869 901
  $display->args = $arguments;
870 902
  $display->css_id = $handler->conf['css_id'];
871
  $display->cache_key = 'panel_context:' . $task->name . ':' . $handler->name;
903
  $display->cache_key = panels_panel_context_cache_key($task->name, $handler->name, $arguments);
872 904

  
873 905
  $renderer = panels_get_renderer($handler->conf['pipeline'], $display);
874
  if ($type == 'content') {
875
    $renderer->prepare();
906
  $renderer->prepare();
876 907

  
908
  if ($address) {
877 909
    $pid = array_shift($address);
878 910
    if (!empty($renderer->prepared['panes'][$pid])) {
879
      return $renderer->render_pane($renderer->prepared['panes'][$pid]);
911
      if ($type == 'content') {
912
        return $renderer->render_pane($renderer->prepared['panes'][$pid]);
913
      }
914
      elseif ($type == 'pane') {
915
        return $renderer->prepared['panes'][$pid];
916
      }
917
    }
918
  }
919
  else {
920
    if ($type == 'content') {
921
      return $renderer->render();
922
    }
923
    elseif ($type == 'renderer') {
924
      return $renderer;
880 925
    }
881 926
  }
882 927
}

Formats disponibles : Unified diff