MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Planet 3DNow! Distributed Computing Wiki
Zur Navigation springen Zur Suche springen
Livestats an das Final Release der ajax.php angepasst
Keine Bearbeitungszusammenfassung
 
(28 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */
/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */


  var userAgent = navigator.userAgent.toLowerCase();
  /*var userAgent = navigator.userAgent.toLowerCase();
  var is_opera = ((userAgent.indexOf('opera') != -1) || (typeof(window.opera) != 'undefined'));
  var ua_webtv = (userAgent.indexOf('webtv') != -1);
  var is_saf    = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
  var ua_safari = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
  var is_webtv  = (userAgent.indexOf('webtv') != -1);
  var ua_opera = ((userAgent.indexOf('opera') != -1) || (typeof(window.opera) != 'undefined'));
  var is_ie    = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));
  var ua_iexplorer = ((userAgent.indexOf('msie') != -1) && (!ua_opera) && (!ua_safari) && (!ua_webtv));
  var is_ie4    = ((is_ie) && (userAgent.indexOf('msie 4.') != -1));
  var ua_iexplorer7 = ((ua_iexplorer) && (userAgent.indexOf('msie 7.') != -1));*/
var is_ie7    = ((is_ie) && (userAgent.indexOf('msie 7.') != -1));
 
 
// ============================================================
// BEGIN Event Hooking
function HookEvent(hookName, hookFunction)
{
  if(window.addEventListener) {
    window.addEventListener(hookName, hookFunction, false);
  } else if(window.attachEvent) {
    window.attachEvent("on" + hookName, hookFunction);
  }
}
// END Event Hooking
// ============================================================
 
 
// ============================================================
// BEGIN Dynamic Navigation Bars
var strNavigationBarHide = "Einklappen";
var strNavigationBarShow = "Ausklappen";
var navigationBarShowDefault = 0;
// shows and hides content and picture (if available) of navigation bars
// Parameters:
//    indexNavigationBar: the index of navigation bar to be toggled
function ToggleNavigationBar(indexNavigationBar)
{
    var naviToggle = document.getElementById("dcw_navitoggle" + indexNavigationBar);
    var naviFrame = document.getElementById("dcw_naviframe" + indexNavigationBar);
    if(!naviFrame || !naviToggle) {
        return false;
    }
    // if shown now
    if(naviToggle.firstChild.data == strNavigationBarHide) {
        for(var naviChild = naviFrame.firstChild; naviChild != null; naviChild = naviChild.nextSibling) {
            if(naviChild.className == "dcw_navipicture") {
                naviChild.style.display = "none";
            }
            if(naviChild.className == "dcw_navicontent") {
                naviChild.style.display = "none";
            }
            if(naviChild.className == "dcw_navitoggle") {
                naviChild.firstChild.data = strNavigationBarShow;
            }
        }
    // if hidden now
    } else if(naviToggle.firstChild.data == strNavigationBarShow) {
        for(var naviChild = naviFrame.firstChild; naviChild != null; naviChild = naviChild.nextSibling) {
            if(naviChild.className == "dcw_navipicture") {
                naviChild.style.display = "block";
            }
            if(naviChild.className == "dcw_navicontent") {
                naviChild.style.display = "block";
            }
            if(naviChild.className == "dcw_navitoggle") {
                naviChild.firstChild.data = strNavigationBarHide;
            }
        }
    }
}
// adds show/hide-button to navigation bars
function CreateNavigationBarToggleButton()
{
    var indexNavigationBar = 0;
    // iterate over all < div >-elements
    for(var i = 0; naviFrame = document.getElementsByTagName("div")[i]; ++i) {
        // if found a navigation bar
        if(naviFrame.className == "dcw_naviframe") {
            ++indexNavigationBar;
            var naviToggle = document.createElement("a");
            naviToggle.className = "dcw_navitoggle";
            naviToggle.setAttribute("id", "dcw_navitoggle" + indexNavigationBar);
            naviToggle.setAttribute("href", "javascript:ToggleNavigationBar(" + indexNavigationBar + ");");
            var naviToggleText = document.createTextNode(strNavigationBarHide);
            naviToggle.appendChild(naviToggleText);
            // add naviToggle-Button as first div-element
            // in < div class="dcw_naviframe" >
            naviFrame.insertBefore(naviToggle, naviFrame.firstChild);
            naviFrame.setAttribute("id", "dcw_naviframe" + indexNavigationBar);
        }
    }
    // if more navigation bars found than default: hide all
    if(navigationBarShowDefault < indexNavigationBar) {
        for(var i = 1; i <= indexNavigationBar; ++i) {
            ToggleNavigationBar(i);
        }
    }
}
HookEvent("load", CreateNavigationBarToggleButton);
// END Dynamic Navigation Bars
// ============================================================
 
 
// ============================================================
// BEGIN AJAX Teamstatistiken
var dcw_TeamStatsLoader = null;
function TeamStatsLoader(statsSpan, project)
{
    this.statsSpan = statsSpan;
    this.project = project;
    this.xml_sender = null;
    this.teamPosition = '';
    var me = this;
    this.OnLoadReadyStateChange = function()
    {
        if(me.xml_sender.handler.readyState == 4 && me.xml_sender.handler.status == 200) {
            if(me.xml_sender.handler.responseXML) {
                me.teamPosition = me.xml_sender.fetch_data(fetch_tags(me.xml_sender.handler.responseXML, 'worldrank')[0]);
            }
            if(is_ie) {
                me.xml_sender.handler.abort();
            }
            var textNode = document.createTextNode(me.teamPosition);
            me.statsSpan.appendChild(textNode);
        }
    }
    this.xml_sender = new DCW_AJAX_Handler(true);
    this.xml_sender.onreadystatechange(this.OnLoadReadyStateChange);
    this.xml_sender.send('ajax.php?do=getworldrank&project=' + me.project, 'do=getworldrank&project=' + me.project);
}
function LoadTeamStats()
{
    // iterate over all < span >-elements
    for(var i = 0; statsSpan = document.getElementsByTagName("span")[i]; ++i) {
        if(statsSpan.className == "dcw_span_teamstats") {
          var friendlyProjectName = statsSpan.id.replace(/.40/g, "@");
          dcw_TeamStatsLoader = new TeamStatsLoader(statsSpan, friendlyProjectName);
        }
    }
}
HookEvent("load", LoadTeamStats);
// END AJAX Teamstatistiken
// ============================================================
 
 
// ============================================================
// BEGIN AJAX DCW_AJAX_Handler
function DCW_AJAX_Handler(async)
{
    this.async = async ? true : false;
}
DCW_AJAX_Handler.prototype.init = function()
{
    if(typeof XMLHttpRequest != "undefined") {
      this.handler = new XMLHttpRequest();
      return (this.handler.setRequestHeader ? true : false);
    } else if(is_ie && !is_ie7) {
      this.handler = eval("new A" + "ctiv" + "eX" + "Ob" + "ject('Micr" + "osoft.XM" + "LHTTP');");
      return true;
    } else {
      return false;
    }
}
DCW_AJAX_Handler.prototype.not_ready = function()
{
    return (this.handler.readyState && (this.handler.readyState < 4));
}
DCW_AJAX_Handler.prototype.onreadystatechange = function(event)
{
    if(!this.handler) {
      if(!this.init()) {
        return false;
      }
    }
    if(typeof event == 'function') {
      this.handler.onreadystatechange = event;
    }
    return false;
}
DCW_AJAX_Handler.prototype.send = function(desturl, datastream)
{
    if(!this.handler) {
      if(!this.init()) {
        return false;
      }
    }
    if(!this.not_ready()) {
      this.handler.open('POST', desturl, this.async);
      this.handler.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      this.handler.send(datastream + '&s=' + fetch_sessionhash());
      if(!this.async && this.handler.readyState == 4 && this.handler.status == 200) {
        return true;
      }
    }
    return false;
}
DCW_AJAX_Handler.prototype.fetch_data = function(xml_node)
{
    if(xml_node && xml_node.firstChild && xml_node.firstChild.nodeValue) {
      return PHP.unescape_cdata(xml_node.firstChild.nodeValue);
    } else {
      return '';
    }
}
// END AJAX DCW_AJAX_Handler
// ============================================================

Aktuelle Version vom 27. September 2014, 20:53 Uhr

/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */

 /*var userAgent = navigator.userAgent.toLowerCase();
 var ua_webtv  = (userAgent.indexOf('webtv') != -1);
 var ua_safari = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
 var ua_opera = ((userAgent.indexOf('opera') != -1) || (typeof(window.opera) != 'undefined'));
 var ua_iexplorer = ((userAgent.indexOf('msie') != -1) && (!ua_opera) && (!ua_safari) && (!ua_webtv));
 var ua_iexplorer7 = ((ua_iexplorer) && (userAgent.indexOf('msie 7.') != -1));*/