123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- <?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);
- }
|