WordPress.org

Make WordPress Core

Ticket #15981: garyc40-15981.patch

File garyc40-15981.patch, 8.7 KB (added by garyc40, 7 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' );