_toolbar_do_get_rendered_subtrees(array $data)
#pre_render callback for toolbar_get_rendered_subtrees().
File
- core/modules/toolbar/toolbar.module, line 304
- Administration toolbar for quick access to top level administration items.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | function _toolbar_do_get_rendered_subtrees( array $data ) { $menu_tree = \Drupal::service( 'toolbar.menu_tree' ); // Load the administration menu. The first level is the "Administration" link. // In order to load the children of that link and the subsequent two levels, // start at the second level and end at the fourth. $parameters = new MenuTreeParameters(); $parameters ->setMinDepth(2)->setMaxDepth(4)->onlyEnabledLinks(); // @todo Make the menu configurable in https://www.drupal.org/node/1869638. $tree = $menu_tree ->load( 'admin' , $parameters ); $manipulators = array ( array ( 'callable' => 'menu.default_tree_manipulators:checkAccess' ), array ( 'callable' => 'menu.default_tree_manipulators:generateIndexAndSort' ), array ( 'callable' => 'toolbar_menu_navigation_links' ), ); $tree = $menu_tree ->transform( $tree , $manipulators ); $subtrees = array (); // Calculated the combined cacheability of all subtrees. $cacheability = new CacheableMetadata(); foreach ( $tree as $element ) { /** @var \Drupal\Core\Menu\MenuLinkInterface $link */ $link = $element ->link; if ( $element ->subtree) { $subtree = $menu_tree ->build( $element ->subtree); $output = \Drupal::service( 'renderer' )->renderPlain( $subtree ); $cacheability = $cacheability ->merge(CacheableMetadata::createFromRenderArray( $subtree )); } else { $output = '' ; } // Many routes have dots as route name, while some special ones like <front> // have <> characters in them. $url = $link ->getUrlObject(); $id = str_replace ( array ( '.' , '<' , '>' ), array ( '-' , '' , '' ), $url ->isRouted() ? $url ->getRouteName() : $url ->getUri()); $subtrees [ $id ] = $output ; } // Store the subtrees, along with the cacheability metadata. $cacheability ->applyTo( $data ); $data [ '#subtrees' ] = $subtrees ; return $data ; } |
Please login to continue.