/*\r
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
if ( !customConfig )\r
return false;\r
\r
+ customConfig = CKEDITOR.getUrl( customConfig );\r
+\r
var loadedConfig = loadConfigLoaded[ customConfig ] || ( loadConfigLoaded[ customConfig ] = {} );\r
\r
// If the custom config has already been downloaded, reuse it.\r
\r
// If there is no other customConfig in the chain, fire the\r
// "configLoaded" event.\r
- if ( editor.config.customConfig == customConfig || !loadConfig( editor ) )\r
+ if ( CKEDITOR.getUrl( editor.config.customConfig ) == customConfig || !loadConfig( editor ) )\r
editor.fireOnce( 'customConfigLoaded' );\r
}\r
else\r
var skin = editor.config.skin.split( ',' ),\r
skinName = skin[ 0 ],\r
skinPath = CKEDITOR.getUrl( skin[ 1 ] || (\r
+ '_source/' + // @Packager.RemoveLine\r
'skins/' + skinName + '/' ) );\r
\r
editor.skinName = skinName;\r
editor.skinPath = skinPath;\r
editor.skinClass = 'cke_skin_' + skinName;\r
\r
+ editor.tabIndex = editor.config.tabIndex || editor.element.getAttribute( 'tabindex' ) || 0;\r
+\r
// Fire the "configLoaded" event.\r
editor.fireOnce( 'configLoaded' );\r
\r
// Load language file.\r
- loadLang( editor );\r
+ loadSkin( editor );\r
};\r
\r
var loadLang = function( editor )\r
\r
// Load the editor skin.\r
editor.fire( 'pluginsLoaded' );\r
- loadSkin( editor );\r
+ loadTheme( editor );\r
});\r
});\r
};\r
{\r
CKEDITOR.skins.load( editor, 'editor', function()\r
{\r
- loadTheme( editor );\r
+ loadLang( editor );\r
});\r
};\r
\r
return this._.commands[ commandName ] = new CKEDITOR.command( this, commandDefinition );\r
},\r
\r
+ /**\r
+ * Add a trunk of css text to the editor which will be applied to the wysiwyg editing document.\r
+ * Note: This function should be called before editor is loaded to take effect.\r
+ * @param css {String} CSS text.\r
+ * @example\r
+ * editorInstance.addCss( 'body { background-color: grey; }' );\r
+ */\r
addCss : function( css )\r
{\r
this._.styles.push( css );\r
this.theme.destroy( this );\r
this.fire( 'destroy' );\r
CKEDITOR.remove( this );\r
+ CKEDITOR.fire( 'instanceDestroyed', null, this );\r
},\r
\r
/**\r
},\r
\r
/**\r
- * Sets the editor data. The data must be provided in raw format.\r
- * @param {String} data HTML code to replace the curent content in the editor.\r
+ * Sets the editor data. The data must be provided in raw format (HTML).<br />\r
+ * <br />\r
+ * Note that this menthod is asynchronous. The "callback" parameter must\r
+ * be used if interaction with the editor is needed after setting the data.\r
+ * @param {String} data HTML code to replace the curent content in the\r
+ * editor.\r
+ * @param {Function} callback Function to be called after the setData\r
+ * is completed.\r
+ * @example\r
+ * CKEDITOR.instances.editor1.<b>setData</b>( '<p>This is the editor data.</p>' );\r
* @example\r
- * CKEDITOR.instances.editor1.<b>setData( '<p>This is the editor data.</p>' )</b>;\r
+ * CKEDITOR.instances.editor1.<b>setData</b>( '<p>Some other editor data.</p>', function()\r
+ * {\r
+ * this.checkDirty(); // true\r
+ * });\r
*/\r
- setData : function( data )\r
+ setData : function( data , callback )\r
{\r
+ if( callback )\r
+ {\r
+ this.on( 'dataReady', function( evt )\r
+ {\r
+ evt.removeListener();\r
+ callback.call( evt.editor );\r
+ } );\r
+ }\r
+\r
// Fire "setData" so data manipulation may happen.\r
var eventData = { dataValue : data };\r
this.fire( 'setData', eventData );\r
var element = this.element;\r
if ( element && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )\r
{\r
+ var data = this.getData();\r
+\r
+ if ( this.config.htmlEncodeOutput )\r
+ data = CKEDITOR.tools.htmlEncode( data );\r
+\r
if ( element.is( 'textarea' ) )\r
- element.setValue( this.getData() );\r
+ element.setValue( data );\r
else\r
- element.setHtml( this.getData() );\r
+ element.setHtml( data );\r
}\r
}\r
});\r
pending[ i ]._init();\r
}\r
});\r
+\r
+/**\r
+ * Whether escape HTML when editor update original input element.\r
+ * @name CKEDITOR.config.htmlEncodeOutput\r
+ * @since 3.1\r
+ * @type Boolean\r
+ * @default false\r
+ * @example\r
+ * config.htmlEncodeOutput = true;\r
+ */\r
+\r
+/**\r
+ * Fired when a CKEDITOR instance is created, but still before initializing it.\r
+ * To interact with a fully initialized instance, use the\r
+ * {@link CKEDITOR#instanceReady} event instead.\r
+ * @name CKEDITOR#instanceCreated\r
+ * @event\r
+ * @param {CKEDITOR.editor} editor The editor instance that has been created.\r
+ */\r
+\r
+/**\r
+ * Fired when a CKEDITOR instance is destroyed.\r
+ * @name CKEDITOR#instanceDestroyed\r
+ * @event\r
+ * @param {CKEDITOR.editor} editor The editor instance that has been destroyed.\r
+ */\r
+\r
+/**\r
+ * Fired when all plugins are loaded and initialized into the editor instance.\r
+ * @name CKEDITOR#pluginsLoaded\r
+ * @event\r
+ */\r