Jump to content

MediaWiki:Common.js: Difference between revisions

From λ LUMENWARD
No edit summary
No edit summary
Line 1: Line 1:
/* =========================================================
/* =========================================================
   Lumenward: Add a top-level GitHub link in the header (Vector 2022)
   Lumenward: Top-level header links (Vector 2022)
  - GitHub + Discord next to each other
  - Not in dropdown
   ========================================================= */
   ========================================================= */


mw.loader.using(['mediawiki.util'], function () {
mw.loader.using(['mediawiki.util'], function () {
  var url = 'https://github.com/YOUR_GITHUB_ORG_OR_REPO'; // <-- CHANGE THIS
  var text = 'GitHub';


   // Vector 2022 header right area (try a few known containers)
   // ====== CHANGE THESE ======
  var GITHUB_URL  = 'https://github.com/YOUR_GITHUB_ORG_OR_REPO';
  var DISCORD_URL = 'https://discord.gg/YOUR_INVITE_CODE';
  // ==========================
 
  // Find a stable header container (prefer right side, fallback to header)
   var targets = [
   var targets = [
     document.querySelector('.mw-header .vector-header-end'),
     document.querySelector('.mw-header .vector-header-end'),
Line 17: Line 22:
   if (!targets.length) return;
   if (!targets.length) return;


   // Avoid duplicates if cache reloads
   // Remove any existing injected links to avoid duplicates
   if (document.getElementById('lumenward-github-link')) return;
   ['lumenward-github-link', 'lumenward-discord-link'].forEach(function (id) {
    var el = document.getElementById(id);
    if (el) el.remove();
  });
 
  function makeLink(id, href, label) {
    var a = document.createElement('a');
    a.id = id;
    a.href = href;
    a.textContent = label;
    a.target = '_blank';
    a.rel = 'noopener';
    a.style.marginRight = '12px';
    a.style.fontWeight = '600';
    a.style.textDecoration = 'none';
    a.style.whiteSpace = 'nowrap';
    return a;
  }


   var a = document.createElement('a');
   var github = makeLink('lumenward-github-link', GITHUB_URL, 'GitHub');
  a.id = 'lumenward-github-link';
   var discord = makeLink('lumenward-discord-link', DISCORD_URL, 'Discord');
  a.href = url;
  a.textContent = text;
  a.target = '_blank';
   a.rel = 'noopener';
  a.style.marginRight = '12px';
  a.style.fontWeight = '600';
  a.style.textDecoration = 'none';


   // Insert before the user menu area if possible; otherwise append to header end
   // Insert both at the beginning of the chosen header container
   targets[0].insertBefore(a, targets[0].firstChild);
  // (discord first-child, github before it so order becomes GitHub then Discord)
   targets[0].insertBefore(discord, targets[0].firstChild);
  targets[0].insertBefore(github, discord);
});
});

Revision as of 10:11, 14 December 2025

/* =========================================================
   Lumenward: Top-level header links (Vector 2022)
   - GitHub + Discord next to each other
   - Not in dropdown
   ========================================================= */

mw.loader.using(['mediawiki.util'], function () {

  // ====== CHANGE THESE ======
  var GITHUB_URL  = 'https://github.com/YOUR_GITHUB_ORG_OR_REPO';
  var DISCORD_URL = 'https://discord.gg/YOUR_INVITE_CODE';
  // ==========================

  // Find a stable header container (prefer right side, fallback to header)
  var targets = [
    document.querySelector('.mw-header .vector-header-end'),
    document.querySelector('.mw-header .mw-header-user'),
    document.querySelector('.mw-header .vector-user-links'),
    document.querySelector('.mw-header')
  ].filter(Boolean);

  if (!targets.length) return;

  // Remove any existing injected links to avoid duplicates
  ['lumenward-github-link', 'lumenward-discord-link'].forEach(function (id) {
    var el = document.getElementById(id);
    if (el) el.remove();
  });

  function makeLink(id, href, label) {
    var a = document.createElement('a');
    a.id = id;
    a.href = href;
    a.textContent = label;
    a.target = '_blank';
    a.rel = 'noopener';
    a.style.marginRight = '12px';
    a.style.fontWeight = '600';
    a.style.textDecoration = 'none';
    a.style.whiteSpace = 'nowrap';
    return a;
  }

  var github = makeLink('lumenward-github-link', GITHUB_URL, 'GitHub');
  var discord = makeLink('lumenward-discord-link', DISCORD_URL, 'Discord');

  // Insert both at the beginning of the chosen header container
  // (discord first-child, github before it so order becomes GitHub then Discord)
  targets[0].insertBefore(discord, targets[0].firstChild);
  targets[0].insertBefore(github, discord);
});