LDAPAccountManager/lam/templates/lib/extra/ckeditor/plugins/popup/plugin.js

66 lines
2.3 KiB
JavaScript
Raw Permalink Normal View History

2018-06-17 16:07:19 +00:00
/**
* @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.plugins.add( 'popup' );
CKEDITOR.tools.extend( CKEDITOR.editor.prototype, {
/**
* Opens Browser in a popup. The `width` and `height` parameters accept
* numbers (pixels) or percent (of screen size) values.
*
* @member CKEDITOR.editor
* @param {String} url The url of the external file browser.
* @param {Number/String} [width='80%'] Popup window width.
* @param {Number/String} [height='70%'] Popup window height.
* @param {String} [options='location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes']
* Popup window features.
*/
popup: function( url, width, height, options ) {
width = width || '80%';
height = height || '70%';
if ( typeof width == 'string' && width.length > 1 && width.substr( width.length - 1, 1 ) == '%' )
width = parseInt( window.screen.width * parseInt( width, 10 ) / 100, 10 );
if ( typeof height == 'string' && height.length > 1 && height.substr( height.length - 1, 1 ) == '%' )
height = parseInt( window.screen.height * parseInt( height, 10 ) / 100, 10 );
if ( width < 640 )
width = 640;
if ( height < 420 )
height = 420;
var top = parseInt( ( window.screen.height - height ) / 2, 10 ),
left = parseInt( ( window.screen.width - width ) / 2, 10 );
options = ( options || 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes' ) + ',width=' + width +
',height=' + height +
',top=' + top +
',left=' + left;
var popupWindow = window.open( '', null, options, true );
// Blocked by a popup blocker.
if ( !popupWindow )
return false;
try {
// Chrome is problematic with moveTo/resizeTo, but it's not really needed here (https://dev.ckeditor.com/ticket/8855).
var ua = navigator.userAgent.toLowerCase();
if ( ua.indexOf( ' chrome/' ) == -1 ) {
popupWindow.moveTo( left, top );
popupWindow.resizeTo( width, height );
}
popupWindow.focus();
popupWindow.location.href = url;
} catch ( e ) {
popupWindow = window.open( url, null, options, true );
}
return true;
}
} );