diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-10-11 06:05:53 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-10-11 06:05:53 +0000 |
commit | 1d72b6ec9f5b577d976b51498a7212d112c5cc33 (patch) | |
tree | a74184429fcc920587d8c568d9f3d6a16347e62b /modules | |
parent | b3265dbe174ce0efefa181b8af6c1eaea3ff22c2 (diff) | |
download | brdo-1d72b6ec9f5b577d976b51498a7212d112c5cc33.tar.gz brdo-1d72b6ec9f5b577d976b51498a7212d112c5cc33.tar.bz2 |
#599706 by sun: Allow altering local tasks/actions.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/menu/menu.api.php | 63 | ||||
-rw-r--r-- | modules/system/page.tpl.php | 12 |
2 files changed, 69 insertions, 6 deletions
diff --git a/modules/menu/menu.api.php b/modules/menu/menu.api.php index 599a4a124..6a3405d9e 100644 --- a/modules/menu/menu.api.php +++ b/modules/menu/menu.api.php @@ -430,5 +430,68 @@ function hook_menu_delete($menu) { } /** + * Alter tabs and actions displayed on the page before they are rendered. + * + * This hook is invoked by menu_local_tasks(). The system-determined tabs and + * actions are passed in by reference. Additional tabs or actions may be added, + * or existing items altered. + * + * Each tab or action is an associative array containing: + * - #theme: The theme function to use to render. + * - #link: An associative array containing: + * - title: The localized title of the link. + * - href: The system path to link to. + * - localized_options: An array of options to pass to url(). + * - #active: Whether the link should be marked as 'active'. + * + * @param $data + * An associative array containing: + * - actions: An associative array containing: + * - count: The amount of actions determined by the menu system, which can + * be ignored. + * - output: A list of of actions, each one being an associative array + * as described above. + * - tabs: An indexed array (list) of tab levels (up to 2 levels), each + * containing an associative array: + * - count: The amount of tabs determined by the menu system. This value + * does not need to be altered if there is more than one tab. + * - output: A list of of tabs, each one being an associative array as + * described above. + */ +function hook_menu_local_tasks_alter(&$data, $router_item, $root_path) { + // Add an action linking to node/add to all pages. + $data['actions']['output'][] = array( + '#theme' => 'menu_local_task', + '#link' => array( + 'title' => t('Add new content'), + 'href' => 'node/add', + 'localized_options' => array( + 'attributes' => array( + 'title' => t('Add new content'), + ), + ), + ), + ); + + // Add a tab linking to node/add to all pages. + $data['tabs'][0]['output'][] = array( + '#theme' => 'menu_local_task', + '#link' => array( + 'title' => t('Example tab'), + 'href' => 'node/add', + 'localized_options' => array( + 'attributes' => array( + 'title' => t('Add new content'), + ), + ), + ), + // Define whether this link is active. This can be omitted for + // implementations that add links to pages outside of the current page + // context. + '#active' => ($router_item['path'] == $root_path), + ); +} + +/** * @} End of "addtogroup hooks". */ diff --git a/modules/system/page.tpl.php b/modules/system/page.tpl.php index 2c4c8887e..bb2a6d3a3 100644 --- a/modules/system/page.tpl.php +++ b/modules/system/page.tpl.php @@ -31,14 +31,14 @@ * - $secondary_menu (array): An array containing the Secondary menu links for * the site, if they have been configured. * - $breadcrumb: The breadcrumb trail for the current page. - * - $action_links: Actions local to the page, such as 'Add menu' on the menu - * administration interface. * * Page content (in order of occurrence in the default page.tpl.php): * - $title: The page title, for use in the actual HTML content. * - $messages: HTML for status and error messages. Should be displayed prominently. - * - $tabs: Tabs linking to any sub-pages beneath the current page (e.g., the view - * and edit tabs when displaying a node). + * - $tabs (array): Tabs linking to any sub-pages beneath the current page + * (e.g., the view and edit tabs when displaying a node). + * - $action_links (array): Actions local to the page, such as 'Add menu' on the + * menu administration interface. * - $feed_icons: A string of all feed icons for the current page. * * Regions: @@ -107,9 +107,9 @@ <div id="content" class="column"><div class="section"> <?php if ($page['highlight']): ?><div id="highlight"><?php print render($page['highlight']); ?></div><?php endif; ?> <?php if ($title): ?><h1 class="title" id="page-title"><?php print $title; ?></h1><?php endif; ?> - <?php if ($tabs): ?><div class="tabs"><?php print $tabs; ?></div><?php endif; ?> + <?php if ($tabs): ?><div class="tabs"><?php print render($tabs); ?></div><?php endif; ?> <?php print render($page['help']); ?> - <?php if ($action_links): ?><ul class="action-links"><?php print $action_links; ?></ul><?php endif; ?> + <?php if ($action_links): ?><ul class="action-links"><?php print render($action_links); ?></ul><?php endif; ?> <?php print render($page['content']); ?> <?php print $feed_icons; ?> </div></div> <!-- /.section, /#content --> |