MediaWiki:Common.js

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

/* Replaces with the name of the user browsing the page. Requires copying Template:USERNAME. */ $(function {    if (window.disableUserReplace || mw.config.get('wgUserName') === null) return;    $('span.insertusername').html(mw.config.get('wgUserName')); }); /* End of the replacement */

$(function {    if (window.disableUserReplace || mw.config.get('wgUserName') === null) return;    $('span.insertusersandboxlink').html('sandbox'); });

/************************* * JQuery Random Plugin * *************************/

/** * Adds a 'random' filter to jQuery, which selects 1 or more elements at random for the current jQuery set. * Defaults to 1 element if a amount isn't given. */

jQuery.fn.random = function(count) { var count = (typeof count !== 'undefined') ? count : 1; // Return the current set if an invalid count is asked for. if ( count < 1 || count >= this.length || ! Number.isInteger(Number(count)) ) { return jQuery(this); }

var indexes = []; var resultset = []; while ( indexes.length < count ) { // Generate a random index var index = Math.floor(Math.random * this.length); // reroll the random index if it's already present var reroll = false; for (var i = 0; i < indexes.length; i++) { if ( indexes[i] == index ) { reroll = true; }       }        if (reroll) { continue; }

// Add the index/element to the result set indexes.push(index); resultset.push(this[index]); }   return jQuery(resultset); }

/***************** * Random subset * *****************/

/** * A random subset of list elements within elements with the 'random-subset' class are show, while the rest are hidden. * The 'data-random-subset-count' attribute can be used to specify the number of elements to be displayed. */

$('.random-subset').each(function {   var count = 1;    // If the data-random-subset-count attribute is present use that count    if ($(this).attr('data-random-subset-count')) {        count = $(this).attr('data-random-subset-count');    }    var entries = $(this).find('li');    $(entries).random(entries.length - count).remove;    // show the root element in case it was hidden while waiting for JS.    $(this).show; });