User:Nikki/LexemeForms-SearchPage.js

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)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* This adds links on the search results page to create new lexemes
   using the Lexeme Forms tool ([[Wikidata:Wikidata Lexeme Forms]]).
   It uses the languages in your Babel box to decide which templates to list.

   To use it, add the following line to your common.js:
   mw.loader.load("//www.wikidata.org/w/index.php?title=User:Nikki/LexemeForms-SearchPage.js&action=raw&ctype=text/javascript");
*/

(function () {
	if (!mw.config.get("wgIsSearchResultPage"))
		return;

	var templates = {
		"ast": ["asturian-noun-masculine", "asturian-noun-feminine"],
		"bn": [
			"bengali-noun-animate", "bengali-noun-inanimate-othervowels", "bengali-noun-inanimate-highvowels",
			"bengali-noun-inanimate-consonants", "bengali-adjective-tatsama-property", "bengali-adjective-others",
			"bengali-adverb", "bengali-verb", "bengali-verb-ano"
		],
		"br": ["breton-noun-without-mutation", "breton-noun-without-mutation-collective", "breton-adjective-without-mutation"],
		"cs": [
			"czech-noun-masculine-animate", "czech-noun-masculine-inanimate",
			"czech-noun-feminine", "czech-noun-neuter", "czech-adverb", "czech-adjective",
			"czech-verb-perfective"
		],
		"da": ["danish-noun-common", "danish-noun-neuter", "danish-verb"],
		"de": [
			"german-noun-masculine", "german-noun-feminine", "german-noun-neuter",
			"german-noun-neuter-toponym", "german-noun-pluraletantum", "german-verb", "german-adverb"
		],
		"en": ["english-noun", "english-adverb", "english-adjective", "english-verb"],
		"eo": ["esperanto-noun", "esperanto-adjective", "esperanto-verb"],
		"es": ["spanish-noun-masculine", "spanish-noun-feminine", "spanish-adjective", "spanish-verb"],
		"et": ["estonian-noun"],
		"eu": ["basque-verb", "basque-adjective-comparative"],
		"fa": ["persian-noun", "persian-verb"],
		"fi": ["finnish-noun"],
		"fr": ["french-noun-masculine", "french-noun-feminine", "french-adjective"],
		"he": ["hebrew-noun-masculine", "hebrew-noun-feminine"],
		"hy": ["armenian-noun", "armenian-noun-singulare-tantum"],
		"it": ["italian-noun-feminine", "italian-noun-masculine", "italian-adjective"],
		"ku": ["kurmanji-noun-feminine", "kurmanji-noun-masculine"],
		"la": ["latin-noun-masculine", "latin-noun-feminine", "latin-noun-neuter"],
		"ml": ["malayalam-noun"],
		"nb": ["bokmål-noun-masculine", "bokmål-noun-feminine", "bokmål-noun-neuter", "bokmål-adjective", "bokmål-verb"],
		"nl": ["dutch-neuter-noun", "dutch-masculine-noun", "dutch-feminine-noun", "dutch-fem2masc-noun"],
		"nn": ["nynorsk-noun-feminine", "nynorsk-noun-masculine", "nynorsk-noun-neuter"],
		"pl": ["polish-noun", "polish-noun-masculine-personal-with-depreciative-forms", "polish-noun-with-potential-plural-forms"],
		"pt": ["portuguese-verb"],
		"ru": ["russian-noun-masculine", "russian-noun-feminine", "russian-noun-neuter", "russian-noun-pluraletantum", "russian-adjective"],
		"sv": ["swedish-noun-common", "swedish-noun-neuter", "swedish-verb", "swedish-absolute-adjective"],
		"uk": ["ukrainian-noun-masculine", "ukrainian-noun-feminine", "ukrainian-noun-neuter", "ukrainian-noun-pluraletantum"],
	}

	var langs = mw.config.get("wgULSBabelLanguages");
	var search = $("#searchText input").val().replace(/^L:/, "").trim();
	var output = [];
	var float = document.dir == "rtl" ? "left" : "right";

	$.each(langs, function (i, lang) {
		if (!templates[lang])
			return;
	
		$.each(templates[lang], function (j, t) {
			output.push("<li><a href=\"https://lexeme-forms.toolforge.org/template/" + t + "/?form_representation=" + mw.html.escape(search) + "\">" + t + "</a></li>");
		});
	});
	
	if (output.length) {
		$(".mw-search-form-wrapper").after(
			"<div class=\"n-lexemeforms-searchpage\" style=\"float: " + float + "; max-width: 250px; padding:5px; margin-top: 5px; border:1px solid #c8ccd1\">"
			+ "<h3 style=\"padding: 0; margin: 0; font-size: 1em\">New lexeme via Lexeme Forms</h3>"
			+ "<ul>" + output.join("\n") + "</ul>"
			+ "</div>"
		);
	}

})();