From 10b99f132e6956a586e66a84eecd2a29c03b68f9 Mon Sep 17 00:00:00 2001 From: Naomi Date: Wed, 24 Oct 2018 17:40:26 +0100 Subject: [PATCH] Dynamic menu links for adding actors --- opencase.links.menu.yml | 4 ++ src/Plugin/Derivative/AddActorsMenuLink.php | 55 +++++++++++++++++++++ src/Plugin/Menu/AddActorsMenuLink.php | 9 ++++ 3 files changed, 68 insertions(+) create mode 100644 src/Plugin/Derivative/AddActorsMenuLink.php create mode 100644 src/Plugin/Menu/AddActorsMenuLink.php diff --git a/opencase.links.menu.yml b/opencase.links.menu.yml index 5420e66..8f22d8b 100644 --- a/opencase.links.menu.yml +++ b/opencase.links.menu.yml @@ -34,3 +34,7 @@ opencase.send_feedback: menu_name: openc url: internal:/contact weight: 1 +opencase.add_actors_links: + class: Drupal\opencase\Plugin\Menu\AddActorsMenuLink + deriver: Drupal\opencase\Plugin\Derivative\AddActorsMenuLink + menu_name: opencase-add-actors diff --git a/src/Plugin/Derivative/AddActorsMenuLink.php b/src/Plugin/Derivative/AddActorsMenuLink.php new file mode 100644 index 0000000..64395e0 --- /dev/null +++ b/src/Plugin/Derivative/AddActorsMenuLink.php @@ -0,0 +1,55 @@ +entityTypeManager = $entity_type_manager; + } + + /** +   * {@inheritdoc} +   */ + public static function create(ContainerInterface $container, $base_plugin_id) { + return new static( + $base_plugin_id, + $container->get('entity_type.manager') + ); + } + /** +   * {@inheritdoc} +   */ + public function getDerivativeDefinitions($base_plugin_definition) { + $links = []; + $actorTypes = $this->entityTypeManager->getStorage('oc_actor_type')->loadMultiple(); + foreach ($actorTypes as $id => $actorType) { + $links[$id] = [ + 'title' => "Add a ". $actorType->label(), + 'route_name' => "entity.oc_actor.add_form", + 'route_parameters' => ['oc_actor_type' => $actorType->id()] + ] + $base_plugin_definition; + } + return $links; + } +} diff --git a/src/Plugin/Menu/AddActorsMenuLink.php b/src/Plugin/Menu/AddActorsMenuLink.php new file mode 100644 index 0000000..a929325 --- /dev/null +++ b/src/Plugin/Menu/AddActorsMenuLink.php @@ -0,0 +1,9 @@ +