Revisions: UI Update.

* Refines the UI to make it clearer and easier to use
* Introduces weighted tickmarks
* Fixes comparison bugs.

See #23497 props adamsilverstein


git-svn-id: https://develop.svn.wordpress.org/trunk@23769 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Peter Westwood
2013-03-21 15:54:11 +00:00
parent b15ab88b39
commit ae03f1a0b6
9 changed files with 835 additions and 282 deletions
+60 -44
View File
@@ -17,25 +17,21 @@ switch ( $action ) :
case 'restore' :
if ( ! $revision = wp_get_post_revision( $revision_id ) )
break;
if ( ! current_user_can( 'edit_post', $revision->post_parent ) )
break;
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 ) ) {
// Revisions disabled (previously checked autosavegs && ! wp_is_post_autosave( $revision ))
if ( ( ! WP_POST_REVISIONS || ! post_type_supports( $post->post_type, 'revisions' ) ) ) {
$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()
);
update_post_meta( $post->ID, '_post_restored_from', $restore_details );
check_admin_referer( "restore-post_{$revision->ID}" );
wp_restore_post_revision( $revision->ID );
$redirect = add_query_arg( array( 'message' => 5, 'revision' => $revision->ID ), get_edit_post_link( $post->ID, 'url' ) );
@@ -58,7 +54,6 @@ default :
}
$post_title = '<a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>';
$revision_title = wp_post_revision_title( $revision, false );
$h2 = sprintf( __( 'Compare Revisions of &#8220;%1$s&#8221;' ), $post_title );
$title = __( 'Revisions' );
@@ -80,41 +75,66 @@ 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';
wp_enqueue_script( 'revisions' );
require_once( './admin-header.php' );
//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
?>
<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 );
$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 );
?>
<div id="backbonerevisionsoptions"></div>
<div id="backbonerevisionsoptions">
</div>
<div class="wrap">
<div class="icon32 icon32-posts-post" id="icon-edit"><br></div>
<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>
<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>
<div class="diff-slider-ticks-wrapper">
<div id="diff-slider-ticks">
</div>
</div>
<div id="backbonerevisionsinteract">
</div>
<div id="backbonerevisionsdiff">
</div>
<hr />
</div>
</div>
<script id="tmpl-revision" type="text/html">
<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>
<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>
<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>
<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>
<div id="removedandadded">
<div id="removed"><?php _e( 'Removed -' ); ?></div>
<div id="added"><?php _e( 'Added +' ); ?></div>
@@ -124,22 +144,18 @@ var wpRevisionsSettings = <?php echo json_encode( array( 'post_id' => $post->ID,
<script id="tmpl-revisionvinteract" type="text/html">
<div id="diffheader">
<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' ); ?>
<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>
<div id="slider" class="wp-slider"></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="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 }}}">
</div>
</script>
<?php