Zum Inhalt springen

MediaWiki:Mobile.js: Unterschied zwischen den Versionen

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


   // === KONFIGURATION: Hauptkategorien ===
   function expandAll() {
  var CATS = [
     // 1) Alle Toggle-Buttons, die noch "zu" sind, anklicken
    { title: 'Kategorie:Alle A Dream of Scotland Abfüllungen', label: 'A Dream of Scotland' },
     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 Ireland Abfüllungen', label: 'A Dream of Ireland' },
      try { btn.click(); } catch(e) {}
     { title: 'Kategorie:Alle A Dream of... – Der Rest der Welt Abfüllungen', label: 'Rest der Welt' },
     });
    { title: 'Kategorie:Cigar Malt Übersicht', label: 'Cigar Malt' },
    { title: 'Kategorie:Alle Rumbastic Abfüllungen', label: 'Rumbastic' },
    { title: 'Kategorie:The Tasteful 8', label: 'The Tasteful 8' },
    { title: 'Kategorie:Còmhlan Abfüllungen', label: 'Còmhlan' },
    { title: 'Kategorie:Friendly Mr. Z Whiskytainment Abfüllungen', label: 'Friendly Mr. Z' },
    { title: 'Kategorie:Die Whisky Elfen Abfüllungen', label: 'Die Whisky Elfen' },
    { title: 'Kategorie:The Fine Art of Whisky Abfüllungen', label: 'Fine Art of Whisky' },
     { title: 'Kategorie:The Forbidden Kingdom', label: 'The Forbidden Kingdom' }
  ];


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


   function tryInsertOnce() {
   // Beim Rendern und bei dynamischen Änderungen erneut ausführen
    // Menü-Container in Minerva (versch. Versionen haben leicht andere Strukturen)
  function init() {
    var menu = document.querySelector('#mw-mf-page-left .menu, .drawer .menu, .menu');
     expandAll();
     if (!menu) return false;
     // Nochmal kurz nach Seitenaufbau und nach spätem JS
     if (menu.querySelector('.ados-hauptkategorien')) return true; // schon eingefügt
     setTimeout(expandAll, 50);
     var firstUl = menu.querySelector('ul');
     setTimeout(expandAll, 400);
     if (!firstUl) return false;
    firstUl.insertAdjacentHTML('afterend', buildListHTML());
    return true;
   }
   }


   function onDrawerOpen() {
   if (mw.loader && mw.loader.using) {
     // Menü baut sich lazy auf – mehrmals kurz nacheinander versuchen
     mw.loader.using(['mobile.init']).always(function () {
    setTimeout(tryInsertOnce, 30);
      if (mw.hook) mw.hook('wikipage.content').add(init);
    setTimeout(tryInsertOnce, 200);
       init();
    setTimeout(tryInsertOnce, 600);
     });
  }
   } else {
 
     document.addEventListener('DOMContentLoaded', init);
  // Sofort versuchen (falls Menü schon im DOM ist)
  tryInsertOnce();
 
  // Auf Klick auf den Menü-Button reagieren (verschiedene Selektoren je nach MW/Minerva)
  document.addEventListener('click', function (e) {
    if (e.target.closest('#mw-mf-main-menu-button,.mw-ui-icon-minerva-drawer,.hamburger,.toggle-list-button')) {
       onDrawerOpen();
     }
  }, true);
 
   // Fallback: sobald irgendwas Menü-Ähnliches in den DOM kommt, einfügen
  var mo = new MutationObserver(function () {
     if (tryInsertOnce()) return; // einmalig einfügen
  });
  mo.observe(document.body, { childList: true, subtree: true });
 
  // sichtbarer Hinweis im Debugmodus
  if (/\bdebug=1\b/.test(location.search)) {
    mw.notify('Mobile.js aktiv – Hauptkategorien werden eingefügt.');
   }
   }
});
})();

Aktuelle Version vom 25. Oktober 2025, 19:58 Uhr

/* Minerva: Alle Abschnitte automatisch ausklappen */
(function () {
  if (!window.mw) return;
  if (mw.config.get('skin') !== 'minerva') return;

  function expandAll() {
    // 1) Alle Toggle-Buttons, die noch "zu" sind, anklicken
    document.querySelectorAll('button.section-toggle[aria-expanded="false"], [data-event-name="section-toggle"][aria-expanded="false"]').forEach(function (btn) {
      try { btn.click(); } catch(e) {}
    });

    // 2) Sicherheitsgurt: typische Inhalts-Container sichtbar erzwingen
    document.querySelectorAll('.collapsible-block, .mf-section-contents, .section-content').forEach(function (el) {
      el.style.display = 'block';
      el.hidden = false;
      el.classList.add('open-block');
      el.classList.remove('collapsed');
    });
  }

  // Beim Rendern und bei dynamischen Änderungen erneut ausführen
  function init() {
    expandAll();
    // Nochmal kurz nach Seitenaufbau und nach spätem JS
    setTimeout(expandAll, 50);
    setTimeout(expandAll, 400);
  }

  if (mw.loader && mw.loader.using) {
    mw.loader.using(['mobile.init']).always(function () {
      if (mw.hook) mw.hook('wikipage.content').add(init);
      init();
    });
  } else {
    document.addEventListener('DOMContentLoaded', init);
  }
})();