function panelizer_panels_cache_save in Panelizer 7.3
Same name and namespace in other branches
- 6 panelizer.module \panelizer_panels_cache_save()
- 7 panelizer.module \panelizer_panels_cache_save()
- 7.2 panelizer.module \panelizer_panels_cache_save()
Implements hook_panels_cache_save().
Save all changes made to a display using the Page Manager page cache.
File
- ./
panelizer.module, line 1413 - The Panelizer module attaches panels to entities, providing default panels and allowing each panel to be configured independently by privileged users.
Code
function panelizer_panels_cache_save($argument, $cache) {
// If this is set, they clicked a button that saves a different panelizer
// than was being edited, such as saving to default rather than customizing
// an entity.
$original = $argument;
if (isset($cache->display->swap_cache_key)) {
$argument = $cache->display->swap_cache_key;
}
list($entity_type, $key) = explode(':', $argument, 2);
$type = $entity_type;
if ($entity_type == 'default') {
list($entity_type, $bundle, $name) = @explode(':', $key, 3);
$get_default = TRUE;
}
$handler = panelizer_entity_plugin_get_handler($entity_type);
if (!$handler) {
return;
}
if (!empty($get_default)) {
$panelizer = $handler
->get_default_panelizer_object($bundle, $name);
$panelizer->display = $cache->display;
ctools_include('export');
ctools_export_crud_save('panelizer_defaults', $panelizer);
}
else {
list($entity_id, $view_mode, $vid) = explode(':', $key);
$entity = $cache->display->context['panelizer']->data;
if ($entity->panelizer[$view_mode]) {
$entity->panelizer[$view_mode]->display = $cache->display;
$entity->panelizer[$view_mode]->display_is_modified = TRUE;
$handler
->entity_save($entity);
// The display may have been cloned in the save process, so we need
// to be sure to put the old display back, and its contexts.
$cache->display = $entity->panelizer[$view_mode]->display;
$cache->display->context = $handler
->get_contexts($entity->panelizer[$view_mode], $entity);
}
}
panelizer_panels_cache_clear($original, $cache);
}