MediaWiki:Common.js: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
/* ULS- | /* === ULS-Button in Minerva neben der Glocke einblenden ===================== * | ||
* Voraussetzungen: | |||
* - wfLoadExtension('UniversalLanguageSelector'); | |||
* - $wgULSAnonCanChangeLanguage = true; (optional) | |||
* - Skin: Minerva (mobil/desktop) | |||
* -------------------------------------------------------------------------- */ | |||
mw.loader.using(['ext.uls.interface', 'mediawiki.util'], function () { | mw.loader.using(['ext.uls.interface', 'mediawiki.util'], function () { | ||
// Nur im Minerva-Skin eingreifen | |||
if (mw.config.get('skin') !== 'minerva') return; | if (mw.config.get('skin') !== 'minerva') return; | ||
// | // 1) Vorhandenen ULS-Trigger nehmen oder einen eigenen bauen | ||
var $trigger = $('a.uls-trigger, #pt-uls a').first(); | var $trigger = $('a.uls-trigger, #pt-uls a').first(); | ||
if (!$trigger.length) { | if (!$trigger.length) { | ||
| Zeile 10: | Zeile 17: | ||
.addClass('uls-trigger') | .addClass('uls-trigger') | ||
.attr('title', mw.msg('uls-plang-title') || 'Sprache') | .attr('title', mw.msg('uls-plang-title') || 'Sprache') | ||
.text('🌐'); | .text('🌐'); // gern durch eigenes SVG/Icon ersetzen | ||
} | } | ||
// | // 2) Versuche, die Glocke (Benachrichtigungen) im Minerva-Header zu finden | ||
var | // -> unterschiedliche Minerva-Versionen haben leicht andere Selektoren. | ||
if ( | var bell = | ||
var | document.querySelector('.minerva-header [href*="Special:Notifications"]') || | ||
document.querySelector('.minerva-header .notifications') || | |||
document.querySelector('.minerva-header .icon--notifications') || | |||
document.querySelector('.minerva-header .notification'); // letzter Versuch | |||
// 3) Wenn Glocke gefunden: ULS-Button direkt DANACH einfügen | |||
if (bell) { | |||
var holder = document.getElementById('mw-minerva-uls'); | |||
if (!holder) { | |||
holder = document.createElement('div'); | |||
holder.id = 'mw-minerva-uls'; | |||
holder.className = 'minerva-icon mw-minerva-uls'; | |||
} else { | |||
holder.innerHTML = ''; | |||
} | |||
holder.appendChild($trigger.get(0)); | |||
bell.insertAdjacentElement('afterend', holder); | |||
// Eventuellen Fallback-Button entfernen | |||
var float = document.getElementById('mw-minerva-uls-float'); | |||
if (float) float.remove(); | |||
return; | return; | ||
} | } | ||
// | // 4) Fallback: Wenn Glocke nicht gefunden wurde, floatenden Button oben rechts zeigen, | ||
// damit der ULS wenigstens erreichbar ist (zur Fehlersuche nützlich). | |||
if (!document.getElementById('mw-minerva-uls-float')) { | |||
var float = document.createElement('div'); | |||
float.id = 'mw-minerva-uls-float'; | |||
float.className = 'mw-minerva-uls-float'; | |||
float.appendChild($trigger.get(0)); | |||
document.body.appendChild(float); | |||
} | } | ||
}); | }); | ||
Version vom 8. August 2025, 09:40 Uhr
/* === ULS-Button in Minerva neben der Glocke einblenden ===================== *
* Voraussetzungen:
* - wfLoadExtension('UniversalLanguageSelector');
* - $wgULSAnonCanChangeLanguage = true; (optional)
* - Skin: Minerva (mobil/desktop)
* -------------------------------------------------------------------------- */
mw.loader.using(['ext.uls.interface', 'mediawiki.util'], function () {
// Nur im Minerva-Skin eingreifen
if (mw.config.get('skin') !== 'minerva') return;
// 1) Vorhandenen ULS-Trigger nehmen oder einen eigenen bauen
var $trigger = $('a.uls-trigger, #pt-uls a').first();
if (!$trigger.length) {
$trigger = $('<a>')
.attr('href', '#')
.addClass('uls-trigger')
.attr('title', mw.msg('uls-plang-title') || 'Sprache')
.text('🌐'); // gern durch eigenes SVG/Icon ersetzen
}
// 2) Versuche, die Glocke (Benachrichtigungen) im Minerva-Header zu finden
// -> unterschiedliche Minerva-Versionen haben leicht andere Selektoren.
var bell =
document.querySelector('.minerva-header [href*="Special:Notifications"]') ||
document.querySelector('.minerva-header .notifications') ||
document.querySelector('.minerva-header .icon--notifications') ||
document.querySelector('.minerva-header .notification'); // letzter Versuch
// 3) Wenn Glocke gefunden: ULS-Button direkt DANACH einfügen
if (bell) {
var holder = document.getElementById('mw-minerva-uls');
if (!holder) {
holder = document.createElement('div');
holder.id = 'mw-minerva-uls';
holder.className = 'minerva-icon mw-minerva-uls';
} else {
holder.innerHTML = '';
}
holder.appendChild($trigger.get(0));
bell.insertAdjacentElement('afterend', holder);
// Eventuellen Fallback-Button entfernen
var float = document.getElementById('mw-minerva-uls-float');
if (float) float.remove();
return;
}
// 4) Fallback: Wenn Glocke nicht gefunden wurde, floatenden Button oben rechts zeigen,
// damit der ULS wenigstens erreichbar ist (zur Fehlersuche nützlich).
if (!document.getElementById('mw-minerva-uls-float')) {
var float = document.createElement('div');
float.id = 'mw-minerva-uls-float';
float.className = 'mw-minerva-uls-float';
float.appendChild($trigger.get(0));
document.body.appendChild(float);
}
});