User:DerHexer/numberofcategories.js
Jump to navigation
Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
Documentation for this user script can be added at User:DerHexer/numberofcategories. |
function newRequest()
{
try {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else {
return new ActiveXObject("MSXML2.XMLHTTP");
}
} catch (e) {
return false;
}
}
function getRequest(url, callback, params) {
var test = new RegExp(wgServer);
if(url.search(test) == -1) url = url + '&origin=' + encodeURIComponent(document.location.protocol + wgServer);
var request = newRequest() ;
if (request === null) {
return null;
}
request.open('GET', url, true);
request.onreadystatechange = function () {
if(request.readyState==4) {
callback(request, params);
}
};
request.setRequestHeader('Origin', document.location.protocol + wgServer);
request.withCredentials = true;
request.send(null);
}
function addinfo(req, currentimageold){
var numberofcategoriesvar = 0;
allcategories = req.responseXML.getElementsByTagName("cl");
for(j=0;j<allcategories.length;j++){
var attributehidden = allcategories[j].getAttribute('hidden');
if(attributehidden === '') { continue; } else { numberofcategoriesvar++; }
}
var addcategorynumber = document.createElement('span');
var EditTextNode = document.createTextNode('Number of categories: '+numberofcategoriesvar);
addcategorynumber.appendChild(EditTextNode);
currentimageold[0].parentNode.insertBefore( addcategorynumber, currentimageold[0].nextSibling );
}
function numberofcategories(){
var allimages = document.getElementById('mw-category-media');
if (allimages) allimages = allimages.getElementsByTagName('ul');
if (allimages) allimages = allimages[0].getElementsByTagName('li');
for(i=0;i<allimages.length;i++){
var currentimageold = allimages[i].getElementsByTagName('a');
if (currentimageold) currentimage = currentimageold[0].getAttribute('href').replace(/\/wiki\//,'');
var req = newRequest();
if (req) {
var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=parse&format=xml&prop=categories&page='+currentimage;
getRequest(url, addinfo, currentimageold);
}
}
}
if (wgCanonicalNamespace == "Category") addOnloadHook(numberofcategories);