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

Content deleted Content added
debug
Tag: Reverted
var SearchRegexes should add to, not replace, the default values.
 
(30 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("vector-search-box-input") || 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:",
var skinScript;
"\\\}\\\}$":"",
for (var search in SearchRegexes) {
var replace = ...SearchRegexes[search];
};
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);
mw.loader.using( [ 'mw.config' ], function () {
if(re.test(box.value)) {
if (mw.config.get('skin') == 'vector-2022') {
box.value=box.value.replace(re,SearchRegexes[search]);
skinScript = "skins.vector.js";
box.dispatchEvent(new Event('input'));
} else if (mw.config.get('skin') == 'vector') {
} );
skinScript = 'skins.vector.legacy.js';
} else if (mw.config.get('skin') == 'monobook') {
skinScript = 'skins.monobook.scripts';
} else {
return;
}
}
 
$.when( mw.hookloader.using( 'wikipagemediawiki.contentutil' ), $.add(ready ).then(function () {
searchboxes = addSearchBoxChangeListener(document.getElementsByName("search"));
$(document).ready(function() {
var x = new MutationObserver(function (e) {
mw.loader.using( [skinScript], function() {
var searchboxes = addSearchBoxChangeListener(document.getElementsByName("search"));
});
addKeyupListener(searchboxes, searchattr);
document.querySelectorAll(".search-box, .vector-search-box").forEach(function (box) {
var x = new MutationObserver(function (e) {
x.observe(box, { subtree: true, childList: true });
searchboxes = document.getElementsByName("search");
addKeyupListener(searchboxes, searchattr);
});
x.observe(document.getElementById('searchform').parentElement, { childList: true });
} );
} );
} );
} );
//</syntaxhighlight></onlyinclude>