2008-04-19 01:38:21 +02:00
< ? php
2008-08-16 09:27:34 +02:00
/**
* Revisions administration panel .
*
* @ package WordPress
* @ subpackage Administration
*/
2008-04-19 01:38:21 +02:00
2008-08-16 09:27:34 +02:00
/** WordPress Administration Bootstrap */
2010-04-18 08:14:45 +02:00
require_once ( './admin.php' );
2013-02-28 16:14:34 +01:00
wp_reset_vars ( array ( 'revision' , 'action' ) );
2010-01-18 12:44:51 +01:00
2013-03-07 16:32:26 +01:00
$revision_id = absint ( $revision );
2010-01-18 12:44:51 +01:00
$redirect = 'edit.php' ;
2008-04-19 01:38:21 +02:00
2008-05-08 19:25:07 +02:00
switch ( $action ) :
case 'restore' :
2013-03-07 16:32:26 +01:00
if ( ! $revision = wp_get_post_revision ( $revision_id ) )
2008-05-08 19:25:07 +02:00
break ;
2013-03-21 16:54:11 +01:00
2013-03-07 16:32:26 +01:00
if ( ! current_user_can ( 'edit_post' , $revision -> post_parent ) )
2008-05-08 19:25:07 +02:00
break ;
2013-03-21 16:54:11 +01:00
2013-03-07 16:32:26 +01:00
if ( ! $post = get_post ( $revision -> post_parent ) )
2008-05-08 19:25:07 +02:00
break ;
2008-04-19 01:38:21 +02:00
2013-03-21 16:54:11 +01:00
// Revisions disabled (previously checked autosavegs && ! wp_is_post_autosave( $revision ))
if ( ( ! WP_POST_REVISIONS || ! post_type_supports ( $post -> post_type , 'revisions' ) ) ) {
2010-05-19 20:36:52 +02:00
$redirect = 'edit.php?post_type=' . $post -> post_type ;
2008-05-30 00:21:36 +02:00
break ;
2010-05-19 20:36:52 +02:00
}
2008-05-08 19:25:07 +02:00
2013-03-21 16:54:11 +01:00
check_admin_referer ( " restore-post_ { $revision -> ID } " );
2013-03-07 16:32:26 +01:00
2008-05-30 00:21:36 +02:00
wp_restore_post_revision ( $revision -> ID );
2008-05-08 19:25:07 +02:00
$redirect = add_query_arg ( array ( 'message' => 5 , 'revision' => $revision -> ID ), get_edit_post_link ( $post -> ID , 'url' ) );
break ;
case 'view' :
2013-02-28 16:14:34 +01:00
case 'edit' :
2008-05-08 19:25:07 +02:00
default :
2013-03-07 16:32:26 +01:00
if ( ! $revision = wp_get_post_revision ( $revision_id ) )
2008-05-08 19:25:07 +02:00
break ;
2013-03-07 16:32:26 +01:00
if ( ! $post = get_post ( $revision -> post_parent ) )
2008-05-08 19:25:07 +02:00
break ;
2013-03-07 16:32:26 +01:00
if ( ! current_user_can ( 'read_post' , $revision -> ID ) || ! current_user_can ( 'read_post' , $post -> ID ) )
2008-05-08 19:25:07 +02:00
break ;
2010-05-19 20:36:52 +02: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-30 00:21:36 +02:00
break ;
2010-05-19 20:36:52 +02:00
}
2010-01-18 12:44:51 +01:00
2008-05-08 19:25:07 +02:00
$post_title = '<a href="' . get_edit_post_link () . '">' . get_the_title () . '</a>' ;
2013-02-28 16:14:34 +01:00
$h2 = sprintf ( __ ( 'Compare Revisions of “%1$s”' ), $post_title );
2010-01-18 12:44:51 +01:00
$title = __ ( 'Revisions' );
2008-05-08 19:25:07 +02:00
$redirect = false ;
break ;
endswitch ;
2008-04-19 01:38:21 +02:00
2010-05-19 20:36:52 +02:00
// Empty post_type means either malformed object found, or no valid parent was found.
2013-03-07 16:32:26 +01:00
if ( ! $redirect && empty ( $post -> post_type ) )
2010-05-19 20:36:52 +02:00
$redirect = 'edit.php' ;
2008-05-09 17:59:17 +02:00
2013-03-07 16:32:26 +01:00
if ( ! empty ( $redirect ) ) {
2008-05-08 19:25:07 +02:00
wp_redirect ( $redirect );
2008-04-19 01:38:21 +02:00
exit ;
}
2010-01-18 12:44:51 +01:00
// This is so that the correct "Edit" menu item is selected.
2013-03-07 16:32:26 +01:00
if ( ! empty ( $post -> post_type ) && 'post' != $post -> post_type )
2010-01-18 12:44:51 +01:00
$parent_file = $submenu_file = 'edit.php?post_type=' . $post -> post_type ;
else
$parent_file = $submenu_file = 'edit.php' ;
2013-02-28 16:14:34 +01:00
wp_enqueue_script ( 'revisions' );
2008-04-19 01:38:21 +02:00
2013-02-28 16:14:34 +01:00
require_once ( './admin-header.php' );
2008-04-19 01:38:21 +02:00
2013-02-28 16:14:34 +01: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
2013-03-21 16:54:11 +01:00
$wpRevisionsSettings = array ( 'post_id' => $post -> ID ,
'nonce' => wp_create_nonce ( 'revisions-ajax-nonce' ),
'revision_id' => $revision_id );
wp_localize_script ( 'revisions' , 'wpRevisionsSettings' , $wpRevisionsSettings );
$comparetworevisionslink = get_edit_post_link ( $revision -> ID );
2013-03-07 16:32:26 +01:00
?>
2008-04-19 01:38:21 +02:00
2013-03-21 16:54:11 +01:00
< div id = " backbonerevisionsoptions " >
</ div >
2013-02-28 16:14:34 +01:00
< div class = " wrap " >
2013-03-21 16:54:11 +01:00
< div class = " icon32 icon32-posts-post " id = " icon-edit " >
< br >
</ div >
2013-02-28 16:14:34 +01:00
< div class = " revisiondiffcontainer diffsplit currentversion rightmodelloading " >
2013-03-21 16:54:11 +01:00
< div id = " modelsloading " class = " updated message " >
< span class = " spinner " ></ span > < ? php _e ( 'Calculating revision diffs' ); ?>
</ div >
2013-02-28 16:14:34 +01:00
< h2 class = " long-header " >< ? php echo $h2 ; ?> </h2>
2013-03-21 16:54:11 +01:00
< div class = " diff-slider-ticks-wrapper " >
< div id = " diff-slider-ticks " >
</ div >
</ div >
< div id = " backbonerevisionsinteract " >
</ div >
< div id = " backbonerevisionsdiff " >
</ div >
2013-03-07 16:32:26 +01:00
< hr />
2013-02-28 16:14:34 +01:00
</ div >
2008-05-30 01:16:11 +02:00
</ div >
2013-02-28 16:14:34 +01:00
< script id = " tmpl-revision " type = " text/html " >
2013-03-21 16:54:11 +01:00
< div id = " diffsubheader " class = " diff-left-hand-meta-row " >
< div id = " diff_from_current_revision " >
< ? php printf ( '<b>%1$s</b> %2$s.' , __ ( 'From:' ), __ ( 'the current version' ) ); ?>
</ div >
< div id = " difftitlefrom " >
< div class = " diff-from-title " >< ? php _e ( 'From:' ); ?> </div>{{{ data.revision_from_date_author }}}
</ div >
</ div >
2013-02-28 16:14:34 +01:00
< div id = " diffsubheader " >
2013-03-21 16:54:11 +01:00
< div id = " difftitle " >
< div class = " diff-to-title " >< ? php _e ( 'To:' ); ?> </div>{{{ data.revision_date_author }}}
</ div >
< div id = " diffrestore " >
< input class = " button button-primary restore-button " onClick = " document.location=' { { { data.restoreaction }}}' " type = " submit " id = " restore " value = " <?php esc_attr_e( 'Restore This Revision' )?> " />
</ 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></label>
</ div >
</ div >
2013-02-28 16:14:34 +01: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-21 16:54:11 +01: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' ); ?> " />
2013-02-28 16:14:34 +01:00
</ div >
2013-03-21 16:54:11 +01:00
< div id = " diffslider " >
< div id = " slider " class = " wp-slider " >
</ div >
</ div >
</ div >
</ script >
< script id = " tmpl-revision-ticks " type = " text/html " >
< div class = " revision-tick revision-toload { { { data.revision_toload }}} revision-scopeofchanges- { { { data.scope_of_changes }}} " >
2013-02-28 16:14:34 +01:00
</ div >
</ script >
2008-05-30 01:16:11 +02:00
< ? php
2013-02-28 16:14:34 +01: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' );