home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress2 / wp-includes / js / tinymce / plugins / wpdialogs / plugin.js next >
Encoding:
JavaScript  |  2014-04-08  |  2.4 KB  |  93 lines

  1. /* global tinymce */
  2. /**
  3.  * Included for back-compat.
  4.  * The default WindowManager in TinyMCE 4.0 supports three types of dialogs:
  5.  *    - With HTML created from JS.
  6.  *    - With inline HTML (like WPWindowManager).
  7.  *    - Old type iframe based dialogs.
  8.  * For examples see the default plugins: https://github.com/tinymce/tinymce/tree/master/js/tinymce/plugins
  9.  */
  10. tinymce.WPWindowManager = tinymce.InlineWindowManager = function( editor ) {
  11.     if ( this.wp ) {
  12.         return this;
  13.     }
  14.  
  15.     this.wp = {};
  16.     this.parent = editor.windowManager;
  17.     this.editor = editor;
  18.  
  19.     tinymce.extend( this, this.parent );
  20.  
  21.     this.open = function( args, params ) {
  22.         var $element,
  23.             self = this,
  24.             wp = this.wp;
  25.  
  26.         if ( ! args.wpDialog ) {
  27.             return this.parent.open.apply( this, arguments );
  28.         } else if ( ! args.id ) {
  29.             return;
  30.         }
  31.  
  32.         if ( typeof jQuery === 'undefined' || ! jQuery.wp || ! jQuery.wp.wpdialog ) {
  33.             // wpdialog.js is not loaded
  34.             if ( window.console && window.console.error ) {
  35.                 window.console.error('wpdialog.js is not loaded. Please set "wpdialogs" as dependency for your script when calling wp_enqueue_script(). You may also want to enqueue the "wp-jquery-ui-dialog" stylesheet.');
  36.             }
  37.  
  38.             return;
  39.         }
  40.  
  41.         wp.$element = $element = jQuery( '#' + args.id );
  42.  
  43.         if ( ! $element.length ) {
  44.             return;
  45.         }
  46.  
  47.         if ( window.console && window.console.log ) {
  48.             window.console.log('tinymce.WPWindowManager is deprecated. Use the default editor.windowManager to open dialogs with inline HTML.');
  49.         }
  50.  
  51.         wp.features = args;
  52.         wp.params = params;
  53.  
  54.         // Store selection. Takes a snapshot in the FocusManager of the selection before focus is moved to the dialog.
  55.         editor.nodeChanged();
  56.  
  57.         // Create the dialog if necessary
  58.         if ( ! $element.data('wpdialog') ) {
  59.             $element.wpdialog({
  60.                 title: args.title,
  61.                 width: args.width,
  62.                 height: args.height,
  63.                 modal: true,
  64.                 dialogClass: 'wp-dialog',
  65.                 zIndex: 300000
  66.             });
  67.         }
  68.  
  69.         $element.wpdialog('open');
  70.  
  71.         $element.on( 'wpdialogclose', function() {
  72.             if ( self.wp.$element ) {
  73.                 self.wp = {};
  74.             }
  75.         });
  76.     };
  77.  
  78.     this.close = function() {
  79.         if ( ! this.wp.features || ! this.wp.features.wpDialog ) {
  80.             return this.parent.close.apply( this, arguments );
  81.         }
  82.  
  83.         this.wp.$element.wpdialog('close');
  84.     };
  85. };
  86.  
  87. tinymce.PluginManager.add( 'wpdialogs', function( editor ) {
  88.     // Replace window manager
  89.     editor.on( 'init', function() {
  90.         editor.windowManager = new tinymce.WPWindowManager( editor );
  91.     });
  92. });
  93.