2017-04-15 01:34:36 +03:00

104 lines
3.5 KiB
JavaScript
Executable File

/**
* @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
/**
* @fileOverview The "resizewithwindow" plugin is an alternative to the 'resize' plugin.
* Managing the ckeditor height through a percentage of a window does not work.
* This plugin provides an alternative.
*
* The plugin 'resize' must be disabled for this plugin to work correctly.
*
* Also you need to add the following css to your css files:
* .cke_chrome {
* padding: 0 !important;
* }
* Otherwise the height of the ckeditor content is not calculated correctly.
* That is a point of improvement.
*
* Currently only tested with the Kama skin.
*/
CKEDITOR.plugins.add( 'resizewithwindow', {
init: function( editor ) {
var baseEditorInnerGrey;
editor.on( 'instanceReady', function() {
jQuery( function() {
jQuery( window ).resize( function() {
resizeTriggered();
});
resizeTriggered();
})
});
editor.on( 'afterCommandExec', function( ev ) {
if (ev.data.name == 'toolbarCollapse' || ev.data.name == 'maximize' || ev.data.name == 'source') {
resizeTriggered();
}
});
editor.on( 'dataReady', function( ev ) {
resizeTriggered();
});
editor.on( 'triggerResize', function( ev ) {
resizeTriggered();
});
/**
* Resizes editor components that in the vertical direction that do not
* do so automatically.
*/
function resizeTriggered() {
var maximizestate = editor.getCommand( 'maximize' ).state;
var referencedheight = 50;
if ( maximizestate == CKEDITOR.TRISTATE_ON ) {
referencedheight = jQuery( window ).height();
} else {
var textarea = editor.element.$;
var editorFrame = jQuery( textarea ).parents( "div:first" );
baseEditorInnerGrey = jQuery( ".cke_inner", editorFrame );
referencedheight = editorFrame.height();
}
var content = jQuery( ".cke_contents", baseEditorInnerGrey );
var toolbar = jQuery( ".cke_top", baseEditorInnerGrey );
// Browser quirks: this correction prevents a vertical scroll bar in the window.
var extraheightCorrection = 8;
var htmlStyle = document.documentElement.style;
if ( 'MozAppearance' in htmlStyle ) {
extraheightCorrection = 11;
}
if ( 'WebkitAppearance' in htmlStyle ) {
extraheightCorrection = 12;
}
if ( 'behavior' in htmlStyle || '-ms-scroll-limit' in htmlStyle ) {
extraheightCorrection = 10;
}
baseEditorInnerGrey.height( referencedheight - extraheightCorrection );
var toolbarHeight = toolbar.outerHeight( true );
// The text area height depends on the enabling of the charcount plugin.
// Correct the height of the text area in java script because css does not work.
var heightCorrection = 13;
if ( editor.config.extraPlugins.indexOf( 'wordcount' ) > -1 ) {
var wordcount = jQuery( ".cke_bottom", baseEditorInnerGrey );
heightCorrection = wordcount.outerHeight( true );
// Extra height correction is needed on the content component.
// Otherwise the characters of the wordcount component will not
// stay within the grey (in case of the kama skin) background
// component.
heightCorrection += 7;
}
var newHeight = referencedheight - ( toolbarHeight + heightCorrection );
content.height( newHeight + "px" );
content.find('iframe:first').width( "100%" );
}
}
});