MediaWiki:Mobile.js: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Zeile 1: Zeile 1:
/* ADOS – Hauptkategorien ins Hamburger-Menü (robust für lazy Drawer) */
// Fügt in der mobilen Minerva-Ansicht einen Menüpunkt im Hamburger-Menü hinzu
mw.loader.using(['mediawiki.util']).then(function () {
( function () {
  if ( mw.config.get('skin') !== 'minerva' ) return;


   var CATS = [
   function addLinkWhenMenuExists() {
    { title: 'Kategorie:Alle A Dream of Scotland Abfüllungen', label: 'A Dream of Scotland' },
    // Versuche mehrere plausible Container nacheinander
    { title: 'Kategorie:Alle A Dream of Ireland Abfüllungen',  label: 'A Dream of Ireland' },
    var container =
    { title: 'Kategorie:Alle A Dream of... – Der Rest der Welt Abfüllungen', label: 'Rest der Welt' },
      document.querySelector('#mw-mf-main-menu nav ul') ||
    { title: 'Kategorie:Cigar Malt Übersicht', label: 'Cigar Malt' },
      document.querySelector('#mw-mf-main-menu ul') ||
    { title: 'Kategorie:Alle Rumbastic Abfüllungen', label: 'Rumbastic' }
      document.querySelector('.minerva-main-menu .menu__list') ||
  ];
      document.querySelector('.menu__list, .menu') ||
      null;


  function blockHTML() {
     if (!container) {
    var h = '<ul class="ados-hauptkategorien"><li class="menu-heading">Hauptkategorien</li>';
       setTimeout(addLinkWhenMenuExists, 400);
     CATS.forEach(function (c) {
       return;
       h += '<li><a class="mw-ui-icon mw-ui-icon-before" href="' +
     }
        mw.util.getUrl(c.title) + '"><span>' +
        (c.label || c.title.replace(/^Kategorie:/,'')) +
       '</span></a></li>';
     });
    return h + '</ul>';
  }


  function injectOnce() {
     // Doppelte Einträge vermeiden
     var menu = document.querySelector('#mw-mf-page-left .menu, .drawer .menu, .menu');
     if (document.getElementById('menu-custom-reiter')) return;
     if (!menu || menu.querySelector('.ados-hauptkategorien')) return !!menu;
    var firstUl = menu.querySelector('ul');
    if (!firstUl) return false;
    firstUl.insertAdjacentHTML('afterend', blockHTML());
    return true;
  }


  function onOpen() {
     var li = document.createElement('li');
     setTimeout(injectOnce, 10);
     li.className = 'mw-list-item';
     setTimeout(injectOnce, 200);
     li.id = 'menu-custom-reiter';
     setTimeout(injectOnce, 600);
  }


  // Falls der Drawer schon im DOM ist
    var a = document.createElement('a');
  injectOnce();
    a.href = '/wiki/MeinReiter';        // <-- Ziel hier anpassen
    a.textContent = 'Reiter hinzufügen'; // Linktext


  // Beim Öffnen des Hamburgers (verschiedene Selektoren je nach Version)
    li.appendChild(a);
  document.addEventListener('click', function (e) {
     container.appendChild(li);
     if (e.target.closest('#mw-mf-main-menu-button,.mw-ui-icon-minerva-drawer,.hamburger,.toggle-list-button')) onOpen();
   }
   }, true);


   // Fallback: sobald der Drawer nachgeladen wird
   // Beim Laden und nach dem Öffnen des Menüs versuchen
   new MutationObserver(injectOnce).observe(document.body, { childList: true, subtree: true });
   document.addEventListener('DOMContentLoaded', addLinkWhenMenuExists);
});
  document.addEventListener('click', function(e){
    var btn = e.target.closest('button, a');
    if (btn && /menu|hamburger|main-menu/i.test(btn.className + ' ' + btn.id)) {
      setTimeout(addLinkWhenMenuExists, 300);
    }
  });
}() );