মিডিয়াউইকি:Gadget-catfix.js
লক্ষ্য করুন: প্রকাশ করার পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।
- ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
- গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
- ইন্টারনেট এক্সপ্লোরার / এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন
- অপেরা: Ctrl-F5 টিপুন।
/*
* dependencies: mediawiki.Title
*/
jQuery(function () {
'use strict';
var wrapper;
// Apply only to pages in the Category namespace
// containing an element with the id "catfix".
// Set window.disableCatfix to true to prevent this script from running.
if (!(!window.disableCatfix
&& mw.config.get('wgNamespaceNumber') === 14
&& (wrapper = document.getElementById("catfix"))))
return;
// Get the language name and script wrapper.
var langName = wrapper.className.split("CATFIX-")[1];
wrapper = wrapper.getElementsByTagName("*")[0] || document.createElement("span");
var anchor = "";
if (langName && langName.length > 0)
anchor = langName;
function isEntry(namespaceName, pageName) {
// main, Talk, Citations, Reconstruction,
// Appendix if it starts with language name and "/"
return ["", "Talk", "Citations", "Reconstruction"].indexOf(namespaceName) != -1
|| (namespaceName == "Appendix"
&& pageName.slice(0, langName.length + 1) == langName + "/");
}
var formattedNamespaces = mw.config.get("wgFormattedNamespaces");
function wrapNode(node, wrapper) {
var parent = node.parentNode;
wrapper.appendChild(node);
parent.appendChild(wrapper);
}
// Process each link in the category listing.
jQuery("#mw-pages > .mw-content-ltr li > a, #newest-and-oldest-pages tr li > a")
.each(function () {
try {
var titleobj = new mw.Title(this.textContent || this.innerText);
var namespaceName = formattedNamespaces[titleobj.getNamespaceId()];
var pageName = titleobj.getMainText();
if (!isEntry(namespaceName, pageName))
return;
var textNodeToWrap;
// Choose the part of the link text to wrap
// - in mainspace, the whole link
// - in Talk and Citations, the part after the namespace prefix
// - in Reconstruction and Appendix, the part after the
// namespace prefix and language name
// Set window.catfixReconstructedAsterisk to true
// to replace "Reconstruction:langname/" with "*".
if (namespaceName === "") {
textNodeToWrap = this;
// Add the anchor in mainspace, not Reconstruction or Appendix,
// to match linking templates
// ([[Wiktionary:Grease pit/2019/December#Template:catfix shouldn't add an anchor to Reconstruction pages]]).
this.hash = anchor;
} else {
if (["Talk", "Citations"].indexOf(namespaceName) !== -1) {
textNodeToWrap = document.createTextNode(pageName);
$(this).empty()
.append(titleobj.getNamespacePrefix())
.append(textNodeToWrap);
} else if (["Reconstruction", "Appendix"].indexOf(namespaceName) !== -1) {
var split = pageName.split("/", 2);
if (split.length !== 2) {
throw new TypeError("Malformed title: " + pageName);
}
var langPrefix = split[0];
var prefix = window.catfixReconstructedAsterisk
? "" : titleobj.getNamespacePrefix() + langPrefix + "/";
textNodeToWrap = document.createTextNode(
(window.catfixReconstructedAsterisk ? "*" : "")
+ split[1]);
$(this).empty()
.append(prefix)
.append(textNodeToWrap);
}
}
wrapNode(textNodeToWrap, wrapper.cloneNode(false));
} catch (e) {
console.error(e);
}
});
});