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.
/* Any JavaScript here will be loaded for all users on every page load. */
mw.loader.load( 'ext.cite.styles' );
/* Allows Template:Notice to be dismissable. */
$(document).ready(function() {
$('.dismissible-notice .dismiss-button').click(function() {
$(this).closest('.dismissible-notice').hide();
});
});
/* Allows bullet points in to-do list in Template:User to toggle on and off. */
$(function() {
const bullets = document.querySelectorAll('.toggle-bullet');
const bulletChars = ['<span style="color: green">●</span>', '◦'];
const localStorageKey = 'userInfoboxBulletState';
bullets.forEach((bullet, index) => {
let currentIndex = localStorage.getItem(localStorageKey + index) === '0' ? 0 : 1; // Default to black if no stored state
bullet.innerHTML = bulletChars[currentIndex];
bullet.addEventListener('click', function() {
currentIndex = (currentIndex + 1) % bulletChars.length;
this.innerHTML = bulletChars[currentIndex];
localStorage.setItem(localStorageKey + index, currentIndex.toString());
});
});
});
mw.loader.using('mediawiki.user', function () {
$(document).ready(function () {
if (mw.user.isAnon()) {
// Hide dismiss buttons for anonymous users
$('.dismiss-button').hide();
return;
}
// Enable dismissible behavior for logged-in users
$('.maybe-dismissible').addClass('dismissible-notice');
$('.dismissible-notice').each(function () {
let $notice = $(this);
let dataId = $notice.data('id');
// Generate fallback ID based on page and content if not provided
if (!dataId) {
const page = mw.config.get('wgPageName');
const content = $notice.text().trim().replace(/\s+/g, ' ').slice(0, 100);
dataId = page + '-' + content;
$notice.attr('data-id', dataId);
}
// Check localStorage for dismissal
if (localStorage.getItem('dismissed-' + dataId)) {
$notice.hide();
}
// Set up dismiss button
$notice.find('.dismiss-button').click(function () {
localStorage.setItem('dismissed-' + dataId, '1');
$notice.hide();
});
});
});
});