mirror of
https://github.com/UnickSoft/graphonline.git
synced 2026-06-16 05:41:00 +00:00
109 lines
2.8 KiB
JavaScript
Executable File
109 lines
2.8 KiB
JavaScript
Executable File
/*
|
|
* @file Zoom plugin for CKEditor
|
|
* Copyright (C) 2008-2013 Alfonso Mart�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
|
|
} );
|