69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
(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);
|