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
if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 && editor.lang.dir == 'rtl' )\r
editor.lang.dir = 'ltr';\r
\r
+ var config = editor.config;\r
+ config.contentsLangDirection == 'ui' && ( config.contentsLangDirection = editor.lang.dir );\r
+\r
loadPlugins( editor );\r
});\r
};\r
for ( var name in commands )\r
{\r
command = commands[ name ];\r
- command[ command.modes[ mode ] ? 'enable' : 'disable' ]();\r
+ command[ command.startDisabled ? 'disable' : command.modes[ mode ] ? 'enable' : 'disable' ]();\r
}\r
}\r
\r
if ( !noUpdate )\r
this.updateElement();\r
\r
+ if ( this.mode )\r
+ {\r
+ // -> currentMode.unload( holderElement );\r
+ this._.modes[ this.mode ].unload( this.getThemeSpace( 'contents' ) );\r
+ }\r
+\r
this.theme.destroy( this );\r
+\r
+ var toolbars,\r
+ index = 0,\r
+ j,\r
+ items,\r
+ instance;\r
+\r
+ if ( this.toolbox )\r
+ {\r
+ toolbars = this.toolbox.toolbars;\r
+ for ( ; index < toolbars.length ; index++ )\r
+ {\r
+ items = toolbars[ index ].items;\r
+ for ( j = 0 ; j < items.length ; j++ )\r
+ {\r
+ instance = items[ j ];\r
+ if ( instance.clickFn ) CKEDITOR.tools.removeFunction( instance.clickFn );\r
+ if ( instance.keyDownFn ) CKEDITOR.tools.removeFunction( instance.keyDownFn );\r
+\r
+ if ( instance.index ) CKEDITOR.ui.button._.instances[ instance.index ] = null;\r
+ }\r
+ }\r
+ }\r
+\r
+ if ( this.contextMenu )\r
+ CKEDITOR.tools.removeFunction( this.contextMenu._.functionId );\r
+\r
+ if ( this._.filebrowserFn )\r
+ CKEDITOR.tools.removeFunction( this._.filebrowserFn );\r
+\r
this.fire( 'destroy' );\r
CKEDITOR.remove( this );\r
CKEDITOR.fire( 'instanceDestroyed', null, this );\r
},\r
\r
/**\r
- * Sets the editor data. The data must be provided in raw format (HTML).\r
- * <b>Note:</b> This's an asynchronous method, the {@param callback}\r
- * function should be relied on if you want to interact with the editor\r
- * after data is fully loaded.\r
- *\r
- * @param {String} data HTML code to replace the curent content in the editor.\r
- * @param {Function} callback Function to be called after the setData is completed.\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( '<p>This is the editor data.</p>' )</b>;\r
- * CKEDITOR.instances.editor1.setData( '<p>Some other editor data.</p>', function()\r
- * {\r
- * CKEDITOR.instances.editor1.checkDirty(); // true\r
- * } );\r
+ * CKEDITOR.instances.editor1.<b>setData</b>( '<p>This is the editor data.</p>' );\r
+ * @example\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 , callback )\r
{\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
{\r
var data = this.getData();\r
\r
- if( this.config.htmlEncodeOutput )\r
+ if ( this.config.htmlEncodeOutput )\r
data = CKEDITOR.tools.htmlEncode( data );\r
\r
if ( element.is( 'textarea' ) )\r
/**\r
* Whether escape HTML when editor update original input element.\r
* @name CKEDITOR.config.htmlEncodeOutput\r
- * @type {Boolean}\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