MediaWiki:Common.js
MediaWiki interface page
More actions
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. */
if (document.readyState === 'complete') {
bg3wikiCommonJsMain();
} else {
window.addEventListener('load', bg3wikiCommonJsMain);
}
function bg3wikiCommonJsMain() {
if (location.hostname === 'old.bg3.wiki') {
setupBackupBanner();
}
}
function setupBackupBanner() {
const sn = document.getElementById('siteNotice');
sn.innerHTML = `
<div style="text-align: center;
background: black;
font-weight: bold;
font-size: 120%;
padding: 1em;
margin-bottom: 1em">
<p>This is a backup page. Use it if the main wiki is down.</p>
<p>Edits made here will be lost. Use the live version:</p>
<p><a id="bg3wiki-canonical-url"></a></p>
</div>
` + sn.innerHTML;
const a = document.getElementById('bg3wiki-canonical-url');
a.href = 'https://bg3.wiki' + location.pathname + location.search;
a.appendChild(document.createTextNode(a.href));
}
new MutationObserver(function(mutList, _obs) {
mutList.forEach(m => m.addedNodes.forEach(n => {
if (!n.classList) return;
if (n.classList.contains("mwe-popups"))
bg3wikiFixMwePopups(n);
else if (n.classList.contains("ui-draggable"))
bg3wikiFixUiDraggable(n);
}));
}).observe(document.body, { childList: true });
// Fix for Extension:Popups because we mess with body width.
function bg3wikiFixMwePopups(node) {
const style = node.style;
const offset = window.scrollY + "px";
style.position = 'fixed';
if (style.top != 'auto') {
style.top = "calc(" + style.top + " - " + offset + ")";
}
if (style.bottom != 'auto') {
style.bottom = "calc(" + style.bottom + " + " + offset + ")";
}
}
// Fix for draggables because we mess with body width.
function bg3wikiFixUiDraggable(node) {
node.style.position = 'fixed';
node.style.left = ((window.innerWidth - node.offsetWidth) / 2) + "px";
node.style.top = ((window.innerHeight - node.offsetHeight) / 2) + "px";
}
/**
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
*
* Maintainers: TheDJ. See https://en.wikipedia.org/wiki/MediaWiki:Common.js for more information.
*/
function mwCollapsibleSetup( $collapsibleContent ) {
var $element,
$toggle,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function ( index, element ) {
$element = $( element );
if ( $element.hasClass( 'collapsible' ) ) {
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
}
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
$element.data( 'mw-collapsible' ).collapse();
} else if ( $element.hasClass( 'innercollapse' ) ) {
if ( $element.parents( '.outercollapse' ).length > 0 ) {
$element.data( 'mw-collapsible' ).collapse();
}
}
// because of colored backgrounds, style the link in the text color
// to ensure accessible contrast
$toggle = $element.find( '.mw-collapsible-toggle' );
if ( $toggle.length ) {
// Make the toggle inherit text color (Updated for T333357 2023-04-29)
if ( $toggle.parent()[ 0 ].style.color ) {
$toggle.css( 'color', 'inherit' );
$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
}
}
} );
}
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );