MediaWiki:Common.js: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
 
Zeile 1: Zeile 1:
function kommentarLink () {
+
 
var as = document.getElementsByTagName('A');
+
/****************************************
  for (var i= 0; i<as.length; ++i)  
+
Handler für Glossar-Verzeichnisse (2025-3)
  if (as[i].href.indexOf("Kommentar_Abschnitt")!=-1)
+
*****************************************/
  as[i].title= "Kommentar zu dieser Seite verfassen";
+
// HTML-Voraussetzungen: mindestens 1 Eltern-Feld mit attribut class='filter' data-feld='thema' (oder ähnliches)
 +
// mehrere Auswahlfelder mit Attribut class='radio' data-thema='...' etc.
 +
// mindestens ein Anzeigefeld mit Attribut id='filter-thema' etc. + ein counter (id='count-results')
 +
//Variable
 +
var myHref, myPage, myCount
 +
  , felder= {}
 +
  , myGroup= $('#js-group-items .checked').data('group');
 +
//URL auslesen
 +
if($('.radio').length) {  
 +
myHref = window.location.href.split('?');
 +
myPage = myHref[0];  
 +
if(myHref[1]) {
 +
        var pairs = myHref[1].split("#")[0];
 +
        pairs = decodeURI(pairs).split("&");
 +
        for (var i in pairs) {
 +
    var split= pairs[i].split('=');
 +
        felder[split[0]]=split[1].replace(/_/g,' ');
 +
        myGroup=split[0];
 +
        }
 +
}
 +
}
 +
$(document).ready(function () {
 +
//Voreinstellung Kuenstler und Quellen
 +
$('.radio[data-order="werkzahl"]').trigger('click');
 +
//Daten aus URL anwenden
 +
var myKey;
 +
for (var key in felder)
 +
myKey=key;
 +
if (myKey) {
 +
toggleItems();
 +
checkTime();
 +
selectResults(myKey,felder[myKey]);
 +
 +
//Bilder schärfer machen
 +
insertThumbs();
 +
});
 +
//Radio-Button     
 +
$('[data-feld] .radio').click(function() { 
 +
//console.log(felder);
 +
// Werte ermitteln
 +
var feld= $(this).parents('[data-feld]').data('feld');
 +
var wert= $(this).data(feld);
 +
checkTime($(this));
 +
//selectResults(feld,wert);
 +
$('#showResults').fadeOut('slow', function(){
 +
$.when( selectResults(feld,wert) ).done(function() {
 +
$('#showResults').fadeIn('slow');
 +
});
 +
});
 +
});
 +
// Hauptfunktion
 +
function selectResults(dataKey,dataValue) {
 +
var filterResults = '';
 +
var urlQ = '';
 +
// felder-Objekt füttern
 +
felder[dataKey]=dataValue;
 +
//console.log(felder);
 +
//mit Objekt arbeiten
 +
for (var key in felder) {
 +
//radio-Buttons markieren
 +
$('[data-feld] .radio[data-'+key+']').removeClass('checked');
 +
$('[data-feld] .radio[data-'+key+'="'+felder[key]+'"]').addClass('checked');
 +
 +
//Filter basteln
 +
if(felder[key]!=='alle')
 +
filterResults+='[data-'+key+'*="'+felder[key]+'"]';
 +
else
 +
filterResults+='[data-'+key+']';
 +
//console.log(filterResults);
 +
//Filter anzeigen
 +
var prettyKey= felder[key].replace(/(.*);\s*(.*)/,'$2 $1');
 +
$('#filter-'+key).text( prettyKey );
 +
urlQ+=key+'='+felder[key]+'&';
 +
}
 +
//Filter anwenden
 +
$('.resultsIntro').hide(); // nur Metalog:Glossar
 +
$('.js-Glossar'+filterResults).siblings('.resultsIntro').show();
 +
$('.js-Glossar').hide();
 +
$('.js-Glossar'+filterResults).show();
 +
//Resultat anzeigen
 +
myCount= $('.js-Glossar'+filterResults).length.toString().replace(/(\d)(\d\d\d)/, '$1.$2');
 +
$('#count-results').text( myCount ); 
 +
$('[data-time2="alle"].checked').attr('data-werkzahl', myCount);
 +
//no result
 +
$('#noResult').remove();
 +
if(myCount==0)
 +
$('#showResults').append('<div id="noResult">Kein Ergebnis!</div>');
 +
// URL 
 +
urlQ=urlQ.replace(/\&$/,'');
 +
history.pushState({}, '', myPage+'?'+urlQ);
 +
//console.log(myPage+'?'+urlQ);
 +
 +
// Menu links, Filterfunktion zurücksetzten
 +
$('.radio[data-group]').click(function() { 
 +
felder={}; // suche leeren
 +
var splitGroup= $(this).data('group').split('&');
 +
    for (var i in splitGroup) {
 +
    myGroup=splitGroup[i];
 +
    felder[myGroup]='alle';  // Voreinstellung
 +
    }
 +
$('.radio[data-'+myGroup+'="alle"]').trigger('click');
 +
toggleItems();
 +
 +
});
 +
// Auswahlelemente ordnen (kuenster, quellen)
 +
function toggleItems() {
 +
$('.radio[data-order="werkzahl"]').trigger('click'); // Voreinstellung
 +
$('.radio[data-group]').removeClass('checked');
 +
$('.radio[data-group*="'+myGroup+'"]').addClass('checked');
 +
$('[class*="show-"]').hide();
 +
$('[class*="show-'+myGroup+'"]').show(); 
 
}
 
}
addOnloadHook(kommentarLink);
+
// kuenstler und quellen in Filterfeld umordnen 
 
+
$('.radio[data-order]').click(function() { 
////Buttons f. Bearbeitungsfenster ganz unten!
+
var sortData=$(this).data('order');
 
+
$('.radio[data-order]').removeClass('checked');
function anmToc(){
+
$('.radio[data-order="'+sortData+'"]').addClass('checked');
if (wgPageName&&wgPageName.indexOf('Metalog:Glossar')!=-1) {
+
$('[data-feld="'+myGroup+'"] .reorder').sort(function(a, b) {
var anm = document.createElement('DIV');
+
//Sort-Funktion
anm.innerHTML="Anmerkung: „ō“ und „ū“ sind alphabetisch wie „ou“ und „uu“ eingeordnet";
+
var a1 = sortData===myGroup ? b : a;
anm.className="anmToc";
+
var b1 = sortData===myGroup ? a : b;
document.getElementById('toc').appendChild(anm);
+
return $(a1).data(sortData) < $(b1).data(sortData) ? 1 :
 +
$(a1).data(sortData) > $(b1).data(sortData) ? -1 : 0;
 +
}).appendTo('[data-feld="'+myGroup+'"]');
 +
});
 +
// kuenstler nach epochen filtern 
 +
function checkTime(radio) {
 +
var timeVal= felder['time'] ? felder['time'] : 'alle';
 +
if($(radio).data('time')) {  
 +
// wenn der Befehl aus dem Menu links kommt
 +
timeVal= $(radio).data('time');
 +
felder['artist']='alle';
 +
$('[data-time2]').removeClass('checked');
 +
$('[data-time2="alle"]').addClass('checked');
 +
}
 +
if (timeVal==='alle') {
 +
$('.reorder[data-time2]').show();
 +
$('.show-artist .countItems').text($('.reorder[data-time2]').length); 
 +
}
 +
else {
 +
$('.reorder[data-time2]').hide();
 +
$('.reorder[data-time2="'+timeVal+'"]').show();  
 +
$('.show-artist .countItems').text($('.reorder[data-time2="'+timeVal+'"]').length);
 +
}
 
}
 
}
 +
// thumb images adaptieren
 +
function insertThumbs() {
 +
$('.imgs-G-neu img').each(function() {
 +
//dummy image nach dem Laden der Seite ersetzen
 +
    var newSrc = $(this).parents('[data-src]').data('src');
 +
    $(this).attr('src', newSrc); 
 +
    $(this).attr('srcset', ''); 
 +
}); 
 
}
 
}
addOnloadHook(anmToc);
+
/*************************************
/******************************/
 
var sysopRights = false;
 
for (i in wgUserGroups)
 
  if (wgUserGroups[i]== "sysop")
 
    sysopRights = true;
 
//Nach dem Einloggen wieder zur Ausgangsseite:
 
  
if (wgCanonicalSpecialPageName == "Userlogin")
+
Kleinere Funktionen
addOnloadHook( function() { document.location = document.getElementById('mw-returnto').getElementsByTagName('a')[0].href; } );
 
  
// Welche Scripts für welche Seiten...
+
**********************************/
  
var jsOK = false;
+
// Handler für sticky toc
var useNewJs = [
+
if ($('body:not(.ns--1) #toc').length)  {
  newJS_Spaces = [wgNamespaceNumber,4,100,102,104,106,108,110,112,],
+
$('#content').prepend('<div id="tocTest" style="height:.25rem; position:absolute;"></div>');
  newJS_Pages = [wgPageName,'Hauptseite']
+
var testAbstand= $('#tocTest').height();
];
+
$( "#tocTest" ).remove();
 
+
var toc= $('#toc')
function setJsOK(array) {
+
, scroll_pos_test =  toc.offset().top - testAbstand;
  for (var i in array)
+
$(window).on('scroll', function() {  
    for (var n=1; n<array[i].length; n++)
+
if( window.pageYOffset >= scroll_pos_test )  
      if (array[i][n] == array[i][0]) jsOK = true;
+
$('#toc').addClass('stickyToc');
 +
else
 +
$('#toc').removeClass('stickyToc');
 +
});
 
}
 
}
  
setJsOK(useNewJs);  
+
// Handler für toparrow
if (!wgIsArticle || wgAction != "view") jsOK = false;
+
$(window).on('scroll', function() {
 +
if(window.pageYOffset < $( window ).height()/2)
 +
$('#toparrow').hide();
 +
else
 +
$('#toparrow').show();
 +
});  
  
window.onload= function() {
+
// Handler für search
  sizeY();
+
if( $('#search-container').length){
  if (jsOK) {
+
$('#searchform').attr('id', 'searchform2').appendTo('#search-container');
    nv = document.getElementById('chapters');
+
//$('#searchform').hide();  
    nvY = findPos(nv);
+
}  
    fixNv();
+
/* Phaidra-Hack
    styleNv();
+
mw.loader.using('mediawiki.user', function() {
 
+
    var username = mw.user.getName();
    getThumbs();
+
     if (username === 'Crawler') {
    setGlossar();
+
        $('#search-container').hide();
    setShowtalk();
+
    } else {
  }
+
        $('#search-container').show();
};
+
        $('.ns--1 #search-container, .ns-6 #search-container').hide();
+
    }
function sizeY() {
+
}); */
//Maße und Elemente 
 
  var body_width = document.body.offsetWidth,
 
     body_height = document.body.offsetHeight,
 
    screen_height = window.innerHeight ||
 
      document.documentElement.offsetHeight;
 
    var spacer = document.getElementById("content").appendChild( document.createElement("DIV") );
 
  // Höhe anpassen
 
  spacer = document.getElementById("thisway") || spacer;
 
    spacer.style.paddingTop = (body_height+10) < screen_height ?
 
      screen_height-(body_height+10) +"px" : 0;
 
}
 
  
if (jsOK)
 
{ //eigentliches Script ab hier. Achtung auf "}" !
 
  
function showTocToggle() { return; } //Funktion überschreiben...
+
// Handler für Glossar (2023)
 +
  //toggle Info $('
 +
if ($(location).attr('search').length > 0)
 +
  $('#infoText').hide();
 +
else
 +
  $('#infoText').show();
 +
$('#infoButton').click(function() {  
 +
$('#infoText').toggle('slow');
 +
});
 +
  //Hide query options
 +
function toggleChecked() {
 +
var firstChecked= $('#firstChoice input:checked').val().toLowerCase().match(/\w\w\w/);
 +
$('[id^="second"]').hide('slow');
 +
$('#second-'+firstChecked).show('slow');
 +
}
 +
$.when( $.ready ).then(toggleChecked);
 +
$('#firstChoice input').on('change', function() {
 +
toggleChecked();
 +
$('[id^="second"] [type="checkbox"]').prop('checked', false);
 +
$('.showResults').hide('fast');
 +
});
  
function toggleMsg() {
+
/*************************************
jsMessage=document.getElementById('mw-js-message')||false;
+
  SITEMAP
//alert(jsMessage);
+
**************************************/
if (jsMessage) jsMessage.style.display='none';
 
}
 
window.onclick = toggleMsg;
 
  
///////// var für Maße und Elemente///////////////  
+
//Handler für Klick auf (+) in Sitemap
 +
$(document).on('click', '.sitemap .plusMinus', openOrCloseDetails);
 +
function openOrCloseDetails(e) {
 +
e.preventDefault();
 +
if ($(this).hasClass("close")) {
 +
$(this).closest('div').find('ul').hide('slow');
 +
} else {
 +
$(this).closest('div').find('ul').show('slow');
 +
}
 +
$(this).toggleClass('close');
 +
}  
 +
$(document).on('click', '#plusMinusAll',openOrCloseAll);
 +
function openOrCloseAll(e) {
 +
e.preventDefault();
 +
if ($(this).hasClass("close")) {
 +
$('.sitemap ul').hide('slow');
 +
$('.sitemap .plusMinus').removeClass('close');
 +
} else {
 +
$('.sitemap ul').show('slow');
 +
$('.sitemap .plusMinus').addClass('close');
 +
}
 +
$(this).toggleClass('close');
 +
}
  
var body_width, body_height, screen_height;
+
//falsche externe links
 +
$('.sitemap a').removeClass('external');
  
/***********************************
+
//Sitemap öffnen und schließen
      Stylesheet changes
+
$('#contSitemap').hide();
***********************************/
+
$(document).on('click', '#sitemapToggle', openOrCloseSitemap);
 +
//von sitemaplink aus öffnen
 +
$(document).on('click', '#sitemaplink', function(e) {
 +
e.preventDefault();
 +
$('#sitemapToggle').trigger('click');
 +
});
 +
function openOrCloseSitemap(e) {
 +
e.preventDefault();
 +
var scroll= $('#toggleButton').offset();
 +
$('#contSitemap').css({
 +
top: 'calc('+ scroll.top+'px + 3.5rem)'
 +
});
 +
if ($(this).hasClass("close")) {
 +
$('#bgToggle').animate({
 +
height: "2em",
 +
opacity: ".2"
 +
}, function() {
 +
$('#bgToggle').removeAttr("style");
 +
});
 +
$('#contSitemap').slideUp('fast');
 +
$('#bottom-notice-ns').css({'z-index':'2'});
 +
} else {
 +
$('#bgToggle').css({
 +
backgroundColor: '#ccccc6'
 +
})
 +
.animate({
 +
height: "100%",
 +
opacity: ".85"
 +
});
 +
$('#contSitemap').slideDown('fast');
 +
$('#bottom-notice-ns').css({'z-index':'4'});
 +
}
 +
$(this).toggleClass('close');
 +
 +
// Nav-Menü mit Link zur gegenw. Seite öffnen
 +
$(document).ready(function () {
 +
var sitemapParent= $('.sitemap .selflink').closest('[id^=p-]');
 +
if(mw.config.get('wgPageName')!=="Hauptseite")
 +
$(sitemapParent).find('.plusMinus').trigger('click');
 +
});
 +
 +
/*********************  
 +
GLOSSAR 
 +
*********************/  
  
document.write (
+
// inline glossar-Info anzeigen und verbergen
    '<style>' +
+
$('.glossar').each(function() {
    ' #column-content {}' + //0
+
var child = $(this).find('.g_box');
    ' #column-one {}' + //1
+
$(this).click(function(){  
    ' #toc{}' +  //2
+
$( child).slideToggle('slow');
    ' #column-content #content #bodyContent{}' + //3
+
});
    ' #sidebar {}' + //4
+
$(this).mouseleave(function() {  
    ' #p-personal{}' + //5
+
$(child).slideUp('slow');
    ' #p-cactions {}' + //6
+
});
    ' #dropdown {}' + //7
+
});
    ' .glossar2:hover .g_body{}' + //8
+
/*************************************
    ' .sysop {}' + //9
+
  POPUP
    ' </style>'
+
**************************************/
    ); 
+
// Popup-globale Variable
var newCSS = document.styleSheets[document.styleSheets.length-1],
+
var popupInUse = 0
  newRules = newCSS.cssRules || newCSS.rules; // für alle Browser ansprechbar
+
, currentPopup=0
 +
, ppLength = $('.showPopup').length
 +
, ppScroll;
  
/***********************************
+
// index-Schleife ermöglichen
    Anpassen an Browserfenster, u.a.
+
function trimIndex(t) {
************************************/
+
var i = t;
 +
i = (i < ppLength) ? (i < 0) ? ppLength + i : i : ppLength - i;
 +
return i;
 +
}
  
function sizeX() {
+
//Popup div erstellen
 +
if(ppLength) {
 +
$('body').append(
 +
'<div id="popupDiv">'+
 +
'<div id="ppX" title="Popup schließen">⨯</div>'+
 +
'</div>'
 +
);
 +
$('#popupDiv').hide();
 +
}
 +
//Popup gestalten
 +
if(ppLength) {
 +
$('.showPopup').each(function(){
 +
var ppIndex= $('.showPopup').index(this)
 +
, iSrc=$(this).find('img').attr('src')
 +
, ppSrc= iSrc.replace(/\/thumb/, "").replace(/\/\d+px.+/, "")
 +
, text= $(this).find('.fulltext').html();
 +
 +
$('#popupDiv').append(
 +
'<div class="ppSingle">'+
 +
'<div class="ppGrid">'+
 +
'<span class="ppBack ppGo" title="Voriges Bild anzeigen"></span>'+
 +
'<a class="ppImg" href="'+ppSrc+'"><img id="ppImg'+ppIndex+'" src="'+ppSrc+'" /></a>'+
 +
'<span class="ppNext ppGo"  title="Nächstes Bild anzeigen"></span>'+
 +
'</div>'+
 +
'<div class="ppText">'+
 +
'<a class="ppBacklink" title="Bildseite" href="'+ $(this).find('a.image').attr('href') + '">Details</a>'+
 +
'<span class="ppInfo"><small>Abb. '+(ppIndex + 1)+': </small>'+text+'</span>'+
 +
'</div>'+
 +
'</div>'
 +
); 
 +
});
 +
}
 +
// Popup öffnen
 +
function openPopup(e) {
 +
e.preventDefault();
 +
ppScroll= $(window).scrollTop();
 +
// back und next verbergen oder zeigen
 +
    if (ppLength < 2)
 +
    $('.ppGo').hide();
 +
    else
 +
    $('.ppGo').show();
 +
// Index ermitteln
 +
var i = $('.showPopup .image').index( this );
 +
// Bild auswählen
 +
selectPopup(i);
 +
// anzeigen
 +
    $('body').addClass('ppOpen');
 +
    $('#popupDiv').show('fast');
 +
   
 +
    popupInUse = 1;
 +
}
 +
// Einzelnes Bild auswählen
 +
function selectPopup(pp) {  
 +
    $('.ppSingle').hide();
 +
    $('.ppSingle').eq(pp).show();
 +
    currentPopup = pp;
 +
}
 +
// nächstes Popup öffnen
 +
function nextPopup() {
 +
var i= trimIndex(currentPopup + 1);
 +
selectPopup(i);
 +
}
 +
// voriges Popup öffnen
 +
function backPopup() {
 +
var i= trimIndex(currentPopup - 1);
 +
selectPopup(i);
 +
}
 +
//Popup schließen
 +
function closePopup() {
 +
    $('body').removeClass('ppOpen');
 +
    $(window).scrollTop(ppScroll);
 +
$('#popupDiv').hide('fast');
 +
    popupInUse=0;
 +
}
 +
// Funktionen auslösen
 +
$(document).on('click', '.showPopup .image', openPopup);
 +
$(document).on('click', '#ppX', closePopup);
 +
$(document).on('click', '.ppBack', backPopup);
 +
$(document).on('click', '.ppNext', nextPopup);
  
  var normW = 1024,
+
$(document).keyup(function(e)
    thisW = window.innerWidth ||  document.documentElement.offsetWidth || 0,
+
if (popupInUse) {   
    rand_abstand = (thisW > normW)? Math.round((thisW - normW)/20*3) : 0;
+
if ([27,8].includes(e.keyCode))
  if (newRules) {  
+
closePopup();
      //--------- neue Abstaende ---------------
+
if ([37,100].includes(e.keyCode))
    newRules[0].style.marginRight = // #column-content
+
backPopup();
    newRules[0].style.marginLeft =
+
if ([39,102].includes(e.keyCode))
    //newRules[1].style.left =  // #column-one
+
nextPopup();
    //newRules[2].style.marginRight =  //#toc
+
}
    newRules[4].style.marginLeft =  // #sidebar
+
});
    //newRules[5].style.marginLeft =  //#p-personal
+
   
    //newRules[6].style.marginLeft =  //#p-cactions
+
/****************
    newRules[7].style.marginLeft =  //#dropdown
+
  Sonstiges
      rand_abstand+'px';
+
*****************/
    newRules[3].style.marginRight = //#bodyContent
+
//Handler für Klick auf (+) in Karten
    newRules[3].style.marginLeft =
 
      rand_abstand/2+'px';
 
  
      //---------- Glossar, falls JS ----------------
+
    $('.listPlaces .plusMinus').next().hide();
     newRules[8].style.display = 'none';  //.glossar2:hover .g_body
+
    $(document).on('click', '.listPlaces .plusMinus', openOrClosePlaces);
 
+
    function openOrClosePlaces(e) {
      //---------- falls Sysop ----------------
+
        e.preventDefault();
  if (wgUserGroups && wgUserGroups.length>0)  
+
        if ($(this).hasClass("close")) {
    for (var i in wgUserGroups)
+
            $(this).next().hide('slow');
      if (wgUserGroups[i] == 'sysop')
+
        } else {
        newRules[9].style.display='block';
+
            $(this).next().show('slow');
   }
+
        }
 +
        $(this).toggleClass('close');
 +
    } 
 +
    $(document).on('click', '.plusMinus.artists', openOrCloseArtists);
 +
    function openOrCloseArtists(e) {
 +
        e.preventDefault();
 +
        if ($(this).hasClass("close")) {
 +
            $(this).next().hide('slow');
 +
        } else {
 +
            $(this).next().show('slow');
 +
        }
 +
        $(this).toggleClass('close');
 +
    } 
 +
    $(document).on('click', '#plusMinusArtists',openOrCloseAllArtists);
 +
    function openOrCloseAllArtists(e) {
 +
        e.preventDefault();
 +
        if ($(this).hasClass("close")) {
 +
            $('.plusMinus.artists').next().hide('slow');
 +
            $('.plusMinus.artists').removeClass('close');
 +
        } else {
 +
            $('.plusMinus.artists').next().show('slow');
 +
            $('.plusMinus.artists').addClass('close');
 +
        }
 +
        $(this).toggleClass('close');
 +
    }
 +
    $(document).on('click', '#plusMinusArtistsOpen',function(e){
 +
        e.preventDefault();
 +
    $('.plusMinus.artists').next().show('slow');
 +
    $('.plusMinus.artists').addClass('close');
 +
    });
 +
    $(document).on('click', '#plusMinusArtistsClose',function(e){
 +
        e.preventDefault();
 +
    $('.plusMinus.artists').next().hide('slow');
 +
    $('.plusMinus.artists').removeClass('close');
 +
    });
 +
     $(document).on('click', '#plusMinusArtistsContainer',function(e){
 +
        e.preventDefault();
 +
    $('#plusMinusArtistsClose, #plusMinusArtistsOpen').toggleClass('displayNone');
 +
    });
 +
 +
  //Handler für Prüfungsfragen
 +
if(mw.config.get('wgPageName')=="Lektoren:Prüfungsfragen") {
 +
var questions=$('.q li').clone();
 +
$(document).on('click', '#q_select, #q_select1', function() {
 +
questions.sort(function(a, b){return 0.5 - Math.random()});
 +
if ($(this).next('ol').children('li').length < 3) {
 +
$(this).next('ol').append
 +
($(questions[0]).hide().slideDown('slow'));
 +
questions.splice(0,1); //verhindern, dass Frage noch einmal kommt
 +
}
 +
});
 +
$(document).on('click', '.far', function() {
 +
var myClass= $(this).attr('class');
 +
$(this).closest('li').find('i').removeClass('stay');
 +
$(this).removeClass().addClass(myClass).toggleClass('stay');
 +
}); 
 +
$(document).on('click', '.fa-minus', function() {
 +
$(this).closest('li').toggleClass('strike');
 +
});
 +
$(document).on('click', '.fa-times', function() {
 +
$(this).closest('li').remove();
 +
});
 +
$(document).on('click', '#q_all', function() {
 +
$('.q li').toggle('slow');
 +
});
 +
}
 +
/************************/
 +
// Kopieren aus der Bearbeitungsmaske
 +
$('.copyLink').click(function(e) {
 +
event.preventDefault(e);
 +
var $temp = $("<input>");
 +
$("body").append($temp);
 +
$temp.val($(this).find('a').html()).select();
 +
document.execCommand("copy");
 +
$temp.remove();
 +
  });
 +
$('.copyme').click(copyToClipboard);
 +
   function copyToClipboard(element) {
 +
var $temp = $("<input>");
 +
$("body").append($temp);
 +
$temp.val($(this).html()).select();
 +
document.execCommand("copy");
 +
$temp.remove();
 
}  
 
}  
sizeX();
 
window.onresize = function() {sizeX();};
 
  
//die wichtigsten Funktionen:
+
/************************/
 +
//SMW Suchseiten
 +
var user= mw.config.get( 'wgUserGroups' );
 +
for (var i in user)
 +
if (user[i] === 'sysop')
 +
var sysopRights = true; 
 +
$( '.smw-ask-downloadlinks, .smw-tabs label.nav-label' ).hide();
 +
$( '#mw-indicator-mw-helplink' ).click(function(e){
 +
if(sysopRights) {
 +
event.preventDefault(e);
 +
$('.smw-ask-downloadlinks, .smw-tabs label.nav-label').toggle('slow');
 +
}
 +
});
  
/*** NAVIGATION ***/
+
/*********************
importScript('mediawiki:navigation.js');
+
PRELOADS
 +
*********************/  
  
/*** POPUPS ***/
+
if ( $( '#wpTextbox1 ').is(' :empty ') ) {
importScript('mediawiki:popup.js');
+
 +
/////////// preload glossar ////////////
 +
if ( mw.config.get( 'wgCanonicalNamespace') === 'Glossar' ) {
 +
$( '#wpTextbox1 ').html(
 +
  "{{glossar " + 
 +
  "\n| code = "+ mw.config.get( 'wgTitle' ) + 
 +
  "\n| romaji = " + mw.config.get( 'wgTitle' ) +
 +
  "\n| kanji = " +
 +
  "\n| text = " +
 +
  "\n| sprache =  " +
 +
  "\n| link =  " +
 +
  "\n| thema= " +
 +
  "\n| map= " +
 +
  "\n| zoom=  " +
 +
  "\n| type=  " +
 +
  "\n| icon=  " +
 +
  "\n}} ");
 +
}
 +
/////////// preload sanskrit ////////////
 +
if ( mw.config.get( 'wgCanonicalNamespace') === 'Skt'  ) {
 +
$( '#wpTextbox1 ').html(
 +
  "{{Sanskrit" +
 +
  "\n| code = "+ mw.config.get( 'wgTitle' ) +
 +
  "\n| sprache = skt." +
 +
  "\n| skt_oD =  "+ mw.config.get( 'wgTitle' ) +
 +
  "\n| skt_mD =  " +
 +
  "\n| devanagari = " +
 +
  "\n| geschlecht = " +
 +
  "\n| klasse = term " +
 +
  "\n| romaji= " +
 +
  "\n| kanji= " +
 +
  "\n| romaji2= " +
 +
  "\n| kanji2= " +
 +
  "\n| ue=  "+
 +
  "\n| anm= " +
 +
  "\n| link= " +
 +
  "\n| thema= " +
 +
  "\n| map= " +
 +
  "\n| zoom=  " +
 +
  "\n| type=  " +
 +
  "\n| icon=  " +
 +
  "\n}} ");  
 +
}
  
/*** GLOSSAR ***/
+
/////////// preload bild ////////////
importScript('mediawiki:glossar.js');
+
if ( mw.config.get( 'wgNamespaceNumber') === 6  ) {
 +
var d = new Date();
 +
var datum = d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate();
 +
$( '#wpTextbox1 ').html(
 +
"{{bild " +
 +
"\n| titel =  " +
 +
"\n| detail = 0 " +
 +
"\n| genre =  "+
 +
"\n| genre2 =  " +
 +
"\n| material = " +
 +
"\n| maße =  " +
 +
"\n| artist= " +
 +
"\n| artist_vor= " +
 +
"\n| artist_dates = " +
 +
"\n| zeitalter = " +
 +
"\n| periode = " +
 +
"\n| jahr = " +
 +
"\n| serie = " +
 +
"\n| buch = " +
 +
"\n| serie_j = " +
 +
"\n| besitz = " +
 +
"\n| treasure = " +
 +
"\n| q_link = " +
 +
"\n| q_text = " +
 +
"\n| quelle_b = " +
 +
"\n| c = " +
 +
"\n| quelle_d = " + datum +
 +
"\n| collection = " +
 +
"\n| beschreibung= " +
 +
"\n| thema=  " +
 +
"\n| medium=  " +
 +
  "\n}} ");  
 +
}
  
/*** KOMMENTAR ***/
+
/////////// preload Literatur ////////////
importScript('mediawiki:kommentare.js');  
+
if ( mw.config.get( 'wgCanonicalNamespace') === 'Literatur'  ) {
 +
var name = mw.config.get( 'wgTitle').match(/\D+/)
 +
    , jahr = mw.config.get( 'wgTitle').match(/\d+/);
 +
$( '#wpTextbox1 ').html(
 +
"{{Literatur " +
 +
"\n| code = " + mw.config.get( 'wgTitle' ) + 
 +
"\n| autor1_nat = west  " +
 +
"\n| autor1_fam =" + name +
 +
"\n| autor1_vor =  " +
 +
"\n| autor1_kanji = " +
 +
"\n| autor2 =  " +
 +
"\n| autor_zusatz =  " +
 +
"\n| jahr = " + jahr +
 +
"\n| pub_form = Buch  " +
 +
"\n| titel1 =  " +
 +
"\n| titel2 =  " +
 +
"\n| titel_kanji = " +
 +
"\n| link =  " +
 +
"\n| sammelband_hg = " +
 +
"\n| sammelband_titel =  >" +
 +
"\n| ort = " +
 +
"\n| verlag =  " +
 +
"\n| reihe =  " +
 +
"\n| auflage = " +
 +
"\n| zeitschrift =  " +
 +
"\n| seiten =  " +
 +
"\n| bemerkung = " +
 +
"\n| bemerkung2 = {{{1|}}} " +
 +
  "\n}} ");  
 +
  }
 +
}
  
}// ende "jsOK"
+
/***********************************
 +
      Change redirected address line
 +
***********************************/
 +
( function ( $, mw ) {
 +
if ( !window.history || !window.history.replaceState ) {
 +
return;
 +
}
 +
 +
mw.loader.using( 'jquery.mwExtension', function () {
 +
var articlePathRE, pathQuery, path;
 +
 +
articlePathRE = new RegExp(
 +
'^' +
 +
$.escapeRE( mw.config.get( 'wgArticlePath' ) ).replace( '\\$1', mw.config.get( 'wgArticlePath' ).indexOf( '?' ) >= -1 ? '([^?]*)' : '([^&]*)' ) +
 +
'$'
 +
);
 +
pathQuery = location.pathname + ( location.search ? '?' + location.search : '' );
 +
// Only execute on paths matching the article path (don't squash query arguments)
 +
if ( articlePathRE.test( pathQuery ) ) {
 +
path = mw.util.wikiGetlink( mw.config.get( 'wgPageName' ) );
 +
path += window.location.hash || '';
 +
window.history.replaceState( {}, document.title, path );
 +
}
 +
} );
  
//Vielleicht für später
+
}( jQuery, mediaWiki ) );
//importStylesheet('mediawiki:abc' + wgCanonicalNamespace + '.css');
 
//importScript('mediawiki:abc' + wgCanonicalNamespace + '.js');
 
 
 
 
 
//////////////////////////
 
//—‚ ‘„ “ōŌūŪ&shy;&nbsp;
 
//////////////////////////
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/no.gif",
 
    "speedTip": "",
 
    "tagOpen": "",
 
    "tagClose": "",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/ndash.jpg",
 
    "speedTip": "kurzer Bindestrich (n–dash)",
 
    "tagOpen": "–",
 
    "tagClose": "",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/mdash.jpg",
 
    "speedTip": "Text zwischen langen Bindestrichen (m—dash)",
 
    "tagOpen": "— ",
 
    "tagClose": " — ",
 
    "sampleText": "Text"};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/hyphens1_dt.jpg",
 
    "speedTip": "dt. Anführungszeichen einfach",
 
    "tagOpen": "‚",
 
    "tagClose": "‘",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/hyphens2_dt.jpg",
 
    "speedTip": "dt. Anführungszeichen doppelt",
 
    "tagOpen": "„",
 
    "tagClose": "“",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/oo.jpg",
 
    "speedTip": "langes o, klein",
 
    "tagOpen": "ō",
 
    "tagClose": "",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/oo_gr.jpg",
 
    "speedTip": "langes O, gross",
 
    "tagOpen": "Ō",
 
    "tagClose": "",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/uu.jpg",
 
    "speedTip": "langes u, klein",
 
    "tagOpen": "ū",
 
    "tagClose": "",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/uu_gr.jpg",
 
    "speedTip": "langes U, gross",
 
    "tagOpen": "Ū",
 
    "tagClose": "",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/shy.jpg",
 
    "speedTip": "stummes Trennzeichen",
 
    "tagOpen": "·",
 
    "tagClose": "",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/nbsp.jpg",
 
    "speedTip": "festes Leerzeichen (no breaking space)",
 
    "tagOpen": "&nbsp;",
 
    "tagClose": "",
 
    "sampleText": ""};
 
mwCustomEditButtons[mwCustomEditButtons.length] =
 
  {"imageFile": "/rel_jap/w/skins/common/images/ref.jpg",
 
    "speedTip": "Fussnoten",
 
    "tagOpen": "<ref>",
 
    "tagClose": "</ref>",
 
    "sampleText": "Text"};
 
 
 
/*********** WIKI GADGETS *****************/
 
function PageHomeArrows()
 
{
 
        //if (!wgNamespaceNumber || wgNamespaceNumber <100) return;
 
        var c = document.getElementById("bodyContent") || document.getElementById("mw_content") || document.getElementById("article");
 
        if (!c) return;
 
        for (var level = 2; level <= 3; ++level) {
 
                var h = c.getElementsByTagName("h" + level);
 
                for (var i = 0; i < h.length; ++i) {
 
                        var mwh = h[i].lastChild; // moveEditsection not run yet
 
                        if (mwh && mwh.className == "mw-headline" && mwh.offsetTop>screen.availHeight) {
 
                                var arrow = document.createElement("a");
 
                                arrow.className = "toparrow noprint";
 
                                arrow.title= "zum Seitenanfang";
 
                                arrow.appendChild(document.createTextNode("top↑"));
 
                                arrow.href = "javascript:window.scrollTo(0,0); void 0;";
 
                                mwh.insertBefore(arrow, mwh.firstChild);
 
                        }
 
                }
 
        }
 
}
 
addOnloadHook(PageHomeArrows);
 

Aktuelle Version vom 19. April 2025, 21:19 Uhr

/****************************************
 Handler für Glossar-Verzeichnisse (2025-3)
*****************************************/ 
// HTML-Voraussetzungen: mindestens 1 Eltern-Feld mit attribut class='filter' data-feld='thema' (oder ähnliches)
				// mehrere Auswahlfelder mit Attribut class='radio' data-thema='...' etc.
				// mindestens ein Anzeigefeld mit Attribut id='filter-thema' etc. + ein counter (id='count-results') 
//Variable
var myHref, myPage, myCount
  , felder= {}
  , myGroup= $('#js-group-items .checked').data('group');
//URL auslesen
if($('.radio').length) { 
	myHref = window.location.href.split('?');
	myPage = myHref[0];  
	if(myHref[1]) {
        var pairs = myHref[1].split("#")[0];
        	pairs = decodeURI(pairs).split("&");
        for (var i in pairs) {
	    	var split= pairs[i].split('=');
	        felder[split[0]]=split[1].replace(/_/g,' '); 
	        myGroup=split[0];
        }
	} 
}
$(document).ready(function () {
	//Voreinstellung Kuenstler und Quellen 
	$('.radio[data-order="werkzahl"]').trigger('click'); 
	//Daten aus URL anwenden
	var myKey;
	for (var key in felder)
		myKey=key; 
	if (myKey) {
		toggleItems();
		checkTime();
		selectResults(myKey,felder[myKey]);
	}  
	//Bilder schärfer machen
	insertThumbs(); 
}); 
//Radio-Button       
$('[data-feld] .radio').click(function() {  
	//console.log(felder);
	// Werte ermitteln
	var feld= $(this).parents('[data-feld]').data('feld'); 
	var wert= $(this).data(feld);
	checkTime($(this));
	//selectResults(feld,wert);
	$('#showResults').fadeOut('slow', function(){
		$.when( selectResults(feld,wert) ).done(function() {
			$('#showResults').fadeIn('slow'); 
		});
	});
});
// Hauptfunktion
function selectResults(dataKey,dataValue) {
	var filterResults = '';
	var urlQ = '';
	// felder-Objekt füttern
	felder[dataKey]=dataValue; 
	//console.log(felder);
	//mit Objekt arbeiten
	for (var key in felder) { 
		//radio-Buttons markieren 
		$('[data-feld] .radio[data-'+key+']').removeClass('checked');
		$('[data-feld] .radio[data-'+key+'="'+felder[key]+'"]').addClass('checked'); 
		
		//Filter basteln
		if(felder[key]!=='alle')
			filterResults+='[data-'+key+'*="'+felder[key]+'"]';
		else
			filterResults+='[data-'+key+']';
		//console.log(filterResults);
		//Filter anzeigen
		var prettyKey= felder[key].replace(/(.*);\s*(.*)/,'$2 $1');
		$('#filter-'+key).text( prettyKey );
		urlQ+=key+'='+felder[key]+'&';
	}
	//Filter anwenden
	$('.resultsIntro').hide(); // nur Metalog:Glossar
	$('.js-Glossar'+filterResults).siblings('.resultsIntro').show();
	$('.js-Glossar').hide(); 
	$('.js-Glossar'+filterResults).show(); 
	//Resultat anzeigen
	myCount= $('.js-Glossar'+filterResults).length.toString().replace(/(\d)(\d\d\d)/, '$1.$2');
	$('#count-results').text( myCount );  
	$('[data-time2="alle"].checked').attr('data-werkzahl', myCount);
	//no result
	$('#noResult').remove();
	if(myCount==0)
		$('#showResults').append('<div id="noResult">Kein Ergebnis!</div>'); 
	// URL  
	urlQ=urlQ.replace(/\&$/,'');
	history.pushState({}, '', myPage+'?'+urlQ);
	//console.log(myPage+'?'+urlQ); 
}  
// Menu links, Filterfunktion zurücksetzten 
$('.radio[data-group]').click(function() {   
	felder={}; // suche leeren
	var splitGroup= $(this).data('group').split('&');
    for (var i in splitGroup) {
	    myGroup=splitGroup[i];
	    felder[myGroup]='alle';  // Voreinstellung
    }
	$('.radio[data-'+myGroup+'="alle"]').trigger('click');
	toggleItems(); 
	
});
// Auswahlelemente ordnen (kuenster, quellen)
function toggleItems() {
	$('.radio[data-order="werkzahl"]').trigger('click'); // Voreinstellung
	$('.radio[data-group]').removeClass('checked');
	$('.radio[data-group*="'+myGroup+'"]').addClass('checked');
	$('[class*="show-"]').hide();
	$('[class*="show-'+myGroup+'"]').show();  
}
// kuenstler und quellen in Filterfeld umordnen  
$('.radio[data-order]').click(function() {  
	var sortData=$(this).data('order');
	$('.radio[data-order]').removeClass('checked');
	$('.radio[data-order="'+sortData+'"]').addClass('checked');
	$('[data-feld="'+myGroup+'"] .reorder').sort(function(a, b) {
		//Sort-Funktion
		var a1 = sortData===myGroup ? b : a;
		var b1 = sortData===myGroup ? a : b;
		return $(a1).data(sortData) < $(b1).data(sortData) ? 1 : 
			$(a1).data(sortData) > $(b1).data(sortData) ? -1 : 0;
	}).appendTo('[data-feld="'+myGroup+'"]');
});
// kuenstler nach epochen filtern  
function checkTime(radio) {
	var timeVal= felder['time'] ? felder['time'] : 'alle';
	if($(radio).data('time')) { 
		// wenn der Befehl aus dem Menu links kommt
		timeVal= $(radio).data('time');
		felder['artist']='alle';
		$('[data-time2]').removeClass('checked');
		$('[data-time2="alle"]').addClass('checked');
	}
	if (timeVal==='alle') {
		$('.reorder[data-time2]').show();
		$('.show-artist .countItems').text($('.reorder[data-time2]').length);  
	}
	else {
		$('.reorder[data-time2]').hide();
		$('.reorder[data-time2="'+timeVal+'"]').show(); 
		$('.show-artist .countItems').text($('.reorder[data-time2="'+timeVal+'"]').length);
	}
}
// thumb images adaptieren
function insertThumbs() {
$('.imgs-G-neu img').each(function() {
//dummy image nach dem Laden der Seite ersetzen
    var newSrc = $(this).parents('[data-src]').data('src'); 
    $(this).attr('src', newSrc);  
    $(this).attr('srcset', '');   
});  
}
/*************************************

Kleinere Funktionen

**********************************/

// Handler für sticky toc 
if ($('body:not(.ns--1) #toc').length)  { 
	$('#content').prepend('<div id="tocTest" style="height:.25rem; position:absolute;"></div>');
	var testAbstand=  $('#tocTest').height();
	$( "#tocTest" ).remove();
	var toc= $('#toc')
	, scroll_pos_test =  toc.offset().top - testAbstand;
	$(window).on('scroll', function() { 
		if( window.pageYOffset >= scroll_pos_test ) 
			$('#toc').addClass('stickyToc');
		else
			$('#toc').removeClass('stickyToc');
	});
}

// Handler für toparrow 
$(window).on('scroll', function() {
	if(window.pageYOffset < $( window ).height()/2)
		$('#toparrow').hide();
	else
		$('#toparrow').show();
}); 

// Handler für search 
if( $('#search-container').length){
	$('#searchform').attr('id', 'searchform2').appendTo('#search-container');
	//$('#searchform').hide(); 
} 
/* Phaidra-Hack
mw.loader.using('mediawiki.user', function() {
    var username = mw.user.getName();
    if (username === 'Crawler') {
        $('#search-container').hide();
    } else {
        $('#search-container').show();
        $('.ns--1 #search-container, .ns-6 #search-container').hide();
    }
}); */


// Handler für Glossar (2023)
  //toggle Info $('
if ($(location).attr('search').length > 0)
  $('#infoText').hide();
else 
  $('#infoText').show();
$('#infoButton').click(function() { 
		$('#infoText').toggle('slow');
});
  //Hide query options
function toggleChecked() {
	var firstChecked= $('#firstChoice input:checked').val().toLowerCase().match(/\w\w\w/); 
	$('[id^="second"]').hide('slow');
	$('#second-'+firstChecked).show('slow');
} 
$.when( $.ready ).then(toggleChecked); 
$('#firstChoice input').on('change', function() {
	toggleChecked(); 
	$('[id^="second"] [type="checkbox"]').prop('checked', false);
	$('.showResults').hide('fast');
}); 

/*************************************
  SITEMAP
**************************************/

//Handler für Klick auf (+) in Sitemap
$(document).on('click', '.sitemap .plusMinus', openOrCloseDetails);
function openOrCloseDetails(e) {
	e.preventDefault();
	if ($(this).hasClass("close")) {
		$(this).closest('div').find('ul').hide('slow');
	} else {
		$(this).closest('div').find('ul').show('slow');
	}
	$(this).toggleClass('close');
}  
$(document).on('click', '#plusMinusAll',openOrCloseAll);
function openOrCloseAll(e) {
	e.preventDefault();
	if ($(this).hasClass("close")) {
		$('.sitemap ul').hide('slow');
		$('.sitemap .plusMinus').removeClass('close');
	} else {
		$('.sitemap ul').show('slow');
		$('.sitemap .plusMinus').addClass('close');
	}
	$(this).toggleClass('close');
} 

//falsche externe links
$('.sitemap a').removeClass('external');

//Sitemap öffnen und schließen
$('#contSitemap').hide();
$(document).on('click', '#sitemapToggle', openOrCloseSitemap);
//von sitemaplink aus öffnen
$(document).on('click', '#sitemaplink', function(e) {
	e.preventDefault();
	$('#sitemapToggle').trigger('click');
	});
function openOrCloseSitemap(e) {
	e.preventDefault();
	var scroll= $('#toggleButton').offset();
	$('#contSitemap').css({
		top: 'calc('+ scroll.top+'px + 3.5rem)'
	});
	if ($(this).hasClass("close")) {
		$('#bgToggle').animate({
			height: "2em",
			opacity: ".2"
			}, function() {
				$('#bgToggle').removeAttr("style");
		});
		$('#contSitemap').slideUp('fast');
		$('#bottom-notice-ns').css({'z-index':'2'});
	} else {
		$('#bgToggle').css({
			backgroundColor: '#ccccc6'
			})
			.animate({
				height: "100%",
				opacity: ".85"
		});
		$('#contSitemap').slideDown('fast');
		$('#bottom-notice-ns').css({'z-index':'4'});
	}
	$(this).toggleClass('close');
}   
// Nav-Menü mit Link zur gegenw. Seite öffnen
$(document).ready(function () {
	var sitemapParent= $('.sitemap .selflink').closest('[id^=p-]');
	if(mw.config.get('wgPageName')!=="Hauptseite")
		$(sitemapParent).find('.plusMinus').trigger('click'); 
});
	
/********************* 
	GLOSSAR  
*********************/ 

// inline glossar-Info anzeigen und verbergen 
$('.glossar').each(function() {
	var child = $(this).find('.g_box'); 
	$(this).click(function(){ 
		$( child).slideToggle('slow'); 
	});
	$(this).mouseleave(function() { 
		$(child).slideUp('slow'); 
	}); 
}); 
/*************************************
  POPUP
**************************************/
// Popup-globale Variable
var popupInUse = 0
, currentPopup=0
, ppLength = $('.showPopup').length
, ppScroll;

// index-Schleife ermöglichen
function trimIndex(t) {
	var i = t;
	i = (i < ppLength) ? (i < 0) ? ppLength + i : i : ppLength - i;
	return i;
}

//Popup div erstellen
if(ppLength) { 
	$('body').append(
'<div id="popupDiv">'+
'<div id="ppX" title="Popup schließen">⨯</div>'+ 
'</div>'
	);
	$('#popupDiv').hide();
}
//Popup gestalten
if(ppLength) { 
	$('.showPopup').each(function(){
		var ppIndex= $('.showPopup').index(this)
		, iSrc=$(this).find('img').attr('src')
		, ppSrc= iSrc.replace(/\/thumb/, "").replace(/\/\d+px.+/, "") 
		, text= $(this).find('.fulltext').html();		
		 
		$('#popupDiv').append(
'<div class="ppSingle">'+
'<div class="ppGrid">'+
'<span class="ppBack ppGo" title="Voriges Bild anzeigen"></span>'+
'<a class="ppImg" href="'+ppSrc+'"><img id="ppImg'+ppIndex+'" src="'+ppSrc+'" /></a>'+
'<span class="ppNext ppGo"  title="Nächstes Bild anzeigen"></span>'+
'</div>'+ 
'<div class="ppText">'+
'<a class="ppBacklink" title="Bildseite" href="'+ $(this).find('a.image').attr('href') + '">Details</a>'+
'<span class="ppInfo"><small>Abb. '+(ppIndex + 1)+': </small>'+text+'</span>'+
'</div>'+
'</div>'
			);  
	});
}
// Popup öffnen
function openPopup(e) { 
	e.preventDefault(); 
	ppScroll= $(window).scrollTop(); 
	// back und next verbergen oder zeigen 
    if (ppLength < 2)
	    $('.ppGo').hide(); 
    else 
    	$('.ppGo').show();
	// Index ermitteln
	var i = $('.showPopup .image').index( this ); 
	// Bild auswählen
	selectPopup(i);
	// anzeigen
    $('body').addClass('ppOpen'); 
    $('#popupDiv').show('fast'); 
    
    popupInUse = 1;
}
// Einzelnes Bild auswählen
function selectPopup(pp) { 
    $('.ppSingle').hide();
    $('.ppSingle').eq(pp).show();
    currentPopup = pp;
} 
// nächstes Popup öffnen
function nextPopup() { 
	var i= trimIndex(currentPopup + 1);
	selectPopup(i);
}
// voriges Popup öffnen
function backPopup() { 
	var i= trimIndex(currentPopup - 1);
	selectPopup(i);
}
//Popup schließen
function closePopup() { 
    $('body').removeClass('ppOpen'); 
    $(window).scrollTop(ppScroll);
	$('#popupDiv').hide('fast'); 
    popupInUse=0;
} 
// Funktionen auslösen
$(document).on('click', '.showPopup .image', openPopup);
$(document).on('click', '#ppX', closePopup);
$(document).on('click', '.ppBack', backPopup);
$(document).on('click', '.ppNext', nextPopup); 

$(document).keyup(function(e) {  
	if (popupInUse) {  
		if ([27,8].includes(e.keyCode)) 
			closePopup(); 
		if ([37,100].includes(e.keyCode)) 
			backPopup(); 
		if ([39,102].includes(e.keyCode)) 
			nextPopup(); 
	}
});
 
/****************
  Sonstiges
*****************/
 //Handler für Klick auf (+) in Karten

    $('.listPlaces .plusMinus').next().hide(); 
    $(document).on('click', '.listPlaces .plusMinus', openOrClosePlaces); 
    function openOrClosePlaces(e) {
        e.preventDefault();
        if ($(this).hasClass("close")) {
            $(this).next().hide('slow');
        } else {
            $(this).next().show('slow');
        }
        $(this).toggleClass('close');
    }  
    $(document).on('click', '.plusMinus.artists', openOrCloseArtists); 
    function openOrCloseArtists(e) {
        e.preventDefault();
        if ($(this).hasClass("close")) {
            $(this).next().hide('slow');
        } else {
            $(this).next().show('slow');
        }
        $(this).toggleClass('close');
    }  
    $(document).on('click', '#plusMinusArtists',openOrCloseAllArtists);
    function openOrCloseAllArtists(e) {
        e.preventDefault();
        if ($(this).hasClass("close")) {
            $('.plusMinus.artists').next().hide('slow');
            $('.plusMinus.artists').removeClass('close');
        } else {
            $('.plusMinus.artists').next().show('slow');
            $('.plusMinus.artists').addClass('close');
        }
        $(this).toggleClass('close');
    } 
    $(document).on('click', '#plusMinusArtistsOpen',function(e){
        e.preventDefault();
    	$('.plusMinus.artists').next().show('slow'); 
    	$('.plusMinus.artists').addClass('close');
    });
    $(document).on('click', '#plusMinusArtistsClose',function(e){
        e.preventDefault();
    	$('.plusMinus.artists').next().hide('slow'); 
    	$('.plusMinus.artists').removeClass('close');
    });
    $(document).on('click', '#plusMinusArtistsContainer',function(e){
        e.preventDefault();
    	$('#plusMinusArtistsClose, #plusMinusArtistsOpen').toggleClass('displayNone');
    });
 
 //Handler für Prüfungsfragen
 if(mw.config.get('wgPageName')=="Lektoren:Prüfungsfragen") {
	var questions=$('.q li').clone();
	$(document).on('click', '#q_select, #q_select1', function() {
		questions.sort(function(a, b){return 0.5 - Math.random()});
		if ($(this).next('ol').children('li').length < 3) {
			$(this).next('ol').append
			($(questions[0]).hide().slideDown('slow')); 
			questions.splice(0,1); //verhindern, dass Frage noch einmal kommt
		}
	}); 
	$(document).on('click', '.far', function() {
		var myClass= $(this).attr('class');
		$(this).closest('li').find('i').removeClass('stay');
		$(this).removeClass().addClass(myClass).toggleClass('stay');	
	});   
	$(document).on('click', '.fa-minus', function() {
		$(this).closest('li').toggleClass('strike');
	}); 
	$(document).on('click', '.fa-times', function() {
		$(this).closest('li').remove();
	}); 
	$(document).on('click', '#q_all', function() {
		$('.q li').toggle('slow');
	}); 
 }
/************************/
// Kopieren aus der Bearbeitungsmaske
$('.copyLink').click(function(e) {
 	event.preventDefault(e);
 var $temp = $("<input>");
 $("body").append($temp);
 $temp.val($(this).find('a').html()).select();
 document.execCommand("copy");
 $temp.remove();
   });
 $('.copyme').click(copyToClipboard);
  function copyToClipboard(element) {
 var $temp = $("<input>");
 $("body").append($temp);
 $temp.val($(this).html()).select();
 document.execCommand("copy");
 $temp.remove();
} 

/************************/
//SMW Suchseiten
var user= mw.config.get( 'wgUserGroups' );
for (var i in user)
	if (user[i] === 'sysop')
		var sysopRights = true;  
 $( '.smw-ask-downloadlinks, .smw-tabs label.nav-label' ).hide();
 $( '#mw-indicator-mw-helplink' ).click(function(e){ 
 	if(sysopRights) {
 	event.preventDefault(e);
 	$('.smw-ask-downloadlinks, .smw-tabs label.nav-label').toggle('slow'); 
 	}
 }); 

/********************* 
	PRELOADS 
*********************/ 

if ( $( '#wpTextbox1 ').is(' :empty ') ) { 
	
/////////// preload glossar ////////////
if ( mw.config.get( 'wgCanonicalNamespace') === 'Glossar' ) { 
$( '#wpTextbox1 ').html(
  "{{glossar " +  
  "\n| code = "+ mw.config.get( 'wgTitle' ) +  
  "\n| romaji = " + mw.config.get( 'wgTitle' ) +
  "\n| kanji = " +
  "\n| text = " +
  "\n| sprache =  " +
  "\n| link =  " +
  "\n| thema= " + 
  "\n| map= " +
  "\n| zoom=  " +
  "\n| type=   " +
  "\n| icon=  " + 
  "\n}} "); 
}
/////////// preload sanskrit ////////////
if ( mw.config.get( 'wgCanonicalNamespace') === 'Skt'  ) { 
$( '#wpTextbox1 ').html( 
  "{{Sanskrit" + 
  "\n| code = "+ mw.config.get( 'wgTitle' ) + 
  "\n| sprache = skt." +
  "\n| skt_oD =  "+ mw.config.get( 'wgTitle' ) + 
  "\n| skt_mD =  " +
  "\n| devanagari = " +
  "\n| geschlecht = " +
  "\n| klasse = term " +
  "\n| romaji= " +
  "\n| kanji= " +
  "\n| romaji2= " +
  "\n| kanji2= " +
  "\n| ue=  "+
  "\n| anm= " +
  "\n| link= " +
  "\n| thema= " +
  "\n| map= " +
  "\n| zoom=  " +
  "\n| type=  " +
  "\n| icon=  " +
  "\n}} "); 
}

/////////// preload bild ////////////
if ( mw.config.get( 'wgNamespaceNumber') === 6   ) { 
var d = new Date();
var datum = d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate();
$( '#wpTextbox1 ').html(
 "{{bild " +
 "\n| titel =  " +
 "\n| detail = 0 " +
 "\n| genre =  "+
 "\n| genre2 =  " +
 "\n| material = " +
 "\n| maße =  " +
 "\n| artist= " +
 "\n| artist_vor= " +
 "\n| artist_dates = " +
 "\n| zeitalter = " +
 "\n| periode = " +
 "\n| jahr = " +
 "\n| serie = " +
 "\n| buch = " +
 "\n| serie_j = " +
 "\n| besitz = " +
 "\n| treasure = " +
 "\n| q_link = " +
 "\n| q_text = " +
 "\n| quelle_b = " +
 "\n| c = " +
 "\n| quelle_d = " + datum +
 "\n| collection = " +
 "\n| beschreibung= " +
 "\n| thema=  " +
 "\n| medium=  " + 
  "\n}} "); 
}

/////////// preload Literatur ////////////
if ( mw.config.get( 'wgCanonicalNamespace') === 'Literatur'  ) { 
	var name = mw.config.get( 'wgTitle').match(/\D+/)
    , jahr = mw.config.get( 'wgTitle').match(/\d+/);
$( '#wpTextbox1 ').html( 
 "{{Literatur " +
 "\n| code = " + mw.config.get( 'wgTitle' ) +  
 "\n| autor1_nat = west  " +
 "\n| autor1_fam =" + name +
 "\n| autor1_vor =  " +
 "\n| autor1_kanji = " +
 "\n| autor2 =  " +
 "\n| autor_zusatz =  " +
 "\n| jahr = " + jahr +
 "\n| pub_form = Buch  " +
 "\n| titel1 =  " +
 "\n| titel2 =  " +
 "\n| titel_kanji = " +
 "\n| link =  " +
 "\n| sammelband_hg = " +
 "\n| sammelband_titel =  >" +
 "\n| ort = " +
 "\n| verlag =  " +
 "\n| reihe =  " +
 "\n| auflage = " +
 "\n| zeitschrift =  " +
 "\n| seiten =  " +
 "\n| bemerkung = " +
 "\n| bemerkung2 = {{{1|}}} " +
  "\n}} "); 
  }
} 

/***********************************
       Change redirected address line 
***********************************/
( function ( $, mw ) {
	if ( !window.history || !window.history.replaceState ) {
		return;
	}
 
	mw.loader.using( 'jquery.mwExtension', function () {
		var articlePathRE, pathQuery, path;
 
		articlePathRE = new RegExp(
			'^' +
			$.escapeRE( mw.config.get( 'wgArticlePath' ) ).replace( '\\$1', mw.config.get( 'wgArticlePath' ).indexOf( '?' ) >= -1 ? '([^?]*)' : '([^&]*)' ) +
			'$'
		);
		pathQuery = location.pathname + ( location.search ? '?' + location.search : '' );
		// Only execute on paths matching the article path (don't squash query arguments)
		if ( articlePathRE.test( pathQuery ) ) {
			path = mw.util.wikiGetlink( mw.config.get( 'wgPageName' ) );
			path += window.location.hash || '';
			window.history.replaceState( {}, document.title, path );
		}
	} );

}( jQuery, mediaWiki ) );