MediaWiki:Common.js
From PC Gaming Shelter
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. */
document.addEventListener('DOMContentLoaded', infoboxEvenOdd);
document.addEventListener('DOMContentLoaded', managePersonalIconVis);
document.addEventListener('DOMContentLoaded', sortPFCheckboxes);
window.addEventListener('resize', infoboxEvenOdd);
function managePersonalIconVis(){
if (mw.config.get('wgUserId') !== null) {
const personal = document.getElementById('p-personal');
document.querySelector('#pane4').appendChild(personal);
} else {
const personalIcon = document.querySelector('.personal-tools-icon');
if (personalIcon) {
personalIcon.classList.add('d-none');
}
}
}
function sortPFCheckboxes() {
const containers = document.querySelectorAll(".checkboxesSpan");
containers.forEach(container => {
const labels = Array.from(container.querySelectorAll("label.checkboxLabel"));
const getText = el =>
(el.querySelector("t").textContent || el.textContent).trim();
labels.sort((a, b) =>
getText(a).localeCompare(getText(b), undefined, {
numeric: true,
sensitivity: "base"
})
);
labels.forEach(label => container.appendChild(label));
});
}
function infoboxEvenOdd() {
const container = document.querySelector('.infobox');
if (!container) return;
const items = Array.from(container.children).filter(
el => el.nodeType === Node.ELEMENT_NODE
);
items.sort((a, b) =>
a.getBoundingClientRect().top - b.getBoundingClientRect().top
);
items.forEach((el, idx) => {
el.classList.remove('even', 'odd');
el.classList.add(idx % 2 === 0 ? 'even' : 'odd');
});
}
