MediaWiki:Gadget-DeferredDisplay.js: Difference between revisions

From Little Tail Wiki
Jump to navigationJump to search
Created page with "* * Deferred display of {{tl|nsfw}}-tagged images. * @author Vish, 2024: $(document).ready(function() { // Hide images immediately $('img[alt*=NSFWTAG]').css('opacity', '0'); $('.image[title*=NSFWTAG]').find('img').css('opacity', '0'); // Create overlay div and apply styles function createOverlay(parent) { parent.css({ display: 'block' }); var image = parent.find('img'); // Use the `height` att..."
 
No edit summary
Tag: Reverted
Line 25: Line 25:
             width: '100%',
             width: '100%',
             height: overlayHeight,
             height: overlayHeight,
             backgroundImage: 'url("https://static.jojowiki.com/images/customizations/Dialog-warning-yellow.png")',
             backgroundImage: 'url("https://littletail.wiki/images/a/a8/Fuga_UI_fear.png")',
             backgroundRepeat: 'no-repeat',
             backgroundRepeat: 'no-repeat',
             backgroundPosition: 'center',
             backgroundPosition: 'center',

Revision as of 22:22, 6 February 2025

/**
 * Deferred display of {{tl|nsfw}}-tagged images.
 * @author Vish, 2024
 */

$(document).ready(function() {
    // Hide images immediately
    $('img[alt*=NSFWTAG]').css('opacity', '0');
    $('.image[title*=NSFWTAG]').find('img').css('opacity', '0');
    
    // Create overlay div and apply styles
    function createOverlay(parent) {
        parent.css({
            display: 'block'
        });
        var image = parent.find('img');

        // Use the `height` attribute or fallback to CSS
        var overlayHeight = image.attr('height') || image.css('height') || '100%';
        
        var overlay = $('<div>').css({
            position: 'absolute',
            top: 0,
            left: 0,
            width: '100%',
            height: overlayHeight,
            backgroundImage: 'url("https://littletail.wiki/images/a/a8/Fuga_UI_fear.png")',
            backgroundRepeat: 'no-repeat',
            backgroundPosition: 'center',
            backgroundSize: 'contain',
            backgroundColor: 'black',
            cursor: 'pointer',
            zIndex: 1 // Ensure overlay is on top
        }).appendTo(parent);

        overlay.one('click', function(e) {
            e.preventDefault();
            $(this).remove();
            parent.css({
                backgroundImage: '',
                backgroundRepeat: '',
                backgroundPosition: '',
                backgroundSize: '',
                display: ''
            }).find('img').css({
                visibility: '',
                opacity: '100%'
            });
        });

        console.log('Overlay created with height:', overlayHeight);
    }

    // Wrap non-thumb images and add overlay
    $('img[alt*=NSFWTAG]').parent().add($('.thumb')
        .has('.nsfwelement').find('.image').parent())
        .each(function() {
            var parent = $(this);
            parent.css({
                position: 'relative', // Ensure parent is positioned
            }).find('img').css({
                visibility: 'hidden'
            });

            createOverlay(parent);
        });

    // Add overlay to elements with NSFWTAG in title attribute within .image
    $('.image[title*=NSFWTAG]').each(function() {
        var parent = $(this).closest('.thumb');
        if (parent.find('img[alt*=NSFWTAG]').length === 0) { // Only apply if no img with NSFWTAG is found
            parent.css({
                position: 'relative', // Ensure parent is positioned
            });

            createOverlay(parent);
        }
    });
});