(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(//)) { return; } var content = ''; } if (typeof content != 'undefined') { Drupal.wysiwyg.instances[instanceId].insert(content); } }, /** * Replace all tags with images. */ attach: function(content, settings, instanceId) { content = content.replace(//g, this._getPlaceholder(settings)); return content; }, /** * Replace images with tags in content upon detaching editor. */ detach: function(content, settings, instanceId) { var $content = $('
' + content + '
'); // 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 '<--break->'; } }; })(jQuery);