Dotclear


Ignore:
Timestamp:
08/27/14 22:22:46 (11 years ago)
Author:
Nicolas <nikrou77@…>
Branch:
default
Message:

Use non minified javascript files for ckeditor
Use release 4.3.0.
Todo: upgrade to last release available

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins/dcCKEditor/js/ckeditor/adapters/jquery.js

    r2738 r2741  
    1 /* 
    2  Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. 
    3  For licensing, see LICENSE.md or http://ckeditor.com/license 
    4 */ 
    5 (function(a){CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;"undefined"!=typeof a&&(a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},ckeditor:function(g,d){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g))var k=d,d=g,g=k;var i=[],d=d||{};this.each(function(){var b= 
    6 a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,j=new a.Deferred;i.push(j.promise());if(c&&!f)g&&g.apply(c,[this]),j.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),j.resolve()):setTimeout(arguments.callee,100)},0)},null,null,9999);else{if(d.autoUpdateElement||"undefined"==typeof d.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)d.autoUpdateElementJquery=!0;d.autoUpdateElement=!1;b.data("_ckeditorInstanceLock", 
    7 !0);c=a(this).is("textarea")?CKEDITOR.replace(h,d):CKEDITOR.inline(h,d);b.data("ckeditorInstance",c);c.on("instanceReady",function(d){var e=d.editor;setTimeout(function(){if(e.element){d.removeListener();e.on("dataReady",function(){b.trigger("dataReady.ckeditor",[e])});e.on("setData",function(a){b.trigger("setData.ckeditor",[e,a.data])});e.on("getData",function(a){b.trigger("getData.ckeditor",[e,a.data])},999);e.on("destroy",function(){b.trigger("destroy.ckeditor",[e])});e.on("save",function(){a(h.form).submit(); 
    8 return!1},null,null,20);if(e.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){e.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",c)})}e.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[e]);g&&g.apply(e,[h]);j.resolve()}else setTimeout(arguments.callee, 
    9 100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,i).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}}),CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(d){if(arguments.length){var k=this,i=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(d,function(){f.resolve()});i.push(f.promise()); 
    10 return!0}return g.call(b,d)});if(i.length){var b=new a.Deferred;a.when.apply(this,i).done(function(){b.resolveWith(k)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}})))})(window.jQuery); 
     1/** 
     2 * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. 
     3 * For licensing, see LICENSE.md or http://ckeditor.com/license 
     4 */ 
     5 
     6/** 
     7 * @fileOverview Defines the {@link CKEDITOR_Adapters.jQuery jQuery Adapter}. 
     8 */ 
     9 
     10/** 
     11 * @class CKEDITOR_Adapters.jQuery 
     12 * @singleton 
     13 * 
     14 * The jQuery Adapter allows for easy use of basic CKEditor functions and access to the internal API. 
     15 * To find more information about the jQuery Adapter, go to the [jQuery Adapter section](#!/guide/dev_jquery) 
     16 * of the Developer's Guide or see the "Create Editors with jQuery" sample. 
     17 * 
     18 * @aside guide dev_jquery 
     19 */ 
     20 
     21(function( $ ) { 
     22     /** 
     23      * Allows CKEditor to override `jQuery.fn.val()`. When set to `true`, the `val()` function 
     24      * used on textarea elements replaced with CKEditor uses the CKEditor API. 
     25      * 
     26      * This configuration option is global and is executed during the loading of the jQuery Adapter. 
     27      * It cannot be customized across editor instances. 
     28      * 
     29      *        <script> 
     30      *             CKEDITOR.config.jqueryOverrideVal = true; 
     31      *        </script> 
     32      * 
     33      *        <!-- Important: The jQuery Adapter is loaded *after* setting jqueryOverrideVal. --> 
     34      *        <script src="/ckeditor/adapters/jquery.js"></script> 
     35      * 
     36      *        <script> 
     37      *             $( 'textarea' ).ckeditor(); 
     38      *             // ... 
     39      *             $( 'textarea' ).val( 'New content' ); 
     40      *        </script> 
     41      * 
     42      * @cfg {Boolean} [jqueryOverrideVal=true] 
     43      * @member CKEDITOR.config 
     44      */ 
     45     CKEDITOR.config.jqueryOverrideVal = typeof CKEDITOR.config.jqueryOverrideVal == 'undefined'  ? 
     46                    true 
     47               : 
     48                    CKEDITOR.config.jqueryOverrideVal; 
     49 
     50     if ( typeof $ == 'undefined' ) 
     51          return; 
     52 
     53     // jQuery object methods. 
     54     $.extend( $.fn, { 
     55          /** 
     56           * Returns an existing CKEditor instance for the first matched element. 
     57           * Allows to easily use the internal API. Does not return a jQuery object. 
     58           * 
     59           * Raises an exception if the editor does not exist or is not ready yet. 
     60           * 
     61           * @returns CKEDITOR.editor 
     62           * @deprecated Use {@link #editor editor property} instead. 
     63           */ 
     64          ckeditorGet: function() { 
     65               var instance = this.eq( 0 ).data( 'ckeditorInstance' ); 
     66 
     67               if ( !instance ) 
     68                    throw 'CKEditor is not initialized yet, use ckeditor() with a callback.'; 
     69 
     70               return instance; 
     71          }, 
     72 
     73          /** 
     74           * A jQuery function which triggers the creation of CKEditor with `<textarea>` and 
     75           * {@link CKEDITOR.dtd#$editable editable} elements. 
     76           * Every `<textarea>` element will be converted to a framed editor, while any other 
     77           * supported element will be converted to an inline editor. 
     78           * This method binds the callback to the `instanceReady` event of all instances. 
     79           * If the editor has already been created, the callback is fired straightaway. 
     80           * You can also create multiple editors at once by using `$( '.className' ).ckeditor();`. 
     81           * 
     82           * **Note**: jQuery chaining and mixed parameter order is allowed. 
     83           * 
     84           * @param {Function} callback 
     85           * Function to be run on the editor instance. Callback takes the source element as a parameter. 
     86           * 
     87           *        $( 'textarea' ).ckeditor( function( textarea ) { 
     88           *             // Callback function code. 
     89           *        } ); 
     90           * 
     91           * @param {Object} config 
     92           * Configuration options for new instance(s) if not already created. 
     93           * 
     94           *        $( 'textarea' ).ckeditor( { 
     95           *             uiColor: '#9AB8F3' 
     96           *        } ); 
     97           * 
     98           * @returns jQuery.fn 
     99           */ 
     100          ckeditor: function( callback, config ) { 
     101               if ( !CKEDITOR.env.isCompatible ) 
     102                    throw new Error( 'The environment is incompatible.' ); 
     103 
     104               // Reverse the order of arguments if the first one isn't a function. 
     105               if ( !$.isFunction( callback ) ) { 
     106                    var tmp = config; 
     107                    config = callback; 
     108                    callback = tmp; 
     109               } 
     110 
     111               // An array of instanceReady callback promises. 
     112               var promises = []; 
     113 
     114               config = config || {}; 
     115 
     116               // Iterate over the collection. 
     117               this.each( function() { 
     118                    var $element = $( this ), 
     119                         editor = $element.data( 'ckeditorInstance' ), 
     120                         instanceLock = $element.data( '_ckeditorInstanceLock' ), 
     121                         element = this, 
     122                         dfd = new $.Deferred(); 
     123 
     124                         promises.push( dfd.promise() ); 
     125 
     126                    if ( editor && !instanceLock ) { 
     127                         if ( callback ) 
     128                              callback.apply( editor, [ this ] ); 
     129 
     130                         dfd.resolve(); 
     131                    } else if ( !instanceLock ) { 
     132                         // CREATE NEW INSTANCE 
     133 
     134                         // Handle config.autoUpdateElement inside this plugin if desired. 
     135                         if ( config.autoUpdateElement 
     136                              || ( typeof config.autoUpdateElement == 'undefined' && CKEDITOR.config.autoUpdateElement ) ) { 
     137                              config.autoUpdateElementJquery = true; 
     138                         } 
     139 
     140                         // Always disable config.autoUpdateElement. 
     141                         config.autoUpdateElement = false; 
     142                         $element.data( '_ckeditorInstanceLock', true ); 
     143 
     144                         // Set instance reference in element's data. 
     145                         if ( $( this ).is( 'textarea' ) ) 
     146                              editor = CKEDITOR.replace( element, config ); 
     147                         else 
     148                              editor = CKEDITOR.inline( element, config ); 
     149 
     150                         $element.data( 'ckeditorInstance', editor ); 
     151 
     152                         // Register callback. 
     153                         editor.on( 'instanceReady', function( evt ) { 
     154                              var editor = evt.editor; 
     155 
     156                              setTimeout( function() { 
     157                                   // Delay bit more if editor is still not ready. 
     158                                   if ( !editor.element ) { 
     159                                        setTimeout( arguments.callee, 100 ); 
     160                                        return; 
     161                                   } 
     162 
     163                                   // Remove this listener. Triggered when new instance is ready. 
     164                                   evt.removeListener(); 
     165 
     166                                   /** 
     167                                    * Forwards the CKEditor {@link CKEDITOR.editor#event-dataReady dataReady event} as a jQuery event. 
     168                                    * 
     169                                    * @event dataReady 
     170                                    * @param {CKEDITOR.editor} editor Editor instance. 
     171                                    */ 
     172                                   editor.on( 'dataReady', function() { 
     173                                        $element.trigger( 'dataReady.ckeditor', [ editor ] ); 
     174                                   } ); 
     175 
     176                                   /** 
     177                                    * Forwards the CKEditor {@link CKEDITOR.editor#event-setData setData event} as a jQuery event. 
     178                                    * 
     179                                    * @event setData 
     180                                    * @param {CKEDITOR.editor} editor Editor instance. 
     181                                    * @param data 
     182                                    * @param {String} data.dataValue The data that will be used. 
     183                                    */ 
     184                                   editor.on( 'setData', function( evt ) { 
     185                                        $element.trigger( 'setData.ckeditor', [ editor, evt.data ] ); 
     186                                   } ); 
     187 
     188                                   /** 
     189                                    * Forwards the CKEditor {@link CKEDITOR.editor#event-getData getData event} as a jQuery event. 
     190                                    * 
     191                                    * @event getData 
     192                                    * @param {CKEDITOR.editor} editor Editor instance. 
     193                                    * @param data 
     194                                    * @param {String} data.dataValue The data that will be returned. 
     195                                    */ 
     196                                   editor.on( 'getData', function( evt ) { 
     197                                        $element.trigger( 'getData.ckeditor', [ editor, evt.data ] ); 
     198                                   }, 999 ); 
     199 
     200                                   /** 
     201                                    * Forwards the CKEditor {@link CKEDITOR.editor#event-destroy destroy event} as a jQuery event. 
     202                                    * 
     203                                    * @event destroy 
     204                                    * @param {CKEDITOR.editor} editor Editor instance. 
     205                                    */ 
     206                                   editor.on( 'destroy', function() { 
     207                                        $element.trigger( 'destroy.ckeditor', [ editor ] ); 
     208                                   } ); 
     209 
     210                                   // Overwrite save button to call jQuery submit instead of javascript submit. 
     211                                   // Otherwise jQuery.forms does not work properly 
     212                                   editor.on( 'save', function() { 
     213                                        $( element.form ).submit(); 
     214                                        return false; 
     215                                   }, null, null, 20 ); 
     216 
     217                                   // Integrate with form submit. 
     218                                   if ( editor.config.autoUpdateElementJquery && $element.is( 'textarea' ) && $( element.form ).length ) { 
     219                                        var onSubmit = function() { 
     220                                             $element.ckeditor( function() { 
     221                                                  editor.updateElement(); 
     222                                             } ); 
     223                                        }; 
     224 
     225                                        // Bind to submit event. 
     226                                        $( element.form ).submit( onSubmit ); 
     227 
     228                                        // Bind to form-pre-serialize from jQuery Forms plugin. 
     229                                        $( element.form ).bind( 'form-pre-serialize', onSubmit ); 
     230 
     231                                        // Unbind when editor destroyed. 
     232                                        $element.bind( 'destroy.ckeditor', function() { 
     233                                             $( element.form ).unbind( 'submit', onSubmit ); 
     234                                             $( element.form ).unbind( 'form-pre-serialize', onSubmit ); 
     235                                        } ); 
     236                                   } 
     237 
     238                                   // Garbage collect on destroy. 
     239                                   editor.on( 'destroy', function() { 
     240                                        $element.removeData( 'ckeditorInstance' ); 
     241                                   } ); 
     242 
     243                                   // Remove lock. 
     244                                   $element.removeData( '_ckeditorInstanceLock' ); 
     245 
     246                                   /** 
     247                                    * Forwards the CKEditor {@link CKEDITOR.editor#event-instanceReady instanceReady event} as a jQuery event. 
     248                                    * 
     249                                    * @event instanceReady 
     250                                    * @param {CKEDITOR.editor} editor Editor instance. 
     251                                    */ 
     252                                   $element.trigger( 'instanceReady.ckeditor', [ editor ] ); 
     253 
     254                                   // Run given (first) code. 
     255                                   if ( callback ) 
     256                                        callback.apply( editor, [ element ] ); 
     257 
     258                                   dfd.resolve(); 
     259                              }, 0 ); 
     260                         }, null, null, 9999 ); 
     261                    } else { 
     262                         // Editor is already during creation process, bind our code to the event. 
     263                         editor.once( 'instanceReady', function( evt ) { 
     264                              setTimeout( function() { 
     265                                   // Delay bit more if editor is still not ready. 
     266                                   if ( !editor.element ) { 
     267                                        setTimeout( arguments.callee, 100 ); 
     268                                        return; 
     269                                   } 
     270 
     271                                   // Run given code. 
     272                                   if ( editor.element.$ == element && callback ) 
     273                                        callback.apply( editor, [ element ] ); 
     274 
     275                                   dfd.resolve(); 
     276                              }, 0 ); 
     277                         }, null, null, 9999 ); 
     278                    } 
     279               } ); 
     280 
     281               /** 
     282                * The [jQuery Promise object]((http://api.jquery.com/promise/)) that handles the asynchronous constructor. 
     283                * This promise will be resolved after **all** of the constructors. 
     284                * 
     285                * @property {Function} promise 
     286                */ 
     287               var dfd = new $.Deferred(); 
     288 
     289               this.promise = dfd.promise(); 
     290 
     291               $.when.apply( this, promises ).then( function() { 
     292                    dfd.resolve(); 
     293               } ); 
     294 
     295               /** 
     296                * Existing CKEditor instance. Allows to easily use the internal API. 
     297                * 
     298                * **Note**: This is not a jQuery object. 
     299                * 
     300                *        var editor = $( 'textarea' ).ckeditor().editor; 
     301                * 
     302                * @property {CKEDITOR.editor} editor 
     303                */ 
     304               this.editor = this.eq( 0 ).data( 'ckeditorInstance' ); 
     305 
     306               return this; 
     307          } 
     308     } ); 
     309 
     310     /** 
     311      * Overwritten jQuery `val()` method for `<textarea>` elements that have bound CKEditor instances. 
     312      * This method gets or sets editor content by using the {@link CKEDITOR.editor#method-getData editor.getData()} 
     313      * or {@link CKEDITOR.editor#method-setData editor.setData()} methods. To handle 
     314      * the {@link CKEDITOR.editor#method-setData editor.setData()} callback (as `setData` is asynchronous), 
     315      * `val( 'some data' )` will return a [jQuery Promise object](http://api.jquery.com/promise/). 
     316      * 
     317      * @method val 
     318      * @returns String|Number|Array|jQuery.fn|function(jQuery Promise) 
     319      */ 
     320     if ( CKEDITOR.config.jqueryOverrideVal ) { 
     321          $.fn.val = CKEDITOR.tools.override( $.fn.val, function( oldValMethod ) { 
     322               return function( value ) { 
     323                    // Setter, i.e. .val( "some data" ); 
     324                    if ( arguments.length ) { 
     325                         var _this = this, 
     326                              promises = [], //use promise to handle setData callback 
     327 
     328                              result = this.each( function() { 
     329                                   var $elem = $( this ), 
     330                                        editor = $elem.data( 'ckeditorInstance' ); 
     331 
     332                                   // Handle .val for CKEditor. 
     333                                   if ( $elem.is( 'textarea' ) && editor ) { 
     334                                        var dfd = new $.Deferred(); 
     335 
     336                                        editor.setData( value, function() { 
     337                                             dfd.resolve(); 
     338                                        } ); 
     339 
     340                                        promises.push( dfd.promise() ); 
     341                                        return true; 
     342                                   } 
     343                                   // Call default .val function for rest of elements 
     344                                   else 
     345                                        return oldValMethod.call( $elem, value ); 
     346                              } ); 
     347 
     348                         // If there is no promise return default result (jQuery object of chaining). 
     349                         if ( !promises.length ) 
     350                              return result; 
     351                         // Create one promise which will be resolved when all of promises will be done. 
     352                         else { 
     353                              var dfd = new $.Deferred(); 
     354 
     355                              $.when.apply( this, promises ).done( function() { 
     356                                   dfd.resolveWith( _this ); 
     357                              } ); 
     358 
     359                              return dfd.promise(); 
     360                         } 
     361                    } 
     362                    // Getter .val(); 
     363                    else { 
     364                         var $elem = $( this ).eq( 0 ), 
     365                              editor = $elem.data( 'ckeditorInstance' ); 
     366 
     367                         if ( $elem.is( 'textarea' ) && editor ) 
     368                              return editor.getData(); 
     369                         else 
     370                              return oldValMethod.call( $elem ); 
     371                    } 
     372               }; 
     373          } ); 
     374     } 
     375})( window.jQuery ); 
Note: See TracChangeset for help on using the changeset viewer.

Sites map