class DevelLazyBuilders
Lazy builders for the devel module.
Hierarchy
- class \Drupal\devel\DevelLazyBuilders implements \Drupal\Core\Security\TrustedCallbackInterface
Expanded class hierarchy of DevelLazyBuilders
1 string reference to 'DevelLazyBuilders'
1 service uses DevelLazyBuilders
File
-
src/
DevelLazyBuilders.php, line 15
Namespace
Drupal\develView source
class DevelLazyBuilders implements TrustedCallbackInterface {
/**
* The menu link tree service.
*/
protected MenuLinkTreeInterface $menuLinkTree;
/**
* The devel toolbar config.
*/
protected ImmutableConfig $config;
/**
* Constructs a new ShortcutLazyBuilders object.
*
* @param \Drupal\Core\Menu\MenuLinkTreeInterface $menu_link_tree
* The menu link tree service.
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The config factory.
*/
public function __construct(MenuLinkTreeInterface $menu_link_tree, ConfigFactoryInterface $config_factory) {
$this->menuLinkTree = $menu_link_tree;
$this->config = $config_factory->get('devel.toolbar.settings');
}
/**
* {@inheritdoc}
*/
public static function trustedCallbacks() : array {
return [
'renderMenu',
];
}
/**
* Lazy builder callback for the devel menu toolbar.
*
* @return array
* The renderable array rapresentation of the devel menu.
*/
public function renderMenu() : array {
$parameters = new MenuTreeParameters();
$parameters->onlyEnabledLinks()
->setTopLevelOnly();
$tree = $this->menuLinkTree
->load('devel', $parameters);
$manipulators = [
[
'callable' => 'menu.default_tree_manipulators:checkAccess',
],
[
'callable' => 'menu.default_tree_manipulators:generateIndexAndSort',
],
[
'callable' => function (array $tree) : array {
return $this->processTree($tree);
},
],
];
$tree = $this->menuLinkTree
->transform($tree, $manipulators);
$build = $this->menuLinkTree
->build($tree);
$build['#attributes']['class'] = [
'toolbar-menu',
];
CacheableMetadata::createFromRenderArray($build)->addCacheableDependency($this->config)
->applyTo($build);
return $build;
}
/**
* Adds toolbar-specific attributes to the menu link tree.
*
* @param \Drupal\Core\Menu\MenuLinkTreeElement[] $tree
* The menu link tree to manipulate.
*
* @return \Drupal\Core\Menu\MenuLinkTreeElement[]
* The manipulated menu link tree.
*/
public function processTree(array $tree) : array {
$visible_items = $this->config
->get('toolbar_items') ?: [];
foreach ($tree as $element) {
$plugin_id = $element->link
->getPluginId();
if (!in_array($plugin_id, $visible_items)) {
// Add a class that allow to hide the non prioritized menu items when
// the toolbar has horizontal orientation.
$element->options['attributes']['class'][] = 'toolbar-horizontal-item-hidden';
}
}
return $tree;
}
}
Members
Title Sort descending | Deprecated | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|---|
DevelLazyBuilders::$config | protected | property | The devel toolbar config. | ||
DevelLazyBuilders::$menuLinkTree | protected | property | The menu link tree service. | ||
DevelLazyBuilders::processTree | public | function | Adds toolbar-specific attributes to the menu link tree. | ||
DevelLazyBuilders::renderMenu | public | function | Lazy builder callback for the devel menu toolbar. | ||
DevelLazyBuilders::trustedCallbacks | public static | function | Lists the trusted callbacks provided by the implementing class. | Overrides TrustedCallbackInterface::trustedCallbacks | |
DevelLazyBuilders::__construct | public | function | Constructs a new ShortcutLazyBuilders object. | ||
TrustedCallbackInterface::THROW_EXCEPTION | constant | Untrusted callbacks throw exceptions. | |||
TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION | constant | Untrusted callbacks trigger silenced E_USER_DEPRECATION errors. | |||
TrustedCallbackInterface::TRIGGER_WARNING | Deprecated | constant | Untrusted callbacks trigger E_USER_WARNING errors. |