MediaWiki:Gadget-topIcons.js

This is an old revision of this page, as edited by Alex (talk | contribs) at 22:57, 11 October 2024 (Created page with "→‎* * Moves icons from [[Template:External]] to the top bar, next to "Article" and "Talk" tabs; * rewritten from scratch for modern MediaWiki: (function ($, mw) { let namespace = mw.config.get('wgNamespaceNumber'); // automatically show externals on Special and MediaWiki namespaces if (namespace === -1 || namespace === 8) { let page = mw.config.get('wgPageName'); addLink('the RuneScape Wiki', 'rsw', page); addLink('the RuneScape Classic Wiki', 'classicrsw..."). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

After saving, you may need to bypass your browser's cache to see the changes. For further information, see Wikipedia:Bypass your cache.

  • In most Windows and Linux browsers: Hold down Ctrl and press F5.
  • In Safari: Hold down ⇧ Shift and click the Reload button.
  • In Chrome and Firefox for Mac: Hold down both ⌘ Cmd+⇧ Shift and press R.
/**
 * Moves icons from [[Template:External]] to the top bar, next to "Article" and "Talk" tabs;
 * rewritten from scratch for modern MediaWiki
 */
(function ($, mw) {
	let namespace = mw.config.get('wgNamespaceNumber');

	// automatically show externals on Special and MediaWiki namespaces
	if (namespace === -1 || namespace === 8) {
		let page = mw.config.get('wgPageName');

		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(wikiname, interwiki, page) {
		let url = mw.util.getUrl(interwiki + ':' + page);
		let 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 + '.';
		}

		let 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);