43 lines
1.0 KiB
JavaScript
43 lines
1.0 KiB
JavaScript
/*globals wp, Backbone, _ */
|
|
|
|
/**
|
|
* wp.media.model.PostMedia
|
|
*
|
|
* Shared model class for audio and video. Updates the model after
|
|
* "Add Audio|Video Source" and "Replace Audio|Video" states return
|
|
*
|
|
* @class
|
|
* @augments Backbone.Model
|
|
*/
|
|
var PostMedia = Backbone.Model.extend({
|
|
initialize: function() {
|
|
this.attachment = false;
|
|
},
|
|
|
|
setSource: function( attachment ) {
|
|
this.attachment = attachment;
|
|
this.extension = attachment.get( 'filename' ).split('.').pop();
|
|
|
|
if ( this.get( 'src' ) && this.extension === this.get( 'src' ).split('.').pop() ) {
|
|
this.unset( 'src' );
|
|
}
|
|
|
|
if ( _.contains( wp.media.view.settings.embedExts, this.extension ) ) {
|
|
this.set( this.extension, this.attachment.get( 'url' ) );
|
|
} else {
|
|
this.unset( this.extension );
|
|
}
|
|
},
|
|
|
|
changeAttachment: function( attachment ) {
|
|
this.setSource( attachment );
|
|
|
|
this.unset( 'src' );
|
|
_.each( _.without( wp.media.view.settings.embedExts, this.extension ), function( ext ) {
|
|
this.unset( ext );
|
|
}, this );
|
|
}
|
|
});
|
|
|
|
module.exports = PostMedia;
|