diff --git a/core/modules/node/node.libraries.yml b/core/modules/node/node.libraries.yml index 59947a237de6..a420112ced1b 100644 --- a/core/modules/node/node.libraries.yml +++ b/core/modules/node/node.libraries.yml @@ -20,6 +20,7 @@ drupal.node.preview: - core/jquery - core/jquery.once - core/drupal + - core/drupal.dialog - core/drupal.form drupal.content_types: diff --git a/core/modules/node/node.preview.es6.js b/core/modules/node/node.preview.es6.js index abd670acf80c..ef67b68ceada 100644 --- a/core/modules/node/node.preview.es6.js +++ b/core/modules/node/node.preview.es6.js @@ -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) { diff --git a/core/modules/node/node.preview.js b/core/modules/node/node.preview.js index f18af286a634..60c8dfd10ed0 100644 --- a/core/modules/node/node.preview.js +++ b/core/modules/node/node.preview.js @@ -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) { diff --git a/core/modules/node/tests/src/FunctionalJavascript/NodePreviewLinkTest.php b/core/modules/node/tests/src/FunctionalJavascript/NodePreviewLinkTest.php new file mode 100644 index 000000000000..8eb7a268d0ad --- /dev/null +++ b/core/modules/node/tests/src/FunctionalJavascript/NodePreviewLinkTest.php @@ -0,0 +1,60 @@ + '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]' => 'Anchor linkNormal link', + ], 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()); + } + +}