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

Content deleted Content added
Undid revision 1213710423 by Ahecht (talk)
var SearchRegexes should add to, not replace, the default values.
 
(18 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 addKeyupListeneraddSearchBoxChangeListener(searchboxes, searchattr) {
searchboxes.forEach(function (searchbox) {
if (searchbox.classList.contains("cdx-text-input__input") || searchbox.classList.contains("search") || searchbox.id == "searchInput") {
searchbox.setAttribute("onkeyup",searchattr"replaceBracesInSearch(this);");
searchbox.setAttribute("onpaste","replaceBracesInSearch(this);");
replaceBracesInSearch(searchbox);
}
} );
}
 
var SearchRegexes = SearchRegexes || {"^(\\\{\\\{|[Tt][Pp]:)":"Template:","\\\}\\\}$":""};
"^(\\\{\\\{#invoke|[Mm][Dd]):":"Module:",
var searchattr = "";
"^(\\\{\\\{|[Tt][Pp]:)":"Template:",
for (var search in SearchRegexes) {
"\\\}\\\}$":"",
var replace = SearchRegexes[search];
...SearchRegexes
searchattr += "if(/"+search+"/.test(this.value)){this.value=this.value.replace(/"+search+"/,\""+replace+"\")};";
};
function replaceBracesInSearch(box) {
for (var search in SearchRegexes) {
re = new RegExp(search);
if(re.test(box.value)) {
var replace box.value= box.value.replace(re,SearchRegexes[search]);
box.dispatchEvent(new Event('input'));
}
}
}
 
$.when( mw.loader.using( 'mediawiki.util' ), $.ready ).then(function() {
var searchboxes = addSearchBoxChangeListener(document.getElementsByName("search"));
var x = new MutationObserver(function (e) {
addKeyupListener(searchboxes, searchattr);
searchboxes = addSearchBoxChangeListener(document.getElementsByName("search"));
var x = new MutationObserver(function (e) {
searchboxes = document.getElementsByName("search");
addKeyupListener(searchboxes, searchattr);
});
Array.prototype.forEach.call(document.getElementsByClassNamequerySelectorAll('".search-box, .vector-search-box'"), .forEach(function (box) {
x.observe(box, { subtree: true, childList: true });
} );
} );
//</syntaxhighlight></onlyinclude>