|
|
| Zeile 1: |
Zeile 1: |
| /* All JavaScript here will be loaded for users of the MinervaNeue skin */ | | /* All JavaScript here will be loaded for users of the MinervaNeue skin */ |
|
| |
|
| |
| /* ADOS – Hauptkategorien ins Minerva-Hamburger-Menü (Mobile) */
| |
| mw.loader.using(['mediawiki.util', 'mediawiki.notify']).then(function () {
| |
|
| |
| // === KONFIGURATION: Deine Hauptkategorien ===
| |
| // title = exakter Seitentitel (inkl. "Kategorie:")
| |
| // label = kurzes Label im Menü
| |
| var CATS = [
| |
| { title: 'Kategorie:Alle A Dream of Scotland Abfüllungen', label: 'A Dream of Scotland' },
| |
| { title: 'Kategorie:Alle A Dream of Ireland Abfüllungen', label: 'A Dream of Ireland' },
| |
| { 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 ===
| |
| function buildListHTML() {
| |
| var html = '<ul class="ados-hauptkategorien">';
| |
| html += '<li class="menu-heading">Hauptkategorien</li>';
| |
| CATS.forEach(function (c) {
| |
| html += '<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>';
| |
| });
| |
| html += '</ul>';
| |
| return html;
| |
| }
| |
|
| |
| function tryInsertOnce() {
| |
| // Drawer-Menü: #mw-mf-page-left .menu ; First UL = Standardblock
| |
| var menu = document.querySelector('#mw-mf-page-left .menu');
| |
| if (!menu) return false;
| |
| if (menu.querySelector('.ados-hauptkategorien')) return true; // schon drin
| |
|
| |
| var firstUl = menu.querySelector('ul');
| |
| if (!firstUl) return false;
| |
|
| |
| firstUl.insertAdjacentHTML('afterend', buildListHTML());
| |
| return true;
| |
| }
| |
|
| |
| function onDrawerOpen() {
| |
| // Mehrere Versuche – das Menü wird manchmal verzögert aufgebaut
| |
| setTimeout(tryInsertOnce, 30);
| |
| setTimeout(tryInsertOnce, 200);
| |
| setTimeout(tryInsertOnce, 600);
| |
| }
| |
|
| |
| // === Trigger ===
| |
| // 1) Sofort versuchen (falls das Menü schon da ist)
| |
| tryInsertOnce();
| |
|
| |
| // 2) Auf Klick auf den Drawer-Button reagieren
| |
| // (verschiedene Selektoren je nach MW/Minerva-Version)
| |
| var selectors = [
| |
| '#mw-mf-main-menu-button',
| |
| 'button.hamburger',
| |
| '.mw-ui-icon-minerva-drawer',
| |
| '.header .toggle-list-button'
| |
| ];
| |
| selectors.forEach(function (sel) {
| |
| var btn = document.querySelector(sel);
| |
| if (btn) btn.addEventListener('click', onDrawerOpen, false);
| |
| });
| |
|
| |
| // 3) Fallback: MutationObserver – sobald das Menü in den DOM kommt, einfügen
| |
| var mo = new MutationObserver(function (mutations) {
| |
| if (tryInsertOnce()) return; // hat geklappt, nichts weiter tun
| |
| mutations.forEach(function (m) {
| |
| if (!m.addedNodes) return;
| |
| for (var i = 0; i < m.addedNodes.length; i++) {
| |
| var n = m.addedNodes[i];
| |
| if (n.nodeType === 1 && (n.matches('#mw-mf-page-left') || n.matches('.menu') || n.querySelector?.('.menu'))) {
| |
| tryInsertOnce();
| |
| break;
| |
| }
| |
| }
| |
| });
| |
| });
| |
| mo.observe(document.body, { childList: true, subtree: true });
| |
|
| |
| // Optionaler Hinweis im Debugmodus
| |
| if (/\bdebug=1\b/.test(location.search)) {
| |
| mw.notify('Minerva.js aktiv – Hauptkategorien-Menü wird eingefügt.');
| |
| }
| |
| });
| |