MediaWiki:Gadget-topIcons.js: Difference between revisions

From RuneRealm Wiki
Jump to navigation Jump to search
Content added Content deleted
No edit summary
No edit summary
Line 11: Line 11:
if (namespace === -1 || namespace === 8) {
if (namespace === -1 || namespace === 8) {
var page = mw.config.get('wgPageName');
var page = mw.config.get('wgPageName');
// addLink('Discord');
addLink('Discord');
addLink('Discord', 'discord', page);
// addLink('Discord', 'discord', page);
// addLink('the RuneScape Wiki', 'rsw', page);
// addLink('the RuneScape Wiki', 'rsw', page);
// addLink('the RuneScape Classic Wiki', 'classicrsw', page);
// addLink('the RuneScape Classic Wiki', 'classicrsw', page);
Line 33: Line 33:
});
});
}
}
//function addLink(page) {
// var url = 'https://www.runerealm.org/discord';
// var title = 'Join our Discord to talk about wiki content or becoming an editor.';

// var link = mw.util.addPortletLink('p-namespaces', url, '',
// // no text - use background-image instead
// 'gadget-external-discord',
// // button id
// title // title text shown on hover
// );

// // for styling all links at once - addPortletLink only sets an id
// //$(link).addClass('gadget-external-icon');
//}
function addLink(page) {
function addLink(page) {
var url = 'https://www.runerealm.org/discord';
var url = mw.util.getUrl('discord:' + page);
var title = 'Join our Discord to talk about wiki content or becoming an editor.';
var title = 'Discord also has an article on ' + page + '.';


// Special and MediaWiki namespaces
if (namespace === -1 || namespace === 8) {
url += window.location.search; // include url parameters
title = 'Open this page on Discord.';
}
var link = mw.util.addPortletLink('p-namespaces', url, '',
var link = mw.util.addPortletLink('p-namespaces', url, '',
// no text - use background-image instead
// no text - use background-image instead
Line 46: Line 66:


// for styling all links at once - addPortletLink only sets an id
// for styling all links at once - addPortletLink only sets an id
//$(link).addClass('gadget-external-icon');
$(link).addClass('gadget-external-icon');
}
}

Revision as of 12:24, 20 October 2024

"use strict";

/**
 * Moves icons from [[Template:External]] to the top bar, next to "Article" and "Talk" tabs;
 * rewritten from scratch for modern MediaWiki
 */
(function ($, mw) {
  var namespace = mw.config.get('wgNamespaceNumber');

  // automatically show externals on Special and MediaWiki namespaces
  if (namespace === -1 || namespace === 8) {
    var page = mw.config.get('wgPageName');
    addLink('Discord');
    // addLink('Discord', 'discord', page);
    // addLink('the RuneScape Wiki', 'rsw', page);
    // addLink('the RuneScape Classic Wiki', 'classicrsw', page);
    // addLink('the Meta Weird Gloop Wiki', 'meta', page);
  } else {
    // make this work when "Show preview without reloading the page" is checked
    mw.hook('wikipage.content').add(function ($content) {
      if (!$content.has('.rs-external-header-links').length) return;

      // clear existing externals first so previewing doesn't add an infinite amount
      $('.gadget-external-icon').remove();

      // convert whatever [[Template:External]] gives us
      $('.rs-header-icon').each(function (index, icon) {
        addLink(icon.dataset.wikiname, icon.dataset.interwiki, icon.dataset.page);
      });

      // clean up
      $('.rs-external-header-links').remove();
    });
  }
  
  //function addLink(page) {
  //  var url = 'https://www.runerealm.org/discord';
  //  var title = 'Join our Discord to talk about wiki content or becoming an editor.';

  //  var link = mw.util.addPortletLink('p-namespaces', url, '',
  //  // no text - use background-image instead
  //  'gadget-external-discord',
  //  // button id
  //  title // title text shown on hover
  //  );

  //  // for styling all links at once - addPortletLink only sets an id
  //  //$(link).addClass('gadget-external-icon');
  //}
  
  function addLink(page) {
    var url = mw.util.getUrl('discord:' + page);
    var title = 'Discord also has an article on ' + page + '.';

    // Special and MediaWiki namespaces
    if (namespace === -1 || namespace === 8) {
      url += window.location.search; // include url parameters
      title = 'Open this page on Discord.';
    }
    var link = mw.util.addPortletLink('p-namespaces', url, '',
    // no text - use background-image instead
    'gadget-external-discord',
    // button id
    title // title text shown on hover
    );

    // for styling all links at once - addPortletLink only sets an id
    $(link).addClass('gadget-external-icon');
  }
  
  function addLink(wikiname, interwiki, page) {
    var url = mw.util.getUrl(interwiki + ':' + page);
    var title = wikiname + ' also has an article on ' + page + '.';

    // wikipedia links aren't forwarded - see [[Special:Interwiki]]
    if (interwiki === 'wikipedia') {
      url = '//en.wikipedia.org/wiki/' + encodeURIComponent(page);
    }

    // Special and MediaWiki namespaces
    if (namespace === -1 || namespace === 8) {
      url += window.location.search; // include url parameters
      title = 'Open this page on ' + wikiname + '.';
    }
    var link = mw.util.addPortletLink('p-namespaces', url, '',
    // no text - use background-image instead
    'gadget-external-' + interwiki,
    // button id
    title // title text shown on hover
    );

    // for styling all links at once - addPortletLink only sets an id
    $(link).addClass('gadget-external-icon');
  }
})(jQuery, mediaWiki);