MediaWiki:Common.js: Unterschied zwischen den Versionen
Aus Lost Dreams Of Tomorrow Wiki
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 80: | Zeile 80: | ||
/*------------------------Landing Features------------------------------------------*/ | /*------------------------Landing Features------------------------------------------*/ | ||
(function() { | |||
'use strict'; | |||
function initLandingTabs() { | |||
const tabs = document.querySelectorAll('.tab-button'); | |||
const grids = document.querySelectorAll('.landing-grid'); | |||
console.log('Tabs gefunden:', tabs.length); // Debug | |||
console.log('Grids gefunden:', grids.length); // Debug | |||
if (tabs.length === 0 || grids.length === 0) { | |||
}); | console.log('Landing Features nicht gefunden - warte...'); | ||
return; | |||
}); | } | ||
tabs.forEach(tab => { | |||
tab.addEventListener('click', function() { | |||
console.log('Tab geklickt:', this.dataset.tab); // Debug | |||
// Remove active from all tabs | |||
tabs.forEach(t => t.classList.remove('active')); | |||
this.classList.add('active'); | |||
// Hide all grids | |||
grids.forEach(g => g.classList.remove('active')); | |||
// Show selected grid | |||
const targetGrid = document.getElementById(this.dataset.tab); | |||
if (targetGrid) { | |||
targetGrid.classList.add('active'); | |||
console.log('Grid aktiviert:', this.dataset.tab); | |||
} else { | |||
console.log('Grid nicht gefunden:', this.dataset.tab); | |||
} | |||
}); | |||
}); | |||
console.log('Landing Tabs initialisiert!'); | |||
} | |||
// Mehrfache Versuche, den Code zu laden | |||
if (document.readyState === 'loading') { | |||
document.addEventListener('DOMContentLoaded', initLandingTabs); | |||
} else { | |||
initLandingTabs(); | |||
} | |||
// Zusätzlicher Versuch nach 500ms (falls MediaWiki später lädt) | |||
setTimeout(initLandingTabs, 500); | |||
})(); | |||
Version vom 11. Januar 2026, 19:12 Uhr
// MediaWiki Sidebar Toggle Script - Vanilla JS (Sichere Version)
/*------------------------Sidebar Toggle Script ------------------------------------------*/
(function() {
'use strict';
function initSidebar() {
// Suche nach DEINEN Custom Portlets (Players, World, etc.)
var portlets = document.querySelectorAll('#p-Players, #p-World, #p-Items_and_Gear, #p-Guides, #p-Community');
console.log('Gefundene Portlets:', portlets.length); // Debug
portlets.forEach(function(portlet) {
var header = portlet.querySelector('h3');
var portletBody = portlet.querySelector('.mw-portlet-body');
if (!header || !portletBody) {
return;
}
console.log('Initialisiere:', header.textContent); // Debug
// Füge Icon hinzu (RECHTS vom Title)
if (!header.querySelector('.toggle-icon')) {
var icon = document.createElement('span');
icon.className = 'toggle-icon';
icon.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>';
icon.style.marginLeft = '8px';
icon.style.display = 'inline-block';
icon.style.transition = 'transform 0.2s ease';
icon.style.verticalAlign = 'middle';
header.appendChild(icon);
}
// Cursor
header.style.cursor = 'pointer';
header.style.userSelect = 'none';
// Initial Status - DEFAULT OFFEN
var isOpen = !header.classList.contains('closed'); // Umgekehrt: nur "closed" klappt zu
if (!isOpen) {
portletBody.style.display = 'none';
var icon = header.querySelector('.toggle-icon');
icon.style.transform = 'rotate(-90deg)';
}
// Click Event
header.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation(); // Verhindere Event-Bubbling
console.log('KLICK!'); // Debug
var icon = this.querySelector('.toggle-icon');
var body = portlet.querySelector('.mw-portlet-body');
if (body.style.display === 'none') {
body.style.display = 'block';
icon.style.transform = 'rotate(0deg)';
this.classList.add('open');
console.log('Geöffnet');
} else {
body.style.display = 'none';
icon.style.transform = 'rotate(-90deg)';
this.classList.remove('open');
console.log('Geschlossen');
}
});
});
}
// Warte bis DOM geladen ist
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initSidebar);
} else {
initSidebar();
}
})();
/*------------------------Landing Features------------------------------------------*/
(function() {
'use strict';
function initLandingTabs() {
const tabs = document.querySelectorAll('.tab-button');
const grids = document.querySelectorAll('.landing-grid');
console.log('Tabs gefunden:', tabs.length); // Debug
console.log('Grids gefunden:', grids.length); // Debug
if (tabs.length === 0 || grids.length === 0) {
console.log('Landing Features nicht gefunden - warte...');
return;
}
tabs.forEach(tab => {
tab.addEventListener('click', function() {
console.log('Tab geklickt:', this.dataset.tab); // Debug
// Remove active from all tabs
tabs.forEach(t => t.classList.remove('active'));
this.classList.add('active');
// Hide all grids
grids.forEach(g => g.classList.remove('active'));
// Show selected grid
const targetGrid = document.getElementById(this.dataset.tab);
if (targetGrid) {
targetGrid.classList.add('active');
console.log('Grid aktiviert:', this.dataset.tab);
} else {
console.log('Grid nicht gefunden:', this.dataset.tab);
}
});
});
console.log('Landing Tabs initialisiert!');
}
// Mehrfache Versuche, den Code zu laden
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initLandingTabs);
} else {
initLandingTabs();
}
// Zusätzlicher Versuch nach 500ms (falls MediaWiki später lädt)
setTimeout(initLandingTabs, 500);
})();