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