WordPress.org

Make WordPress Core

Ticket #32423: 32423.diff

File 32423.diff, 2.5 KB (added by bradyvercher, 5 years ago)
  • src/wp-includes/js/mediaelement/wp-mediaelement.js

    diff --git src/wp-includes/js/mediaelement/wp-mediaelement.js src/wp-includes/js/mediaelement/wp-mediaelement.js
    index 8c4364a..32a17aa 100644
     
    11/* global mejs, _wpmejsSettings */
    2 (function ($) {
     2(function( window, $ ) {
    33        // add mime-type aliases to MediaElement plugin support
    44        mejs.plugins.silverlight[0].types.push('video/x-ms-wmv');
    55        mejs.plugins.silverlight[0].types.push('audio/x-ms-wma');
    66
    7         $(function () {
     7        function wpMediaElement() {
    88                var settings = {};
    99
    10                 if ( typeof _wpmejsSettings !== 'undefined' ) {
    11                         settings = _wpmejsSettings;
    12                 }
    13 
    14                 settings.success = settings.success || function (mejs) {
    15                         var autoplay, loop;
    16 
    17                         if ( 'flash' === mejs.pluginType ) {
    18                                 autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay;
    19                                 loop = mejs.attributes.loop && 'false' !== mejs.attributes.loop;
     10                /**
     11                 * Initialize media elements.
     12                 *
     13                 * Ensures media elements that have already been initialized won't be
     14                 * processed again.
     15                 *
     16                 * @since 4.4.0
     17                 */
     18                function initialize() {
     19                        if ( typeof _wpmejsSettings !== 'undefined' ) {
     20                                settings = _wpmejsSettings;
     21                        }
    2022
    21                                 autoplay && mejs.addEventListener( 'canplay', function () {
    22                                         mejs.play();
    23                                 }, false );
     23                        settings.success = settings.success || function (mejs) {
     24                                var autoplay, loop;
     25
     26                                if ( 'flash' === mejs.pluginType ) {
     27                                        autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay;
     28                                        loop = mejs.attributes.loop && 'false' !== mejs.attributes.loop;
     29
     30                                        autoplay && mejs.addEventListener( 'canplay', function () {
     31                                                mejs.play();
     32                                        }, false );
     33
     34                                        loop && mejs.addEventListener( 'ended', function () {
     35                                                mejs.play();
     36                                        }, false );
     37                                }
     38                        };
     39
     40                        // Only initialize new media elements.
     41                        $( '.wp-audio-shortcode, .wp-video-shortcode' )
     42                                .not( '.mejs-container' )
     43                                .filter(function() {
     44                                        return ! $( this ).parent().hasClass( '.mejs-mediaelement' );
     45                                })
     46                                .mediaelementplayer( settings );
     47                }
    2448
    25                                 loop && mejs.addEventListener( 'ended', function () {
    26                                         mejs.play();
    27                                 }, false );
    28                         }
     49                return {
     50                        initialize: initialize
    2951                };
     52        }
     53
     54        window.wp = window.wp || {};
     55        window.wp.mediaelement = new wpMediaElement();
    3056
    31                 $('.wp-audio-shortcode, .wp-video-shortcode').mediaelementplayer( settings );
    32         });
     57        $( document ).on( 'ready', window.wp.mediaelement.initialize );
    3358
    34 }(jQuery));
     59})( window, jQuery );