MediaWiki:Timeless.js: verschil tussen versies

Uit Dreambear Saga-wiki
Geen bewerkingssamenvatting
Geen bewerkingssamenvatting
Regel 1: Regel 1:
/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die het uiterlijk Timeless gebruiken */
/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die het uiterlijk Timeless gebruiken */
console.log('Stroke script geladen');
function Stroke() {
function Stroke() {
    console.log('Stroke functie gestart');
   
     // Voeg automatisch stroke classes toe aan h1, h2, h3
     // Voeg automatisch stroke classes toe aan h1, h2, h3
     const h1Elements = document.querySelectorAll('h1');
     document.querySelectorAll('h1').forEach(el => {
    const h2Elements = document.querySelectorAll('h2');
    const h3Elements = document.querySelectorAll('h3');
   
    console.log('Gevonden elementen:', {
        h1: h1Elements.length,
        h2: h2Elements.length,
        h3: h3Elements.length
    });
   
    h1Elements.forEach(el => {
         el.classList.add('stroke', 'stroke-3');
         el.classList.add('stroke', 'stroke-3');
     });
     });
     h2Elements.forEach(el => {
     document.querySelectorAll('h2').forEach(el => {
         el.classList.add('stroke', 'stroke-2');
         el.classList.add('stroke', 'stroke-2');
     });
     });
     h3Elements.forEach(el => {
     document.querySelectorAll('h3').forEach(el => {
         el.classList.add('stroke', 'stroke-1');
         el.classList.add('stroke', 'stroke-1');
     });
     });
Regel 28: Regel 14:
     // Verwerk alle elementen met de stroke class
     // Verwerk alle elementen met de stroke class
     const elements = document.querySelectorAll(".stroke");
     const elements = document.querySelectorAll(".stroke");
    console.log('Elementen met stroke class:', elements.length);
   
     elements.forEach(function(element) {
     elements.forEach(function(element) {
         const colorClass = Array.from(element.classList).find(cls => cls.startsWith('color-'));
         const colorClass = Array.from(element.classList).find(cls => cls.startsWith('color-'));
         const color = colorClass ? `#${colorClass.replace('color-', '')}` : 'black';
         const color = colorClass ? `#${colorClass.replace('color-', '')}` : 'black';


         // Check voor stroke-width classes
         // Check voor stroke-width classes (stroke-1, stroke-2, stroke-3)
         let r = 2.5;
         let r = 2.5; // standaard waarde
         if (element.classList.contains('stroke-1')) {
         if (element.classList.contains('stroke-1')) {
             r = 1;
             r = 1;
Regel 43: Regel 27:
             r = 3;
             r = 3;
         } else {
         } else {
            // Fallback naar radius class als geen stroke-width is gespecificeerd
             const radiusClass = Array.from(element.classList).find(cls => cls.startsWith('radius-'));
             const radiusClass = Array.from(element.classList).find(cls => cls.startsWith('radius-'));
             r = radiusClass ? parseFloat(radiusClass.replace('radius-', '')) : 2.5;
             r = radiusClass ? parseFloat(radiusClass.replace('radius-', '')) : 2.5;
Regel 56: Regel 41:


         element.style.textShadow = str;
         element.style.textShadow = str;
        console.log('Text shadow toegepast op element:', element.tagName, str.substring(0, 50) + '...');
     });
     });
}
}


// MediaWiki specifieke manier om te wachten tot pagina geladen is
// Wacht tot de pagina geladen is
(function() {
if (document.readyState === 'loading') {
    if (typeof mw !== 'undefined' && mw.loader) {
    document.addEventListener("DOMContentLoaded", function() {
        mw.loader.using(['mediawiki.util']).then(function() {
        Stroke();
            $(document).ready(function() {
    });
                console.log('Document ready - roep Stroke aan');
} else {
                Stroke();
    // DOM is al geladen
               
    Stroke();
                // Voor dynamisch geladen content
}
                mw.hook('wikipage.content').add(function($content) {
 
                    console.log('Wiki content hook - roep Stroke aan');
// Voor MediaWiki's dynamisch geladen content
                    setTimeout(Stroke, 100);
mw.hook('wikipage.content').add(function() {
                });
     Stroke();
            });
});
        });
     } else {
        // Fallback voor als MediaWiki objecten niet beschikbaar zijn
        document.addEventListener("DOMContentLoaded", function() {
            console.log('DOMContentLoaded - roep Stroke aan');
            Stroke();
        });
    }
})();

Versie van 4 sep 2025 12:24

/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die het uiterlijk Timeless gebruiken */
function Stroke() {
    // Voeg automatisch stroke classes toe aan h1, h2, h3
    document.querySelectorAll('h1').forEach(el => {
        el.classList.add('stroke', 'stroke-3');
    });
    document.querySelectorAll('h2').forEach(el => {
        el.classList.add('stroke', 'stroke-2');
    });
    document.querySelectorAll('h3').forEach(el => {
        el.classList.add('stroke', 'stroke-1');
    });
    
    // Verwerk alle elementen met de stroke class
    const elements = document.querySelectorAll(".stroke");
    elements.forEach(function(element) {
        const colorClass = Array.from(element.classList).find(cls => cls.startsWith('color-'));
        const color = colorClass ? `#${colorClass.replace('color-', '')}` : 'black';

        // Check voor stroke-width classes (stroke-1, stroke-2, stroke-3)
        let r = 2.5; // standaard waarde
        if (element.classList.contains('stroke-1')) {
            r = 1;
        } else if (element.classList.contains('stroke-2')) {
            r = 2;
        } else if (element.classList.contains('stroke-3')) {
            r = 3;
        } else {
            // Fallback naar radius class als geen stroke-width is gespecificeerd
            const radiusClass = Array.from(element.classList).find(cls => cls.startsWith('radius-'));
            r = radiusClass ? parseFloat(radiusClass.replace('radius-', '')) : 2.5;
        }

        const n = Math.ceil(2 * Math.PI * r);
        var str = "";

        for (var i = 0; i < n; i++) {
            const theta = (2 * Math.PI * i) / n;
            str += (r * Math.cos(theta)) + "px " + (r * Math.sin(theta)) + "px 0 " + color + (i === n - 1 ? "" : ",");
        }

        element.style.textShadow = str;
    });
}

// Wacht tot de pagina geladen is
if (document.readyState === 'loading') {
    document.addEventListener("DOMContentLoaded", function() {
        Stroke();
    });
} else {
    // DOM is al geladen
    Stroke();
}

// Voor MediaWiki's dynamisch geladen content
mw.hook('wikipage.content').add(function() {
    Stroke();
});