MediaWiki:Common.js: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1.152: Zeile 1.152:
   'use strict';
   'use strict';


  // Nur im Browser, nicht im Parsoid/Server-Zeug
   if (typeof window === 'undefined' || typeof document === 'undefined') return;
   if (typeof window === 'undefined' || typeof document === 'undefined') return;


Zeile 1.170: Zeile 1.169:


   /* -----------------------------
   /* -----------------------------
     1) Timer-Bar DOM sicherstellen
     1) Nur bestehenden Timer „weihnachtlich anziehen“
     ----------------------------- */
     ----------------------------- */
   function ensureTimerBarDom() {
   function decorateXmasTimer() {
     var bar = document.getElementById('ados-timer-bar');
     var bar = document.getElementById('ados-timer-bar');
     if (!bar) {
     if (!bar) return; // Dein eigener Timer erzeugt dieses Element
      bar = document.createElement('div');
      bar.id = 'ados-timer-bar';
      bar.innerHTML =
        '<div id="ados-timer-inner">' +
          '<span id="ados-timer-message"></span>' +
          '<span id="ados-timer-countdown"></span>' +
          '<button id="ados-timer-close" type="button" aria-label="Leiste schließen">×</button>' +
        '</div>';
      document.body.prepend(bar);
    }
    return bar;
  }
 
  /* -----------------------------
    2) Weihnachts-Timer initialisieren
    ----------------------------- */
  function initXmasTimer() {
    var bar = ensureTimerBarDom();
    var msgEl = document.getElementById('ados-timer-message');
    var cdEl  = document.getElementById('ados-timer-countdown');
    var close = document.getElementById('ados-timer-close');
 
    if (!bar || !msgEl || !cdEl) return;


     // Weihnachts-Design aktivieren
     // Weihnachts-Design via CSS-Klasse aktivieren
     bar.classList.add('ados-xmas');
     bar.classList.add('ados-xmas');
    bar.style.display = 'block';
    document.body.classList.add('has-ados-timer');


     // Text
     // Optional: Nachricht dezent mit 🎄 ergänzen (ohne alles zu überschreiben)
    msgEl.textContent = 'Frohe Feiertage vom ADOS-Wiki – genieße die Adventszeit mit einem guten Dram!';
     var msgEl = document.getElementById('ados-timer-message');
 
     if (msgEl && !msgEl.dataset.xmasDecorated) {
    // Countdown bis Heiligabend (24.12. dieses Jahres)
       msgEl.textContent = '🎄 ' + msgEl.textContent;
     var target = new Date(now.getFullYear(), 11, 24, 0, 0, 0, 0);
       msgEl.dataset.xmasDecorated = '1';
 
     function updateCountdown() {
      var now2 = new Date();
      var diff = target - now2;
 
      if (diff <= 0) {
        cdEl.textContent = 'Heiligabend ist da ✨';
        return;
      }
 
      var days  = Math.floor(diff / (1000 * 60 * 60 * 24));
       var hours = Math.floor((diff / (1000 * 60 * 60)) % 24);
 
      cdEl.textContent = 'Noch ' + days + ' Tag' + (days !== 1 ? 'e' : '') +
                        ' und ' + hours + ' Std.';
    }
 
    updateCountdown();
    setInterval(updateCountdown, 60 * 1000); // jede Minute
 
    // Schließen-Button
    if (close) {
       close.addEventListener('click', function () {
        bar.style.display = 'none';
        document.body.classList.remove('has-ados-timer');
      });
     }
     }
   }
   }


   /* -----------------------------
   /* -----------------------------
     3) Schneefall-Effekt
     2) Schneefall-Effekt
     ----------------------------- */
     ----------------------------- */
   function initSnow() {
   function initSnow() {
Zeile 1.277: Zeile 1.225:


   /* -----------------------------
   /* -----------------------------
     4) Init nach DOM-Ready
     3) Init nach DOM-Ready
     ----------------------------- */
     ----------------------------- */
   function onReady(fn) {
   function onReady(fn) {
Zeile 1.288: Zeile 1.236:


   onReady(function () {
   onReady(function () {
     initXmasTimer();
     // nur dekorieren, NICHT neu bauen
    decorateXmasTimer();
     initSnow();
     initSnow();
   });
   });


})();
})();