WordPress.org

Make WordPress Core

Ticket #15981: garyc40-15981.patch

File garyc40-15981.patch, 8.7 KB (added by garyc40, 4 years ago)

there's a really big patch for that

  • wp-admin/js/edit-comments.dev.js

    diff --git wp-admin/js/edit-comments.dev.js wp-admin/js/edit-comments.dev.js
    index 177dc86..0dbc0a6 100644
    commentReply = { 
    278278 
    279279                this.comments_listing = $('#comments-form > input[name="comment_status"]').val() || ''; 
    280280                 
    281                 $(listTable).bind('beforeChangePage', function(){ 
     281                $(listTable).bind('forceUpdateRow', function(){ 
    282282                        commentReply.close(); 
    283283                }); 
    284284        }, 
    commentReply = { 
    297297        }, 
    298298 
    299299        revert : function() { 
    300  
     300                listTable.is_editing(false); 
     301                 
    301302                if ( $('#the-comment-list #replyrow').length < 1 ) 
    302303                        return false; 
    303304 
    commentReply = { 
    310311 
    311312        close : function() { 
    312313                var c; 
    313  
     314                listTable.is_editing(false); 
    314315                if ( this.cid ) { 
    315316                        c = $('#comment-' + this.cid); 
    316317 
    commentReply = { 
    337338                var t = this, editRow, rowData, act, h, c = $('#comment-' + id); 
    338339                t.close(); 
    339340                t.cid = id; 
     341                listTable.is_editing(true); 
    340342 
    341343                editRow = $('#replyrow'); 
    342344                rowData = $('#inline-'+id); 
  • wp-admin/js/inline-edit-post.dev.js

    diff --git wp-admin/js/inline-edit-post.dev.js wp-admin/js/inline-edit-post.dev.js
    index 1a257c6..dc041a1 100644
    inlineEditPost = { 
    7878                        if ( $('form#posts-filter tr.inline-editor').length > 0 ) 
    7979                                t.revert(); 
    8080                }); 
     81                 
     82                $(listTable).bind('forceUpdateRow', function(){ 
     83                        inlineEditPost.revert(); 
     84                }); 
    8185        }, 
    8286 
    8387        toggle : function(el){ 
    inlineEditPost = { 
    8892        setBulk : function(){ 
    8993                var te = '', type = this.type, tax, c = true; 
    9094                this.revert(); 
    91  
     95                listTable.is_editing(true); 
     96                 
    9297                $('#bulk-edit td').attr('colspan', $('.widefat:first thead th:visible').length); 
    9398                $('table.widefat tbody').prepend( $('#bulk-edit') ); 
    9499                $('#bulk-edit').addClass('inline-editor').show(); 
    inlineEditPost = { 
    124129        edit : function(id) { 
    125130                var t = this, fields, editRow, rowData, cats, status, pageOpt, pageLevel, nextPage, pageLoop = true, nextLevel, tax; 
    126131                t.revert(); 
    127  
     132                listTable.is_editing(true); 
     133                 
    128134                if ( typeof(id) == 'object' ) 
    129135                        id = t.getId(id); 
    130136 
    inlineEditPost = { 
    257263 
    258264        revert : function(){ 
    259265                var id = $('table.widefat tr.inline-editor').attr('id'); 
    260  
     266                listTable.is_editing(false); 
    261267                if ( id ) { 
    262268                        $('table.widefat .inline-edit-save .waiting').hide(); 
    263269 
  • wp-admin/js/list-table.dev.js

    diff --git wp-admin/js/list-table.dev.js wp-admin/js/list-table.dev.js
    index 7d94ad2..19395ac 100644
    window.listTable = { 
    3636                if ( this.loading ) 
    3737                        return false; 
    3838 
    39                 var different = false, data = {}; 
     39                var different = false, data = {}, order, orderby, sorted, defaultOrder; 
    4040 
    4141                $.each(args, function(key, val) { 
    42                         if ( val != $.query.GET(key) ) { 
     42                        if ( val != $.query.GET(key) ) {  
    4343                                $.query.SET(key, val); 
    4444                                different = true; 
    4545                        } 
    window.listTable = { 
    6161                }); 
    6262 
    6363                this._callback = callback; 
    64  
     64                 
    6565                this.fetch_list( 
    6666                        data, 
    6767                        $.proxy(this, 'handle_success'), 
    6868                        $.proxy(this, 'handle_error') 
    6969                ); 
     70                 
     71                this.confirm_editing(); 
    7072 
    7173                return true; 
    7274        }, 
     75         
     76        confirm_editing : function() { 
     77                if (this.is_editing()) { 
     78                        this.force_update_rows = confirm(listTableL10n.warn_update_rows); 
     79                        if (this.force_update_rows) { 
     80                                $(this).trigger('forceUpdateRow'); 
     81                                if (this.response_cache) { 
     82                                        this.handle_success(this.response_cache); 
     83                                        this.response_cache = false; 
     84                                } 
     85                                if (this.sortable_cache) { 
     86                                        this.sortable_cache.find('a').click(); 
     87                                        this.sortable_cache = false; 
     88                                } 
     89                                this.force_update_rows = false; 
     90                        } else { 
     91                                this.stop_loading(); 
     92                        } 
     93                } 
     94        }, 
    7395 
    7496        fetch_list: function(data, success_callback, error_callback) { 
    7597                data = $.extend(data, { 
    window.listTable = { 
    86108                        error: error_callback 
    87109                }); 
    88110        }, 
     111         
     112        is_editing : function(val) { 
     113                if (typeof val == 'undefined') { 
     114                        return this.is_editing._i || false; 
     115                } else { 
     116                        this.is_editing._i = val; 
     117 
     118                        if (val) { 
     119                                this.stop_loading(); 
     120                        } 
     121                } 
     122        }, 
    89123 
    90124        handle_success: function(response) { 
    91125                if ( 'object' != typeof response ) { 
    92126                        this.handle_error(); 
    93127                } else { 
    94128                        this.stop_loading(); 
     129                         
     130                        if ( ! this.is_editing() || this.force_update_rows ) { 
     131                                $('div.updated, div.error').not('.persistent, .inline').remove(); 
    95132 
    96                         $('div.updated, div.error').not('.persistent, .inline').remove(); 
     133                                this.$tbody.html(response.rows); 
    97134 
    98                         this.$tbody.html(response.rows); 
     135                                $('.displaying-num').html(response.total_items_i18n); 
     136                                $('.total-pages').html(response.total_pages_i18n); 
    99137 
    100                         $('.displaying-num').html(response.total_items_i18n); 
    101                         $('.total-pages').html(response.total_pages_i18n); 
     138                                this.set_total_pages(response.total_pages); 
    102139 
    103                         this.set_total_pages(response.total_pages); 
     140                                $('.current-page').val($.query.GET('paged')); 
    104141 
    105                         $('.current-page').val($.query.GET('paged')); 
     142                                $('th.column-cb :input').attr('checked', false); 
    106143 
    107                         $('th.column-cb :input').attr('checked', false); 
     144                                if ( history.replaceState ) { 
     145                                        history.replaceState({}, '', location.pathname + $.query); 
     146                                } 
    108147 
    109                         if ( history.replaceState ) { 
    110                                 history.replaceState({}, '', location.pathname + $.query); 
     148                                if ( this._callback ) 
     149                                        this._callback(); 
     150                                 
     151                                this.response_cache = false; 
     152                        } else { 
     153                                this.response_cache = response; 
    111154                        } 
    112  
    113                         if ( this._callback ) 
    114                                 this._callback(); 
    115155                } 
    116156        }, 
    117157 
    listTable.init(); 
    192232                return false; 
    193233        }); 
    194234 
     235        function get_initial_order($el) { 
     236                return $.query.load( $el.find('a').attr('href') ).get('order'); 
     237        } 
     238 
    195239        // sortable columns 
    196240        $('th.sortable a, th.sorted a').click(function() { 
    197  
    198                 function get_initial_order($el) { 
    199                         return $.query.load( $el.find('a').attr('href') ).get('order'); 
    200                 } 
    201  
    202                 var $link = $(this), 
    203                         $th = $link.parent('th'), 
    204                         thIndex = $th.index(), 
    205                         orderby = $.query.load( $link.attr('href') ).get('orderby'), 
    206                         order; 
    207  
    208                 // th should include both headers in thead and tfoot 
    209                 $th = $th.closest('table').find('thead th:eq(' + thIndex + '), tfoot th:eq(' + thIndex + ')'); 
    210  
    211                 if ( orderby == $.query.get('orderby') ) { 
    212                         // changing the direction 
    213                         order = ( 'asc' == $.query.get('order') ) ? 'desc' : 'asc'; 
    214                 } else { 
    215                         // changing the parameter 
    216                         order = get_initial_order($th); 
    217  
    218                         var $old_th = $('th.sorted'); 
    219                         if ( $old_th.length ) { 
    220                                 $old_th.removeClass('sorted').addClass('sortable'); 
    221                                 $old_th.removeClass('desc').removeClass('asc').addClass( 
    222                                         'asc' == get_initial_order( $old_th ) ? 'desc' : 'asc' 
    223                                 ); 
     241                if (! listTable.is_editing()) { 
     242                        var $link = $(this), 
     243                                $th = $link.parent('th'), 
     244                                thIndex = $th.index(), 
     245                                orderby = $.query.load( $link.attr('href') ).get('orderby'), 
     246                                order; 
     247 
     248                        // th should include both headers in thead and tfoot 
     249                        $th = $th.closest('table').find('thead th:eq(' + thIndex + '), tfoot th:eq(' + thIndex + ')'); 
     250 
     251                        if ( orderby == $.query.get('orderby') ) { 
     252                                // changing the direction 
     253                                order = ( 'asc' == $.query.get('order') ) ? 'desc' : 'asc'; 
     254                        } else { 
     255                                // changing the parameter 
     256                                order = get_initial_order($th); 
     257 
     258                                var $old_th = $('th.sorted'); 
     259                                if ( $old_th.length ) { 
     260                                        $old_th.removeClass('sorted').addClass('sortable'); 
     261                                        $old_th.removeClass('desc').removeClass('asc').addClass( 
     262                                                'asc' == get_initial_order( $old_th ) ? 'desc' : 'asc' 
     263                                        ); 
     264                                } 
     265 
     266                                $th.removeClass('sortable').addClass('sorted'); 
    224267                        } 
    225268 
    226                         $th.removeClass('sortable').addClass('sorted'); 
     269                        $th.removeClass('desc').removeClass('asc').addClass(order); 
     270                        listTable.update_rows({'orderby' : orderby, 'order' : order}, true); 
     271                        listTable.sortable_cache = false; 
     272                } else { 
     273                        listTable.sortable_cache = $(this).parents('th'); 
     274                        listTable.confirm_editing(); 
    227275                } 
    228  
    229                 $th.removeClass('desc').removeClass('asc').addClass(order); 
    230  
    231                 listTable.update_rows({'orderby': orderby, 'order': order}, true); 
    232  
    233276                return false; 
    234277        }); 
    235278 
  • wp-includes/script-loader.php

    diff --git wp-includes/script-loader.php wp-includes/script-loader.php
    index 706fd0a..e825e18 100644
    function wp_default_scripts( &$scripts ) { 
    309309                $scripts->localize( 'list-table', 'listTableL10n', array( 
    310310                        'error' => __('An error has occurred while loading the items.'), 
    311311                        'search' => __('Search results for &#8220;%s&#8221;'), 
    312                         'l10n_print_after' => 'try{convertEntities(listTableL10n);}catch(e){};' 
     312                        'l10n_print_after' => 'try{convertEntities(listTableL10n);}catch(e){};', 
     313                        'warn_update_rows' => __("The changes you made will be lost if you proceed. 'Cancel' to stop, 'OK' to continue."), 
    313314                ) ); 
    314315 
    315316                $scripts->add( 'admin-comments', "/wp-admin/js/edit-comments$suffix.js", array('wp-lists', 'list-table', 'jquery-ui-resizable', 'quicktags'), '20101223' );