MediaWiki:Common.js: Unterschied zwischen den Versionen

aus Kamelopedia, der wüsten Enzyklopädie
Wechseln zu: Navigation, Suche
(das war imho käse, mal probieren)
K (Nein, da nicht...)
(Eine dazwischenliegende Version von einem Kamel wird nicht angezeigt)
Zeile 132: Zeile 132:
 
if ((wgNamespaceNumber != 6 ) && (wgAction == 'edit' || wgAction == 'submit')) {
 
if ((wgNamespaceNumber != 6 ) && (wgAction == 'edit' || wgAction == 'submit')) {
 
   addCSS("MediaWiki:Skin/Edittools.css");
 
   addCSS("MediaWiki:Skin/Edittools.css");
 +
  // benötigt auch jQuery (Klick-Vorlagen)
 +
  addJQuery();
 
   addJS("Hilfe:Edittools.js");
 
   addJS("Hilfe:Edittools.js");
 
}
 
}

Version vom 9. Oktober 2010, 01:26 Uhr

//== hilfsfunktionen =========================================
 
/* CSS einbinden */
function addCSS(title) {
    document.write(
               '<style type="text/css">/*<![CDATA[*/ @import "/index.php?title=' + 
               encodeURIComponent(title) + '&action=raw&ctype=text/css"; /*]]>*/</style>');
}
 
/* JS einbinden */
function addJS(title) {
    document.write(
               '<script type="text/javascript" src="/index.php?title=' +
               encodeURIComponent(title) + '&action=raw&ctype=text/javascript"></script>');
}
 
/* jQuery einbinden falls nötig */
function addJQuery() {
        if (!window.jQuery)
        	document.write('<script type="text/javascript" src="/skins/common/jquery.js"></script>');
}
 
// Zumindest während der Testphase sollte man CSS und JS auch später nachladen können:
 
addOnloadHook( function () {
 
	/* CSS-Funktion ersetzen */
	addCSS = function(title) 
	{
		var s = document.createElement("LINK");
		s.rel = "stylesheet";
		s.type = "text/css";
		s.href = wgScript + "?title=" + encodeURIComponent(title) + "&action=raw&ctype=text/css";
		document.body.appendChild(s);
	}
 
	/* JS-Funktion ersetzen */
	addJS = function(title)
	{
		var s = document.createElement("SCRIPT");
		s.type = "text/javascript";
		s.src = wgScript + "?title=" + encodeURIComponent(title) + "&action=raw&ctype=text/javascript";
		document.body.appendChild(s);
	}
 
 
});
 
//== Konstanten ===============================================
 
function CSS(page)
{
	return {type: "CSS", page: page};
}
 
function JS(page)
{
	return {type: "JS", page: page};
}
 
function SPECIAL(key)
{
	return {type: "SPECIAL", key: key};
}
 
var defaultCSS = CSS(null);
var defaultJS = JS(null);
var libPrototype = JS("MediaWiki:Prototype.js");
var libJQuery = SPECIAL("jQuery");
var libTranslate = JS("MediaWiki:Skin/translate.js");
 
//== Zeug laden ===============================================
 
// für "MediaWiki:Skin/Namensraum:Seitenname.css" defaultCSS verwenden
// für "MediaWiki:Skin/Namensraum:Seitenname.js" defaultJS verwenden
// für andere Seiten JS("Seite") oder CSS("Seite") verwenden
 
var loadStuff = {
    // Artikel
    "Artikelbaukasten":        [             defaultJS, libJQuery ],
    "Bewegung":                [             defaultJS ],
    "Gelbsucht":               [             defaultJS ],
    "Latein":                  [             defaultJS, libJQuery, libTranslate ],
    "Pseudolink":              [ defaultCSS            ],
    "Wirklich leere Seite":    [ defaultCSS            ],
 
    // Kamelopedia
    "Kamelopedia:Bildsuche":   [ defaultCSS, defaultJS, libPrototype ],
    "Kamelopedia:Chat":        [ JS("Hilfe:Javachat.js") ],
 
    // Spezial
    "Spezial:Hochladen":       [ defaultCSS, defaultJS, libJQuery ],
    "Spezial:RatedPages":      [             defaultJS, libJQuery ],
 
    "": [] // damit oben überall Kommata stehen bleiben können
};
 
var pageName = [wgPageName.replace(/_/g, " ")];
var stuffOnThisPage = loadStuff[pageName];
if (stuffOnThisPage == null) stuffOnThisPage = [];
for (var i = 0; i < stuffOnThisPage.length; i++)
{
    var item = stuffOnThisPage[i];
    if (item.type == "CSS")
    {
        if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".css";
        addCSS(item.page);
    }
    else if (item.type == "JS")
    {
        if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".js";
        addJS(item.page);
    }
    else if (item.type == "SPECIAL" && item.key == "jQuery")
    {
	addJQuery();
    }
}
 
//================================================================================
// Bild-Box-Lizenz-Gedöns für Datei-Seitenbearbeitung
 
if ((wgNamespaceNumber == 6 ) && (wgAction == 'edit' || wgAction == 'submit')) {   
    addCSS("MediaWiki:Skin/Spezial:Hochladen.css");
    // benötigt auch jQuery
    addJQuery();
    addJS("MediaWiki:Skin/Spezial:Hochladen.js");
}
 
// lade [[Hilfe:Edittools.js]], wenn Seite bearbeitet wird (und neue toolbar aus)
//if ((wgNamespaceNumber != 6 ) && (wgAction == 'edit' || wgAction == 'submit') && (wgWikiEditorEnabledModules.toolbar == false)) {
if ((wgNamespaceNumber != 6 ) && (wgAction == 'edit' || wgAction == 'submit')) {
   addCSS("MediaWiki:Skin/Edittools.css");
   // benötigt auch jQuery (Klick-Vorlagen)
   addJQuery();
   addJS("Hilfe:Edittools.js");
}
 
// Tausche [[Special:Specialpages]] gegen [[Kamelopedia:Spezialseiten]]
addOnloadHook(function() {
    document.getElementById("t-specialpages").innerHTML = '<a href="/index.php/Kamelopedia:Spezialseiten">Spezialitäten</a>';
});
 
//Gedudel auf [[Aufzug]] und [[Gedudel]] und [[WiKa-Sekte]]
if (wgPageName == 'Aufzug' || wgPageName == 'Gedudel' || wgPageName == 'WiKa-Sekte' ) {
    document.write('<embed src="http://kamelopedia.mormo.org/images/c/cb/Aufzug.mid" autostart="true" type="audio/midi" loop="true" hidden="true" height="0" width="0">');
}
 
//Gedudel auf [[Mausetot]]
if (wgPageName == 'Mausetot' ) {
    document.write('<embed src="http://kamelopedia.mormo.org/images/a/a3/Fuchs.mid" autostart="true" type="audio/midi" loop="true" hidden="true" height="0" width="0">');
}
 
//[[Popupblocker]]
if (wgPageName == 'Popupblocker') {
    alert("Ihr Popupblocker ist aktiviert");
}
 
// Bilder bekommen einen "ähnliche Bilder"-Link und auch die Tagwolke
if ( wgNamespaceNumber == 6 || wgPageName == "Kamelopedia:Bildtagwolke")
       addJS("MediaWiki:Skin/Kamelopedia:Bildsuche/bild.js");
 
// Skin für Forum
 if (wgNamespaceNumber == 102) {
   addCSS("MediaWiki:Skin/Forum.css");
}
 
// Skin für Archiv
if (wgNamespaceNumber == 104 || wgNamespaceNumber == 105) {
   addCSS("MediaWiki:Skin/Archiv.css");
}
 
// Skin und script für Kamelionary
if (wgNamespaceNumber == 106 || wgNamespaceNumber == 107) {
    addCSS("MediaWiki:Skin/Kamelionary.css");
    addJS("MediaWiki:Prototype.js");
    addJS("MediaWiki:Skin/Kamelionary.js");
}
 
// Der doofe server stürzt dauernd ab, wenn das script da unten läuft ...
if (wgPageName == "Kinderporno" || wgPageName == "Server_Error") {
    window.onload = function() {
        if (!document.getElementById("ServerError"))	return;
		document.getElementsByTagName("body")[0].style.backgroundColor = "#ffffff";
		document.getElementsByTagName("body")[0].style.backgroundImage = "none";
		document.getElementsByTagName("body")[0].style.fontSize = "12px";
		document.getElementsByTagName("body")[0].style.padding = "10px";
		document.getElementsByTagName("body")[0].innerHTML = document.getElementById("ServerError").innerHTML;
    }
}
 
// ================================================================================
// Ein- und Ausblenden per Javascript
 
// mit den folgenden Funktionen lässt sich ein div-Konstrukt in ein Einblende-Ausblende-Ding verwandeln
//
// Variante 1 (Klick irgendwo blendet ein oder aus):
//	<div class="klapp">
//		<div class="klapp_t">Titel im ausgeblendeten Zustand</div>
//		<div class="klapp_e">Titel im ausgeblendeten Zustand</div>
//		<div class="klapp_i">Einzublendender Inhalt</div>
//	</div>
//
// Variante 2 (ein- und ausblenden nur mit Links):
//	<div class="klapp_x">
//		<div class="klapp_t">Titel im ausgeblendeten Zustand mit <span class="klapp">Einblendelink</span></div>
//		<div class="klapp_e">Titel im ausgeblendeten Zustand mit <span class="klapp">Ausblendelink</span></div>
//		<div class="klapp_i">Einzublendender Inhalt</div>
//	</div>
 
function ausklapp( element )
{
	var klapp_i = null;
	var klapp_e = null;
	var klapp_t = null;
 
	for (i=0; i<element.childNodes.length; i++)
	{
		if( element.childNodes[i].nodeType == 1 )
		{
			if ( element.childNodes[i].className == "klapp_i" )
				klapp_i = element.childNodes[i];
			else if ( element.childNodes[i].className == "klapp_t" )
				klapp_t = element.childNodes[i];
			else if ( element.childNodes[i].className == "klapp_e" )
				klapp_e = element.childNodes[i];
		}
 
		if ( klapp_i && klapp_t && klapp_e )
			break;
	}
 
	if( klapp_i.style.display != "none")
	{
		klapp_i.style.display = "none";
		klapp_e.style.display = "none";
		klapp_t.style.display = "block";
 
	}
	else
	{
		klapp_i.style.display = "block";
		klapp_e.style.display = "block";
		klapp_t.style.display = "none";
	}
 
}
 
function getKlappDiv( obj )
{
	while ( obj && obj.parentNode && obj.className != "klapp_x" )
		obj = obj.parentNode;
 
	return obj;
}
 
// Event-Handler für alle class="klapp"-Objekte zuweisen
function makeAusklapp()
{
	// klapp-div-Rahmen
	var a = document.getElementsByTagName("div"); 
	for ( div=0; div<a.length; div++ )
	{
		if ( a[div].className == "klapp" )
		{
			//Leider nicht IE-Kompatibel:
			//var f = function () { ausklapp(this) };
			//addEvent( a[div], "click", f , false );
			//stattdessen:
 
			a[div].onclick = function () { ausklapp(this);}
		}
	}
 
	// klapp-spans-Rahmen als Link-Ersatz
	var a = document.getElementsByTagName("span"); 
	for ( span=0; span<a.length; span++ )
	{
		if ( a[span].className == "klapp" )
		{
			a[span].onclick = function () { ausklapp(getKlappDiv( this ));}
		}
	}
 
	urlKlapp();
}
 
/*
 * liest aus der URL aus, ob ein bestimmtes Objekt ausgeklappt werden soll.
 * angegeben werden kann eine oder mehrere Objekt-Id:
 * index.php?title=Hauptseite&klapp=id1/id2/id3
 */
function urlKlapp()
{
	var arg = location.href;
	var reg = new RegExp(/[?&]klapp=(.*?)($|[?&])/);
	arg = arg.match(reg);
	if( arg == null )
		return;
	arg = arg[0].replace(reg,"$1");
	if( arg == "" )
		return;
	arg = arg.split("/");
 
	for(var i=0; i<arg.length; i++)
	{
		try
		{
			ausklapp(document.getElementById(arg[i]));
		}
		catch(e)
		{
		}
	}
 
}
 
// Nach dem Laden des Fensters folgendes Ausführen:
addOnloadHook(makeAusklapp);
 
// ================================================================================
 
// altes dragobject für die Seiten, wo benutzt, ansonsten raus (alles mit class='jstest' ist dragbar)
if (wgPageName == 'Projekt:Gummistiefel' || 
        wgPageName == 'Kamel_Diskussion:AnnaLog/Archiv' || 
        wgPageName == 'Windowspedia' || 
        wgPageName == 'Gut_versteckt' || 
        wgPageName == 'B-Wegung' || 
        wgPageName == 'Wortspiel' || 
        wgPageName == 'Kamel:Atreju/Spielplatz' || 
        wgPageName == 'Kamel:Pille' || 
        wgPageName == 'Projekt:Bewegliche_Feiertage' ||
        wgPageName == 'Kamel:J*/Ka-Mel-Oh/Testgelände' ||
        wgPageName == 'Projekt_Diskussion:Gummistiefel') {
    addJS("MediaWiki:Skin/Alt_dragobject.js");
}
 
// ================================================================================
// username template
 
/**
 * Username replace function ([[Vorlage:USERNAME]]) 
 * Inserts user name into <span id="insertusername"></span>
 * By [[wikia:User:Splarka|Splarka]]
 */
addOnloadHook(function() {
    if (typeof(disableUsernameReplace) != 'undefined' && disableUsernameReplace) return;
    if (!document.getElementById('pt-userpage'))    return;
 
    var spans = document.getElementsByTagName("span");
    for (var i=0; i<spans.length; i++) {
        var span    = spans[i];
        if (span.getAttribute('id') == "insertusername") {
            span.innerHTML  = wgUserName;
        }
    }
});
 
// ================================================================================
// FDP-Version & Zitierhilfe, nur mal so zum Spass...
 
if (wgNamespaceNumber == 0 || wgNamespaceNumber == 106) {
  addOnloadHook(function addFDPVersion(){
   var aZit = document.createElement("a");
   aZit.title = "Seite zitieren";
   aZit.href = wgServer + "/index.php/" + "Hilfe:Zitierhilfe";
   aZit.appendChild(document.createTextNode("Seite zitieren"));
 
   var aPDF = document.createElement("a");
   aPDF.title = "FDP-Version";
   aPDF.href = wgServer + "/index.php/" + "PDF?klapp=pdfgen";
   aPDF.appendChild(document.createTextNode("FDP-Version"));
 
   var LiZit = document.createElement("li");
   LiZit.style.whiteSpace = "nowrap";
   LiZit.id = "x-zitieren";
   LiZit.appendChild(aZit);
 
   var LiPDF = document.createElement("li");
   LiPDF.style.whiteSpace = "nowrap";
   LiPDF.id = "x-pdf";
   LiPDF.appendChild(aPDF);
 
   var ToolboxUl = document.getElementById("p-tb").getElementsByTagName("ul");
   ToolboxUl[0].appendChild(LiPDF);
   ToolboxUl[0].appendChild(LiZit);
 })
};
 
// ================================================================================
// sitenotice
 
// Die sitenotice per Klick verstecken  (wenn eine wegklick-notice vorhanden)
 
    var siteNoticeTs; // DPL-Timestamp des letzten Edits
    function hideSitenotice() {
        if (document.getElementById("siteNoticeSub")) {
        if (document.getElementById("siteNoticeTime") != null) {
                siteNoticeTs = escape( document.getElementById("siteNoticeTime").innerHTML );
        }
 
	  if (document.cookie.search(new RegExp("dontshowsitenotice="+siteNoticeTs) ) != -1) {
		    document.getElementById("siteNoticeInner").style.display = "none";
                machdiesiteNoticewegduSau()
	  } else {
       document.getElementById("siteNoticeSub").innerHTML = '<a href="javascript:machdiesiteNoticewegduSau()" style="position:absolute; right:0; top:9px; font-size:0.8em;">[Sitenotice verbergen]</a>';
			 }
	   }
 	  }
 
    function machdiesiteNoticewegduSau() {
        document.getElementById("siteNoticeSub").innerHTML = '<a href="javascript:gabsdanichtmalnesiteNotice()" style="position:absolute; right:0; top:9px; font-size:0.8em;">[Sitenotice anzeigen]</a>';
	      document.getElementById("siteNoticeInner").style.display = "none";
        var datum = new Date();
        var ablauf = datum.getTime() + (265 * 24 * 60 * 60 * 1000);
        datum.setTime(ablauf);
 
	  document.cookie = "dontshowsitenotice="+siteNoticeTs+"; path=/; expires="+datum.toGMTString();
	}
 
    function gabsdanichtmalnesiteNotice() {
        document.getElementById("siteNoticeSub").innerHTML = '<a href="javascript:machdiesiteNoticewegduSau()" style="position:absolute; right:0; top:9px; font-size:0.8em;">[Sitenotice verbergen]</a>'
	      document.getElementById("siteNoticeInner").style.display = "block";
	      document.cookie = "dontshowsitenotice=never; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT";
	  }
    addOnloadHook(hideSitenotice);
 
 
 
// ================================================================================
 
/* Artikel-Review-Autovervollständigungs-script */
 
if (wgNamespaceNumber=1 && wgAction == 'edit' && window.location.href.split('&')[2] == 'articlereview=true') {
     var hoecker  = '~~';
     templateCode = '{{Artikeltest\r'
                  + '| Humor/pkt 		=\r'
                  + '| Humor/txt 		=\r'
                  + '| Konzept/pkt 		=\r'
                  + '| Konzept/txt 		=\r'
                  + '| Formatierung/pkt	=\r'
                  + '| Formatierung/txt	=\r'
                  + '| Bilder/pkt 		=\r'
                  + '| Bilder/txt 		=\r'
                  + '| Gesamt/txt 		=\r'
                  + '| ' + hoecker + hoecker + '\r'
                  + '}}'
 
     window.onload = function() {
          var originalSource = document.getElementById('wpTextbox1').value;
          var newSource      = originalSource.replace(/\{\{Artikeltest\}\}/g, templateCode);
          document.getElementById('wpTextbox1').value = newSource;
     }
}
 
// TEST WiMus GaGA-Automatismus
if (wgPageName == 'Forum:Unendliche_GaGA-Wahlen_/_neue_Wahl-Statuten_/_neue_Vorlagen' || 
        wgPageName == 'Kamel:WiMu/GaGA-Wahl-Test/2' || 
        wgPageName == 'Datei:Gaga-Test.gif' || 
        wgPageName == 'Datei:Gaga-Test.png' || 
        wgPageName == 'WiMu/GaGA-Wahl-Test/1' || 
        wgPageName == 'Vorlage:GaGA' || 
        wgPageName == 'Heiland_Sellarrie') {
    addJS("MediaWiki:Prototype.js"); 
    addJS("MediaWiki:Skin/Test_zirkelklapp.js");
}
 
// externe links in neuem browser Fenster öffnen (nicht bei interwikis)
 
function externalWindow(){
    if (typeof(disableLinkWindow) != 'undefined' && disableLinkWindow) return;
    var allinks = document.getElementById('bodyContent').getElementsByTagName('a');
    for(var i = 0; i < allinks.length; i++) {
        if(allinks[i].className.indexOf('external') != -1 && allinks[i].parentNode.className.indexOf('noblank') == -1){
            allinks[i].target = '_blank';
        }
    }
}
 
addOnloadHook(externalWindow);
 
//experimenteller HTML5-Video-Player für die Datei-Seite in Verbindung mit Vorlage:Video//
 
addOnloadHook(function() {
     if (document.getElementById("html5video")){
     var html = '<video src="http://';
     html += document.getElementById("html5video").innerHTML;
     html += '" controls></video>';
     document.getElementById("html5video").innerHTML = html;
 }});