Jump to content

MediaWiki:Common.js: Difference between revisions

From OnTrackWorld
Pin sidebar open by default for all visitors
Pin sidebar open by default for all visitors
Line 23: Line 23:
     if ( document.documentElement.classList.contains( 'vector-feature-main-menu-pinned-enabled' ) ) { return; }
     if ( document.documentElement.classList.contains( 'vector-feature-main-menu-pinned-enabled' ) ) { return; }
     var btn = document.querySelector( '#vector-main-menu-dropdown .vector-pinnable-header-pin-button' );
     var btn = document.querySelector( '#vector-main-menu-dropdown .vector-pinnable-header-pin-button' );
     if ( btn ) {
    /* The button exists in the DOM from initial render, but Vector wires up its click
      btn.click();
      handler slightly later -- clicking too early is a silent no-op. So keep retrying
      return;
      (re-checking the pinned class above) until it actually takes, not just until the
    }
      element exists. */
    /* Vector's own JS builds this button slightly after "site" runs; retry briefly. */
     if ( btn ) { btn.click(); }
     if ( attemptsLeft > 0 ) {
     if ( attemptsLeft > 0 ) {
       setTimeout( function () { pinMainMenu( attemptsLeft - 1 ); }, 150 );
       setTimeout( function () { pinMainMenu( attemptsLeft - 1 ); }, 250 );
     }
     }
   }
   }
   function start() { pinMainMenu( 20 ); }
   function start() { pinMainMenu( 40 ); }
   if ( document.readyState === 'loading' ) {
   if ( document.readyState === 'loading' ) {
     document.addEventListener( 'DOMContentLoaded', start );
     document.addEventListener( 'DOMContentLoaded', start );

Revision as of 19:28, 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 () {
  function pinMainMenu( attemptsLeft ) {
    if ( window.innerWidth < 1000 ) { return; }
    if ( document.documentElement.classList.contains( 'vector-feature-main-menu-pinned-enabled' ) ) { return; }
    var btn = document.querySelector( '#vector-main-menu-dropdown .vector-pinnable-header-pin-button' );
    /* The button exists in the DOM from initial render, but Vector wires up its click
       handler slightly later -- clicking too early is a silent no-op. So keep retrying
       (re-checking the pinned class above) until it actually takes, not just until the
       element exists. */
    if ( btn ) { btn.click(); }
    if ( attemptsLeft > 0 ) {
      setTimeout( function () { pinMainMenu( attemptsLeft - 1 ); }, 250 );
    }
  }
  function start() { pinMainMenu( 40 ); }
  if ( document.readyState === 'loading' ) {
    document.addEventListener( 'DOMContentLoaded', start );
  } else {
    start();
  }
}() );