mirror of
https://github.com/WordPress/WordPress.git
synced 2024-09-17 10:04:49 +02:00
d568679946
* Add a new folder in `wp-includes/js`, `media` * Create manifest files for `views`, `models`, `grid`, and `audio-video` * Make `browserify` an `npm` dependency * Add Grunt tasks for `browserify` and `uglify:media` on `build` and `watch` * Update the paths loaded for media files in `script-loader` * All new files were created using `svn cp` from their original location Please run `npm install`. While developing media JS, you must run `grunt watch`. See #28510. Built from https://develop.svn.wordpress.org/trunk@31373 git-svn-id: http://core.svn.wordpress.org/trunk@31354 1a063a9b-81f0-0310-95a4-ce76da25c4cd
78 lines
1.6 KiB
JavaScript
78 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; |