From d80291c2750ea31d03a540687c8110a6b8779b82 Mon Sep 17 00:00:00 2001
From: Lauri Eskola <lauri.eskola@acquia.com>
Date: Wed, 28 Jun 2023 21:17:56 +0300
Subject: [PATCH] Issue #3326455 by el7cosmos, lauriii, joshuami, zenimagine,
 Wim Leers, smustgrave: [drupalMedia] When media is embedded in a view mode
 whose display is configured to link elsewhere, that link should not be
 clickable in CKEditor

---
 core/modules/ckeditor5/css/drupalmedia.css    |  4 ++++
 .../src/FunctionalJavascript/MediaTest.php    | 21 +++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/core/modules/ckeditor5/css/drupalmedia.css b/core/modules/ckeditor5/css/drupalmedia.css
index a3468ad2fec1..e69e9c7ed6fa 100644
--- a/core/modules/ckeditor5/css/drupalmedia.css
+++ b/core/modules/ckeditor5/css/drupalmedia.css
@@ -13,6 +13,10 @@
   min-width: 50px;
 }
 
+.ck .drupal-media [data-drupal-media-preview] {
+  pointer-events: none;
+}
+
 .ck-content .drupal-media img {
   display: block;
   min-width: 100%;
diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php
index c40c4e7456a8..210ede726dac 100644
--- a/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php
+++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php
@@ -1673,4 +1673,25 @@ protected function getLastPreviewRequestTransferSize() {
     return $this->getSession()->evaluateScript($javascript);
   }
 
+  /**
+   * Ensure media preview isn't clickable.
+   */
+  public function testMediaPointerEvent() {
+    $entityViewDisplay = EntityViewDisplay::load('media.image.view_mode_1');
+    $thumbnail = $entityViewDisplay->getComponent('thumbnail');
+    $thumbnail['settings']['image_link'] = 'file';
+    $entityViewDisplay->setComponent('thumbnail', $thumbnail);
+    $entityViewDisplay->save();
+
+    $assert_session = $this->assertSession();
+    $page = $this->getSession()->getPage();
+    $url = $this->host->toUrl('edit-form');
+    $this->drupalGet($url);
+    $this->waitForEditor();
+    $assert_session->waitForLink('default alt');
+    $page->find('css', '.ck .drupal-media')->click();
+    // Assert that the media preview is not clickable by comparing the URL.
+    $this->assertEquals($url->toString(), $this->getUrl());
+  }
+
 }
-- 
GitLab