/* Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ /** * @fileOverview Plugin for making iframe based dialogs. */ CKEDITOR.plugins.add( 'iframedialog', { requires : [ 'dialog' ], onLoad : function() { /** * An iframe base dialog. * @param {String} name Name of the dialog * @param {String} title Title of the dialog * @param {Number} minWidth Minimum width of the dialog * @param {Number} minHeight Minimum height of the dialog * @param {Function} [onContentLoad] Function called when the iframe has been loaded. * If it isn't specified, the inner frame is notified of the dialog events ('load', * 'resize', 'ok' and 'cancel') on a function called 'onDialogEvent' * @param {Object} [userDefinition] Additional properties for the dialog definition * @example */ CKEDITOR.dialog.addIframe = function( name, title, src, minWidth, minHeight, onContentLoad, userDefinition ) { var element = { type : 'iframe', src : src, width : '100%', height : '100%' }; if ( typeof( onContentLoad ) == 'function' ) element.onContentLoad = onContentLoad; else element.onContentLoad = function() { var element = this.getElement(), childWindow = element.$.contentWindow; // If the inner frame has defined a "onDialogEvent" function, setup listeners if ( childWindow.onDialogEvent ) { var dialog = this.getDialog(), notifyEvent = function(e) { return childWindow.onDialogEvent(e); }; dialog.on( 'ok', notifyEvent ); dialog.on( 'cancel', notifyEvent ); dialog.on( 'resize', notifyEvent ); // Clear listeners dialog.on( 'hide', function(e) { dialog.removeListener( 'ok', notifyEvent ); dialog.removeListener( 'cancel', notifyEvent ); dialog.removeListener( 'resize', notifyEvent ); e.removeListener(); } ); // Notify child iframe of load: childWindow.onDialogEvent( { name : 'load', sender : this, editor : dialog._.editor } ); } }; var definition = { title : title, minWidth : minWidth, minHeight : minHeight, contents : [ { id : 'iframe', label : title, expand : true, elements : [ element ] } ] }; for ( var i in userDefinition ) definition[i] = userDefinition[i]; this.add( name, function(){ return definition; } ); }; (function() { /** * An iframe element. * @extends CKEDITOR.ui.dialog.uiElement * @example * @constructor * @param {CKEDITOR.dialog} dialog * Parent dialog object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: *