Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
/* ULS-Trigger anzeigen – mit Fallback als schwebender Button */
/* === 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;


   // existierenden Trigger nehmen oder neuen erzeugen
   // 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
   }
   }


   // 1) Versuch: direkt neben die Glocke
   // 2) Versuche, die Glocke (Benachrichtigungen) im Minerva-Header zu finden
   var $bell = $('.minerva-header .notifications, .minerva-header [href*="Special:Notifications"]').first();
  //    -> unterschiedliche Minerva-Versionen haben leicht andere Selektoren.
   if ($bell.length) {
   var bell =
     var $holder = $('<div id="mw-minerva-uls" class="minerva-icon mw-minerva-uls"></div>');
    document.querySelector('.minerva-header [href*="Special:Notifications"]') ||
     $holder.append($trigger);
    document.querySelector('.minerva-header .notifications') ||
     $bell.parent().after($holder); // nach dem Glocken-Container einfügen
    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;
   }
   }


   // 2) Fallback: Fix oben rechts einblenden, damit wir überhaupt etwas sehen
   // 4) Fallback: Wenn Glocke nicht gefunden wurde, floatenden Button oben rechts zeigen,
   var $float = $('#mw-minerva-uls-float');
  //    damit der ULS wenigstens erreichbar ist (zur Fehlersuche nützlich).
  if (!$float.length) {
   if (!document.getElementById('mw-minerva-uls-float')) {
     $float = $('<div id="mw-minerva-uls-float" class="mw-minerva-uls-float"></div>');
     var float = document.createElement('div');
     $float.append($trigger);
    float.id = 'mw-minerva-uls-float';
     $('body').append($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);
  }
});