X-Git-Url: https://scm.cri.ensmp.fr/git/ckeditor.git/blobdiff_plain/256592bf803e851aa7fc953e08a6e9e58d970f8c..871bad8291b6dbc29d489d95d185458caab25158:/skins/ckeditor/_source/plugins/autogrow/plugin.js diff --git a/skins/ckeditor/_source/plugins/autogrow/plugin.js b/skins/ckeditor/_source/plugins/autogrow/plugin.js new file mode 100644 index 0000000..d6c4697 --- /dev/null +++ b/skins/ckeditor/_source/plugins/autogrow/plugin.js @@ -0,0 +1,88 @@ +/* +Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +/** + * @file AutoGrow plugin + */ +(function(){ + var resizeEditor = function( editor ) + { + if ( !editor.window ) + return; + var doc = editor.document, + currentHeight = editor.window.getViewPaneSize().height, + newHeight; + + // We can not use documentElement to calculate the height for IE (#6061). + // It is not good for IE Quirks, yet using offsetHeight would also not work as expected (#6408). + // We do the same for FF because of the html height workaround (#6341). + if ( CKEDITOR.env.ie || CKEDITOR.env.gecko ) + newHeight = doc.getBody().$.scrollHeight + ( CKEDITOR.env.ie && CKEDITOR.env.quirks ? 0 : 24 ); + else + newHeight = doc.getDocumentElement().$.offsetHeight; + + var min = editor.config.autoGrow_minHeight, + max = editor.config.autoGrow_maxHeight; + ( min == undefined ) && ( editor.config.autoGrow_minHeight = min = 200 ); + if ( min ) + newHeight = Math.max( newHeight, min ); + if ( max ) + newHeight = Math.min( newHeight, max ); + + if ( newHeight != currentHeight ) + { + newHeight = editor.fire( 'autoGrow', { currentHeight : currentHeight, newHeight : newHeight } ).newHeight; + editor.resize( editor.container.getStyle( 'width' ), newHeight, true ); + } + }; + CKEDITOR.plugins.add( 'autogrow', + { + init : function( editor ) + { + for ( var eventName in { contentDom:1, key:1, selectionChange:1, insertElement:1 } ) + { + editor.on( eventName, function( evt ) + { + var maximize = editor.getCommand( 'maximize' ); + // Some time is required for insertHtml, and it gives other events better performance as well. + if ( evt.editor.mode == 'wysiwyg' && + // Disable autogrow when the editor is maximized .(#6339) + ( !maximize || maximize.state != CKEDITOR.TRISTATE_ON ) ) + { + setTimeout( function(){ resizeEditor( evt.editor ); }, 100 ); + } + }); + } + } + }); +})(); +/** + * The minimum height to which the editor can reach using AutoGrow. + * @name CKEDITOR.config.autoGrow_minHeight + * @type Number + * @default 200 + * @since 3.4 + * @example + * config.autoGrow_minHeight = 300; + */ + +/** + * The maximum height to which the editor can reach using AutoGrow. Zero means unlimited. + * @name CKEDITOR.config.autoGrow_maxHeight + * @type Number + * @default 0 + * @since 3.4 + * @example + * config.autoGrow_maxHeight = 400; + */ + +/** + * Fired when the AutoGrow plugin is about to change the size of the editor. + * @name CKEDITOR.editor#autogrow + * @event + * @param {Number} data.currentHeight The current height of the editor (before the resizing). + * @param {Number} data.newHeight The new height of the editor (after the resizing). It can be changed + * to determine another height to be used instead. + */