1d3b1922be72d80187b91e5c78bfd331b8531770
[yaffs-website] / web / modules / contrib / devel / src / Plugin / Derivative / DevelLocalTask.php
1 <?php
2
3 namespace Drupal\devel\Plugin\Derivative;
4
5 use Drupal\Component\Plugin\Derivative\DeriverBase;
6 use Drupal\Core\Entity\EntityTypeManagerInterface;
7 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
8 use Drupal\Core\StringTranslation\StringTranslationTrait;
9 use Drupal\Core\StringTranslation\TranslationInterface;
10 use Symfony\Component\DependencyInjection\ContainerInterface;
11
12 /**
13  * Provides local task definitions for all entity bundles.
14  *
15  * @see \Drupal\devel\Controller\EntityDebugController
16  * @see \Drupal\devel\Routing\RouteSubscriber
17  */
18 class DevelLocalTask extends DeriverBase implements ContainerDeriverInterface {
19
20   use StringTranslationTrait;
21
22   /**
23    * The entity manager
24    *
25    * @var \Drupal\Core\Entity\EntityTypeManagerInterface
26    */
27   protected $entityTypeManager;
28
29   /**
30    * Creates an DevelLocalTask object.
31    *
32    * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
33    *   The entity manager.
34    * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
35    *   The translation manager.
36    */
37   public function __construct(EntityTypeManagerInterface $entity_type_manager, TranslationInterface $string_translation) {
38     $this->entityTypeManager = $entity_type_manager;
39     $this->stringTranslation = $string_translation;
40   }
41
42   /**
43    * {@inheritdoc}
44    */
45   public static function create(ContainerInterface $container, $base_plugin_id) {
46     return new static(
47       $container->get('entity_type.manager'),
48       $container->get('string_translation')
49     );
50   }
51
52   /**
53    * {@inheritdoc}
54    */
55   public function getDerivativeDefinitions($base_plugin_definition) {
56     $this->derivatives = [];
57
58     foreach ($this->entityTypeManager->getDefinitions() as $entity_type_id => $entity_type) {
59
60       $has_edit_path = $entity_type->hasLinkTemplate('devel-load');
61       $has_canonical_path = $entity_type->hasLinkTemplate('devel-render');
62
63       if ($has_edit_path || $has_canonical_path) {
64
65         $this->derivatives["$entity_type_id.devel_tab"] = [
66           'route_name' => "entity.$entity_type_id." . ($has_edit_path ? 'devel_load' : 'devel_render'),
67           'title' => $this->t('Devel'),
68           'base_route' => "entity.$entity_type_id." . ($has_canonical_path ? "canonical" : "edit_form"),
69           'weight' => 100,
70         ];
71
72         $this->derivatives["$entity_type_id.devel_definition_tab"] = [
73           'route_name' => "entity.$entity_type_id.devel_definition",
74           'title' => $this->t('Definition'),
75           'parent_id' => "devel.entities:$entity_type_id.devel_tab",
76           'weight' => 100,
77         ];
78
79         if ($has_canonical_path) {
80           $this->derivatives["$entity_type_id.devel_render_tab"] = [
81             'route_name' => "entity.$entity_type_id.devel_render",
82             'weight' => 100,
83             'title' => $this->t('Render'),
84             'parent_id' => "devel.entities:$entity_type_id.devel_tab",
85           ];
86         }
87
88         if ($has_edit_path) {
89           $this->derivatives["$entity_type_id.devel_load_tab"] = [
90             'route_name' => "entity.$entity_type_id.devel_load",
91             'weight' => 100,
92             'title' => $this->t('Load'),
93             'parent_id' => "devel.entities:$entity_type_id.devel_tab",
94           ];
95         }
96       }
97     }
98
99     foreach ($this->derivatives as &$entry) {
100       $entry += $base_plugin_definition;
101     }
102
103     return $this->derivatives;
104   }
105
106 }