diff --git a/wp-admin/includes/meta-boxes.php b/wp-admin/includes/meta-boxes.php index 13717c669a..c0ac23b452 100644 --- a/wp-admin/includes/meta-boxes.php +++ b/wp-admin/includes/meta-boxes.php @@ -1009,7 +1009,7 @@ function post_thumbnail_meta_box( $post ) { $thumbnailId = $element.find('input[name="thumbnail_id"]'), title = '', update = '', - frame, selection, setFeaturedImage; + frame, setFeaturedImage; setFeaturedImage = function( thumbnailId ) { $element.find('img').remove(); @@ -1020,52 +1020,50 @@ function post_thumbnail_meta_box( $post ) { $element.on( 'click', '.choose, img', function( event ) { event.preventDefault(); - if ( ! frame ) { - frame = wp.media({ - title: title, - library: { - type: 'image' - } - }); - - frame.toolbar( new wp.media.view.Toolbar({ - controller: frame, - items: { - update: { - style: 'primary', - text: update, - priority: 40, - - click: function() { - var selection = frame.state().get('selection'), - model = selection.first(), - sizes = model.get('sizes'), - size; - - setFeaturedImage( model.id ); - - // @todo: might need a size hierarchy equivalent. - if ( sizes ) - size = sizes['post-thumbnail'] || sizes.medium; - - // @todo: Need a better way of accessing full size - // data besides just calling toJSON(). - size = size || model.toJSON(); - - frame.close(); - selection.clear(); - - $( '', { - src: size.url, - width: size.width - }).prependTo( $element ); - } - } - } - }) ); + if ( frame ) { + frame.open(); + return; } - frame.open(); + frame = wp.media({ + title: title, + selection: [ wp.media.model.Attachment.get( $thumbnailId.val() ) ], + library: { + type: 'image' + } + }); + + frame.toolbar.on( 'activate:select', function() { + frame.toolbar.view().add({ + select: { + text: update, + + click: function() { + var selection = frame.state().get('selection'), + model = selection.first(), + sizes = model.get('sizes'), + size; + + setFeaturedImage( model.id ); + + // @todo: might need a size hierarchy equivalent. + if ( sizes ) + size = sizes['post-thumbnail'] || sizes.medium; + + // @todo: Need a better way of accessing full size + // data besides just calling toJSON(). + size = size || model.toJSON(); + + frame.close(); + + $( '', { + src: size.url, + width: size.width + }).prependTo( $element ); + } + } + }); + }); }); $element.on( 'click', '.remove', function( event ) {