░▒▓████████████████████████████████▓▒░ ░▒▓█ ▓▒░ ░▒▓█ ~ S W A M P ~ ▓▒░ ░▒▓█ ▓▒░ ░▒▓████████████████████████████████▓▒░
pplmvsvm
LOCATION:
/datadrive/moodledata/filedir/8b/73
☗ ROOT
↻ REFRESH
✎ CARVE FLESH
EDITING: 8b7321bd8480575427429cc56955ea5ad5368750
var H5P = H5P || {}; /** * H5P audio module * * @external {jQuery} $ H5P.jQuery */ H5P.Audio = (function ($) { /** * @param {Object} params Options for this library. * @param {Number} id Content identifier * @returns {undefined} */ function C(params, id) { H5P.EventDispatcher.call(this); this.contentId = id; this.params = params; this.params = $.extend({}, { playerMode: 'minimalistic', fitToWrapper: false, controls: true, autoplay: false, audioNotSupported: "Your browser does not support this audio" }, params); // Use new copyright information if available. Fallback to old. if (params.files !== undefined && params.files[0] !== undefined && params.files[0].copyright !== undefined) { this.copyright = params.files[0].copyright; } else if (params.copyright !== undefined) { this.copyright = params.copyright; } this.on('resize', this.resize, this); } C.prototype = Object.create(H5P.EventDispatcher.prototype); C.prototype.constructor = C; /** * Adds a minimalistic audio player with only "play" and "pause" functionality. * * @param {jQuery} $container Container for the player. * @param {boolean} transparentMode true: the player is only visible when hovering over it; false: player's UI always visible */ C.prototype.addMinimalAudioPlayer = function ($container, transparentMode) { var INNER_CONTAINER = 'h5p-audio-inner'; var AUDIO_BUTTON = 'h5p-audio-minimal-button'; var PLAY_BUTTON = 'h5p-audio-minimal-play'; var PAUSE_BUTTON = 'h5p-audio-minimal-pause'; var self = this; this.$container = $container; self.$inner = $('<div/>', { 'class': INNER_CONTAINER + (transparentMode ? ' h5p-audio-transparent' : '') }).appendTo($container); var audioButton = $('<button/>', { 'class': AUDIO_BUTTON + " " + PLAY_BUTTON }).appendTo(self.$inner) .click( function () { if (self.audio.paused) { self.play(); } else { self.pause(); } }); //Fit to wrapper if (this.params.fitToWrapper) { audioButton.css({ 'width': '100%', 'height': '100%' }); } // cpAutoplay is passed from coursepresentation if (this.params.autoplay) { self.play(); } //Event listeners that change the look of the player depending on events. self.audio.addEventListener('ended', function () { audioButton.removeClass(PAUSE_BUTTON).addClass(PLAY_BUTTON); }); self.audio.addEventListener('play', function () { audioButton.removeClass(PLAY_BUTTON).addClass(PAUSE_BUTTON); }); self.audio.addEventListener('pause', function () { audioButton.removeClass(PAUSE_BUTTON).addClass(PLAY_BUTTON); }); this.$audioButton = audioButton; //Scale icon to container self.resize(); }; /** * Resizes the audio player icon when the wrapper is resized. */ C.prototype.resize = function () { // Find the smallest value of height and width, and use it to choose the font size. if (this.params.fitToWrapper && this.$container && this.$container.width()) { var w = this.$container.width(); var h = this.$container.height(); if (w < h) { this.$audioButton.css({'font-size': w / 2 + 'px'}); } else { this.$audioButton.css({'font-size': h / 2 + 'px'}); } } }; return C; })(H5P.jQuery); /** * Wipe out the content of the wrapper and put our HTML in it. * * @param {jQuery} $wrapper Our poor container. */ H5P.Audio.prototype.attach = function ($wrapper) { $wrapper.addClass('h5p-audio-wrapper'); // Check if browser supports audio. var audio = document.createElement('audio'); if (audio.canPlayType === undefined) { // Try flash this.attachFlash($wrapper); return; } // Add supported source files. if (this.params.files !== undefined && this.params.files instanceof Object) { for (var i = 0; i < this.params.files.length; i++) { var file = this.params.files[i]; if (audio.canPlayType(file.mime)) { var source = document.createElement('source'); source.src = H5P.getPath(file.path, this.contentId); source.type = file.mime; audio.appendChild(source); } } } if (!audio.children.length) { // Try flash this.attachFlash($wrapper); return; } if (this.endedCallback !== undefined) { audio.addEventListener('ended', this.endedCallback, false); } audio.className = 'h5p-audio'; audio.controls = this.params.controls === undefined ? true : this.params.controls; audio.preload = 'auto'; audio.style.display = 'block'; if (this.params.fitToWrapper === undefined || this.params.fitToWrapper) { audio.style.width = '100%'; if (!this.isRoot()) { // Only set height if this isn't a root audio.style.height = '100%'; } } this.audio = audio; if (this.params.playerMode === 'minimalistic') { audio.controls = false; this.addMinimalAudioPlayer($wrapper, false); } else if (this.params.playerMode === 'transparent') { audio.controls = false; this.addMinimalAudioPlayer($wrapper, true); } else { audio.autoplay = this.params.autoplay === undefined ? false : this.params.autoplay; $wrapper.html(audio); } }; /** * Attaches a flash audio player to the wrapper. * * @param {jQuery} $wrapper Our dear container. */ H5P.Audio.prototype.attachFlash = function ($wrapper) { if (this.params.files !== undefined && this.params.files instanceof Object) { for (var i = 0; i < this.params.files.length; i++) { var file = this.params.files[i]; if (file.mime === 'audio/mpeg' || file.mime === 'audio/mp3') { var audioSource = H5P.getPath(file.path, this.contentId); break; } } } if (audioSource === undefined) { $wrapper.addClass('h5p-audio-not-supported'); $wrapper.html( '<div class="h5p-audio-inner">' + '<div class="h5p-audio-not-supported-icon"><span/></div>' + '<span>' + this.params.audioNotSupported + '</span>' + '</div>' ); if (this.endedCallback !== undefined) { this.endedCallback(); } return; } var options = { buffering: true, clip: { url: window.location.protocol + '//' + window.location.host + audioSource, autoPlay: this.params.autoplay === undefined ? false : this.params.autoplay, scaling: 'fit' }, plugins: { controls: null } }; if (this.params.controls === undefined || this.params.controls) { options.plugins.controls = { fullscreen: false, autoHide: false }; } if (this.endedCallback !== undefined) { options.clip.onFinish = this.endedCallback; options.clip.onError = this.endedCallback; } this.flowplayer = flowplayer($wrapper[0], { src: "http://releases.flowplayer.org/swf/flowplayer-3.2.16.swf", wmode: "opaque" }, options); }; /** * Stop the audio. TODO: Rename to pause? * * @returns {undefined} */ H5P.Audio.prototype.stop = function () { if (this.flowplayer !== undefined) { this.flowplayer.stop().close().unload(); } if (this.audio !== undefined) { this.audio.pause(); } }; /** * Play */ H5P.Audio.prototype.play = function () { if (this.flowplayer !== undefined) { this.flowplayer.play(); } if (this.audio !== undefined) { this.audio.play(); } }; /** * @public * Pauses the audio. */ H5P.Audio.prototype.pause = function () { if (this.audio !== undefined) { this.audio.pause(); } }; /** * Gather copyright information for the current content. * * @returns {H5P.ContentCopyrights} Copyright information */ H5P.Audio.prototype.getCopyrights = function () { if (this.copyright === undefined) { return; } var info = new H5P.ContentCopyrights(); info.addMedia(new H5P.MediaCopyright(this.copyright)); return info; };
CANCEL
Name
Type
Size
Modified
Actions
↩ ..
DIR
—
—
📄 8b7321bd8480575427429cc56955ea5ad5368750
?
7.8 KB
2023-08-03 13:29
EDIT