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
|
||||||
- core/jquery.once
|
- core/jquery.once
|
||||||
- core/drupal
|
- core/drupal
|
||||||
|
- core/drupal.dialog
|
||||||
- core/drupal.form
|
- core/drupal.form
|
||||||
|
|
||||||
drupal.content_types:
|
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) {
|
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) {
|
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) {
|
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) {
|
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