Jump to content

MediaWiki:Common.js: Difference between revisions

From OnTrackWorld
Pin sidebar open by default for all visitors
blanking for simpler fix test
Tag: Blanking
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
/* 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() {
    attempts++;
    /* window.innerWidth is checked fresh every tick, not once up front -- an early
      tick reading a not-yet-settled viewport must not permanently abandon the loop.
      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 ( window.innerWidth >= 1000 &&
      !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 ( window.console && window.console.log ) {
        console.log( '[otw-pin] tick ' + attempts + ': width=' + window.innerWidth + ' btnFound=' + ( !!btn ) );
      }
    }
    if ( attempts < MAX_ATTEMPTS ) {
      setTimeout( tick, 250 );
    }
  }
  if ( document.readyState === 'loading' ) {
    document.addEventListener( 'DOMContentLoaded', tick );
  } else {
    tick();
  }
}() );

Latest revision as of 20:25, 14 September 2026