Ticket #24131: 24131.patch
| File 24131.patch, 3.8 KB (added by , 13 years ago) |
|---|
-
wp-admin/includes/post.php
1361 1361 } 1362 1362 1363 1363 $user_id = get_current_user_id(); 1364 $query_args = array( 'preview' => 'true' ); 1365 1364 1366 if ( 'draft' == $post->post_status && $user_id == $post->post_author ) { 1365 1367 $id = edit_post(); 1366 1368 } else { // Non drafts are not overwritten. The autosave is stored in a special post revision. 1367 1369 $id = wp_create_post_autosave( $post->ID ); 1368 if ( ! is_wp_error($id) ) 1370 if ( ! is_wp_error($id) ) { 1369 1371 $id = $post->ID; 1372 $query_args['latest_changes'] = 'true'; 1373 } 1370 1374 } 1371 1375 1372 1376 if ( is_wp_error($id) ) 1373 1377 wp_die( $id->get_error_message() ); 1374 1378 1375 if ( $_POST['post_status'] == 'draft' && $user_id == $post->post_author ) { 1376 $url = add_query_arg( 'preview', 'true', get_permalink($id) ); 1377 } else { 1378 $nonce = wp_create_nonce('post_preview_' . $id); 1379 $url = add_query_arg( array( 'preview' => 'true', 'preview_id' => $id, 'preview_nonce' => $nonce ), get_permalink($id) ); 1380 } 1381 1382 return apply_filters( 'preview_post_link', $url ); 1379 return apply_filters( 'preview_post_link', add_query_arg( $query_args, get_permalink($id) ) ); 1383 1380 } -
wp-includes/default-filters.php
275 275 add_action( 'template_redirect', 'wp_old_slug_redirect' ); 276 276 add_action( 'post_updated', 'wp_check_for_changed_slugs', 12, 3 ); 277 277 278 // Nonce check forPost Previews279 add_ action( 'init', '_show_post_preview');278 // Post Previews 279 add_filter('the_preview', '_set_preview'); 280 280 281 281 // Timezone 282 282 add_filter( 'pre_option_gmt_offset','wp_timezone_override_offset' ); -
wp-includes/revision.php
496 496 return (int) apply_filters( 'wp_revisions_to_keep', $num, $post ); 497 497 } 498 498 499 function _set_preview($post) { 499 function _set_preview( $post ) { 500 if ( isset($_GET['latest_changes']) ) { 501 if ( ! is_object($post) ) 502 return $post; 500 503 501 if ( ! is_object($post) ) 502 return $post; 504 $preview = wp_get_post_autosave($post->ID); 503 505 504 $preview = wp_get_post_autosave($post->ID); 506 if ( ! is_object($preview) ) 507 return $post; 505 508 506 if ( ! is_object($preview) ) 507 return $post; 509 // Show the latest changes only to the author when post_status != publish 510 if ( $post->post_status == 'publish' || $preview->post_author == get_current_user_id() ) { 511 $preview = sanitize_post($preview); 508 512 509 $preview = sanitize_post($preview); 513 $post->post_content = $preview->post_content; 514 $post->post_title = $preview->post_title; 515 $post->post_excerpt = $preview->post_excerpt; 510 516 511 $post->post_content = $preview->post_content; 512 $post->post_title = $preview->post_title; 513 $post->post_excerpt = $preview->post_excerpt; 517 add_filter( 'get_post_metadata', '_wp_preview_meta_filter', 10, 4 ); 518 add_filter( 'get_the_terms', '_wp_preview_terms_filter', 10, 3 ); 519 } 520 } 514 521 515 add_filter( 'get_post_metadata', '_wp_preview_meta_filter', 10, 4 );516 add_filter( 'get_the_terms', '_wp_preview_terms_filter', 10, 3 );517 518 522 return $post; 519 523 } 520 524 521 function _show_post_preview() {522 523 if ( isset($_GET['preview_id']) && isset($_GET['preview_nonce']) ) {524 $id = (int) $_GET['preview_id'];525 526 if ( false == wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $id ) )527 wp_die( __('You do not have permission to preview drafts.') );528 529 add_filter('the_preview', '_set_preview');530 }531 }532 533 525 /** 534 526 * Filters post meta retrieval to get values from the actual autosave post, 535 527 * and not its parent. Filters revisioned meta keys only.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)