[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-includes/js/tinymce/plugins/wpfullscreen/ -> editor_plugin.dev.js (source)

   1  /**
   2   * WP Fullscreen TinyMCE plugin
   3   *
   4   * Contains code from Moxiecode Systems AB released under LGPL License http://tinymce.moxiecode.com/license
   5   */
   6  
   7  (function() {
   8      tinymce.create('tinymce.plugins.wpFullscreenPlugin', {
   9  
  10          init : function(ed, url) {
  11              var t = this, oldHeight = 0, s = {}, DOM = tinymce.DOM, resized = false;
  12  
  13              // Register commands
  14              ed.addCommand('wpFullScreenClose', function() {
  15                  // this removes the editor, content has to be saved first with tinyMCE.execCommand('wpFullScreenSave');
  16                  if ( ed.getParam('wp_fullscreen_is_enabled') ) {
  17                      DOM.win.setTimeout(function() {
  18                          tinyMCE.remove(ed);
  19                          DOM.remove('wp_mce_fullscreen_parent');
  20                          tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
  21                      }, 10);
  22                  }
  23              });
  24  
  25              ed.addCommand('wpFullScreenSave', function() {
  26                  var ed = tinyMCE.get('wp_mce_fullscreen'), edd;
  27  
  28                  ed.focus();
  29                  edd = tinyMCE.get( ed.getParam('wp_fullscreen_editor_id') );
  30  
  31                  edd.setContent( ed.getContent({format : 'raw'}), {format : 'raw'} );
  32              });
  33  
  34              ed.addCommand('wpFullScreenInit', function() {
  35                  var d, b, fsed;
  36  
  37                  ed = tinymce.get('content');
  38                  d = ed.getDoc();
  39                  b = d.body;
  40  
  41                  tinyMCE.oldSettings = tinyMCE.settings; // Store old settings
  42  
  43                  tinymce.each(ed.settings, function(v, n) {
  44                      s[n] = v;
  45                  });
  46  
  47                  s.id = 'wp_mce_fullscreen';
  48                  s.wp_fullscreen_is_enabled = true;
  49                  s.wp_fullscreen_editor_id = ed.id;
  50                  s.theme_advanced_resizing = false;
  51                  s.theme_advanced_statusbar_location = 'none';
  52                  s.content_css = s.content_css ? s.content_css + ',' + s.wp_fullscreen_content_css : s.wp_fullscreen_content_css;
  53                  s.height = tinymce.isIE ? b.scrollHeight : b.offsetHeight;
  54  
  55                  tinymce.each(ed.getParam('wp_fullscreen_settings'), function(v, k) {
  56                      s[k] = v;
  57                  });
  58  
  59                  fsed = new tinymce.Editor('wp_mce_fullscreen', s);
  60                  fsed.onInit.add(function(edd) {
  61                      var DOM = tinymce.DOM, buttons = DOM.select('a.mceButton', DOM.get('wp-fullscreen-buttons'));
  62  
  63                      if ( !ed.isHidden() )
  64                          edd.setContent( ed.getContent() );
  65                      else
  66                          edd.setContent( switchEditors.wpautop( edd.getElement().value ) );
  67  
  68                      setTimeout(function(){ // add last
  69                          edd.onNodeChange.add(function(ed, cm, e){
  70                              tinymce.each(buttons, function(c) {
  71                                  var btn, cls;
  72  
  73                                  if ( btn = DOM.get( 'wp_mce_fullscreen_' + c.id.substr(6) ) ) {
  74                                      cls = btn.className;
  75  
  76                                      if ( cls )
  77                                          c.className = cls;
  78                                  }
  79                              });
  80                          });
  81                      }, 1000);
  82  
  83                      edd.dom.addClass(edd.getBody(), 'wp-fullscreen-editor');
  84                      edd.focus();
  85                  });
  86  
  87                  fsed.render();
  88  
  89                  if ( 'undefined' != fullscreen ) {
  90                      fsed.dom.bind( fsed.dom.doc, 'mousemove', function(e){
  91                          fullscreen.bounder( 'showToolbar', 'hideToolbar', 2000, e );
  92                      });
  93                  }
  94              });
  95  
  96              // Register buttons
  97              if ( 'undefined' != fullscreen ) {
  98                  ed.addButton('wp_fullscreen', {
  99                      title : 'fullscreen.desc',
 100                      onclick : function(){ fullscreen.on(); }
 101                  });
 102              }
 103  
 104              // END fullscreen
 105  //----------------------------------------------------------------
 106              // START autoresize
 107  
 108              if ( ed.getParam('fullscreen_is_enabled') || !ed.getParam('wp_fullscreen_is_enabled') )
 109                  return;
 110  
 111              /**
 112               * This method gets executed each time the editor needs to resize.
 113               */
 114  			function resize() {
 115                  if ( resized )
 116                      return;
 117  
 118                  var d = ed.getDoc(), DOM = tinymce.DOM, resizeHeight, myHeight;
 119  
 120                  // Get height differently depending on the browser used
 121                  if ( tinymce.isIE )
 122                      myHeight = d.body.scrollHeight;
 123                  else
 124                      myHeight = d.documentElement.offsetHeight;
 125  
 126                  // Don't make it smaller than 300px
 127                  resizeHeight = (myHeight > 300) ? myHeight : 300;
 128  
 129                  // Resize content element
 130                  if ( oldHeight != resizeHeight ) {
 131                      oldHeight = resizeHeight;
 132                      resized = true;
 133                      setTimeout(function(){ resized = false; }, 100);
 134  
 135                      DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px');
 136                  }
 137              };
 138  
 139              // Add appropriate listeners for resizing content area
 140              ed.onInit.add(function(ed, l) {
 141                  ed.onChange.add(resize);
 142                  ed.onSetContent.add(resize);
 143                  ed.onPaste.add(resize);
 144                  ed.onKeyUp.add(resize);
 145                  ed.onPostRender.add(resize);
 146  
 147                  ed.getBody().style.overflowY = "hidden";
 148              });
 149  
 150              if (ed.getParam('autoresize_on_init', true)) {
 151                  ed.onLoadContent.add(function(ed, l) {
 152                      // Because the content area resizes when its content CSS loads,
 153                      // and we can't easily add a listener to its onload event,
 154                      // we'll just trigger a resize after a short loading period
 155                      setTimeout(function() {
 156                          resize();
 157                      }, 1200);
 158                  });
 159              }
 160  
 161              // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
 162              ed.addCommand('wpAutoResize', resize);
 163          },
 164  
 165          getInfo : function() {
 166              return {
 167                  longname : 'WP Fullscreen',
 168                  author : 'WordPress',
 169                  authorurl : 'http://wordpress.org',
 170                  infourl : '',
 171                  version : '1.0'
 172              };
 173          }
 174      });
 175  
 176      // Register plugin
 177      tinymce.PluginManager.add('wpfullscreen', tinymce.plugins.wpFullscreenPlugin);
 178  })();


Generated: Sat Feb 18 03:55:58 2012 Hosted by follow the white rabbit.