MediaWiki:Common.js: Unterschied zwischen den Versionen

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
(mal eben deaktiviert, nicht dass es am Ende an mir liegt)
(okay, liegt nicht an mir. Wiki macht das also selbst.)
Zeile 88: Zeile 88:
 
     {
 
     {
 
         if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".css";
 
         if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".css";
         //addCSS(item.page);
+
         addCSS(item.page);
 
     }
 
     }
 
     else if (item.type = "JS")
 
     else if (item.type = "JS")
 
     {
 
     {
 
         if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".js";
 
         if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".js";
         //addJS(item.page);
+
         addJS(item.page);
 
     }
 
     }
 
}
 
}

Version vom 3. Oktober 2010, 23:59 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>');
}

// 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};
}

var defaultCSS = CSS(null);
var defaultJS = JS(null);
var libPrototype = JS("MediaWiki:Prototype.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 ],
    "Gelbsucht":               [             defaultJS ],
    "Pseudolink":              [ defaultCSS            ],

    // Kamelopedia
    "Kamelopedia:Bildsuche":   [ defaultCSS, defaultJS, libPrototype ],
    "Kamelopedia:Chat":        [ JS("Hilfe:Javachat.js") ],

    // Spezial
    "Spezial:Hochladen":       [ defaultCSS, defaultJS ],

    null: null // 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);
    }
}

//================================================================================
// 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 Prototype ...
    addJS("MediaWiki:Prototype.js");
    addJS("MediaWiki:Skin/Spezial:Hochladen.js");
}

// lade [[Hilfe:Edittools.js]], wenn Seite bearbeitet wird
if (wgAction == 'edit' || wgAction == 'submit') {
    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.appendChild(aZit);

   var LiPDF = document.createElement("li");
   LiPDF.style.whiteSpace = "nowrap";
   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)

if (document.getElementById("siteNoticeSub")) { 
    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;
 }});