Jump to content

MediaWiki:Wikimediaplayer.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
//Wikimediaplayer, Based on wikiminiatlas by dschwen
var wikimediaplayer =
{
 wmpconfig:
 {
  width  : 400,
  height : 450,
  playerurl : '//tools.wikimedia.de/~gmaxwell/jorbis/JOrbisPlayer.php',
  buttonImage: '//upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Nuvola_apps_kaboodle.png/18px-Nuvola_apps_kaboodle.png',
  largebuttonImage: '//upload.wikimedia.org/wikipedia/commons/0/0c/Nuvola_apps_kaboodle.png',
  imgbase   : '//tools.wikimedia.de/~dschwen/wikiminiatlas/tiles/'
 },

 strings:
 {
  buttonTooltip : {
   en:'Play media'
  },
  close : {
   de:'schließen',
   en:'close',
   eu:'itxi',
   es:'cerrar'
  }
 },

 link : null,
 links : null,

 language : 'en',
 iframe : { div: null, iframe: null, closebutton: null},

 playpath : '',

 // cross-browser event attachment (John Resig)
 // http//www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
 addEvent : function ( obj, type, fn )
 {
  if (obj.addEventListener)
   obj.addEventListener( type, fn, false );
  else if (obj.attachEvent)
  {
   obj["e"+type+fn] = fn;
   obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
   obj.attachEvent( "on"+type, obj[type+fn] );
  }
 },

  // vertikale position auf der Seite bestimmen
 totalOffset : function( obj, offset )
 {
  if( obj.offsetParent == null || 
      obj.offsetParent.id == 'content' )
   return offset + obj.offsetTop;
  else
   return wikimediaplayer.totalOffset(obj.offsetParent, offset + obj.offsetTop );
 },

 // move iframe around and toggle visibility
 toggleIFrame : function( e )
 {
  with(wikimediaplayer)
  {
   var newurl = this.playparam;

   if(iframe.div.style.visibility != "visible" ||
      ( ( iframe.iframe.src != newurl ) && ( this.playparam != '' ) ) )
   {
    if( iframe.iframe.src != newurl )
    {
     iframe.iframe.src = newurl;
    }
    iframe.div.style.top = (totalOffset( this, 0 ) + 20 ) + 'px';
    iframe.div.style.visibility="visible";
   }
   else {
    iframe.div.style.visibility="hidden";
    iframe.iframe.src = "";
   }
  }
  return false;
 },

 // Insert the IFrame into the page.
 loader : function()
 {
  // apply settings

  with(wikimediaplayer)
  {
   language = window.location.host.substr(0,2);
   var neediframe=0;
   links = document.getElementsByTagName('a');
   for( var key = 0; key < links.length; key++ )
   {
    link = links[key];
    if( link.href && 
        ( link.href.substr(0,wmpconfig.playerurl.length) == wmpconfig.playerurl ) )
    {
     playerlink = link.href;
   

      playbutton = document.createElement('img');
      playbutton.title = strings.buttonTooltip['en'];
      playbutton.style.padding = '0px 3px 0px 0px';
      playbutton.style.cursor = 'pointer';
      playbutton.src = wmpconfig.buttonImage;
      playbutton.playparam = playerlink;
      addEvent( playbutton, 'click', toggleIFrame );
      neediframe=1;

      // link.parentNode.insertBefore(playbutton, link.nextSibling);
      link.parentNode.insertBefore(playbutton,link);
     }
   } //for

   //Big icon for image pages.
   if (mw.config.get('wgNamespaceNumber==6')){
   divi = document.getElementById('file');
   if (!divi)
     return;
   links = divi.getElementsByTagName('a');
   var filere= /\/([^\/]*?.[Oo][Gg][Gg])$/
   for( var key = 0; key < links.length; key++ )
   {
    link = links[key];
    if( link.href && 
        ( filere.test(link.href) ))
    {
     filere.exec(link.href)
     playerlink = wmpconfig.playerurl + '?path=' + RegExp.$1;

      playbutton = document.createElement('img');
      playbutton.title = strings.buttonTooltip['en'];
      playbutton.style.padding = '0px 3px 0px 0px';
      playbutton.style.cursor = 'pointer';
      playbutton.src = wmpconfig.largebuttonImage;
      playbutton.playparam = playerlink;
      addEvent( playbutton, 'click', toggleIFrame );
      neediframe=1;

      // link.parentNode.insertBefore(playbutton, link.nextSibling);
      link.parentNode.insertBefore(playbutton,link);
     }
   } //for link
   }

   if (neediframe==1) {
     // iframe vorbereiten
     iframe.div = document.createElement('div');
     iframe.div.style.visibility = 'hidden';
     iframe.div.style.width = (wmpconfig.width+12)+'px';
     iframe.div.style.height = (wmpconfig.height+12)+'px';
     iframe.div.style.margin = '0px';
     iframe.div.style.padding = '0px';
     iframe.div.style.backgroundColor = 'white';
     iframe.div.style.position = 'absolute';
     iframe.div.style.right = '2em';
     iframe.div.style.top = '1em';
     iframe.div.style.border = '1px solid gray';
     iframe.div.style.zIndex = 13;

     iframe.closebutton = document.createElement('img');
     iframe.closebutton.title = strings.close[language];
     iframe.closebutton.src = '//upload.wikimedia.org/wikipedia/commons/d/d4/Button_hide.png';
     iframe.closebutton.style.zIndex = 15;
     iframe.closebutton.style.position = 'absolute';
     iframe.closebutton.style.right = '11px';
     iframe.closebutton.style.top = '11px';
     iframe.closebutton.style.width = '18px';
     iframe.closebutton.style.cursor = 'pointer';
     iframe.closebutton.playparam = '';
     addEvent( iframe.closebutton, 'click', toggleIFrame );

     iframe.iframe = document.createElement('iframe');
     iframe.iframe.border = '0';
     iframe.iframe.style.zIndex = 14;
     iframe.iframe.style.position = 'absolute';
     iframe.iframe.style.right = '1px';
     iframe.iframe.style.top = '1px';
     iframe.iframe.style.width = (wmpconfig.width+10)+'px';
     iframe.iframe.style.height = (wmpconfig.height+10)+'px';
     iframe.iframe.style.margin = '0px';
     iframe.iframe.style.padding = '0px';

     iframe.div.appendChild(iframe.iframe);
     iframe.div.appendChild(iframe.closebutton);

     var content = document.getElementById('content');
     content.insertBefore(iframe.div,content.childNodes[0]);
    } //with
  }
 }

}

//
// Hook up installation function
//
$(document).ready(wikimediaplayer.loader);