MediaWiki:Common.js
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!`;
}
});
});
// MediaWiki:Common.js
mw.hook('rcfilters.ui.initialized').add(function () {
document.documentElement.classList.add('rcfilters-ready');
});
// MediaWiki:Common.js — Emoji picker for the wikitext editor
mw.loader.using([]).then(async () => {
// Only run on edit/new sections where the standard textarea exists
const $box = $('#wpTextbox1');
if (!$box.length) return;
// Dynamically import Emoji Button (ES module)
// Pin the version you want; 4.6.4 shown here.
const { EmojiButton } = await import('https://cdn.jsdelivr.net/npm/@joeattardi/emoji-button@4.6.4/dist/index.js');
// Create a trigger button and place it after the textarea label/toolbar
const $trigger = $('<button>')
.attr('type', 'button')
.attr('id', 'emoji-trigger')
.addClass('mw-ui-button')
.text('😀 Emoji');
// Try to tuck it into the standard edit tools area if present; else, put it above the textarea
const $tools = $('#wikiEditor-ui-toolbar, .editOptions').first();
if ($tools.length) {
$tools.prepend($trigger);
} else {
$box.before($('<div class="emoji-trigger-wrap">').append($trigger));
}
// Create the picker
const picker = new EmojiButton({
// tweak to taste:
autoHide: true,
showSearch: true,
showRecents: true,
emojisPerRow: 8
});
// Insert at the caret when an emoji is chosen
picker.on('emoji', selection => {
const textarea = $box.get(0);
const start = textarea.selectionStart;
const end = textarea.selectionEnd;
const before = textarea.value.slice(0, start);
const after = textarea.value.slice(end);
textarea.value = before + selection.emoji + after;
// Move caret after the inserted emoji
const newPos = start + selection.emoji.length;
textarea.focus();
textarea.setSelectionRange(newPos, newPos);
});
// Toggle the picker anchored to the button
$('#emoji-trigger').on('click', function () {
picker.togglePicker(this);
});
});