2008-04-18 19:38:21 -04:00
< ? php
2008-08-16 03:27:34 -04:00
/**
* Revisions administration panel .
*
* @ package WordPress
* @ subpackage Administration
*/
2008-04-18 19:38:21 -04:00
2008-08-16 03:27:34 -04:00
/** WordPress Administration Bootstrap */
2010-04-18 02:14:45 -04:00
require_once ( './admin.php' );
2013-02-28 10:14:34 -05:00
wp_reset_vars ( array ( 'revision' , 'action' ) );
2010-01-18 06:44:51 -05:00
2013-03-07 10:32:26 -05:00
$revision_id = absint ( $revision );
2010-01-18 06:44:51 -05:00
$redirect = 'edit.php' ;
2008-04-18 19:38:21 -04:00
2008-05-08 13:25:07 -04:00
switch ( $action ) :
case 'restore' :
2013-03-07 10:32:26 -05:00
if ( ! $revision = wp_get_post_revision ( $revision_id ) )
2008-05-08 13:25:07 -04:00
break ;
2013-03-07 10:32:26 -05:00
if ( ! current_user_can ( 'edit_post' , $revision -> post_parent ) )
2008-05-08 13:25:07 -04:00
break ;
2013-03-07 10:32:26 -05:00
if ( ! $post = get_post ( $revision -> post_parent ) )
2008-05-08 13:25:07 -04:00
break ;
2008-04-18 19:38:21 -04:00
2010-05-19 14:36:52 -04:00
// Revisions disabled and we're not looking at an autosave
2013-03-07 10:32:26 -05:00
if ( ( ! WP_POST_REVISIONS || ! post_type_supports ( $post -> post_type , 'revisions' ) ) && ! wp_is_post_autosave ( $revision ) ) {
2010-05-19 14:36:52 -04:00
$redirect = 'edit.php?post_type=' . $post -> post_type ;
2008-05-29 18:21:36 -04:00
break ;
2010-05-19 14:36:52 -04:00
}
2013-02-28 10:14:34 -05:00
check_admin_referer ( " restore-post_ { $post -> ID } | { $revision -> ID } " );
2008-05-08 13:25:07 -04:00
2013-03-07 10:32:26 -05:00
//store revision event in post meta
$restore_details = array (
'restored_revision_id' => $revision -> ID ,
'restored_by_user' => get_current_user_id (),
'restored_time' => time ()
);
update_post_meta ( $post -> ID , '_post_restored_from' , $restore_details );
2008-05-29 18:21:36 -04:00
wp_restore_post_revision ( $revision -> ID );
2008-05-08 13:25:07 -04:00
$redirect = add_query_arg ( array ( 'message' => 5 , 'revision' => $revision -> ID ), get_edit_post_link ( $post -> ID , 'url' ) );
break ;
case 'view' :
2013-02-28 10:14:34 -05:00
case 'edit' :
2008-05-08 13:25:07 -04:00
default :
2013-03-07 10:32:26 -05:00
if ( ! $revision = wp_get_post_revision ( $revision_id ) )
2008-05-08 13:25:07 -04:00
break ;
2013-03-07 10:32:26 -05:00
if ( ! $post = get_post ( $revision -> post_parent ) )
2008-05-08 13:25:07 -04:00
break ;
2013-03-07 10:32:26 -05:00
if ( ! current_user_can ( 'read_post' , $revision -> ID ) || ! current_user_can ( 'read_post' , $post -> ID ) )
2008-05-08 13:25:07 -04:00
break ;
2010-05-19 14:36:52 -04:00
// Revisions disabled and we're not looking at an autosave
if ( ( ! WP_POST_REVISIONS || ! post_type_supports ( $post -> post_type , 'revisions' ) ) && ! wp_is_post_autosave ( $revision ) ) {
$redirect = 'edit.php?post_type=' . $post -> post_type ;
2008-05-29 18:21:36 -04:00
break ;
2010-05-19 14:36:52 -04:00
}
2010-01-18 06:44:51 -05:00
2008-05-08 13:25:07 -04:00
$post_title = '<a href="' . get_edit_post_link () . '">' . get_the_title () . '</a>' ;
$revision_title = wp_post_revision_title ( $revision , false );
2013-02-28 10:14:34 -05:00
$h2 = sprintf ( __ ( 'Compare Revisions of “%1$s”' ), $post_title );
2010-01-18 06:44:51 -05:00
$title = __ ( 'Revisions' );
2008-05-08 13:25:07 -04:00
$redirect = false ;
break ;
endswitch ;
2008-04-18 19:38:21 -04:00
2010-05-19 14:36:52 -04:00
// Empty post_type means either malformed object found, or no valid parent was found.
2013-03-07 10:32:26 -05:00
if ( ! $redirect && empty ( $post -> post_type ) )
2010-05-19 14:36:52 -04:00
$redirect = 'edit.php' ;
2008-05-09 11:59:17 -04:00
2013-03-07 10:32:26 -05:00
if ( ! empty ( $redirect ) ) {
2008-05-08 13:25:07 -04:00
wp_redirect ( $redirect );
2008-04-18 19:38:21 -04:00
exit ;
}
2010-01-18 06:44:51 -05:00
// This is so that the correct "Edit" menu item is selected.
2013-03-07 10:32:26 -05:00
if ( ! empty ( $post -> post_type ) && 'post' != $post -> post_type )
2010-01-18 06:44:51 -05:00
$parent_file = $submenu_file = 'edit.php?post_type=' . $post -> post_type ;
else
$parent_file = $submenu_file = 'edit.php' ;
2008-05-09 11:59:17 -04:00
2013-02-28 10:14:34 -05:00
wp_enqueue_script ( 'revisions' );
2008-04-18 19:38:21 -04:00
2013-02-28 10:14:34 -05:00
require_once ( './admin-header.php' );
2008-04-18 19:38:21 -04:00
2013-02-28 10:14:34 -05:00
//TODO - Some of the translations below split things into multiple strings that are contextually related and this makes it pretty impossible for RTL translation.
//TODO can we pass the context in a better way
2008-04-18 19:38:21 -04:00
?>
2013-02-28 10:14:34 -05:00
< script type = " text/javascript " >
var wpRevisionsSettings = < ? php echo json_encode ( array ( 'post_id' => $post -> ID , 'nonce' => wp_create_nonce ( 'revisions-ajax-nonce' ) ) ); ?> ;
</ script >
2013-03-07 10:32:26 -05:00
< ? php
$comparetworevisionslink = get_edit_post_link ( $revision -> ID );
?>
2008-04-18 19:38:21 -04:00
2013-02-28 10:14:34 -05:00
< div id = " backbonerevisionsoptions " ></ div >
< div class = " wrap " >
< div class = " icon32 icon32-posts-post " id = " icon-edit " >< br ></ div >
< div class = " revisiondiffcontainer diffsplit currentversion rightmodelloading " >
< div id = " modelsloading " class = " updated message " >< span class = " spinner " ></ span > < ? php _e ( 'Calculating revision diffs' ); ?> </div>
< h2 class = " long-header " >< ? php echo $h2 ; ?> </h2>
< div id = " backbonerevisionsinteract " ></ div >
< div id = " backbonerevisionsdiff " ></ div >
2013-03-07 10:32:26 -05:00
< hr />
2013-02-28 10:14:34 -05:00
</ div >
2008-05-29 19:16:11 -04:00
</ div >
2013-02-28 10:14:34 -05:00
< script id = " tmpl-revision " type = " text/html " >
< div id = " diffsubheader " >
< span id = " diff_from_current_revision " >< ? php _e ( 'Current version' ); ?> <?php _e( '- compared to -' ); ?></span>
< div id = " difftitlefrom " > {{{ data . revision_from_date_author }}} < ? php _e ( '- compared to -' ); ?> </div>
< div id = " difftitle " > {{{ data . revision_date_author }}} </ div >
< div id = " diffcancel " >< input class = " button " onClick = " document.location='<?php echo get_edit_post_link( $post->ID ); ?>' " type = " submit " id = " cancel " value = " <?php esc_attr_e( 'Cancel' )?> " /></ div >
2013-03-07 10:32:26 -05:00
< div id = " diffrestore " >< input class = " button button-primary " onClick = " document.location=' { { { data.restoreaction }}}' " type = " submit " id = " restore " value = " <?php esc_attr_e( 'Restore revision ID' )?> " /></ div >
< div id = " comparetworevisions " >< input type = " checkbox " id = " comparetwo " value = " comparetwo " {{{ data . comparetwochecked }}} name = " comparetwo " /> < label for = " comparetwo " >< ? php esc_attr_e ( 'Compare two revisions' ); ?> </a></div> </div>
2013-02-28 10:14:34 -05:00
< div id = " removedandadded " >
< div id = " removed " >< ? php _e ( 'Removed -' ); ?> </div>
< div id = " added " >< ? php _e ( 'Added +' ); ?> </div>
</ div
< div > {{{ data . revisiondiff }}} </ div >
</ script >
< script id = " tmpl-revisionvinteract " type = " text/html " >
< div id = " diffheader " >
2013-03-07 10:32:26 -05:00
< div id = " diffprevious " >< input class = " button " type = " submit " id = " previous " value = " <?php esc_attr_e( 'Previous' ); ?> " /></ div >
< div id = " diffnext " >< input class = " button " type = " submit " id = " next " value = " <?php esc_attr_e( 'Next' ); ?> " /></ div >
2013-02-28 10:14:34 -05:00
< div id = " diffslider " >
< div id = " revisioncount " >
< ? php _e ( 'Comparing' ); ?>
< span id = " diff_left_count " > < ? php _e ( 'revision' ); ?> </span> <span id="diff_left_count_inner"></span>
< span id = " diff_left_current_revision " >< ? php _e ( 'current version' ); ?> </span>
< span id = " diff_revision_from " > {{{ data . diff_revision_from }}} </ span >
< ? php _e ( ' to revision' ); ?>
< span id = " diff_count " > {{{ data . current_diff }}} </ span >
< ? php _e ( ' of ' ); ?>
< span id = " diff_max " ></ span >
</ div >
2013-03-01 14:24:03 -05:00
< div id = " slider " class = " wp-slider " ></ div >
2013-02-28 10:14:34 -05:00
</ div >
</ div >
</ script >
2008-05-29 19:16:11 -04:00
< ? php
2013-02-28 10:14:34 -05:00
/*
TODO Convert these into screen options
< script id = " tmpl-revisionoptions " type = " text/html " >
< div id = " revisionoptions " >
< div id = " showsplitviewoption " >
< input type = 'checkbox' id = " show_split_view " checked = " checked " value = " 1 " /> < ? php _e ( 'Show split diff view' ); ?>
</ div >
< div id = " toggleshowautosavesoption " >
< input type = 'checkbox' id = " toggleshowautosaves " value = " 1 " /> < ? php _e ( 'Show autosaves' ); ?>
</ div >
</ div >
</ script >
*/
require_once ( './admin-footer.php' );