User:Erutuon/scripts/missingEntries.js
< User:Erutuon | scripts
Note: You may have to bypass your browser’s cache to see the changes. In addition, after saving a sitewide CSS file such as MediaWiki:Common.css, it will take 5-10 minutes before the changes take effect, even if you clear your cache.
- Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
- Konqueror and Chrome: click Reload or press F5;
- Opera: clear the cache in Tools → Preferences;
- Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.
- This script lacks a documentation subpage. Please create it.
- Useful links: root page • root page’s subpages • links • redirects • your own
/*
* Script for more quickly hiding lists of entries in the "Sources" column of
* pages linked from [[User:Jberkel/lists/missing/20190401]].
*
* Replacement for jQuery.makeCollapsible ([[mw:Manual:Collapsible elements]]),
* which is very slow.
*/
$(function () {
const linkedFrom = document.querySelectorAll('.redlink-list .linked-from');
if (linkedFrom.length === 0)
return;
const collapseText = '[Collapse]', expandText = '[Expand]';
const initiallyShown = window.showMissingEntries;
function makeButton (collapsible) {
const button = document.createElement('div');
button.style.float = 'right';
button.style.cursor = 'pointer';
button.style.color = 'blue';
button.style.display = 'inline-block';
let shown = typeof initiallyShown == 'boolean' ? initiallyShown : false;
button.textContent = shown ? collapseText : expandText;
collapsible.style.display = shown ? null : 'none';
button.addEventListener('click', () => {
shown = !shown;
collapsible.style.display = shown ? null : 'none';
button.textContent = shown ? collapseText : expandText;
});
return button;
}
function moveChildNodes (origin, destination) {
const childNodes = origin.childNodes;
let child;
while ((child = childNodes[0]))
destination.appendChild(child);
}
function collapsify (parent) {
const collapsible = document.createElement("div");
moveChildNodes(parent, collapsible);
button = makeButton(collapsible);
parent.appendChild(button);
parent.appendChild(collapsible);
}
Array.from(linkedFrom).forEach(collapsify);
});