summaryrefslogtreecommitdiff
path: root/addons/website/static/lib/ckeditor/plugins/indent
diff options
context:
space:
mode:
authorParamjit Singh Sahota <psa@tinyerp.com>2013-12-24 11:01:25 +0530
committerParamjit Singh Sahota <psa@tinyerp.com>2013-12-24 11:01:25 +0530
commit18d8368ee11eef0a74bacdb8f293414331bfa8da (patch)
treefc21df70cbd2901396c2bcf2fee0b52d750abd43 /addons/website/static/lib/ckeditor/plugins/indent
parent5900672160c2bd5ae1d9257f20dbb5c51a193996 (diff)
parent123185757f51ee7e146d7295864556999d2a6938 (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')
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/dev/indent.html290
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent-rtl.pngbin1610 -> 0 bytes
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent.pngbin1573 -> 0 bytes
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent-rtl.pngbin1584 -> 0 bytes
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent.pngbin1598 -> 0 bytes
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/icons/indent-rtl.pngbin726 -> 0 bytes
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/icons/indent.pngbin711 -> 0 bytes
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/icons/outdent-rtl.pngbin708 -> 0 bytes
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/icons/outdent.pngbin699 -> 0 bytes
-rw-r--r--addons/website/static/lib/ckeditor/plugins/indent/lang/en.js8
-rwxr-xr-xaddons/website/static/lib/ckeditor/plugins/indent/plugin.js458
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 &amp; 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 &amp; 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
deleted file mode 100644
index e14dc30835b..00000000000
--- a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent-rtl.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index c629bb41a88..00000000000
--- a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/indent.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 35f69abfd5b..00000000000
--- a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent-rtl.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index b00179e2443..00000000000
--- a/addons/website/static/lib/ckeditor/plugins/indent/icons/hidpi/outdent.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index ff3fd222ee3..00000000000
--- a/addons/website/static/lib/ckeditor/plugins/indent/icons/indent-rtl.png
+++ /dev/null
Binary files differ
diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/indent.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/indent.png
deleted file mode 100644
index 3e151bc691f..00000000000
--- a/addons/website/static/lib/ckeditor/plugins/indent/icons/indent.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 7165424d36a..00000000000
--- a/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent-rtl.png
+++ /dev/null
Binary files differ
diff --git a/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent.png b/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent.png
deleted file mode 100644
index 54f205d6de7..00000000000
--- a/addons/website/static/lib/ckeditor/plugins/indent/icons/outdent.png
+++ /dev/null
Binary files differ
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