MediaWiki:Common.js: Unterschied zwischen den Versionen
Erscheinungsbild
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
||
| Zeile 70: | Zeile 70: | ||
}); | }); | ||
obs.observe(document.documentElement, { subtree: true, childList: true }); | 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'] | |||
}); | }); | ||
}); | }); | ||
Version vom 13. Dezember 2025, 19:37 Uhr
/* 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']
});
});