diff options
| author | Paramjit Singh Sahota <psa@tinyerp.com> | 2013-12-24 11:01:25 +0530 |
|---|---|---|
| committer | Paramjit Singh Sahota <psa@tinyerp.com> | 2013-12-24 11:01:25 +0530 |
| commit | 18d8368ee11eef0a74bacdb8f293414331bfa8da (patch) | |
| tree | fc21df70cbd2901396c2bcf2fee0b52d750abd43 /addons/website/static/lib/ckeditor/plugins/indent | |
| parent | 5900672160c2bd5ae1d9257f20dbb5c51a193996 (diff) | |
| parent | 123185757f51ee7e146d7295864556999d2a6938 (diff) | |
[MERGE] Merged lp:~openerp-dev/openobject-addons/trunk-website-al
bzr revid: psa@tinyerp.com-20131224053125-3lrogsrgd3ccp0i6
Diffstat (limited to 'addons/website/static/lib/ckeditor/plugins/indent')
11 files changed, 0 insertions, 756 deletions
diff --git a/addons/website/static/lib/ckeditor/plugins/indent/dev/indent.html b/addons/website/static/lib/ckeditor/plugins/indent/dev/indent.html deleted file mode 100644 index 6bb49a87fa7..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/dev/indent.html +++ /dev/null @@ -1,290 +0,0 @@ -<!DOCTYPE html> -<!-- -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license ---> -<html> -<head> - <title>Indent DEV sample</title> - <meta charset="utf-8"> - <script src="../../../ckeditor.js"></script> - <style> - body { - padding: 20px; - margin: 0; - } - .editors { - display: block; - overflow: hidden; - width: 100%; - margin: 0px auto; - list-style-type: none; - margin: 0; - padding: 0; - - box-sizing: content-box; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - - background: #eee; - } - .editors li { - width: 50%; - margin: 0; - padding: 10px; - float: left; - - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - - } - .editors li:nth-child(2n) { - background: #D4E59A; - } - #menu { - position: fixed; - top: 0; - right: 20px; - padding: 5px; - border: 1px solid #aaa; - background: #eee; - } - - </style> -</head> -<body> - <p id="menu"> - <a href="#listnblock">List & Block</a>, - <a href="#classes">Classes</a>, - <a href="#list">List</a>, - <a href="#block">Block</a>, - <a href="#br">ENTER_BR</a> - </p> - - <h1 class="samples">Indent DEV sample</h1> - <h2 id="listnblock">List & Block</h2> - <ul class="editors"> - <li> - <textarea cols="80" id="editor1" rows="10"> - <p>xx</p> - <ul> - <li>x</li> - <li>y</li> - </ul> - <p>xx</p> - - <br> - - <ul><li><ol><li>xx</li></ol></li><li>yy</li></ul> - </textarea> - </li> - <li> - <pre id="editor1_out"></pre> - </li> - </ul> - - <h2 id="classes">Indent classes</h2> - <ul class="editors"> - <li> - <textarea cols="80" id="editor2" rows="10"> - <ul> - <li>a</li> - <li> - b - <ol> - <li>inner</li> - </ol> - </li> - <li>c</li> - </ul> - <p>moo</p> - </textarea> - </li> - <li> - <pre id="editor2_out"></pre> - </li> - </ul> - - <h2 id="list">List only</h2> - <ul class="editors"> - <li> - <textarea cols="80" id="editor3" rows="10"> - <ul> - <li>a</li> - <li> - b - <ol> - <li>inner</li> - </ol> - </li> - <li>c</li> - </ul> - <p>moo</p> - </textarea> - </li> - <li> - <pre id="editor3_out"></pre> - </li> - </ul> - - <h2 id="block">Block only</h2> - <ul class="editors"> - <li> - <textarea cols="80" id="editor4" rows="10"> - <ul> - <li>a</li> - <li> - b - <ol> - <li>inner</li> - </ol> - </li> - <li>c</li> - </ul> - <p>moo</p> - </textarea> - </li> - <li> - <pre id="editor4_out"></pre> - </li> - </ul> - - <h2 id="br">CKEDITOR.ENTER_BR</h2> - <ul class="editors"> - <li> - <textarea cols="80" id="editor5" rows="10"> - Text - <br> - <ul> - <li>a</li> - <li>b</li> - </ul> - </textarea> - </li> - <li> - <pre id="editor5_out"></pre> - </li> - </ul> - <script> - - var plugins = 'enterkey,toolbar,htmlwriter,wysiwygarea,undo,sourcearea,clipboard,list,justify,indent,indentlist,indentblock'; - - CKEDITOR.config.indentOffset = 10; - CKEDITOR.addCss( '\ - .i1{ margin-left: 10px}\ - .i2{ margin-left: 20px}\ - .i3{ margin-left: 30px}' ); - - function showData( event ) { - CKEDITOR.document.getById( this.name + '_out' ).setText( getHtmlWithSelection( this ) ); - } - - function browserHtmlFix( html ) { - if ( CKEDITOR.env.ie && ( document.documentMode || CKEDITOR.env.version ) < 9 ) { - // Fix output base href on anchored link. - html = html.replace( /href="(.*?)#(.*?)"/gi, - function( m, base, anchor ) { - if ( base == window.location.href.replace( window.location.hash, '' ) ) - return 'href="#' + anchor + '"'; - - return m; - } ); - - // Fix output line break after HR. - html = html.replace( /(<HR>)\r\n/gi, function( m, hr ) { return hr; } ); - } - - return html; - } - - function getHtmlWithSelection( editorOrElement, root ) { - var isEditor = editorOrElement instanceof CKEDITOR.editor, - element = isEditor ? editorOrElement.editable() : editorOrElement; - - root = isEditor ? element : - root instanceof CKEDITOR.dom.document ? - root.getBody() : root || CKEDITOR.document.getBody(); - - function replaceWithBookmark( match, startOrEnd ) { - var bookmark; - switch( startOrEnd ) { - case 'S' : - bookmark = '['; - break; - case 'E' : - bookmark = ']'; - break; - case 'C' : - bookmark = '^'; - break; - } - return bookmark; - } - - // Hack: force remove the filling char hack in Webkit. - isEditor && CKEDITOR.env.webkit && editorOrElement.fire( 'beforeSetMode' ); - - var sel = isEditor ? editorOrElement.getSelection() - : new CKEDITOR.dom.selection( root ); - - var doc = sel.document; - var ranges = sel.getRanges(), - range; - - var bms = []; - var iter = ranges.createIterator(); - while( range = iter.getNextRange() ) - bms.push( range.createBookmark( 1 ) ); - - var html = browserHtmlFix( isEditor ? editorOrElement.getData() : element.getHtml() ); - html = html.replace( /<span\b[^>]*?id="?cke_bm_\d+(\w)"?\b[^>]*?>.*?<\/span>/gi, - replaceWithBookmark ); - - for ( var i = 0, bm; i < bms.length; i++ ) { - bm = bms[ i ]; - var start = doc.getById( bm.startNode ), - end = doc.getById( bm.endNode ); - - start && start.remove(); - end && end.remove(); - } - - return html; - } - - CKEDITOR.on( 'instanceReady', function ( event ) { - var editor = event.editor; - - showData.call( editor ); - - editor.on( 'afterCommandExec', showData, editor ); - }); - - CKEDITOR.replace( 'editor1', { - plugins: plugins - } ); - - CKEDITOR.replace( 'editor2', { - plugins: plugins, - indentClasses: [ 'i1', 'i2', 'i3' ] - } ); - - CKEDITOR.replace( 'editor3', { - plugins: plugins, - removePlugins: 'indentblock' - } ); - - CKEDITOR.replace( 'editor4', { - plugins: plugins, - removePlugins: 'indentlist' - } ); - - CKEDITOR.replace( 'editor5', { - plugins: plugins, - enterMode: CKEDITOR.ENTER_BR - } ); - </script> -</body> -</html> - diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent-rtl.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent-rtl.png Binary files differdeleted file mode 100644 index e14dc30835b..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent-rtl.png +++ /dev/null diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent.png Binary files differdeleted file mode 100644 index c629bb41a88..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent.png +++ /dev/null diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent-rtl.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent-rtl.png Binary files differdeleted file mode 100644 index 35f69abfd5b..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent-rtl.png +++ /dev/null diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent.png Binary files differdeleted file mode 100644 index b00179e2443..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent.png +++ /dev/null diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/indent-rtl.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/indent-rtl.png Binary files differdeleted file mode 100644 index ff3fd222ee3..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/icons/indent-rtl.png +++ /dev/null diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/indent.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/indent.png Binary files differdeleted file mode 100644 index 3e151bc691f..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/icons/indent.png +++ /dev/null diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent-rtl.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent-rtl.png Binary files differdeleted file mode 100644 index 7165424d36a..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent-rtl.png +++ /dev/null diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent.png Binary files differdeleted file mode 100644 index 54f205d6de7..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent.png +++ /dev/null diff --git a/addons/website/static/lib/ckeditor/plugins/indent/lang/en.js b/addons/website/static/lib/ckeditor/plugins/indent/lang/en.js deleted file mode 100644 index 0308f2ba354..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/lang/en.js +++ /dev/null @@ -1,8 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'indent', 'en', { - indent: 'Increase Indent', - outdent: 'Decrease Indent' -}); diff --git a/addons/website/static/lib/ckeditor/plugins/indent/plugin.js b/addons/website/static/lib/ckeditor/plugins/indent/plugin.js deleted file mode 100755 index 96465d07f9f..00000000000 --- a/addons/website/static/lib/ckeditor/plugins/indent/plugin.js +++ /dev/null @@ -1,458 +0,0 @@ -/** - * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -/** - * @fileOverview Increase and Decrease Indent commands. - */ - -(function() { - 'use strict'; - - var TRISTATE_DISABLED = CKEDITOR.TRISTATE_DISABLED, - TRISTATE_OFF = CKEDITOR.TRISTATE_OFF; - - CKEDITOR.plugins.add( 'indent', { - lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% - icons: 'indent,indent-rtl,outdent,outdent-rtl', // %REMOVE_LINE_CORE% - - init: function( editor ) { - var genericDefinition = CKEDITOR.plugins.indent.genericDefinition; - - // Register generic commands. - setupGenericListeners( editor, editor.addCommand( 'indent', new genericDefinition( true ) ) ); - setupGenericListeners( editor, editor.addCommand( 'outdent', new genericDefinition() ) ); - - // Create and register toolbar button if possible. - if ( editor.ui.addButton ) { - editor.ui.addButton( 'Indent', { - label: editor.lang.indent.indent, - command: 'indent', - directional: true, - toolbar: 'indent,20' - } ); - - editor.ui.addButton( 'Outdent', { - label: editor.lang.indent.outdent, - command: 'outdent', - directional: true, - toolbar: 'indent,10' - } ); - } - - // Register dirChanged listener. - editor.on( 'dirChanged', function( evt ) { - var range = editor.createRange(), - dataNode = evt.data.node; - - range.setStartBefore( dataNode ); - range.setEndAfter( dataNode ); - - var walker = new CKEDITOR.dom.walker( range ), - node; - - while ( ( node = walker.next() ) ) { - if ( node.type == CKEDITOR.NODE_ELEMENT ) { - // A child with the defined dir is to be ignored. - if ( !node.equals( dataNode ) && node.getDirection() ) { - range.setStartAfter( node ); - walker = new CKEDITOR.dom.walker( range ); - continue; - } - - // Switch alignment classes. - var classes = editor.config.indentClasses; - if ( classes ) { - var suffix = ( evt.data.dir == 'ltr' ) ? [ '_rtl', '' ] : [ '', '_rtl' ]; - for ( var i = 0; i < classes.length; i++ ) { - if ( node.hasClass( classes[ i ] + suffix[ 0 ] ) ) { - node.removeClass( classes[ i ] + suffix[ 0 ] ); - node.addClass( classes[ i ] + suffix[ 1 ] ); - } - } - } - - // Switch the margins. - var marginLeft = node.getStyle( 'margin-right' ), - marginRight = node.getStyle( 'margin-left' ); - - marginLeft ? node.setStyle( 'margin-left', marginLeft ) : node.removeStyle( 'margin-left' ); - marginRight ? node.setStyle( 'margin-right', marginRight ) : node.removeStyle( 'margin-right' ); - } - } - } ); - } - } ); - - /** - * Global command class definitions and global helpers. - * - * @class - * @singleton - */ - CKEDITOR.plugins.indent = { - /** - * A base class for a generic command definition, responsible mainly for creating - * Increase Indent and Decrease Indent toolbar buttons as well as for refreshing - * UI states. - * - * Commands of this class do not perform any indentation by themselves. They - * delegate this job to content-specific indentation commands (i.e. indentlist). - * - * @class CKEDITOR.plugins.indent.genericDefinition - * @extends CKEDITOR.commandDefinition - * @param {CKEDITOR.editor} editor The editor instance this command will be - * applied to. - * @param {String} name The name of the command. - * @param {Boolean} [isIndent] Defines the command as indenting or outdenting. - */ - genericDefinition: function( isIndent ) { - /** - * Determines whether the command belongs to the indentation family. - * Otherwise it is assumed to be an outdenting command. - * - * @readonly - * @property {Boolean} [=false] - */ - this.isIndent = !!isIndent; - - // Mimic naive startDisabled behavior for outdent. - this.startDisabled = !this.isIndent; - }, - - /** - * A base class for specific indentation command definitions responsible for - * handling a pre-defined set of elements i.e. indentlist for lists or - * indentblock for text block elements. - * - * Commands of this class perform indentation operations and modify the DOM structure. - * They listen for events fired by {@link CKEDITOR.plugins.indent.genericDefinition} - * and execute defined actions. - * - * **NOTE**: This is not an {@link CKEDITOR.command editor command}. - * Context-specific commands are internal, for indentation system only. - * - * @class CKEDITOR.plugins.indent.specificDefinition - * @param {CKEDITOR.editor} editor The editor instance this command will be - * applied to. - * @param {String} name The name of the command. - * @param {Boolean} [isIndent] Defines the command as indenting or outdenting. - */ - specificDefinition: function( editor, name, isIndent ) { - this.name = name; - this.editor = editor; - - /** - * An object of jobs handled by the command. Each job consists - * of two functions: `refresh` and `exec` as well as the execution priority. - * - * * The `refresh` function determines whether a job is doable for - * a particular context. These functions are executed in the - * order of priorities, one by one, for all plugins that registered - * jobs. As jobs are related to generic commands, refreshing - * occurs when the global command is firing the `refresh` event. - * - * **Note**: This function must return either {@link CKEDITOR#TRISTATE_DISABLED} - * or {@link CKEDITOR#TRISTATE_OFF}. - * - * * The `exec` function modifies the DOM if possible. Just like - * `refresh`, `exec` functions are executed in the order of priorities - * while the generic command is executed. This function is not executed - * if `refresh` for this job returned {@link CKEDITOR#TRISTATE_DISABLED}. - * - * **Note**: This function must return a Boolean value, indicating whether it - * was successful. If a job was successful, then no other jobs are being executed. - * - * Sample definition: - * - * command.jobs = { - * // Priority = 20. - * '20': { - * refresh( editor, path ) { - * if ( condition ) - * return CKEDITOR.TRISTATE_OFF; - * else - * return CKEDITOR.TRISTATE_DISABLED; - * }, - * exec( editor ) { - * // DOM modified! This was OK. - * return true; - * } - * }, - * // Priority = 60. This job is done later. - * '60': { - * // Another job. - * } - * }; - * - * For additional information, please check comments for - * the `setupGenericListeners` function. - * - * @readonly - * @property {Object} [={}] - */ - this.jobs = {}; - - /** - * Determines whether the editor that the command belongs to has - * {@link CKEDITOR.config#enterMode config.enterMode} set to {@link CKEDITOR#ENTER_BR}. - * - * @readonly - * @see CKEDITOR.config#enterMode - * @property {Boolean} [=false] - */ - this.enterBr = editor.config.enterMode == CKEDITOR.ENTER_BR; - - /** - * Determines whether the command belongs to the indentation family. - * Otherwise it is assumed to be an outdenting command. - * - * @readonly - * @property {Boolean} [=false] - */ - this.isIndent = !!isIndent; - - /** - * The name of the global command related to this one. - * - * @readonly - */ - this.relatedGlobal = isIndent ? 'indent' : 'outdent'; - - /** - * A keystroke associated with this command (*Tab* or *Shift+Tab*). - * - * @readonly - */ - this.indentKey = isIndent ? 9 : CKEDITOR.SHIFT + 9; - - /** - * Stores created markers for the command so they can eventually be - * purged after the `exec` function is run. - */ - this.database = {}; - }, - - /** - * Registers content-specific commands as a part of the indentation system - * directed by generic commands. Once a command is registered, - * it listens for events of a related generic command. - * - * CKEDITOR.plugins.indent.registerCommands( editor, { - * 'indentlist': new indentListCommand( editor, 'indentlist' ), - * 'outdentlist': new indentListCommand( editor, 'outdentlist' ) - * } ); - * - * Content-specific commands listen for the generic command's `exec` and - * try to execute their own jobs, one after another. If some execution is - * successful, `evt.data.done` is set so no more jobs (commands) are involved. - * - * Content-specific commands also listen for the generic command's `refresh` - * and fill the `evt.data.states` object with states of jobs. A generic command - * uses this data to determine its own state and to update the UI. - * - * @member CKEDITOR.plugins.indent - * @param {CKEDITOR.editor} editor The editor instance this command is - * applied to. - * @param {Object} commands An object of {@link CKEDITOR.command}. - */ - registerCommands: function( editor, commands ) { - editor.on( 'pluginsLoaded', function() { - for ( var name in commands ) { - ( function( editor, command ) { - var relatedGlobal = editor.getCommand( command.relatedGlobal ); - - for ( var priority in command.jobs ) { - // Observe generic exec event and execute command when necessary. - // If the command was successfully handled by the command and - // DOM has been modified, stop event propagation so no other plugin - // will bother. Job is done. - relatedGlobal.on( 'exec', function( evt ) { - if ( evt.data.done ) - return; - - // Make sure that anything this command will do is invisible - // for undoManager. What undoManager only can see and - // remember is the execution of the global command (relatedGlobal). - editor.fire( 'lockSnapshot' ); - - if ( command.execJob( editor, priority ) ) - evt.data.done = true; - - editor.fire( 'unlockSnapshot' ); - - // Clean up the markers. - CKEDITOR.dom.element.clearAllMarkers( command.database ); - }, this, null, priority ); - - // Observe generic refresh event and force command refresh. - // Once refreshed, save command state in event data - // so generic command plugin can update its own state and UI. - relatedGlobal.on( 'refresh', function( evt ) { - if ( !evt.data.states ) - evt.data.states = {}; - - evt.data.states[ command.name + '@' + priority ] = - command.refreshJob( editor, priority, evt.data.path ); - }, this, null, priority ); - } - - // Since specific indent commands have no UI elements, - // they need to be manually registered as a editor feature. - editor.addFeature( command ); - } )( this, commands[ name ] ); - } - } ); - } - }; - - CKEDITOR.plugins.indent.genericDefinition.prototype = { - context: 'p', - - exec: function() {} - }; - - CKEDITOR.plugins.indent.specificDefinition.prototype = { - /** - * Executes the content-specific procedure if the context is correct. - * It calls the `exec` function of a job of the given `priority` - * that modifies the DOM. - * - * @param {CKEDITOR.editor} editor The editor instance this command - * will be applied to. - * @param {Number} priority The priority of the job to be executed. - * @returns {Boolean} Indicates whether the job was successful. - */ - execJob: function( editor, priority ) { - var job = this.jobs[ priority ]; - - if ( job.state != TRISTATE_DISABLED ) - return job.exec.call( this, editor ); - }, - - /** - * Calls the `refresh` function of a job of the given `priority`. - * The function returns the state of the job which can be either - * {@link CKEDITOR#TRISTATE_DISABLED} or {@link CKEDITOR#TRISTATE_OFF}. - * - * @param {CKEDITOR.editor} editor The editor instance this command - * will be applied to. - * @param {Number} priority The priority of the job to be executed. - * @returns {Number} The state of the job. - */ - refreshJob: function( editor, priority, path ) { - var job = this.jobs[ priority ]; - - job.state = job.refresh.call( this, editor, path ); - - return job.state; - }, - - /** - * Checks if the element path contains the element handled - * by this indentation command. - * - * @param {CKEDITOR.dom.elementPath} node A path to be checked. - * @returns {CKEDITOR.dom.element} - */ - getContext: function( path ) { - return path.contains( this.context ); - } - }; - - /** - * Attaches event listeners for this generic command. Since the indentation - * system is event-oriented, generic commands communicate with - * content-specific commands using the `exec` and `refresh` events. - * - * Listener priorities are crucial. Different indentation phases - * are executed with different priorities. - * - * For the `exec` event: - * - * * 0: Selection and bookmarks are saved by the generic command. - * * 1-99: Content-specific commands try to indent the code by executing - * their own jobs ({@link CKEDITOR.plugins.indent.specificDefinition#jobs}). - * * 100: Bookmarks are re-selected by the generic command. - * - * The visual interpretation looks as follows: - * - * +------------------+ - * | Exec event fired | - * +------ + ---------+ - * | - * 0 -<----------+ Selection and bookmarks saved. - * | - * | - * 25 -<---+ Exec 1st job of plugin#1 (return false, continuing...). - * | - * | - * 50 -<---+ Exec 1st job of plugin#2 (return false, continuing...). - * | - * | - * 75 -<---+ Exec 2nd job of plugin#1 (only if plugin#2 failed). - * | - * | - * 100 -<-----------+ Re-select bookmarks, clean-up. - * | - * +-------- v ----------+ - * | Exec event finished | - * +---------------------+ - * - * For the `refresh` event: - * - * * <100: Content-specific commands refresh their job states according - * to the given path. Jobs save their states in the `evt.data.states` object - * passed along with the event. This can be either {@link CKEDITOR#TRISTATE_DISABLED} - * or {@link CKEDITOR#TRISTATE_OFF}. - * * 100: Command state is determined according to what states - * have been returned by content-specific jobs (`evt.data.states`). - * UI elements are updated at this stage. - * - * **Note**: If there is at least one job with the {@link CKEDITOR#TRISTATE_OFF} state, - * then the generic command state is also {@link CKEDITOR#TRISTATE_OFF}. Otherwise, - * the command state is {@link CKEDITOR#TRISTATE_DISABLED}. - * - * @param {CKEDITOR.command} command The command to be set up. - * @private - */ - function setupGenericListeners( editor, command ) { - var selection, bookmarks; - - // Set the command state according to content-specific - // command states. - command.on( 'refresh', function( evt ) { - // If no state comes with event data, disable command. - var states = [ TRISTATE_DISABLED ]; - - for ( var s in evt.data.states ) - states.push( evt.data.states[ s ] ); - - this.setState( CKEDITOR.tools.search( states, TRISTATE_OFF ) ? - TRISTATE_OFF - : - TRISTATE_DISABLED ); - }, command, null, 100 ); - - // Initialization. Save bookmarks and mark event as not handled - // by any plugin (command) yet. - command.on( 'exec', function( evt ) { - selection = editor.getSelection(); - bookmarks = selection.createBookmarks( 1 ); - - // Mark execution as not handled yet. - if ( !evt.data ) - evt.data = {}; - - evt.data.done = false; - }, command, null, 0 ); - - // Housekeeping. Make sure selectionChange will be called. - // Also re-select previously saved bookmarks. - command.on( 'exec', function( evt ) { - editor.forceNextSelectionCheck(); - selection.selectBookmarks( bookmarks ); - }, command, null, 100 ); - } -})();
\ No newline at end of file |
