Révision 5a7e6170
Ajouté par Florent Torregrosa il y a environ 10 ans
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
Update :