46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
|
/*globals jQuery, Backbone */
|
||
|
|
||
|
/**
|
||
|
* A router for handling the browser history and application state.
|
||
|
*
|
||
|
* @constructor
|
||
|
* @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;
|