MediaWiki:Common.js
From IUO Tome of Knowledge
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.
/* ================================ InsaneUO-inspired Common.js Enhancements for Timeless skin ================================ */ /** * Dark mode toggle * - Adds a button in the header * - Remembers user preference in localStorage */ (function () { const DARK_CLASS = "dark-mode"; function applyDarkMode(enabled) { if (enabled) { document.documentElement.classList.add(DARK_CLASS); } else { document.documentElement.classList.remove(DARK_CLASS); } } // Read preference const savedPref = localStorage.getItem("darkMode") === "true"; applyDarkMode(savedPref); // Add toggle button to header $(document).ready(function () { const $toggle = $('<a>') .attr("href", "#") .attr("id", "darkModeToggle") .addClass("iuo-cta") .text(savedPref ? "☾ Dark On" : "☀ Dark Off"); $("#mw-head .mw-shell").append($('<div id="iuo-top-cta">').append($toggle)); $toggle.on("click", function (e) { e.preventDefault(); const isDark = !$("html").hasClass(DARK_CLASS); applyDarkMode(isDark); localStorage.setItem("darkMode", isDark); $toggle.text(isDark ? "☾ Dark On" : "☀ Dark Off"); }); }); })(); /** * Collapsible sections * - Turns every h2 into a collapsible block */ (function () { $(document).ready(function () { $(".mw-body h2").each(function () { const $h2 = $(this); const $nextUntilH2 = $h2.nextUntil("h2"); if ($nextUntilH2.length > 0) { const $wrapper = $("<div>").addClass("collapsible-section"); $nextUntilH2.wrapAll($wrapper); const $btn = $('<span class="collapse-btn">[–]</span>'); $h2.append(" ").append($btn); $btn.on("click", function () { $wrapper.toggle(); $btn.text($wrapper.is(":visible") ? "[–]" : "[+]"); }); } }); }); })(); /** * Sticky "Edit" button * - Adds a floating edit shortcut on the right */ (function () { $(document).ready(function () { const $editLink = $("#ca-edit a").attr("href"); if ($editLink) { const $floatingBtn = $('<a>') .attr("href", $editLink) .addClass("button iuo-floating-edit") .text("✎ Edit"); $("body").append($floatingBtn); } }); })();