Jump to content

User:Ahecht/Scripts/TemplateSearch.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Ahecht (talk | contribs) at 17:27, 14 March 2024 (debug). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*
Based on [[User:SiBr4/TemplateSearch.js]] by [[User:SiBr4]]

Allows using "TP:" and "{{" as shortcuts for "Template:" in the search box. See
[[Wikipedia:Village pump (proposals)/Archive 127#Prefix suggestion: TP: for Template:]].

Install by adding the following row to your [[Special:MyPage/common.js]] or [[Special:MyPage/skin.js]]:

mw.loader.load( "//en.wikipedia.org/w/index.php?title=User:Ahecht/Scripts/TemplateSearch.js&action=raw&ctype=text/javascript" ); // Linkback: [[:en:User:Ahecht/Scripts/TemplateSearch.js]]
<syntaxhighlight lang="javascript">
/**/

function addKeyupListener(searchboxes, searchattr) {
	searchboxes.forEach(function (searchbox) {
		if (searchbox.classList.contains("cdx-text-input__input") || searchbox.classList.contains("vector-search-box-input")) {
			searchbox.setAttribute("onkeyup",searchattr);
		}
	} );
}

var SearchRegexes = SearchRegexes || {"^(\\\{\\\{|[Tt][Pp]:)":"Template:","\\\}\\\}$":""};
var searchattr = "";
for (var search in SearchRegexes) {
  var replace = SearchRegexes[search];
  searchattr += "if(/"+search+"/.test(this.value)){this.value=this.value.replace(/"+search+"/,\""+replace+"\")};";
}
$.when( mw.loader.using( 'mediawiki.util' ), $.ready ).then(function() {
	setTimeout(function() {
		var searchboxes = document.getElementsByName("search");
		addKeyupListener(searchboxes, searchattr);
		var x = new MutationObserver(function (e) {
			searchboxes = document.getElementsByName("search");
			addKeyupListener(searchboxes, searchattr);
		});
		Array.prototype.forEach.call(document.getElementsByClassName('vector-search-box'), function (box) {
			x.observe(box, { subtree: true, childList: true, attributeFilter: 'onkeyup' });
		} );
	}, 1000);
} );
//</syntaxhighlight>