Gebruiker:Rots61/Gadget-EditCount.js

Uit Wikikids
Naar navigatie springen Naar zoeken springen

Let op! Nadat je de veranderingen hebt opgeslagen, moet je de cache van je browser nog legen om ze daadwerkelijk te zien.

Mozilla (incl. Firefox) ctrl-shift-r
IE ctrl-f5
Opera f5
Safari cmd-r
Konqueror f5
/**
 * EDITCOUNT2.JS
 *
 * Features: [[WikiKids:EditCount]]
 * Credits: [[WikiKids:EditCount#Dank]]
 * Made by [[User:Rots61]] 
**/

// Create a mw.Api instance to make API requests easier.
var api = new mw.Api();

function getEC() {
		// Request the user's information from the API.
		var ECgebruikersnaam = mw.util.getParamValue( 'user' );
		api.get( {
		    action: 'query',
		    list: 'users',
		    usprop: 'blockinfo|editcount|gender',
		    ususers: ECgebruikersnaam,
		} ).done( function ( query ) {
			// When response arrives extract the information we need.
			if(!query.query) { return; } // Suggested by Gary King to avoid JS errors --PS 2010-08-25
			query = query.query;
			var user, invalid, missing, editcount, blocked;
			try {
				user = query.users[0];
				invalid = typeof user.invalid != "undefined";
				missing = typeof user.missing != "undefined";
				editcount = (typeof user.editcount == "number") ? user.editcount : null;
				blocked = typeof user.blockedby != "undefined";
			 } catch(e) {
				return; // Not much to do if the server is returning an error (e.g. if the username is malformed).
			}
		 // Format the information for on-screen display
			var statusText = "";

			if (missing||invalid) {
				statusText += "<i>" + ECgebruikersnaam + "</i> bestaat niet.";
			} else {
				statusText = "<a href=\"" + mw.config.get("wgScriptPath") + encodeURIComponent(mw.config.get("wgFormattedNamespaces")[2] + ":" + ECgebruikersnaam) + "\">" + ECgebruikersnaam + "</a> ";
			} 

			if(blocked) {
				statusText += "<a href=\"" + mw.config.get("wgScriptPath") +
					"/index.php?title=Special:Log&amp;page=" + 
					encodeURIComponent(mw.config.get("wgFormattedNamespaces")[2] + ":" + ECgebruikersnaam) +
					"&amp;type=block\">is geblokkeerd</a> en ";
			}
			// Edit count
			if(editcount !== null) {
				if (editcount === 1) {
					statusText += " heeft 1 bewerking gedaan.";
				} else {
					statusText += " heeft " + editcount + " bewerkingen gedaan.";
				}
			}
			document.getElementById("ECoutput").innerHTML = statusText;
		});
// Get the number of articles made
getNewPageCount( ECgebruikersnaam ).then( function (ECarticlecount) { 
	var ECarticleoutput;
	if (ECarticlecount === 0) {
		ECarticleoutput = ECgebruikersnaam + " heeft 0 artikels gemaakt.";
	} else if (ECarticlecount === 1) {
		ECarticleoutput = ECgebruikersnaam + " heeft een artikel gemaakt.";
	} else {
		ECarticleoutput = ECgebruikersnaam + " heeft " + ECarticlecount + " artikels gemaakt.";
	}
    document.getElementById("ECarticleoutput").innerHTML = ECarticleoutput;
	} );
}

function getNewPageCount( ECgebruikersnaam, apiContinue ) {    
    return api.get( {
        action: "query",
        list: "usercontribs",
        ucprop: "timestamp",
        uclimit: "500",
        ucshow: "new",
        ucnamespace: "0",
        ucuser: ECgebruikersnaam,
        uccontinue: apiContinue ? apiContinue.uccontinue : undefined
    } ).then( function (data) {
        if ( data.continue ) {
            return getNewPageCount( ECgebruikersnaam, data.continue )
                .then( function ( addedLength ) { 
                    return addedLength + data.query.usercontribs.length;
                } );
        } else {
            return data.query.usercontribs.length;
        }
    } );
}

function Button() {
        var ECgebruikersnaam = document.getElementById('user').value;
        location.href = "https://wikikids.nl/Speciaal:Editcount?user=" + ECgebruikersnaam;
}

function ECtemplate(nr) {
	soort = sjabloonClassEC[nr].getElementsByClassName("Gadget-EditCount-Article")[0].innerHTML;
	if (soort === "Edits") {
		ECtemplate2(nr);
	}
	if (soort === "Artikels") {
		ECtemplateArticles(nr);
	}
	if (soort === "Uploads") {
		ECtemplateUploads(nr);
	}
}

function ECtemplateUploads(nr) {
	getUploads(ECgebruikersnaam[nr]).then( function (a) {
		sjabloonClassEC[nr].getElementsByClassName('Gadget-EditCount-Output')[0].innerHTML = a;
	});
}

function getUploads(ECgebruikersnaam) {
    return api.get( {
        action: "query",
        list: "logevents",
        letype: "upload",
        lelimit: "5000",
        leuser: ECgebruikersnaam,
    } ).then( function (data) {
        if ( data.continue ) {
            return '5000+';
        } else {
            return data.query.usercontribs.length;
        }
    } );
}

function ECtemplateArticles(nr) {
	getNewPageCount( ECgebruikersnaam[nr] ).then( function (ECarticlecount) { // The new page count we got will be passed here.
	   	sjabloonClassEC[nr].getElementsByClassName("Gadget-EditCount-Output")[0].innerHTML = 	ECarticlecount;
	} );
}
	
function ECtemplate2(nr) {
		api.get( {
		    action: 'query',
		    list: 'users',
		    usprop: 'editcount',
		    ususers: ECgebruikersnaam[nr],
		} ).done( function ( query ) {
			// When response arrives extract the information we need.
			if(!query.query) { return; } // Suggested by Gary King to avoid JS errors --PS 2010-08-25
			query = query.query;
			var user, invalid, missing, editcount;
				user = query.users[0];
				invalid = typeof user.invalid != "undefined";
				missing = typeof user.missing != "undefined";
				editcount = (typeof user.editcount == "number") ? user.editcount : null;
			var statusText;
			// Edit count
			if(editcount !== null) {
				statusText = editcount;
			}
if (missing||invalid) {
				statusText = "ERROR";
			} 
			sjabloonClassEC[nr].getElementsByClassName("Gadget-EditCount-Output")[0].innerHTML = statusText;
		});
}

function ECpage() {
	var bodyContent = 'bodyContent';
	document.getElementsByTagName("h1")[0].textContent = "EditCount";
	document.title = "EditCount - WikiKids";
	document.getElementById(bodyContent).innerHTML = '<form id="ECform" name="ECform">'
	+ '<b>Bekijk hier hoeveel bewerkingen iemand heeft gedaan. En hoeveel artikels hij heeft gemaakt. <br>'
        + 'Druk op enter, om het aantal bewerkingen op te halen. Dit kan een paar seconden duren. </b></br>'
	+ 'Gebruiker: '
	+ '<input type="text" name="user" id="user" size="30"></textarea>'
	+ '<button onclick="Button()">Gaan!</button>'
	+ '</form><br><div id="ECoutput"></div><div id="ECarticleoutput"></div>';
	if (document.location.href.indexOf('?user=') != -1) { getEC(); }
}

if(mw.config.get('wgNamespaceNumber') === -1 && (mw.config.get('wgTitle') === "Editcount" || mw.config.get('wgTitle') === "EditCount")
) {
	$.when( $.ready, mw.loader.using(['mediawiki.util'])).done( ECpage );
} else if (document.getElementsByClassName("Gadget-EditCount-Sjabloon").length) {
	var sjabloonClassEC = document.getElementsByClassName("Gadget-EditCount-Sjabloon");
	var aantalKeerSjabloonEC = sjabloonClassEC.length;
	var ECgebruikersnaam = [];
	for (var x = 0; x < aantalKeerSjabloonEC; x++) {
		sjabloonClassEC[x].getElementsByClassName("Gadget-EditCount-Disabled")[0].style.display = "none";
		ECgebruikersnaam[x] = sjabloonClassEC[x].getElementsByClassName('Gadget-EditCount-User')[0].innerHTML;
		ECtemplate(x); 
	}
}
Afkomstig van Wikikids , de interactieve Nederlandstalige Internet-encyclopedie voor en door kinderen. "https://wikikids.nl/index.php?title=Gebruiker:Rots61/Gadget-EditCount.js&oldid=860085"