mirror of
https://github.com/WordPress/WordPress.git
synced 2024-09-14 08:37:58 +02:00
d9a2e85bfe
* specify globals in more files * add missing `wp.media.*` namespace docs * add doc blocks to files that had none See #28510. Built from https://develop.svn.wordpress.org/trunk@31492 git-svn-id: http://core.svn.wordpress.org/trunk@31473 1a063a9b-81f0-0310-95a4-ce76da25c4cd
79 lines
1.6 KiB
JavaScript
79 lines
1.6 KiB
JavaScript
/*globals _, jQuery */
|
|
|
|
/**
|
|
* wp.media.view.AttachmentFilters
|
|
*
|
|
* @class
|
|
* @augments wp.media.View
|
|
* @augments wp.Backbone.View
|
|
* @augments Backbone.View
|
|
*/
|
|
var View = require( './view.js' ),
|
|
$ = jQuery,
|
|
AttachmentFilters;
|
|
|
|
AttachmentFilters = View.extend({
|
|
tagName: 'select',
|
|
className: 'attachment-filters',
|
|
id: 'media-attachment-filters',
|
|
|
|
events: {
|
|
change: 'change'
|
|
},
|
|
|
|
keys: [],
|
|
|
|
initialize: function() {
|
|
this.createFilters();
|
|
_.extend( this.filters, this.options.filters );
|
|
|
|
// Build `<option>` elements.
|
|
this.$el.html( _.chain( this.filters ).map( function( filter, value ) {
|
|
return {
|
|
el: $( '<option></option>' ).val( value ).html( filter.text )[0],
|
|
priority: filter.priority || 50
|
|
};
|
|
}, this ).sortBy('priority').pluck('el').value() );
|
|
|
|
this.listenTo( this.model, 'change', this.select );
|
|
this.select();
|
|
},
|
|
|
|
/**
|
|
* @abstract
|
|
*/
|
|
createFilters: function() {
|
|
this.filters = {};
|
|
},
|
|
|
|
/**
|
|
* When the selected filter changes, update the Attachment Query properties to match.
|
|
*/
|
|
change: function() {
|
|
var filter = this.filters[ this.el.value ];
|
|
if ( filter ) {
|
|
this.model.set( filter.props );
|
|
}
|
|
},
|
|
|
|
select: function() {
|
|
var model = this.model,
|
|
value = 'all',
|
|
props = model.toJSON();
|
|
|
|
_.find( this.filters, function( filter, id ) {
|
|
var equal = _.all( filter.props, function( prop, key ) {
|
|
return prop === ( _.isUndefined( props[ key ] ) ? null : props[ key ] );
|
|
});
|
|
|
|
if ( equal ) {
|
|
return value = id;
|
|
}
|
|
});
|
|
|
|
this.$el.val( value );
|
|
}
|
|
});
|
|
|
|
module.exports = AttachmentFilters;
|