summaryrefslogtreecommitdiff
path: root/extensions/TimedMediaHandler/MwEmbedModules/TimedText/TimedText.loader.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/TimedMediaHandler/MwEmbedModules/TimedText/TimedText.loader.js')
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/TimedText.loader.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/TimedText/TimedText.loader.js b/extensions/TimedMediaHandler/MwEmbedModules/TimedText/TimedText.loader.js
new file mode 100644
index 00000000..bbd62d0e
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/TimedText/TimedText.loader.js
@@ -0,0 +1,52 @@
+/**
+* TimedText loader.
+*/
+// Scope everything in "mw" ( keeps the global namespace clean )
+( function( mw, $ ) {
+
+ /**
+ * Check if the video tags in the page support timed text
+ * this way we can add our timed text libraries to the player
+ * library request.
+ */
+ // Update the player loader request with timedText library if the embedPlayer
+ // includes timedText tracks.
+ $( mw ).bind( 'EmbedPlayerUpdateDependencies', function( event, playerElement, classRequest ) {
+ if( mw.isTimedTextSupported( playerElement ) ) {
+ classRequest = $.merge( classRequest, ['mw.TimedText'] );
+ }
+ } );
+ // On new embed player check if we need to add timedText
+ $( mw ).bind( 'EmbedPlayerNewPlayer', function( event, embedPlayer ){
+ if( mw.isTimedTextSupported( embedPlayer ) ){
+ embedPlayer.timedText = new mw.TimedText( embedPlayer );
+ }
+ });
+
+ /**
+ * Check timedText is active for a given embedPlayer
+ * @param {object} embedPlayer The player to be checked for timedText properties
+ */
+ mw.isTimedTextSupported = function( embedPlayer ) {
+ //EmbedPlayerNewPlayer passes a div with data-mwprovider set,
+ //EmbedPlayerUpdateDependencies passes video element with data attribute
+ //catch both
+ var mwprovider = embedPlayer['data-mwprovider'] || $( embedPlayer ).data('mwprovider');
+ var showInterface = mw.config.get( 'TimedText.ShowInterface.' + mwprovider ) ||
+ mw.config.get( 'TimedText.ShowInterface' );
+
+ if ( showInterface == 'always' ) {
+ return true;
+ } else if ( showInterface == 'off' ) {
+ return false;
+ }
+
+ // Check for standard 'track' attribute:
+ if ( $( embedPlayer ).find( 'track' ).length != 0 ) {
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+} )( mediaWiki, jQuery );