diff --git a/src/wp-admin/includes/plugin-install.php b/src/wp-admin/includes/plugin-install.php index c700a6bec8..b8cf32f021 100644 --- a/src/wp-admin/includes/plugin-install.php +++ b/src/wp-admin/includes/plugin-install.php @@ -561,7 +561,7 @@ function install_plugin_information() { break; case 'update_available': if ( $status['url'] ) { - echo '' . __( 'Install Update Now' ) .''; + echo '' . __( 'Install Update Now' ) .''; } break; case 'newer_installed': diff --git a/src/wp-admin/js/updates.js b/src/wp-admin/js/updates.js index d6d8ed84df..05ad2515c7 100644 --- a/src/wp-admin/js/updates.js +++ b/src/wp-admin/js/updates.js @@ -1,3 +1,4 @@ +/* global tb_remove */ window.wp = window.wp || {}; (function( $, wp, pagenow ) { @@ -473,6 +474,26 @@ window.wp = window.wp || {}; wp.updates.updatePlugin( $button.data( 'plugin' ), $button.data( 'slug' ) ); } ); + // + $( '#plugin_update_from_iframe' ).on( 'click' , function( e ) { + var target, data; + + target = window.parent == window ? null : window.parent, + $.support.postMessage = !! window.postMessage; + + if ( $.support.postMessage === false || target === null ) + return; + + e.preventDefault(); + + data = { + 'action' : 'updatePlugin', + 'slug' : $(this).data('slug') + }; + + target.postMessage( JSON.stringify( data ), window.location.origin ); + }); + } ); $( window ).on( 'message', function( e ) { @@ -487,11 +508,29 @@ window.wp = window.wp || {}; message = $.parseJSON( event.data ); - if ( typeof message.action === 'undefined' || message.action !== 'decrementUpdateCount' ) { + if ( typeof message.action === 'undefined' ) { return; } - wp.updates.decrementCount( message.upgradeType ); + switch (message.action){ + case 'decrementUpdateCount' : + wp.updates.decrementCount( message.upgradeType ); + break; + case 'updatePlugin' : + tb_remove(); + if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) { + // Return the user to the input box of the plugin's table row after closing the modal. + $( '#' + message.slug ).find( '.check-column input' ).focus(); + // trigger the update + $( '.plugin-update-tr[data-slug="' + message.slug + '"]' ).find( '.update-link' ).trigger( 'click' ); + } else if ( 'plugin-install' === pagenow ) { + $( '.plugin-card-' + message.slug ).find( 'h4 a' ).focus(); + $( '.plugin-card-' + message.slug ).find( '[data-slug="' + message.slug + '"]' ).trigger( 'click' ); + } + break; + } + + } );