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 reqAguments
= urlparts
[1];
10 addOnloadHook( function(){
11 //only do rewrites if MV_EMBED / js2 is "off"
12 if( typeof MV_EMBED_VERSION
== 'undefined' ) {
13 doPageSpecificRewrite();
17 function doPageSpecificRewrite() {
19 if( wgAction
== 'edit' || wgAction
== 'submit' ) {
20 load_mv_embed( function() {
21 importScriptURI( mwEmbedHostPath
+ '/editPage.js' + reqAguments
);
25 // Firefogg integration
26 if( wgPageName
== "Special:Upload" ){
27 load_mv_embed( function() {
28 importScriptURI( mwEmbedHostPath
+ '/uploadPage.js' + reqAguments
);
32 // OggHandler rewrite for view pages:
34 var divs
= document
.getElementsByTagName( 'div' );
35 for( var i
= 0; i
< divs
.length
; i
++ ) {
36 if( divs
[i
].id
&& divs
[i
].id
.substring( 0, 11 ) == 'ogg_player_' ) {
37 vidIdList
.push( divs
[i
].getAttribute( "id" ) );
40 if( vidIdList
.length
> 0 ) {
41 load_mv_embed( function() {
42 mvJsLoader
.embedVideoCheck( function() {
43 // Do utility rewrite of OggHandler content:
44 rewrite_for_OggHandler( vidIdList
);
49 // will be deprecated in favor of updates to OggHandler
50 function rewrite_for_OggHandler( vidIdList
){
51 for( var i
= 0; i
< vidIdList
.length
; i
++ ) {
52 var vidId
= vidIdList
[i
];
53 // Grab the thumbnail and src of the video
54 var pimg
= $j( '#' + vidId
+ ' img' );
55 var poster_attr
= 'poster = "' + pimg
.attr( 'src' ) + '" ';
56 var pwidth
= pimg
.attr( 'width' );
57 var pheight
= pimg
.attr( 'height' );
61 if( pwidth
== '22' && pheight
== '22' ) {
62 //set width to parent width:
63 pwidth
= $j( '#' + vidId
).width();
65 type_attr
= 'type="audio/ogg"';
73 var re
= new RegExp( /videoUrl(":?\s*)*([^&]*)/ );
74 src
= re
.exec( $j( '#'+vidId
).html() )[2];
76 var re
= new RegExp( /length(":?\s*)*([^&]*)/ );
77 duration
= re
.exec( $j( '#'+vidId
).html() )[2];
79 var re
= new RegExp( /offset(":?\s*)*([^&]*)/ );
80 offset
= re
.exec( $j( '#'+vidId
).html() )[2];
81 var offset_attr
= offset
? 'startOffset="' + offset
+ '"' : '';
83 // Rewrite that video id (do async calls to avoid locking)
85 // Replace the top div with the mv_embed based player:
86 var vid_html
= '<video id="vid_' + i
+'" '+
87 'src="' + src
+ '" ' +
91 'duration="' + duration
+ '" ' +
92 'style="width:' + pwidth
+ 'px;height:' +
93 pheight
+ 'px;"></video>';
94 //set the video tag inner html and update the height
95 $j( '#' + vidId
).html( vid_html
)
96 .css('height', pheight
+ 20);
100 rewrite_by_id( 'vid_' + i
);
104 function getRemoteEmbedPath() {
105 for( var i
= 0; i
< document
.getElementsByTagName( 'script' ).length
; i
++ ) {
106 var s
= document
.getElementsByTagName( 'script' )[i
];
107 if( s
.src
.indexOf( 'remoteMwEmbed.js' ) != -1 ) {
110 if( s
.src
.indexOf( '?' ) != -1) {
111 reqStr
= s
.src
.substr( s
.src
.indexOf( '?' ) );
112 scriptPath
= s
.src
.substr( 0, s
.src
.indexOf( '?' ) ).replace( 'remoteMwEmbed.js', '' );
114 scriptPath
= s
.src
.replace( 'remoteMwEmbed.js', '' )
116 // Use the external_media_wizard path:
117 return [scriptPath
, reqStr
];
122 function load_mv_embed( callback
) {
123 // Inject mv_embed if needed
124 if( typeof mvEmbed
== 'undefined' ) {
125 importScriptURI( mwEmbedHostPath
+ '/mwEmbed/mv_embed.js' + reqAguments
);
126 check_for_mv_embed( callback
);
128 check_for_mv_embed( callback
);
132 function check_for_mv_embed( callback
) {
133 if( typeof MV_EMBED_VERSION
== 'undefined' ) {
134 setTimeout( function(){
135 check_for_mv_embed( callback
);