MediaWiki:Common.js
Erscheinungsbild
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', function () {
var groups = mw.config.get('wgUserGroups') || [];
if (groups.indexOf('sysop') === -1) return; // nur Admins
mw.util.addPortletLink(
'p-tb',
mw.util.getUrl('Special:SpecialPages'),
'Spezialseiten',
't-specialpages'
);
});
mw.loader.using(['mediawiki.util']).then(function () {
// nur für ausgeloggte Leser
if (mw.config.get('wgUserName')) return;
// nur einmal pro Browser
const key = 'appearancePinnedOnce';
if (localStorage.getItem(key)) return;
function tryPin() {
const pinBtn = document.querySelector('[data-event-name="pinnable-header.vector-appearance.pin"]');
if (pinBtn) {
pinBtn.click(); // pinnt / blendet ein
localStorage.setItem(key, '1');
return true;
}
return false;
}
// sofort versuchen, sonst kurz warten bis Vector fertig ist
if (tryPin()) return;
const obs = new MutationObserver(() => { if (tryPin()) obs.disconnect(); });
obs.observe(document.documentElement, { subtree: true, childList: true });
});
mw.loader.using(['mediawiki.util']).then(function () {
// nur für ausgeloggte Leser
if (mw.config.get('wgUserName')) return;
// Wenn der Nutzer schon etwas gewählt hat: nichts überschreiben
const prefKey = 'mw-client-preferences';
const current = localStorage.getItem(prefKey) || '';
if (current.includes('vector-2022_font-size_')) return;
function setStandardFontSize() {
// Suche nach der "Standard"-Option im Erscheinungsbild-Menü
const radios = Array.from(document.querySelectorAll('input[type="radio"]'));
const standardRadio = radios.find(r => {
const label = document.querySelector('label[for="' + r.id + '"]');
const labelText = (label ? label.textContent : '').trim().toLowerCase();
const val = (r.value || '').toLowerCase();
return labelText === 'standard' || val === 'standard';
});
if (standardRadio && !standardRadio.checked) {
standardRadio.click(); // setzt die echte Preference inkl. mw-client-preferences korrekt
return true;
}
return false;
}
// Erst nach DOM ready versuchen, sonst kurz beobachten bis das Menü gerendert ist
$(function () {
if (setStandardFontSize()) return;
const obs = new MutationObserver(() => {
if (setStandardFontSize()) obs.disconnect();
});
obs.observe(document.documentElement, { subtree: true, childList: true });
});
});
mw.loader.using(['mediawiki.util']).then(function () {
// nur ausgeloggte Leser, nur Desktop
if (mw.config.get('wgUserName')) return;
if (!window.matchMedia('(min-width: 1000px)').matches) return;
const storageKey = 'vector-mainmenu-preference'; // 'pinned' | 'unpinned'
function isPinned() {
return document.body.classList.contains('vector-main-menu-pinned');
}
function pinMenu() {
const btn = document.querySelector(
'[data-event-name="pinnable-header.vector-main-menu.pin"]'
);
if (btn) btn.click();
}
function unpinMenu() {
const btn = document.querySelector(
'[data-event-name="pinnable-header.vector-main-menu.unpin"]'
);
if (btn) btn.click();
}
function applyPreference() {
const pref = localStorage.getItem(storageKey);
if (pref === 'pinned' && !isPinned()) pinMenu();
if (pref === 'unpinned' && isPinned()) unpinMenu();
}
function observeReady() {
if (!document.documentElement.classList.contains('vector-animations-ready')) {
return false;
}
// 1️⃣ Beim ersten Besuch: Standard = pinned
if (!localStorage.getItem(storageKey)) {
localStorage.setItem(storageKey, 'pinned');
}
// 2️⃣ Gespeicherte Präferenz anwenden
applyPreference();
// 3️⃣ Nutzeraktion überwachen und merken
document.addEventListener('click', function (e) {
const pin = e.target.closest(
'[data-event-name="pinnable-header.vector-main-menu.pin"]'
);
const unpin = e.target.closest(
'[data-event-name="pinnable-header.vector-main-menu.unpin"]'
);
if (pin) localStorage.setItem(storageKey, 'pinned');
if (unpin) localStorage.setItem(storageKey, 'unpinned');
});
return true;
}
// Falls Vector noch nicht bereit ist → beobachten
if (observeReady()) return;
const obs = new MutationObserver(() => {
if (observeReady()) obs.disconnect();
});
obs.observe(document.documentElement, {
attributes: true,
attributeFilter: ['class']
});
});