WordPress.org

Make WordPress Core

Ticket #25696: 25696.3.patch

File 25696.3.patch, 7.6 KB (added by afercia, 5 years ago)
  • src/wp-admin/js/edit-comments.js

     
    569569                        if ( e.which == 13 ) {
    570570                                commentReply.send();
    571571                                e.preventDefault();
     572                                // @todo check if really necessary.
    572573                                return false;
    573574                        }
    574575                });
     
    606607
    607608        revert : function() {
    608609
    609                 if ( $('#the-comment-list #replyrow').length < 1 )
     610                if ( $('#the-comment-list #replyrow').length < 1 ) {
     611                        // @todo when buttons will be buttons this should just return?
    610612                        return false;
     613                }
    611614
    612615                $('#replyrow').fadeOut('fast', function(){
    613616                        commentReply.close();
    614617                });
    615618
     619                // Try to abort any previous AJAX request when users click Cancel.
     620                if ( commentReply.xhr && commentReply.xhr.readyState !== 4 ) {
     621                        commentReply.xhr.abort();
     622                        commentReply.xhr = null;
     623                }
     624
     625                // @todo buttons should be buttons.
    616626                return false;
    617627        },
    618628
     
    728738                                        commentReply.revert(); // close on Escape
    729739                        });
    730740                }, 600);
    731 
     741                // @todo check if really necessary, default links action is already prevented.
    732742                return false;
    733743        },
    734744
     
    735745        send : function() {
    736746                var post = {};
    737747
     748                // Return and prevent form submitting if there's already an AJAX request in progress.
     749                if ( commentReply.xhr && commentReply.xhr.readyState !== 4 ) {
     750                        return false;
     751                }
     752
    738753                $('#replysubmit .error').hide();
    739754                $( '#replysubmit .spinner' ).addClass( 'is-active' );
    740755
     
    751766                if ( $('#comment-' + $('#comment_ID').val()).hasClass('unapproved') )
    752767                        post.approve_parent = 1;
    753768
    754                 $.ajax({
     769                // Fire the AJAX request.
     770                commentReply.xhr = $.ajax({
    755771                        type : 'POST',
    756772                        url : ajaxurl,
    757773                        data : post,
     
    759775                        error : function(r) { commentReply.error(r); }
    760776                });
    761777
     778                // @todo buttons should be buttons.
    762779                return false;
    763780        },
    764781
     
    919936        // Quick Edit and Reply have an inline comment editor.
    920937        $( '#the-comment-list' ).on( 'click', '.comment-inline', function (e) {
    921938                e.preventDefault();
     939
     940                // Don't open a new Quick Edit form when a previous Quick Edit request has not completed yet.
     941                if ( commentReply.xhr && commentReply.xhr.readyState !== 4 ) {
     942                        return;
     943                }
     944
    922945                var $el = $( this ),
    923946                        action = 'replyto';
    924947
  • src/wp-admin/js/inline-edit-post.js

     
    5151                // add events
    5252                $('#the-list').on( 'click', 'a.editinline', function( e ) {
    5353                        e.preventDefault();
     54                        // Don't open a new Quick Edit form when a previous Quick Edit request has not completed yet.
     55                        if ( inlineEditPost.xhr && inlineEditPost.xhr.readyState !== 4 ) {
     56                                return;
     57                        }
    5458                        inlineEditPost.edit(this);
    5559                });
    5660
     
    7781                });
    7882        },
    7983
    80         toggle : function(el){
    81                 var t = this;
    82                 $( t.what + t.getId( el ) ).css( 'display' ) === 'none' ? t.revert() : t.edit( el );
    83         },
    84 
    8584        setBulk : function(){
    8685                var te = '', type = this.type, tax, c = true;
    8786                this.revert();
     
    253252        save : function(id) {
    254253                var params, fields, page = $('.post_status_page').val() || '';
    255254
     255                // Return and prevent form submitting if there's already an AJAX request in progress.
     256                if ( inlineEditPost.xhr && inlineEditPost.xhr.readyState !== 4 ) {
     257                        return false;
     258                }
     259
    256260                if ( typeof(id) === 'object' ) {
    257261                        id = this.getId(id);
    258262                }
     
    270274                fields = $('#edit-'+id).find(':input').serialize();
    271275                params = fields + '&' + $.param(params);
    272276
    273                 // make ajax request
    274                 $.post( ajaxurl, params,
     277                // Fire the AJAX request.
     278                inlineEditPost.xhr = $.post( ajaxurl, params,
    275279                        function(r) {
    276280                                var $errorSpan = $( '#edit-' + id + ' .inline-edit-save .error' );
    277281
     
    280284
    281285                                if (r) {
    282286                                        if ( -1 !== r.indexOf( '<tr' ) ) {
     287                                                // Get both the edited row and the empty row used to maintain zebra striping, then remove them.
    283288                                                $(inlineEditPost.what+id).siblings('tr.hidden').addBack().remove();
     289                                                // Get the Quick Edit form, append the returned row before it and then remove it.
    284290                                                $('#edit-'+id).before(r).remove();
     291                                                // Get the new appended row, ensure it's hidden then fade it in.
    285292                                                $( inlineEditPost.what + id ).hide().fadeIn( 400, function() {
    286293                                                        // Move focus back to the Quick Edit link. $( this ) is the row being animated.
    287294                                                        $( this ).find( '.editinline' ).focus();
     
    325332                        }
    326333                }
    327334
    328                 return false;
     335                // Try to abort any previous AJAX request when users click Cancel.
     336                if ( inlineEditPost.xhr && inlineEditPost.xhr.readyState !== 4 ) {
     337                        inlineEditPost.xhr.abort();
     338                        inlineEditPost.xhr = null;
     339                }
    329340        },
    330341
    331342        getId : function(o) {
  • src/wp-admin/js/inline-edit-tax.js

     
    1111                t.type = $('#the-list').attr('data-wp-lists').substr(5);
    1212                t.what = '#'+t.type+'-';
    1313
    14                 $('#the-list').on('click', 'a.editinline', function(){
     14                $( '#the-list' ).on( 'click', 'a.editinline', function( e ) {
     15                        e.preventDefault();
     16                        // Don't open a new Quick Edit form when a previous Quick Edit request has not completed yet.
     17                        if ( inlineEditTax.xhr && inlineEditTax.xhr.readyState !== 4 ) {
     18                                return;
     19                        }
    1520                        inlineEditTax.edit(this);
    16                         return false;
    1721                });
    1822
    1923                // prepare the edit row
     
    4044                });
    4145        },
    4246
    43         toggle : function(el) {
    44                 var t = this;
    45                 $(t.what+t.getId(el)).css('display') === 'none' ? t.revert() : t.edit(el);
    46         },
    47 
    4847        edit : function(id) {
    4948                var editRow, rowData, val,
    5049                        t = this;
     
    7877        save : function(id) {
    7978                var params, fields, tax = $('input[name="taxonomy"]').val() || '';
    8079
     80                // Return and prevent form submitting if there's already an AJAX request in progress.
     81                if ( inlineEditTax.xhr && inlineEditTax.xhr.readyState !== 4 ) {
     82                        return false;
     83                }
     84
    8185                if( typeof(id) === 'object' ) {
    8286                        id = this.getId(id);
    8387                }
     
    9498                fields = $('#edit-'+id).find(':input').serialize();
    9599                params = fields + '&' + $.param(params);
    96100
    97                 // make ajax request
    98                 $.post( ajaxurl, params,
     101                // Fire the AJAX request.
     102                inlineEditTax.xhr = $.post( ajaxurl, params,
    99103                        function(r) {
    100104                                var row, new_id, option_value,
    101105                                        $errorSpan = $( '#edit-' + id + ' .inline-edit-save .error' );
     
    104108
    105109                                if (r) {
    106110                                        if ( -1 !== r.indexOf( '<tr' ) ) {
     111                                                // Get both the edited row and the empty row used to maintain zebra striping, then remove them.
    107112                                                $(inlineEditTax.what+id).siblings('tr.hidden').addBack().remove();
    108113                                                new_id = $(r).attr('id');
    109 
     114                                                // Get the Quick Edit form, append the returned row before it and then remove it.
    110115                                                $('#edit-'+id).before(r).remove();
    111116
    112117                                                if ( new_id ) {
     
    119124
    120125                                                // Update the value in the Parent dropdown.
    121126                                                $( '#parent' ).find( 'option[value=' + option_value + ']' ).text( row.find( '.row-title' ).text() );
    122 
     127                                                // Get the new appended row, ensure it's hidden then fade it in.
    123128                                                row.hide().fadeIn( 400, function() {
    124129                                                        // Move focus back to the Quick Edit link.
    125130                                                        row.find( '.editinline' ).focus();
     
    151156                        // Show the taxonomy row and move focus back to the Quick Edit link.
    152157                        $( this.what + id ).show().find( '.editinline' ).focus();
    153158                }
     159
     160                // Try to abort any previous AJAX request when users click Cancel.
     161                if ( inlineEditTax.xhr && inlineEditTax.xhr.readyState !== 4 ) {
     162                        inlineEditTax.xhr.abort();
     163                        inlineEditTax.xhr = null;
     164                }
    154165        },
    155166
    156167        getId : function(o) {