MediaWiki:Mobile.js: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Keine Bearbeitungszusammenfassung
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
/* ADOS – Hauptkategorien ins Hamburger-Menü (robust für lazy Drawer) */
/* Minerva: Alle Abschnitte automatisch ausklappen */
mw.loader.using(['mediawiki.util']).then(function () {
(function () {
  if (!window.mw) return;
  if (mw.config.get('skin') !== 'minerva') return;


   var CATS = [
   function expandAll() {
     { title: 'Kategorie:Alle A Dream of Scotland Abfüllungen', label: 'A Dream of Scotland' },
     // 1) Alle Toggle-Buttons, die noch "zu" sind, anklicken
     { title: 'Kategorie:Alle A Dream of Ireland Abfüllungen', label: 'A Dream of Ireland' },
     document.querySelectorAll('button.section-toggle[aria-expanded="false"], [data-event-name="section-toggle"][aria-expanded="false"]').forEach(function (btn) {
    { title: 'Kategorie:Alle A Dream of... – Der Rest der Welt Abfüllungen', label: 'Rest der Welt' },
      try { btn.click(); } catch(e) {}
    { title: 'Kategorie:Cigar Malt Übersicht', label: 'Cigar Malt' },
     });
     { title: 'Kategorie:Alle Rumbastic Abfüllungen', label: 'Rumbastic' }
  ];


  function blockHTML() {
    // 2) Sicherheitsgurt: typische Inhalts-Container sichtbar erzwingen
     var h = '<ul class="ados-hauptkategorien"><li class="menu-heading">Hauptkategorien</li>';
     document.querySelectorAll('.collapsible-block, .mf-section-contents, .section-content').forEach(function (el) {
    CATS.forEach(function (c) {
       el.style.display = 'block';
       h += '<li><a class="mw-ui-icon mw-ui-icon-before" href="' +
      el.hidden = false;
        mw.util.getUrl(c.title) + '"><span>' +
      el.classList.add('open-block');
        (c.label || c.title.replace(/^Kategorie:/,'')) +
      el.classList.remove('collapsed');
      '</span></a></li>';
     });
     });
    return h + '</ul>';
   }
   }


   function injectOnce() {
  // Beim Rendern und bei dynamischen Änderungen erneut ausführen
     var menu = document.querySelector('#mw-mf-page-left .menu, .drawer .menu, .menu');
   function init() {
     if (!menu || menu.querySelector('.ados-hauptkategorien')) return !!menu;
     expandAll();
     var firstUl = menu.querySelector('ul');
     // Nochmal kurz nach Seitenaufbau und nach spätem JS
     if (!firstUl) return false;
     setTimeout(expandAll, 50);
    firstUl.insertAdjacentHTML('afterend', blockHTML());
     setTimeout(expandAll, 400);
    return true;
   }
   }


   function onOpen() {
   if (mw.loader && mw.loader.using) {
    setTimeout(injectOnce, 10);
    mw.loader.using(['mobile.init']).always(function () {
     setTimeout(injectOnce, 200);
      if (mw.hook) mw.hook('wikipage.content').add(init);
     setTimeout(injectOnce, 600);
      init();
     });
  } else {
     document.addEventListener('DOMContentLoaded', init);
   }
   }
 
})();
  // Falls der Drawer schon im DOM ist
  injectOnce();
 
  // Beim Öffnen des Hamburgers (verschiedene Selektoren je nach Version)
  document.addEventListener('click', function (e) {
    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
  new MutationObserver(injectOnce).observe(document.body, { childList: true, subtree: true });
});