Press This:

- Show a spinner while saving a post.
- Do not redirect after saving a draft.
- Make the unidentified error message clearer.
Fixes #31875.
Built from https://develop.svn.wordpress.org/trunk@31992


git-svn-id: http://core.svn.wordpress.org/trunk@31971 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Andrew Ozz 2015-04-03 01:34:26 +00:00
parent d05236f756
commit 05a549723c
9 changed files with 100 additions and 36 deletions

View File

@ -1363,6 +1363,33 @@ html {
margin: 0 auto;
}
.spinner {
height: 20px;
width: 20px;
display: inline-block;
visibility: hidden;
background: url(../images/spinner.gif) no-repeat center;
-webkit-background-size: 20px 20px;
background-size: 20px 20px;
opacity: 0.7;
filter: alpha(opacity=70);
line-height: 30px;
vertical-align: baseline;
}
@media print,
(-webkit-min-device-pixel-ratio: 1.25),
(min-resolution: 120dpi) {
.spinner {
background-image: url(../images/spinner-2x.gif);
}
}
.spinner.is-visible {
visibility: visible;
}
/* Make the text inside the editor textarea white. Prevents a "flash" on loading the page */
#pressthis {
color: #fff;

File diff suppressed because one or more lines are too long

View File

@ -1363,6 +1363,33 @@ html {
margin: 0 auto;
}
.spinner {
height: 20px;
width: 20px;
display: inline-block;
visibility: hidden;
background: url(../images/spinner.gif) no-repeat center;
-webkit-background-size: 20px 20px;
background-size: 20px 20px;
opacity: 0.7;
filter: alpha(opacity=70);
line-height: 30px;
vertical-align: baseline;
}
@media print,
(-webkit-min-device-pixel-ratio: 1.25),
(min-resolution: 120dpi) {
.spinner {
background-image: url(../images/spinner-2x.gif);
}
}
.spinner.is-visible {
visibility: visible;
}
/* Make the text inside the editor textarea white. Prevents a "flash" on loading the page */
#pressthis {
color: #fff;

File diff suppressed because one or more lines are too long

View File

@ -148,23 +148,28 @@ class WP_Press_This {
}
if ( 'publish' === get_post_status( $post_id ) ) {
/**
* Filter the URL to redirect to when Press This saves.
*
* @since 4.2.0
*
* @param string $url Redirect URL. If `$status` is 'publish', this will be the post permalink.
* Otherwise, the post edit URL will be used.
* @param int $post_id Post ID.
* @param string $status Post status.
*/
$redirect = apply_filters( 'press_this_save_redirect', get_post_permalink( $post_id ), $post_id, $post['post_status'] );
$redirect = get_post_permalink( $post_id );
} else {
/** This filter is documented in wp-admin/includes/class-wp-press-this.php */
$redirect = apply_filters( 'press_this_save_redirect', get_edit_post_link( $post_id, 'raw' ), $post_id, $post['post_status'] );
$redirect = false;
}
wp_send_json_success( array( 'redirect' => $redirect ) );
/**
* Filter the URL to redirect to when Press This saves.
*
* @since 4.2.0
*
* @param string $url Redirect URL. If `$status` is 'publish', this will be the post permalink.
* Otherwise, the post edit URL will be used.
* @param int $post_id Post ID.
* @param string $status Post status.
*/
$redirect = apply_filters( 'press_this_save_redirect', $redirect, $post_id, $post['post_status'] );
if ( $redirect ) {
wp_send_json_success( array( 'redirect' => $redirect ) );
} else {
wp_send_json_success( array( 'postSaved' => true ) );
}
}
}
@ -1339,6 +1344,7 @@ class WP_Press_This {
</button>
</div>
<div class="post-actions">
<span class="spinner">&nbsp;</span>
<button type="button" class="button-subtle draft-button"><?php _e( 'Save Draft' ); ?></button>
<button type="button" class="button-subtle preview-button"><?php _e( 'Preview' ); ?></button>
<button type="button" class="button-primary publish-button"><?php echo ( current_user_can( 'publish_posts' ) ) ? __( 'Publish' ) : __( 'Submit for Review' ); ?></button>

View File

@ -101,7 +101,7 @@
* Show UX spinner
*/
function showSpinner() {
$( '#spinner' ).addClass( 'show' );
$( '.spinner' ).addClass( 'is-visible' );
$( '.post-actions button' ).each( function() {
$( this ).attr( 'disabled', 'disabled' );
} );
@ -111,7 +111,7 @@
* Hide UX spinner
*/
function hideSpinner() {
$( '#spinner' ).removeClass( 'show' );
$( '.spinner' ).removeClass( 'is-visible' );
$( '.post-actions button' ).each( function() {
$( this ).removeAttr( 'disabled' );
} );
@ -181,24 +181,28 @@
$.ajax( {
type: 'post',
url: window.ajaxurl,
data: data,
success: function( response ) {
if ( ! response.success ) {
renderError( response.data.errorMessage );
hideSpinner();
} else if ( response.data.redirect ) {
if ( window.opener && settings.redirInParent ) {
try {
window.opener.location.href = response.data.redirect;
} catch( er ) {}
data: data
}).always( function() {
hideSpinner();
}).done( function( response ) {
if ( ! response.success ) {
renderError( response.data.errorMessage );
} else if ( response.data.redirect ) {
if ( window.opener && settings.redirInParent ) {
try {
window.opener.location.href = response.data.redirect;
} catch( er ) {}
window.self.close();
} else {
window.location.href = response.data.redirect;
}
window.self.close();
} else {
window.location.href = response.data.redirect;
}
} else if ( response.data.postSaved ) {
// show "success" message?
}
} );
}).fail( function() {
renderError( __( 'serverError' ) );
});
}
/**

File diff suppressed because one or more lines are too long

View File

@ -478,7 +478,7 @@ function wp_default_scripts( &$scripts ) {
$scripts->add( 'press-this', "/wp-admin/js/press-this$suffix.js", array( 'jquery', 'tags-box' ), false, 1 );
did_action( 'init' ) && $scripts->localize( 'press-this', 'pressThisL10n', array(
'newPost' => __( 'Title' ),
'unexpectedError' => __( 'Sorry, but an unexpected error occurred.' ),
'serverError' => __( 'Connection lost or the server is busy. Please try again later.' ),
'saveAlert' => __( 'The changes you made will be lost if you navigate away from this page.' ),
/* translators: %d: nth embed found in a post */
'suggestedEmbedAlt' => __( 'Suggested embed #%d' ),

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.2-beta3-31991';
$wp_version = '4.2-beta3-31992';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.