MediaWiki:Common.js
Appearance
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.
$(function() {
fetch('/api.php?action=query&meta=siteinfo&siprop=statistics&format=json')
.then(res => res.json())
.then(data => {
const current = data.query.statistics.articles;
const goal = 500;
const left = goal - current;
const el = document.getElementById("article-countdown");
if (el) {
el.innerHTML = left > 0
? `🚧 Only <strong>${left}</strong> articles to go until 500!`
: `🎯 We've reached 500 articles! Celebrate good times, c'mon!`;
}
});
});
$(function () {
// Where to display
var $spot = $('<div id="lore-spotlight"><h3>Random Lore Spotlight</h3><div class="content">Loading…</div></div>');
$('#mw-content-text').prepend($spot);
// Query API for random page in Lore category
$.getJSON(mw.util.wikiScript('api'), {
action: 'query',
list: 'random',
rnnamespace: 0,
rnlimit: 1,
rncategory: 'Lore',
format: 'json'
}).done(function (data) {
var page = data.query.random[0];
// Get full HTML of page
$.get(mw.util.wikiScript('index'), {
action: 'render',
title: page.title
}).done(function (html) {
var $html = $('<div>').html(html);
// Look for hidden spotlight text
var hooks = $html.find('.lore-spotlight-text').map(function () {
return $(this).text();
}).get();
if (hooks.length > 0) {
// Pick one at random
var hook = hooks[Math.floor(Math.random() * hooks.length)];
$spot.find('.content').html(hook);
} else {
// Fallback if no hook
$spot.find('.content').html(
'<b><a href="/wiki/' + encodeURIComponent(page.title) + '">' + page.title + '</a></b>'
);
}
});
});
});