Zum Inhalt springen

MediaWiki:Mobile.js: Unterschied zwischen den Versionen

Aus ADOS Wiki
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Zeile 1: Zeile 1:
/**
/* ADOS: Hauptkategorien ins Mobile-Menü einfügen */
* Minerva (mobile): Link "The Tasteful 8" ins Hamburger-Menü einfügen
mw.loader.using('mediawiki.util', function () {
* Ziel: /wiki/Kategorie:The_Tasteful_8
   var CATS = [
* Robust gegen DOM-Varianten; hängt den Link unten bei den Sitelinks an.
    'Kategorie:Alle A Dream of Scotland Abfüllungen',
*/
    'Kategorie:Alle A Dream of Ireland Abfüllungen',
(function () {
    'Kategorie:Alle A Dream of... – Der Rest der Welt Abfüllungen',
   if (mw.config.get('skin') !== 'minerva') return;
    'Kategorie:Cigar Malt Übersicht',
    'Kategorie:Alle Rumbastic Abfüllungen',
    'Kategorie:The Tasteful 8',
    'Kategorie:Còmhlan Abfüllungen',
    'Kategorie:Friendly Mr. Z Whiskytainment Abfüllungen',
    'Kategorie:Die Whisky Elfen Abfüllungen',
    'Kategorie:The Fine Art of Whisky Abfüllungen',
    'Kategorie:The Forbidden Kingdom'
  ];


   var LINK_ID = 'menu-the-tasteful-8';
   // Warten bis das Drawer-Menü im DOM ist, dann einfügen
   var LINK_TEXT = 'The Tasteful 8';
   var t = setInterval(function () {
  var LINK_HREF = '/wiki/Kategorie:The_Tasteful_8';
     var $menu = $('.menu'), $first = $menu.find('ul:first');
 
     if ($first.length) {
  function makeItem(doc) {
       clearInterval(t);
     var li = doc.createElement('li');
       var html = '<ul class="ados-hauptkategorien"><li class="menu-heading">Hauptkategorien</li>';
    li.id = LINK_ID;
      CATS.forEach(function (title) {
    // gängige Minerva-Klassen; falls sie fehlen, stört es nicht
        html += '<li><a href="' + mw.util.getUrl(title) + '"><span>' +
    li.className = 'menu__item';
          title.replace(/^Kategorie:/,'') + '</span></a></li>';
    var a = doc.createElement('a');
      });
     a.className = 'menu__item--link';
       html += '</ul>';
    a.href = LINK_HREF;
       $first.after(html);
    a.textContent = LINK_TEXT;
     }
    li.appendChild(a);
   }, 100);
    return li;
});
  }
 
  function findSiteLinksUL(root) {
    // 1) Versuche, die UL mit "Über ADOS Wiki" oder "Haftungsausschluss" zu finden
    var anchors = root.querySelectorAll('nav a, .menu a, #mw-mf-page-left a');
    var targetUL = null;
    anchors.forEach(function (a) {
       var t = (a.textContent || '').trim();
       if (t === 'Über ADOS Wiki' || t === 'Haftungsausschluss') {
        var ul = a.closest('ul');
        if (ul) targetUL = ul;
      }
    });
    if (targetUL) return targetUL;
 
    // 2) Fallback: nimm die letzte Menü-UL im Drawer
    var lists = root.querySelectorAll('#mw-mf-page-left nav ul, nav.minerva-navigation ul, .menu ul');
    return lists.length ? lists[lists.length - 1] : null;
  }
 
  function insertLink() {
    var drawer = document.getElementById('mw-mf-page-left') || document.body;
    var ul = findSiteLinksUL(drawer);
    if (!ul) return false;
    if (ul.querySelector('#' + LINK_ID)) return true; // schon drin
    ul.appendChild(makeItem(document)); // unten anhängen
    return true;
  }
 
  function arm() {
    // 1) Sofort versuchen
    insertLink();
 
    // 2) Beobachte DOM-Änderungen (wenn Nutzer den Burger öffnet / Lazy-Build)
    var mo = new MutationObserver(function () { insertLink(); });
    mo.observe(document.body, { childList: true, subtree: true });
 
    // 3) Sicherheitshalber ein paar Retries (MobileFrontend initialisiert asynchron)
    var tries = 0;
    var timer = setInterval(function () {
       tries++;
      var ok = insertLink();
       if (ok || tries > 10) clearInterval(timer);
     }, 250);
   }
 
  if (mw.hook) {
    mw.hook('mobileFrontend.pageReady').add(arm);
  }
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', arm);
  } else {
    arm();
  }
})();

Version vom 8. Oktober 2025, 20:06 Uhr

/* ADOS: Hauptkategorien ins Mobile-Menü einfügen */
mw.loader.using('mediawiki.util', function () {
  var CATS = [
    'Kategorie:Alle A Dream of Scotland Abfüllungen',
    'Kategorie:Alle A Dream of Ireland Abfüllungen',
    'Kategorie:Alle A Dream of... – Der Rest der Welt Abfüllungen',
    'Kategorie:Cigar Malt Übersicht',
    'Kategorie:Alle Rumbastic Abfüllungen',
    'Kategorie:The Tasteful 8',
    'Kategorie:Còmhlan Abfüllungen',
    'Kategorie:Friendly Mr. Z Whiskytainment Abfüllungen',
    'Kategorie:Die Whisky Elfen Abfüllungen',
    'Kategorie:The Fine Art of Whisky Abfüllungen',
    'Kategorie:The Forbidden Kingdom'
  ];

  // Warten bis das Drawer-Menü im DOM ist, dann einfügen
  var t = setInterval(function () {
    var $menu = $('.menu'), $first = $menu.find('ul:first');
    if ($first.length) {
      clearInterval(t);
      var html = '<ul class="ados-hauptkategorien"><li class="menu-heading">Hauptkategorien</li>';
      CATS.forEach(function (title) {
        html += '<li><a href="' + mw.util.getUrl(title) + '"><span>' +
          title.replace(/^Kategorie:/,'') + '</span></a></li>';
      });
      html += '</ul>';
      $first.after(html);
    }
  }, 100);
});