X-Git-Url: https://scm.cri.ensmp.fr/git/ckeditor.git/blobdiff_plain/256592bf803e851aa7fc953e08a6e9e58d970f8c..871bad8291b6dbc29d489d95d185458caab25158:/skins/ckeditor/_source/core/ckeditor_basic.js diff --git a/skins/ckeditor/_source/core/ckeditor_basic.js b/skins/ckeditor/_source/core/ckeditor_basic.js new file mode 100644 index 0000000..be06db8 --- /dev/null +++ b/skins/ckeditor/_source/core/ckeditor_basic.js @@ -0,0 +1,238 @@ +/* +Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +/** + * @fileOverview Contains the second part of the {@link CKEDITOR} object + * definition, which defines the basic editor features to be available in + * the root ckeditor_basic.js file. + */ + +if ( CKEDITOR.status == 'unloaded' ) +{ + (function() + { + CKEDITOR.event.implementOn( CKEDITOR ); + + /** + * Forces the full CKEditor core code, in the case only the basic code has been + * loaded (ckeditor_basic.js). This method self-destroys (becomes undefined) in + * the first call or as soon as the full code is available. + * @example + * // Check if the full core code has been loaded and load it. + * if ( CKEDITOR.loadFullCore ) + * CKEDITOR.loadFullCore(); + */ + CKEDITOR.loadFullCore = function() + { + // If not the basic code is not ready it, just mark it to be loaded. + if ( CKEDITOR.status != 'basic_ready' ) + { + CKEDITOR.loadFullCore._load = 1; + return; + } + + // Destroy this function. + delete CKEDITOR.loadFullCore; + + // Append the script to the head. + var script = document.createElement( 'script' ); + script.type = 'text/javascript'; + script.src = CKEDITOR.basePath + 'ckeditor.js'; + + document.getElementsByTagName( 'head' )[0].appendChild( script ); + }; + + /** + * The time to wait (in seconds) to load the full editor code after the + * page load, if the "ckeditor_basic" file is used. If set to zero, the + * editor is loaded on demand, as soon as an instance is created. + * + * This value must be set on the page before the page load completion. + * @type Number + * @default 0 (zero) + * @example + * // Loads the full source after five seconds. + * CKEDITOR.loadFullCoreTimeout = 5; + */ + CKEDITOR.loadFullCoreTimeout = 0; + + /** + * The class name used to identify <textarea> elements to be replace + * by CKEditor instances. + * @type String + * @default 'ckeditor' + * @example + * CKEDITOR.replaceClass = 'rich_editor'; + */ + CKEDITOR.replaceClass = 'ckeditor'; + + /** + * Enables the replacement of all textareas with class name matching + * {@link CKEDITOR.replaceClass}. + * @type Boolean + * @default true + * @example + * // Disable the auto-replace feature. + * CKEDITOR.replaceByClassEnabled = false; + */ + CKEDITOR.replaceByClassEnabled = 1; + + var createInstance = function( elementOrIdOrName, config, creationFunction, data ) + { + if ( CKEDITOR.env.isCompatible ) + { + // Load the full core. + if ( CKEDITOR.loadFullCore ) + CKEDITOR.loadFullCore(); + + var editor = creationFunction( elementOrIdOrName, config, data ); + CKEDITOR.add( editor ); + return editor; + } + + return null; + }; + + /** + * Replaces a <textarea> or a DOM element (DIV) with a CKEditor + * instance. For textareas, the initial value in the editor will be the + * textarea value. For DOM elements, their innerHTML will be used + * instead. We recommend using TEXTAREA and DIV elements only. + * @param {Object|String} elementOrIdOrName The DOM element (textarea), its + * ID or name. + * @param {Object} [config] The specific configurations to apply to this + * editor instance. Configurations set here will override global CKEditor + * settings. + * @returns {CKEDITOR.editor} The editor instance created. + * @example + * <textarea id="myfield" name="myfield"><:/textarea> + * ... + * CKEDITOR.replace( 'myfield' ); + * @example + * var textarea = document.body.appendChild( document.createElement( 'textarea' ) ); + * CKEDITOR.replace( textarea ); + */ + CKEDITOR.replace = function( elementOrIdOrName, config ) + { + return createInstance( elementOrIdOrName, config, CKEDITOR.editor.replace ); + }; + + /** + * Creates a new editor instance inside a specific DOM element. + * @param {Object|String} elementOrId The DOM element or its ID. + * @param {Object} [config] The specific configurations to apply to this + * editor instance. Configurations set here will override global CKEditor + * settings. + * @param {String} [data] Since 3.3. Initial value for the instance. + * @returns {CKEDITOR.editor} The editor instance created. + * @example + * <div id="editorSpace"><:/div> + * ... + * CKEDITOR.appendTo( 'editorSpace' ); + */ + CKEDITOR.appendTo = function( elementOrId, config, data ) + { + return createInstance( elementOrId, config, CKEDITOR.editor.appendTo, data ); + }; + + // Documented at ckeditor.js. + CKEDITOR.add = function( editor ) + { + // For now, just put the editor in the pending list. It will be + // processed as soon as the full code gets loaded. + var pending = this._.pending || ( this._.pending = [] ); + pending.push( editor ); + }; + + /** + * Replace all <textarea> elements available in the document with + * editor instances. + * @example + * // Replace all <textarea> elements in the page. + * CKEDITOR.replaceAll(); + * @example + * // Replace all <textarea class="myClassName"> elements in the page. + * CKEDITOR.replaceAll( 'myClassName' ); + * @example + * // Selectively replace <textarea> elements, based on custom assertions. + * CKEDITOR.replaceAll( function( textarea, config ) + * { + * // Custom code to evaluate the replace, returning false + * // if it must not be done. + * // It also passes the "config" parameter, so the + * // developer can customize the instance. + * } ); + */ + CKEDITOR.replaceAll = function() + { + var textareas = document.getElementsByTagName( 'textarea' ); + + for ( var i = 0 ; i < textareas.length ; i++ ) + { + var config = null, + textarea = textareas[i]; + + // The "name" and/or "id" attribute must exist. + if ( !textarea.name && !textarea.id ) + continue; + + if ( typeof arguments[0] == 'string' ) + { + // The textarea class name could be passed as the function + // parameter. + + var classRegex = new RegExp( '(?:^|\\s)' + arguments[0] + '(?:$|\\s)' ); + + if ( !classRegex.test( textarea.className ) ) + continue; + } + else if ( typeof arguments[0] == 'function' ) + { + // An assertion function could be passed as the function parameter. + // It must explicitly return "false" to ignore a specific