Chris@18
|
1 <?php
|
Chris@18
|
2
|
Chris@18
|
3 namespace Drupal\media\Plugin\Derivative;
|
Chris@18
|
4
|
Chris@18
|
5 use Drupal\Component\Plugin\Derivative\DeriverBase;
|
Chris@18
|
6 use Drupal\Core\Config\ConfigFactoryInterface;
|
Chris@18
|
7 use Drupal\Core\Entity\EntityTypeManagerInterface;
|
Chris@18
|
8 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
|
Chris@18
|
9 use Drupal\Core\StringTranslation\StringTranslationTrait;
|
Chris@18
|
10 use Drupal\Core\StringTranslation\TranslationInterface;
|
Chris@18
|
11 use Symfony\Component\DependencyInjection\ContainerInterface;
|
Chris@18
|
12
|
Chris@18
|
13 /**
|
Chris@18
|
14 * Generates media-related local tasks.
|
Chris@18
|
15 */
|
Chris@18
|
16 class DynamicLocalTasks extends DeriverBase implements ContainerDeriverInterface {
|
Chris@18
|
17
|
Chris@18
|
18 use StringTranslationTrait;
|
Chris@18
|
19
|
Chris@18
|
20 /**
|
Chris@18
|
21 * The entity type manager.
|
Chris@18
|
22 *
|
Chris@18
|
23 * @var \Drupal\Core\Entity\EntityTypeManagerInterface
|
Chris@18
|
24 */
|
Chris@18
|
25 protected $entityTypeManager;
|
Chris@18
|
26
|
Chris@18
|
27 /**
|
Chris@18
|
28 * The media settings config.
|
Chris@18
|
29 *
|
Chris@18
|
30 * @var \Drupal\Core\Config\ImmutableConfig
|
Chris@18
|
31 */
|
Chris@18
|
32 protected $config;
|
Chris@18
|
33
|
Chris@18
|
34 /**
|
Chris@18
|
35 * Creates a DynamicLocalTasks object.
|
Chris@18
|
36 *
|
Chris@18
|
37 * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
|
Chris@18
|
38 * The translation manager.
|
Chris@18
|
39 * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
|
Chris@18
|
40 * The entity type manager.
|
Chris@18
|
41 * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
|
Chris@18
|
42 * The config factory.
|
Chris@18
|
43 */
|
Chris@18
|
44 public function __construct(TranslationInterface $string_translation, EntityTypeManagerInterface $entity_type_manager, ConfigFactoryInterface $config_factory) {
|
Chris@18
|
45 $this->stringTranslation = $string_translation;
|
Chris@18
|
46 $this->entityTypeManager = $entity_type_manager;
|
Chris@18
|
47 $this->config = $config_factory->get('media.settings');
|
Chris@18
|
48 }
|
Chris@18
|
49
|
Chris@18
|
50 /**
|
Chris@18
|
51 * {@inheritdoc}
|
Chris@18
|
52 */
|
Chris@18
|
53 public static function create(ContainerInterface $container, $base_plugin_id) {
|
Chris@18
|
54 return new static(
|
Chris@18
|
55 $container->get('string_translation'),
|
Chris@18
|
56 $container->get('entity_type.manager'),
|
Chris@18
|
57 $container->get('config.factory')
|
Chris@18
|
58 );
|
Chris@18
|
59 }
|
Chris@18
|
60
|
Chris@18
|
61 /**
|
Chris@18
|
62 * {@inheritdoc}
|
Chris@18
|
63 */
|
Chris@18
|
64 public function getDerivativeDefinitions($base_plugin_definition) {
|
Chris@18
|
65 // Provide an edit_form task if standalone media URLs are enabled.
|
Chris@18
|
66 $this->derivatives["entity.media.canonical"] = [
|
Chris@18
|
67 'route_name' => "entity.media.canonical",
|
Chris@18
|
68 'title' => $this->t('Edit'),
|
Chris@18
|
69 'base_route' => "entity.media.canonical",
|
Chris@18
|
70 'weight' => 1,
|
Chris@18
|
71 ] + $base_plugin_definition;
|
Chris@18
|
72
|
Chris@18
|
73 if ($this->config->get('standalone_url')) {
|
Chris@18
|
74 $this->derivatives["entity.media.canonical"]['title'] = $this->t('View');
|
Chris@18
|
75
|
Chris@18
|
76 $this->derivatives["entity.media.edit_form"] = [
|
Chris@18
|
77 'route_name' => "entity.media.edit_form",
|
Chris@18
|
78 'title' => $this->t('Edit'),
|
Chris@18
|
79 'base_route' => 'entity.media.canonical',
|
Chris@18
|
80 'weight' => 2,
|
Chris@18
|
81 ] + $base_plugin_definition;
|
Chris@18
|
82 }
|
Chris@18
|
83
|
Chris@18
|
84 $this->derivatives["entity.media.delete_form"] = [
|
Chris@18
|
85 'route_name' => "entity.media.delete_form",
|
Chris@18
|
86 'title' => $this->t('Delete'),
|
Chris@18
|
87 'base_route' => "entity.media.canonical",
|
Chris@18
|
88 'weight' => 10,
|
Chris@18
|
89 ] + $base_plugin_definition;
|
Chris@18
|
90
|
Chris@18
|
91 return $this->derivatives;
|
Chris@18
|
92 }
|
Chris@18
|
93
|
Chris@18
|
94 }
|