265 lines
7.4 KiB
PHP
265 lines
7.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Hooks provided by Panels.
|
|
*/
|
|
|
|
/**
|
|
* Allow modules to provide their own caching mechanism for the display editor.
|
|
*
|
|
* @param string $argument
|
|
* The second half of the cache key. Full key module:TASK_NAME:HANDLER_NAME
|
|
* passed part: TASK_NAME:HANDLER_NAME
|
|
* @param stdClass $cache
|
|
* The display to cache.
|
|
*/
|
|
function hook_panels_cache_set($argument, $cache) {
|
|
list($handler, $item) = _panels_mini_panels_cache_get($argument);
|
|
$item->mini_panels_display_cache = $cache;
|
|
$handler->edit_cache_set_key($item, $argument);
|
|
}
|
|
|
|
/**
|
|
* Allow modules to provide their own caching mechanism for the display editor.
|
|
*
|
|
* @param string $argument
|
|
* The second half of the cache key. Full key module:TASK_NAME:HANDLER_NAME
|
|
* passed part: TASK_NAME:HANDLER_NAME
|
|
*
|
|
* @return stdClass|NULL
|
|
* The cached display or NULL if the cache wasn't hit.
|
|
*/
|
|
function hook_panels_cache_get($argument) {
|
|
ctools_include('common', 'panels');
|
|
list($handler, $item) = _panels_mini_panels_cache_get($argument);
|
|
if (isset($item->mini_panels_display_cache)) {
|
|
return $item->mini_panels_display_cache;
|
|
}
|
|
|
|
$cache = new stdClass();
|
|
$cache->display = $item->display;
|
|
$cache->display->context = ctools_context_load_contexts($item);
|
|
$cache->display->cache_key = 'panels_mini:' . $argument;
|
|
$cache->content_types = panels_common_get_allowed_types('panels_mini', $cache->display->context);
|
|
$cache->display_title = TRUE;
|
|
|
|
// @TODO support locking.
|
|
$cache->locked = FALSE;
|
|
|
|
return $cache;
|
|
}
|
|
|
|
/**
|
|
* Allow modules to provide their own caching mechanism for the display editor.
|
|
*
|
|
* @param string $argument
|
|
* The second half of the cache key. Full key module:TASK_NAME:HANDLER_NAME
|
|
* passed part: TASK_NAME:HANDLER_NAME
|
|
* @param stdClass $cache
|
|
* The display to cache.
|
|
*
|
|
* @return stdClass
|
|
* The cached display.
|
|
*/
|
|
function hook_panels_cache_save($argument, $cache) {
|
|
list($handler, $item) = _panels_mini_panels_cache_get($argument);
|
|
$item->display = $cache->display;
|
|
panels_mini_save($item);
|
|
|
|
$handler->edit_cache_clear($item);
|
|
|
|
return $item;
|
|
}
|
|
|
|
/**
|
|
* Allow modules to provide their own caching mechanism for the display editor.
|
|
*
|
|
* @param string $argument
|
|
* The second half of the cache key. Full key module:TASK_NAME:HANDLER_NAME
|
|
* passed part: TASK_NAME:HANDLER_NAME
|
|
* @param stdClass $cache
|
|
* The cached display.
|
|
*/
|
|
function hook_panels_cache_clear($argument, $cache) {
|
|
list($handler, $item) = _panels_mini_panels_cache_get($argument);
|
|
$handler->edit_cache_clear($item);
|
|
}
|
|
|
|
/**
|
|
* Allow modules to adjust the rendering array of the panels dashboard.
|
|
*
|
|
* @param array $vars
|
|
* The output variables.
|
|
*/
|
|
function hook_panels_dashboard_blocks(&$vars) {
|
|
$vars['links']['panels_node'] = array(
|
|
'title' => l(t('Panel node'), 'node/add/panel'),
|
|
'description' => t('Panel nodes are node content and appear in your searches, but are more limited than panel pages.'),
|
|
'weight' => -1,
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Allow to alter the pane content to render.
|
|
*
|
|
* This happens after the keyword substitution.
|
|
*
|
|
* @param stdClass $content
|
|
* The content block to render.
|
|
* @param stdClass $pane
|
|
* The pane object.
|
|
* @param array $args
|
|
* The display arguments.
|
|
* @param array $contexts
|
|
* Array with the used contexts.
|
|
*/
|
|
function hook_panels_pane_content_alter($content, $pane, $args, $contexts) {
|
|
// Don't display titles.
|
|
unset($content->title);
|
|
}
|
|
|
|
/**
|
|
* Allow modules to provide a mechanism to break locks.
|
|
*
|
|
* @param string $argument
|
|
* The second half of the cache key. Full key module:TASK_NAME:HANDLER_NAME
|
|
* passed part: TASK_NAME:HANDLER_NAME
|
|
* @param stdClass $cache
|
|
* The cached display.
|
|
*/
|
|
function hook_panels_edit_cache_break_lock($argument, $cache) {
|
|
$cache->locked = FALSE;
|
|
}
|
|
|
|
/**
|
|
* Fired before a panels display is rendered.
|
|
*
|
|
* Last chance to modify the panels display or add output before the keyword
|
|
* substitution runs and the panels display is rendered.
|
|
*
|
|
* @param panels_display $panels_display
|
|
* The panels display that will be rendered.
|
|
* @param stdClass $renderer
|
|
* The renderer object that will be used to render.
|
|
*
|
|
* @return string
|
|
* Additional output to add before the panels display.
|
|
*/
|
|
function hook_panels_pre_render($panels_display, $renderer) {
|
|
$translation = i18n_string_object_translate('panels_display_configuration', $panels_display);
|
|
$panels_display->title = $translation->title;
|
|
}
|
|
|
|
/**
|
|
* Fired after a panels display is rendered.
|
|
*
|
|
* Allow to add additional output after the output of the panels display.
|
|
*
|
|
* @param panels_display $panels_display
|
|
* The rendered panels display.
|
|
* @param stdClass $renderer
|
|
* The used renderer object.
|
|
*
|
|
* @return string
|
|
* Additional output to add after the panels display.
|
|
*/
|
|
function hook_panels_post_render($panels_display, $renderer) {
|
|
return t('Output proudly sponsored by panels.');
|
|
}
|
|
|
|
/**
|
|
* Fired before a new pane is inserted in the storage.
|
|
*
|
|
* @param stdClass $pane
|
|
* Pane that will be rendered.
|
|
*/
|
|
function hook_panels_pane_insert($pane) {
|
|
// Check if this pane has a custom title enabled.
|
|
if (!empty($pane->configuration['override_title'])) {
|
|
$translation_object = (object) array(
|
|
'pid' => $pane->pid,
|
|
'title' => $pane->configuration['override_title_text'],
|
|
);
|
|
$status = i18n_string_object_update('panels_pane_configuration', $translation_object);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Fired before a changed pane is updated in the storage.
|
|
*
|
|
* @param stdClass $pane
|
|
* Pane that will be rendered.
|
|
*/
|
|
function hook_panels_pane_update($pane) {
|
|
// Check if this pane has a custom title enabled.
|
|
if (!empty($pane->configuration['override_title'])) {
|
|
$translation_object = (object) array(
|
|
'pid' => $pane->pid,
|
|
'title' => $pane->configuration['override_title_text'],
|
|
);
|
|
$status = i18n_string_object_update('panels_pane_configuration', $translation_object);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Fired before a panel is rendered.
|
|
*
|
|
* Last chance to modify the pane before the keyword substitution runs and the
|
|
* pane is rendered.
|
|
*
|
|
* @param stdClass $pane
|
|
* Pane that will be rendered.
|
|
*/
|
|
function hook_panels_pane_prerender($pane) {
|
|
// Check if this pane has a custom title enabled.
|
|
if (!empty($pane->configuration['override_title'])) {
|
|
$translation_object = (object) array(
|
|
'pid' => $pane->pid,
|
|
'title' => $pane->configuration['override_title_text'],
|
|
);
|
|
$translation_object = i18n_string_object_translate('panels_pane_configuration', $translation_object);
|
|
$pane->configuration['override_title_text'] = $translation_object->title;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Fired before panes are deleted.
|
|
*
|
|
* @param array $pids
|
|
* Array with the panel id's to delete.
|
|
*/
|
|
function hook_panels_pane_delete($pids) {
|
|
foreach ($pids as $pid) {
|
|
// Create dummy pane with pid as property.
|
|
$pane = (object) array('pid' => $pid);
|
|
i18n_string_object_remove('panels_pane_configuration', $pane);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Fired after a display is saved.
|
|
*
|
|
* @param panels_display $display
|
|
* The display to save.
|
|
*/
|
|
function hook_panels_display_save($display) {
|
|
i18n_string_object_update('display_configuration', $display);
|
|
}
|
|
|
|
/**
|
|
* Fired before a display is deleted.
|
|
*
|
|
* @param integer $did
|
|
* Id of the display to delete.
|
|
*/
|
|
function hook_panels_delete_display($did) {
|
|
$uuid = db_select('panels_display')
|
|
->fields('panels_display', array('uuid'))
|
|
->condition('did', $did)
|
|
->execute()
|
|
->fetchColumn();
|
|
$display = (object) array('uuid' => $uuid);
|
|
i18n_string_object_remove('display_configuration', $display);
|
|
}
|