X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/e08b42e8ad054ec67522d7ac1aaae5dc68cb3d01..a9fa37e08fa731c7bd108a175c24876823bc071b:/wp-includes/js/mediaelement/wp-mediaelement.js diff --git a/wp-includes/js/mediaelement/wp-mediaelement.js b/wp-includes/js/mediaelement/wp-mediaelement.js index 505decd0..17f80519 100644 --- a/wp-includes/js/mediaelement/wp-mediaelement.js +++ b/wp-includes/js/mediaelement/wp-mediaelement.js @@ -1,16 +1,61 @@ /* global mejs, _wpmejsSettings */ -(function ($) { +(function( window, $ ) { + + window.wp = window.wp || {}; + // add mime-type aliases to MediaElement plugin support mejs.plugins.silverlight[0].types.push('video/x-ms-wmv'); mejs.plugins.silverlight[0].types.push('audio/x-ms-wma'); - $(function () { + function wpMediaElement() { var settings = {}; - if ( typeof _wpmejsSettings !== 'undefined' ) - settings.pluginPath = _wpmejsSettings.pluginPath; + /** + * Initialize media elements. + * + * Ensures media elements that have already been initialized won't be + * processed again. + * + * @since 4.4.0 + */ + function initialize() { + if ( typeof _wpmejsSettings !== 'undefined' ) { + settings = $.extend( true, {}, _wpmejsSettings ); + } + + settings.success = settings.success || function (mejs) { + var autoplay, loop; + + if ( 'flash' === mejs.pluginType ) { + autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay; + loop = mejs.attributes.loop && 'false' !== mejs.attributes.loop; + + autoplay && mejs.addEventListener( 'canplay', function () { + mejs.play(); + }, false ); + + loop && mejs.addEventListener( 'ended', function () { + mejs.play(); + }, false ); + } + }; + + // Only initialize new media elements. + $( '.wp-audio-shortcode, .wp-video-shortcode' ) + .not( '.mejs-container' ) + .filter(function () { + return ! $( this ).parent().hasClass( '.mejs-mediaelement' ); + }) + .mediaelementplayer( settings ); + } + + return { + initialize: initialize + }; + } + + window.wp.mediaelement = new wpMediaElement(); - $('.wp-audio-shortcode, .wp-video-shortcode').mediaelementplayer( settings ); - }); + $( window.wp.mediaelement.initialize ); -}(jQuery)); +})( window, jQuery );