/** * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/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 (http://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; } } );