.../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';