Mercurial > hg > isophonics-drupal-site
annotate core/modules/system/src/Plugin/Derivative/SystemMenuBlock.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 4c8ae668cc8c |
children |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Drupal\system\Plugin\Derivative; |
Chris@0 | 4 |
Chris@0 | 5 use Drupal\Component\Plugin\Derivative\DeriverBase; |
Chris@0 | 6 use Drupal\Core\Entity\EntityStorageInterface; |
Chris@0 | 7 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface; |
Chris@0 | 8 use Symfony\Component\DependencyInjection\ContainerInterface; |
Chris@0 | 9 |
Chris@0 | 10 /** |
Chris@0 | 11 * Provides block plugin definitions for custom menus. |
Chris@0 | 12 * |
Chris@0 | 13 * @see \Drupal\system\Plugin\Block\SystemMenuBlock |
Chris@0 | 14 */ |
Chris@0 | 15 class SystemMenuBlock extends DeriverBase implements ContainerDeriverInterface { |
Chris@0 | 16 |
Chris@0 | 17 /** |
Chris@0 | 18 * The menu storage. |
Chris@0 | 19 * |
Chris@0 | 20 * @var \Drupal\Core\Entity\EntityStorageInterface |
Chris@0 | 21 */ |
Chris@0 | 22 protected $menuStorage; |
Chris@0 | 23 |
Chris@0 | 24 /** |
Chris@0 | 25 * Constructs new SystemMenuBlock. |
Chris@0 | 26 * |
Chris@0 | 27 * @param \Drupal\Core\Entity\EntityStorageInterface $menu_storage |
Chris@0 | 28 * The menu storage. |
Chris@0 | 29 */ |
Chris@0 | 30 public function __construct(EntityStorageInterface $menu_storage) { |
Chris@0 | 31 $this->menuStorage = $menu_storage; |
Chris@0 | 32 } |
Chris@0 | 33 |
Chris@0 | 34 /** |
Chris@0 | 35 * {@inheritdoc} |
Chris@0 | 36 */ |
Chris@0 | 37 public static function create(ContainerInterface $container, $base_plugin_id) { |
Chris@0 | 38 return new static( |
Chris@0 | 39 $container->get('entity.manager')->getStorage('menu') |
Chris@0 | 40 ); |
Chris@0 | 41 } |
Chris@0 | 42 |
Chris@0 | 43 /** |
Chris@0 | 44 * {@inheritdoc} |
Chris@0 | 45 */ |
Chris@0 | 46 public function getDerivativeDefinitions($base_plugin_definition) { |
Chris@0 | 47 foreach ($this->menuStorage->loadMultiple() as $menu => $entity) { |
Chris@0 | 48 $this->derivatives[$menu] = $base_plugin_definition; |
Chris@0 | 49 $this->derivatives[$menu]['admin_label'] = $entity->label(); |
Chris@0 | 50 $this->derivatives[$menu]['config_dependencies']['config'] = [$entity->getConfigDependencyName()]; |
Chris@0 | 51 } |
Chris@0 | 52 return $this->derivatives; |
Chris@0 | 53 } |
Chris@0 | 54 |
Chris@0 | 55 } |