Commit 3b304d23 authored by catch's avatar catch

Issue #2939885 by samuel.mortenson: UX regression (again): Prevent links in...

Issue #2939885 by samuel.mortenson: UX regression (again): Prevent links in node preview from being clicked
parent e4558220
......@@ -20,6 +20,7 @@ drupal.node.preview:
- core/jquery
- core/jquery.once
- core/drupal
- core/drupal.dialog
- core/drupal.form
drupal.content_types:
......
......@@ -45,9 +45,9 @@
}
}
const $preview = $(context).find('.content').once('node-preview');
const $preview = $(context).once('node-preview');
if ($(context).find('.node-preview-container').length) {
$preview.on('click.preview', 'a:not([href^=#], #edit-backlink, #toolbar-administration a)', clickPreviewModal);
$preview.on('click.preview', 'a:not([href^="#"], .node-preview-container a)', clickPreviewModal);
}
},
detach(context, settings, trigger) {
......
......@@ -29,9 +29,9 @@
}
}
var $preview = $(context).find('.content').once('node-preview');
var $preview = $(context).once('node-preview');
if ($(context).find('.node-preview-container').length) {
$preview.on('click.preview', 'a:not([href^=#], #edit-backlink, #toolbar-administration a)', clickPreviewModal);
$preview.on('click.preview', 'a:not([href^="#"], .node-preview-container a)', clickPreviewModal);
}
},
detach: function detach(context, settings, trigger) {
......
<?php
namespace Drupal\Tests\node\FunctionalJavascript;
use Drupal\filter\Entity\FilterFormat;
use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
/**
* Tests the JavaScript prevention of navigation away from node previews.
*
* @group node
*/
class NodePreviewLinkTest extends JavascriptTestBase {
/**
* {@inheritdoc}
*/
public static $modules = ['node', 'filter'];
/**
* {@inheritdoc}
*/
public function setUp() {
parent::setUp();
$filtered_html_format = FilterFormat::create([
'format' => 'filtered_html',
'name' => 'Filtered HTML',
]);
$filtered_html_format->save();
$this->drupalCreateContentType(['type' => 'test']);
$user = $this->drupalCreateUser([
'access content',
'edit own test content',
'create test content',
$filtered_html_format->getPermissionName(),
]);
$this->drupalLogin($user);
}
/**
* Test the behavior of clicking preview links.
*/
public function testPreviewLinks() {
$assertSession = $this->assertSession();
$this->drupalPostForm('node/add/test', [
'title[0][value]' => 'Test node',
'body[0][value]' => '<a href="#foo">Anchor link</a><a href="/foo">Normal link</a>',
], t('Preview'));
$this->clickLink('Anchor link');
$assertSession->pageTextNotContains('Leave preview?');
$this->clickLink('Normal link');
$assertSession->pageTextContains('Leave preview?');
$this->click('button:contains("Leave preview")');
$this->assertStringEndsWith('/foo', $this->getUrl());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment