MediaWiki:Common.js: Difference between revisions
Pin sidebar open by default for all visitors |
Pin sidebar open by default for all visitors |
||
| Line 19: | Line 19: | ||
viewports, where a permanently-open sidebar would crowd out the page content. */ | viewports, where a permanently-open sidebar would crowd out the page content. */ | ||
( function () { | ( function () { | ||
function | var attempts = 0; | ||
var MAX_ATTEMPTS = 32; /* ~8s of enforcement, in case Vector's own later init resets it */ | |||
function tick() { | |||
if ( window.innerWidth < 1000 ) { return; } | if ( window.innerWidth < 1000 ) { return; } | ||
if ( document.documentElement.classList.contains( 'vector-feature-main-menu-pinned-enabled' ) ) { | attempts++; | ||
/* Re-check and re-click every tick rather than stopping at first success: the | |||
button exists in the DOM from initial render but Vector wires up its click | |||
handler, and re-applies its own pin/unpin state from the (empty, for a fresh | |||
visitor) saved preference, slightly later -- an early click can silently no-op | |||
or get overwritten right after. Re-asserting for a few seconds outlasts that. */ | |||
if ( !document.documentElement.classList.contains( 'vector-feature-main-menu-pinned-enabled' ) ) { | |||
if ( | var btn = document.querySelector( '#vector-main-menu-dropdown .vector-pinnable-header-pin-button' ); | ||
setTimeout( | if ( btn ) { btn.click(); } | ||
} | |||
if ( attempts < MAX_ATTEMPTS ) { | |||
setTimeout( tick, 250 ); | |||
} | } | ||
} | } | ||
if ( document.readyState === 'loading' ) { | if ( document.readyState === 'loading' ) { | ||
document.addEventListener( 'DOMContentLoaded', | document.addEventListener( 'DOMContentLoaded', tick ); | ||
} else { | } else { | ||
tick(); | |||
} | } | ||
}() ); | }() ); | ||
Revision as of 19:30, 14 September 2026
/* OPTIONAL. Append to MediaWiki:Common.js only if you want inline highlight-and-annotate
on long-form pages (white paper, book chapters). Loads the Hypothesis client on pages
tagged with the "Annotate" category. Readers need a free Hypothesis account to annotate;
anyone can read annotations. Remove this block to turn it off. */
( function () {
if ( mw.config.get( 'wgCategories' ).indexOf( 'Annotate' ) === -1 ) { return; }
if ( mw.config.get( 'wgAction' ) !== 'view' ) { return; }
var s = document.createElement( 'script' );
s.src = 'https://hypothes.is/embed.js';
s.async = true;
document.head.appendChild( s );
}() );
/* ---- Pin the sidebar (Main menu) open by default for every visitor -----------------
Vector 2022 only shows Main menu as a permanent left column once a user pins it
(client preference, saved per-account/browser). This triggers that same built-in
pin action automatically on every page load, so it defaults to open for everyone
instead of only whoever has pinned it themselves. Skipped on narrow/mobile
viewports, where a permanently-open sidebar would crowd out the page content. */
( function () {
var attempts = 0;
var MAX_ATTEMPTS = 32; /* ~8s of enforcement, in case Vector's own later init resets it */
function tick() {
if ( window.innerWidth < 1000 ) { return; }
attempts++;
/* Re-check and re-click every tick rather than stopping at first success: the
button exists in the DOM from initial render but Vector wires up its click
handler, and re-applies its own pin/unpin state from the (empty, for a fresh
visitor) saved preference, slightly later -- an early click can silently no-op
or get overwritten right after. Re-asserting for a few seconds outlasts that. */
if ( !document.documentElement.classList.contains( 'vector-feature-main-menu-pinned-enabled' ) ) {
var btn = document.querySelector( '#vector-main-menu-dropdown .vector-pinnable-header-pin-button' );
if ( btn ) { btn.click(); }
}
if ( attempts < MAX_ATTEMPTS ) {
setTimeout( tick, 250 );
}
}
if ( document.readyState === 'loading' ) {
document.addEventListener( 'DOMContentLoaded', tick );
} else {
tick();
}
}() );