summaryrefslogtreecommitdiff
path: root/addons/website/static/lib/ckeditor/plugins/devtools/plugin.js
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2013-09-11 18:33:59 +0200
committerXavier Morel <xmo@openerp.com>2013-09-11 18:33:59 +0200
commit399963058b6e6414a549ffc937bbfbb9cc9d48b5 (patch)
tree37cd386aba4a46dd946641548dad4a530ccbd078 /addons/website/static/lib/ckeditor/plugins/devtools/plugin.js
parentf7a14f2830489ef784845db736be33cb07c83219 (diff)
[ADD] ckeditor source
forgot I'd just symlinked it locally bzr revid: xmo@openerp.com-20130911163359-wtwxbiz2rxogdp2j
Diffstat (limited to 'addons/website/static/lib/ckeditor/plugins/devtools/plugin.js')
-rw-r--r--addons/website/static/lib/ckeditor/plugins/devtools/plugin.js158
1 files changed, 158 insertions, 0 deletions
diff --git a/addons/website/static/lib/ckeditor/plugins/devtools/plugin.js b/addons/website/static/lib/ckeditor/plugins/devtools/plugin.js
new file mode 100644
index 00000000000..b8f5dfd3f1e
--- /dev/null
+++ b/addons/website/static/lib/ckeditor/plugins/devtools/plugin.js
@@ -0,0 +1,158 @@
+/**
+ * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md or http://ckeditor.com/license
+ */
+
+CKEDITOR.plugins.add( 'devtools', {
+ lang: 'en,bg,cs,cy,da,de,el,eo,et,fa,fi,fr,gu,he,hr,it,ku,nb,nl,no,pl,tr,ug,uk,vi,zh-cn', // %REMOVE_LINE_CORE%
+
+ init: function( editor ) {
+ editor._.showDialogDefinitionTooltips = 1;
+ },
+ onLoad: function() {
+ CKEDITOR.document.appendStyleText( CKEDITOR.config.devtools_styles || '#cke_tooltip { padding: 5px; border: 2px solid #333; background: #ffffff }' +
+ '#cke_tooltip h2 { font-size: 1.1em; border-bottom: 1px solid; margin: 0; padding: 1px; }' +
+ '#cke_tooltip ul { padding: 0pt; list-style-type: none; }' );
+ }
+});
+
+(function() {
+ function defaultCallback( editor, dialog, element, tabName ) {
+ var lang = editor.lang.devtools,
+ link = '<a href="http://docs.ckeditor.com/#!/api/CKEDITOR.dialog.definition.' +
+ ( element ? ( element.type == 'text' ? 'textInput' : element.type ) : 'content' ) +
+ '" target="_blank">' + ( element ? element.type : 'content' ) + '</a>',
+ str = '<h2>' + lang.title + '</h2>' +
+ '<ul>' +
+ '<li><strong>' + lang.dialogName + '</strong> : ' + dialog.getName() + '</li>' +
+ '<li><strong>' + lang.tabName + '</strong> : ' + tabName + '</li>';
+
+ if ( element )
+ str += '<li><strong>' + lang.elementId + '</strong> : ' + element.id + '</li>';
+
+ str += '<li><strong>' + lang.elementType + '</strong> : ' + link + '</li>';
+
+ return str + '</ul>';
+ }
+
+ function showTooltip( callback, el, editor, dialog, obj, tabName ) {
+ var pos = el.getDocumentPosition(),
+ styles = { 'z-index': CKEDITOR.dialog._.currentZIndex + 10, top: ( pos.y + el.getSize( 'height' ) ) + 'px' };
+
+ tooltip.setHtml( callback( editor, dialog, obj, tabName ) );
+ tooltip.show();
+
+ // Translate coordinate for RTL.
+ if ( editor.lang.dir == 'rtl' ) {
+ var viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize();
+ styles.right = ( viewPaneSize.width - pos.x - el.getSize( 'width' ) ) + 'px';
+ } else
+ styles.left = pos.x + 'px';
+
+ tooltip.setStyles( styles );
+ }
+
+ var tooltip;
+ CKEDITOR.on( 'reset', function() {
+ tooltip && tooltip.remove();
+ tooltip = null;
+ });
+
+ CKEDITOR.on( 'dialogDefinition', function( evt ) {
+ var editor = evt.editor;
+ if ( editor._.showDialogDefinitionTooltips ) {
+ if ( !tooltip ) {
+ tooltip = CKEDITOR.dom.element.createFromHtml( '<div id="cke_tooltip" tabindex="-1" style="position: absolute"></div>', CKEDITOR.document );
+ tooltip.hide();
+ tooltip.on( 'mouseover', function() {
+ this.show();
+ });
+ tooltip.on( 'mouseout', function() {
+ this.hide();
+ });
+ tooltip.appendTo( CKEDITOR.document.getBody() );
+ }
+
+ var dialog = evt.data.definition.dialog,
+ callback = editor.config.devtools_textCallback || defaultCallback;
+
+ dialog.on( 'load', function() {
+ var tabs = dialog.parts.tabs.getChildren(),
+ tab;
+ for ( var i = 0, len = tabs.count(); i < len; i++ ) {
+ tab = tabs.getItem( i );
+ tab.on( 'mouseover', function() {
+ var id = this.$.id;
+ showTooltip( callback, this, editor, dialog, null, id.substring( 4, id.lastIndexOf( '_' ) ) );
+ });
+ tab.on( 'mouseout', function() {
+ tooltip.hide();
+ });
+ }
+
+ dialog.foreach( function( obj ) {
+ if ( obj.type in { hbox:1,vbox:1 } )
+ return;
+
+ var el = obj.getElement();
+ if ( el ) {
+ el.on( 'mouseover', function() {
+ showTooltip( callback, this, editor, dialog, obj, dialog._.currentTabId );
+ });
+ el.on( 'mouseout', function() {
+ tooltip.hide();
+ });
+ }
+ });
+ });
+ }
+ });
+})();
+
+/**
+ * A function that returns the text to be displayed inside the Developer Tools
+ * tooltip when hovering over a dialog UI element.
+ *
+ * // This is actually the default value.
+ * // Show dialog window name, tab ID, and element ID.
+ * config.devtools_textCallback = function( editor, dialog, element, tabName ) {
+ * var lang = editor.lang.devtools,
+ * link = '<a href="http://docs.ckeditor.com/#!/api/CKEDITOR.dialog.definition.' +
+ * ( element ? ( element.type == 'text' ? 'textInput' : element.type ) : 'content' ) +
+ * '.html" target="_blank">' + ( element ? element.type : 'content' ) + '</a>',
+ * str =
+ * '<h2>' + lang.title + '</h2>' +
+ * '<ul>' +
+ * '<li><strong>' + lang.dialogName + '</strong> : ' + dialog.getName() + '</li>' +
+ * '<li><strong>' + lang.tabName + '</strong> : ' + tabName + '</li>';
+ *
+ * if ( element )
+ * str += '<li><strong>' + lang.elementId + '</strong> : ' + element.id + '</li>';
+ *
+ * str += '<li><strong>' + lang.elementType + '</strong> : ' + link + '</li>';
+ *
+ * return str + '</ul>';
+ * };
+ *
+ * @since 3.6
+ * @cfg {Function} [devtools_textCallback=see example]
+ * @member CKEDITOR.config
+ * @param {CKEDITOR.editor} editor
+ * @param dialog
+ * @param element
+ * @param tabName
+ */
+
+/**
+ * A setting that stores CSS rules to be injected into the page with styles to be applied to the tooltip element.
+ *
+ * // This is actually the default value.
+ * CKEDITOR.config.devtools_styles =
+ * '#cke_tooltip { padding: 5px; border: 2px solid #333; background: #ffffff }' +
+ * '#cke_tooltip h2 { font-size: 1.1em; border-bottom: 1px solid; margin: 0; padding: 1px; }' +
+ * '#cke_tooltip ul { padding: 0pt; list-style-type: none; }';
+ *
+ * @since 3.6
+ * @cfg {String} [devtools_styles=see example]
+ * @member CKEDITOR.config
+ */