.../modules/media/src/Plugin/Filter/MediaEmbed.php | 39 ++++++++++------------ .../media/tests/src/Functional/FilterTest.php | 6 ++-- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/core/modules/media/src/Plugin/Filter/MediaEmbed.php b/core/modules/media/src/Plugin/Filter/MediaEmbed.php index 4cfd796..bdb6806 100644 --- a/core/modules/media/src/Plugin/Filter/MediaEmbed.php +++ b/core/modules/media/src/Plugin/Filter/MediaEmbed.php @@ -24,40 +24,35 @@ * @Filter( * id = "media_embed", * title = @Translation("Embed media"), - * description = @Translation("Embeds media items entities using a custom HTML tag. If used in conjunction with the 'Align/Caption' filters, make sure this filter is configured to run before them."), + * description = @Translation("Embeds media items using a custom HTML tag. If used in conjunction with the 'Align/Caption' filters, make sure this filter is configured to run after them."), * type = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_REVERSIBLE, * weight = 100, * ) + * + * @internal */ -class MediaEmbed extends FilterBase implements ContainerFactoryPluginInterface { - - /** - * The entity type supported by this filter. - * - * @var string - */ - const ENTITY_TYPE_ID = 'media'; +final class MediaEmbed extends FilterBase implements ContainerFactoryPluginInterface { /** * The entity repository. * * @var \Drupal\Core\Entity\EntityRepositoryInterface */ - protected $entityRepository; + private $entityRepository; /** * The entity type manager. * * @var \Drupal\Core\Entity\EntityTypeManagerInterface */ - protected $entityTypeManager; + private $entityTypeManager; /** * The renderer. * * @var \Drupal\Core\Render\RendererInterface */ - protected $renderer; + private $renderer; /** * Constructs a MediaEmbed object. @@ -104,14 +99,14 @@ public static function create(ContainerInterface $container, array $configuratio * @param string $view_mode * The view mode to render it in. * @param string $langcode - * Language code in which the media entity must be rendered. + * Language code in which the media entity should be rendered. * * @return array * A render array. */ private function renderMedia(MediaInterface $media, $view_mode, $langcode) { $build = $this->entityTypeManager - ->getViewBuilder(static::ENTITY_TYPE_ID) + ->getViewBuilder('media') ->view($media, $view_mode, $langcode); // The "embed" view mode already disabled render caching, but there are some @@ -159,13 +154,13 @@ public function process($text, $langcode) { $xpath = new \DOMXPath($dom); foreach ($xpath->query('//drupal-media[@data-entity-type="media" and normalize-space(@data-view-mode)!="" and normalize-space(@data-entity-uuid)!=""]') as $node) { - $media = $this->entityRepository->loadEntityByUuid(static::ENTITY_TYPE_ID, $node->getAttribute('data-entity-uuid')); + $media = $this->entityRepository->loadEntityByUuid('media', $node->getAttribute('data-entity-uuid')); assert($media === NULL || $media instanceof MediaInterface); $view_mode = $node->getAttribute('data-view-mode'); - $build = $media === NULL - ? $this->renderMissingMedia() - : $this->renderMedia($media, $view_mode, $langcode); + $build = $media + ? $this->renderMedia($media, $view_mode, $langcode) + : $this->renderMissingMedia(); $this->renderIntoDomNode($build, $node, $result); } @@ -197,15 +192,15 @@ public function tips($long = FALSE) { /** * Renders the given render array into the given DOM node. * - * @param array &$build + * @param array $build * The render array to render in isolation - * @param \DOMElement &$node - * The DOM node to render into. To be serialized later. + * @param \DOMNode &$node + * The DOM node to render into. * @param \Drupal\filter\FilterProcessResult $result * The accumulated result of filter processing, updated with the metadata * bubbled during rendering. */ - private function renderIntoDomNode(array $build, \DOMElement $node, FilterProcessResult &$result) { + private function renderIntoDomNode(array $build, \DOMNode $node, FilterProcessResult &$result) { // We need to render the embedded entity: // - without replacing placeholders, so that the placeholders are // only replaced at the last possible moment. Hence we cannot use diff --git a/core/modules/media/tests/src/Functional/FilterTest.php b/core/modules/media/tests/src/Functional/FilterTest.php index 4f73ae5..65c8789 100644 --- a/core/modules/media/tests/src/Functional/FilterTest.php +++ b/core/modules/media/tests/src/Functional/FilterTest.php @@ -73,7 +73,7 @@ protected function setUp() { $media_type = $this->createMediaType('image'); EntityViewMode::create([ - 'id' => 'media.embed', + 'id' => 'media.foobar', 'targetEntityType' => 'media', 'status' => TRUE, 'enabled' => TRUE, @@ -83,7 +83,7 @@ protected function setUp() { EntityViewDisplay::create([ 'targetEntityType' => 'media', 'bundle' => $media_type->id(), - 'mode' => 'embed', + 'mode' => 'foobar', 'status' => TRUE, ])->removeComponent('thumbnail') ->removeComponent('created') @@ -120,7 +120,7 @@ protected function setUp() { * are passed. Also tests situations when embed fails. */ public function testFilter() { - $content = 'This placeholder should not be rendered.'; + $content = 'This placeholder should not be rendered.'; $settings = []; $settings['type'] = 'page'; $settings['title'] = 'Test entity embed with entity-id and view-mode';