MediaWiki:Gadget-Site.js: Difference between revisions

No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
var pageName = mw.config.get("wgPageName");
// This gadget contains code that will run unconditionally for everyone - both on mobile and desktop.
var ns = mw.config.get("wgNamespaceNumber");
// Consider instead adding your code to [[MediaWiki:Common.js]], [[MediaWiki:Mobile.js]], or a gadget.
// <nowiki>


/* ***** UpdateLanguageNameAndCode conditions ***** */
const pageName = mw.config.get("wgPageName");
var firstPara = document.querySelector(".mw-parser-output p:first-of-type");
const ns = mw.config.get("wgNamespaceNumber");
var titlePrefixes = [
"Module:languages/code_to_canonical_name",
"Module:languages/canonical_names",
"Module:etymology_languages/code_to_canonical_name",
"Module:etymology_languages/canonical_names",
"Module:families/code_to_canonical_name",
"Module:families/canonical_names",
"Module:scripts/code_to_canonical_name",
"Module:scripts/canonical_names",
"Module:Hani-sortkey/data/serialized"
];


if (firstPara) {
/* ***** Page-specific code ***** */
for (var i = 0; i < titlePrefixes.length; i++) {
switch (pageName) {
if (pageName.indexOf(titlePrefixes[i]) === 0) {
case "MediaWiki:Gadgets-definition": // [[MediaWiki:Gadgets-definition]]
importScript("MediaWiki:UpdateLanguageNameAndCode.js");
importScript("MediaWiki:BetterGadgetsDefinition.js"); // [[MediaWiki:BetterGadgetsDefinition.js]]
break;
break;
}
case "Special:Search": // [[Special:Search]]
}
importScript("MediaWiki:FindTrans.js"); // [[MediaWiki:FindTrans.js]]
break;
}
}


/* ***** Google snippet hiding ***** */
if (
var hideElems = document.querySelectorAll(".mw-editsection, #toc, #catlinks");
document.querySelector(".mw-parser-output p:first-of-type") && [
for (var k = 0; k < hideElems.length; k++) {
"Module:languages/code_to_canonical_name",
var el = hideElems[k];
"Module:languages/canonical_names",
el.setAttribute("data-nosnippet", "");
"Module:etymology_languages/code_to_canonical_name",
if (navigator.userAgent.toLowerCase().indexOf("googlebot") !== -1) {
"Module:etymology_languages/canonical_names",
el.style.display = "none";
"Module:families/code_to_canonical_name",
}
"Module:families/canonical_names",
}
"Module:scripts/code_to_canonical_name",
"Module:scripts/canonical_names",
].some(title => pageName.startsWith(title))
)
importScript("MediaWiki:UpdateLanguageNameAndCode.js"); // [[MediaWiki:UpdateLanguageNameAndCode.js]]


/* ***** Clean up "0 c" / "0 e" on category pages ***** */
/* ***** Clean up category pages showing "0 c" or "0 e", e.g. [[Category:Pages with entries]] ***** */
var catElems = document.querySelectorAll(".CategoryTreeItem bdi + span");
for (const elem of document.querySelectorAll(".CategoryTreeItem bdi + span"))
for (var m = 0; m < catElems.length; m++) {
elem.textContent = elem.textContent
var t = catElems[m];
.replace(/\b0 c, /, "")
t.textContent = t.textContent.replace("0 c, ", "").replace(", 0 e", "");
.replace(/, 0 [ep]\b/, "")
}
.replace(/\(0 c\)/, "(0 e)");


/* ***** new-section-redirect ***** */
/* ***** Template gadget for [[Module:UnitTests]]: e.g. [[Module:vi/testcases]] ***** */
var newSectionRedirect = document.querySelector("#new-section-redirect a");
for (const corner of document.querySelectorAll(".unit-tests .unit-tests-img-corner"))
var newSectionButton =
corner.addEventListener("click", () => corner.closest(".unit-tests").classList.toggle("unit-tests-hide-passing"));
document.querySelector("#ca-addsection a") ||
document.getElementById("ca-addsection"); // fallback for ":is()"


if (newSectionButton && newSectionRedirect) {
// </nowiki>
newSectionButton.href = newSectionRedirect.href;
}