Mercurial > hg > isophonics-drupal-site
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; + } + +}