diff --git a/modules/node/node.pages.inc b/modules/node/node.pages.inc index c6cb1bc..30788d1 100644 --- a/modules/node/node.pages.inc +++ b/modules/node/node.pages.inc @@ -387,6 +387,7 @@ function theme_node_preview($variables) { $preview_trimmed_version = FALSE; $elements = node_view(clone $node, 'teaser'); + $elements['#attached']['js'][] = drupal_get_path('module', 'node') . '/node.preview.js'; $trimmed = drupal_render($elements); $elements = node_view($node, 'full'); $full = drupal_render($elements); diff --git a/modules/node/node.preview.js b/modules/node/node.preview.js new file mode 100644 index 0000000..8059641 --- /dev/null +++ b/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.node-preview').once('node-preview'); + if ($preview.length) { + $preview.delegate('a', 'click.node-preview', function (e) { + e.preventDefault(); + }); + } + }, + detach: function (context, settings, trigger) { + if (trigger === 'unload') { + var $preview = $(context).find('.node.node-preview').removeOnce('node-preview'); + if ($preview.length) { + $preview.undelegate('click.node-preview'); + } + } + } +}; + +})(jQuery, Drupal);