diff core/modules/media/src/Plugin/Derivative/DynamicLocalTasks.php @ 18:af1871eacc83

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:33:08 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/media/src/Plugin/Derivative/DynamicLocalTasks.php	Thu May 09 15:33:08 2019 +0100
@@ -0,0 +1,94 @@
+<?php
+
+namespace Drupal\media\Plugin\Derivative;
+
+use Drupal\Component\Plugin\Derivative\DeriverBase;
+use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+use Drupal\Core\StringTranslation\TranslationInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Generates media-related local tasks.
+ */
+class DynamicLocalTasks extends DeriverBase implements ContainerDeriverInterface {
+
+  use StringTranslationTrait;
+
+  /**
+   * The entity type manager.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   */
+  protected $entityTypeManager;
+
+  /**
+   * The media settings config.
+   *
+   * @var \Drupal\Core\Config\ImmutableConfig
+   */
+  protected $config;
+
+  /**
+   * Creates a DynamicLocalTasks object.
+   *
+   * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
+   *   The translation manager.
+   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
+   *   The entity type manager.
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
+   *   The config factory.
+   */
+  public function __construct(TranslationInterface $string_translation, EntityTypeManagerInterface $entity_type_manager, ConfigFactoryInterface $config_factory) {
+    $this->stringTranslation = $string_translation;
+    $this->entityTypeManager = $entity_type_manager;
+    $this->config = $config_factory->get('media.settings');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, $base_plugin_id) {
+    return new static(
+      $container->get('string_translation'),
+      $container->get('entity_type.manager'),
+      $container->get('config.factory')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDerivativeDefinitions($base_plugin_definition) {
+    // Provide an edit_form task if standalone media URLs are enabled.
+    $this->derivatives["entity.media.canonical"] = [
+      'route_name' => "entity.media.canonical",
+      'title' => $this->t('Edit'),
+      'base_route' => "entity.media.canonical",
+      'weight' => 1,
+    ] + $base_plugin_definition;
+
+    if ($this->config->get('standalone_url')) {
+      $this->derivatives["entity.media.canonical"]['title'] = $this->t('View');
+
+      $this->derivatives["entity.media.edit_form"] = [
+        'route_name' => "entity.media.edit_form",
+        'title' => $this->t('Edit'),
+        'base_route' => 'entity.media.canonical',
+        'weight' => 2,
+      ] + $base_plugin_definition;
+    }
+
+    $this->derivatives["entity.media.delete_form"] = [
+      'route_name' => "entity.media.delete_form",
+      'title' => $this->t('Delete'),
+      'base_route' => "entity.media.canonical",
+      'weight' => 10,
+    ] + $base_plugin_definition;
+
+    return $this->derivatives;
+  }
+
+}