http://www.mediawiki.org/wiki/Special:Code/MediaWiki/82780

Revision: 82780
Author:   dale
Date:     2011-02-25 01:29:11 +0000 (Fri, 25 Feb 2011)
Log Message:
-----------
fixed $.cookie object usage
fixed timed text loading to use parser where needed. 

Modified Paths:
--------------
    
trunk/extensions/MwEmbedSupport/MwEmbedModules/MwEmbedSupport/mwEmbedSupport.js
    
trunk/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/MediaPlayers.js
    
trunk/extensions/TimedMediaHandler/MwEmbedModules/TimedText/resources/mw.TimedText.js
    trunk/extensions/TimedMediaHandler/TimedMediaTransformOutput.php

Modified: 
trunk/extensions/MwEmbedSupport/MwEmbedModules/MwEmbedSupport/mwEmbedSupport.js
===================================================================
--- 
trunk/extensions/MwEmbedSupport/MwEmbedModules/MwEmbedSupport/mwEmbedSupport.js 
    2011-02-25 01:24:21 UTC (rev 82779)
+++ 
trunk/extensions/MwEmbedSupport/MwEmbedModules/MwEmbedSupport/mwEmbedSupport.js 
    2011-02-25 01:29:11 UTC (rev 82780)
@@ -157,13 +157,13 @@
                        return 'mw_message_swap_index_' + key + '_' + index;
                };
 
-               var doSpecialSwap = false;
-       
-
+               var doSpecialSwap = false;      
                
+               var     text = mediaWiki.messages.get( key );
+               if( !text){
+                       return '<' + key + '>';
+               }
                
-               var     text = mediaWiki.messages.get( key )
-               
                // replace links:               
                text = text.replace( /\[(\S+)\s+([^\]]*)\]/g, function( 
matched, link, linkText ) {
                        var indexIdAttribute = '';

Modified: 
trunk/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/MediaPlayers.js
===================================================================
--- 
trunk/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/MediaPlayers.js
     2011-02-25 01:24:21 UTC (rev 82779)
+++ 
trunk/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/MediaPlayers.js
     2011-02-25 01:29:11 UTC (rev 82780)
@@ -134,7 +134,7 @@
         */
        setFormatPreference : function ( mimeFormat ) {
                 this.preference['formatPreference'] = mimeFormat;
-                $.cookie( 'EmbedPlayer.Preference', this.preference);
+                $.cookie( 'EmbedPlayer.Preference', JSON.stringify( 
this.preference) );
        },
 
        /**
@@ -152,7 +152,7 @@
                                selectedPlayer = this.players[i];
                                mw.log( 'EmbedPlayer::setPlayerPreference: 
choosing ' + playerId + ' for ' + mimeType );
                                this.preference[ mimeType ] = playerId;
-                               $.cookie( 'EmbedPlayer.Preference', 
this.preference );
+                               $.cookie( 'EmbedPlayer.Preference', 
JSON.stringify( this.preference ) );
                                break;
                        }
                }
@@ -176,7 +176,7 @@
                this.preference = { };          
                // See if we have a cookie set to a clientSupported type:
                if( $.cookie( 'EmbedPlayer.Preference' ) ) {
-                       this.preference = $.cookie( 'EmbedPlayer.Preference' );
+                       this.preference = JSON.parse( $.cookie( 
'EmbedPlayer.Preference' ) );
                }
        }
 };

Modified: 
trunk/extensions/TimedMediaHandler/MwEmbedModules/TimedText/resources/mw.TimedText.js
===================================================================
--- 
trunk/extensions/TimedMediaHandler/MwEmbedModules/TimedText/resources/mw.TimedText.js
       2011-02-25 01:24:21 UTC (rev 82779)
+++ 
trunk/extensions/TimedMediaHandler/MwEmbedModules/TimedText/resources/mw.TimedText.js
       2011-02-25 01:29:11 UTC (rev 82780)
@@ -18,7 +18,8 @@
        mw.mergeConfig( 'EmbedPlayer.SourceAttributes', [
           'srclang',
           'category',
-          'label'
+          'label',
+          'data-mwtitle'
        ]);
        
        /**
@@ -129,7 +130,7 @@
                        // Load user preferences config:
                        var preferenceConfig = $.cookie( 'TimedText.Prefrences' 
);
                        if( preferenceConfig !== null ) {
-                               this.config = preferenceConfig;
+                               this.config = JSON.parse(  preferenceConfig );
                        }
                        // Set up embedPlayer hooks:
                        
@@ -398,23 +399,7 @@
                loadTextSources: function( callback ) {
                        var _this = this;
                        this.textSources = [ ];
-                       // Get local reference to all timed text sources: ( 
text/xml, text/x-srt etc )
-                       var inlineSources = 
this.embedPlayer.mediaElement.getSources( 'text' );
                        
-                       // Add all the sources to textSources
-                       for( var i = 0 ; i < inlineSources.length ; i++ ) {
-                               // Make a new textSource:
-                               var source = new TextSource( inlineSources[i] 
);                                
-                               this.textSources.push( source );
-                       }
-
-                       // If there are inline sources or no apiTitleKey we are 
done loading 
-                       if( this.textSources.length != 0 || 
!this.embedPlayer.apiTitleKey ) {
-                               // No other sources just issue the callback:
-                               callback();
-                               return ;
-                       }
-                       
                        // Try to get sources from text provider:
                        var provider_id = ( this.embedPlayer.apiProvider ) ? 
this.embedPlayer.apiProvider : 'local';
                        var apiUrl = mw.getApiProviderURL( provider_id );
@@ -430,6 +415,21 @@
                                'apiUrl': apiUrl,
                                'embedPlayer': this.embedPlayer
                        } );
+                       // Get local reference to all timed text sources: ( 
text/xml, text/x-srt etc )
+                       var inlineSources = 
this.embedPlayer.mediaElement.getSources( 'text' );
+                       
+                       // Add all the sources to textSources
+                       for( var i = 0 ; i < inlineSources.length ; i++ ) {
+                               // Make a new textSource:
+                               var source = new TextSource( inlineSources[i] , 
this.textProvider);                             
+                               this.textSources.push( source);
+                       }
+                       
+                       // If there are inline sources don't check the api )  
+                       if( this.textSources.length != 0 ){
+                               callback();
+                               return ;
+                       }
 
                        // Load the textProvider sources
                        this.textProvider.loadSources( apiTitleKey, function( 
textSources ) {
@@ -933,7 +933,7 @@
                */
                refreshDisplay: function() {
                        // Update the configuration object
-                       $.cookie( 'TimedText.Prefrences', this.config );
+                       $.cookie( 'TimedText.Prefrences',  JSON.stringify( 
this.config ) );
                        
                        // Empty out previous text to force an interface update:
                        this.prevText = [];
@@ -1071,7 +1071,6 @@
                        mw.log(" addItextDiv: " + category );
                        // Get the relative positioned player class from the 
controlBuilder:
                        var $playerTarget = this.embedPlayer.$interface;
-
                        //Remove any existing track divs for this player;
                        $playerTarget.find('.track_' + category ).remove();
 
@@ -1165,11 +1164,14 @@
                /**
                 * @constructor Inherits mediaSource from embedPlayer
                 * @param {source} Base source element
+                * @param {Object} Pointer to the textProvider 
                 */
-               init: function( source , textProvider) {
-                       for( var i in source) {
-                               this[i] = source[i];
+               init: function( source , textProvider) {        
+                       //      Inherits mediaSource    
+                       for( var i in source){
+                               this[ i ] =  source[ i];
                        }
+                       
                        // Set default category to subtitle if unset:
                        if( ! this.category ) {
                                this.category = 'SUB';
@@ -1177,7 +1179,16 @@
                        //Set the textProvider if provided
                        if( textProvider ) {
                                this.textProvider = textProvider;
+                               
+                               // switch type to mw-srt if we are going to 
load via api 
+                               // ( this is need because we want to represent 
one thing to search engines / crawlers, 
+                               // while representing the mw-srt type 
internally so that mediawiki parsed text 
+                               // gets converted to html before going into the 
video 
+                               if( this.mwtitle ){
+                                       this.mimeType = 'text/mw-srt';
+                               }
                        }
+                       return this;
                },
 
                /**
@@ -1195,7 +1206,6 @@
                                }
                        };
                        _this.loaded = true;
-                       
                        // Set parser handler:
                        switch( this.getMIMEType() ) {
                                //Special mediaWiki srt format ( support 
wiki-text in srt's )
@@ -1216,13 +1226,12 @@
                                mw.log("Error: no handler for type: " + 
this.getMIMEType() );
                                return ;
                        }
-
                        // Try to load src via textProvider:
-                       if( this.textProvider && this.titleKey ) {
-                               this.textProvider.loadTitleKey( this.titleKey, 
function( data ) {
+                       if( this.textProvider && this.mwtitle) {
+                               this.textProvider.loadTitleKey( this.mwtitle, 
function( data ) {
                                        if( data ) {
                                                _this.captions = handler( data 
);
-                                       }
+                                       }                       
                                        mw.log("mw.TimedText:: loaded from 
titleKey: " + _this.captions.length + ' captions');
                                        // Update the loaded state:
                                        _this.loaded = true;

Modified: trunk/extensions/TimedMediaHandler/TimedMediaTransformOutput.php
===================================================================
--- trunk/extensions/TimedMediaHandler/TimedMediaTransformOutput.php    
2011-02-25 01:24:21 UTC (rev 82779)
+++ trunk/extensions/TimedMediaHandler/TimedMediaTransformOutput.php    
2011-02-25 01:29:11 UTC (rev 82780)
@@ -251,7 +251,7 @@
                $data = $api->getResultData();                  
                // Get the list of language Names
                $langNames = Language::getLanguageNames();
-               
+
                if( $data['query'] && $data['query']['allpages'] ){
                        foreach( $data['query']['allpages'] as $na => $page ){
                                $subTitle = Title::newFromText( $page['title'] 
) ;
@@ -269,6 +269,7 @@
                                $this->textTracks[] = array(            
                                        'kind' => 'subtitles',
                                        'data-mwtitle' => 
$subTitle->getNsText() . ':' . $subTitle->getDBkey(),
+                                       'data-mwprovider' => 'local',           
                
                                        'type' => 'text/x-srt',
                                        // TODO Should add a special entry 
point and output proper WebVTT format:
                                        // 
http://www.whatwg.org/specs/web-apps/current-work/webvtt.html


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to