diff --git a/src/wp-includes/js/media-grid.js b/src/wp-includes/js/media-grid.js index 0cb0654ff2..7324f3bdc8 100644 --- a/src/wp-includes/js/media-grid.js +++ b/src/wp-includes/js/media-grid.js @@ -306,10 +306,20 @@ // Show the modal with a specific item showItem: function( query ) { - var library = media.frame.state().get('library'); + var library = media.frame.state().get('library'), item; // Trigger the media frame to open the correct item - media.frame.trigger( 'edit:attachment', library.findWhere( { id: parseInt( query, 10 ) } ) ); + item = library.findWhere( { id: parseInt( query, 10 ) } ); + if ( item ) { + media.frame.trigger( 'edit:attachment', item ); + } else { + item = media.attachment( query ); + media.frame.listenTo( item, 'change', function( model ) { + media.frame.stopListening( item ); + media.frame.trigger( 'edit:attachment', model ); + } ); + item.fetch(); + } } }); @@ -373,9 +383,6 @@ if ( this.options.model ) { this.model = this.options.model; - } else { - // this is a hack - this.model = this.library.at( 0 ); } this.bindHandlers();