Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 23549)
+++ wp-includes/post-template.php	(working copy)
@@ -1468,7 +1468,27 @@
 	else :
 		echo "<ul class='post-revisions'>\n";
 		echo $rows;
+		if ( $restored_from_meta = get_post_meta( $post->ID, '_post_restored_from', true ) ) { 
+			$author = get_the_author_meta( 'display_name', $restored_from_meta[ 'restored_by_user' ] ); 
+			/* translators: revision date format, see http://php.net/date */ 
+			$datef = _x( 'j F, Y @ G:i:s', 'revision date format'); 
+			$date = date_i18n( $datef, strtotime( $restored_from_meta[ 'restored_time' ] ) ); 
+			$timesince = human_time_diff( $restored_from_meta[ 'restored_time' ], current_time( 'timestamp' ) ) . __( ' ago ' ); 
+			?> 
+			<hr />
+			<div id="revisions-meta-restored"> 
+				<?php 
+				printf( 'Previously restored from Revision ID %d, %s by %s (%s)', 
+				$restored_from_meta[ 'restored_revision_id'], 
+				$timesince, 
+				$author, 
+				$date ); 
+				?> 
+			</div> 
+			<?php 
 		echo "</ul>";
+		} 
+
 	endif;
 
 }
Index: wp-includes/pluggable.php
===================================================================
--- wp-includes/pluggable.php	(revision 23549)
+++ wp-includes/pluggable.php	(working copy)
@@ -1722,7 +1722,7 @@
 
 	$r  = "<table class='diff'>\n";
 
-	if ( isset( $args[ 'showsplitview' ] ) && 'true' == $args[ 'showsplitview' ] ) {
+	if ( ! empty( $args[ 'show_split_view' ] ) ) {
 		$r .= "<col class='content diffsplit left' /><col class='content diffsplit middle' /><col class='content diffsplit right' />";
 	} else {
 		$r .= "<col class='content' />";
Index: wp-admin/includes/ajax-actions.php
===================================================================
--- wp-admin/includes/ajax-actions.php	(revision 23549)
+++ wp-admin/includes/ajax-actions.php	(working copy)
@@ -2137,42 +2137,42 @@
 function wp_ajax_revisions_data() {
 	check_ajax_referer( 'revisions-ajax-nonce', 'nonce' );
 
-	$compareto = isset( $_GET['compareto'] ) ? absint( $_GET['compareto'] ) : 0;
-	$showautosaves = isset( $_GET['showautosaves'] ) ? $_GET['showautosaves'] : '';
-	$showsplitview = isset( $_GET['showsplitview'] ) ? $_GET['showsplitview'] : '';
-	$postid = isset( $_GET['post_id'] ) ? absint( $_GET['post_id'] ) : '';
+	$compare_to = isset( $_GET['compare_to'] ) ? absint( $_GET['compare_to'] ) : 0;
+	$show_autosaves = isset( $_GET['show_autosaves'] ) ? $_GET['show_autosaves'] : '';
+	$show_split_view = isset( $_GET['show_split_view'] ) ? $_GET['show_split_view'] : '';
+	$post_id = isset( $_GET['post_id'] ) ? absint( $_GET['post_id'] ) : '';
 
-	$comparetwomode = ( '' == $postid ) ? false : true;
+	$compare_two_mode = ( '' == $post_id ) ? false : true;
 	//
-	//TODO: currently code returns all possible comparisons for the indicated 'compareto' revision
+	//TODO: currently code returns all possible comparisons for the indicated 'compare_to' revision
 	//however, the front end prevents users from pulling the right handle past the left or the left pass the right,
 	//so only the possible diffs need be generated
 	//
 	$alltherevisions = array();
-	if ( '' == $postid )
-		$postid = $compareto;
+	if ( '' == $post_id )
+		$post_id = $compare_to;
 
-	if ( ! current_user_can( 'read_post', $postid ) )
+	if ( ! current_user_can( 'read_post', $post_id ) )
 		continue;
 
-	if ( ! $revisions = wp_get_post_revisions( $postid ) )
+	if ( ! $revisions = wp_get_post_revisions( $post_id ) )
 		return;
 
 
 	//if we are comparing two revisions, the first 'revision' represented by the leftmost
 	//slider position is the current revision, prepend a comparison to this revision
-	if ( $comparetwomode )
-		array_unshift( $revisions, get_post( $postid ) );
+	if ( $compare_two_mode )
+		array_unshift( $revisions, get_post( $post_id ) );
 
 	$count = 1;
 	foreach ( $revisions as $revision ) :
-	if ( 'true' != $showautosaves && wp_is_post_autosave( $revision ) )
+	if ( ! empty( $show_autosaves ) && wp_is_post_autosave( $revision ) )
 			continue;
 
 	$revision_from_date_author = '';
 
 
-	$left_revision = get_post( $compareto );
+	$left_revision = get_post( $compare_to );
 	$right_revision = get_post( $revision );
 
 	$author = get_the_author_meta( 'display_name', $revision->post_author );
@@ -2191,18 +2191,18 @@
 		$date
 	);
 
-	if ( $comparetwomode ) {
-		$compareto_gravatar = get_avatar( $left_revision->post_author, 18 );
-		$compareto_author = get_the_author_meta( 'display_name', $left_revision->post_author );
-		$compareto_date = date_i18n( $datef, strtotime( $left_revision->post_modified ) );
+	if ( $compare_two_mode ) {
+		$compare_to_gravatar = get_avatar( $left_revision->post_author, 18 );
+		$compare_to_author = get_the_author_meta( 'display_name', $left_revision->post_author );
+		$compare_to_date = date_i18n( $datef, strtotime( $left_revision->post_modified ) );
 
 		$revision_from_date_author = sprintf(
 			'%s %s, %s %s (%s)',
-			$compareto_gravatar,
-			$compareto_author,
+			$compare_to_gravatar,
+			$compare_to_author,
 			human_time_diff( strtotime( $left_revision->post_modified ), current_time( 'timestamp' ) ),
 			__( ' ago ' ),
-			$compareto_date
+			$compare_to_date
 		);
 	}
 
@@ -2212,7 +2212,7 @@
 				'action' => 'restore' ),
 				'/wp-admin/revision.php'
 		),
-		"restore-post_{$compareto}|{$revision->ID}"
+		"restore-post_{$compare_to}|{$revision->ID}"
 	);
 
 	//
@@ -2236,8 +2236,8 @@
 
 		$args = array();
 
-		if ( 'true' == $showsplitview )
-			 $args = array( 'showsplitview' => 'true' );
+		if ( ! empty( $show_split_view ) )
+			 $args = array( 'show_split_view' => true );
 
 		$content .= wp_text_diff( $left_content, $right_content, $args );
 	}
@@ -2245,7 +2245,7 @@
 	//if we are comparing two revisions
 	//and we are on the matching revision
 	//add an error revision indicating unable to compare to self
-	if ( $comparetwomode && $compareto == $revision->ID )
+	if ( $compare_two_mode && $compare_to == $revision->ID )
 		$alltherevisions[] = array (
 			'ID' => $revision->ID,
 			'revision_date_author' => $revision_date_author,
Index: wp-admin/js/revisions.js
===================================================================
--- wp-admin/js/revisions.js	(revision 23549)
+++ wp-admin/js/revisions.js	(working copy)
@@ -30,7 +30,7 @@
 			_left_diff : 0,
 			_right_diff : 1,
 			_autosaves : false,
-			_showsplitview : true,
+			_show_split_view : true,
 			_compareoneortwo : 1,
 			left_model_loading : false,		//keep track of model loads
 			right_model_loading : false,	//disallow slider interaction, also repeat loads, while loading
@@ -74,9 +74,9 @@
 
 			reloadmodelsingle : function() {
 				var self = this;
-				self._revisions.url = ajaxurl +	'?action=revisions-data&compareto=' + wpRevisionsSettings.post_id +
-											'&showautosaves=' + self.self_autosaves +
-											'&showsplitview=' +  REVAPP._showsplitview +
+				self._revisions.url = ajaxurl +	'?action=revisions-data&compare_to=' + wpRevisionsSettings.post_id +
+											'&show_autosaves=' + self._autosaves +
+											'&show_split_view=' +  REVAPP._show_split_view +
 											'&nonce=' + wpRevisionsSettings.nonce;
 				self.start_right_model_loading();
 				this._revisions.fetch({ //reload revision data
@@ -111,31 +111,34 @@
 				if ( 0 == self._left_diff ) {
 					self._right_handle_revisions.url =
 						ajaxurl +
-						'?action=revisions-data&compareto=' + wpRevisionsSettings.post_id +
+						'?action=revisions-data&compare_to=' + wpRevisionsSettings.post_id +
 						'&post_id=' + wpRevisionsSettings.post_id +
-						'&showautosaves=' + self._autosaves +
-						'&showsplitview=' +  self._showsplitview +
+						'&show_autosaves=' + self._autosaves +
+						'&show_split_view=' +  self._show_split_view +
 						'&nonce=' + wpRevisionsSettings.nonce;
 				} else {
 					self._right_handle_revisions.url =
 						ajaxurl +
-						'?action=revisions-data&compareto=' + self._revisions.at( self._left_diff - 1 ).get( 'ID' ) +
+						'?action=revisions-data&compare_to=' + self._revisions.at( self._left_diff - 1 ).get( 'ID' ) +
 						'&post_id=' + wpRevisionsSettings.post_id +
-						'&showautosaves=' + self._autosaves +
-						'&showsplitview=' +  self._showsplitview +
+						'&show_autosaves=' + self._autosaves +
+						'&show_split_view=' +  self._show_split_view +
 						'&nonce=' + wpRevisionsSettings.nonce;
 				}
 
 				self._left_handle_revisions.url =
 					ajaxurl +
-					'?action=revisions-data&compareto=' + self._revisions.at( self._right_diff - 1 ).get( 'ID' ) +
+					'?action=revisions-data&compare_to=' + self._revisions.at( self._right_diff - 1 ).get( 'ID' ) +
 					'&post_id=' + wpRevisionsSettings.post_id +
-					'&showautosaves=' + self._autosaves +
-					'&showsplitview=' +  self._showsplitview +
+					'&show_autosaves=' + self._autosaves +
+					'&show_split_view=' +  self._show_split_view +
 					'&nonce=' + wpRevisionsSettings.nonce;
 
 				self._left_handle_revisions.fetch({
 
+					/*
+					//TODO - add a load progress bar for fetch
+					//
 					xhr: function() {
 						var xhr = $.ajaxSettings.xhr();
 						xhr.onprogress = self.handleProgress;
@@ -149,7 +152,7 @@
 							window.console && console.log( Math.round( percentComplete * 100) + "%" );
 						}
 					},
-
+					*/
 					success : function(){
 						self.stop_left_model_loading();
 					},
@@ -166,8 +169,8 @@
 						self.stop_right_model_loading();
 					},
 
-					error : function () {
-						window.console && console.log( 'Error loading revision data' );
+					error : function ( response ) {
+						window.console && console.log( 'Error loading revision data - ' + response.toSource() );
 						self.stop_right_model_loading();
 					}
 				});
@@ -217,7 +220,7 @@
 
 	wp.revisions.Collection = Backbone.Collection.extend({
 		model : wp.revisions.Model,
-		url : ajaxurl +	'?action=revisions-data&compareto=' + wpRevisionsSettings.post_id + '&showautosaves=false&showsplitview=true&nonce=' + wpRevisionsSettings.nonce
+		url : ajaxurl +	'?action=revisions-data&compare_to=' + wpRevisionsSettings.post_id + '&show_autosaves=false&show_split_view=true&nonce=' + wpRevisionsSettings.nonce
 	});
 
 	_.extend(wp.revisions.views, {
@@ -264,7 +267,7 @@
 					this.comparetwochecked = '';
 					if ( this.model.at( REVAPP._right_diff - 1 ) ) {
 						addhtml = this.template( _.extend(
-							this.model.at( REVAPP._right_diff-1 ).toJSON(),
+							this.model.at( REVAPP._right_diff - 1 ).toJSON(),
 							{ comparetwochecked : this.comparetwochecked } //keep the checkmark checked
 						) );
 					}
@@ -345,10 +348,10 @@
 				var self = this;
 
 				if ( $( 'input#showsplitview' ).is( ':checked' ) ) {
-					REVAPP._showsplitview = 'true';
+					REVAPP._show_split_view = 'true';
 					$('.revisiondiffcontainer').addClass('diffsplit');
 				} else {
-					REVAPP._showsplitview = '';
+					REVAPP._show_split_view = '';
 					$('.revisiondiffcontainer').removeClass('diffsplit');
 				}
 
@@ -364,10 +367,16 @@
 			tagName : 'revisionvinteract',
 			className : 'revisionvinteract-container',
 			template : wp.template('revisionvinteract'),
+			_restoreword : '',
 
 			initialize : function() {
+				this._restoreword = $( 'input#restore' ).attr( 'value' );
 			},
 
+			reset_restore_button : function() {
+				$( 'input#restore' ).attr( 'value', this._restoreword + ' ' + REVAPP._revisions.at( REVAPP._right_diff - 1 ).get( 'ID' ) );
+			},
+
 			render : function() {
 				var self = this;
 
@@ -376,10 +385,11 @@
 				$( '#diff_max, #diff_maxof' ).html( this.model.length );
 				$( '#diff_count' ).html( REVAPP._right_diff );
 				$( '#diff_left_count_inner' ).html( 0 == REVAPP._left_diff ? '' : 'revision' + REVAPP._left_diff );
+				self.reset_restore_button();
 
 				var modelcount = REVAPP._revisions.length;
 
-				slider = $("#slider");
+				slider = $( "#slider" );
 				if ( 1 == REVAPP._compareoneortwo ) {
 					//set up the slider with a single handle
 					slider.slider({
@@ -396,6 +406,7 @@
 							REVAPP._right_diff =( ui.value+1 );
 							$( '#diff_count' ).html( REVAPP._right_diff );
 							REVAPP._revisionView.render();
+							self.reset_restore_button();
 						}
 					});
 					$( '.revisiondiffcontainer' ).removeClass( 'comparetwo' );
@@ -473,6 +484,7 @@
 							}
 
 							REVAPP._revisionView.render(); //render the diff view
+							self.reset_restore_button();
 						},
 
 						//when the user stops sliding  in 2 handle mode, recalculate diffs
@@ -480,7 +492,7 @@
 							if ( 2 == REVAPP._compareoneortwo ) {
 								//calculate and generate a diff for comparing to the left handle
 								//and the right handle, swap out when dragging
-								if ( ! (REVAPP.left_model_loading && REVAPP.right_model.loading ) ) {
+								if ( ! (REVAPP.left_model_loading && REVAPP.right_model_loading ) ) {
 									REVAPP.reloadleftright();
 								}
 							}
@@ -507,6 +519,7 @@
 
 				$( '#diff_count' ).html( REVAPP._right_diff );
 				$( '#slider' ).slider( 'value', REVAPP._right_diff - 1 ).trigger( 'slide' );
+				this.reset_restore_button();
 			},
 
 			//go the the previous revision
@@ -518,6 +531,7 @@
 
 				$( '#diff_count' ).html( REVAPP._right_diff );
 				$( '#slider' ).slider( 'value', REVAPP._right_diff - 1 ).trigger( 'slide' );
+				this.reset_restore_button();
 			}
 		})
 	});
Index: wp-admin/revision.php
===================================================================
--- wp-admin/revision.php	(revision 23549)
+++ wp-admin/revision.php	(working copy)
@@ -10,37 +10,45 @@
 require_once('./admin.php');
 wp_reset_vars( array( 'revision', 'action' ) );
 
-$revision_id = absint($revision);
+$revision_id = absint( $revision );
 $redirect = 'edit.php';
 
 switch ( $action ) :
 case 'restore' :
-	if ( !$revision = wp_get_post_revision( $revision_id ) )
+	if ( ! $revision = wp_get_post_revision( $revision_id ) )
 		break;
-	if ( !current_user_can( 'edit_post', $revision->post_parent ) )
+	if ( ! current_user_can( 'edit_post', $revision->post_parent ) )
 		break;
-	if ( !$post = get_post( $revision->post_parent ) )
+	if ( ! $post = get_post( $revision->post_parent ) )
 		break;
 
 	// 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 ) ) {
+	if ( ( ! WP_POST_REVISIONS || ! post_type_supports( $post->post_type, 'revisions' ) ) && ! wp_is_post_autosave( $revision ) ) {
 		$redirect = 'edit.php?post_type=' . $post->post_type;
 		break;
 	}
 	check_admin_referer( "restore-post_{$post->ID}|{$revision->ID}" );
 
+	//store revision event in post meta 
+	$restore_details = array( 
+		'restored_revision_id' => $revision->ID, 
+		'restored_by_user' => get_current_user_id(), 
+		'restored_time' => time() 
+	); 
+	wp_update_post_meta( $post->ID, '_post_restored_from', $restore_details ); 
+
 	wp_restore_post_revision( $revision->ID );
 	$redirect = add_query_arg( array( 'message' => 5, 'revision' => $revision->ID ), get_edit_post_link( $post->ID, 'url' ) );
 	break;
 case 'view' :
 case 'edit' :
 default :
-	if ( !$revision = wp_get_post_revision( $revision_id ) )
+	if ( ! $revision = wp_get_post_revision( $revision_id ) )
 		break;
-	if ( !$post = get_post( $revision->post_parent ) )
+	if ( ! $post = get_post( $revision->post_parent ) )
 		break;
 
-	if ( !current_user_can( 'read_post', $revision->ID ) || !current_user_can( 'read_post', $post->ID ) )
+	if ( ! current_user_can( 'read_post', $revision->ID ) || ! current_user_can( 'read_post', $post->ID ) )
 		break;
 
 	// Revisions disabled and we're not looking at an autosave
@@ -59,16 +67,16 @@
 endswitch;
 
 // Empty post_type means either malformed object found, or no valid parent was found.
-if ( !$redirect && empty($post->post_type) )
+if ( ! $redirect && empty( $post->post_type ) )
 	$redirect = 'edit.php';
 
-if ( !empty($redirect) ) {
+if ( ! empty( $redirect ) ) {
 	wp_redirect( $redirect );
 	exit;
 }
 
 // This is so that the correct "Edit" menu item is selected.
-if ( !empty($post->post_type) && 'post' != $post->post_type )
+if ( ! empty( $post->post_type ) && 'post' != $post->post_type )
 	$parent_file = $submenu_file = 'edit.php?post_type=' . $post->post_type;
 else
 	$parent_file = $submenu_file = 'edit.php';
@@ -84,10 +92,11 @@
 <script type="text/javascript">
 var wpRevisionsSettings = <?php echo json_encode( array( 'post_id' => $post->ID, 'nonce' => wp_create_nonce( 'revisions-ajax-nonce' ) ) ); ?>;
 </script>
+<?php
+	$comparetworevisionslink = get_edit_post_link( $revision->ID );
+?>
 
 <div id="backbonerevisionsoptions"></div>
-
-<br class="clear"/>
 <div class="wrap">
 	<div class="icon32 icon32-posts-post" id="icon-edit"><br></div>
 	<div class="revisiondiffcontainer diffsplit currentversion rightmodelloading">
@@ -95,10 +104,7 @@
 		<h2 class="long-header"><?php echo $h2; ?></h2>
 		<div id="backbonerevisionsinteract"></div>
 		<div id="backbonerevisionsdiff"></div>
-<hr />
-<?php
-	$comparetworevisionslink = get_edit_post_link( $revision->ID );
-?>
+		<hr />
 	</div>
 </div>
 
@@ -108,7 +114,7 @@
 		<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>
-		<div id="diffrestore"><input class="button button-primary" onClick="document.location='{{{ data.restoreaction }}}'" type="submit" id="restore" value="<?php esc_attr_e( 'Restore' )?>" /></div>
+		<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"/> <?php esc_attr_e( 'Compare two revisions' )?></div>
 	</div>
 	<div id="removedandadded">
@@ -120,8 +126,8 @@
 
 <script id="tmpl-revisionvinteract" type="text/html">
 	<div id="diffheader">
-<div id="diffprevious"><input class="button" type="submit" id="previous" value="Previous" /></div>
-			<div id="diffnext"><input class="button" type="submit" id="next" value="Next" /></div>
+<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>
 			<div id="diffslider">
 	<div id="revisioncount">
 					<?php _e( 'Comparing' ); ?>
