|
|
| (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.');
| |
| } | | } |
| }); | | })(); |