Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// Fold Archives
// Author: Chlod
// Version: 1.0.0-REL
// Makes archived threads foldable to reduce taken screen space.
mw.hook('wikipage.content').add(function() {
// Prevent from running twice.
if (document.body.getAttribute("data-archives-folded") != null)
return;
document.body.toggleAttribute("data-archives-folded", true);
var prefix = window.folda_prefix || "folda-";
var maxHeight = window.folda_maxHeight || "50vh";
var fadeGradient = window.folda_gradient || (window.folda_dark ? "linear-gradient(to bottom, transparent 70%, rgba(0,0,0,0.3) 90%, rgba(0,0,0,0.75))" : "linear-gradient(to bottom, transparent 75%, white 95%, white)")
var archivedElements = document.querySelectorAll(".mw-body-content .boilerplate.archived");
mw.util.addCSS(`.${prefix}collapsed { height: ${maxHeight}; overflow: hidden; position: relative; }`);
mw.util.addCSS(`.${prefix}collapsed .${prefix}expander { user-select: none; display: block; bottom: 0; left: 0; position: absolute; width: 100%; height: 100%; background: ${fadeGradient}; color: black; text-align: center; padding-top: calc(${maxHeight} - 1.5rem); line-height: 1.5rem; font-style: italic; box-sizing: border-box; cursor: pointer; }`);
archivedElements.forEach(function (element) {
// Prevent collapsing already-small archives.
var oldHeight = element.style.height;
var oldHeightValue = element.clientHeight;
element.style.height = maxHeight;
var newHeightValue = element.clientHeight;
element.style.height = "";
if (newHeightValue > oldHeightValue) {
// We're only going to make it bigger. Give up here.
return;
}
element.classList.add(`${prefix}collapsed`);
var expander = document.createElement("div");
expander.classList.add(`${prefix}expander`);
expander.innerText = "Click to expand";
expander.onclick = () => {
expander.parentElement.classList.remove(`${prefix}collapsed`);
expander.parentElement.classList.add(`${prefix}expanded`);
expander.parentElement.removeChild(expander);
}
element.appendChild(expander);
});
// Scroll back to anchor if available due to scrolling changes
if (mw.config.get("wgNamespaceNumber") !== -1 && window.location.hash && window.location.hash.length > 0)
document.getElementById(window.location.hash.substr(1)).scrollIntoView();
});