Commit fd088ff0 authored by jhodgdon's avatar jhodgdon

Issue #2407933 by romina.nayak, adci_contributor, sidharrell, sinniger,...

Issue #2407933 by romina.nayak, adci_contributor, sidharrell, sinniger, arpit_nnd: Move all menu-related hooks and topic to new menu.api.php file
parent 4f035573
This diff is collapsed.
This diff is collapsed.
......@@ -15,242 +15,6 @@
* @{
*/
/**
* Alters all the menu links discovered by the menu link plugin manager.
*
* @param array $links
* The link definitions to be altered.
*
* @return array
* An array of discovered menu links. Each link has a key that is the machine
* name, which must be unique. By default, use the route name as the
* machine name. In cases where multiple links use the same route name, such
* as two links to the same page in different menus, or two links using the
* same route name but different route parameters, the suggested machine name
* patten is the route name followed by a dot and a unique suffix. For
* example, an additional logout link might have a machine name of
* user.logout.navigation, and default links provided to edit the article and
* page content types could use machine names
* entity.node_type.edit_form.article and entity.node_type.edit_form.page.
* Since the machine name may be arbitrary, you should never write code that
* assumes it is identical to the route name.
*
* The value corresponding to each machine name key is an associative array
* that may contain the following key-value pairs:
* - title: (required) The untranslated title of the menu link.
* - description: The untranslated description of the link.
* - route_name: (optional) The route name to be used to build the path.
* Either a route_name or a link_path must be provided.
* - route_parameters: (optional) The route parameters to build the path.
* - link_path: (optional) If you have an external link use link_path instead
* of providing a route_name.
* - parent: (optional) The machine name of the link that is this link's menu
* parent.
* - weight: (optional) An integer that determines the relative position of
* items in the menu; higher-weighted items sink. Defaults to 0. Menu items
* with the same weight are ordered alphabetically.
* - menu_name: (optional) The machine name of a menu to put the link in, if
* not the default Tools menu.
* - expanded: (optional) If set to TRUE, and if a menu link is provided for
* this menu item (as a result of other properties), then the menu link is
* always expanded, equivalent to its 'always expanded' checkbox being set
* in the UI.
* - options: (optional) An array of options to be passed to _l() when
* generating a link from this menu item.
*
* @ingroup menu
*/
function hook_menu_links_discovered_alter(&$links) {
// Change the weight and title of the user.logout link.
$links['user.logout']['weight'] = -10;
$links['user.logout']['title'] = 'Logout';
}
/**
* 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.
*
* 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 _l().
* - #weight: The link's weight compared to other links.
* - #active: Whether the link should be marked as 'active'.
*
* @param array $data
* An associative array containing:
* - actions: A list of of actions keyed by their href, each one being an
* associative array as described above.
* - tabs: A list of (up to 2) tab levels that contain a list of of tabs keyed
* by their href, each one being an associative array as described above.
* @param string $route_name
* The route name of the page.
*/
function hook_menu_local_tasks(&$data, $route_name) {
// Add an action linking to node/add to all pages.
$data['actions']['node/add'] = array(
'#theme' => 'menu_local_action',
'#link' => array(
'title' => t('Add content'),
'url' => Url::fromRoute('node.add_page'),
'localized_options' => array(
'attributes' => array(
'title' => t('Add content'),
),
),
),
);
// Add a tab linking to node/add to all pages.
$data['tabs'][0]['node/add'] = array(
'#theme' => 'menu_local_task',
'#link' => array(
'title' => t('Example tab'),
'url' => Url::fromRoute('node.add_page'),
'localized_options' => array(
'attributes' => array(
'title' => t('Add content'),
),
),
),
);
}
/**
* 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. Existing tabs or actions may be altered.
*
* @param array $data
* An associative array containing tabs and actions. See
* hook_menu_local_tasks() for details.
* @param string $route_name
* The route name of the page.
*
* @see hook_menu_local_tasks()
*
* @ingroup menu
*/
function hook_menu_local_tasks_alter(&$data, $route_name) {
}
/**
* Alter local actions plugins.
*
* @param array $local_actions
* The array of local action plugin definitions, keyed by plugin ID.
*
* @see \Drupal\Core\Menu\LocalActionInterface
* @see \Drupal\Core\Menu\LocalActionManager
*
* @ingroup menu
*/
function hook_menu_local_actions_alter(&$local_actions) {
}
/**
* Alter local tasks plugins.
*
* @param array $local_tasks
* The array of local tasks plugin definitions, keyed by plugin ID.
*
* @see \Drupal\Core\Menu\LocalTaskInterface
* @see \Drupal\Core\Menu\LocalTaskManager
*/
function hook_local_tasks_alter(&$local_tasks) {
// Remove a specified local task plugin.
unset($local_tasks['example_plugin_id']);
}
/**
* Alter contextual links before they are rendered.
*
* This hook is invoked by
* \Drupal\Core\Menu\ContextualLinkManager::getContextualLinkPluginsByGroup().
* The system-determined contextual links are passed in by reference. Additional
* links may be added and existing links can be altered.
*
* Each contextual link contains the following entries:
* - title: The localized title of the link.
* - route_name: The route name of the link.
* - route_parameters: The route parameters of the link.
* - localized_options: An array of options to pass to _url().
* - (optional) weight: The weight of the link, which is used to sort the links.
*
*
* @param array $links
* An associative array containing contextual links for the given $group,
* as described above. The array keys are used to build CSS class names for
* contextual links and must therefore be unique for each set of contextual
* links.
* @param string $group
* The group of contextual links being rendered.
* @param array $route_parameters.
* The route parameters passed to each route_name of the contextual links.
* For example:
* @code
* array('node' => $node->id())
* @endcode
*
* @see \Drupal\Core\Menu\ContextualLinkManager
*
* @ingroup menu
*/
function hook_contextual_links_alter(array &$links, $group, array $route_parameters) {
if ($group == 'menu') {
// Dynamically use the menu name for the title of the menu_edit contextual
// link.
$menu = \Drupal::entityManager()->getStorage('menu')->load($route_parameters['menu']);
$links['menu_edit']['title'] = t('Edit menu: !label', array('!label' => $menu->label()));
}
}
/**
* Alter the plugin definition of contextual links.
*
* @param array $contextual_links
* An array of contextual_links plugin definitions, keyed by contextual link
* ID. Each entry contains the following keys:
* - title: The displayed title of the link
* - route_name: The route_name of the contextual link to be displayed
* - group: The group under which the contextual links should be added to.
* Possible values are e.g. 'node' or 'menu'.
*
* @see \Drupal\Core\Menu\ContextualLinkManager
*/
function hook_contextual_links_plugins_alter(array &$contextual_links) {
$contextual_links['menu_edit']['title'] = 'Edit the menu';
}
/**
* Perform alterations to the breadcrumb built by the BreadcrumbManager.
*
* @param array $breadcrumb
* An array of breadcrumb link a tags, returned by the breadcrumb manager
* build method, for example
* @code
* array('<a href="/">Home</a>');
* @endcode
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* The current route match.
* @param array $context
* May include the following key:
* - builder: the instance of
* \Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface that constructed this
* breadcrumb, or NULL if no builder acted based on the current attributes.
*/
function hook_system_breadcrumb_alter(array &$breadcrumb, \Drupal\Core\Routing\RouteMatchInterface $route_match, array $context) {
// Add an item to the end of the breadcrumb.
$breadcrumb[] = Drupal::l(t('Text'), 'example_route_name');
}
/**
* Flush all persistent and static caches.
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment