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

109 lines
2.8 KiB
JavaScript
Executable File
Raw Blame History

/*
* @file Zoom plugin for CKEditor
* Copyright (C) 2008-2013 Alfonso Mart<72>nez de Lizarrondo
* Upgrade to CKEditor 4 sponsored by Solution architects gmbh
*
* == BEGIN LICENSE ==
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
* - GNU General Public License Version 2 or later (the "GPL")
* http://www.gnu.org/licenses/gpl.html
*
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
* http://www.gnu.org/licenses/lgpl.html
*
* - Mozilla Public License Version 1.1 or later (the "MPL")
* http://www.mozilla.org/MPL/MPL-1.1.html
*
* == END LICENSE ==
*
*/
CKEDITOR.plugins.add( 'zoom',
{
requires : [ 'richcombo' ],
init : function( editor )
{
var config = editor.config,
lang = editor.lang.stylesCombo;
// Inject basic sizing for the pane as the richCombo doesn't allow to specify it
var node = CKEDITOR.document.getHead().append( 'style' );
node.setAttribute( 'type', 'text/css' );
var content = '.cke_combopanel__zoom { height: 200px; width: 100px; }' +
'.cke_combo__zoom .cke_combo_text { width: 40px;}';
if ( CKEDITOR.env.ie )
node.$.styleSheet.cssText = content;
else
node.$.innerHTML = content;
editor.ui.addRichCombo( 'Zoom',
{
label : 'Zoom',
title : 'Zoom',
multiSelect : false,
className : 'zoom',
modes:{wysiwyg:1,source:1 },
panel :
{
css : [ CKEDITOR.skin.getPath( 'editor' ) ].concat( config.contentsCss )
},
init : function()
{
var zoomOptions = [50, 75, 100, 125, 150, 200, 400],
zoom;
this.startGroup( 'Zoom level' );
// Loop over the Array, adding all items to the combo.
for ( var i = 0 ; i < zoomOptions.length ; i++ )
{
zoom = zoomOptions[ i ];
// value, html, text
this.add( zoom, zoom + " %", zoom + " %" );
}
// Default value on first click
this.setValue(100, "100 %");
},
onClick : function( value )
{
var body = editor.editable().$;
body.style.MozTransformOrigin = "top left";
body.style.MozTransform = "scale(" + (value/100) + ")";
body.style.WebkitTransformOrigin = "top left";
body.style.WebkitTransform = "scale(" + (value/100) + ")";
body.style.OTransformOrigin = "top left";
body.style.OTransform = "scale(" + (value/100) + ")";
body.style.TransformOrigin = "top left";
body.style.Transform = "scale(" + (value/100) + ")";
// IE
body.style.zoom = value/100;
this.setValue( value, value + " %");
this.lastValue = value;
},
onRender: function() {
editor.on( 'mode', function( ev ) {
// Restore zoom level after switching from Source mode
if (this.lastValue)
this.onClick( this.lastValue );
}, this );
}
});
// End of richCombo element
} //Init
} );