Issue #2939885 by samuel.mortenson: UX regression (again): Prevent links in node preview from being clicked
parent
e455822008
commit
3b304d23cc
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
<?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());
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue