Mercurial > hg > rr-repo
diff sites/all/modules/wysiwyg/wysiwyg.api.js @ 0:ff03f76ab3fe
initial version
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Wed, 21 Aug 2013 18:51:11 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/wysiwyg/wysiwyg.api.js Wed Aug 21 18:51:11 2013 +0100 @@ -0,0 +1,97 @@ + +/** + * Wysiwyg plugin button implementation for Awesome plugin. + */ +Drupal.wysiwyg.plugins.awesome = { + /** + * Return whether the passed node belongs to this plugin. + * + * @param node + * The currently focused DOM element in the editor content. + */ + isNode: function(node) { + return ($(node).is('img.mymodule-awesome')); + }, + + /** + * Execute the button. + * + * @param data + * An object containing data about the current selection: + * - format: 'html' when the passed data is HTML content, 'text' when the + * passed data is plain-text content. + * - node: When 'format' is 'html', the focused DOM element in the editor. + * - content: The textual representation of the focused/selected editor + * content. + * @param settings + * The plugin settings, as provided in the plugin's PHP include file. + * @param instanceId + * The ID of the current editor instance. + */ + invoke: function(data, settings, instanceId) { + // Generate HTML markup. + if (data.format == 'html') { + // Prevent duplicating a teaser break. + if ($(data.node).is('img.mymodule-awesome')) { + return; + } + var content = this._getPlaceholder(settings); + } + // Generate plain text. + else { + var content = '<!--break-->'; + } + // Insert new content into the editor. + if (typeof content != 'undefined') { + Drupal.wysiwyg.instances[instanceId].insert(content); + } + }, + + /** + * Prepare all plain-text contents of this plugin with HTML representations. + * + * Optional; only required for "inline macro tag-processing" plugins. + * + * @param content + * The plain-text contents of a textarea. + * @param settings + * The plugin settings, as provided in the plugin's PHP include file. + * @param instanceId + * The ID of the current editor instance. + */ + attach: function(content, settings, instanceId) { + content = content.replace(/<!--break-->/g, this._getPlaceholder(settings)); + return content; + }, + + /** + * Process all HTML placeholders of this plugin with plain-text contents. + * + * Optional; only required for "inline macro tag-processing" plugins. + * + * @param content + * The HTML content string of the editor. + * @param settings + * The plugin settings, as provided in the plugin's PHP include file. + * @param instanceId + * The ID of the current editor instance. + */ + detach: function(content, settings, instanceId) { + var $content = $('<div>' + content + '</div>'); + $.each($('img.mymodule-awesome', $content), function (i, elem) { + //... + }); + return $content.html(); + }, + + /** + * Helper function to return a HTML placeholder. + * + * The 'drupal-content' CSS class is required for HTML elements in the editor + * content that shall not trigger any editor's native buttons (such as the + * image button for this example placeholder markup). + */ + _getPlaceholder: function (settings) { + return '<img src="' + settings.path + '/images/spacer.gif" alt="<--break->" title="<--break-->" class="wysiwyg-break drupal-content" />'; + } +};