WordPress.org

Make WordPress Core

Changeset 9473


Ignore:
Timestamp:
11/02/08 13:56:32 (5 years ago)
Author:
azaozz
Message:

Preview fixes: ensure autosave is run at least once on new posts before preview, properly show previews for pending and scheduled posts.

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/post.php

    r9469 r9473  
    10031003function post_preview() { 
    10041004 
    1005     $_POST['post_category'] = explode(",", $_POST['catslist']); 
    1006     $_POST['tags_input'] = explode(",", $_POST['tags_input']); 
    1007     if($_POST['post_type'] == 'page' || empty($_POST['post_category'])) 
     1005    $post_ID = (int) $_POST['post_ID']; 
     1006    if ( $post_ID < 1 ) 
     1007        wp_die( __('Preview not available. Please save as draft first.') ); 
     1008     
     1009    if ( isset($_POST['catslist']) ) 
     1010        $_POST['post_category'] = explode(",", $_POST['catslist']); 
     1011     
     1012    if ( isset($_POST['tags_input']) ) 
     1013        $_POST['tags_input'] = explode(",", $_POST['tags_input']); 
     1014     
     1015    if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) ) 
    10081016        unset($_POST['post_category']); 
    10091017 
    1010     if($_POST['post_ID'] < 0) { 
    1011         $_POST['post_status'] = 'draft'; 
    1012         $_POST['temp_ID'] = $_POST['post_ID']; 
    1013         $id = wp_write_post(); 
     1018    $_POST['ID'] = $post_ID; 
     1019    $post = get_post($post_ID); 
     1020 
     1021    if ( 'page' == $post->post_type ) { 
     1022        if ( !current_user_can('edit_page', $post_ID) ) 
     1023            wp_die(__('You are not allowed to edit this page.')); 
    10141024    } else { 
    1015         $post_ID = (int) $_POST['post_ID']; 
    1016         $_POST['ID'] = $post_ID; 
    1017         $post = get_post($post_ID); 
    1018  
    1019         if ( 'page' == $post->post_type ) { 
    1020             if ( !current_user_can('edit_page', $post_ID) ) 
    1021                 die(__('You are not allowed to edit this page.')); 
    1022         } else { 
    1023             if ( !current_user_can('edit_post', $post_ID) ) 
    1024                 die(__('You are not allowed to edit this post.')); 
    1025         } 
    1026  
    1027         if ( 'draft' == $post->post_status ) { 
    1028             $id = edit_post(); 
    1029         } else { // Non drafts are not overwritten.  The autosave is stored in a special post revision. 
    1030             wp_create_post_autosave( $post->ID ); 
     1025        if ( !current_user_can('edit_post', $post_ID) ) 
     1026            wp_die(__('You are not allowed to edit this post.')); 
     1027    } 
     1028 
     1029    if ( 'draft' == $post->post_status ) { 
     1030        $id = edit_post(); 
     1031    } else { // Non drafts are not overwritten.  The autosave is stored in a special post revision. 
     1032        $id = wp_create_post_autosave( $post->ID ); 
     1033        if ( ! is_wp_error($id) ) 
    10311034            $id = $post->ID; 
    1032         } 
    10331035    } 
    10341036 
  • trunk/wp-admin/js/page.js

    r9451 r9473  
    109109    // preview 
    110110    $('#post-preview').click(function(e){ 
     111        if ( 1 > $('#post_ID').val() && autosaveFirst ) { 
     112            autosaveDelayPreview = true; 
     113            autosave(); 
     114            return false; 
     115        } 
     116 
    111117        $('input#wp-preview').val('dopreview'); 
    112118        $('form#post').attr('target', 'wp-preview').submit().attr('target', ''); 
    113119        $('input#wp-preview').val(''); 
     120        return false; 
    114121    }); 
    115122}); 
  • trunk/wp-admin/js/post.js

    r9451 r9473  
    264264    // preview 
    265265    $('#post-preview').click(function(e){ 
     266        if ( 1 > $('#post_ID').val() && autosaveFirst ) { 
     267            autosaveDelayPreview = true; 
     268            autosave(); 
     269            return false; 
     270        } 
     271 
    266272        $('input#wp-preview').val('dopreview'); 
    267273        $('form#post').attr('target', 'wp-preview').submit().attr('target', ''); 
    268274        $('input#wp-preview').val(''); 
     275        return false; 
    269276    }); 
    270277 
  • trunk/wp-admin/page.php

    r9468 r9473  
    177177    check_admin_referer( 'autosave', 'autosavenonce' ); 
    178178 
    179     if ( empty($_POST['post_title']) ) 
    180         wp_die( __('Please enter a title before previewing this page.') ); 
    181  
    182179    $id = post_preview(); 
    183180 
     
    185182        wp_die( $id->get_error_message() ); 
    186183 
    187     if ( $_POST['post_status'] == 'publish'  ) { 
     184    if ( $_POST['post_status'] == 'draft'  ) { 
     185        $url = get_option('home') . '/?page_id=' . $id . '&preview=true'; 
     186    } else { 
    188187        $nonce = wp_create_nonce('post_preview_' . $id); 
    189         $url = site_url('?wp_preview=' . $id . '&preview_nonce=' . $nonce); 
    190     } else { 
    191         $url = site_url('?page_id=' . $id . '&preview=true'); 
     188        $url = get_option('home') . '/?wp_preview=' . $id . '&preview_nonce=' . $nonce; 
    192189    } 
    193190 
  • trunk/wp-admin/post.php

    r9453 r9473  
    224224    check_admin_referer( 'autosave', 'autosavenonce' ); 
    225225 
    226     if ( empty($_POST['post_title']) ) 
    227         wp_die( __('Please enter a title before previewing this post.') ); 
    228  
    229226    $id = post_preview(); 
    230227 
     
    232229        wp_die( $id->get_error_message() ); 
    233230 
    234     if ( $_POST['post_status'] == 'publish'  ) { 
     231    if ( $_POST['post_status'] == 'draft'  ) { 
     232        $url = get_option('home') . '/?p=' . $id . '&preview=true'; 
     233    } else { 
    235234        $nonce = wp_create_nonce('post_preview_' . $id); 
    236235        $url = get_option('home') . '/?wp_preview=' . $id . '&preview_nonce=' . $nonce; 
    237     } else { 
    238         $url = get_option('home') . '/?p=' . $id . '&preview=true'; 
    239236    } 
    240237 
  • trunk/wp-includes/js/autosave.js

    r8691 r9473  
    22var autosavePeriodical; 
    33var autosaveOldMessage = ''; 
    4 var autosaveDelayURL = null; 
    5 var previewwin; 
     4var autosaveDelayPreview = false; 
     5var autosaveFirst = true; 
    66 
    77jQuery(function($) { 
     
    1111    //Disable autosave after the form has been submitted 
    1212    $("#post").submit(function() { $.cancel(autosavePeriodical); }); 
    13  
    14     // Autosave when the preview button is clicked. 
    15     $('#previewview a').click(function(e) { 
    16         autosave(); 
    17         autosaveDelayURL = this.href; 
    18         previewwin = window.open('','_blank'); 
    19  
    20         e.preventDefault(); 
    21         return false; 
    22     }); 
    2313}); 
    2414 
     
    4232        } 
    4333 
    44         // if no errors: add preview link and slug UI 
     34        // if no errors: add slug UI 
    4535        if ( !res.errors ) { 
    4636            var postID = parseInt( res.responses[0].id ); 
    4737            if ( !isNaN(postID) && postID > 0 ) { 
    48                 autosave_update_preview_link(postID); 
    4938                autosave_update_slug(postID); 
    5039            } 
     
    7059        var postID = parseInt( res.responses[0].id ); 
    7160        autosave_update_post_ID( postID ); // disabled form buttons are re-enabled here 
    72         if ( tempID < 0 && postID > 0) // update media buttons 
     61        if ( tempID < 0 && postID > 0 ) // update media buttons 
    7362            jQuery('#media-buttons a').each(function(){ 
    7463                this.href = this.href.replace(tempID, postID); 
    7564            }); 
     65        // activate preview 
     66        autosaveFirst = false; 
     67        if ( autosaveDelayPreview ) 
     68            jQuery('#post-preview').click(); 
    7669    } else { 
    7770        autosave_enable_buttons(); // re-enable disabled form buttons 
     
    9891} 
    9992 
    100 function autosave_update_preview_link(post_id) { 
    101     // Add preview button if not already there 
    102     if ( !jQuery('#previewview > *').size() ) { 
    103         var post_type = jQuery('#post_type').val(); 
    104         var previewText = 'page' == post_type ? autosaveL10n.previewPageText : autosaveL10n.previewPostText; 
    105         jQuery.post(autosaveL10n.requestFile, { 
    106             action: "get-permalink", 
    107             post_id: post_id, 
    108             getpermalinknonce: jQuery('#getpermalinknonce').val() 
    109         }, function(permalink) { 
    110             jQuery('#previewview').html('<a class="button" target="_blank" href="'+permalink+'" tabindex="4">'+previewText+'</a>'); 
    111  
    112             // Autosave when the preview button is clicked. 
    113             jQuery('#previewview a').click(function(e) { 
    114                 autosave(); 
    115                 autosaveDelayURL = this.href; 
    116                 previewwin = window.open('','_blank'); 
    117  
    118                 e.preventDefault(); 
    119                 return false; 
    120             }); 
    121         }); 
    122     } 
    123 } 
    124  
    12593function autosave_update_slug(post_id) { 
    12694    // create slug area only if not already there 
     
    148116function autosave_enable_buttons() { 
    149117    jQuery("#submitpost :button:disabled, #submitpost :submit:disabled").attr('disabled', ''); 
    150     if ( autosaveDelayURL ) { 
    151         previewwin.location = autosaveDelayURL; 
    152         autosaveDelayURL = null; 
    153     } 
    154118} 
    155119 
     
    224188    if(parseInt(post_data["post_ID"]) < 1) { 
    225189        post_data["temp_ID"] = post_data["post_ID"]; 
    226         var successCallback = autosave_saved_new;; // new post 
     190        var successCallback = autosave_saved_new; // new post 
    227191    } else { 
    228192        var successCallback = autosave_saved; // pre-existing post 
  • trunk/wp-includes/script-loader.php

    r9465 r9473  
    7676    ) ); 
    7777 
    78     $scripts->add( 'autosave', '/wp-includes/js/autosave.js', array('schedule', 'wp-ajax-response'), '20080701' ); 
     78    $scripts->add( 'autosave', '/wp-includes/js/autosave.js', array('schedule', 'wp-ajax-response'), '20081102' ); 
    7979 
    8080    $scripts->add( 'wp-lists', '/wp-includes/js/wp-lists.js', array('wp-ajax-response'), '20080729' ); 
     
    177177            'cancel' => __('Cancel'), 
    178178        ) ); 
    179         $scripts->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug', 'settings-box'), '20081031' ); 
     179        $scripts->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug', 'settings-box'), '20081102' ); 
    180180        $scripts->localize( 'post', 'postL10n', array( 
    181181            'tagsUsed' =>  __('Tags used on this post:'), 
     
    196196            'saveDraft' => __('Save Draft') 
    197197        ) ); 
    198         $scripts->add( 'page', '/wp-admin/js/page.js', array('jquery', 'slug', 'postbox', 'settings-box'), '20081031' ); 
     198        $scripts->add( 'page', '/wp-admin/js/page.js', array('jquery', 'slug', 'postbox', 'settings-box'), '20081102' ); 
    199199        $scripts->localize( 'page', 'postL10n', array( 
    200200            'cancel' => __('Cancel'), 
Note: See TracChangeset for help on using the changeset viewer.