MediaWiki:Common.js

Revision as of 00:05, 27 August 2025 by EkramHossen (talk | contribs)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
var script = document.createElement("script");
script.setAttribute("async", "");
script.src = "https://www.googletagmanager.com/gtag/js?id=G-7H19MR0RZG";
document.head.appendChild(script);

window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-7H19MR0RZG');


// Recently Added Profiles Widget
mw.loader.using('mediawiki.api').then(function () {
    var api = new mw.Api();

    api.get({
        action: 'query',
        list: 'recentchanges',
        rcnamespace: 0, // Main namespace only
        rctype: 'new',
        rclimit: 5,
        rcprop: 'title|timestamp',
        format: 'json'
    }).done(function (data) {
        var container = document.getElementById('recent-pages');
        if (!container) return;

        var html = '<ul>';
        data.query.recentchanges.forEach(function (page) {
            var title = page.title;
            var url = mw.util.getUrl(title);
            html += '<li><a href="' + url + '">' + title + '</a></li>';
        });
        html += '</ul>';

        container.innerHTML = html;
    }).fail(function () {
        var container = document.getElementById('recent-pages');
        if (container) {
            container.innerHTML = 'Unable to load recent pages.';
        }
    });
});



mw.loader.using('jquery', function () {
    $(function () {
        if (!$('#promo-banner').length) {
            var promoContainer = $('<div id="promo-banner-container"></div>');
            var promo = $('<div id="promo-banner">Want to rank your website at the top of Google? Or need expert SEO services to boost your business? <br>🚀 <a href="https://www.upwork.com/freelancers/eliteseoexpert" target="_blank">Hire me on Upwork</a> now and let’s grow your traffic!</div>');
            promoContainer.append(promo);

            // Add it right under the header in Vector 2022
            var headerArea = $('.vector-header-container');
            if (headerArea.length) {
                headerArea.after(promoContainer);
            }
        }
    });
});




mw.loader.using('mediawiki.api', function () {
    $(document).ready(function () {
        // Override default search suggestions
        var $searchInput = $('#searchInput');

        $searchInput.on('input', function () {
            var query = $searchInput.val();
            if (query.length < 2) return;

            new mw.Api().get({
                action: 'query',
                generator: 'prefixsearch',
                gpssearch: query,
                gpsnamespace: 0,
                gpslimit: 5,
                prop: 'pageimages',
                piprop: 'thumbnail',
                pithumbsize: 50,
                format: 'json'
            }).done(function (data) {
                var $resultsBox = $('#searchResultsBox');
                if ($resultsBox.length === 0) {
                    $resultsBox = $('<div id="searchResultsBox"></div>').css({
                        'position': 'absolute',
                        'background': '#fff',
                        'border': '1px solid #ccc',
                        'z-index': 1000,
                        'width': $searchInput.outerWidth()
                    }).insertAfter($searchInput);
                }
                $resultsBox.empty();

                if (data.query && data.query.pages) {
                    var pages = Object.values(data.query.pages);
                    pages.forEach(function (page) {
                        var thumb = page.thumbnail ? page.thumbnail.source : 'https://upload.wikimedia.org/wikipedia/commons/6/65/No-Image-Placeholder.svg';
                        var $item = $('<div></div>').css({
                            'display': 'flex',
                            'align-items': 'center',
                            'padding': '5px',
                            'cursor': 'pointer'
                        });

                        var $img = $('<img>').attr('src', thumb).css({
                            'width': '40px',
                            'height': '40px',
                            'margin-right': '8px',
                            'object-fit': 'cover'
                        });

                        var $title = $('<span></span>').text(page.title);

                        $item.append($img).append($title);

                        $item.on('click', function () {
                            window.location.href = mw.util.getUrl(page.title);
                        });

                        $resultsBox.append($item);
                    });
                }
            });
        });

        // Hide results when clicking outside
        $(document).on('click', function (e) {
            if (!$(e.target).closest('#searchInput, #searchResultsBox').length) {
                $('#searchResultsBox').remove();
            }
        });
    });
});