User:TheMcr/common.js: Difference between revisions

Boobpedia - Encyclopedia of big boobs
Jump to navigationJump to search
No edit summary
No edit summary
Line 71: Line 71:
     $(initPreviews);
     $(initPreviews);
})();
})();
mw.loader.load('/wiki/MediaWiki:Gadget-PagePreview.js&action=raw&ctype=text/javascript');

Revision as of 15:12, 5 April 2025

(function () {
    const tooltip = document.createElement('div');
    tooltip.style.position = 'absolute';
    tooltip.style.maxWidth = '300px';
    tooltip.style.padding = '10px';
    tooltip.style.background = '#fff';
    tooltip.style.border = '1px solid #aaa';
    tooltip.style.borderRadius = '6px';
    tooltip.style.boxShadow = '0 4px 12px rgba(0,0,0,0.2)';
    tooltip.style.fontSize = '14px';
    tooltip.style.zIndex = '9999';
    tooltip.style.display = 'none';
    document.body.appendChild(tooltip);

    function showTooltip(event, content) {
        tooltip.innerHTML = content;
        tooltip.style.left = `${event.pageX + 15}px`;
        tooltip.style.top = `${event.pageY + 15}px`;
        tooltip.style.display = 'block';
    }

    function hideTooltip() {
        tooltip.style.display = 'none';
    }

    function fetchPreview(title, event) {
        $.getJSON(
            mw.util.wikiScript('api'), {
                action: 'query',
                prop: 'extracts|pageimages',
                exintro: true,
                explaintext: true,
                titles: title,
                format: 'json',
                pithumbsize: 120
            }
        ).done(function (data) {
            const page = data.query.pages[Object.keys(data.query.pages)[0]];
            let content = `<strong>${page.title}</strong><br>`;
            if (page.thumbnail && page.thumbnail.source) {
                content += `<img src="${page.thumbnail.source}" style="float:left; margin-right:10px;" />`;
            }
            content += `<div>${page.extract || 'No summary available.'}</div>`;
            showTooltip(event, content);
        });
    }

    function initPreviews() {
        $('#bodyContent a').each(function () {
            const $link = $(this);
            const href = $link.attr('href');

            if (!href || href.indexOf('/boobs/') !== 0 || href.indexOf(':') !== -1) return; // skip special pages

            const title = decodeURIComponent(href.replace(/^\/boobs\//, '')).replace(/_/g, ' ');

            $link.hover(
                function (e) {
                    fetchPreview(title, e);
                },
                function () {
                    hideTooltip();
                }
            ).mousemove(function (e) {
                tooltip.style.left = `${e.pageX + 15}px`;
                tooltip.style.top = `${e.pageY + 15}px`;
            });
        });
    }

    $(initPreviews);
})();

mw.loader.load('/wiki/MediaWiki:Gadget-PagePreview.js&action=raw&ctype=text/javascript');