Tip of the day
Collectibles you find give 1 extra achievement point per item!

MediaWiki:Gadget-HideTranslatedSearchResults.js

From Walkscape Walkthrough
Revision as of 10:12, 14 March 2026 by Bonez565 (talk | contribs) (Created page with "(function () { 'use strict'; // Only run on Special:Search if (mw.config.get('wgCanonicalSpecialPageName') !== 'Search') { return; } // Match translated subpages like: // Page/en // Page/fr // Page/it // Page/pt-br // Page/zh-hans // // Does NOT match normal subpages like: // Guide/Mining // Item/Source // // Language code rule here: // /xx // /xxx // /xx-yyy // /xxx-yyyy var translatedSuffixRegex = /\/[a-z]{2,3}(?:-[a-z0-9]{2,8})?$/i;...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
(function () {
	'use strict';

	// Only run on Special:Search
	if (mw.config.get('wgCanonicalSpecialPageName') !== 'Search') {
		return;
	}

	// Match translated subpages like:
	// Page/en
	// Page/fr
	// Page/it
	// Page/pt-br
	// Page/zh-hans
	//
	// Does NOT match normal subpages like:
	// Guide/Mining
	// Item/Source
	//
	// Language code rule here:
	//   /xx
	//   /xxx
	//   /xx-yyy
	//   /xxx-yyyy
	var translatedSuffixRegex = /\/[a-z]{2,3}(?:-[a-z0-9]{2,8})?$/i;

	function getResultTitle($result) {
		// Standard search result title link
		var $headingLink = $result.find('.mw-search-result-heading a').first();

		if ($headingLink.length) {
			return ($headingLink.attr('title') || $headingLink.text() || '').trim();
		}

		return '';
	}

	function filterSearchResults() {
		var hiddenCount = 0;

		$('.mw-search-result').each(function () {
			var $result = $(this);
			var title = getResultTitle($result);

			if (!title) {
				return;
			}

			if (translatedSuffixRegex.test(title)) {
				$result.hide();
				hiddenCount++;
			}
		});

		updateNotice(hiddenCount);
	}

	function updateNotice(hiddenCount) {
		var noticeId = 'translated-subpages-filter-notice';
		var $existing = $('#' + noticeId);

		if (!hiddenCount) {
			$existing.remove();
			return;
		}

		var message =
			hiddenCount +
			' translated subpage' +
			(hiddenCount === 1 ? '' : 's') +
			' hidden from search results.';

		if ($existing.length) {
			$existing.text(message);
			return;
		}

		$('<div>')
			.attr('id', noticeId)
			.css({
				margin: '0 0 1em 0',
				padding: '0.75em 1em',
				border: '1px solid #c8ccd1',
				background: '#f8f9fa'
			})
			.text(message)
			.insertBefore('.searchresults, .mw-search-results');
	}

	function observeChanges() {
		var target = document.querySelector('.mw-search-results') ||
		             document.querySelector('.searchresults');

		if (!target || !window.MutationObserver) {
			return;
		}

		var observer = new MutationObserver(function () {
			filterSearchResults();
		});

		observer.observe(target, {
			childList: true,
			subtree: true
		});
	}

	$(function () {
		filterSearchResults();
		observeChanges();
	});
}());