[ Index ]

WordPress Cross Reference

title

Body

[close]

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

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


Generated: Tue Mar 25 01:41:18 2014 WordPress honlapkészítés: online1.hu