1 /* 2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. 3 For licensing, see LICENSE.html or http://ckeditor.com/license 4 */ 5 6 CKEDITOR.plugins.add( 'resize', 7 { 8 init : function( editor ) 9 { 10 var config = editor.config; 11 12 if ( config.resize_enabled ) 13 { 14 var container = null; 15 var origin, startSize; 16 17 function dragHandler( evt ) 18 { 19 var dx = evt.data.$.screenX - origin.x; 20 var dy = evt.data.$.screenY - origin.y; 21 var internalWidth = startSize.width + dx * ( editor.lang.dir == 'rtl' ? -1 : 1 ); 22 var internalHeight = startSize.height + dy; 23 24 editor.resize( Math.max( config.resize_minWidth, Math.min( internalWidth, config.resize_maxWidth ) ), 25 Math.max( config.resize_minHeight, Math.min( internalHeight, config.resize_maxHeight ) ) ); 26 } 27 28 function dragEndHandler ( evt ) 29 { 30 CKEDITOR.document.removeListener( 'mousemove', dragHandler ); 31 CKEDITOR.document.removeListener( 'mouseup', dragEndHandler ); 32 33 if ( editor.document ) 34 { 35 editor.document.removeListener( 'mousemove', dragHandler ); 36 editor.document.removeListener( 'mouseup', dragEndHandler ); 37 } 38 } 39 40 var mouseDownFn = CKEDITOR.tools.addFunction( function( $event ) 41 { 42 if ( !container ) 43 container = editor.getResizable(); 44 45 startSize = { width : container.$.offsetWidth || 0, height : container.$.offsetHeight || 0 }; 46 origin = { x : $event.screenX, y : $event.screenY }; 47 48 CKEDITOR.document.on( 'mousemove', dragHandler ); 49 CKEDITOR.document.on( 'mouseup', dragEndHandler ); 50 51 if ( editor.document ) 52 { 53 editor.document.on( 'mousemove', dragHandler ); 54 editor.document.on( 'mouseup', dragEndHandler ); 55 } 56 } ); 57 58 editor.on( 'themeSpace', function( event ) 59 { 60 if ( event.data.space == 'bottom' ) 61 { 62 event.data.html += '<div class="cke_resizer"' + 63 ' title="' + CKEDITOR.tools.htmlEncode( editor.lang.resize ) + '"' + 64 ' onmousedown="CKEDITOR.tools.callFunction(' + mouseDownFn + ', event)"' + 65 '></div>'; 66 } 67 }, editor, null, 100 ); 68 } 69 } 70 } ); 71 72 CKEDITOR.config.resize_minWidth = 750; 73 CKEDITOR.config.resize_minHeight = 250; 74 CKEDITOR.config.resize_maxWidth = 3000; 75 CKEDITOR.config.resize_maxHeight = 3000; 76 CKEDITOR.config.resize_enabled = true; 77