User:Ahecht/Scripts/TemplateSearch.js: Difference between revisions

Content deleted Content added
Undid revision 1213907655 by Ahecht (talk)
var SearchRegexes should add to, not replace, the default values.
 
(10 intermediate revisions by the same user not shown)
Line 1:
/*<onlyinclude><syntaxhighlight lang="javascript">/*
/*
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/skinglobal.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 addSearchBoxChangeListener(searchboxes) {
Line 15 ⟶ 14:
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);
}
Line 20:
}
 
var SearchRegexes = SearchRegexes || {"^(\\\{\\\{|[Tt][Pp]:)":"Template:","\\\}\\\}$":""};
"^(\\\{\\\{#invoke|[Mm][Dd]):":"Module:",
"^(\\\{\\\{|[Tt][Pp]:)":"Template:",
"\\\}\\\}$":"",
...SearchRegexes
};
function replaceBracesInSearch(box) {
for (var search in SearchRegexes) {
re = new RegExp(search);
var replace = SearchRegexes[search];
if(re.test(box.value)) {
box.value=box.value.replace(re,replaceSearchRegexes[search]);
box.dispatchEvent(new Event('input'));
}
}
Line 33 ⟶ 38:
$.when( mw.loader.using( 'mediawiki.util' ), $.ready ).then(function() {
addSearchBoxChangeListener(document.getElementsByName("search"));
var x = new MutationObserver(function (e) {
addSearchBoxChangeListener(document.getElementsByName("search"));
});
Line 40 ⟶ 45:
} );
} );
//</syntaxhighlight></onlyinclude>