Make WordPress Core

Changeset 9451


Ignore:
Timestamp:
10/31/2008 10:47:07 PM (18 years ago)
Author:
azaozz
Message:

Preview for both drafts and published posts/pages

Location:
trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/edit-form-advanced.php

    r9448 r9451  
    171171<?php } ?>
    172172
     173<noscript>
    173174<?php if ( 'publish' == $post->post_status ) { ?>
    174175<a class="preview button" href="<?php echo clean_url(get_permalink($post->ID)); ?>" target="_blank" tabindex="4"><?php _e('View Post'); ?></a>
     
    176177<a class="preview button" href="<?php echo clean_url(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID)))); ?>" target="_blank" tabindex="4"><?php _e('Preview'); ?></a>
    177178<?php } ?>
     179</noscript>
     180
     181<a class="preview button hide-if-no-js" href="#" id="post-preview" tabindex="4"><?php _e('Preview'); ?></a>
     182<input type="hidden" name="wp-preview" id="wp-preview" value="" />
     183
    178184</div>
    179185<div class="clear"></div>
  • trunk/wp-admin/edit-page-form.php

    r9450 r9451  
    161161<?php } ?>
    162162
     163<noscript>
    163164<?php if ( 'publish' == $post->post_status ) { ?>
    164165<a class="preview button" href="<?php echo clean_url(get_permalink($post->ID)); ?>" target="_blank" tabindex="4"><?php _e('View Post'); ?></a>
     
    166167<a class="preview button" href="<?php echo clean_url(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID)))); ?>" target="_blank" tabindex="4"><?php _e('Preview'); ?></a>
    167168<?php } ?>
     169</noscript>
     170
     171<a class="preview button hide-if-no-js" href="#" id="post-preview" tabindex="4"><?php _e('Preview'); ?></a>
     172<input type="hidden" name="wp-preview" id="wp-preview" value="" />
     173
    168174</div>
    169175<div class="clear"></div>
  • trunk/wp-admin/includes/post.php

    r9446 r9451  
    988988
    989989/**
    990  * wp_tiny_mce() - adds the TinyMCE editor used on the Write and Edit screens.
     990 * Save draft or manually autosave for showing preview.
     991 *
     992 * @package WordPress
     993 * @since 2.7
     994 *
     995 * @uses wp_write_post()
     996 * @uses edit_post()
     997 * @uses get_post()
     998 * @uses current_user_can()
     999 * @uses wp_create_post_autosave()
     1000 *
     1001 * @return int|object the saved post id or wp_error object
     1002 */
     1003function post_preview() {
     1004
     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']))
     1008                unset($_POST['post_category']);
     1009
     1010        if($_POST['post_ID'] < 0) {
     1011                $_POST['post_status'] = 'draft';
     1012                $_POST['temp_ID'] = $_POST['post_ID'];
     1013                $id = wp_write_post();
     1014        } 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 );
     1031                        $id = $post->ID;
     1032                }
     1033        }
     1034
     1035        return $id;
     1036}
     1037
     1038/**
     1039 * Adds the TinyMCE editor used on the Write and Edit screens.
    9911040 *
    9921041 * Has option to output a trimmed down version used in Press This.
  • trunk/wp-admin/js/editor.js

    r9384 r9451  
    2525        saveCallback : function(el, content, body) {
    2626
    27                 this.I(el).style.color = '#fff';
    2827                if ( tinyMCE.activeEditor.isHidden() )
    2928                        content = this.I(el).value;
  • trunk/wp-admin/js/page.js

    r9429 r9451  
    106106                return false;
    107107        });
     108       
     109        // preview
     110        $('#post-preview').click(function(e){
     111                $('input#wp-preview').val('dopreview');
     112                $('form#post').attr('target', 'wp-preview').submit().attr('target', '');
     113                $('input#wp-preview').val('');
     114        });
    108115});
  • trunk/wp-admin/js/post.js

    r9429 r9451  
    261261        }
    262262        });
     263
     264        // preview
     265        $('#post-preview').click(function(e){
     266                $('input#wp-preview').val('dopreview');
     267                $('form#post').attr('target', 'wp-preview').submit().attr('target', '');
     268                $('input#wp-preview').val('');
     269        });
     270
    263271});
    264272
     
    315323                        return false;
    316324                }
    317         }
    318 
     325        };
     326       
    319327})(jQuery);
    320328
  • trunk/wp-admin/page.php

    r9032 r9451  
    6868}
    6969
    70 if (isset($_POST['deletepost'])) {
    71 $action = "delete";
    72 }
     70if (isset($_POST['deletepost']))
     71        $action = "delete";
     72elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] )
     73        $action = 'preview';
    7374
    7475switch($action) {
     
    173174        break;
    174175
     176case 'preview':
     177        check_admin_referer( 'autosave', 'autosavenonce' );
     178
     179        if ( empty($_POST['post_title']) )
     180                wp_die( __('Please enter a title before previewing this page.') );
     181
     182        $id = post_preview();
     183
     184        if ( is_wp_error($id) )
     185                wp_die( $id->get_error_message() );
     186
     187        if ( $_POST['post_status'] == 'publish'  ) {
     188                $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');
     192        }
     193
     194        wp_redirect($url);
     195        exit();
     196        break;
     197
    175198default:
    176199        wp_redirect('edit-pages.php');
  • trunk/wp-admin/post.php

    r9433 r9451  
    8181if ( isset( $_POST['deletepost'] ) )
    8282        $action = 'delete';
     83elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] )
     84        $action = 'preview';
    8385
    8486switch($action) {
     
    219221        break;
    220222
     223case 'preview':
     224        check_admin_referer( 'autosave', 'autosavenonce' );
     225
     226        if ( empty($_POST['post_title']) )
     227                wp_die( __('Please enter a title before previewing this post.') );
     228
     229        $id = post_preview();
     230
     231        if ( is_wp_error($id) )
     232                wp_die( $id->get_error_message() );
     233
     234        if ( $_POST['post_status'] == 'publish'  ) {
     235                $nonce = wp_create_nonce('post_preview_' . $id);
     236                $url = site_url('?wp_preview=' . $id . '&preview_nonce=' . $nonce);
     237        } else {
     238                $url = site_url('?p=' . $id . '&preview=true');
     239        }
     240
     241        wp_redirect($url);
     242        exit();
     243        break;
     244
    221245default:
    222246        wp_redirect('edit.php');
  • trunk/wp-includes/default-filters.php

    r9015 r9451  
    198198add_action('edit_form_advanced', 'wp_remember_old_slug');
    199199add_action('init', 'wp_user_settings', 9);
     200add_action('init', '_show_post_preview');
    200201
    201202?>
  • trunk/wp-includes/post.php

    r9357 r9451  
    35523552        return $revisions;
    35533553}
     3554
     3555function _show_post_preview() {
     3556
     3557        if ( isset($_GET['wp_preview']) && isset($_GET['preview_nonce']) ) {
     3558                $post_ID = (int) $_GET['wp_preview'];
     3559
     3560                if ( false == wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $post_ID ) )
     3561                        wp_die( __('You do not have permission to preview drafts.') );
     3562
     3563                $q = array(
     3564                        'name' => "{$post_ID}-autosave",
     3565                        'post_parent' => $post_ID,
     3566                        'post_type' => 'revision',
     3567                        'post_status' => 'inherit'
     3568                );
     3569
     3570                add_action( 'parse_query', '_wp_get_post_autosave_hack' );
     3571                query_posts($q);
     3572                remove_action( 'parse_query', '_wp_get_post_autosave_hack' );
     3573
     3574        }
     3575}
  • trunk/wp-includes/script-loader.php

    r9440 r9451  
    177177                        'cancel' => __('Cancel'),
    178178                ) );
    179                 $scripts->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug', 'settings-box'), '20081018' );
     179                $scripts->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug', 'settings-box'), '20081031' );
    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'), '20080925' );
     198                $scripts->add( 'page', '/wp-admin/js/page.js', array('jquery', 'slug', 'postbox', 'settings-box'), '20081031' );
    199199                $scripts->localize( 'page', 'postL10n', array(
    200200                        'cancel' => __('Cancel'),
Note: See TracChangeset for help on using the changeset viewer.