MediaWiki:Common.js: Difference between revisions
From Hidden Mickey Wiki
No edit summary |
No edit summary Tag: Reverted |
||
| Line 91: | Line 91: | ||
}); | }); | ||
/* | /* Trimmed down checkbox/timestamp code */ | ||
/ | |||
(function () { | (function () { | ||
'use strict'; | 'use strict'; | ||
const PREFIX = 'mw-checkbox-ts:'; | |||
function formatTime(d) { | function formatTime(d) { | ||
return d.toLocaleTimeString('en-US', { | return d.toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit', second: '2-digit' }); | ||
} | } | ||
function | function tsBox(cb) { | ||
let box = cb.closest('tr')?.querySelector('.mw-ts-box'); | |||
if (!box) { | |||
box = document.createElement('span'); | |||
box.className = 'mw-ts-box'; | |||
(cb.closest('td,th')?.nextElementSibling || cb.parentNode).appendChild(box); | |||
} | } | ||
return box; | |||
} | } | ||
function | function save(cb) { | ||
localStorage.setItem(PREFIX + cb.id, JSON.stringify({ | |||
checked: cb.checked, | |||
timestamp: tsBox(cb).textContent | |||
})); | |||
checked: | |||
timestamp: tsBox | |||
} | |||
} | } | ||
function | function restore(cb) { | ||
const data = JSON.parse(localStorage.getItem(PREFIX + cb.id) || 'null'); | |||
if (!data) return; | |||
if (! | cb.checked = data.checked; | ||
tsBox(cb).textContent = data.timestamp || ''; | |||
cb.checked = | |||
} | } | ||
function | function restoreAll() { | ||
document.querySelectorAll('.mw-checkbox-ts[id]').forEach(restore); | |||
} | } | ||
document.addEventListener('change', e => { | |||
const cb = e.target; | |||
if (!cb.matches('.mw-checkbox-ts')) return; | |||
tsBox(cb).textContent = cb.checked ? formatTime(new Date()) : ''; | |||
if ( | save(cb); | ||
}); | |||
if (document.readyState === 'loading') { | if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', | document.addEventListener('DOMContentLoaded', restoreAll); | ||
} else { | } else { | ||
restoreAll(); | |||
} | } | ||
})(); | })(); | ||
Revision as of 13:36, 2 October 2025
/* Any JavaScript here will be loaded for all users on every page load. */
// JavaScript code to save checkbox state and restore it when the page loads
$(document).ready(function() {
// Function to save the state of checkboxes to localStorage
function saveCheckboxState() {
$('input[type="checkbox"]').each(function() {
localStorage.setItem($(this).attr('id'), $(this).prop('checked'));
});
}
// Function to load the state of checkboxes from localStorage
function loadCheckboxState() {
$('input[type="checkbox"]').each(function() {
const savedState = localStorage.getItem($(this).attr('id'));
if (savedState !== null) {
$(this).prop('checked', savedState === 'true');
}
});
}
// Load the saved checkbox state when the page is loaded
loadCheckboxState();
// Save the checkbox state whenever a checkbox is changed
$('input[type="checkbox"]').change(function() {
saveCheckboxState();
});
});
// Adjust the search box width
$(document).ready(function () {
$('#searchInput').css('width', '600px'); // Adjust width as needed
});
// Add Edit Source to user dropdown
mw.loader.using('mediawiki.util', function () {
mw.util.addPortletLink( 'p-personal', mw.util.getUrl( mw.config.get('wgPageName'), { action: 'edit' } ), 'Edit Source', 'pt-editsource' );
mw.util.addPortletLink( 'p-personal', mw.util.getUrl( mw.config.get('wgPageName'), { action: 'history' } ), 'View History', 'pt-history' );
mw.util.addPortletLink( 'p-personal', mw.util.getUrl( mw.config.get('wgPageName'), { action: 'delete' } ), 'Delete', 'pt-delete' );
var moveLink = document.getElementById('ca-move');
if (moveLink) {
var a = moveLink.querySelector('a');
mw.util.addPortletLink( 'p-personal', a.href, a.textContent.trim(), 'pt-move', a.title || 'Move this page' );
moveLink.remove();
}
mw.util.addPortletLink( 'p-personal', mw.util.getUrl( mw.config.get('wgPageName'), { action: 'protect' } ), 'Protect', 'pt-protect' );
mw.util.addPortletLink( 'p-personal', mw.util.getUrl( mw.config.get('wgPageName'), { action: 'unwatch' } ), 'Unwatch', 'pt-unwatch' );
var talkLink = document.getElementById('pt-mytalk');
talkLink.remove();
var whatLinksHereLink = document.getElementById('t-whatlinkshere');
if (whatLinksHereLink) {
var a = whatLinksHereLink.querySelector('a');
mw.util.addPortletLink( 'p-personal', a.href, a.textContent.trim(), 'pt-whatlinkshere', a.title || 'What Links Here' );
whatLinksHereLink.remove();
}
var relatedChangesLink = document.getElementById('t-recentchangeslinked');
if (relatedChangesLink) {
var a = relatedChangesLink.querySelector('a');
mw.util.addPortletLink( 'p-personal', a.href, a.textContent.trim(), 'pt-recentchanges', a.title || 'Recent Changes' );
relatedChangesLink.remove();
}
var uploadLink = document.getElementById('t-upload');
if (uploadLink) {
var a = uploadLink.querySelector('a');
mw.util.addPortletLink( 'p-personal', a.href, a.textContent.trim(), 'pt-upload', a.title || 'Upload File' );
uploadLink.remove();
}
var specialPagesLink = document.getElementById('t-specialpages');
if (specialPagesLink) {
var a = specialPagesLink.querySelector('a');
mw.util.addPortletLink( 'p-personal', a.href, a.textContent.trim(), 'pt-specialpages', a.title || 'Special Pages' );
specialPagesLink.remove();
}
var permanentLink = document.getElementById('t-permalink');
if (permanentLink) {
var a = permanentLink.querySelector('a');
mw.util.addPortletLink( 'p-personal', a.href, a.textContent.trim(), 'pt-permalink', a.title || 'Permanent Link' );
permanentLink.remove();
}
var pageInfoLink = document.getElementById('t-info');
if (pageInfoLink) {
var a = pageInfoLink.querySelector('a');
mw.util.addPortletLink( 'p-personal', a.href, a.textContent.trim(), 'pt-info', a.title || 'Page Info' );
pageInfoLink.remove();
}
var printLink = document.getElementById('t-print');
if (printLink) {
var a = printLink.querySelector('a');
printLink.remove();
}
});
/* Trimmed down checkbox/timestamp code */
(function () {
'use strict';
const PREFIX = 'mw-checkbox-ts:';
function formatTime(d) {
return d.toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit', second: '2-digit' });
}
function tsBox(cb) {
let box = cb.closest('tr')?.querySelector('.mw-ts-box');
if (!box) {
box = document.createElement('span');
box.className = 'mw-ts-box';
(cb.closest('td,th')?.nextElementSibling || cb.parentNode).appendChild(box);
}
return box;
}
function save(cb) {
localStorage.setItem(PREFIX + cb.id, JSON.stringify({
checked: cb.checked,
timestamp: tsBox(cb).textContent
}));
}
function restore(cb) {
const data = JSON.parse(localStorage.getItem(PREFIX + cb.id) || 'null');
if (!data) return;
cb.checked = data.checked;
tsBox(cb).textContent = data.timestamp || '';
}
function restoreAll() {
document.querySelectorAll('.mw-checkbox-ts[id]').forEach(restore);
}
document.addEventListener('change', e => {
const cb = e.target;
if (!cb.matches('.mw-checkbox-ts')) return;
tsBox(cb).textContent = cb.checked ? formatTime(new Date()) : '';
save(cb);
});
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', restoreAll);
} else {
restoreAll();
}
})();