[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/libraries/ckeditor/_source/plugins/iframedialog/ -> plugin.js (source)

   1  /*

   2  Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.

   3  For licensing, see LICENSE.html or http://ckeditor.com/license

   4  */
   5  
   6  /**

   7   * @fileOverview Plugin for making iframe based dialogs.

   8   */
   9  
  10  CKEDITOR.plugins.add( 'iframedialog',
  11  {
  12      requires : [ 'dialog' ],
  13      onLoad : function()
  14      {
  15          CKEDITOR.dialog.addIframe = function( name, title, src, width, height, onContentLoad )
  16          {
  17              var element =
  18              {
  19                  type : 'iframe',
  20                  src : src,
  21                  width : '100%',
  22                  height : '100%'
  23              };
  24  
  25              if ( typeof( onContentLoad ) == 'function' )
  26                  element.onContentLoad = onContentLoad;
  27  
  28              var definition =
  29              {
  30                  title : title,
  31                  minWidth : width,
  32                  minHeight : height,
  33                  contents :
  34                  [
  35                      {
  36                          id : 'iframe',
  37                          label : title,
  38                          expand : true,
  39                          elements : [ element ]
  40                      }
  41                  ]
  42              };
  43  
  44              return this.add( name, function(){ return definition; } );
  45          };
  46  
  47          (function()
  48          {
  49              /**

  50               * An iframe element.

  51               * @extends CKEDITOR.ui.dialog.uiElement

  52               * @example

  53               * @constructor

  54               * @param {CKEDITOR.dialog} dialog

  55               * Parent dialog object.

  56               * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition

  57               * The element definition. Accepted fields:

  58               * <ul>

  59               *     <li><strong>src</strong> (Required) The src field of the iframe. </li>

  60               *     <li><strong>width</strong> (Required) The iframe's width.</li>

  61               *     <li><strong>height</strong> (Required) The iframe's height.</li>

  62               *     <li><strong>onContentLoad</strong> (Optional) A function to be executed

  63               *     after the iframe's contents has finished loading.</li>

  64               * </ul>

  65               * @param {Array} htmlList

  66               * List of HTML code to output to.

  67               */
  68              var iframeElement = function( dialog, elementDefinition, htmlList )
  69              {
  70                  if ( arguments.length < 3 )
  71                      return;
  72  
  73                  var _ = ( this._ || ( this._ = {} ) ),
  74                      contentLoad = elementDefinition.onContentLoad && CKEDITOR.tools.bind( elementDefinition.onContentLoad, this ),
  75                      cssWidth = CKEDITOR.tools.cssLength( elementDefinition.width ),
  76                      cssHeight = CKEDITOR.tools.cssLength( elementDefinition.height );
  77                  _.frameId = CKEDITOR.tools.getNextNumber() + '_iframe';
  78  
  79                  // IE BUG: Parent container does not resize to contain the iframe automatically.

  80                  dialog.on( 'load', function()
  81                      {
  82                          var iframe = CKEDITOR.document.getById( _.frameId ),
  83                              parentContainer = iframe.getParent();
  84  
  85                          parentContainer.setStyles(
  86                              {
  87                                  width : cssWidth,
  88                                  height : cssHeight
  89                              } );
  90                      } );
  91  
  92                  var attributes =
  93                  {
  94                      src : '%2',
  95                      id : _.frameId,
  96                      frameborder : 0,
  97                      allowtransparency : true
  98                  };
  99                  var myHtml = [];
 100  
 101                  if ( typeof( elementDefinition.onContentLoad ) == 'function' )
 102                      attributes.onload = 'CKEDITOR.tools.callFunction(%1);';
 103  
 104                  CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, myHtml, 'iframe',
 105                          {
 106                              width : cssWidth,
 107                              height : cssHeight
 108                          }, attributes, '' );
 109  
 110                  // Put a placeholder for the first time.

 111                  htmlList.push( '<div style="width:' + cssWidth + ';height:' + cssHeight + ';" id="' + this.domId + '"></div>' );
 112  
 113                  // Iframe elements should be refreshed whenever it is shown.

 114                  myHtml = myHtml.join( '' );
 115                  dialog.on( 'show', function()
 116                      {
 117                          var iframe = CKEDITOR.document.getById( _.frameId ),
 118                              parentContainer = iframe.getParent(),
 119                              callIndex = CKEDITOR.tools.addFunction( contentLoad ),
 120                              html = myHtml.replace( '%1', callIndex ).replace( '%2', CKEDITOR.tools.htmlEncode( elementDefinition.src ) );
 121                          parentContainer.setHtml( html );
 122                      } );
 123              };
 124  
 125              iframeElement.prototype = new CKEDITOR.ui.dialog.uiElement;
 126  
 127              CKEDITOR.dialog.addUIElement( 'iframe',
 128                  {
 129                      build : function( dialog, elementDefinition, output )
 130                      {
 131                          return new iframeElement( dialog, elementDefinition, output );
 132                      }
 133                  } );
 134          })();
 135      }
 136  } );


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7