Make WordPress Core

Ticket #29838: 29838.2.diff

File 29838.2.diff, 8.5 KB (added by joedolson, 8 months ago)

Fixes problem with previous patch formatting & continues work

  • src/js/_enqueues/admin/post.js

     
    434434                $previewField.val('');
    435435        });
    436436
    437         // This code is meant to allow tabbing from Title to Post content.
    438         $('#title').on( 'keydown.editor-focus', function( event ) {
    439                 var editor;
    440 
    441                 if ( event.keyCode === 9 && ! event.ctrlKey && ! event.altKey && ! event.shiftKey ) {
    442                         editor = typeof tinymce != 'undefined' && tinymce.get('content');
    443 
    444                         if ( editor && ! editor.isHidden() ) {
    445                                 editor.focus();
    446                         } else if ( $textarea.length ) {
    447                                 $textarea.trigger( 'focus' );
    448                         } else {
    449                                 return;
    450                         }
    451 
    452                         event.preventDefault();
    453                 }
    454         });
    455 
    456437        // Auto save new posts after a title is typed.
    457438        if ( $( '#auto_draft' ).val() ) {
    458439                $( '#title' ).on( 'blur', function() {
  • src/js/_enqueues/vendor/tinymce/plugins/wordpress/plugin.js

     
    10741074                        }
    10751075                } );
    10761076
     1077                editor.on( 'keydown', function( event ) {
     1078                        if ( event.keyCode === 9 && event.shiftKey ) {
     1079                                var toolbar = editor.theme.panel.find( '.toolbar:not(.menubar)' )[0];
     1080                                if ( toolbar ) {
     1081                                        toolbar.focus( true );
     1082                                }
     1083                        }
     1084                });
     1085
    10771086                editor.on( 'nodechange', function( event ) {
    10781087                        var collapsed = editor.selection.isCollapsed();
    10791088
  • src/js/_enqueues/wp/editor/base.js

     
    2828                                 *
    2929                                 * @return {void}
    3030                                 */
    31                                 $$( document ).on( 'click', function( event ) {
     31                                $$( document ).on( 'click keydown', function( event ) {
    3232                                        var id, mode,
    3333                                                target = $$( event.target );
    3434
     
    3535                                        if ( target.hasClass( 'wp-switch-editor' ) ) {
    3636                                                id = target.attr( 'data-wp-editor-id' );
    3737                                                mode = target.hasClass( 'switch-tmce' ) ? 'tmce' : 'html';
    38                                                 switchEditor( id, mode );
     38                                                switchEditor( id, mode, event );
    3939                                        }
    4040                                });
    4141                        }
     
    7070                 *
    7171                 * @param {string} id The id of the editor you want to change the editor mode for. Default: `content`.
    7272                 * @param {string} mode The mode you want to switch to. Default: `toggle`.
     73                 * @param {Event}  event DOM Event triggering the switch.
    7374                 * @return {void}
    7475                 */
    75                 function switchEditor( id, mode ) {
     76                function switchEditor( id, mode, event ) {
    7677                        id = id || 'content';
    7778                        mode = mode || 'toggle';
    7879
     
    7980                        var editorHeight, toolbarHeight, iframe,
    8081                                editor = tinymce.get( id ),
    8182                                wrap = $$( '#wp-' + id + '-wrap' ),
     83                                htmlSwitch = wrap.find( '.switch-tmce' ),
     84                                tmceSwitch = wrap.find( '.switch-html' ),
    8285                                $textarea = $$( '#' + id ),
    8386                                textarea = $textarea[0];
    8487
     
    9093                                }
    9194                        }
    9295
     96                        var isKeyboardActivation = ( event.which === 13 || event.which === 32 ) ? true : false;
    9397                        if ( 'tmce' === mode || 'tinymce' === mode ) {
    9498                                // If the editor is visible we are already in `tinymce` mode.
    9599                                if ( editor && ! editor.isHidden() ) {
     
    103107
    104108                                editorHeight = parseInt( textarea.style.height, 10 ) || 0;
    105109
    106                                 var keepSelection = false;
    107                                 if ( editor ) {
    108                                         keepSelection = editor.getParam( 'wp_keep_scroll_position' );
    109                                 } else {
    110                                         keepSelection = window.tinyMCEPreInit.mceInit[ id ] &&
    111                                                                         window.tinyMCEPreInit.mceInit[ id ].wp_keep_scroll_position;
    112                                 }
    113 
    114                                 if ( keepSelection ) {
    115                                         // Save the selection.
     110                                if ( ! isKeyboardActivation ) {
    116111                                        addHTMLBookmarkInTextAreaContent( $textarea );
    117112                                }
    118113
     
    130125                                                }
    131126                                        }
    132127
    133                                         if ( editor.getParam( 'wp_keep_scroll_position' ) ) {
    134                                                 // Restore the selection.
     128                                        // Restore the selection.
     129                                        if ( ! isKeyboardActivation ) {
    135130                                                focusHTMLBookmarkInVisualEditor( editor );
    136131                                        }
    137132                                } else {
     
    139134                                }
    140135
    141136                                wrap.removeClass( 'html-active' ).addClass( 'tmce-active' );
     137                                tmceSwitch.attr( 'aria-pressed', false );
     138                                htmlSwitch.attr( 'aria-pressed', true );
    142139                                $textarea.attr( 'aria-hidden', true );
    143140                                window.setUserSetting( 'editor', 'tinymce' );
    144141
     
    168165
    169166                                        var selectionRange = null;
    170167
    171                                         if ( editor.getParam( 'wp_keep_scroll_position' ) ) {
    172                                                 selectionRange = findBookmarkedPosition( editor );
    173                                         }
     168                                        selectionRange = findBookmarkedPosition( editor );
    174169
    175170                                        editor.hide();
    176171
     
    184179                                }
    185180
    186181                                wrap.removeClass( 'tmce-active' ).addClass( 'html-active' );
     182                                tmceSwitch.attr( 'aria-pressed', true );
     183                                htmlSwitch.attr( 'aria-pressed', false );
    187184                                $textarea.attr( 'aria-hidden', false );
    188185                                window.setUserSetting( 'editor', 'html' );
    189186                        }
     
    520517                 * Focuses the selection markers in Visual mode.
    521518                 *
    522519                 * The method checks for existing selection markers inside the editor DOM (Visual mode)
    523                  * and create a selection between the two nodes using the DOM `createRange` selection API
     520                 * and create a selection between the two nodes using the DOM `createRange` selection API.
    524521                 *
    525522                 * If there is only a single node, select only the single node through TinyMCE's selection API
    526523                 *
     
    545542                                }
    546543                        }
    547544
    548                         if ( editor.getParam( 'wp_keep_scroll_position' ) ) {
    549                                 scrollVisualModeToStartElement( editor, startNode );
    550                         }
     545                        scrollVisualModeToStartElement( editor, startNode );
    551546
    552547                        removeSelectionMarker( startNode );
    553548                        removeSelectionMarker( endNode );
  • src/wp-admin/edit-form-advanced.php

     
    621621                array(
    622622                        '_content_editor_dfw' => $_content_editor_dfw,
    623623                        'drag_drop_upload'    => true,
    624                         'tabfocus_elements'   => 'content-html,save-post',
    625624                        'editor_height'       => 300,
    626625                        'tinymce'             => array(
    627626                                'resize'                  => false,
    628627                                'wp_autoresize_on'        => $_wp_editor_expand,
    629628                                'add_unload_trigger'      => false,
    630                                 'wp_keep_scroll_position' => ! $is_IE,
    631629                        ),
    632630                )
    633631        );
  • src/wp-includes/class-wp-editor.php

     
    188188                                if ( 'html' !== $default_editor ) {
    189189                                        $default_editor = 'tinymce';
    190190                                }
     191                                $tmce_active = ( 'html' === $default_editor ) ? ' aria-pressed="true"' : '';
     192                                $html_active = ( 'html' === $default_editor ) ? '' : ' aria-pressed="true"';
    191193
    192                                 $buttons .= '<button type="button" id="' . $editor_id_attr . '-tmce" class="wp-switch-editor switch-tmce"' .
     194                                $buttons .= '<button type="button" id="' . $editor_id_attr . '-tmce"' . $html_active . ' class="wp-switch-editor switch-tmce"' .
    193195                                        ' data-wp-editor-id="' . $editor_id_attr . '">' . _x( 'Visual', 'Name for the Visual editor tab' ) . "</button>\n";
    194                                 $buttons .= '<button type="button" id="' . $editor_id_attr . '-html" class="wp-switch-editor switch-html"' .
     196                                $buttons .= '<button type="button" id="' . $editor_id_attr . '-html"' . $tmce_active . ' class="wp-switch-editor switch-html"' .
    195197                                        ' data-wp-editor-id="' . $editor_id_attr . '">' . _x( 'Text', 'Name for the Text editor tab (formerly HTML)' ) . "</button>\n";
    196198                        } else {
    197199                                $default_editor = 'tinymce';
     
    11131115                        'end_container_on_empty_block' => true,
    11141116                        'wpeditimage_html5_captions'   => true,
    11151117                        'wp_lang_attr'                 => get_bloginfo( 'language' ),
    1116                         'wp_keep_scroll_position'      => false,
    11171118                        'wp_shortcut_labels'           => wp_json_encode( $shortcut_labels ),
    11181119                );
    11191120
  • src/wp-includes/css/editor.css

     
    11401140        color: #1d2327;
    11411141}
    11421142
    1143 .wp-switch-editor:active,
    1144 .html-active .switch-html:focus,
    1145 .tmce-active .switch-tmce:focus {
    1146         box-shadow: none;
    1147 }
    1148 
    11491143.wp-switch-editor:active {
    11501144        background-color: #f6f7f7;
    11511145        box-shadow: none;