MediaWiki:Mobile.js: Unterschied zwischen den Versionen
Erscheinungsbild
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
||
| Zeile 1: | Zeile 1: | ||
/* | /* ADOS – Hauptkategorien ins Hamburger-Menü (robust für lazy Drawer) */ | ||
mw.loader.using(['mediawiki.util']).then(function () { | |||
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' }, | |||
'<ul class=" | { title: 'Kategorie:Alle A Dream of... – Der Rest der Welt Abfüllungen', label: 'Rest der Welt' }, | ||
<li class=" | { title: 'Kategorie:Cigar Malt Übersicht', label: 'Cigar Malt' }, | ||
< | { title: 'Kategorie:Alle Rumbastic Abfüllungen', label: 'Rumbastic' } | ||
]; | |||
< | function blockHTML() { | ||
var h = '<ul class="ados-hauptkategorien"><li class="menu-heading">Hauptkategorien</li>'; | |||
CATS.forEach(function (c) { | |||
h += '<li><a class="mw-ui-icon mw-ui-icon-before" href="' + | |||
<span | mw.util.getUrl(c.title) + '"><span>' + | ||
(c.label || c.title.replace(/^Kategorie:/,'')) + | |||
</a> | '</span></a></li>'; | ||
</li> | }); | ||
return h + '</ul>'; | |||
< | } | ||
function injectOnce() { | |||
var menu = document.querySelector('#mw-mf-page-left .menu, .drawer .menu, .menu'); | |||
if (!menu || menu.querySelector('.ados-hauptkategorien')) return !!menu; | |||
var firstUl = menu.querySelector('ul'); | |||
if (!firstUl) return false; | |||
firstUl.insertAdjacentHTML('afterend', blockHTML()); | |||
return true; | |||
} | |||
function onOpen() { | |||
setTimeout(injectOnce, 10); | |||
setTimeout(injectOnce, 200); | |||
setTimeout(injectOnce, 600); | |||
} | |||
// 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 }); | |||
}); | }); | ||
Version vom 9. Oktober 2025, 00:14 Uhr
/* ADOS – Hauptkategorien ins Hamburger-Menü (robust für lazy Drawer) */
mw.loader.using(['mediawiki.util']).then(function () {
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' }
];
function blockHTML() {
var h = '<ul class="ados-hauptkategorien"><li class="menu-heading">Hauptkategorien</li>';
CATS.forEach(function (c) {
h += '<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>';
});
return h + '</ul>';
}
function injectOnce() {
var menu = document.querySelector('#mw-mf-page-left .menu, .drawer .menu, .menu');
if (!menu || menu.querySelector('.ados-hauptkategorien')) return !!menu;
var firstUl = menu.querySelector('ul');
if (!firstUl) return false;
firstUl.insertAdjacentHTML('afterend', blockHTML());
return true;
}
function onOpen() {
setTimeout(injectOnce, 10);
setTimeout(injectOnce, 200);
setTimeout(injectOnce, 600);
}
// 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 });
});