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 loadExternalJs( mwEmbedHostPath + '/editPage.js' + reqAguments );
25 // Firefogg integration
26 if( wgPageName == "Special:Upload" ){
27 load_mv_embed( function() {
28 loadExternalJs( mwEmbedHostPath + '/uploadPage.js' + reqAguments );
32 // Special api proxy page
33 if( wgPageName == 'MediaWiki:ApiProxy' ){
34 var wgEnableIframeApiProxy = true;
35 load_mv_embed( function() {
36 js_log("Wiki:ApiProxy::");
37 loadExternalJs( mwEmbedHostPath + '/apiProxyPage.js' + reqAguments );
42 // OggHandler rewrite for view pages:
44 var divs = document.getElementsByTagName( 'div' );
45 for( var i = 0; i < divs.length; i++ ) {
46 if( divs[i].id && divs[i].id.substring( 0, 11 ) == 'ogg_player_' ) {
47 vidIdList.push( divs[i].getAttribute( "id" ) );
50 if( vidIdList.length > 0 ) {
51 load_mv_embed( function() {
52 mvJsLoader.embedVideoCheck( function() {
53 // Do utility rewrite of OggHandler content:
54 rewrite_for_OggHandler( vidIdList );
59 // will be deprecated in favor of updates to OggHandler
60 function rewrite_for_OggHandler( vidIdList ){
61 for( var i = 0; i < vidIdList.length; i++ ) {
62 var vidId = vidIdList[i];
63 // Grab the thumbnail and src of the video
64 var pimg = $j( '#' + vidId + ' img' );
65 var poster_attr = 'poster = "' + pimg.attr( 'src' ) + '" ';
66 var pwidth = pimg.attr( 'width' );
67 var pheight = pimg.attr( 'height' );
71 if( pwidth == '22' && pheight == '22' ) {
72 //set width to parent width:
73 pwidth = $j( '#' + vidId ).width();
75 type_attr = 'type="audio/ogg"';
83 var re = new RegExp( /videoUrl(":?\s*)*([^&]*)/ );
84 src = re.exec( $j( '#'+vidId).html() )[2];
86 var re = new RegExp( /length(":?\s*)*([^&]*)/ );
87 duration = re.exec( $j( '#'+vidId).html() )[2];
89 var re = new RegExp( /offset(":?\s*)*([^&]*)/ );
90 offset = re.exec( $j( '#'+vidId).html() )[2];
91 var offset_attr = offset ? 'startOffset="' + offset + '"' : '';
93 // Rewrite that video id (do async calls to avoid locking)
95 // Replace the top div with the mv_embed based player:
96 var vid_html = '<video id="vid_' + i +'" '+
97 'src="' + src + '" ' +
101 'duration="' + duration + '" ' +
102 'style="width:' + pwidth + 'px;height:' +
103 pheight + 'px;"></video>';
104 //set the video tag inner html and update the height
105 $j( '#' + vidId ).html( vid_html )
106 .css('height', pheight + 30);
110 rewrite_by_id( 'vid_' + i );
114 function getRemoteEmbedPath() {
115 for( var i = 0; i < document.getElementsByTagName( 'script' ).length; i++ ) {
116 var s = document.getElementsByTagName( 'script' )[i];
117 if( s.src.indexOf( '/remoteMwEmbed.js' ) != -1 ) {
120 if( s.src.indexOf( '?' ) != -1) {
121 reqStr = s.src.substr( s.src.indexOf( '?' ) );
122 scriptPath = s.src.substr( 0, s.src.indexOf( '?' ) ).replace( '/remoteMwEmbed.js', '' );
124 scriptPath = s.src.replace( '/remoteMwEmbed.js', '' )
126 // Use the external_media_wizard path:
127 return [scriptPath, reqStr];
132 function load_mv_embed( callback ) {
134 console.log( 'load_mv_embed');
135 // Inject mv_embed if needed
136 if( typeof mvEmbed == 'undefined' ) {
137 importScriptURI( mwEmbedHostPath + '/mwEmbed/mv_embed.js' + reqAguments );
138 check_for_mv_embed( callback );
140 check_for_mv_embed( callback );
144 function check_for_mv_embed( callback ) {
145 if( typeof MV_EMBED_VERSION == 'undefined' ) {
146 setTimeout( function(){
147 check_for_mv_embed( callback );