MediaWiki:Common.js: Unterschied zwischen den Versionen

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
(mal testweise allgemeinen code hierhin ausgelagert (bitte nicht gleich meckern, wenn der cache probleme macht))
(auch die beiden teile per using nachladen)
 
(355 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
//============================================================
+
//== hilfsfunktionen =========================================
// hilfsfunktionen
+
/* Variablen füllen, damit's im Code etwas übersichtlicher bleibt */
+
var Seitenname  = mw.config.get( 'wgPageName' );
/** CSS einbinden */
+
var NamensraumNr = mw.config.get( 'wgNamespaceNumber' );                   
function addCSS(title) {
+
var Aktion      = mw.config.get( 'wgAction' );
    document.write(
+
var Kamelname    = mw.config.get( 'wgUserName' );
                '<style type="text/css">/*<![CDATA[*/ @import "/index.php?title=' +  
+
/* nochn paar ehemalige globals für Dateihochladen... */
                encodeURIComponent(title) + '&action=raw&ctype=text/css"; /*]]>*/</style>');
+
var wgScript = mw.config.get( 'wgScript' );
}
+
var wgAjaxUploadDestCheck = mw.config.get( 'wgAjaxUploadDestCheck' );
 
+
var wgAjaxLicensePreview = mw.config.get( 'wgAjaxLicensePreview' );
/** JS einbinden */
+
var wgUploadSourceIds = mw.config.get( 'wgUploadSourceIds' );
function addJS(title) {
+
/* werden hier benutzt die vars */
     document.write(
+
var wgUserName = mw.config.get( 'wgUserName' );
                '<script type="text/javascript" src="/index.php?title=' +
+
var wgUserGroups = mw.config.get( 'wgUserGroups' );
                 encodeURIComponent(title) + '&action=raw&ctype=text/javascript"></script>');
+
var wgTitle = mw.config.get( 'wgTitle' );
}
+
var wgIsArticle = mw.config.get( 'wgIsArticle ' );
   
+
var wgCanonicalNamespace = mw.config.get( 'wgCanonicalNamespace' );
// anzeigen & verbergen (siehe bald Diskussionsseite)
+
var wgScriptPath = mw.config.get( 'wgScriptPath' );
function einaus (inhalt, einblenden, ausblenden) {
+
/*codeEditor*/
     var thisLevel  = document.getElementById(inhalt);
+
var wgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' ); 
     var otherLevel = document.getElementById(einblenden);
+
/* CategoryTree-Extension */
     var linkLevel  = document.getElementById(ausblenden);
+
var wgServer = mw.config.get( 'wgServer' );
     if (thisLevel.style.display == 'none') {
+
/* Wikikontrolle */
        thisLevel.style.display = 'block';
+
var stylepath = mw.config.get( 'stylepath' );
        otherLevel.style.display = 'none';
+
 
        linkLevel.style.display = 'inline';
+
/* CSS per ResourceLoader nachladen */
     } else {
+
function importCSS(title) {
         thisLevel.style.display = 'none';
+
    mw.loader.load( wgServer + wgScriptPath + '/index.php?title=' +  
         otherLevel.style.display = 'inline';
+
              encodeURIComponent(title) + '&action=raw&ctype=text/css&smaxage=21600&maxage=86400&*', 'text/css', 'true' );
        linkLevel.style.display = 'none';
+
}
 +
 
 +
/* JS per ResourceLoader nachladen */
 +
 
 +
function importJS(title) {
 +
     mw.loader.load( wgServer + wgScriptPath + '/index.php?title=' +  
 +
                 encodeURIComponent(title) + '&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400&*', 'text/javascript' );
 +
}
 +
 
 +
//== 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);
 +
 
 +
/* Zum "Übersetzen" von Sidebar-Einträgen und Menüs bitte das hier verwenden! */
 +
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
 +
    "Arschkarte":                    [ CSS("MediaWiki:Skin/Projekt:Ka-Mel-Oh!.css") ], //TODO: mal in die Kartenvorlagen reinflanschen
 +
    "Artikelbaukasten":              [            defaultJS ],
 +
    "Bewegung":                      [            defaultJS ],
 +
    "DIR":                            [ defaultCSS ],
 +
    "Gefälle":                        [ defaultCSS ],
 +
    "Krumm, schief und wackelig":    [ defaultCSS ],
 +
    "Gelbsucht":                      [            defaultJS ],
 +
    "Latein":                        [            JS("MediaWiki:Skin/pagina_latina.js") ,libTranslate ],
 +
    "Lorem Ipsum":                    [            JS("MediaWiki:Skin/pagina_latina.js") ,libTranslate ],
 +
    "Pseudolink":                    [ defaultCSS            ],
 +
    "Taschenlampe":                  [ defaultCSS, defaultJS ],
 +
    "Wirklich leere Seite":          [ defaultCSS            ],
 +
    "Roter Knopf/Gedrückt":          [ defaultCSS            ],   
 +
 
 +
    // Kamelopedia
 +
    "Commons:Kugel":                  [ defaultCSS, defaultJS ],
 +
    "Kamelopedia:Kalender":          [ defaultCSS            ],
 +
    "Kamelopedia:Harmoniehütte":      [ defaultCSS            ],
 +
    "Kamelopedia:Zeitreisemaschine": [            defaultJS,  JS("Kamel:J*/lib/async.js"), JS("Kamel:J*/lib/wiki.js") ],
 +
 
 +
    // Projekt
 +
    "Projekt:Ka-Mel-Oh!": [ defaultCSS            ],
 +
    "Projekt:Bürokratenspiel/9. Runde/Organe/Geheimdienst": [ JS("MediaWiki:Skin/Projekt:BS9Geheimdienst.js") ],
 +
    "Projekt:Adventure/176": [ JS("MediaWiki:Skin/Projekt:Adventure/176.js") ],
 +
    "Projekt:Adventure/459": [ JS("MediaWiki:Skin/Projekt:Adventure/459.js") ],
 +
    "Projekt:Panini/Frauenfussballweltmeisterschaft 2015" : [ defaultCSS ],
 +
    // Forum
 +
    "Forum:Kamelopedia-Design-Wettbewerb": [ defaultJS            ],
 +
    "Projekt:Adventure 2.0": [ CSS("MediaWiki:Skin/Projekt:Adventure2.css") , JS("MediaWiki:Skin/Projekt:Adventure2/init.js")],
 +
    "Projekt:Adventure 2.0/Autoren-Handbuch/Scripting-Anleitung": [ defaultCSS ],
 +
   
 +
    // Spezial
 +
    "Spezial:Hochladen":              [ defaultCSS, defaultJS ],
 +
    "Spezial:RatedPages":            [            defaultJS ],
 +
    "Spezial:KamelBox":              [ defaultCSS                      ],
 +
    "Spezial:Buschtrommel":          [JS("MediaWiki:Skin/Trommel.js")],
 +
 
 +
    // Frage
 +
    "Frage:Ich verschenke eine Million Euro, wer sie haben will muss sich nur melden und sagen, warum er oder sie das Geld haben will.": [ defaultJS ],
 +
 
 +
    // Echzeit-Letzte-Änderungen
 +
    //"Kamelopedia:RTRC":              [JS("MediaWiki:Skin/Kamelopedia:RTRC.js")],
 +
    "Kamelopedia:Aktive Seiten":      [            defaultJS ],
 +
    "Kamelopedia:Statistik":          [ defaultCSS, defaultJS ],
 +
    "News:Aktuelle ErregnisseS":      [CSS("MediaWiki:Skin/KameloExpress.css")],
 +
 
 +
     "": [] // damit oben überall Kommata stehen bleiben können
 +
};
 +
//
 +
var pageName = [Seitenname.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";
 +
        importCSS(item.page);
 +
     }
 +
    else if (item.type == "JS")
 +
    {
 +
        if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".js";
 +
      importJS(item.page);
 +
     }
 +
}
 +
 
 +
// lade [[Hilfe:Edittools.js]], wenn Seite bearbeitet wird (und neue toolbar aus)
 +
//
 +
if ((Aktion == 'edit' || Aktion == 'submit') ) {
 +
    importCSS("MediaWiki:Skin/Edittools.css");
 +
    //MW1.17 -> evtl. erst in Hilfe:Edittools.js anderen Krempel per resourceloader nachladen lassen
 +
    importJS("Hilfe:Edittools.js");
 +
}
 +
 
 +
// Bild-Box-Lizenz-Gedöns für Datei-Seitenbearbeitung
 +
//
 +
if ((NamensraumNr == 6 ) && (Aktion == 'edit' || Aktion == 'submit')) {  
 +
    importCSS('MediaWiki:Skin/Spezial:Hochladen.css');
 +
    importJS('MediaWiki:Skin/Spezial:Hochladen.js');
 +
}
 +
 
 +
// ==================================================================
 +
// Schwesterprojekte
 +
// ==================================================================
 +
 
 +
// KameloNews, Skin und Script
 +
if (NamensraumNr == 108 && (Aktion == 'view' || Aktion == 'submit') && wgTitle != "Aktuelle ErregnisseS"){ 
 +
    importCSS("MediaWiki:Skin/KameloNews.css");
 +
    importJS("MediaWiki:Skin/KameloNews.js");
 +
}
 +
 
 +
// Gute Frage, Skin und Script
 +
if (NamensraumNr == 114 || NamensraumNr == 115 || (Seitenname == "Spezial:Suche" && location.href.indexOf("Suchwort&ns114=1&fulltext") > 0)) {
 +
    importCSS("MediaWiki:Skin/Frage.css");
 +
    importJS("MediaWiki:Skin/Frage.js");
 +
}
 +
 
 +
// KameloBooks, Skin und Script
 +
if (NamensraumNr == 112 || NamensraumNr == 113){ 
 +
    importCSS("MediaWiki:Skin/KameloBooks.css");
 +
    importJS("MediaWiki:Skin/KameloBooks.js");
 +
}
 +
 
 +
// Kamelionary, Skin und Script
 +
if (NamensraumNr == 106 || NamensraumNr == 107) {
 +
    importCSS("MediaWiki:Skin/Kamelionary.css");
 +
    importJS("MediaWiki:Skin/Kamelionary.js");
 +
}
 +
 
 +
// Kamelomedia Commons, Skin
 +
if (NamensraumNr == 110 || NamensraumNr == 111 || Seitenname.indexOf ("Kategorie:Commons:") != -1 || Seitenname.indexOf ("Kategorie:Dateien_nach_Motiv") != -1){ 
 +
    importCSS("MediaWiki:Skin/Commons.css");
 +
}
 +
// Dateinamensraum, Skin - und Datei-Tags werden zu Links
 +
if ( NamensraumNr == 6 || NamensraumNr == 10) {
 +
      importCSS("MediaWiki:Skin/Datei.css");
 +
}
 +
 
 +
// Forum, Skin
 +
if (NamensraumNr == 102) { 
 +
    importCSS("MediaWiki:Skin/Forum:Kamelopedia.css");
 +
}
 +
 
 +
// Archiv, Skin
 +
if (NamensraumNr == 104 || NamensraumNr == 105) {
 +
     importCSS("MediaWiki:Skin/Archiv.css");
 +
}
 +
 
 +
// ==================================================================
 +
 
 +
// Tag-Redirects
 +
if (Seitenname.indexOf ("Kategorie:Commons:") != -1 ){ 
 +
  importJS("Kamel:J*/lib/nulledit.js");
 +
    var nulledit_count = 0;
 +
    function ne_report (text,p)
 +
    {
 +
        nulledit_count += p;
 +
        if(nulledit_count == 0)
 +
            jQuery("#tag_redirect_info").text("Fertig. Bitte lade die Seite neu und schau nach, ob noch Dateien übrig geblieben sind.");
 +
        else
 +
            jQuery("#tag_redirect_info").text(text + " – noch " + nulledit_count + " Nulledits");
 +
    }
 +
    jQuery(document).ready( function () {
 +
         jQuery("#tag_redirect_go").bind("click",function () {
 +
            categoryNulledit(Seitenname, ne_report);
 +
        });
 +
    });
 +
}
 +
 
 +
// Adventure 2.0 wieder vernünftig bearbeitbar machen:
 +
if (Seitenname.indexOf("Projekt:Adventure_2.0/") == 0) {
 +
importCSS("MediaWiki:Skin/Projekt:Adventure2.css")
 +
}
 +
 
 +
// Feedback
 +
if (NamensraumNr % 2 == 0 && NamensraumNr != 2 && NamensraumNr != 102 && NamensraumNr != 104 && Aktion == "view" ) {
 +
    //importJS("MediaWiki:Skin/Feedbackknopf.js");
 +
/* Ultrakurzfeedbackdings */
 +
function fb_error_callback () {
 +
        jQuery('#mw-js-message').html("Bei der Zurückfütterung ist ein Fehler aufgetreten!");
 +
         jQuery('#mw-js-message').slideDown('fast');
 +
}
 +
 
 +
jQuery(document).ready(function(){
 +
 
 +
jQuery("#p-namespaces ul").append("<li id='ca-feedback'><span><a title='Ein kurzes Feedback zu dieser Seite abgeben'>F/b</a></span></li>");
 +
 
 +
jQuery("body").append("<div id='f_b_background' style='display: none; position:fixed; opacity: 0.5; -moz-opacity: 0.5; width: 100%; height: 100%; top: 0px; left 0px; background-color: black;'>&nbsp;</div>");
 +
jQuery("body").append("<div id='f_b' style='display: none; position:fixed; border: 1px black solid; background: white; left: 50%; top: 50%; width: 340px; height: 240px; padding: 30px; margin-left: -185px; margin-top: -135px;'><h5>Ultrakurzfeedback abgeben</h5><div style='font-size: 80%'>Füttere den Autor zurück: Text oder Bewertung oder beides.</div><div id='fb_preview_frame' style='display:none; font-size: 80%;'><div id='fb_preview_area'></div><div>(In der Vorschau werden die Schlangenlinien noch nicht ersetzt, später auf der Seite schon.)</div></div><form id='fb_form'><textarea style='height:100px;' /><br/><label for='fb_rating'>Kurzbewertung:</label><select name='fb_rating' id='fb_rating'><option value=''>ohne Kurzbewertung</option><option value='0'>0 Höcker –– grottenschlecht</option><option value='1'>1 Höcker –– schwach</option><option value='2'>2 Höcker –– neutrales Mittelfeld</option><option value='3'>3 Höcker –– gut</option><option value='4'>4 Höcker –– sehr gut</option><option value='5'>5 Höcker –– Spitzenbeitrag</option></select><br/><input type='checkbox' id='fb_autosign' name='fb_autosign' checked='checked' style='display:none;'><label for='fb_autosign' style='color:#777;font-size:0.8em;'>Dein Feedback wird automatisch unterschrieben!</label><br/><input type='submit' value='Abschicken' /><input id='fb_preview' type='button' value='Vorschau'><input id='fb_reset' type='reset' value='abbrechen'></form></div>");
 +
 
 +
jQuery("#fb_reset").click( function () {
 +
  jQuery("#f_b_background, #f_b").hide();
 +
});
 +
 
 +
jQuery("#fb_preview").click( function () {
 +
  jQuery.ajax({
 +
    url: "/api.php",
 +
    type: "POST",
 +
    data: {
 +
        action: "parse",
 +
        text: "\n{{Kurzfeedback|text="+jQuery("#fb_form textarea").val()+(jQuery("#fb_autosign")[0].checked ? " -- ~~"+"~~" : "")+"|r="+jQuery("#fb_form select").val()+"}}",
 +
        format: "xml"
 +
    },
 +
    success: function (tr) {
 +
      jQuery("#fb_preview_frame").show();
 +
      jQuery("#fb_preview_area").html(jQuery(tr).find("text").text());
 +
      jQuery("#f_b").css("height","350px");
 +
      jQuery("#f_b").css("margin-top","-190px");
 +
      jQuery("#f_b").css("width","540px");
 +
      jQuery("#f_b").css("margin-left","-195px");
 
     }
 
     }
}
+
  });
 +
});
 +
 
 +
jQuery("#fb_form").submit( function () {
 +
  var wgFormattedNamespaces = mw.config.get( 'wgFormattedNamespaces' );
 +
  var wgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' );
 +
  var wgTitle = mw.config.get( 'wgTitle' );
 +
 
 +
  if (jQuery("#fb_form textarea").val()+jQuery("#fb_form select").val() == "")
 +
  {
 +
      alert("Eins von beidem, Text oder Bewertung, solltest du schon mindestens ausfüllen!");
 +
      return false;
 +
  }
 +
 
 +
  window.fb_data = {
 +
    url: "/api.php",
 +
    data: {
 +
            action: "edit",
 +
            title: wgFormattedNamespaces[wgNamespaceNumber+1]+":"+wgTitle,
 +
            summary: "Kurzfeedback",
 +
            appendtext: "\n{{Kurzfeedback|text="+jQuery("#fb_form textarea").val()+(jQuery("#fb_autosign")[0].checked ? " -- ~~"+"~~" : "")+"|r="+jQuery("#fb_form select").val()+"}}"
 +
        },
 +
    success: function () {
 +
        jQuery("#f_b_background, #f_b").hide();
 +
        jQuery("#ca-feedback").addClass("done");
 +
        jQuery('#mw-js-message').html("Die Zurückfütterung war erfolgreich!");
 +
        jQuery('#mw-js-message').slideDown('fast');
 +
    },
 +
    error: fb_error_callback,
 +
    type: 'POST'
 +
  };
 +
  jQuery.ajax({
 +
    cache: false,
 +
    url: "/api.php",
 +
    data: {
 +
      format: "xml",
 +
      action: "query",
 +
      prop: "info",
 +
      intoken: "edit",
 +
      titles: wgFormattedNamespaces[wgNamespaceNumber+1]+":"+wgTitle
 +
    },
 +
    type: 'GET',
 +
    success: function(tr) {
 +
      var token = jQuery(tr).find("api query pages page").attr('edittoken');
 +
      fb_data.data.token = token;
 +
      var section_data = jQuery.ajax({
 +
          async: false,
 +
          url: "/api.php",
 +
          data: {
 +
              action: "parse",
 +
              prop: "sections",
 +
              page: fb_data.data.title,
 +
              format: "xml"
 +
          },
 +
          error: fb_error_callback
 +
      }).responseXML;
 +
      fb_data.data.section = jQuery(section_data).find('s[line="Kurzfeedback"]').index() + 1;
 +
      if (fb_data.data.section == 0)
 +
      {
 +
          fb_data.data.section = "new";
 +
          fb_data.data.text = fb_data.data.appendtext;
 +
          delete fb_data.data.appendtext;
 +
      }
 +
 
 +
      jQuery.ajax(fb_data);
 +
    },
 +
    error: fb_error_callback
 +
  });
 +
  return false;
 +
}
 +
);
  
//================================================================================
+
jQuery("#ca-feedback").click(function () {
// dragobject wird in [[Projekt:Gummistiefel]] verwendet
+
    jQuery("#f_b_background, #f_b").show();
// alles mit class='jstest' ist dragbar
+
    jQuery("#fb_form textarea").focus();
+
});
/***********************************************
 
* Drag and Drop Script: © Dynamic Drive (http://www.dynamicdrive.com)
 
* This notice MUST stay intact for legal use
 
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
 
***********************************************/
 
 
var dragobject={
 
z: 0, x: 0, y: 0, offsetx : null, offsety : null, targetobj : null, dragapproved : 0,
 
initialize:function(){
 
document.onmousedown=this.drag
 
document.onmouseup=function(){this.dragapproved=0}
 
},
 
drag:function(e){
 
var evtobj=window.event? window.event : e
 
this.targetobj=window.event? event.srcElement : e.target
 
if (this.targetobj.className=="jstest"){
 
this.dragapproved=1
 
if (isNaN(parseInt(this.targetobj.style.left))){this.targetobj.style.left=0}
 
if (isNaN(parseInt(this.targetobj.style.top))){this.targetobj.style.top=0}
 
this.offsetx=parseInt(this.targetobj.style.left)
 
this.offsety=parseInt(this.targetobj.style.top)
 
this.x=evtobj.clientX
 
this.y=evtobj.clientY
 
if (evtobj.preventDefault)
 
evtobj.preventDefault()
 
document.onmousemove=dragobject.moveit
 
}
 
},
 
moveit:function(e){
 
var evtobj=window.event? window.event : e
 
if (this.dragapproved==1){
 
this.targetobj.style.left=this.offsetx+evtobj.clientX-this.x+"px"
 
this.targetobj.style.top=this.offsety+evtobj.clientY-this.y+"px"
 
return false
 
}
 
}
 
}
 
 
dragobject.initialize();  
 
  
//==================================================================================
+
});
// Prototype
+
}
addJS("MediaWiki:Prototype.js");
 
  
//================================================================================
+
// Tausche [[Special:Specialpages]] gegen [[Kamelopedia:Spezialseiten]]
// lade [[Hilfe:Edittools.js]], wenn Seite bearbeitet wird
+
jQuery(document).ready(function(){
 +
    document.getElementById("t-specialpages").innerHTML = '<a href="' + wgScriptPath +'/index.php/Kamelopedia:Spezialseiten">Spezialitäten</a>';
 +
});
  
if ( (wgAction == 'edit' || wgAction == 'submit') && wgCanonicalNamespace == "File" ) {  
+
//Gedudel auf [[Aufzug]] und [[Gedudel]] und [[Kamelopedia:WiKa-Sekte]]
     addCSS("MediaWiki:Skin/Spezial:Hochladen.css");
+
if (Seitenname == 'Aufzug' || Seitenname == 'Gedudel' || Seitenname == 'Kamelopedia:WiKa-Sekte' ) {
    addJS("MediaWiki:Skin/Spezial:Hochladen.js");
+
     document.write('<embed src="' + wgServer +'/images/c/cb/Aufzug.mid" autostart="true" type="audio/midi" loop="true" hidden="true" height="0" width="0">');
}
+
}
if ( (wgAction == 'edit' || wgAction == 'submit') && wgTitle != 'Nachteule/Test2' ) {
 
    addJS("Hilfe:Edittools.js");
 
}
 
  
//============================================================
+
//Gedudel auf [[Mausetot]]
// Tausche [[Special:Specialpages]] gegen [[Kamelopedia:Spezialseiten]]
+
if (Seitenname == 'Mausetot' ) {
+
    document.write('<embed src="' + wgServer +'/images/a/a3/Fuchs.mid" autostart="true" type="audio/midi" loop="true" hidden="true" height="0" width="0">');
addOnloadHook(function() {
+
}
    document.getElementById("t-specialpages").innerHTML = '<a href="/index.php/Kamelopedia:Spezialseiten">Spezialitäten</a>';
 
});
 
 
//================================================================================
 
// lade [[Hilfe:Javachat.js]] nach, wenn auf [[Kamelopedia:Chat]] */
 
 
if (wgPageName == 'Kamelopedia:Chat')  addJS("Hilfe:Javachat.js");
 
  
//================================================================================
+
//[[Popupblocker]]
//Gedudel auf [[Aufzug]] und [[Gedudel]] und [[WiKa-Sekte]]
+
if (Seitenname == 'Popupblocker') {
+
    alert("Ihr Popupblocker ist aktiviert");
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">');
 
}
 
 
//================================================================================
 
//[[Popupblocker]]
 
 
if (wgPageName == 'Popupblocker') {
 
    alert("Ihr Popupblocker ist aktiviert");
 
}
 
 
//================================================================================
 
// Bilder bekommen einen "ähnliche Bilder"-Link und auch die Tagwolke
 
if ( wgCanonicalNamespace == "File" || wgPageName == "Kamelopedia:Bildtagwolke")
 
        addJS("MediaWiki:Skin/Kamelopedia:Bildsuche/bild.js");
 
  
 
//================================================================================
 
//================================================================================
// Skin für Forum
+
// Ka-Mel-Oh! CSS IMMER nachladen, damit z.B. auch [[Arschkarte]] nicht doof aussieht
+
// oder doch nicht, kostet nämlich auch ressourcen!
if (wgNamespaceNumber == 102) {
+
// importCSS("MediaWiki:Skin/Projekt:Ka-Mel-Oh!.css");
    addCSS("MediaWiki:Skin/Forum.css");
 
}
 
  
//================================================================================
+
// Der doofe server stürzt dauernd ab, wenn das script da unten läuft ...
// Skin für Archiv
+
if (Seitenname == "Kinderporno" || Seitenname == "Server_Error") {
 
+
     //MW1.17+ ? window.onload...
if (wgNamespaceNumber == 104 || wgNamespaceNumber == 105) {
+
    window.onload = function() {
     addCSS("MediaWiki:Skin/Archiv.css");
+
        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";
// Skin und script für Kamelionary
+
document.getElementsByTagName("body")[0].style.padding = "10px";
 
+
document.getElementsByTagName("body")[0].innerHTML = document.getElementById("ServerError").innerHTML;
if (wgNamespaceNumber == 106 || wgNamespaceNumber == 107) {
+
    }
    addCSS("MediaWiki:Skin/Kamelionary.css");
+
}
    addJS("MediaWiki:Skin/Kamelionary.js");
 
}
 
  
 
// ================================================================================
 
// ================================================================================
 +
//
 +
//MW1.18+ ??? -> jQuery-Klapp standardmässig aktiviert (class mw-collapsible)
 +
//
 
// Ein- und Ausblenden per Javascript
 
// Ein- und Ausblenden per Javascript
  
Zeile 218: Zeile 451:
 
if ( a[div].className == "klapp" )
 
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);}
 
a[div].onclick = function () { ausklapp(this);}
 
}
 
}
Zeile 271: Zeile 499:
  
 
// Nach dem Laden des Fensters folgendes Ausführen:
 
// Nach dem Laden des Fensters folgendes Ausführen:
addOnloadHook(makeAusklapp);
+
jQuery(document).ready(makeAusklapp);
addOnloadHook(zirkelklapp);
 
  
/* Neues Zirkel-Klapp-script mit prototype-Gedöhnse */
+
// ================================================================================
 
 
function zirkelklapp() {
 
alldivs = document.getElementsByTagName('div');
 
for(var i = 0; i < alldivs.length; i++) {
 
if(alldivs[i].className == "tooltipsource zirkel") {
 
if(typeof zirkel == 'undefined') {
 
zirkel = new Array();
 
}
 
zirkel.push(alldivs[i]);
 
}
 
}
 
if(typeof zirkel != 'undefined') {
 
for(var i = 0; i < zirkel.length; i++) {
 
zirkel[i].getElementsByTagName('table')[0].style.display = 'none';
 
}
 
alllinks = document.getElementsByTagName('a');
 
for(var i = 0; i < alllinks.length; i++) {
 
Event.observe(alllinks[i], 'mouseover', function(event) {
 
Event.stopObserving(document.getElementsByTagName('body')[0], 'mousedown');
 
});
 
Event.observe(alllinks[i], 'mouseout', function(event) {
 
Event.observe(document.getElementsByTagName('body')[0], 'mousedown', function(event) {
 
for(var i = 0; i < zirkel.length; i++) {
 
zirkel[i].getElementsByTagName('table')[0].style.display = 'none';
 
}
 
Event.stopObserving(document.getElementsByTagName('body')[0], 'mousedown');
 
});
 
});
 
};
 
for(var i = 0; i < zirkel.length; i++) {
 
Event.observe(zirkel[i].getElementsByTagName('span')[0], 'click', function(event) {
 
this.parentNode.getElementsByTagName('table')[0].style.display = 'block';
 
Event.observe(document.getElementsByTagName('body')[0], 'mousedown', function(event) {
 
for(var i = 0; i < zirkel.length; i++) {
 
zirkel[i].getElementsByTagName('table')[0].style.display = 'none';
 
}
 
Event.stopObserving(document.getElementsByTagName('body')[0], 'mousedown');
 
});
 
});
 
}
 
}
 
}
 
  
 +
// altes dragobject für die Seiten, wo benutzt, ansonsten raus (alles mit class='jstest' ist dragbar)
 +
if (Seitenname == 'Projekt:Gummistiefel' ||
 +
        Seitenname == 'Kamel_Diskussion:AnnaLog/Archiv' ||
 +
        Seitenname == 'Windowspedia' ||
 +
        Seitenname == 'Gut_versteckt' ||
 +
        Seitenname == 'B-Wegung' ||
 +
        Seitenname == 'Wortspiel' ||
 +
        Seitenname == 'Kamel:Atreju/Spielplatz' ||
 +
        Seitenname == 'Kamel:Pille' ||
 +
        Seitenname == 'Bewegliche_Feiertage' ||
 +
        Seitenname == 'Kamel:J*/Ka-Mel-Oh/Testgelände' ||
 +
        Seitenname == 'Fallstudie' ||
 +
        Seitenname == 'Projekt_Diskussion:Gummistiefel') {
 +
  mw.loader.using( ['jquery.ui.draggable'], function(){
 +
  jQuery(document).ready(function(){
 +
    jQuery( ".jstest" ).draggable({ stack: ".jstest" });
 +
  });
 +
});
 +
 +
}
  
 
// ================================================================================
 
// ================================================================================
Zeile 327: Zeile 532:
 
  * By [[wikia:User:Splarka|Splarka]]
 
  * By [[wikia:User:Splarka|Splarka]]
 
  */
 
  */
addOnloadHook(function() {
+
jQuery(document).ready(function(){
 
     if (typeof(disableUsernameReplace) != 'undefined' && disableUsernameReplace) return;
 
     if (typeof(disableUsernameReplace) != 'undefined' && disableUsernameReplace) return;
 
     if (!document.getElementById('pt-userpage'))    return;
 
     if (!document.getElementById('pt-userpage'))    return;
Zeile 342: Zeile 547:
 
// ================================================================================
 
// ================================================================================
 
// FDP-Version & Zitierhilfe, nur mal so zum Spass...
 
// FDP-Version & Zitierhilfe, nur mal so zum Spass...
if (wgNamespaceNumber == 0 || wgNamespaceNumber == 106) {
+
if (NamensraumNr == 0 || NamensraumNr == 106) {
   addOnloadHook(function addFDPVersion(){
+
   jQuery(document).ready(function(addFDPVersion){
 
   var aZit = document.createElement("a");
 
   var aZit = document.createElement("a");
 
   aZit.title = "Seite zitieren";
 
   aZit.title = "Seite zitieren";
   aZit.href = wgServer + "/index.php/" + "Hilfe:Zitierhilfe";
+
   aZit.href = mw.config.get( 'wgServer' ) + "/index.php/" + "Hilfe:Zitierhilfe";
 
   aZit.appendChild(document.createTextNode("Seite zitieren"));
 
   aZit.appendChild(document.createTextNode("Seite zitieren"));
  
 
   var aPDF = document.createElement("a");
 
   var aPDF = document.createElement("a");
 
   aPDF.title = "FDP-Version";
 
   aPDF.title = "FDP-Version";
   aPDF.href = wgServer + "/index.php/" + "PDF?klapp=pdfgen";
+
   aPDF.href = mw.config.get( 'wgServer' ) + "/index.php/" + "PDF?klapp=pdfgen";
 
   aPDF.appendChild(document.createTextNode("FDP-Version"));
 
   aPDF.appendChild(document.createTextNode("FDP-Version"));
  
 
   var LiZit = document.createElement("li");
 
   var LiZit = document.createElement("li");
 
   LiZit.style.whiteSpace = "nowrap";
 
   LiZit.style.whiteSpace = "nowrap";
 +
  LiZit.id = "x-zitieren";
 
   LiZit.appendChild(aZit);
 
   LiZit.appendChild(aZit);
  
 
   var LiPDF = document.createElement("li");
 
   var LiPDF = document.createElement("li");
 
   LiPDF.style.whiteSpace = "nowrap";
 
   LiPDF.style.whiteSpace = "nowrap";
 +
  LiPDF.id = "x-pdf";
 
   LiPDF.appendChild(aPDF);
 
   LiPDF.appendChild(aPDF);
  
Zeile 368: Zeile 575:
 
};
 
};
  
// ================================================================================
 
// bildersuche
 
 
// Die neue Bildersuche in der Sidebar verlinken (da die sowieso nur per javascript funzt, kann man die auch per javascript verlinken)
 
addOnloadHook(function() {
 
    var searchBody = document.getElementById("searchBody");
 
    searchBody.innerHTML += '<ul style="text-align:left"><li><a href="/index.php/Spezial:Suche">erweiterte Suche</a></li></ul>';
 
});
 
 
// ================================================================================
 
// sitenotice
 
 
// Die sitenotice per Klick verstecken
 
 
addOnloadHook(hideSitenotice);
 
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:3.3em; top:9px; font-size:0.8em;">[Sitenotice verbergen]</a>';
 
}
 
}
 
}
 
 
function machdiesiteNoticewegduSau() {
 
        document.getElementById("siteNoticeSub").innerHTML = '<a href="javascript:gabsdanichtmalnesiteNotice()" style="position:absolute; right:3.3em; 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:3.3em; 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";
 
}
 
 
// Der doofe server stürzt dauernd ab, wenn das script da unten läuft ...
 
 
window.onload = function()
 
{
 
if (document.getElementById("ServerError")) {
 
    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;
 
    }
 
}
 
  
 
/* Artikel-Review-Autovervollständigungs-script */
 
/* Artikel-Review-Autovervollständigungs-script */
 
+
if (NamensraumNr == 1 && Aktion == 'edit' && window.location.href.split('&')[2] == 'articlereview=true') {
if(wgAction == 'edit' && window.location.href.split('&')[2] == 'articlereview=true') {
 
 
     var hoecker  = '~~';
 
     var hoecker  = '~~';
 
     templateCode = '{{Artikeltest\r'
 
     templateCode = '{{Artikeltest\r'
Zeile 449: Zeile 594:
  
 
     window.onload = function() {
 
     window.onload = function() {
           originalSource = document.getElementById('wpTextbox1').value;
+
           var originalSource = document.getElementById('wpTextbox1').value;
           newSource      = originalSource.replace(/\{\{Artikeltest\}\}/g, templateCode);
+
           var newSource      = originalSource.replace(/\{\{Artikeltest\}\}/g, templateCode);
 
           document.getElementById('wpTextbox1').value = newSource;
 
           document.getElementById('wpTextbox1').value = newSource;
          }
 
 
     }
 
     }
 +
}
 +
   
 +
// externe links in neuem browser Fenster öffnen (nicht bei interwikis)
 +
function externalWindow(){
 +
    if ((typeof(disableLinkWindow) != 'undefined' && disableLinkWindow) || (!document.getElementById ('bodyContent'))) {
 +
  return;
 +
}
 +
    var allinks = document.getElementById('bodyContent').getElementsByTagName('a');
 +
    for(var i = 0; i < allinks.length; i++) {
 +
        if(allinks[i].href.indexOf('' + wgServer +'/') == -1 && allinks[i].parentNode.className.indexOf('noblank') == -1){
 +
            allinks[i].target = '_blank';
 +
        }
 +
    }
 +
}
 +
 +
jQuery(document).ready(externalWindow);
 +
 +
//experimenteller HTML5-Player für die Datei-Seite //
 +
jQuery(document).ready(function(){
 +
  if ((mw.config.get( 'wgCanonicalNamespace' )=="File") && (Aktion == 'view') && (wgTitle.indexOf('.og') != -1) &&(!$.browser.msie)) {
 +
    var isogg = true;
 +
    var mtyp = wgTitle.substr((wgTitle.length)-3, 3);
 +
    var $media = jQuery('#file.fullImageLink:first');
 +
    var $mediaLink = $media.find('a');
 +
    switch (mtyp) {
 +
        case "ogg":
 +
              var $mime = jQuery('<audio controls />').attr('src', $mediaLink.attr('href')).wrap('<div />');
 +
              break;
 +
        case "oga":
 +
              var $mime = jQuery('<audio controls />').attr('src', $mediaLink.attr('href')).wrap('<div />');
 +
              break;
 +
        case "ogv":
 +
              var $mime = jQuery('<video controls />').attr('src', $mediaLink.attr('href')).wrap('<div />');
 +
              break; 
 +
        default:
 +
        isogg = false;
 +
        break;
 +
    }
 +
    if (isogg)  {
 +
        var $info = jQuery('<div id="html5info" />').html('Der Player für diese Datei wird nur in oggfreundlichen<br />und HTML5fähigen Browsern angezeigt <a href="' + wgServer + '/index.php/Forum:Video-/_Audio-Player_(aktuelle_Infos_zu_OGG-Dateien)">(Info)</a>.<br />Alternativ die Datei halt herunterladen (Link direkt hier drunter)');
 +
        $media.html($mime).append($info);
 +
    }
 +
  }
 +
});
 +
 +
/* Funktionen zur Zeitsteuerung */
 +
function dateFromServer () {
 +
    return new Date(jQuery(jQuery(jQuery.ajax({
 +
        url: "/api.php",
 +
        data: {action:"parse", format:"xml", text:"{{#timel: m_d,_Y_H:i:s}}", prop:"text"},
 +
        dataType: "xml",
 +
        async: false,
 +
        timeout: 300
 +
    }).responseXML).find("api parse text").text()).text().replace(/[\s\n]/g, "").replace(/_/g," "));
 +
}
 +
 +
function dateFromClient () {
 +
    return new Date();
 +
}
 +
 +
// Zeit vom wahlweise Server oder vom Client holen
 +
 +
var now = dateFromClient();
 +
 +
// oben: hohe Priorität, unten: niedrige Priorität
 +
// Parameter: aktuelle Zeit als Date Objekt
 +
// Rückgabewert: true zurückgeben, um weitere Aktionen zu unterbinden, sonst false
 +
// Achtung: Monate werden ab 0 gezählt, Monatstage ab 1
 +
var dateSpecificActions = [
 +
// cAPSLOCK dAY
 +
//function (d) {
 +
// if ((d.getMonth() == 9 && d.getDate() == 22) ||
 +
//     (d.getMonth() ==  5 && d.getDate() == 28) )
 +
// {
 +
// importJS("MediaWiki:Skin/dateSpecific/CAPSLOCK.js")
 +
// return true;
 +
// }
 +
// return false;
 +
//}
 +
];
 +
 +
for (var i=0; i<dateSpecificActions.length; i++)
 +
{
 +
    if (dateSpecificActions[i](now))
 +
        break;
 +
}
 +
 +
/* Twütter Sönderzeichen-Füx vön Jüttstürnchen */
 +
//MW1.17 (raus, Twitter funzte eh nicht)
 +
if (Seitenname=="Spezial:Badtitle" && document.referrer != null && (document.referrer.indexOf("twitter.com") != -1 || document.referrer.indexOf("Forum:Twittern") != -1))
 +
{
 +
    location.href = unescape(location.href);
 +
}
 +
 +
// Vorlage:DISPLAYTITLE
 +
jQuery(document).ready(function () {
 +
  var newTitle = jQuery("#title_replacement");
 +
  if (newTitle.length && newTitle.length > 0)
 +
  {
 +
    jQuery("#firstHeading").text(newTitle.text());
 +
  }
 +
});
 +
 +
 +
/* Warnung für Seite Kamelopedia:Das größte Schweinekamel */
 +
if (Seitenname == "Kamelopedia:Das_größte_Schweinekamel" && (Aktion == "edit" || Aktion =="submit")) {
 +
jQuery(document).ready(function(addSchwein){
 +
  var tSchwein = document.createTextNode("Achtung, diese Seite ist purer Quatsch! Niemand hält dich für ein Schweinekamel. Per JavaScript bekommt jedes angemeldete Kamel seinen eigenen Namen auf dieser Seite angezeigt. Also nicht aufregen ;)");
 +
 
 +
  var DivSchwein = document.createElement("div");
 +
  DivSchwein.style.fontSize = "130%";
 +
  DivSchwein.style.fontWeight = "bold";
 +
  DivSchwein.style.backgroundColor = "#FFD800";
 +
  DivSchwein.style.padding = "15px";
 +
  DivSchwein.appendChild(tSchwein);
 +
 +
  var warn = document.getElementById("firstHeading");
 +
  warn.appendChild(DivSchwein);
 +
});
 +
}
 +
 +
/* Skripte für autoconfirmed */
 +
/* wegen Latenzen direkt hier rein, statt nachzuladen */
 +
if ( jQuery.inArray( "autoconfirmed", wgUserGroups )  != -1 ) {
 +
 +
/* MediaWiki:Seitenempfehlung.js */
 +
/*
 +
* Version 2011-05-15.1 sollte halbwegs fehlerfrei funktionieren
 +
*/
 +
 +
var hwList; // HatWas-Liste
 +
var entry;
 +
var subpath = '/Empfehlung';  // Name bzw. Pfad der Kamelbau-Unterseiten
 +
 +
// Es gibt KEINE Regeln bzgl. der persönlichen Empfehlungen, ein automatischer Daumen taucht jedoch nur auf
 +
// Seiten auf, wo es auch potentiell lesenswertes Zeug geben tut
 +
//
 +
// HINWEIS an ---> DUFO <----
 +
// FINGER WEG VON DEN NAMENSRÄUMEN, wehe, du nimmst da was raus
 +
//
 +
var hwNS = (typeof(hwNS) != 'undefined') ? hwNS : new Array ("", "Talk", "File", "Kamelionary", "Kamelobooks", "News", "Projekt", "Frage"); // hierhin die Namensräume, wo der Daumen auftauchen soll (Achtung! canonical namespaces!);
 +
 +
// Empfehlungsliste auslesen
 +
function readHwList(username, action) {
 +
  jQuery.ajax({
 +
    url:    mw.config.get( 'wgScript' ),
 +
    data:    { title: "Kamel:" + username + subpath, action: "raw" },
 +
    cache:  false,
 +
    // Noch keine Empfehlungs-Seite angelegt
 +
    error:  function()    {
 +
        hwList = new Array();
 +
        switch (action) {
 +
          case "add":
 +
            adHW();
 +
            break;
 +
          case "remove":
 +
            removeHW();
 +
            break;
 +
        }
 +
    },
 +
    // Empfehlungs-Seite auslesen
 +
    success: function(data) {
 +
        hwList = data.match(/\[\[.*\]\]/g);
 +
        switch (action) {
 +
          case "add":
 +
            adHW();
 +
            break;
 +
          case "remove":
 +
            removeHW();
 +
            break;
 +
        }
 +
    }
 +
  });
 +
}
 +
 +
// Seite zur Empfehlungsliste hinzufügen
 +
function adHW() {
 +
  // edit-Token holen
 +
  jQuery.ajax({
 +
    url:    '/api.php',
 +
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + Kamelname + subpath, format: "xml" },
 +
    cache:  false,
 +
    success: function(data) {
 +
      var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
 +
      hwList.push(entry);          // Aktuelle Seite dazu
 +
      hwList = sortHW(hwList); // Sortieren
 +
      // Empfehlungsliste bearbeiten
 +
      jQuery.ajax({
 +
        url:    '/api.php',
 +
        type:    'POST',
 +
        cache:  false,
 +
        data:    { action: "edit", title: "Kamel:" + Kamelname + subpath, text: "* " + hwList.join("\n* "), summary: "+ " + entry, token: edittoken },
 +
        success: function(data) {
 +
          var text = '<p>Die Seite „' + Seitenname.replace(/_/g, ' ') + '“ wurde zu deinen <a href="'
 +
            + mw.config.get( 'wgScript' ) + '/Kamel:' + Kamelname + subpath + '">Empfehlungen</a> hinzugefügt.</p>';
 +
          jQuery('#mw-js-message').html(text);
 +
          jQuery('#mw-js-message').slideDown('fast');
 +
        }
 +
      })
 +
    }
 +
  });
 +
}
 +
 +
function removeHW() {
 +
  // edit-Token holen
 +
  jQuery.ajax({
 +
    url:    '/api.php',
 +
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + Kamelname + subpath, format: "xml" },
 +
    cache:  false,
 +
    success: function(data) {
 +
      var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
 +
      var i = jQuery.inArray(entry, hwList);
 +
      delete hwList[i];            // Aktuelle Seite wech
 +
      hwList = sortHW(hwList); // Sortieren
 +
      // Empfehlungsliste bearbeiten
 +
      jQuery.ajax({
 +
        url:    '/api.php',
 +
        type:    'POST',
 +
        cache:  false,
 +
        data:    { action: "edit", title: "Kamel:" + Kamelname + subpath, text: "* " + hwList.join("\n* "), summary: "- " + entry, token: edittoken },
 +
        success: function(data) {
 +
          var text = '<p>Die Seite „' + Seitenname.replace(/_/g, ' ') + '“ wurde von deinen <a href="'
 +
            + mw.config.get( 'wgScript' ) + '/Kamel:' + Kamelname + subpath + '">Empfehlungen</a> entfernt.</p>';
 +
          jQuery('#mw-js-message').html(text);
 +
          jQuery('#mw-js-message').slideDown('fast');
 +
        }
 +
      })
 +
    }
 +
  });
 +
}
 +
 +
function showHW(username) {
 +
  /* soll später html-Code für Empfehlungslisten ausspucken */
 +
}
 +
 +
// doppelte & leere Einträge entfernen + alphabetisch sortieren
 +
function sortHW(list) {
 +
  var sorted = new Array();
 +
  for(var i=0; i<list.length; i++){
 +
    for(var j=i+1; j<list.length; j++){
 +
      if (list[i] == list[j]) j = ++i;
 +
    }
 +
    if (typeof(list[i]) != 'undefined') sorted.push(list[i]);       
 +
  }
 +
  return sorted.sort();
 +
}
 +
 +
// Das ganze starten
 +
jQuery(document).ready(function() {
 +
  //if(typeof(disableGaGA) != 'undefined' && disableGaGA) return;
 +
  if(jQuery.inArray(mw.config.get( 'wgCanonicalNamespace' ), hwNS) != -1 && Aktion == "view") {
 +
    entry = (mw.config.get( 'wgCanonicalNamespace' ) == "File") ? "[[:" + Seitenname.replace(/_/g, ' ') + "]]"
 +
                                            : "[[" + Seitenname.replace(/_/g, ' ') + "]]";
 +
    jQuery('#p-views ul').append('<li class="icon"><span><a href="#"></a></span></li>');
 +
    jQuery('#p-views li:last').ajaxComplete(function() {
 +
      if(jQuery.inArray(entry, hwList) != -1) {
 +
        jQuery(this).attr('id', 'ca-unhw');
 +
        jQuery('#ca-unhw a').html('Entfehlen');
 +
        jQuery('#ca-unhw a').attr('title', 'Seite nicht mehr empfehlen');
 +
        jQuery('#ca-unhw a').unbind('click');
 +
        jQuery('#ca-unhw a').bind('click', function() { readHwList(Kamelname, 'remove') });
 +
      } else {
 +
        jQuery(this).attr('id', 'ca-hw');
 +
        jQuery('#ca-hw a').html('Empfehlen');
 +
        jQuery('#ca-hw a').attr('title', 'Seite empfehlen');
 +
        jQuery('#ca-hw a').unbind('click');
 +
        jQuery('#ca-hw a').bind('click', function() { readHwList(Kamelname, 'add') });
 +
      }
 +
    });
 +
    readHwList(Kamelname, false);
 +
  }
 +
})
 +
 +
/* MediaWiki:Group-autoconfirmed.js */
 +
 +
/* Hinweis-text auf Empfehlungsseiten der Kamele */
 +
 +
if (NamensraumNr == 2 &&  Seitenname.indexOf ("/Empfehlung") != -1) {
 +
    jQuery(document).ready(function(){
 +
      var hinweis = 'Einträge auf dieser Liste werden normalerweise über den Empfehlungsdaumen hinzugefügt bzw. entfernt. <br />';
 +
      hinweis += '<b>Wenn du diese Liste per Huf bearbeitest, beachte bitte folgendes:</b> <br />';
 +
      hinweis += 'Außer einer reinen Liste von Seitenlinks darf auf dieser Seite kein weiterer Zauber (Design, sonstige Texte etc.) stehen, damit die Listen aller Kamele einfacher ausgewertet werden können.<br />';
 +
      hinweis += 'Einträge sind ausschließlich im Format <br /><span style="font-family:monospace; font-weight:bold;">* [[Seite]]</span> <br /> vorzunehmen (bei Dateien zusätzlich einen Doppelpunkt vor Datei, also <span style="font-family:monospace; font-weight:bold;">* [[:Datei:Bild.jpg]]</span><br /><br />';
 +
      hinweis += '<b>Siehe auch: <a href="/index.php?title=Kamelopedia:Empfehlungssystem" title="Kamelopedia:Empfehlungssystem">Kamelopedia-Empfehlungssystem</a>';
 +
      // DIV basteln
 +
      var DivHinweis = document.createElement("div");
 +
      DivHinweis.style.backgroundColor = "#D1ECFF";
 +
      DivHinweis.style.fontSize = "13px";
 +
      DivHinweis.style.padding = "15px";
 +
      DivHinweis.style.marginTop = "30px";
 +
      DivHinweis.innerHTML = hinweis;
 +
      // an ID firstHeading dranflanschen
 +
      if (Aktion == "edit" || Aktion =="submit") {
 +
        jQuery('#editform').before(DivHinweis);
 +
        } else {
 +
          jQuery('#catlinks').before(DivHinweis);
 +
        }
 +
    }) 
 +
}
 +
 +
/* Link zur eigenen Liste oben zm persönlichen Kram packen */
 +
 +
  mw.util.addPortletLink('p-personal', 'http://kamelopedia.net/index.php/Spezial:Mypage/Empfehlung', 'Empfehlungen', 'pt-empfehlung', 'meine Empfehlungen', '', '#pt-watchlist')
 +
 +
}; // end autoconfirmed

Aktuelle Version vom 22. Juli 2015, 23:12 Uhr

//== hilfsfunktionen =========================================
/* Variablen füllen, damit's im Code etwas übersichtlicher bleibt */
var Seitenname   = mw.config.get( 'wgPageName' );
var NamensraumNr = mw.config.get( 'wgNamespaceNumber' );                    
var Aktion       = mw.config.get( 'wgAction' );
var Kamelname    = mw.config.get( 'wgUserName' );
/* nochn paar ehemalige globals für Dateihochladen... */
var wgScript = mw.config.get( 'wgScript' );
var wgAjaxUploadDestCheck = mw.config.get( 'wgAjaxUploadDestCheck' );
var wgAjaxLicensePreview = mw.config.get( 'wgAjaxLicensePreview' );
var wgUploadSourceIds = mw.config.get( 'wgUploadSourceIds' );
/* werden hier benutzt die vars */
var wgUserName = mw.config.get( 'wgUserName' );
var wgUserGroups = mw.config.get( 'wgUserGroups' );
var wgTitle = mw.config.get( 'wgTitle' );
var wgIsArticle = mw.config.get( 'wgIsArticle ' );
var wgCanonicalNamespace = mw.config.get( 'wgCanonicalNamespace' );
var wgScriptPath = mw.config.get( 'wgScriptPath' );
/*codeEditor*/
var wgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' );  
/* CategoryTree-Extension */
var wgServer = mw.config.get( 'wgServer' ); 
/* Wikikontrolle */
var stylepath = mw.config.get( 'stylepath' );

/* CSS per ResourceLoader nachladen */
function importCSS(title) {
    mw.loader.load( wgServer + wgScriptPath + '/index.php?title=' + 
               encodeURIComponent(title) + '&action=raw&ctype=text/css&smaxage=21600&maxage=86400&*', 'text/css', 'true' );
}

/* JS per ResourceLoader nachladen */

function importJS(title) {
     mw.loader.load( wgServer + wgScriptPath + '/index.php?title=' + 
                encodeURIComponent(title) + '&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400&*', 'text/javascript' );
}

//== 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);

/* Zum "Übersetzen" von Sidebar-Einträgen und Menüs bitte das hier verwenden! */
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
    "Arschkarte":                     [ CSS("MediaWiki:Skin/Projekt:Ka-Mel-Oh!.css") ], //TODO: mal in die Kartenvorlagen reinflanschen
    "Artikelbaukasten":               [             defaultJS ],
    "Bewegung":                       [             defaultJS ],
    "DIR":                            [ defaultCSS ],
    "Gefälle":                        [ defaultCSS ],
    "Krumm, schief und wackelig":     [ defaultCSS ],
    "Gelbsucht":                      [             defaultJS ],
    "Latein":                         [             JS("MediaWiki:Skin/pagina_latina.js") ,libTranslate ],
    "Lorem Ipsum":                    [             JS("MediaWiki:Skin/pagina_latina.js") ,libTranslate ],
    "Pseudolink":                     [ defaultCSS            ],
    "Taschenlampe":                   [ defaultCSS, defaultJS ],
    "Wirklich leere Seite":           [ defaultCSS            ],
    "Roter Knopf/Gedrückt":           [ defaultCSS            ],     

    // Kamelopedia
    "Commons:Kugel":                  [ defaultCSS, defaultJS ],
    "Kamelopedia:Kalender":           [ defaultCSS            ],
    "Kamelopedia:Harmoniehütte":      [ defaultCSS            ],
    "Kamelopedia:Zeitreisemaschine":  [             defaultJS,  JS("Kamel:J*/lib/async.js"), JS("Kamel:J*/lib/wiki.js") ],

    // Projekt
    "Projekt:Ka-Mel-Oh!": [ defaultCSS            ],
    "Projekt:Bürokratenspiel/9. Runde/Organe/Geheimdienst": [ JS("MediaWiki:Skin/Projekt:BS9Geheimdienst.js") ],
    "Projekt:Adventure/176": [ JS("MediaWiki:Skin/Projekt:Adventure/176.js") ],
    "Projekt:Adventure/459": [ JS("MediaWiki:Skin/Projekt:Adventure/459.js") ],
    "Projekt:Panini/Frauenfussballweltmeisterschaft 2015" : [ defaultCSS ],
    // Forum
    "Forum:Kamelopedia-Design-Wettbewerb": [ defaultJS            ],
    "Projekt:Adventure 2.0": [ CSS("MediaWiki:Skin/Projekt:Adventure2.css") , JS("MediaWiki:Skin/Projekt:Adventure2/init.js")],
    "Projekt:Adventure 2.0/Autoren-Handbuch/Scripting-Anleitung": [ defaultCSS ],
    
    // Spezial
    "Spezial:Hochladen":              [ defaultCSS, defaultJS ],
    "Spezial:RatedPages":             [             defaultJS ],
    "Spezial:KamelBox":               [ defaultCSS                       ],
    "Spezial:Buschtrommel":           [JS("MediaWiki:Skin/Trommel.js")],

    // Frage 
    "Frage:Ich verschenke eine Million Euro, wer sie haben will muss sich nur melden und sagen, warum er oder sie das Geld haben will.": [ defaultJS ],

    // Echzeit-Letzte-Änderungen
    //"Kamelopedia:RTRC":               [JS("MediaWiki:Skin/Kamelopedia:RTRC.js")],
    "Kamelopedia:Aktive Seiten":      [             defaultJS ],
    "Kamelopedia:Statistik":          [ defaultCSS, defaultJS ],
    "News:Aktuelle ErregnisseS":      [CSS("MediaWiki:Skin/KameloExpress.css")],

    "": [] // damit oben überall Kommata stehen bleiben können
};
//
var pageName = [Seitenname.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";
         importCSS(item.page);
    }
    else if (item.type == "JS")
    {
        if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".js";
       importJS(item.page);
    }
}

// lade [[Hilfe:Edittools.js]], wenn Seite bearbeitet wird (und neue toolbar aus)
//
if ((Aktion == 'edit' || Aktion == 'submit') ) {
    importCSS("MediaWiki:Skin/Edittools.css");
    //MW1.17 -> evtl. erst in Hilfe:Edittools.js anderen Krempel per resourceloader nachladen lassen
    importJS("Hilfe:Edittools.js");
}

// Bild-Box-Lizenz-Gedöns für Datei-Seitenbearbeitung
//
if ((NamensraumNr == 6 ) && (Aktion == 'edit' || Aktion == 'submit')) {   
    importCSS('MediaWiki:Skin/Spezial:Hochladen.css');
    importJS('MediaWiki:Skin/Spezial:Hochladen.js');
} 

// ==================================================================
// Schwesterprojekte
// ==================================================================

// KameloNews, Skin und Script
if (NamensraumNr == 108 && (Aktion == 'view' || Aktion == 'submit') && wgTitle != "Aktuelle ErregnisseS"){   
    importCSS("MediaWiki:Skin/KameloNews.css");
    importJS("MediaWiki:Skin/KameloNews.js");
}

// Gute Frage, Skin und Script
if (NamensraumNr == 114 || NamensraumNr == 115 || (Seitenname == "Spezial:Suche" && location.href.indexOf("Suchwort&ns114=1&fulltext") > 0)) {
    importCSS("MediaWiki:Skin/Frage.css");
    importJS("MediaWiki:Skin/Frage.js");
}

// KameloBooks, Skin und Script
if (NamensraumNr == 112 || NamensraumNr == 113){   
     importCSS("MediaWiki:Skin/KameloBooks.css");
     importJS("MediaWiki:Skin/KameloBooks.js");
}

// Kamelionary, Skin und Script
if (NamensraumNr == 106 || NamensraumNr == 107) {
     importCSS("MediaWiki:Skin/Kamelionary.css");
     importJS("MediaWiki:Skin/Kamelionary.js");
}

// Kamelomedia Commons, Skin
if (NamensraumNr == 110 || NamensraumNr == 111 || Seitenname.indexOf ("Kategorie:Commons:") != -1 || Seitenname.indexOf ("Kategorie:Dateien_nach_Motiv") != -1){   
     importCSS("MediaWiki:Skin/Commons.css");
}
// Dateinamensraum, Skin - und Datei-Tags werden zu Links
 if ( NamensraumNr == 6 || NamensraumNr == 10) {
      importCSS("MediaWiki:Skin/Datei.css");
}

// Forum, Skin
if (NamensraumNr == 102) {   
     importCSS("MediaWiki:Skin/Forum:Kamelopedia.css");
}

// Archiv, Skin
if (NamensraumNr == 104 || NamensraumNr == 105) {
    importCSS("MediaWiki:Skin/Archiv.css");
}

// ==================================================================

// Tag-Redirects
if (Seitenname.indexOf ("Kategorie:Commons:") != -1 ){   
   importJS("Kamel:J*/lib/nulledit.js");
    var nulledit_count = 0;
    function ne_report (text,p)
    {
        nulledit_count += p;
        if(nulledit_count == 0)
            jQuery("#tag_redirect_info").text("Fertig. Bitte lade die Seite neu und schau nach, ob noch Dateien übrig geblieben sind.");
        else
            jQuery("#tag_redirect_info").text(text + " – noch " + nulledit_count + " Nulledits");
    }
    jQuery(document).ready( function () {
        jQuery("#tag_redirect_go").bind("click",function () {
            categoryNulledit(Seitenname, ne_report);
        });
    });
}

// Adventure 2.0 wieder vernünftig bearbeitbar machen:
if (Seitenname.indexOf("Projekt:Adventure_2.0/") == 0) {
	importCSS("MediaWiki:Skin/Projekt:Adventure2.css")
}

// Feedback
if (NamensraumNr % 2 == 0 && NamensraumNr != 2 && NamensraumNr != 102 && NamensraumNr != 104 && Aktion == "view" ) {
    //importJS("MediaWiki:Skin/Feedbackknopf.js");
/* Ultrakurzfeedbackdings */
function fb_error_callback () {
        jQuery('#mw-js-message').html("Bei der Zurückfütterung ist ein Fehler aufgetreten!");
        jQuery('#mw-js-message').slideDown('fast'); 
}

jQuery(document).ready(function(){

jQuery("#p-namespaces ul").append("<li id='ca-feedback'><span><a title='Ein kurzes Feedback zu dieser Seite abgeben'>F/b</a></span></li>");

jQuery("body").append("<div id='f_b_background' style='display: none; position:fixed; opacity: 0.5; -moz-opacity: 0.5; width: 100%; height: 100%; top: 0px; left 0px; background-color: black;'>&nbsp;</div>");
jQuery("body").append("<div id='f_b' style='display: none; position:fixed; border: 1px black solid; background: white; left: 50%; top: 50%; width: 340px; height: 240px; padding: 30px; margin-left: -185px; margin-top: -135px;'><h5>Ultrakurzfeedback abgeben</h5><div style='font-size: 80%'>Füttere den Autor zurück: Text oder Bewertung oder beides.</div><div id='fb_preview_frame' style='display:none; font-size: 80%;'><div id='fb_preview_area'></div><div>(In der Vorschau werden die Schlangenlinien noch nicht ersetzt, später auf der Seite schon.)</div></div><form id='fb_form'><textarea style='height:100px;' /><br/><label for='fb_rating'>Kurzbewertung:</label><select name='fb_rating' id='fb_rating'><option value=''>ohne Kurzbewertung</option><option value='0'>0 Höcker –– grottenschlecht</option><option value='1'>1 Höcker –– schwach</option><option value='2'>2 Höcker –– neutrales Mittelfeld</option><option value='3'>3 Höcker –– gut</option><option value='4'>4 Höcker –– sehr gut</option><option value='5'>5 Höcker –– Spitzenbeitrag</option></select><br/><input type='checkbox' id='fb_autosign' name='fb_autosign' checked='checked' style='display:none;'><label for='fb_autosign' style='color:#777;font-size:0.8em;'>Dein Feedback wird automatisch unterschrieben!</label><br/><input type='submit' value='Abschicken' /><input id='fb_preview' type='button' value='Vorschau'><input id='fb_reset' type='reset' value='abbrechen'></form></div>"); 

jQuery("#fb_reset").click( function () {
  jQuery("#f_b_background, #f_b").hide();
});

jQuery("#fb_preview").click( function () {
  jQuery.ajax({
    url: "/api.php",
    type: "POST",
    data: {
        action: "parse",
        text: "\n{{Kurzfeedback|text="+jQuery("#fb_form textarea").val()+(jQuery("#fb_autosign")[0].checked ? " -- ~~"+"~~" : "")+"|r="+jQuery("#fb_form select").val()+"}}",
        format: "xml"
    },
    success: function (tr) {
       jQuery("#fb_preview_frame").show();
       jQuery("#fb_preview_area").html(jQuery(tr).find("text").text());
       jQuery("#f_b").css("height","350px");
       jQuery("#f_b").css("margin-top","-190px");
       jQuery("#f_b").css("width","540px");
       jQuery("#f_b").css("margin-left","-195px");
    }
  });
});

jQuery("#fb_form").submit( function () {
  var wgFormattedNamespaces = mw.config.get( 'wgFormattedNamespaces' );
  var wgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' );
  var wgTitle = mw.config.get( 'wgTitle' );

  if (jQuery("#fb_form textarea").val()+jQuery("#fb_form select").val() == "")
  {
      alert("Eins von beidem, Text oder Bewertung, solltest du schon mindestens ausfüllen!");
      return false;
  }

  window.fb_data = {
    url: "/api.php",
    data: {
            action: "edit",
            title: wgFormattedNamespaces[wgNamespaceNumber+1]+":"+wgTitle,
            summary: "Kurzfeedback",
            appendtext: "\n{{Kurzfeedback|text="+jQuery("#fb_form textarea").val()+(jQuery("#fb_autosign")[0].checked ? " -- ~~"+"~~" : "")+"|r="+jQuery("#fb_form select").val()+"}}"
        },
    success: function () {
        jQuery("#f_b_background, #f_b").hide();
        jQuery("#ca-feedback").addClass("done");
        jQuery('#mw-js-message').html("Die Zurückfütterung war erfolgreich!");
        jQuery('#mw-js-message').slideDown('fast'); 
    },
    error: fb_error_callback,
    type: 'POST'
  };
  jQuery.ajax({
    cache: false,
    url: "/api.php",
    data: {
      format: "xml",
      action: "query",
      prop: "info",
      intoken: "edit",
      titles: wgFormattedNamespaces[wgNamespaceNumber+1]+":"+wgTitle
    },
    type: 'GET',
    success: function(tr) {
      var token = jQuery(tr).find("api query pages page").attr('edittoken');
      fb_data.data.token = token;
      var section_data = jQuery.ajax({
          async: false,
          url: "/api.php",
          data: {
              action: "parse",
              prop: "sections",
              page: fb_data.data.title,
              format: "xml"
          },
          error: fb_error_callback
      }).responseXML;
      fb_data.data.section = jQuery(section_data).find('s[line="Kurzfeedback"]').index() + 1;
      if (fb_data.data.section == 0)
      {
          fb_data.data.section = "new";
          fb_data.data.text = fb_data.data.appendtext;
          delete fb_data.data.appendtext;
      }

      jQuery.ajax(fb_data);
    },
    error: fb_error_callback
  });
  return false;
}
);

jQuery("#ca-feedback").click(function () {
    jQuery("#f_b_background, #f_b").show();
    jQuery("#fb_form textarea").focus();
});

});	
}

// Tausche [[Special:Specialpages]] gegen [[Kamelopedia:Spezialseiten]]
jQuery(document).ready(function(){
    document.getElementById("t-specialpages").innerHTML = '<a href="' + wgScriptPath +'/index.php/Kamelopedia:Spezialseiten">Spezialitäten</a>';
});

//Gedudel auf [[Aufzug]] und [[Gedudel]] und [[Kamelopedia:WiKa-Sekte]]
if (Seitenname == 'Aufzug' || Seitenname == 'Gedudel' || Seitenname == 'Kamelopedia:WiKa-Sekte' ) {
    document.write('<embed src="' + wgServer +'/images/c/cb/Aufzug.mid" autostart="true" type="audio/midi" loop="true" hidden="true" height="0" width="0">');
}

//Gedudel auf [[Mausetot]]
if (Seitenname == 'Mausetot' ) {
    document.write('<embed src="' + wgServer +'/images/a/a3/Fuchs.mid" autostart="true" type="audio/midi" loop="true" hidden="true" height="0" width="0">');
}

//[[Popupblocker]]
if (Seitenname == 'Popupblocker') {
    alert("Ihr Popupblocker ist aktiviert");
}

//================================================================================
// Ka-Mel-Oh! CSS IMMER nachladen, damit z.B. auch [[Arschkarte]] nicht doof aussieht 
// oder doch nicht, kostet nämlich auch ressourcen!
// importCSS("MediaWiki:Skin/Projekt:Ka-Mel-Oh!.css");

// Der doofe server stürzt dauernd ab, wenn das script da unten läuft ...
if (Seitenname == "Kinderporno" || Seitenname == "Server_Error") {
    //MW1.17+ ? window.onload...
    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;
    }
}

// ================================================================================
//
//MW1.18+ ??? -> jQuery-Klapp standardmässig aktiviert (class mw-collapsible)
//
// 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" )
		{
			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:
jQuery(document).ready(makeAusklapp);

// ================================================================================

// altes dragobject für die Seiten, wo benutzt, ansonsten raus (alles mit class='jstest' ist dragbar)
if (Seitenname == 'Projekt:Gummistiefel' || 
        Seitenname == 'Kamel_Diskussion:AnnaLog/Archiv' || 
        Seitenname == 'Windowspedia' || 
        Seitenname == 'Gut_versteckt' || 
        Seitenname == 'B-Wegung' || 
        Seitenname == 'Wortspiel' || 
        Seitenname == 'Kamel:Atreju/Spielplatz' || 
        Seitenname == 'Kamel:Pille' || 
        Seitenname == 'Bewegliche_Feiertage' ||
        Seitenname == 'Kamel:J*/Ka-Mel-Oh/Testgelände' ||
        Seitenname == 'Fallstudie' ||
        Seitenname == 'Projekt_Diskussion:Gummistiefel') {
   mw.loader.using( ['jquery.ui.draggable'], function(){
  jQuery(document).ready(function(){
    jQuery( ".jstest" ).draggable({ stack: ".jstest" });
  });
});
 
}

// ================================================================================
// username template

/**
 * Username replace function ([[Vorlage:USERNAME]]) 
 * Inserts user name into <span id="insertusername"></span>
 * By [[wikia:User:Splarka|Splarka]]
 */
jQuery(document).ready(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 (NamensraumNr == 0 || NamensraumNr == 106) {
  jQuery(document).ready(function(addFDPVersion){
   var aZit = document.createElement("a");
   aZit.title = "Seite zitieren";
   aZit.href = mw.config.get( 'wgServer' ) + "/index.php/" + "Hilfe:Zitierhilfe";
   aZit.appendChild(document.createTextNode("Seite zitieren"));

   var aPDF = document.createElement("a");
   aPDF.title = "FDP-Version";
   aPDF.href = mw.config.get( '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);
 })
};



/* Artikel-Review-Autovervollständigungs-script */
if (NamensraumNr == 1 && Aktion == '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;
     }
}
    
// externe links in neuem browser Fenster öffnen (nicht bei interwikis)
function externalWindow(){
    if ((typeof(disableLinkWindow) != 'undefined' && disableLinkWindow) || (!document.getElementById ('bodyContent'))) {
   return;
}
    var allinks = document.getElementById('bodyContent').getElementsByTagName('a');
    for(var i = 0; i < allinks.length; i++) {
        if(allinks[i].href.indexOf('' + wgServer +'/') == -1 && allinks[i].parentNode.className.indexOf('noblank') == -1){
            allinks[i].target = '_blank';
        }
    }
}
 
jQuery(document).ready(externalWindow);

//experimenteller HTML5-Player für die Datei-Seite //
jQuery(document).ready(function(){
   if ((mw.config.get( 'wgCanonicalNamespace' )=="File") && (Aktion == 'view') && (wgTitle.indexOf('.og') != -1) &&(!$.browser.msie)) {
     var isogg = true;
     var mtyp = wgTitle.substr((wgTitle.length)-3, 3);
     var $media = jQuery('#file.fullImageLink:first');
     var $mediaLink = $media.find('a');
     switch (mtyp) {
        case "ogg":
              var $mime = jQuery('<audio controls />').attr('src', $mediaLink.attr('href')).wrap('<div />');
              break;
        case "oga":
              var $mime = jQuery('<audio controls />').attr('src', $mediaLink.attr('href')).wrap('<div />');
              break;
        case "ogv":
              var $mime = jQuery('<video controls />').attr('src', $mediaLink.attr('href')).wrap('<div />');
              break;   
        default:
        isogg = false;
        break;
    } 
    if (isogg)  {
        var $info = jQuery('<div id="html5info" />').html('Der Player für diese Datei wird nur in oggfreundlichen<br />und HTML5fähigen Browsern angezeigt <a href="' + wgServer + '/index.php/Forum:Video-/_Audio-Player_(aktuelle_Infos_zu_OGG-Dateien)">(Info)</a>.<br />Alternativ die Datei halt herunterladen (Link direkt hier drunter)');
        $media.html($mime).append($info);
     }
   }
});

/* Funktionen zur Zeitsteuerung */
function dateFromServer () {
    return new Date(jQuery(jQuery(jQuery.ajax({
        url: "/api.php",
        data: {action:"parse", format:"xml", text:"{{#timel: m_d,_Y_H:i:s}}", prop:"text"},
        dataType: "xml",
        async: false,
        timeout: 300
    }).responseXML).find("api parse text").text()).text().replace(/[\s\n]/g, "").replace(/_/g," "));
}

function dateFromClient () {
    return new Date();
}

// Zeit vom wahlweise Server oder vom Client holen

var now = dateFromClient();

// oben: hohe Priorität, unten: niedrige Priorität
// Parameter: aktuelle Zeit als Date Objekt
// Rückgabewert: true zurückgeben, um weitere Aktionen zu unterbinden, sonst false
// Achtung: Monate werden ab 0 gezählt, Monatstage ab 1
var dateSpecificActions = [
	// cAPSLOCK dAY
	//function (d) {
	//	if ((d.getMonth() == 9 && d.getDate() == 22) ||
	//	    (d.getMonth() ==  5 && d.getDate() == 28) )
	//	{
	//		importJS("MediaWiki:Skin/dateSpecific/CAPSLOCK.js")
	//		return true;
	//	}
	//	return false;
	//}
];

for (var i=0; i<dateSpecificActions.length; i++)
{
    if (dateSpecificActions[i](now))
        break;
}

 /* Twütter Sönderzeichen-Füx vön Jüttstürnchen */
 //MW1.17 (raus, Twitter funzte eh nicht)
 if (Seitenname=="Spezial:Badtitle" && document.referrer != null && (document.referrer.indexOf("twitter.com") != -1 || document.referrer.indexOf("Forum:Twittern") != -1))
{
    location.href = unescape(location.href);
}

// Vorlage:DISPLAYTITLE
jQuery(document).ready(function () {
  var newTitle = jQuery("#title_replacement");
  if (newTitle.length && newTitle.length > 0)
  {
    jQuery("#firstHeading").text(newTitle.text());
  }
});

 
/* Warnung für Seite Kamelopedia:Das größte Schweinekamel */
if (Seitenname == "Kamelopedia:Das_größte_Schweinekamel" && (Aktion == "edit" || Aktion =="submit")) {
jQuery(document).ready(function(addSchwein){
   var tSchwein = document.createTextNode("Achtung, diese Seite ist purer Quatsch! Niemand hält dich für ein Schweinekamel. Per JavaScript bekommt jedes angemeldete Kamel seinen eigenen Namen auf dieser Seite angezeigt. Also nicht aufregen ;)");
   
   var DivSchwein = document.createElement("div");
   DivSchwein.style.fontSize = "130%";
   DivSchwein.style.fontWeight = "bold";
   DivSchwein.style.backgroundColor = "#FFD800";
   DivSchwein.style.padding = "15px";
   DivSchwein.appendChild(tSchwein);
 
   var warn = document.getElementById("firstHeading");
   warn.appendChild(DivSchwein);
 });
}

/* Skripte für autoconfirmed */
/* wegen Latenzen direkt hier rein, statt nachzuladen */
if ( jQuery.inArray( "autoconfirmed", wgUserGroups )  != -1 ) { 

/* MediaWiki:Seitenempfehlung.js */
/*
 * Version 2011-05-15.1 sollte halbwegs fehlerfrei funktionieren
 */

var hwList; // HatWas-Liste
var entry;
var subpath = '/Empfehlung';  // Name bzw. Pfad der Kamelbau-Unterseiten

// Es gibt KEINE Regeln bzgl. der persönlichen Empfehlungen, ein automatischer Daumen taucht jedoch nur auf
// Seiten auf, wo es auch potentiell lesenswertes Zeug geben tut
//
// HINWEIS an ---> DUFO <----
// FINGER WEG VON DEN NAMENSRÄUMEN, wehe, du nimmst da was raus
//
var hwNS = (typeof(hwNS) != 'undefined') ? hwNS : new Array ("", "Talk", "File", "Kamelionary", "Kamelobooks", "News", "Projekt", "Frage"); // hierhin die Namensräume, wo der Daumen auftauchen soll (Achtung! canonical namespaces!);
 
// Empfehlungsliste auslesen
function readHwList(username, action) {
  jQuery.ajax({
    url:     mw.config.get( 'wgScript' ), 
    data:    { title: "Kamel:" + username + subpath, action: "raw" },
    cache:   false,
    // Noch keine Empfehlungs-Seite angelegt
    error:   function()     { 
        hwList = new Array(); 
        switch (action) {
          case "add":
            adHW();
            break;
          case "remove":
            removeHW();
            break;
        }
    },
    // Empfehlungs-Seite auslesen
    success: function(data) { 
        hwList = data.match(/\[\[.*\]\]/g);
        switch (action) {
          case "add":
            adHW();
            break;
          case "remove":
            removeHW();
            break;
        }
    }
  });
}

// Seite zur Empfehlungsliste hinzufügen
function adHW() {
  // edit-Token holen
  jQuery.ajax({
    url:     '/api.php', 
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + Kamelname + subpath, format: "xml" },
    cache:   false,
    success: function(data) { 
      var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
      hwList.push(entry);          // Aktuelle Seite dazu
      hwList = sortHW(hwList); // Sortieren
      // Empfehlungsliste bearbeiten
      jQuery.ajax({
        url:     '/api.php',
        type:    'POST',
        cache:   false,
        data:    { action: "edit", title: "Kamel:" + Kamelname + subpath, text: "* " + hwList.join("\n* "), summary: "+ " + entry, token: edittoken },
        success: function(data) {
          var text = '<p>Die Seite „' + Seitenname.replace(/_/g, ' ') + '“ wurde zu deinen <a href="'
            + mw.config.get( 'wgScript' ) + '/Kamel:' + Kamelname + subpath + '">Empfehlungen</a> hinzugefügt.</p>';
          jQuery('#mw-js-message').html(text);
          jQuery('#mw-js-message').slideDown('fast');
        }
      })
    }
  });
}

function removeHW() {
  // edit-Token holen
  jQuery.ajax({
    url:     '/api.php', 
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + Kamelname + subpath, format: "xml" },
    cache:   false,
    success: function(data) { 
      var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
      var i = jQuery.inArray(entry, hwList);
      delete hwList[i];            // Aktuelle Seite wech
      hwList = sortHW(hwList); // Sortieren
      // Empfehlungsliste bearbeiten
      jQuery.ajax({
        url:     '/api.php',
        type:    'POST',
        cache:   false,
        data:    { action: "edit", title: "Kamel:" + Kamelname + subpath, text: "* " + hwList.join("\n* "), summary: "- " + entry, token: edittoken },
        success: function(data) {
          var text = '<p>Die Seite „' + Seitenname.replace(/_/g, ' ') + '“ wurde von deinen <a href="'
            + mw.config.get( 'wgScript' ) + '/Kamel:' + Kamelname + subpath + '">Empfehlungen</a> entfernt.</p>';
          jQuery('#mw-js-message').html(text);
          jQuery('#mw-js-message').slideDown('fast');
        }
      })
    }
  });
}

function showHW(username) {
  /* soll später html-Code für Empfehlungslisten ausspucken */
}

// doppelte & leere Einträge entfernen + alphabetisch sortieren
function sortHW(list) {
  var sorted = new Array();
  for(var i=0; i<list.length; i++){
    for(var j=i+1; j<list.length; j++){
      if (list[i] == list[j]) j = ++i;
    }
    if (typeof(list[i]) != 'undefined') sorted.push(list[i]);        
  }
  return sorted.sort();
}

// Das ganze starten
jQuery(document).ready(function() {
  //if(typeof(disableGaGA) != 'undefined' && disableGaGA) return;
  if(jQuery.inArray(mw.config.get( 'wgCanonicalNamespace' ), hwNS) != -1 && Aktion == "view") {
    entry = (mw.config.get( 'wgCanonicalNamespace' ) == "File") ? "[[:" + Seitenname.replace(/_/g, ' ') + "]]" 
                                             : "[[" + Seitenname.replace(/_/g, ' ') + "]]";
    jQuery('#p-views ul').append('<li class="icon"><span><a href="#"></a></span></li>');
    jQuery('#p-views li:last').ajaxComplete(function() {
      if(jQuery.inArray(entry, hwList) != -1) {
        jQuery(this).attr('id', 'ca-unhw');
        jQuery('#ca-unhw a').html('Entfehlen');
        jQuery('#ca-unhw a').attr('title', 'Seite nicht mehr empfehlen');
        jQuery('#ca-unhw a').unbind('click');
        jQuery('#ca-unhw a').bind('click', function() { readHwList(Kamelname, 'remove') });
      } else {
        jQuery(this).attr('id', 'ca-hw');
        jQuery('#ca-hw a').html('Empfehlen');
        jQuery('#ca-hw a').attr('title', 'Seite empfehlen');
        jQuery('#ca-hw a').unbind('click');
        jQuery('#ca-hw a').bind('click', function() { readHwList(Kamelname, 'add') });
      }
    });
    readHwList(Kamelname, false);
  }
})

/* MediaWiki:Group-autoconfirmed.js */

 /* Hinweis-text auf Empfehlungsseiten der Kamele */
 
if (NamensraumNr == 2 &&  Seitenname.indexOf ("/Empfehlung") != -1) {
    jQuery(document).ready(function(){ 
      var hinweis = 'Einträge auf dieser Liste werden normalerweise über den Empfehlungsdaumen hinzugefügt bzw. entfernt. <br />';
      hinweis += '<b>Wenn du diese Liste per Huf bearbeitest, beachte bitte folgendes:</b> <br />';
      hinweis += 'Außer einer reinen Liste von Seitenlinks darf auf dieser Seite kein weiterer Zauber (Design, sonstige Texte etc.) stehen, damit die Listen aller Kamele einfacher ausgewertet werden können.<br />';
      hinweis += 'Einträge sind ausschließlich im Format <br /><span style="font-family:monospace; font-weight:bold;">* [[Seite]]</span> <br /> vorzunehmen (bei Dateien zusätzlich einen Doppelpunkt vor Datei, also <span style="font-family:monospace; font-weight:bold;">* [[:Datei:Bild.jpg]]</span><br /><br />';
      hinweis += '<b>Siehe auch: <a href="/index.php?title=Kamelopedia:Empfehlungssystem" title="Kamelopedia:Empfehlungssystem">Kamelopedia-Empfehlungssystem</a>';
      // DIV basteln
      var DivHinweis = document.createElement("div");
      DivHinweis.style.backgroundColor = "#D1ECFF";
      DivHinweis.style.fontSize = "13px";
      DivHinweis.style.padding = "15px";
      DivHinweis.style.marginTop = "30px";
      DivHinweis.innerHTML = hinweis;
      // an ID firstHeading dranflanschen
      if (Aktion == "edit" || Aktion =="submit") {
        jQuery('#editform').before(DivHinweis);
        } else {
          jQuery('#catlinks').before(DivHinweis);
        }
    })   
 }

 /* Link zur eigenen Liste oben zm persönlichen Kram packen */
 
  mw.util.addPortletLink('p-personal', 'http://kamelopedia.net/index.php/Spezial:Mypage/Empfehlung', 'Empfehlungen', 'pt-empfehlung', 'meine Empfehlungen', '', '#pt-watchlist')

}; // end autoconfirmed