MediaWiki:Anisa.js: Unterschied zwischen den Versionen

Aus Phoenix-Larp Wiki

Inhaltsverzeichnis im Anisa-Skin rechts anzeigen
Inhaltsverzeichnis in die Anisa-Seitenleiste integrieren
Zeile 1: Zeile 1:
/* Inhaltsverzeichnis bei Anisa auf großen Bildschirmen rechts anzeigen */
/* Inhaltsverzeichnis in die Anisa-Seitenleiste integrieren */
(function () {
(function () {
   mw.hook('wikipage.content').add(function () {
   function initAnisaToc() {
     if (!document.body.classList.contains('skin-anisa')) {
     if (!document.body.classList.contains('skin-anisa')) {
       return;
       return;
Zeile 7: Zeile 7:


     var toc = document.getElementById('toc');
     var toc = document.getElementById('toc');
    var navigation = document.getElementById('site-navigation');
    var toolbox = document.getElementById('p-tb');


     if (!toc || toc.dataset.anisaTocInitialized) {
     if (!toc || !navigation || toc.dataset.anisaTocInitialized) {
       return;
       return;
     }
     }
Zeile 17: Zeile 19:
     toc.parentNode.insertBefore(marker, toc);
     toc.parentNode.insertBefore(marker, toc);


     var panel = document.createElement('aside');
     var portlet = document.createElement('div');
     panel.id = 'anisa-page-toc';
     portlet.id = 'p-page-toc';
     panel.setAttribute('aria-label', 'Inhaltsverzeichnis');
     portlet.className = 'mw-portlet';
     document.body.appendChild(panel);
    portlet.setAttribute('role', 'navigation');
     portlet.setAttribute('aria-labelledby', 'p-page-toc-label');


     var mediaQuery = window.matchMedia('(min-width: 1200px)');
    var heading = document.createElement('h3');
    heading.id = 'p-page-toc-label';
    heading.textContent = 'Inhaltsverzeichnis';
 
    var body = document.createElement('div');
    body.className = 'mw-portlet-body';
 
    portlet.appendChild(heading);
    portlet.appendChild(body);
 
    if (toolbox) {
      navigation.insertBefore(portlet, toolbox);
    } else {
      navigation.appendChild(portlet);
    }
 
     var mediaQuery = window.matchMedia('(min-width: 769px)');


     function positionToc() {
     function positionToc() {
       if (mediaQuery.matches) {
       if (mediaQuery.matches) {
         panel.appendChild(toc);
         body.appendChild(toc);
         document.body.classList.add('anisa-has-page-toc');
         portlet.hidden = false;
       } else {
       } else {
         if (marker.parentNode) {
         if (marker.parentNode) {
           marker.parentNode.insertBefore(toc, marker.nextSibling);
           marker.parentNode.insertBefore(toc, marker.nextSibling);
         }
         }
 
         portlet.hidden = true;
         document.body.classList.remove('anisa-has-page-toc');
       }
       }
     }
     }
Zeile 44: Zeile 62:
       mediaQuery.addListener(positionToc);
       mediaQuery.addListener(positionToc);
     }
     }
   });
   }
 
  mw.hook('wikipage.content').add(initAnisaToc);
})();
})();

Version vom 6. September 2026, 09:43 Uhr

/* Inhaltsverzeichnis in die Anisa-Seitenleiste integrieren */
(function () {
  function initAnisaToc() {
    if (!document.body.classList.contains('skin-anisa')) {
      return;
    }

    var toc = document.getElementById('toc');
    var navigation = document.getElementById('site-navigation');
    var toolbox = document.getElementById('p-tb');

    if (!toc || !navigation || toc.dataset.anisaTocInitialized) {
      return;
    }

    toc.dataset.anisaTocInitialized = '1';

    var marker = document.createComment('Position des Inhaltsverzeichnisses');
    toc.parentNode.insertBefore(marker, toc);

    var portlet = document.createElement('div');
    portlet.id = 'p-page-toc';
    portlet.className = 'mw-portlet';
    portlet.setAttribute('role', 'navigation');
    portlet.setAttribute('aria-labelledby', 'p-page-toc-label');

    var heading = document.createElement('h3');
    heading.id = 'p-page-toc-label';
    heading.textContent = 'Inhaltsverzeichnis';

    var body = document.createElement('div');
    body.className = 'mw-portlet-body';

    portlet.appendChild(heading);
    portlet.appendChild(body);

    if (toolbox) {
      navigation.insertBefore(portlet, toolbox);
    } else {
      navigation.appendChild(portlet);
    }

    var mediaQuery = window.matchMedia('(min-width: 769px)');

    function positionToc() {
      if (mediaQuery.matches) {
        body.appendChild(toc);
        portlet.hidden = false;
      } else {
        if (marker.parentNode) {
          marker.parentNode.insertBefore(toc, marker.nextSibling);
        }
        portlet.hidden = true;
      }
    }

    positionToc();

    if (mediaQuery.addEventListener) {
      mediaQuery.addEventListener('change', positionToc);
    } else {
      mediaQuery.addListener(positionToc);
    }
  }

  mw.hook('wikipage.content').add(initAnisaToc);
})();