Limit the featured image workflow to images only.

Adds the ability to set the values used to instantiate both the Workflow's library and selection.
Renames the Workflows internal `_pending` variable to prevent conflicts with a similarly named internal `Backbone.Model` variable.

see #21390, #21776.


git-svn-id: http://core.svn.wordpress.org/trunk@22022 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Daryl Koopersmith 2012-09-26 21:40:02 +00:00
parent 9e51aebdd7
commit 9e7a77aeda
2 changed files with 30 additions and 12 deletions

View File

@ -1030,7 +1030,12 @@ function post_thumbnail_meta_box( $post ) {
event.preventDefault();
if ( ! workflow ) {
workflow = wp.media();
workflow = wp.media({
library: {
type: 'image'
}
});
workflow.selection.on( 'add', function( model ) {
var sizes = model.get('sizes'),
size;

View File

@ -16,22 +16,32 @@
*/
media.controller.Workflow = Backbone.Model.extend({
defaults: {
multiple: false,
view: 'library'
multiple: false,
view: 'library',
library: {},
selection: []
},
initialize: function() {
this.createSelection();
// Initialize view storage.
this._views = {};
this._pending = {};
this._views = {};
this._pendingViews = {};
// Initialize modal container view.
this.modal = new media.view.Modal({ controller: this });
// Add default views.
this.add( 'library', media.view.Workspace.Library, { collection: media.query() } );
//
// Use the `library` property to initialize the corresponding view,
// then unset the property.
this.add( 'library', media.view.Workspace.Library, {
collection: media.query( this.get('library') )
} );
this.unset('library');
// Add the gallery view.
this.add( 'gallery', media.view.Workspace.Gallery, { collection: this.selection } );
},
@ -45,7 +55,7 @@
// Triggers the `add` and `add:VIEW_ID` events.
add: function( id, constructor, options ) {
this.remove( id );
this._pending[ id ] = {
this._pendingViews[ id ] = {
view: constructor,
options: options
};
@ -63,11 +73,11 @@
var pending;
id = id || this.get('view');
pending = this._pending[ id ];
pending = this._pendingViews[ id ];
if ( ! this._views[ id ] && pending ) {
this._views[ id ] = new pending.view( _.extend({ controller: this }, pending.options || {} ) );
delete this._pending[ id ];
delete this._pendingViews[ id ];
this.trigger( 'init init:' + id, this._views[ id ] );
}
@ -79,7 +89,7 @@
// Triggers the `remove` and `remove:VIEW_ID` events.
remove: function( id ) {
delete this._views[ id ];
delete this._pending[ id ];
delete this._pendingViews[ id ];
this.trigger( 'remove remove:' + id );
return this;
},
@ -96,7 +106,7 @@
view = this.view( id );
if ( ! view )
return;
return this;
view.render();
this.modal.content( view );
@ -107,7 +117,10 @@
var controller = this;
// Initialize workflow-specific models.
this.selection = new Attachments();
// Use the `selection` property to initialize the Attachments
// collection, then unset the property.
this.selection = new Attachments( this.get('selection') );
this.unset('selection');
_.extend( this.selection, {
// Override the selection's add method.