diff --git a/core/modules/node/node.module b/core/modules/node/node.module index a09aee1..52df962 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -3938,6 +3938,17 @@ function node_library_info() { array('system', 'drupal.form'), ), ); + $libraries['drupal.node.preview'] = array( + 'title' => 'Node preview', + 'version' => VERSION, + 'js' => array( + drupal_get_path('module', 'node') . '/node.preview.js' => array(), + ), + 'dependencies' => array( + array('system', 'jquery'), + array('system', 'drupal'), + ), + ); $libraries['drupal.content_types'] = array( 'title' => 'Content types', 'version' => VERSION, diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc index a3afa7f..90b2377 100644 --- a/core/modules/node/node.pages.inc +++ b/core/modules/node/node.pages.inc @@ -182,6 +182,7 @@ function theme_node_preview($variables) { $preview_trimmed_version = FALSE; $elements = node_view(clone $node, 'teaser'); + $elements['#attached']['library'][] = array('node', 'drupal.node.preview'); $trimmed = drupal_render($elements); $elements = node_view($node, 'full'); $full = drupal_render($elements); diff --git a/core/modules/node/node.preview.js b/core/modules/node/node.preview.js new file mode 100644 index 0000000..39d0fc3 --- /dev/null +++ b/core/modules/node/node.preview.js @@ -0,0 +1,27 @@ +(function ($, Drupal) { + +"use strict"; + +/** + * Disabling all links in node previews to prevent users from leaving the page. + */ +Drupal.behaviors.nodePreviewDestroyLinks = { + attach: function (context) { + var $preview = $(context).find('.node.preview').once('node-preview'); + if ($preview.length) { + $preview.on('click.preview', 'a', function (e) { + e.preventDefault(); + }); + } + }, + detach: function (context, settings, trigger) { + if (trigger === 'unload') { + var $preview = $(context).find('.node.preview').removeOnce('node-preview'); + if ($preview.length) { + $preview.off('click.preview'); + } + } + } +}; + +})(jQuery, Drupal);