MediaWiki:Common.js

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Externe Links in neuem Fenster öffnen
//---------------------------------------------------------------------------
jQuery( document ).ready(function() {
  $j(".external").attr("target","_blank");
});
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Fügt eine Betreffzeile auf leeren Diskussionsseiten ein
//---------------------------------------------------------------------------
jQuery( document ).ready(function() {
        if(wgNamespaceNumber != 0 && wgNamespaceNumber != 1) return;
	var tab = document.getElementById( 'ca-talk' );
	if( !tab || tab.className != 'new' ) return;
	var link = tab.getElementsByTagName( 'a' )[0];
	if( !link ) return;
	link.href += '&section=new';
});
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// import Onlyifuploading-functions
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]
//---------------------------------------------------------------------------
if (wgCanonicalSpecialPageName == "Upload") {
    importScript("MediaWiki:Onlyifuploading.js");
}
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Einbinden von [[Vorlage:Mentorenliste]]
//---------------------------------------------------------------------------
importScript('Vorlage:Mentorenliste');
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Darstellung der Abschnitte in der Kategorie für wichtige SG1-Episoden
// nach einzelnen Staffeln
//---------------------------------------------------------------------------
jQuery( document ).ready(function() {
  if (wgPageName != "Kategorie:Stargate_Kommando_SG-1_Wichtige_Episode") return;
  $j("div#mw-pages h3").html(function(i, text)
  {
    return (text.substr(0, 1) == "@")?"10"+text.substr(1):text;
  });
});
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Dynamic Navigation Bars
//---------------------------------------------------------------------------

// set up the words in your language
var NavigationBarHide = 'Einklappen';
var NavigationBarShow = 'Ausklappen';
var NavigationBarToggleAll = 'Alle umklappen';

// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
if (typeof NavigationBarShowDefault == 'undefined' ) {
    var NavigationBarShowDefault = 0;
}

// adds show/hide-button to navigation bars
jQuery( document ).ready(function() {
	// shows and hides content and picture (if available) of navigation bars
	// Parameters:
	//     indexNavigationBar: the index of navigation bar to be toggled
	function toggleNavigationBar(NavToggle, NavFrame)
	{
	   if (!NavFrame || !NavToggle) {
		   return false;
	   }

	   // if shown now
	   if (NavToggle.firstChild.data == NavigationBarHide) {
		   for (
				   var NavChild = NavFrame.firstChild;
				   NavChild != null;
				   NavChild = NavChild.nextSibling
			   ) {
			   if (NavChild.className == 'NavPic') {
				   NavChild.style.display = 'none';
			   }
			   if (NavChild.className == 'NavContent') {
				   NavChild.style.display = 'none';
			   }
			   if (NavChild.className == 'NavToggle') {
				   NavChild.firstChild.data = NavigationBarShow;
			   }
		   }

	   // if hidden now
	   } else if (NavToggle.firstChild.data == NavigationBarShow) {
		   for (
				   var NavChild = NavFrame.firstChild;
				   NavChild != null;
				   NavChild = NavChild.nextSibling
			   ) {
			   if (NavChild.className == 'NavPic') {
				   NavChild.style.display = 'block';
			   }
			   if (NavChild.className == 'NavContent') {
				   NavChild.style.display = 'block';
			   }
			   if (NavChild.className == 'NavToggle') {
				   NavChild.firstChild.data = NavigationBarHide;
			   }
		   }
	   }
	}

	function toggleNavigationBarFunction(NavToggle, NavFrame) {
		return function() {
			toggleNavigationBar(NavToggle, NavFrame);
			return false;
		};
	}

	// Shows/hides all navigation bars at once
	function toggleNavigationBars() {
		var NavFrames = getElementsByClassName(document.getElementById("content"), "div", "NavFrame");
		for (var i=0; i<NavFrames.length; i++)
			toggleNavigationBar(getElementsByClassName(NavFrames[i], "a", "NavToggle")[0], NavFrames[i]);
	}

	function toggleNavigationBarsFunction() {
		return function() {
			toggleNavigationBars();
			return false;
		};
	}

	// iterate over all NavFrames
	var content	= document.getElementById("content");
	var NavFrames = getElementsByClassName(content, "div", "NavFrame");
	// if more Navigation Bars found and not template namespace than Default: hide all
	var initiallyToggle	= NavigationBarShowDefault < NavFrames.length && wgNamespaceNumber != 10;
	for (var i=0;  i<NavFrames.length; i++) {
		var NavFrame = NavFrames[i];
		var NavToggle = document.createElement("a");
		NavToggle.className = 'NavToggle';
		NavToggle.setAttribute('href', '#');

		var NavToggleText = document.createTextNode(NavigationBarHide);
		NavToggle.appendChild(NavToggleText);

		// add NavToggle-Button as first div-element
		// in < div class="NavFrame" >
		NavFrame.insertBefore(NavToggle, NavFrame.firstChild);

		NavToggle.onclick = toggleNavigationBarFunction(NavToggle, NavFrame);
		if (initiallyToggle) {
			toggleNavigationBar(NavToggle, NavFrame);
		}
	}
	var NavFrameToggleAlls = getElementsByClassName(content, "div", "NavFrameToggleAll");
	for (var i=0;  i<NavFrameToggleAlls.length; i++) {
		var NavFrameToggleAll = NavFrameToggleAlls[i];
		var NavToggleAll = document.createElement("a");
		NavToggleAll.className = 'NavToggleAll';
		NavToggleAll.setAttribute('href', '#');

		var NavToggleAllText = document.createTextNode(NavigationBarToggleAll);
		NavToggleAll.appendChild(NavToggleAllText);

		// add NavToggleAll-Button as first div-element
		// in < div class="NavFrameToggleAll" >
		NavFrameToggleAll.insertBefore(NavToggleAll, NavFrameToggleAll.firstChild);

		NavToggleAll.onclick = toggleNavigationBarsFunction();
	}
});
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Zeilen der Infoboxen abwechselnd einfärben
//---------------------------------------------------------------------------
jQuery( document ).ready(function() {
  $j("tr[class*='blauzebra']:not(.spoiler):even").addClass("zebrablau");
  $j("tr[class*='blauzebra']:not(.spoiler):odd").removeClass("zebrablau");
  $j("tr[class*='grünzebra']:not(.spoiler):even").addClass("zebragrün");
  $j("tr[class*='grünzebra']:not(.spoiler):odd").removeClass("zebragrün");
});
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Wenige Einzelnachweise in nur einer Spalte darstellen
//---------------------------------------------------------------------------
jQuery( document ).ready(function() {
  if ($('.references li').size() < 6)
    $('.references').css({ 'column-count': '1', '-moz-column-count': '1', '-webkit-column-count': '1' });
});
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Sortierung von Datum und Zeit der Form „11:58, 21. Jul. 2012“ in Tabellen
//---------------------------------------------------------------------------
if ($("table.sortable").length) {
  mw.loader.using("jquery.tablesorter", function() {
    if ($ && $.tablesorter) {
      $.tablesorter.addParser({
        id: "sgwDateTime",
        is: function(s) {
          return /(\d\d):(\d\d), (\d\d)\. (...)\. (\d{4})/.test(s);
        },
        format: function(s) {
          s = $.trim(s.toLowerCase());
          for (var i=0; i<12; ++i)
            s = s.replace($.tablesorter.monthNames[1][i+1], i);
          var x = /(\d\d):(\d\d), (\d\d)\. (\d?)\. (\d{4})/.exec(s);
          return !x?0:$.tablesorter.formatFloat(new Date(x[5], x[4], x[3], x[1], x[2], 0).getTime());
        },
        type: "numeric"
      });
    }
  });
}
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Zählt die Anzahl der Bearbeitungen eines Benutzers
// Siehe auch [[Benutzer:CF/revisionMainspaceCounter.js]]
// Bearbeitung von [[MediaWiki:Gadget-revisionCounter.js]]
//---------------------------------------------------------------------------
var revisionMainspaceCounter =
{
  queryUrl : function(i) {
    if (i < revisionMainspaceCounter.queries.length && i >= 0 && revisionMainspaceCounter.queries[i] == null)
      return null;
    if (revisionMainspaceCounter.queries[i].Namespaces == '-100')
      return wgScriptPath + '/api.php?action=query&list=logevents&leuser=' + encodeURIComponent(revisionMainspaceCounter.queries[i].User) + '&letype=upload&lepropf=ids&format=json&lelimit=max&callback=revisionMainspaceCounter.queryResult&requestid=' + i;
    else
      return wgScriptPath + '/api.php?action=query&list=usercontribs&ucuser=' + encodeURIComponent(revisionMainspaceCounter.queries[i].User) + '&ucnamespace=' + revisionMainspaceCounter.queries[i].Namespaces + '&ucprop=ids&format=json&uclimit=max&callback=revisionMainspaceCounter.queryResult&requestid=' + i;
  },
  queries : [
  /*{
      revisionCountUser  : 0,
      User : wgUserName,
      Namespaces : '0',
      InputId : 'revisionMainspaceCounter',
      OutputId : 'revisionMainspaceCounterTarget',
      ReplaceFirstChild : false
    }*/
  ],

  execute : function()
  {
    for (var i=0; i<revisionMainspaceCounter.queries.length; ++i)
      if (revisionMainspaceCounter.queryUrl(i))
        importScriptURI(revisionMainspaceCounter.queryUrl(i));
  },

  queryResult : function(res)
  {
    if (!res['query'] || !res['requestid'] || res.requestid >= revisionMainspaceCounter.queries.length || res.requestid < 0 || revisionMainspaceCounter.queries[res.requestid] === null) return;

    var continu = false;
    var i = res.requestid;
    if (revisionMainspaceCounter.queries[res.requestid].Namespaces == '-100') {
      if (!res['query']['logevents'])
        return;
      var revs = res['query']['logevents'];
      revisionMainspaceCounter.queries[i].revisionCountUser += revs.length;

      if (res && res['query-continue'])
      {
        importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&lestart=' + encodeURIComponent(res['query-continue'].logevents.lestart));
        continu = true;
      }
    }
    else {
      if (!res['query']['usercontribs'])
        return;
      var revs = res['query']['usercontribs'];
      revisionMainspaceCounter.queries[i].revisionCountUser += revs.length;

      if (res && res['query-continue'])
      {
        importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&ucstart=' + encodeURIComponent(res['query-continue'].usercontribs.ucstart));
        continu = true;
      }
    }

    if (!continu && document.getElementById(revisionMainspaceCounter.queries[i].OutputId))
    {
      var info = document.createElement("span");
      info.appendChild(document.createTextNode(revisionMainspaceCounter.queries[i].revisionCountUser));
      var infoTitle = document.createAttribute("title");
      infoTitle.nodeValue = revisionMainspaceCounter.queries[i].User + " hat " + revisionMainspaceCounter.queries[i].revisionCountUser + (revisionMainspaceCounter.queries[i].Namespaces===-100 ? " Dateien hochgeladen." : (" Bearbeitungen i" + (revisionMainspaceCounter.queries[i].Namespaces==="0" ? "m Hauptnamensraum." : ((revisionMainspaceCounter.queries[i].Namespaces.indexOf("|")>-1 ? "n den Namensräumen ": "m Namensraum ") + revisionMainspaceCounter.queries[i].Namespaces + ".")));
      info.setAttributeNode(infoTitle);
      var e = document.getElementById(revisionMainspaceCounter.queries[i].OutputId);
      if (revisionMainspaceCounter.queries[i].ReplaceFirstChild) e.replaceChild(info, e.firstChild);
      else e.appendChild(info);

      var input = document.getElementById(revisionMainspaceCounter.queries[i].InputId);
      var header = $(input).parents("table.sortable")[0];
      if (input && input.parentNode)
      {
          input.parentNode.removeChild(input);
          if (header && $(header).find("span.revisionMainspaceCounter").length == 0)
          {
            $(header).find(".headerSort").unbind("click");
            $(header).tablesorter();
          }
      }

      revisionMainspaceCounter.queries[i] = null;
    }
  },
  findCounter : function()
  {
    var found = 0;
    $j("span.revisionMainspaceCounter").each(function()
    {
      var i = this.innerHTML.split("#");
      if (i.length == 4 && ++found)
        revisionMainspaceCounter.queries.push({
          revisionCountUser  : 0,
          User : i[0],
          Namespaces : i[1].replace(/ /g,"").split(",").join("|"),
          InputId : this.id,
          OutputId : i[2],
          ReplaceFirstChild : i[3]==="j"
      });
    });
    if (found) revisionMainspaceCounter.execute();
  }
};

jQuery( document ).ready(revisionMainspaceCounter.findCounter);
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Versteckt Inhalte
// [[Vorlage:Spoiler]]
//---------------------------------------------------------------------------
mw.SGWSpoiler = {
  showAll: false,
  init: function() {
    if ($(".spoiler").size()>0) {
    var vector = $("body.skin-vector").size()>0;
    var node = mw.util.addPortletLink(vector ? "p-views" : "p-cactions", "#", "Spoiler aufdecken", "ca-spoiler", "Vorhandene Spoiler auf- und zudecken", "s", $("#ca-watch")[0] || $("#ca-unwatch")[0]);
    if (node) {
      node.onclick = mw.SGWSpoiler.toggleAll;
      if (vector)
        $("#ca-spoiler a").html('<img width="24" height="24" alt="Spoiler auf- oder zudecken" src="http://www.stargate-wiki.de/w/images/thumb/1/17/System-search.svg/24px-System-search.svg.png" style="position:relative; top: -5px;" />');
    }
  }
  },

  toggleNext: function(obj) {
    if (mw.SGWSpoiler.showAll) return;
    $(obj).next(".spoiler").toggleClass("spoilerShow");
  },

  toggleNextRow: function(obj) {
    if (mw.SGWSpoiler.showAll) return;
    $(obj).parent().parent().next("tr.spoiler").toggleClass("spoilerShow");
  },

  toggleAll: function(obj) {
    mw.SGWSpoiler.showAll ^= true;
    if (mw.SGWSpoiler.showAll) {
      $(".spoiler").addClass("spoilerShowAll");
      $("#ca-spoiler").addClass("selected");
      if (obj) $(obj).removeClass("spoilerShow");
    }
    else {
      $(".spoiler").removeClass("spoilerShowAll");
      $("#ca-spoiler").removeClass("selected");
    }
    return false;
  }
}

jQuery( document ).ready( mw.SGWSpoiler.init );
//---------------------------------------------------------------------------
// Einbinden vom virtuellen Schneefall
// -----Immer im Dezember und Januar soll die folgende Zeile eingesetzt bzw. die "// " davor entfernt werden.-----
// importScript('Benutzer:CF/Schnee.js');
//---------------------------------------------------------------------------