X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/41578db67d72562346e4dbb2a14889b23d522813..f5fcdc7994bb67cce809bc4777944ae8b7fad4a4:/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js diff --git a/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js b/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js index ed60d3cd..b06bcb9f 100644 --- a/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js +++ b/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js @@ -1,102 +1,73 @@ /* global tinymce */ /** - * WP Fullscreen (Distraction Free Writing) TinyMCE plugin + * WP Fullscreen (Distraction-Free Writing) TinyMCE plugin */ tinymce.PluginManager.add( 'wpfullscreen', function( editor ) { - var settings = editor.settings, - oldSize = 0; - - function resize( e ) { - var deltaSize, myHeight, - d = editor.getDoc(), - body = d.body, - DOM = tinymce.DOM, - resizeHeight = 250; - - if ( ( e && e.type === 'setcontent' && e.initial ) || editor.settings.inline ) { - return; - } - - // Get height differently depending on the browser used - myHeight = tinymce.Env.ie ? body.scrollHeight : ( tinymce.Env.webkit && body.clientHeight === 0 ? 0 : body.offsetHeight ); - - // Don't make it smaller than 250px - if ( myHeight > 250 ) { - resizeHeight = myHeight; - } - - body.scrollTop = 0; - - // Resize content element - if ( resizeHeight !== oldSize ) { - deltaSize = resizeHeight - oldSize; - DOM.setStyle( DOM.get( editor.id + '_ifr' ), 'height', resizeHeight + 'px' ); - oldSize = resizeHeight; - - // WebKit doesn't decrease the size of the body element until the iframe gets resized - // So we need to continue to resize the iframe down until the size gets fixed - if ( tinymce.isWebKit && deltaSize < 0 ) { - resize( e ); - } - } - } - - // Register the command - editor.addCommand( 'wpAutoResize', resize ); + var settings = editor.settings; function fullscreenOn() { settings.wp_fullscreen = true; editor.dom.addClass( editor.getDoc().documentElement, 'wp-fullscreen' ); - // Add listeners for auto-resizing - editor.on( 'change setcontent paste keyup', resize ); + // Start auto-resizing + editor.execCommand( 'wpAutoResizeOn' ); } function fullscreenOff() { settings.wp_fullscreen = false; editor.dom.removeClass( editor.getDoc().documentElement, 'wp-fullscreen' ); - // Remove listeners for auto-resizing - editor.off( 'change setcontent paste keyup', resize ); - oldSize = 0; + // Stop auto-resizing + editor.execCommand( 'wpAutoResizeOff' ); } // For use from outside the editor. editor.addCommand( 'wpFullScreenOn', fullscreenOn ); editor.addCommand( 'wpFullScreenOff', fullscreenOff ); + function getExtAPI() { + return ( typeof wp !== 'undefined' && wp.editor && wp.editor.fullscreen ); + } + + // Toggle DFW mode. For use from inside the editor. function toggleFullscreen() { - // Toggle DFW mode. For use from inside the editor. - if ( typeof wp === 'undefined' || ! wp.editor || ! wp.editor.fullscreen ) { - return; - } + var fullscreen = getExtAPI(); - if ( editor.getParam('wp_fullscreen') ) { - wp.editor.fullscreen.off(); - } else { - wp.editor.fullscreen.on(); + if ( fullscreen ) { + if ( editor.getParam('wp_fullscreen') ) { + fullscreen.off(); + } else { + fullscreen.on(); + } } } editor.addCommand( 'wpFullScreen', toggleFullscreen ); + editor.on( 'keydown', function( event ) { + var fullscreen; + + // Turn fullscreen off when Esc is pressed. + if ( event.keyCode === 27 && ( fullscreen = getExtAPI() ) && fullscreen.settings.visible ) { + fullscreen.off(); + } + }); + editor.on( 'init', function() { // Set the editor when initializing from whitin DFW if ( editor.getParam('wp_fullscreen') ) { fullscreenOn(); } - - editor.addShortcut( 'alt+shift+w', '', 'wpFullScreen' ); }); // Register buttons editor.addButton( 'wp_fullscreen', { - tooltip: 'Distraction Free Writing', + tooltip: 'Distraction-free writing mode', shortcut: 'Alt+Shift+W', onclick: toggleFullscreen, classes: 'wp-fullscreen btn widget' // This overwrites all classes on the container! }); editor.addMenuItem( 'wp_fullscreen', { - text: 'Distraction Free Writing', + text: 'Distraction-free writing mode', icon: 'wp_fullscreen', shortcut: 'Alt+Shift+W', context: 'view',