a1fd0eb863ec29cf6e4cad69b2576295a49224fb
2 * this file exposes some of the functionality of mwEmbed to wikis
3 * that do not yet have js2 enabled
6 var urlparts
= getRemoteEmbedPath();
7 var mwEmbedHostPath
= urlparts
[0];
8 var mwRemoteVersion
= '1.0';
10 reqArguments
= urlparts
[1];
12 //setup up request Params:
13 var reqParts
= urlparts
[1].split('&');
15 for(var i
=0;i
< reqParts
.length
; i
++){
16 var p
= reqParts
[i
].split('=');
18 reqParam
[ p
[0] ]= p
[1];
21 addOnloadHook( function(){
22 //only do rewrites if MV_EMBED / js2 is "off"
23 if( typeof MV_EMBED_VERSION
== 'undefined' ) {
24 doPageSpecificRewrite();
28 function doPageSpecificRewrite() {
30 if( wgAction
== 'edit' || wgAction
== 'submit' ) {
31 load_mv_embed( function() {
32 loadExternalJs( mwEmbedHostPath
+ '/editPage.js' + reqArguments
);
37 if(wgPageName
.indexOf("TimedText") === 0){
38 load_mv_embed(function(){
39 loadExternalJs( mwEmbedHostPath
+ '/mwEmbed/libTimedText/mvTimeTextEdit.js' + reqArguments
);
43 // Firefogg integration
44 if( wgPageName
== "Special:Upload" ){
45 load_mv_embed( function() {
46 loadExternalJs( mwEmbedHostPath
+ '/uploadPage.js' + reqArguments
);
50 // Special api proxy page
51 if( wgPageName
== 'MediaWiki:ApiProxy' ){
52 var wgEnableIframeApiProxy
= true;
53 load_mv_embed( function() {
54 js_log("Wiki:ApiProxy::");
55 loadExternalJs( mwEmbedHostPath
+ '/apiProxyPage.js' + reqArguments
);
59 // OggHandler rewrite for view pages:
61 var divs
= document
.getElementsByTagName( 'div' );
62 for( var i
= 0; i
< divs
.length
; i
++ ) {
63 if( divs
[i
].id
&& divs
[i
].id
.substring( 0, 11 ) == 'ogg_player_' ) {
64 vidIdList
.push( divs
[i
].getAttribute( "id" ) );
67 if( vidIdList
.length
> 0 ) {
68 load_mv_embed( function() {
69 mvJsLoader
.embedVideoCheck( function() {
70 // Do utility rewrite of OggHandler content:
71 rewrite_for_OggHandler( vidIdList
);
76 // will be depreciated in favor of updates to OggHandler
77 function rewrite_for_OggHandler( vidIdList
){
78 function procVidId( vidId
){
79 //don't process empty vids
82 js_log('vidIdList on: ' + vidId
+' length: ' + vidIdList
.length
+ ' left in the set: ' + vidIdList
);
84 // Grab the thumbnail and src of the video
85 var pimg
= $j( '#' + vidId
+ ' img' );
86 var poster_attr
= 'poster = "' + pimg
.attr( 'src' ) + '" ';
87 var pwidth
= $j( '#' + vidId
).width();
88 var pheight
= $j( '#' + vidId
+ ' img').height();
89 var tag_type
= 'video';
92 if( pheight
== '22' || pheight
== '52') {
93 //set width to parent width:
100 var duration_attr
= '';
101 var wikiTitleKey
= $j( '#'+vidId
+ ' img').filter(':first').attr('src').split('/');
102 wikiTitleKey
= unescape( wikiTitleKey
[ wikiTitleKey
.length
- 2 ] );
103 var re
= new RegExp( /videoUrl(":?\s*)*([^&]*)/ );
104 src
= re
.exec( $j( '#'+vidId
).html() )[2];
106 var re
= new RegExp( /length(":?\s*)*([^,]*)/ );
107 var dv
= re
.exec( $j( '#'+vidId
).html() )[2];
109 duration_attr
= 'durationHint="'+ dv
+'" ';
112 var re
= new RegExp( /offset(":?\s*)*([^&]*)/ );
113 offset
= re
.exec( $j( '#'+vidId
).html() )[2];
114 var offset_attr
= offset
? 'startOffset="' + offset
+ '"' : '';
119 var common_attr
= ' id="mwe_' + vidId
+'" '+
120 'wikiTitleKey="' + wikiTitleKey
+ '" ' +
121 'src="' + src
+ '" ' +
125 if( tag_type
== 'audio' ){
126 html_out
='<audio' + common_attr
+ ' style="width:' + pwidth
+ 'px;"></audio>';
128 html_out
='<video' + common_attr
+
130 'style="width:' + pwidth
+ 'px;height:' + pheight
+ 'px;">' +
133 //set the video tag inner html and update the height
134 $j( '#' + vidId
).html( html_out
)
135 .css('height', pheight
+ 30);
138 rewrite_by_id( 'mwe_' + vidId
, function(){
139 if( vidIdList
.length
!= 0 ){
140 setTimeout( function(){
141 procVidId( vidIdList
.pop() )
146 //process each item in the vidIdList (with setTimeout to avoid locking)
147 procVidId( vidIdList
.pop() );
149 function getRemoteEmbedPath() {
150 for( var i
= 0; i
< document
.getElementsByTagName( 'script' ).length
; i
++ ) {
151 var s
= document
.getElementsByTagName( 'script' )[i
];
152 if( s
.src
.indexOf( '/remoteMwEmbed.js' ) != -1 ) {
155 if( s
.src
.indexOf( '?' ) != -1) {
156 reqStr
= s
.src
.substr( s
.src
.indexOf( '?' ) );
157 scriptPath
= s
.src
.substr( 0, s
.src
.indexOf( '?' ) ).replace( '/remoteMwEmbed.js', '' );
159 scriptPath
= s
.src
.replace( '/remoteMwEmbed.js', '' )
161 // Use the external_media_wizard path:
162 return [scriptPath
, reqStr
];
167 function load_mv_embed( callback
) {
168 // Inject mv_embed if needed
169 if( typeof $mw
== 'undefined' ) {
170 if( reqParam
['uselang'] || reqParam
['useloader'] ){
171 var rurl
= mwEmbedHostPath
+ '/mwEmbed/jsScriptLoader.php?class=mv_embed';
172 if(typeof window
.jQuery
== 'undefined'){
173 rurl
+= ',window.jQuery';
175 if(reqParam
['urid']){
176 rurl
+='&urid=' + reqParam
['urid'];
178 rurl
+='&urid=' + mwRemoteVersion
;
180 if(reqParam
['uselang'] )
181 rurl
+='&uselang=' + reqParam
['uselang'];
183 importScriptURI(rurl
);
185 importScriptURI( mwEmbedHostPath
+ '/mwEmbed/mv_embed.js' + reqArguments
);
188 check_for_mv_embed( callback
);
191 function check_for_mv_embed( callback
) {
192 if( typeof $mw
== 'undefined' ) {
193 setTimeout( function(){
194 check_for_mv_embed( callback
);