Make WordPress Core

Ticket #8368: 8368.patch

File 8368.patch, 6.8 KB (added by SergeyBiryukov, 13 years ago)
  • wp-admin/css/wp-admin.dev.css

     
    32063206        border-style: solid;
    32073207}
    32083208
     3209#timestampdiv input[type=radio] {
     3210        margin-right: 10px;
     3211}
    32093212
     3213
    32103214/*------------------------------------------------------------------------------
    32113215  11.1 - Custom Fields
    32123216------------------------------------------------------------------------------*/
  • wp-admin/includes/post.php

     
    101101        if (!isset( $post_data['ping_status'] ))
    102102                $post_data['ping_status'] = 'closed';
    103103
    104         foreach ( array('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) {
    105                 if ( !empty( $post_data['hidden_' . $timeunit] ) && $post_data['hidden_' . $timeunit] != $post_data[$timeunit] ) {
    106                         $post_data['edit_date'] = '1';
    107                         break;
     104        // publish_immediately radio box is only displayed when editing scheduled post
     105        // so it's safe to assume that when we encounter this value, the new status is 'publish'
     106        if ( ! empty( $post_data['publish_immediately'] ) ) {
     107                $post_data['post_status'] = 'publish';
     108
     109                // cancel the scheduled date
     110                $post_data['post_date'] = current_time( 'mysql' );
     111                $post_data['post_date_gmt'] = '';
     112        } else {
     113                foreach ( array('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) {
     114                        if ( !empty( $post_data['hidden_' . $timeunit] ) && $post_data['hidden_' . $timeunit] != $post_data[$timeunit] ) {
     115                                $post_data['edit_date'] = '1';
     116                                break;
     117                        }
    108118                }
    109119        }
    110120
  • wp-admin/includes/template.php

     
    596596
    597597        $time_adj = current_time('timestamp');
    598598        $post_date = ($for_post) ? $post->post_date : $comment->comment_date;
     599        $radio_boxes = ( $post->post_status == 'future' ); // only display radio boxes if post is scheduled
    599600        $jj = ($edit) ? mysql2date( 'd', $post_date, false ) : gmdate( 'd', $time_adj );
    600601        $mm = ($edit) ? mysql2date( 'm', $post_date, false ) : gmdate( 'm', $time_adj );
    601602        $aa = ($edit) ? mysql2date( 'Y', $post_date, false ) : gmdate( 'Y', $time_adj );
     
    624625        $minute = '<input type="text" ' . ( $multi ? '' : 'id="mn" ' ) . 'name="mn" value="' . $mn . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';
    625626
    626627        echo '<div class="timestamp-wrap">';
     628
     629        if ( $radio_boxes ) {
     630                echo '<label for="publish-immediately"><input type="radio" name="publish_immediately" value="1" id="publish-immediately" />' . __( 'Immediately' ) . '</label><br />';
     631                echo '<input type="radio" id="publish-future" name="publish_immediately" value="0" checked="checked" />';
     632        }
     633
    627634        /* translators: 1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input */
    628635        printf(__('%1$s%2$s, %3$s @ %4$s : %5$s'), $month, $day, $year, $hour, $minute);
    629636
  • wp-admin/js/post.dev.js

     
    258258                });
    259259        }
    260260
     261        $('#aa, #mm, #jj, #hh, #mn').change( function() {
     262                $('#publish-future').attr('checked', true);
     263                updateText();
     264        });
     265
     266        $('#timestampdiv input[type=radio]').change(function(){
     267                updateText();
     268        });
     269
    261270        // categories
    262271        $('.categorydiv').each( function(){
    263272                var this_id = $(this).attr('id'), noSyncChecks = false, syncChecks, catAddAfter, taxonomyParts, taxonomy, settingName;
     
    383392                                $('.timestamp-wrap', '#timestampdiv').removeClass('form-invalid');
    384393                        }
    385394
    386                         if ( attemptedDate > currentDate && $('#original_post_status').val() != 'future' ) {
     395                        if ( ( attemptedDate <= currentDate && $('#original_post_status').val() != 'publish' ) || $('#publish-immediately').is(':checked') ) {
     396                                publishOn = postL10n.publishOn;
     397                                $('#publish').val( postL10n.publish );
     398                        } else if ( attemptedDate > currentDate && attemptedDate.toUTCString() != originalDate.toUTCString() ) {
    387399                                publishOn = postL10n.publishOnFuture;
    388400                                $('#publish').val( postL10n.schedule );
    389                         } else if ( attemptedDate <= currentDate && $('#original_post_status').val() != 'publish' ) {
    390                                 publishOn = postL10n.publishOn;
    391                                 $('#publish').val( postL10n.publish );
    392401                        } else {
    393402                                publishOn = postL10n.publishOnPast;
    394403                                $('#publish').val( postL10n.update );
    395404                        }
    396                         if ( originalDate.toUTCString() == attemptedDate.toUTCString() ) { //hack
     405                        if ( $('#publish-immediately').is(':checked') ) {
     406                                $('#timestamp').html(postL10n.publishImmediately);
     407                        } else if ( originalDate.toUTCString() == attemptedDate.toUTCString() ) { //hack
    397408                                $('#timestamp').html(stamp);
    398409                        } else {
    399410                                $('#timestamp').html(
     
    404415                                        hh + ':' +
    405416                                        mn + '</b> '
    406417                                );
     418                                $('#publish-future').attr('checked', true);
    407419                        }
    408420
    409421                        if ( $('input:radio:checked', '#post-visibility-select').val() == 'private' ) {
     
    502514                        $('#hh').val($('#hidden_hh').val());
    503515                        $('#mn').val($('#hidden_mn').val());
    504516                        $('#timestampdiv').siblings('a.edit-timestamp').show();
     517                        $('#publish-future').attr('checked', true);
    505518                        updateText();
    506519                        return false;
    507520                });
  • wp-includes/post.php

     
    26802680                $post_cats = $post['post_category'];
    26812681
    26822682        // Drafts shouldn't be assigned a date unless explicitly done so by the user
    2683         if ( isset( $post['post_status'] ) && in_array($post['post_status'], array('draft', 'pending', 'auto-draft')) && empty($postarr['edit_date']) &&
    2684                          ('0000-00-00 00:00:00' == $post['post_date_gmt']) )
    2685                 $clear_date = true;
    2686         else
    2687                 $clear_date = false;
     2683        $clear_date = isset( $post['post_status'] ) && in_array( $post['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) && empty( $postarr['edit_date'] )
     2684                                        && ( '0000-00-00 00:00:00' == $post['post_date_gmt'] );
    26882685
    26892686        // Merge old and new fields with new fields overwriting old ones.
    26902687        $postarr = array_merge($post, $postarr);
  • wp-includes/script-loader.php

     
    300300                        'publicSticky' => __('Public, Sticky'),
    301301                        'password' => __('Password Protected'),
    302302                        'privatelyPublished' => __('Privately Published'),
    303                         'published' => __('Published')
     303                        'published' => __('Published'),
     304                        'publishImmediately' => __('Publish <b>immediately</b>'),
    304305                ) );
    305306
    306307                $scripts->add( 'link', "/wp-admin/js/link$suffix.js", array('wp-lists', 'postbox'), '20110524', 1 );