first import
This commit is contained in:
68
sites/all/modules/wysiwyg/plugins/break/break.js
Normal file
68
sites/all/modules/wysiwyg/plugins/break/break.js
Normal file
@@ -0,0 +1,68 @@
|
||||
(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);
|
||||
Reference in New Issue
Block a user