Make WordPress Core

Changeset 56022


Ignore:
Timestamp:
06/25/2023 03:18:12 PM (8 months ago)
Author:
joedolson
Message:

Quick/Bulk Edit: Don't set publish date when editing drafts.

Ensure that quick edit does not define a publish date if the post status is one of 'draft', 'pending', or 'auto-draft'.

Props uxtremist, SergeyBiryukov, Denis-de-Bernardy, jane, rfischmann, mista-flo, rutviksavsani, oglekler, joedolson.
Fixes #19907.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/js/_enqueues/admin/inline-edit-post.js

    r55560 r56022  
    450450
    451451        fields = $('#edit-'+id).find(':input').serialize();
     452
     453        var status = $(':input[name="_status"]').val();
     454
     455        if ( [ 'draft', 'pending', 'auto-draft' ].includes( status ) ) {
     456            params.edit_date = 'false';
     457        }
     458
    452459        params = fields + '&' + $.param(params);
    453460
  • trunk/src/wp-admin/includes/post.php

    r55988 r56022  
    168168            break;
    169169        }
     170    }
     171
     172    if ( isset( $post_data['edit_date'] ) && 'false' === $post_data['edit_date'] ) {
     173        $post_data['edit_date'] = false;
    170174    }
    171175
  • trunk/tests/phpunit/tests/ajax/wpAjaxInlineSave.php

    r54722 r56022  
    8888        $this->assertSameSets( array( $t2 ), wp_list_pluck( $post_terms_2, 'term_id' ) );
    8989    }
     90
     91    /**
     92     * When updating a draft in quick edit mode, it should not set the publish date of the post when this one will be published.
     93     *
     94     * @ticket 19907
     95     *
     96     * @covers ::edit_post
     97     */
     98    public function test_quick_edit_draft_should_not_set_publish_date() {
     99        // Become an administrator.
     100        $this->_setRole( 'administrator' );
     101
     102        $user = get_current_user_id();
     103
     104        $post = self::factory()->post->create_and_get(
     105            array(
     106                'post_status' => 'draft',
     107                'post_author' => $user,
     108            )
     109        );
     110
     111        $this->assertSame( 'draft', $post->post_status );
     112
     113        $this->assertEquals( '0000-00-00 00:00:00', $post->post_date_gmt );
     114
     115        // Set up a request.
     116        $_POST['_inline_edit'] = wp_create_nonce( 'inlineeditnonce' );
     117        $_POST['post_ID']      = $post->ID;
     118        $_POST['post_type']    = 'post';
     119        $_POST['content']      = 'content test';
     120        $_POST['excerpt']      = 'excerpt test';
     121        $_POST['_status']      = $post->post_status;
     122        $_POST['post_status']  = $post->post_status;
     123        $_POST['post_author']  = $user;
     124        $_POST['screen']       = 'edit-post';
     125        $_POST['post_view']    = 'list';
     126        $_POST['edit_date']    = 'false';
     127        $_POST['mm']           = '09';
     128        $_POST['jj']           = 11;
     129        $_POST['aa']           = 2020;
     130        $_POST['hh']           = 19;
     131        $_POST['mn']           = 20;
     132        $_POST['ss']           = 11;
     133
     134        // Make the request.
     135        try {
     136            $this->_handleAjax( 'inline-save' );
     137        } catch ( WPAjaxDieContinueException $e ) {
     138            unset( $e );
     139        }
     140
     141        $post = get_post( $post->ID );
     142
     143        $this->assertEquals( '0000-00-00 00:00:00', $post->post_date_gmt );
     144    }
    90145}
Note: See TracChangeset for help on using the changeset viewer.