49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
/*globals wp, Backbone */
|
|
|
|
/**
|
|
* wp.media.view.MediaFrame.Manage.Router
|
|
*
|
|
* A router for handling the browser history and application state.
|
|
*
|
|
* @class
|
|
* @augments Backbone.Router
|
|
*/
|
|
var Router = Backbone.Router.extend({
|
|
routes: {
|
|
'upload.php?item=:slug': 'showItem',
|
|
'upload.php?search=:query': 'search'
|
|
},
|
|
|
|
// Map routes against the page URL
|
|
baseUrl: function( url ) {
|
|
return 'upload.php' + url;
|
|
},
|
|
|
|
// Respond to the search route by filling the search field and trigggering the input event
|
|
search: function( query ) {
|
|
jQuery( '#media-search-input' ).val( query ).trigger( 'input' );
|
|
},
|
|
|
|
// Show the modal with a specific item
|
|
showItem: function( query ) {
|
|
var media = wp.media,
|
|
library = media.frame.state().get('library'),
|
|
item;
|
|
|
|
// Trigger the media frame to open the correct item
|
|
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();
|
|
}
|
|
}
|
|
});
|
|
|
|
module.exports = Router;
|