|
|
| Zeile 1.245: |
Zeile 1.245: |
|
| |
|
| // ============================================================ | | // ============================================================ |
|
| |
| (function(){
| |
| if (!window.mw) return;
| |
|
| |
| function setOn(on){
| |
| document.body.classList.toggle('halloween-on', !!on);
| |
| try { localStorage.setItem('adosHalloween', on ? '1':'0'); } catch(e){}
| |
| // Optional: „Only Halloween“-Banner steuern (falls vorhanden)
| |
| var hh = document.querySelector('.only-halloween');
| |
| if (hh) hh.style.display = on ? '' : 'none';
| |
| }
| |
|
| |
| function isOct31(){
| |
| try {
| |
| const now = new Date();
| |
| const fmt = new Intl.DateTimeFormat('de-DE', { timeZone: 'Europe/Berlin', month:'numeric', day:'numeric' });
| |
| const parts = fmt.formatToParts(now);
| |
| const m = +parts.find(p=>p.type==='month').value;
| |
| const d = +parts.find(p=>p.type==='day').value;
| |
| return (m===10 && d===31);
| |
| } catch(e){ return false; }
| |
| }
| |
|
| |
| // URL-Override ?halloween=on/off
| |
| const params = new URLSearchParams(location.search);
| |
| const force = params.get('halloween');
| |
|
| |
| // Local preference
| |
| let saved = null;
| |
| try { saved = localStorage.getItem('adosHalloween'); } catch(e){}
| |
|
| |
| let enable = false;
| |
| if (force === 'on') enable = true;
| |
| else if (force === 'off') enable = false;
| |
| else if (saved === '1') enable = true;
| |
| else if (saved === '0') enable = false;
| |
| else enable = isOct31();
| |
|
| |
| function addToggle(){
| |
| // kleiner Toggle-Link in Vector (Personal-Menü) oder Minerva (Footer)
| |
| const btn = document.createElement('a');
| |
| btn.id = 'pt-halloween-toggle';
| |
| btn.href = '#';
| |
| btn.textContent = document.body.classList.contains('halloween-on') ? '🎃 Halloween an' : '🎃 Halloween aus';
| |
| btn.addEventListener('click', function(ev){
| |
| ev.preventDefault();
| |
| const on = !document.body.classList.contains('halloween-on');
| |
| setOn(on);
| |
| btn.textContent = on ? '🎃 Halloween an' : '🎃 Halloween aus';
| |
| });
| |
|
| |
| const vector = document.getElementById('p-personal');
| |
| const minervaFooter = document.querySelector('.minerva-footer') || document.querySelector('#footer');
| |
| if (vector && vector.querySelector('ul')) {
| |
| const li = document.createElement('li');
| |
| li.appendChild(btn);
| |
| vector.querySelector('ul').appendChild(li);
| |
| } else if (minervaFooter) {
| |
| const wrap = document.createElement('div');
| |
| wrap.style.textAlign = 'center';
| |
| wrap.style.margin = '.5rem 0';
| |
| wrap.appendChild(btn);
| |
| minervaFooter.appendChild(wrap);
| |
| } else {
| |
| document.body.appendChild(btn);
| |
| }
| |
| }
| |
|
| |
| // Anwenden + Toggle setzen
| |
| if (document.readyState === 'loading') {
| |
| document.addEventListener('DOMContentLoaded', function(){ setOn(enable); addToggle(); });
| |
| } else {
| |
| setOn(enable); addToggle();
| |
| }
| |
| })();
| |