MediaWiki:Common.js
Aus Phoenix-Larp Wiki
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/* Das folgende JavaScript wird für alle Benutzer geladen. */
mw.loader.using(['mediawiki.util']).done(function () {
// Nur auf schmalen Screens aktiv
if (!window.matchMedia('(max-width: 768px)').matches) return;
// Burger-Button einfügen (mit ARIA)
var $btn = $('<button class="mw-burger" aria-label="Menü" aria-controls="column-navigation" aria-expanded="false"><span></span></button>');
$('body').append($btn);
// Overlay zum Schließen
var $overlay = $('<div class="nav-overlay" tabindex="-1" aria-hidden="true"></div>');
$('body').append($overlay);
function closeMenu() {
$('body').removeClass('nav-open');
$btn.attr('aria-expanded', 'false');
}
function toggleMenu() {
var open = !$('body').hasClass('nav-open');
$('body').toggleClass('nav-open', open);
$btn.attr('aria-expanded', String(open));
}
$btn.on('click', toggleMenu);
$overlay.on('click', closeMenu);
$(document).on('keydown', function (e) { if (e.key === 'Escape') closeMenu(); });
// Schließt das Menü, wenn Viewport wieder breit wird
window.matchMedia('(min-width: 769px)').addEventListener('change', function (mql) {
if (mql.matches) closeMenu();
});
});
mw.loader.using(['mediawiki.util']).done(function () {
var bpMobile = '(max-width: 768px)';
var mql = window.matchMedia(bpMobile);
var originalParent, placeholder, moved = false;
function ensurePortlet() {
// Linke Spalte (Off-Canvas), darin sitzt bei Anisa die Navigation
var $col = $('#column-navigation');
if (!$col.length) return null;
// Wenn noch kein Portlet für user-tools existiert: anlegen
var $portlet = $('#p-usertools');
if (!$portlet.length) {
$portlet = $('<div id="p-usertools" class="portal"></div>');
$portlet.append('<h3>Benutzer</h3><div class="body"></div>');
// Sinnvoll weit oben einhängen – direkt unter Logo/Navigation
// Entweder in #mw-navigation oder direkt ans Ende von #column-navigation
var $mwNav = $('#mw-navigation');
if ($mwNav.length) { $mwNav.prepend($portlet); }
else { $col.prepend($portlet); }
}
return $portlet.find('.body');
}
function moveIntoMenu() {
if (moved) return;
var $userTools = $('#user-tools');
if (!$userTools.length) return;
// Merke ursprünglichen Ort, um bei Desktop zurückzusetzen
originalParent = $userTools.parent()[0];
placeholder = document.createComment('user-tools-placeholder');
$userTools.before(placeholder);
var $target = ensurePortlet();
if (!$target) return;
// Verschieben (nicht klonen, damit Zustände/Links konsistent bleiben)
$userTools.appendTo($target);
moved = true;
// ARIA/Erreichbarkeit
$userTools.attr({
'role': 'navigation',
'aria-label': 'Benutzerwerkzeuge'
});
}
function moveBackToHeader() {
if (!moved) return;
var $userTools = $('#user-tools');
if (!$userTools.length || !placeholder) return;
// Zurück an die ursprüngliche Position
$(placeholder).after($userTools);
$(placeholder).remove();
placeholder = null;
moved = false;
}
function apply() {
if (mql.matches) moveIntoMenu();
else moveBackToHeader();
}
// Erster Lauf + bei Breakpoint-Wechsel
apply();
if (mql.addEventListener) mql.addEventListener('change', apply);
else mql.addListener(apply); // ältere Browser
// Failsafe: bei Artikel-/Ajax-Navigation erneut prüfen
mw.hook('wikipage.content').add(apply);
});