User:Erutuon/scripts/catfix.js

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 (!(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.getNameText;				if (!isEntry(namespaceName, pageName))					return;				// Add the anchor if applicable.				if (["", "Reconstruction"].indexOf(namespaceName) !== -1)					this.hash = anchor;				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				if (namespaceName === "") {					textNodeToWrap = this;				} 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]; textNodeToWrap = document.createTextNode(split[1]); $(this).empty .append(titleobj.getNamespacePrefix + langPrefix + "/") .append(textNodeToWrap); }				}				wrapNode(textNodeToWrap, wrapper.cloneNode(false)); } catch (e) { console.error(e); }		}); });