:en:User:Ahecht/Scripts/TemplateSearch.js

/*/*

Based on User:SiBr4/TemplateSearch.js by User:SiBr4, with added support for the Vector 2022 and Minerva Neue skins.

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, Special:MyPage/skin.js, or meta:Special:MyPage/global.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

  • /

function addSearchBoxChangeListener(searchboxes) {

searchboxes.forEach(function (searchbox) {

if (searchbox.classList.contains("cdx-text-input__input") || searchbox.classList.contains("search") || searchbox.id == "searchInput") {

searchbox.setAttribute("onkeyup","replaceBracesInSearch(this);");

searchbox.setAttribute("onpaste","replaceBracesInSearch(this);");

replaceBracesInSearch(searchbox);

}

} );

}

var SearchRegexes = {

"^(\\\{\\\{#invoke|[Mm][Dd]):":"Module:",

"^(\\\{\\\{|[Tt][Pp]:)":"Template:",

"\\\}\\\}$":"",

...SearchRegexes

};

function replaceBracesInSearch(box) {

for (var search in SearchRegexes) {

re = new RegExp(search);

if(re.test(box.value)) {

box.value=box.value.replace(re,SearchRegexes[search]);

box.dispatchEvent(new Event('input'));

}

}

}

$.when( mw.loader.using( 'mediawiki.util' ), $.ready ).then(function() {

addSearchBoxChangeListener(document.getElementsByName("search"));

var x = new MutationObserver(function () {

addSearchBoxChangeListener(document.getElementsByName("search"));

});

document.querySelectorAll(".search-box, .vector-search-box").forEach(function (box) {

x.observe(box, { subtree: true, childList: true });

} );

} );

//