×
Create a new article
Write your page title here:
We currently have 245 articles on The Vault @ The EERIE Files. Type your article name above or click on one of the titles below and start writing!



The Vault @ The EERIE Files

MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
 
Line 172: Line 172:
     document.head.appendChild(s);
     document.head.appendChild(s);
})();
})();
/* --- PayPal donate button in the sidebar --- */
$(function () {
    var $rail = $('#vault-sidebar');
    if (!$rail.length || $('#paypal-container-UVJ64W7S785MC').length) {
        return;
    }
    $(
        '<div class="vault-sidebar-module">' +
            '<div class="vault-sidebar-module-header">Support Us</div>' +
            '<div id="paypal-container-UVJ64W7S785MC"></div>' +
        '</div>'
    ).appendTo($rail);
    var attempts = 0;
    function tryRenderPaypalButton() {
        if (window.paypal && window.paypal.HostedButtons) {
            window.paypal.HostedButtons({
                hostedButtonId: 'UVJ64W7S785MC'
            }).render('#paypal-container-UVJ64W7S785MC');
        } else if (attempts < 50) {
            attempts++;
            setTimeout(tryRenderPaypalButton, 200);
        }
    }
    tryRenderPaypalButton();
});

Latest revision as of 22:56, 12 August 2026

/* Any JavaScript here will be loaded for all users on every page load. */

$(function () {

    $('a[href*="index.php?title="]').each(function () {

        var link = $(this);
        var url = new URL(link.attr('href'), window.location.origin);
        var title = url.searchParams.get('title');

        if (title) {

            var params = new URLSearchParams(url.search);
            params.delete('title');

            var newUrl = mw.config.get('wgArticlePath')
                .replace('$1', title);

            if (params.toString()) {
                newUrl += '?' + params.toString();
            }

            link.attr('href', newUrl);
        }

    });

});


/* ===== Vault sidebar rail (container only, content TBD) =====
   Injects an empty sidebar placeholder next to the article body
   on every page. Paired with layout CSS in MediaWiki:Cosmos.css. */
$(function () {
    var $article = $('#cosmos-pageBody-content');
    var $container = $('#bodyContent');
    if (!$article.length || !$container.length || $('#vault-sidebar').length) {
        return;
    }

    var $rail = $('<aside id="vault-sidebar"></aside>').appendTo($container);

    /* --- Recently Filed module (5 newest pages, live via API) --- */
    var $recentModule = $(
        '<div class="vault-sidebar-module">' +
            '<div class="vault-sidebar-module-header">Recently Filed</div>' +
            '<ul class="vault-sidebar-list"><li class="vault-sidebar-loading">Loading&hellip;</li></ul>' +
        '</div>'
    ).appendTo($rail);

    $.getJSON(mw.util.wikiScript('api'), {
        action: 'query',
        list: 'recentchanges',
        rcnamespace: 0,
        rctype: 'new',
        rclimit: 5,
        rcprop: 'title',
        format: 'json'
    }).done(function (data) {
        var pages = (data.query && data.query.recentchanges) || [];
        var $list = $recentModule.find('.vault-sidebar-list').empty();
        if (!pages.length) {
            $list.append('<li>No recent entries.</li>');
            return;
        }
        pages.forEach(function (p) {
            $list.append(
                $('<li>').append(
                    $('<a>').attr('href', mw.util.getUrl(p.title)).text(p.title)
                )
            );
        });
    }).fail(function () {
        $recentModule.find('.vault-sidebar-list').html('<li>Could not load recent entries.</li>');
    });

    /* --- Latest News module (WordPress REST API, same-origin) --- */
    var $newsModule = $(
        '<div class="vault-sidebar-module">' +
            '<div class="vault-sidebar-module-header">Latest News</div>' +
            '<ul class="vault-sidebar-list vault-sidebar-list--news"><li class="vault-sidebar-loading">Loading&hellip;</li></ul>' +
        '</div>'
    ).appendTo($rail);

    $.getJSON('/wp-json/wp/v2/posts', {
        per_page: 5,
        _embed: 'wp:featuredmedia'
    }).done(function (posts) {
        var $list = $newsModule.find('.vault-sidebar-list').empty();
        if (!posts || !posts.length) {
            $list.append('<li>No news yet.</li>');
            return;
        }
        posts.forEach(function (p) {
            var title = $('<div>').html(p.title && p.title.rendered ? p.title.rendered : '').text();
            var thumbUrl = '';
            try {
                var media = p._embedded && p._embedded['wp:featuredmedia'] && p._embedded['wp:featuredmedia'][0];
                if (media && media.media_details && media.media_details.sizes) {
                    var sizes = media.media_details.sizes;
                    thumbUrl = (sizes.thumbnail && sizes.thumbnail.source_url) ||
                        (sizes.medium && sizes.medium.source_url) ||
                        (media.source_url || '');
                } else if (media && media.source_url) {
                    thumbUrl = media.source_url;
                }
            } catch (e) {}
            var $a = $('<a>').attr('href', p.link).attr('target', '_blank').attr('rel', 'noopener');
            if (thumbUrl) {
                $a.append($('<img>').attr('src', thumbUrl).addClass('vault-sidebar-thumb').attr('alt', ''));
            }
            $a.append($('<span>').addClass('vault-sidebar-list-title').text(title));
            $list.append($('<li>').append($a));
        });
    }).fail(function () {
        $newsModule.find('.vault-sidebar-list').html('<li>Could not load news.</li>');
    });
});


/* --- Duplicate the site logo into the top utility bar, left-aligned --- */
$(function () {
    var $bannerContent = $('#cosmos-banner-content');
    if (!$bannerContent.length || $('#cosmos-banner-logo').length) {
        return;
    }
    var $srcAnchor = $('.cosmos-header__wordmark a').first();
    var $srcLogo = $srcAnchor.find('img').first();
    if (!$srcLogo.length) {
        return;
    }
    var homeHref = $srcAnchor.attr('href') || mw.util.getUrl('Main_Page');
    var $logoLink = $('<a>', {id: 'cosmos-banner-logo', href: homeHref}).append(
        $('<img>').attr('src', $srcLogo.attr('src')).attr('alt', $srcLogo.attr('alt') || '')
    );
    $bannerContent.prepend($logoLink);
});


/* --- Custom footer content --- */
$(function () {
    var $footerContent = $('#cosmos-footer-footerContent');
    if (!$footerContent.length || $('#vault-custom-footer').length) {
        return;
    }
    var privacyHref = $('#footer-places-privacy a').attr('href') || '#';
    var aboutHref = $('#footer-places-about a').attr('href') || '#';
    $footerContent.children().hide();
    var $custom = $(
        '<div id="vault-custom-footer">' +
            '<p class="vault-footer-line">The EERIE Files is a project by <a href="https://twentythreestudios.com" target="_blank" rel="noopener">TwentyThree Studios Limited</a>.</p>' +
            '<p class="vault-footer-links"></p>' +
            '<p class="vault-footer-copyright">&copy; 2026 <a href="https://twentythreestudios.com" target="_blank" rel="noopener">TwentyThree Studios Limited</a>. All Rights Reserved.</p>' +
        '</div>'
    );
    var $links = $custom.find('.vault-footer-links');
    $links.append($('<a>').attr('href', privacyHref).text('Privacy Policy'));
    $links.append(' | ');
    $links.append($('<a>').attr('href', aboutHref).text('About The Vault'));
    $footerContent.append($custom);
});


/* --- PayPal SDK (hosted buttons), injected into <head> --- */
(function () {
    if (document.getElementById('paypal-sdk-hosted-buttons')) {
        return;
    }
    var s = document.createElement('script');
    s.id = 'paypal-sdk-hosted-buttons';
    s.src = 'https://www.paypal.com/sdk/js?client-id=BAASWr2bWnrhJOoh1f73Zo4efiOPL1NFvptBuahOcDd9Us9Om_3ZAKi6zPBexLRoG2GZ4-dfsrLEDJuKzQ&components=hosted-buttons&disable-funding=venmo&currency=GBP';
    document.head.appendChild(s);
})();


/* --- PayPal donate button in the sidebar --- */
$(function () {
    var $rail = $('#vault-sidebar');
    if (!$rail.length || $('#paypal-container-UVJ64W7S785MC').length) {
        return;
    }
    $(
        '<div class="vault-sidebar-module">' +
            '<div class="vault-sidebar-module-header">Support Us</div>' +
            '<div id="paypal-container-UVJ64W7S785MC"></div>' +
        '</div>'
    ).appendTo($rail);

    var attempts = 0;
    function tryRenderPaypalButton() {
        if (window.paypal && window.paypal.HostedButtons) {
            window.paypal.HostedButtons({
                hostedButtonId: 'UVJ64W7S785MC'
            }).render('#paypal-container-UVJ64W7S785MC');
        } else if (attempts < 50) {
            attempts++;
            setTimeout(tryRenderPaypalButton, 200);
        }
    }
    tryRenderPaypalButton();
});