Jump to content

MediaWiki:Common.js

The comprehensive free global encyclopedia of CEOs, corporate leadership, and business excellence
Revision as of 10:27, 20 October 2025 by Maintenance script (talk | contribs) (Using proven TagCanvas library from CDN for reliable 3D auto-rotating tag cloud)

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.
/**
 * Add statistics banner to account creation page
 */
(function() {
    // Only run on Special:CreateAccount page
    if (mw.config.get('wgCanonicalSpecialPageName') !== 'CreateAccount') {
        return;
    }

    // Get site statistics via API
    var api = new mw.Api();

    api.get({
        action: 'query',
        meta: 'siteinfo',
        siprop: 'statistics',
        format: 'json'
    }).done(function(data) {
        var stats = data.query.statistics;

        // Create statistics banner
        var banner = $('<div>').addClass('createaccount-statistics').html(
            '<div class="createaccount-statistics-title">CEO.wiki is made by people like you.</div>' +
            '<div class="createaccount-statistics-grid">' +
                '<div class="createaccount-stat-item">' +
                    '<div class="createaccount-stat-number">' + stats.edits.toLocaleString() + '</div>' +
                    '<div class="createaccount-stat-label">Edits</div>' +
                '</div>' +
                '<div class="createaccount-stat-item">' +
                    '<div class="createaccount-stat-number">' + stats.pages.toLocaleString() + '</div>' +
                    '<div class="createaccount-stat-label">Pages</div>' +
                '</div>' +
                '<div class="createaccount-stat-item">' +
                    '<div class="createaccount-stat-number">' + stats.activeusers.toLocaleString() + '</div>' +
                    '<div class="createaccount-stat-label">Recent Contributors</div>' +
                '</div>' +
            '</div>'
        );

        // Insert banner before the form
        $('#userloginForm').before(banner);
    });
})();

/**
 * 3D Rotating Tag Cloud using TagCanvas library
 * Loads from CDN and initializes on Main Page
 */
(function() {
    // Only run on Main Page
    if (mw.config.get('wgPageName') !== 'Main_Page') {
        return;
    }

    $(document).ready(function() {
        // Check if canvas element exists
        if (!document.getElementById('tagcanvas')) {
            return;
        }

        // Load TagCanvas library from CDN
        var script = document.createElement('script');
        script.src = 'https://cdnjs.cloudflare.com/ajax/libs/jquery.tagcanvas/2.11/jquery.tagcanvas.min.js';
        script.onload = function() {
            // Initialize TagCanvas after library loads
            try {
                $('#tagcanvas').tagcanvas({
                    textColour: '#ffffff',
                    textFont: 'sans-serif, Arial, Helvetica',
                    outlineColour: 'transparent',
                    outlineThickness: 0,
                    maxSpeed: 0.03,
                    freezeActive: true,
                    shuffleTags: true,
                    shape: 'sphere',
                    zoom: 1.0,
                    noSelect: true,
                    textHeight: 20,
                    wheelZoom: false,
                    reverse: true,
                    depth: 0.8,
                    initial: [0.1, -0.1],
                    fadeIn: 1000,
                    clickToFront: 600,
                    shadow: '#000000',
                    shadowBlur: 3,
                    shadowOffset: [0, 2],
                    weight: true,
                    weightMode: 'size',
                    weightFrom: 'font-size',
                    weightSize: 1.5,
                    weightGradient: {
                        0: '#ffffff',
                        0.5: '#ffffff',
                        1: '#ffffff'
                    }
                }, 'tagcanvas-wrapper');
            } catch(e) {
                // If TagCanvas fails, hide canvas and show fallback
                $('#tagcanvas-wrapper').html('<div style="color: white; padding: 40px;">Trending: Satya Nadella • Tim Cook • Elon Musk • Jensen Huang • Mark Zuckerberg • Sundar Pichai • Andy Jassy • Lisa Su • Mary Barra • Jamie Dimon</div>');
            }
        };
        script.onerror = function() {
            // If CDN fails, show fallback
            $('#tagcanvas-wrapper').html('<div style="color: white; padding: 40px;">Trending: Satya Nadella • Tim Cook • Elon Musk • Jensen Huang • Mark Zuckerberg • Sundar Pichai • Andy Jassy • Lisa Su • Mary Barra • Jamie Dimon</div>');
        };
        document.head.appendChild(script);
    });
})();