X-Git-Url: https://scm.cri.ensmp.fr/git/ckeditor.git/blobdiff_plain/256592bf803e851aa7fc953e08a6e9e58d970f8c..871bad8291b6dbc29d489d95d185458caab25158:/skins/ckeditor/_source/plugins/iframedialog/plugin.js diff --git a/skins/ckeditor/_source/plugins/iframedialog/plugin.js b/skins/ckeditor/_source/plugins/iframedialog/plugin.js new file mode 100644 index 0000000..870ec1c --- /dev/null +++ b/skins/ckeditor/_source/plugins/iframedialog/plugin.js @@ -0,0 +1,188 @@ +/* +Copyright (c) 2003-2011, 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: + *