Make WordPress Core

Ticket #27527: 27527-02.patch

File 27527-02.patch, 3.4 KB (added by gcorne, 10 years ago)
  • src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js

    diff --git src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js
    index 3ba19b4..343e48f 100644
     
    11/* global tinymce */
    22tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
     3        var toolbarActive = false;
     4
    35        function parseShortcode( content ) {
    46                return content.replace( /(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g, function( a, b, c ) {
    57                        var id, cls, w, cap, img, width,
    tinymce.PluginManager.add( 'wpeditimage', function( editor ) { 
    102104                        });
    103105
    104106                        if ( out.indexOf('[caption') !== 0 ) {
    105                                 // the caption html seems brocken, try to find the image that may be wrapped in a link
     107                                // the caption html seems broken, try to find the image that may be wrapped in a link
    106108                                // and may be followed by <p> with the caption text.
    107109                                out = b.replace( /[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi, '<p>$1</p>$2' );
    108110                        }
    tinymce.PluginManager.add( 'wpeditimage', function( editor ) { 
    339341                } else {
    340342                        editor.dom.remove( node );
    341343                }
     344                removeToolbar();
    342345        }
    343346
    344347        function addToolbar( node ) {
    tinymce.PluginManager.add( 'wpeditimage', function( editor ) { 
    371374                        top: rectangle.y,
    372375                        left: rectangle.x + rectangle.w - toolbarSize.w
    373376                });
     377
     378                toolbarActive = true;
    374379        }
    375380
    376381        function removeToolbar() {
    tinymce.PluginManager.add( 'wpeditimage', function( editor ) { 
    381386                }
    382387
    383388                editor.dom.setAttrib( editor.dom.select( 'img[data-wp-imgselect]' ), 'data-wp-imgselect', null );
     389
     390                toolbarActive = false;
    384391        }
    385392
    386393        function isPlaceholder( node ) {
    tinymce.PluginManager.add( 'wpeditimage', function( editor ) { 
    753760        editor.on( 'keydown', function( event ) {
    754761                var node, wrap, P, spacer,
    755762                        selection = editor.selection,
     763                        keyCode = event.keyCode,
    756764                        dom = editor.dom;
    757765
    758                 if ( event.keyCode === tinymce.util.VK.ENTER ) {
     766                if ( keyCode === tinymce.util.VK.ENTER ) {
    759767                        // When pressing Enter inside a caption move the caret to a new parapraph under it
    760768                        node = selection.getNode();
    761769                        wrap = dom.getParent( node, 'div.mceTemp' );
    tinymce.PluginManager.add( 'wpeditimage', function( editor ) { 
    782790                                editor.nodeChanged();
    783791                                selection.setCursorLocation( P, 0 );
    784792                        }
    785                 } else if ( event.keyCode === tinymce.util.VK.DELETE || event.keyCode === tinymce.util.VK.BACKSPACE ) {
     793                } else if ( keyCode === tinymce.util.VK.DELETE || keyCode === tinymce.util.VK.BACKSPACE ) {
    786794                        node = selection.getNode();
    787795
    788796                        if ( node.nodeName === 'DIV' && dom.hasClass( node, 'mceTemp' ) ) {
    tinymce.PluginManager.add( 'wpeditimage', function( editor ) { 
    796804                                removeImage( node );
    797805                                return false;
    798806                        }
     807
     808                        removeToolbar();
     809                }
     810
     811                // Key presses will replace the image so we need to remove the toolbar
     812                if ( toolbarActive ) {
     813                        if ( event.ctrlKey || event.metaKey || event.altKey ||
     814                                ( keyCode < 48 && keyCode > 90 ) || keyCode > 186 ) {
     815                                return;
     816                        }
     817
     818                        removeToolbar();
    799819                }
    800820        });
    801821
    tinymce.PluginManager.add( 'wpeditimage', function( editor ) { 
    828848
    829849                                if ( dom.hasClass( node, 'remove' ) ) {
    830850                                        removeImage( image );
    831                                         removeToolbar();
    832851                                } else if ( dom.hasClass( node, 'edit' ) ) {
    833852                                        editImage( image );
    834853                                }