Make WordPress Core

Ticket #29558: 29558.5.patch

File 29558.5.patch, 9.7 KB (added by iseulde, 10 years ago)
  • src/wp-includes/class-wp-editor.php

     
    993993                        'Keyboard Shortcuts' => __( 'Keyboard Shortcuts' ),
    994994                        'Toolbar Toggle' => __( 'Toolbar Toggle' ),
    995995                        'Insert Read More tag' => __( 'Insert Read More tag' ),
     996                        'Insert Page Break tag' => __( 'Insert Page Break tag' ),
    996997                        'Read more...' => __( 'Read more...' ), // Title on the placeholder inside the editor
    997998                        'Distraction-free writing mode' => __( 'Distraction-free writing mode' ),
    998999                        'No alignment' => __( 'No alignment' ), // Tooltip for the 'alignnone' button in the image toolbar
    9991000                        'Remove' => __( 'Remove' ), // Tooltip for the 'remove' button in the image toolbar
    10001001                        'Edit ' => __( 'Edit' ), // Tooltip for the 'edit' button in the image toolbar
     1002                        'Focus shortcuts:' => __( 'Focus shortcuts:' ),
     1003                        'Image toolbar (when an image is selected)' => __( 'Image toolbar (when an image is selected)' ),
     1004                        'Editor menu (when enabled)' => __( 'Editor menu (when enabled)' ),
     1005                        'Editor toolbar' => __( 'Editor toolbar' ),
     1006                        'Elements path' => __( 'Elements path' )
    10011007                );
    10021008
    10031009                /**
  • src/wp-includes/css/editor.css

     
    7979        width: calc( 100% - 36px );
    8080}
    8181
    82 .mce-wp-help .mce-window-head {
    83         border-bottom: none;
    84 }
    85 
    8682.mce-textbox,
    8783.mce-checkbox i.mce-i-checkbox,
    8884#wp-link .query-results {
     
    104100        box-shadow: 0 0 2px rgba(30,140,190,0.8);
    105101}
    106102
     103.mce-container kbd {
     104        font-family: monospace;
     105        padding: 3px 5px 2px 5px;
     106        margin: 0 1px;
     107        background: #eaeaea;
     108        background: rgba(0,0,0,0.07);
     109        font-size: 13px;
     110}
     111
     112.mce-wp-help {
     113        height: 400px;
     114        overflow: auto;
     115}
     116
     117.mce-wp-help td {
     118        padding: 5px;
     119}
     120
    107121/* TinyMCE menus */
    108122.mce-menu,
    109123.mce-floatpanel.mce-popover {
  • src/wp-includes/js/tinymce/plugins/wordpress/plugin.js

     
    44tinymce.ui.FloatPanel.zIndex = 100100;
    55
    66tinymce.PluginManager.add( 'wordpress', function( editor ) {
    7         var DOM = tinymce.DOM, wpAdvButton, modKey, style,
     7        var DOM = tinymce.DOM,
     8                each = tinymce.each,
     9                __ = editor.editorManager.i18n.translate,
     10                wpAdvButton, style,
    811                last = 0;
    912
    1013        if ( typeof window.jQuery !== 'undefined' ) {
     
    2932                        state = 'hide';
    3033                }
    3134
    32                 tinymce.each( toolbars, function( toolbar, i ) {
     35                each( toolbars, function( toolbar, i ) {
    3336                        if ( i > 0 ) {
    3437                                if ( state === 'hide' ) {
    3538                                        toolbar.hide();
     
    9194
    9295                if ( e.content ) {
    9396                        if ( e.content.indexOf( '<!--more' ) !== -1 ) {
    94                                 title = editor.editorManager.i18n.translate( 'Read more...' );
     97                                title = __( 'Read more...' );
    9598
    9699                                e.content = e.content.replace( /<!--more(.*?)-->/g, function( match, moretext ) {
    97100                                        return '<img src="' + tinymce.Env.transparentSrc + '" data-wp-more="more" data-wp-more-text="' + moretext + '" ' +
     
    100103                        }
    101104
    102105                        if ( e.content.indexOf( '<!--nextpage-->' ) !== -1 ) {
    103                                 title = editor.editorManager.i18n.translate( 'Page break' );
     106                                title = __( 'Page break' );
    104107
    105108                                e.content = e.content.replace( /<!--nextpage-->/g,
    106109                                        '<img src="' + tinymce.Env.transparentSrc + '" data-wp-more="nextpage" class="wp-more-tag mce-wp-nextpage" ' +
     
    149152                tag = tag || 'more';
    150153                classname += ' mce-wp-' + tag;
    151154                title = tag === 'more' ? 'Read more...' : 'Next page';
    152                 title = editor.editorManager.i18n.translate( title );
     155                title = __( title );
    153156                html = '<img src="' + tinymce.Env.transparentSrc + '" title="' + title + '" class="' + classname + '" ' +
    154157                        'data-wp-more="' + tag + '" data-mce-resize="false" data-mce-placeholder="1" />';
    155158
     
    188191        });
    189192
    190193        editor.addCommand( 'WP_Help', function() {
    191                 editor.windowManager.open({
    192                         url: tinymce.baseURL + '/wp-mce-help.php',
     194                var access = tinymce.Env.mac ? 'ctrl + alt' : 'shift + alt',
     195                        meta = tinymce.Env.mac ? 'cmd' : 'ctrl',
     196                        column1 = [],
     197                        column2 = [],
     198                        pieces = [],
     199                        rows,
     200                        i;
     201
     202                each( {
     203                        C: 'Copy',
     204                        X: 'Cut',
     205                        V: 'Paste',
     206                        A: 'Select all',
     207                        Z: 'Undo',
     208                        Y: 'Redo',
     209                        B: 'Bold',
     210                        I: 'Italic',
     211                        U: 'Underline',
     212                        K: 'Insert/edit link'
     213                }, function( text, key ) {
     214                        column1.push( td( meta + ' + ' + key, text ) );
     215                } );
     216
     217                each( [ 1, 2, 3, 4, 5, 6 ], function( key ) {
     218                        column1.push( td( access + ' + ' + key, 'Heading ' + key ) );
     219                } );
     220
     221                each( {
     222                        L: 'Align left',
     223                        C: 'Align center',
     224                        R: 'Align right',
     225                        J: 'Justify',
     226                        D: 'Strikethrough',
     227                        Q: 'Blockquote',
     228                        U: 'Bullet list',
     229                        O: 'Numbered list',
     230                        A: 'Insert/edit link',
     231                        S: 'Remove link',
     232                        M: 'Insert/edit image',
     233                        T: 'Insert Read More tag',
     234                        H: 'Keyboard Shortcuts',
     235                        X: 'Code',
     236                        P: 'Insert Page Break tag',
     237                        W: 'Distraction-free writing mode',
     238                        N: 'Spellcheck'
     239                }, function( text, key ) {
     240                        column2.push( td( access + ' + ' + key, text ) );
     241                } );
     242
     243                function td( pattern, text ) {
     244                        return '<td>' + ( pattern ? '<kbd>' + pattern + '</kbd>' : '' ) + '</td><td>' + ( __( text ) || '' ) + '</td>';
     245                }
     246
     247                rows = Math.max( column1.length, column2.length );
     248
     249                for ( i = 1; i <= rows; i++ ) {
     250                        pieces.push( '<tr>' + ( column1[ i ] || td() ) + ( column2[ i ] || td() ) + '</tr>' );
     251                }
     252
     253                editor.windowManager.open( {
    193254                        title: 'Keyboard Shortcuts',
    194                         width: 450,
    195                         height: 420,
    196                         classes: 'wp-help',
    197                         buttons: { text: 'Close', onclick: 'close' }
    198                 });
    199         });
     255                        spacing: 10,
     256                        padding: 10,
     257                        items: {
     258                                type: 'container',
     259                                classes: 'wp-help',
     260                                html: (
     261                                        '<table>' + pieces.join( '' ) + '</table>' +
     262                                        '<p>' + __( 'Focus shortcuts:' ) + '</p>' +
     263                                        '<table>' +
     264                                                '<tr>' + td( 'alt + F8', 'Image toolbar (when an image is selected)' ) + '</tr>' +
     265                                                '<tr>' + td( 'alt + F9', 'Editor menu (when enabled)' ) + '</tr>' +
     266                                                '<tr>' + td( 'alt + F10', 'Editor toolbar' ) + '</tr>' +
     267                                                '<tr>' + td( 'alt + F11', 'Elements path' ) + '</tr>' +
     268                                        '</table>'
     269                                )
     270                        },
     271                        buttons: {
     272                                text: 'Close',
     273                                onclick: 'close'
     274                        }
     275                } );
     276        } );
    200277
    201278        editor.addCommand( 'WP_Medialib', function() {
    202279                if ( typeof wp !== 'undefined' && wp.media && wp.media.editor ) {
     
    309386
    310387                bodyClass.push('wp-editor');
    311388
    312                 tinymce.each( bodyClass, function( cls ) {
     389                each( bodyClass, function( cls ) {
    313390                        if ( cls ) {
    314391                                dom.addClass( doc.body, cls );
    315392                        }
     
    351428
    352429                        editor.on( 'PastePostProcess', function( event ) {
    353430                                // Remove empty paragraphs
    354                                 tinymce.each( dom.select( 'p', event.node ), function( node ) {
     431                                each( dom.select( 'p', event.node ), function( node ) {
    355432                                        if ( dom.isEmpty( node ) ) {
    356433                                                dom.remove( node );
    357434                                        }
     
    402479        });
    403480
    404481        editor.on( 'preInit', function() {
     482                var i;
     483
    405484                // Don't replace <i> with <em> and <b> with <strong> and don't remove them when empty
    406485                editor.schema.addValidElements( '@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b' );
    407486
    408487                if ( tinymce.Env.iOS ) {
    409488                        editor.settings.height = 300;
    410489                }
    411         });
    412490
    413         // Add custom shortcuts
    414         modKey = 'alt+shift';
     491                for ( i = 1; i <= 9; i++ ) {
     492                        editor.shortcuts.remove( 'meta+shift+' + i );
     493                }
    415494
    416         editor.addShortcut( modKey + '+c', '', 'JustifyCenter' );
    417         editor.addShortcut( modKey + '+r', '', 'JustifyRight' );
    418         editor.addShortcut( modKey + '+l', '', 'JustifyLeft' );
    419         editor.addShortcut( modKey + '+j', '', 'JustifyFull' );
    420         editor.addShortcut( modKey + '+q', '', 'mceBlockQuote' );
    421         editor.addShortcut( modKey + '+u', '', 'InsertUnorderedList' );
    422         editor.addShortcut( modKey + '+o', '', 'InsertOrderedList' );
    423         editor.addShortcut( modKey + '+n', '', 'mceSpellCheck' );
    424         editor.addShortcut( modKey + '+s', '', 'unlink' );
    425         editor.addShortcut( modKey + '+m', '', 'WP_Medialib' );
    426         editor.addShortcut( modKey + '+z', '', 'WP_Adv' );
    427         editor.addShortcut( modKey + '+t', '', 'WP_More' );
    428         editor.addShortcut( modKey + '+d', '', 'Strikethrough' );
    429         editor.addShortcut( modKey + '+h', '', 'WP_Help' );
    430         editor.addShortcut( modKey + '+p', '', 'WP_Page' );
    431         editor.addShortcut( modKey + '+x', '', 'WP_Code' );
    432         editor.addShortcut( 'ctrl+s', '', function() {
    433                 if ( typeof wp !== 'undefined' && wp.autosave ) {
    434                         wp.autosave.server.triggerSave();
     495                for ( i = 1; i <= 6; i++ ) {
     496                        editor.shortcuts.add( 'access+' + i, '', [ 'FormatBlock', false, 'h' + i ] );
    435497                }
    436         });
    437        
     498
     499                each( {
     500                        c: 'JustifyCenter',
     501                        r: 'JustifyRight',
     502                        l: 'JustifyLeft',
     503                        j: 'JustifyFull',
     504                        q: 'mceBlockQuote',
     505                        u: 'InsertUnorderedList',
     506                        o: 'InsertOrderedList',
     507                        n: 'mceSpellCheck',
     508                        s: 'unlink',
     509                        m: 'WP_Medialib',
     510                        z: 'WP_Adv',
     511                        t: 'WP_More',
     512                        d: 'Strikethrough',
     513                        h: 'WP_Help',
     514                        p: 'WP_Page',
     515                        x: 'WP_Code'
     516                }, function( command, key ) {
     517                        editor.shortcuts.add( 'access+' + key, '', command );
     518                } );
     519
     520                editor.addShortcut( 'ctrl+s', '', function() {
     521                        if ( typeof wp !== 'undefined' && wp.autosave ) {
     522                                wp.autosave.server.triggerSave();
     523                        }
     524                } );
     525        } );
     526
    438527        /**
    439528         * Experimental: create a floating toolbar.
    440          * This functionality will change in the next releases. Not recommennded for use by plugins.
    441          */             
     529         * This functionality will change in the next releases. Not recommended for use by plugins.
     530         */
    442531        ( function() {
    443                 var DOM = tinymce.DOM,
    444                         each = tinymce.each,
    445                         Factory = tinymce.ui.Factory,
     532                var Factory = tinymce.ui.Factory,
    446533                        settings = editor.settings,
    447534                        currentToolbar,
    448535                        currentSelection;