1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- (function ($) {
- // @todo Array syntax required; 'break' is a predefined token in JavaScript.
- Drupal.wysiwyg.plugins['break'] = {
- /**
- * Return whether the passed node belongs to this plugin.
- */
- isNode: function(node) {
- return ($(node).is('img.wysiwyg-break'));
- },
- /**
- * Execute the button.
- */
- invoke: function(data, settings, instanceId) {
- if (data.format == 'html') {
- // Prevent duplicating a teaser break.
- if ($(data.node).is('img.wysiwyg-break')) {
- return;
- }
- var content = this._getPlaceholder(settings);
- }
- else {
- // Prevent duplicating a teaser break.
- // @todo data.content is the selection only; needs access to complete content.
- if (data.content.match(/<!--break-->/)) {
- return;
- }
- var content = '<!--break-->';
- }
- if (typeof content != 'undefined') {
- Drupal.wysiwyg.instances[instanceId].insert(content);
- }
- },
- /**
- * Replace all <!--break--> tags with images.
- */
- attach: function(content, settings, instanceId) {
- content = content.replace(/<!--break-->/g, this._getPlaceholder(settings));
- return content;
- },
- /**
- * Replace images with <!--break--> tags in content upon detaching editor.
- */
- detach: function(content, settings, instanceId) {
- var $content = $('<div>' + content + '</div>'); // No .outerHTML() in jQuery :(
- // #404532: document.createComment() required or IE will strip the comment.
- // #474908: IE 8 breaks when using jQuery methods to replace the elements.
- // @todo Add a generic implementation for all Drupal plugins for this.
- $.each($('img.wysiwyg-break', $content), function (i, elem) {
- elem.parentNode.insertBefore(document.createComment('break'), elem);
- elem.parentNode.removeChild(elem);
- });
- return $content.html();
- },
- /**
- * Helper function to return a HTML placeholder.
- */
- _getPlaceholder: function (settings) {
- return '<img src="' + settings.path + '/images/spacer.gif" alt="<--break->" title="<--break-->" class="wysiwyg-break drupal-content" />';
- }
- };
- })(jQuery);
|