WordPress.org

Make WordPress Core

Ticket #15761: garyc40-15761.2.diff

File garyc40-15761.2.diff, 14.7 KB (added by garyc40, 9 years ago)

patch refreshed, give proper href attribute to Bulk Edit Cancel link

  • wp-admin/edit.php

    diff --git wp-admin/edit.php wp-admin/edit.php
    index 39424ac..1427ef8 100644
    if ( 'post' != $post_type ) { 
    4747
    4848$doaction = $wp_list_table->current_action();
    4949
    50 if ( $doaction ) {
     50if ( $doaction && ! $wp_list_table->is_bulk_edit_form() ) {
    5151        check_admin_referer('bulk-posts');
    5252
    5353        $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer() );
    if ( $doaction ) { 
    6666                $post_ids = explode( ',', $_REQUEST['ids'] );
    6767        } elseif ( !empty( $_REQUEST['post'] ) ) {
    6868                $post_ids = array_map('intval', $_REQUEST['post']);
     69        } elseif ( ! empty( $_REQUEST['bulk_post'] ) ) {
     70                $post_ids = array_map( 'intval', $_REQUEST['bulk_post'] );
    6971        }
    70 
     72       
    7173        if ( !isset( $post_ids ) ) {
    7274                wp_redirect( $sendback );
    7375                exit;
    if ( $doaction ) { 
    8688                                $trashed++;
    8789                        }
    8890                        $sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids) ), $sendback );
     91                        $sendback = remove_query_arg( array( 'updated' ), $sendback );
    8992                        break;
    9093                case 'untrash':
    9194                        $untrashed = 0;
    if ( $doaction ) { 
    127130                                $done['skipped'] = count( $done['skipped'] );
    128131                                $done['locked'] = count( $done['locked'] );
    129132                                $sendback = add_query_arg( $done, $sendback );
     133                                $sendback = remove_query_arg( array( 'bulk_post' ), $sendback );
    130134                        }
     135
    131136                        break;
    132137        }
    133138
    134139        $sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status',  'post', 'bulk_edit', 'post_view'), $sendback );
    135 
    136140        wp_redirect($sendback);
    137141        exit();
    138142} elseif ( ! empty($_REQUEST['_wp_http_referer']) ) {
    $_SERVER['REQUEST_URI'] = remove_query_arg( array('locked', 'skipped', 'updated' 
    256260
    257261<?php
    258262if ( $wp_list_table->has_items() )
    259         $wp_list_table->inline_edit();
     263        if ( $wp_list_table->is_bulk_edit_form() ) {
     264                $wp_list_table->inline_edit( 'inline' );
     265        } else {
     266                $wp_list_table->inline_edit();
     267        }
    260268?>
    261269
    262270<div id="ajax-response"></div>
  • wp-admin/includes/class-wp-list-table.php

    diff --git wp-admin/includes/class-wp-list-table.php wp-admin/includes/class-wp-list-table.php
    index bd5c546..0ac1e17 100644
    class WP_List_Table { 
    714714        </tr>
    715715        </tfoot>
    716716
     717        <?php do_action( 'wp_list_table_tbody' ); ?>
     718
    717719        <tbody id="the-list"<?php if ( $singular ) echo " class='list:$singular'"; ?>>
    718720                <?php $this->display_rows_or_placeholder(); ?>
    719721        </tbody>
  • wp-admin/includes/class-wp-posts-list-table.php

    diff --git wp-admin/includes/class-wp-posts-list-table.php wp-admin/includes/class-wp-posts-list-table.php
    index e623ab5..76ee6f8 100644
    class WP_Posts_List_Table extends WP_List_Table { 
    1717         * @access protected
    1818         */
    1919        var $hierarchical_display;
     20       
     21        /**
     22         * Whether the bulk edit form should be displayed (when JavaScript is disabled)
     23         *
     24         * @since 3.1.0
     25         * @var bool
     26         * @access protected
     27         */
     28        var $bulk_edit_display = false;
    2029
    2130        /**
    2231         * Holds the number of pending comments for each post
    class WP_Posts_List_Table extends WP_List_Table { 
    8493
    8594                return current_user_can( $post_type_object->cap->edit_posts );
    8695        }
     96       
     97        function is_bulk_edit_form() {
     98                return $this->bulk_edit_display;
     99        }
     100       
     101        function display_bulk_edit_form() {
     102                $this->inline_edit( 'bulk' );
     103        }
    87104
    88105        function prepare_items() {
    89106                global $post_type_object, $post_type, $avail_post_stati, $wp_query, $per_page, $mode;
    class WP_Posts_List_Table extends WP_List_Table { 
    237254                if ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) )
    238255                        return 'delete_all';
    239256
    240                 return parent::current_action();
     257                if ( isset( $_REQUEST['bulk_post'] ) ) {
     258                        return 'edit';
     259                }
     260
     261                $action = parent::current_action();
     262
     263                if ( $action == 'edit' && ! isset( $_REQUEST['bulk_edit']) ) {                 
     264                        $this->bulk_edit_display = true;
     265                        add_action( 'wp_list_table_tbody', array( &$this, 'display_bulk_edit_form' ) );
     266                }
     267               
     268                return $action;
    241269        }
    242270
    243271        function pagination( $which ) {
    class WP_Posts_List_Table extends WP_List_Table { 
    496524                        switch ( $column_name ) {
    497525
    498526                        case 'cb':
     527                                $checked = ( isset( $_REQUEST['post'] ) && in_array( $post->ID, $_REQUEST['post'] ) ) ? ' checked="checked"' : '';
    499528                        ?>
    500                         <th scope="row" class="check-column"><?php if ( $can_edit_post ) { ?><input type="checkbox" name="post[]" value="<?php the_ID(); ?>" /><?php } ?></th>
     529                        <th scope="row" class="check-column"><?php if ( $can_edit_post ) { ?><input type="checkbox" name="post[]" value="<?php the_ID(); ?>"<?php echo $checked; ?> /><?php } ?></th>
    501530                        <?php
    502531                        break;
    503532
    class WP_Posts_List_Table extends WP_List_Table { 
    684713        }
    685714
    686715        /**
    687          * Outputs the hidden row displayed when inline editing
     716         * Outputs inline editing forms
    688717         *
    689718         * @since 3.1.0
     719         *
     720         * @param string $which Specify which form to be output. Can be one of the following: 'inline', 'bulk', or 'both'
    690721         */
    691         function inline_edit() {
     722        function inline_edit( $which = 'both' ) {
    692723                global $mode;
    693724
    694725                $screen = get_current_screen();
    class WP_Posts_List_Table extends WP_List_Table { 
    714745                $m = ( isset( $mode ) && 'excerpt' == $mode ) ? 'excerpt' : 'list';
    715746                $can_publish = current_user_can( $post_type_object->cap->publish_posts );
    716747                $core_columns = array( 'cb' => true, 'date' => true, 'title' => true, 'categories' => true, 'tags' => true, 'comments' => true, 'author' => true );
    717 
     748                $as_tbody = ( $which == 'bulk' && $this->bulk_edit_display );
     749               
     750                if ( $as_tbody && empty( $_REQUEST['post'] ) )
     751                        return;
     752               
     753                $style = ( $as_tbody ) ? '' : ' style="display:none;"';
    718754        ?>
    719755
    720         <form method="get" action=""><table style="display: none"><tbody id="inlineedit">
     756        <?php if ( ! $as_tbody ): ?>
     757        <form method="get" action=""><table<?php echo $style; ?>><?php endif; ?>
     758                <tbody id="inlineedit">
    721759                <?php
    722760                $hclass = count( $hierarchical_taxonomies ) ? 'post' : 'page';
    723761                $bulk = 0;
    724                 while ( $bulk < 2 ) { ?>
    725 
    726                 <tr id="<?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?>" class="inline-edit-row inline-edit-row-<?php echo "$hclass inline-edit-$screen->post_type ";
     762                $max = 2;
     763               
     764                if ( $which == 'bulk' )
     765                        $bulk = 1;
     766               
     767                if ( $which == 'inline' )
     768                        $max = 1;
     769               
     770                while ( $bulk < $max ) { ?>
     771
     772                <tr id="<?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?>" class="inline-editor inline-edit-row inline-edit-row-<?php echo "$hclass inline-edit-$screen->post_type ";
    727773                        echo $bulk ? "bulk-edit-row bulk-edit-row-$hclass bulk-edit-$screen->post_type" : "quick-edit-row quick-edit-row-$hclass inline-edit-$screen->post_type";
    728                 ?>" style="display: none"><td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
     774                ?>"<?php echo $style; ?>><td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
    729775
    730776                <fieldset class="inline-edit-col-left"><div class="inline-edit-col">
    731777                        <h4><?php echo $bulk ? __( 'Bulk Edit' ) : __( 'Quick Edit' ); ?></h4>
    class WP_Posts_List_Table extends WP_List_Table { 
    734780        if ( post_type_supports( $screen->post_type, 'title' ) ) :
    735781                if ( $bulk ) : ?>
    736782                        <div id="bulk-title-div">
    737                                 <div id="bulk-titles"></div>
     783                                <div id="bulk-titles">
     784                                        <?php
     785                                        if ( $as_tbody ) {
     786                                                $post_ids = $_REQUEST['post'];
     787                                               
     788                                                foreach ( $post_ids as $post_id ) {
     789                                                        $post = get_post( $post_id );
     790                                                        $title = esc_html( apply_filters( 'the_title', $post->post_title ) );
     791                                                        $delete_link = add_query_arg( array( 'post' => array_diff( $post_ids, array( $post_id ) ) ), $_SERVER['REQUEST_URI'] );
     792                                                        ?>
     793                                                                <div id="ttle<?php echo $post_id; ?>">
     794                                                                        <a id="_<?php echo $post_id; ?>" class="ntdelbutton" title="Remove From Bulk Edit" href="<?php echo $delete_link; ?>">X</a>
     795                                                                        <?php echo $title; ?>
     796                                                                        <input type="hidden" name="bulk_post[]" value="<?php echo $post_id; ?>" />
     797                                                                </div>
     798                                                        <?php
     799                                                }
     800                                        }
     801                                        ?>
     802                                </div>
    738803                        </div>
    739804
    740805        <?php else : // $bulk ?>
    class WP_Posts_List_Table extends WP_List_Table { 
    812877
    813878                </div></fieldset>
    814879
    815         <?php if ( count( $hierarchical_taxonomies ) && !$bulk ) : ?>
     880        <?php if ( count( $hierarchical_taxonomies ) && ( !$bulk || $as_tbody ) ) : ?>
    816881
    817882                <fieldset class="inline-edit-col-center inline-edit-categories"><div class="inline-edit-col">
    818883
    class WP_Posts_List_Table extends WP_List_Table { 
    831896
    832897                </div></fieldset>
    833898
    834         <?php endif; // count( $hierarchical_taxonomies ) && !$bulk ?>
     899        <?php endif; // count( $hierarchical_taxonomies ) && ( !$bulk || $as_tbody ) ?>
    835900
    836901                <fieldset class="inline-edit-col-right"><div class="inline-edit-col">
    837902
    838         <?php
    839                 if ( post_type_supports( $screen->post_type, 'author' ) && $bulk )
    840                         echo $authors_dropdown;
    841         ?>
    842 
    843903        <?php if ( $post_type_object->hierarchical ) : ?>
    844904
    845905                        <label>
    class WP_Posts_List_Table extends WP_List_Table { 
    878938                endif; // post_type_supports page-attributes
    879939        endif; // $post_type_object->hierarchical ?>
    880940
    881         <?php if ( count( $flat_taxonomies ) && !$bulk ) : ?>
     941        <?php if ( count( $flat_taxonomies ) && ( !$bulk || $as_tbody ) ) : ?>
    882942
    883943        <?php foreach ( $flat_taxonomies as $taxonomy ) : ?>
    884944
    class WP_Posts_List_Table extends WP_List_Table { 
    889949
    890950        <?php endforeach; //$flat_taxonomies as $taxonomy ?>
    891951
    892         <?php endif; // count( $flat_taxonomies ) && !$bulk  ?>
     952        <?php endif; // count( $flat_taxonomies ) && ( !$bulk || $as_tbody )  ?>
     953       
     954        <?php
     955                if ( post_type_supports( $screen->post_type, 'author' ) && $bulk )
     956                        echo $authors_dropdown;
     957        ?>
    893958
    894959        <?php if ( post_type_supports( $screen->post_type, 'comments' ) || post_type_supports( $screen->post_type, 'trackbacks' ) ) :
    895960                if ( $bulk ) : ?>
    class WP_Posts_List_Table extends WP_List_Table { 
    9921057                }
    9931058        ?>
    9941059                <p class="submit inline-edit-save">
    995                         <a accesskey="c" href="#inline-edit" title="<?php _e( 'Cancel' ); ?>" class="button-secondary cancel alignleft"><?php _e( 'Cancel' ); ?></a>
     1060                        <a accesskey="c" href="<?php echo esc_url( remove_query_arg( 'post', wp_get_referer() ) ); ?>" title="<?php _e( 'Cancel' ); ?>" class="button-secondary cancel alignleft"><?php _e( 'Cancel' ); ?></a>
    9961061                        <?php if ( ! $bulk ) {
    9971062                                wp_nonce_field( 'inlineeditnonce', '_inline_edit', false );
    9981063                                $update_text = __( 'Update' );
    class WP_Posts_List_Table extends WP_List_Table { 
    10021067                        <?php } else {
    10031068                                submit_button( __( 'Update' ), 'button-primary alignright', 'bulk_edit', false, array( 'accesskey' => 's' ) );
    10041069                        } ?>
     1070                       
    10051071                        <input type="hidden" name="post_view" value="<?php echo esc_attr( $m ); ?>" />
    10061072                        <input type="hidden" name="screen" value="<?php echo esc_attr( $screen->id ); ?>" />
    10071073                        <br class="clear" />
    class WP_Posts_List_Table extends WP_List_Table { 
    10111077                $bulk++;
    10121078                }
    10131079?>
    1014                 </tbody></table></form>
     1080                </tbody>
     1081                <?php if ( ! $as_tbody ): ?> </table></form> <?php endif; ?>
    10151082<?php
    10161083        }
    10171084}
  • wp-admin/includes/post.php

    diff --git wp-admin/includes/post.php wp-admin/includes/post.php
    index 510d59f..f595f2b 100644
    function bulk_edit_posts( $post_data = null ) { 
    255255        if ( empty($post_data) )
    256256                $post_data = &$_POST;
    257257
     258        if ( isset( $post_data['bulk_post'] ) ) {
     259                $post_data['post'] = array_unique( array_merge( $post_data['post'], $post_data['bulk_post'] ) );
     260        }
     261
    258262        if ( isset($post_data['post_type']) )
    259263                $ptype = get_post_type_object($post_data['post_type']);
    260264        else
  • 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 96b36fe..8f6fbf5 100644
     
    11(function($) {
    22inlineEditPost = {
     3        bulkEditing : false,
    34
    45        init : function(){
    56                var t = this, qeRow = $('#inline-edit'), bulkRow = $('#bulk-edit');
    inlineEditPost = { 
    4647                        inlineEditPost.edit(this);
    4748                        return false;
    4849                });
     50               
     51                $('.check-column input').live('click', function(){
     52                        var id;
     53                        if (inlineEditPost.bulkEditing) {
     54                                id = $(this).val();
     55                                if ($(this).attr('checked')) {
     56                                        inlineEditPost.addToBulk(id);
     57                                } else {
     58                                        inlineEditPost.removeFromBulk(id);
     59                                }
     60                        }
     61                });
     62               
     63                $('#bulk-titles a').live('click', function(){
     64                        var id = $(this).attr('id').substr(1);
     65                        inlineEditPost.removeFromBulk(id);
     66                });
    4967
    5068                $('#bulk-title-div').parents('fieldset').after(
    5169                        $('#inline-edit fieldset.inline-edit-categories').clone()
    inlineEditPost = { 
    84102                var t = this;
    85103                $(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el);
    86104        },
     105       
     106        addToBulk : function(id) {
     107                var theTitle, item;
     108                theTitle = $('#inline_'+id+' .post_title').text() || inlineEditL10n.notitle;
     109                item = '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
     110                $('#bulk-titles').append(item);
     111        },
     112       
     113        removeFromBulk : function(id) {
     114                $('table.widefat input[value="'+id+'"]').attr('checked', '');
     115                $('#ttle'+id).remove();
     116        },
    87117
    88118        setBulk : function(){
    89                 var te = '', type = this.type, tax, c = true;
     119                var type = this.type, tax, c = true;
    90120                this.revert();
     121                this.bulkEditing = true;
    91122
    92123                $('#bulk-edit td').attr('colspan', $('.widefat:first thead th:visible').length);
    93124                $('table.widefat tbody').prepend( $('#bulk-edit') );
    inlineEditPost = { 
    96127                $('tbody th.check-column input[type="checkbox"]').each(function(i){
    97128                        if ( $(this).attr('checked') ) {
    98129                                c = false;
    99                                 var id = $(this).val(), theTitle;
    100                                 theTitle = $('#inline_'+id+' .post_title').text() || inlineEditL10n.notitle;
    101                                 te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
     130                                var id = $(this).val();
     131                                inlineEditPost.addToBulk(id);
    102132                        }
    103133                });
    104134
    105135                if ( c )
    106136                        return this.revert();
    107137
    108                 $('#bulk-titles').html(te);
    109                 $('#bulk-titles a').click(function(){
    110                         var id = $(this).attr('id').substr(1);
    111 
    112                         $('table.widefat input[value="'+id+'"]').attr('checked', '');
    113                         $('#ttle'+id).remove();
    114                 });
     138//              $('#bulk-titles').html(te);
    115139
    116140                // enable autocomplete for tags
    117141                if ( 'post' == type ) {
    inlineEditPost = { 
    268292                                $('table.widefat #bulk-edit').removeClass('inline-editor').hide();
    269293                                $('#bulk-titles').html('');
    270294                                $('#inlineedit').append( $('#bulk-edit') );
     295                                this.bulkEditing = false;
    271296                        } else {
    272297                                $('#'+id).remove();
    273298                                id = id.substr( id.lastIndexOf('-') + 1 );
  • wp-admin/post.php

    diff --git wp-admin/post.php wp-admin/post.php
    index 0dae46d..3bfcb1a 100644
    case 'trash': 
    221221
    222222        if ( ! wp_trash_post($post_id) )
    223223                wp_die( __('Error in moving to Trash.') );
     224        $sendback = remove_query_arg( 'updated', $sendback );
    224225
    225226        wp_redirect( add_query_arg( array('trashed' => 1, 'ids' => $post_id), $sendback ) );
    226227        exit();