WordPress.org

Make WordPress Core

Ticket #27892: 27892.diff

File 27892.diff, 2.5 KB (added by wonderboymusic, 8 years ago)
  • src/wp-includes/js/mediaelement/wp-playlist.js

     
    77                initialize : function (options) {
    88                        this.index = 0;
    99                        this.settings = {};
     10                        this.compatMode = $( 'body' ).hasClass( 'wp-admin' ) && $( '#content_ifr' ).length;
    1011                        this.data = options.metadata || $.parseJSON( this.$('script').html() );
    1112                        this.playerNode = this.$( this.data.type );
    1213
     
    2627                                this.renderTracks();
    2728                        }
    2829
    29                         this.playerNode.attr( 'src', this.current.get( 'src' ) );
     30                        if ( this.isCompatibleSrc() ) {
     31                                this.playerNode.attr( 'src', this.current.get( 'src' ) );
     32                        }
    3033
    3134                        _.bindAll( this, 'bindPlayer', 'bindResetPlayer', 'setPlayer', 'ended', 'clickTrack' );
    3235
     
    4447
    4548                bindResetPlayer : function (mejs) {
    4649                        this.bindPlayer( mejs );
    47                         this.playCurrentSrc();
     50                        if ( this.isCompatibleSrc() ) {
     51                                this.playCurrentSrc();
     52                        }
    4853                },
    4954
    50                 setPlayer: function () {
     55                isCompatibleSrc: function () {
     56                        var testNode;
     57
     58                        if ( this.compatMode ) {
     59                                testNode = $( '<span><source type="' + this.current.get( 'type' ) + '" /></span>' );
     60
     61                                if ( ! wp.media.mixin.isCompatible( testNode ) ) {
     62                                        this.playerNode.removeAttr( 'src' );
     63                                        this.playerNode.removeAttr( 'poster' );
     64                                        return;
     65                                }
     66                        }
     67
     68                        return true;
     69                },
     70
     71                setPlayer: function (force) {
    5172                        if ( this._player ) {
    5273                                this._player.pause();
    5374                                this._player.remove();
    5475                                this.playerNode = this.$( this.data.type );
    55                                 this.playerNode.attr( 'src', this.current.get( 'src' ) );
     76                        }
     77
     78                        if (force) {
     79                                if ( this.isCompatibleSrc() ) {
     80                                        this.playerNode.attr( 'src', this.current.get( 'src' ) );
     81                                }
    5682                                this.settings.success = this.bindResetPlayer;
    5783                        }
     84
    5885                        /**
    5986                         * This is also our bridge to the outside world
    6087                         */
     
    134161                },
    135162
    136163                loadCurrent : function () {
    137                         var last = this.playerNode.attr( 'src' ).split('.').pop(),
     164                        var last = this.playerNode.attr( 'src' ) && this.playerNode.attr( 'src' ).split('.').pop(),
    138165                                current = this.current.get( 'src' ).split('.').pop();
    139166
    140                         this.player.pause();
     167                        this.player && this.player.pause();
    141168
    142169                        if ( last !== current ) {
    143                                 this.setPlayer();
    144                         } else {
     170                                this.setPlayer( true );
     171                        } else if ( this.isCompatibleSrc() ) {
    145172                                this.playerNode.attr( 'src', this.current.get( 'src' ) );
    146173                                this.playCurrentSrc();
    147174                        }