Gebruiker:Rots61/Gadget-Opschonen.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
/* jshint sub:true maxerr:100000 */
// Gadget gemaakt door [[User:Rots61]]
// Documentatie op [[WikiKids:Opschonen]]
var text;
var api = new mw.Api();
var alreadydone;

function showProject (text) {
	// text = array 
	document.getElementsByTagName("h1")[0].textContent = "Speciaal:Opschonen";
	document.title = "Opschonen - WikiKids";
	tempgetal = 1;
	tempnumber = 1;
	var tabelstuk1 = '<th style="line-height:99%;vertical-align:bottom;padding:.4em .4em .2em;background-position:50% .4em !important;min-width:0.875em;max-width:0.875em;width:0.875em;overflow:hidden;"><div style="vertical-rl=-webkit-writing-mode: vertical-rl; -o-writing-mode: vertical-rl; -ms-writing-mode: tb-rl;writing-mode: tb-rl; writing-mode: vertical-rl; layout-flow: vertical-ideographic;transform:rotate(180deg);display:inline-block;padding-left:1px;text-align:left;">Gecontroleerd</div></th>';
	var tabelstuk2 = '<th style="line-height:99%;vertical-align:bottom;padding:.4em .4em .2em;background-position:50% .4em !important;min-width:0.875em;max-width:0.875em;width:0.875em;overflow:hidden;"><div style="vertical-rl=-webkit-writing-mode: vertical-rl; -o-writing-mode: vertical-rl; -ms-writing-mode: tb-rl;writing-mode: tb-rl; writing-mode: vertical-rl; layout-flow: vertical-ideographic;transform:rotate(180deg);display:inline-block;padding-left:1px;text-align:left;">Niet aangepast</div></th>';
	var tabelstuk3 = '<th style="line-height:99%;vertical-align:bottom;padding:.4em .4em .2em;background-position:50% .4em !important;min-width:0.875em;max-width:0.875em;width:0.875em;overflow:hidden;"><div style="vertical-rl=-webkit-writing-mode: vertical-rl; -o-writing-mode: vertical-rl; -ms-writing-mode: tb-rl;writing-mode: tb-rl; writing-mode: vertical-rl; layout-flow: vertical-ideographic;transform:rotate(180deg);display:inline-block;padding-left:1px;text-align:left;">Niet bekeken</div></th>';
tabel = "Deze artikels kun je controleren. Je hoeft niet alle onderstaande artikels te controleren. Dat mag natuurlijk wel. Opmerking is niet nodig, het mag wel. "
	+ '<br>Opslaan duurt een paar seconden, wacht totdat je ziet dat de wijziging is doorgevoerd. Als je meer specifiek wil controleren klik dan <a href="https://wikikids.nl/Speciaal:Opschonen?action=help">hier</a>.'	
	+ '<br><input type="text" id="addarticle" name="addarticle"> <button onclick="addArticleToList()">Voeg toe</button>'
	+ '<table class="wikitable"> <tbody> <tr> <th width="300"><div style="float: left; text-align: left">Pagina</div><div style="float: right; text-align: right">Gebruiker</div></th>' + tabelstuk1 + tabelstuk2 + tabelstuk3 + '<th width="1">Opmerking<br><span style="color:gray;">van de andere gebruiker</span></th> <th>Thema</th> </tr>';
	showAantal = mw.util.getParamValue('aantal');
	showAll = mw.util.getParamValue('allepaginas');
	showSkipDone = mw.util.getParamValue('notdone');
	//Zorg ervoor dat je al gecontroleerde pagina's niet ziet
	showSkipThema = mw.util.getParamValue('notthema');
	//Zorg ervoor dat je al bekeken pagina's niet ziet
	showDone = mw.util.getParamValue('done');
	//Zorg ervoor dat je alle gecontroleerde pagina's ziet
	showThema = mw.util.getParamValue('thema');
	//Zorg ervoor dat je alle pagina's ziet met een thema
	showUser = mw.util.getParamValue('user');
	//Zorg ervoor dat je alle pagina's ziet waar deze gebruiker bij staat.
	showStartwith = mw.util.getParamValue('Startwith');
	showTo = mw.util.getParamValue('to');
	showFrom = mw.util.getParamValue('from');
	if (showAantal === 'max') {
		showAantal = text.length -1;
		showMax = true;
		showAll = true;
	} else if (showAantal) {
		showAantal = parseInt(showAantal) + 1;
	} else if (showAll) {
		showAantal = text.length -1;
	}
	if ((showThema || showDone) || (showSkipThema || (showSkipDone || (showTo || (showFrom || (showUser || (showStartwith || showAantal ))))))) {
	} else {
		showAantal=51;
		showSkipDone = true;
	}
	lengtetext = text.length;
	while (tempnumber !== showAantal) {
		Artikeln[tempgetal] = getURLParamNumber(text);
		if (Artikeln[tempgetal] === 'exit') {
			tempnumber = -1;
			showAantal = -1;
		} else {
		Artikelr[tempgetal] = text[Artikeln[tempgetal]]["N"];
		if (text[Artikeln[tempgetal]]["D"]) {
			gedaan[tempgetal] = " disabled"; 
			text[Artikeln[tempgetal]]["T"] = "&nbsp;";
			linkextra[tempgetal] = "Done";
			Knop1x[tempgetal] = "";
			Knop2x[tempgetal] = "";
			Knop3x[tempgetal] = '<td colspan="3" style="color:green; font-weight: bold; text-align: center;">Gedaan</td>';
		} else {
			gedaan[tempgetal] = "";
			linkextra[tempgetal] = "Niet";
			Knop1x[tempgetal] = '<td><input type="radio" id="Radio1.' + tempgetal + '" name="Knop' + tempgetal + '" onclick="Change1(' + tempgetal + ');"></td>';
			Knop2x[tempgetal] = '<td><input type="radio" id="Radio2.' + tempgetal + '" name="Knop' + tempgetal + '" onclick="Change2(' + tempgetal + ');"></td>';
			Knop3x[tempgetal] = '<td><input type="radio" id="Radio3.' + tempgetal + '" name="Knop' + tempgetal + '" onclick="Change3(' + tempgetal + ');"></td>';

		}
		if (text[Artikeln[tempgetal]]["U"]){
			vorigeuser[tempgetal] = ' <div style="float: right; font-weight: bold; text-align: right">' + text[Artikeln[tempgetal]]["U"] + '</div>';
		} else {
			vorigeuser[tempgetal] = "";
		}
		if (text[Artikeln[tempgetal]]["O"]){
			Opmerking[tempgetal] = text[Artikeln[tempgetal]]["O"];
		} else {
			Opmerking[tempgetal] = '<input type="text" id=Opmerking' + tempgetal + ' name=Opmerking' + tempgetal + ' size=70">'; 
		}
		if (text[Artikeln[tempgetal]]["T"]){
			Thema[tempgetal] = '<center>' + text[Artikeln[tempgetal]]["T"] + '</center>';
		} else {
			Thema[tempgetal] = '<input type="text" id=Thema' + tempgetal + ' name=Thema' + tempgetal + ' size=10">';
		}
		console.log(Artikeln[tempgetal] + ": " + Artikelr[tempgetal]);
		Artikellink[tempgetal] = '<a href="https://wikikids.nl/' + Artikelr[tempgetal] + '?projectopschonen=x&checked=' + linkextra[tempgetal] +'" target="_blank">' + Artikelr[tempgetal] + '</a>' + vorigeuser[tempgetal];
		tabel += '<tr> <td>' + Artikellink[tempgetal] + '</td>' + Knop1x[tempgetal] + Knop2x[tempgetal] + Knop3x[tempgetal] + '<td>' + Opmerking[tempgetal] + '</td> <td>' + Thema[tempgetal] + '</td> </tr>';
		tempgetal += 1;
		if (showMax) {
			tempnumber = allNummer;
		} else {
			tempnumber = tempgetal;
		}
		}
	}
	// text = array
	eindetabel += '</tbody></table> <button onclick="startbeforeIT()">Opslaan</button>';
	document.getElementById('bodyContent').innerHTML = tabel + eindetabel;
	mw.notify("Welkom!");
}

function getURLParamNumber (text, nummer) {
	willekeuriggetal = 0;
	while (willekeuriggetal === 0) {
		willekeuriggetal = getRandomNumber(text.length);
		if (willekeuriggetal === text.length) { 
			return 'exit';
		} else {
		if (showUser) {
			if (text[willekeuriggetal]["U"] === showUser) {
			} else {
				willekeuriggetal = 0;
			}
		}
		if (showThema) {
			if (text[willekeuriggetal]["T"]) {
			} else {
				willekeuriggetal = 0; 
			}
		} else if (showSkipThema) { 
			if (text[willekeuriggetal]["T"]) {
				willekeuriggetal = 0; 
			}
		}
		if (showDone) {
			if (text[willekeuriggetal]["D"]) {
			} else {
				willekeuriggetal = 0; 
			}
		} else if (showSkipDone) { 
			if (text[willekeuriggetal]["D"]) {
				willekeuriggetal = 0; 
			}
		}
		if (showStartwith) {
			var re = new RegExp('^' + showStartwith,"g");
			if (text[willekeuriggetal]["N"] !== text[willekeuriggetal]["N"].replace(re, "newstring")) {
				console.log(text[willekeuriggetal]["N"]);
			} else {
				willekeuriggetal = 0;
			}
		}
		if (showFrom) {
			if (text[willekeuriggetal]["N"]) {
	
			}
		if (showTo) {
			if (text[willekeuriggetal]["N"]) {
			}
		}
		}
		}
	}
	return willekeuriggetal;
}


function Change1(getal){
	if (!document.getElementById('Thema' + getal).disabled) {
		Thematemp[getal] = document.getElementById('Thema' + getal).value;
	}
	document.getElementById('Thema' + getal).disabled = true;
	document.getElementById('Opmerking' + getal).disabled = false;
	document.getElementById('Thema' + getal).value = "";
	Opmerkingtempx = document.getElementById('Opmerking' + getal).value;
	document.getElementById('Opmerking' + getal).value = Opmerkingtemp[getal] ? Opmerkingtemp[getal] : Opmerkingtempx ? Opmerkingtempx : "";

}

function Change2(getal){
	Thematempx = document.getElementById('Thema' + getal).value;
	Opmerkingtempx = document.getElementById('Opmerking' + getal).value;
	document.getElementById('Thema' + getal).disabled = false;
	document.getElementById('Opmerking' + getal).disabled = false;
	document.getElementById('Thema' + getal).value = Thematemp[getal] ? Thematemp[getal] : Thematempx ? Thematempx : "";
	document.getElementById('Opmerking' + getal).value = Opmerkingtemp[getal] ? Opmerkingtemp[getal] : Opmerkingtempx ? Opmerkingtempx : "";
}

function Change3(getal){
	if (!document.getElementById('Thema' + getal).disabled) {
		Thematemp[getal] = document.getElementById('Thema' + getal).value;
	}
	if (!document.getElementById('Opmerking' + getal).disabled) {
		Opmerkingtemp[getal] = document.getElementById('Opmerking' + getal).value;
	}
	document.getElementById('Thema' + getal).disabled = true;
	document.getElementById('Opmerking' + getal).disabled = true;
	document.getElementById('Thema' + getal).value = "";
	document.getElementById('Opmerking' + getal).value = "";
}

function fromPageaddPage() {
	var text; 
	var artikel; 
	var checkconfirm;
	var checkopmerking;
	var Nummer;
	getJSONText().done( function(text) {
		fromPageCheckOnList(text);
	});
}

function fromPageCheckOnList (text) {
	if (!Array.isArray(text)) {
		text = JSON.parse(text);
	}
	if (!text[1]["N"]) {
		text = JSON.parse(text);
	}
	addarticle = mw.config.get('wgPageName').replace(/ /g, '_'); 
	for (var i=0, iLen=text.length; i<iLen; i++) {
		if (text[i].N == addarticle) Nummer = i;
	}
	if (!Nummer) {
		api.get( {
			action: "query",
			titles: addarticle,
			redirects: true,
			} ).then( function( ret ) {
				if (ret.query.redirects) {
					alreadydone = true;
					mw.notify("Pagina is een redirect.");
				} else {
				$.each( ret.query.pages, function() {
					if (this.missing !== "") {
						if (this.ns === 0) {
							Nummer = text.length;
            				text[text.length] = {"N": addarticle,"D":"D","U":mw.config.get('wgUserName')};
						} else {
							alreadydone = true;
							mw.notify("Pagina staat niet in de hoofdnaamruimte.");
						}
					} else {
						alreadydone = true;
						mw.notify("Pagina bestaat niet. ");
					}
				}, function( error ) {
    				} );
				}
			} );
	} else if (text[Nummer]["D"] === "D") {
	 	mw.notify("Dit aritkel is al gecontroleerd door " + text[Nummer]["U"]);	
	 	alreadydone = true;
	} else {
		console.log(Nummer);
		text[Nummer]["D"] = "D";
		text[Nummer]["U"] = mw.config.get('wgUserName');
	}
	fromPageSave(text);
}

function fromPageSave(text) {
	if (alreadydone) {
	} else if (!Nummer) { 
		setTimeout(fromPageSave, 250); 
	} else {
		checkopmerking = prompt("Mogelijke opmerking over het artikel: ");
		if (checkopmerking === null) {
		} else if (checkopmerking === '') {
			console.log(text);
			editpage(text);
		} else {
			text[Nummer]["O"] = checkopmerking;
			editpage(text);
		}
	} 
}

function addArticleToList (artikel) {
	if (!text[1]["N"]) {
		text = JSON.parse(text);
	}
	addarticle = undefined;
	var comesfromcookie;
	if (artikel) { 
		addarticle = artikel; 
		comesfromcookie = true;
	} else { 
		addarticle = document.getElementById('addarticle').value.replace(/ /g, '_');
	}
	for (var i=0, iLen=text.length; i<iLen; i++) {
		if (text[i].N == addarticle) Nummer = i;
	}
	if (!Nummer) {
		api.get( {
			action: "query",
			titles: addarticle,
			redirects: true,
			} ).then( function( ret ) {
				if (ret.query.redirects) {
					mw.notify("Pagina is een redirect, kan niet gecontroleerd worden.");
				} else {
				$.each( ret.query.pages, function() {
					if (this.missing !== "") {
						if (this.ns === 0) {
							Nummer = text.length;
            				text[text.length] = {"N": addarticle};
						} else {
						mw.notify("Pagina staat niet in de hoofdnaamruimte.");
						}
					} else {
						mw.notify("Pagina bestaat niet. ");
					}
				}, function( error ) {
    				} );
				}
			} );
	}
	if (Nummer) {
		tempgetal = 1;
		var gewenstelengte = Artikelr.length;
		if (gewenstelengte === 0) {
			gewenstelengte = 1;
			tempgetal = 1;
		}
		console.log(gewenstelengte + ":" + tempgetal);
		while (tempgetal !== gewenstelengte ) {
			if (document.getElementById('Radio1.' + tempgetal)) {
				Waardes['Radio1'][tempgetal] = document.getElementById('Radio1.' + tempgetal).checked;
				Waardes['Radio2'][tempgetal] = document.getElementById('Radio2.' + tempgetal).checked;
				Waardes['Radio3'][tempgetal] = document.getElementById('Radio3.' + tempgetal).checked;
				Waardes['Opmerking'][tempgetal] = document.getElementById('Opmerking' + tempgetal).value;
				Waardes['Thema'][tempgetal] = document.getElementById('Thema' + tempgetal).value;
				Waardes['Themadis'][tempgetal] = document.getElementById('Thema' + tempgetal).disabled;
				Waardes['Opmerkingdis'][tempgetal] = document.getElementById('Opmerking' + tempgetal).disabled;
			}
			tempgetal +=1;
		}
		tempgetal = Artikelr.length;
		Artikeln[tempgetal] = Nummer;
		Artikelr[tempgetal] = text[Artikeln[tempgetal]]["N"];
		if (text[Artikeln[tempgetal]]["D"]) {
			gedaan[tempgetal] = " disabled"; 
			text[Artikeln[tempgetal]]["T"] = "&nbsp;";
			linkextra[tempgetal] = "Done";
			Knop1x[tempgetal] = "";
			Knop2x[tempgetal] = "";
			Knop3x[tempgetal] = '<td colspan="3" style="color:green; font-weight: bold;">Gedaan</td>';
		} else {
			gedaan[tempgetal] = "";
			linkextra[tempgetal] = "Niet";
			Knop1x[tempgetal] = '<td><input type="radio" id="Radio1.' + tempgetal + '" name="Knop' + tempgetal + '" onclick="Change1(' + tempgetal + ');"></td>';
			Knop2x[tempgetal] = '<td><input type="radio" id="Radio2.' + tempgetal + '" name="Knop' + tempgetal + '" onclick="Change2(' + tempgetal + ');"></td>';
			Knop3x[tempgetal] = '<td><input type="radio" id="Radio3.' + tempgetal + '" name="Knop' + tempgetal + '" onclick="Change3(' + tempgetal + ');"></td>';
		}
		if (text[Artikeln[tempgetal]]["U"]){
			vorigeuser[tempgetal] = ' <div style="float: right; font-weight: bold; text-align: right">' + text[Artikeln[tempgetal]]["U"] + '</div>';
		} else {
			vorigeuser[tempgetal] = "";
		}
		if (text[Artikeln[tempgetal]]["O"]){
			Opmerking[tempgetal] = text[Artikeln[tempgetal]]["O"];
		} else {
			Opmerking[tempgetal] = '<input type="text" id=Opmerking' + tempgetal + ' name=Opmerking' + tempgetal + ' size=70">'; 
		}
		if (text[Artikeln[tempgetal]]["T"]){
			Thema[tempgetal] = '<center>' + text[Artikeln[tempgetal]]["T"] + '</center>';
		} else {
			Thema[tempgetal] = '<input type="text" id=Thema' + tempgetal + ' name=Thema' + tempgetal + ' size=10">';
		}
		console.log(Artikeln[tempgetal] + ": " + Artikelr[tempgetal]);
		Artikellink[tempgetal] = '<a href="https://wikikids.nl/' + Artikelr[tempgetal] + '?projectopschonen=x&checked=' + linkextra[tempgetal] +'" target="_blank">' + Artikelr[tempgetal] + '</a>' + vorigeuser[tempgetal];
		tabel += '<tr> <td>' + Artikellink[tempgetal] + '</td>' + Knop1x[tempgetal] + Knop2x[tempgetal] + Knop3x[tempgetal] + '<td>' + Opmerking[tempgetal] + '</td> <td>' + Thema[tempgetal] + '</td> </tr>';
		mw.notify("Artikel toegevoegd op deze pagina.");
		document.getElementById('bodyContent').innerHTML = tabel + eindetabel;
		tempgetalxyz = tempgetal;
		tempgetal = 1;
		while (tempgetal !== gewenstelengte ) {
			document.getElementById('Radio1.' + tempgetal).checked = Waardes['Radio1'][tempgetal];
			document.getElementById('Radio2.' + tempgetal).checked = Waardes['Radio2'][tempgetal];
			document.getElementById('Radio3.' + tempgetal).checked = Waardes['Radio3'][tempgetal];
			document.getElementById('Opmerking' + tempgetal).value = Waardes['Opmerking'][tempgetal];
			document.getElementById('Thema' + tempgetal).value = Waardes['Thema'][tempgetal];
			document.getElementById('Opmerking' + tempgetal).disabled = Waardes['Opmerkingdis'][tempgetal];
			document.getElementById('Thema' + tempgetal).disabled = Waardes['Themadis'][tempgetal];
			tempgetal +=1;
		}
		if (comesfromcookie) {
			document.getElementById('Radio1.' + tempgetalxyz).checked = true;
			Change1(tempgetalxyz);
			comesfromcookie = false;
		}
	Nummer = undefined;
}
}
function startbeforeIT() {
	getJSONText().done( function(text) {
			startIT(text);
			});
}
function startIT(text) {
	if (!Array.isArray(text)) {
		text = JSON.parse(text);
	}
	tempgetal = 1;
	highArtikelr = Artikelr.length;
	while (tempgetal !== highArtikelr) {
		if (text[Artikeln[tempgetal]]["D"]) {
		} else {
			getKnop3 = document.getElementById("Radio3." + tempgetal);
			if (getKnop3 && getKnop3.checked) {
			} else {
				var getonderwerp = document.getElementById("Thema" + tempgetal);
				if (getonderwerp && getonderwerp.value) {
					getonderwerp = getonderwerp.value;
				} else {
					getonderwerp = "";
				}
				var getopmerking = document.getElementById("Opmerking" + tempgetal);
				if (getopmerking && getopmerking.value) {
					getopmerking = getopmerking.value;
				} else { 
					getopmerking = "";
				}
				getKnop1 = document.getElementById("Radio1." + tempgetal);
				getKnop2 = document.getElementById("Radio2." + tempgetal);
				if (getKnop1 && getKnop1.checked) {
					if (getopmerking) { 
						text[Artikeln[tempgetal]]["U"] = mw.config.get('wgUserName');
						text[Artikeln[tempgetal]]["O"] = getopmerking;
						text[Artikeln[tempgetal]]["D"] = "D";
					} else {
						text[Artikeln[tempgetal]]["D"] = "D";
						text[Artikeln[tempgetal]]["U"] = mw.config.get('wgUserName');
					}
				} else if ((getKnop2 && getKnop2.checked) || getopmerking || getonderwerp) {
					text[Artikeln[tempgetal]]["U"] = mw.config.get('wgUserName');
					text[Artikeln[tempgetal]]["O"] = getopmerking;
					text[Artikeln[tempgetal]]["T"] = getonderwerp;
				}
				}
			}
		tempgetal +=1;
	}
	editpage();
}

function getJSONText() {
	return api.get({
		action: "query",
		prop: "revisions",
		titles: "Gebruiker:Rots61/Test.json",
		rvlimit: "1",
		rvprop: "content",
		rvslots: "main",
	}).then(function(data) {
		temp = data.query.pages;
		temp = temp[148926];
		temp = temp.revisions;
		temp = temp[0];
		text = temp.slots.main;
		text = text["*"];
		return JSON.parse(text);
	});
}

function editpage(textx) {
	while (textx) { 
		text = textx;
		textx = undefined;
	}
	if (!Array.isArray(text)) {
		console.log(text);
	} else {
		console.log("X");
		text = JSON.stringify(text);
	}
	api.get({
		action: 'query',
		prop: 'info',
		intoken: 'edit',
		titles: 'kaslv', //Pagina moet niet bestaan. 
	}).done(
		function(data) {
			edit_token = data.query.pages['-1'].edittoken;
		}).done(function(data) {
		api.post({
			'action': 'edit',
			'title': "Gebruiker:Rots61/Test.json",
			'text': text,
			'summary': "Pagina's als gecontroleerd gemarkeerd. [[WikiKids:Opschonen|(bewerking gedaan met 'Opschonen')]]",
			'tags': 'Opschonen',
			'bot': true,
			'token': edit_token,
		}).done(
			function(data) {
				if (data.edit.result == "Success") { 
					mw.notify("Opgeslagen!", { autoHide: false });
				} else {
					mw.notify("Mislukt, meldt dit bij mij", { autoHide: false });
				}
				console.log(data.edit);
				document.getElementById('bodyContent').innerHTML = "Opslaan gelukt. Herlaad de pagina om hem opnieuw te gebruiken. ";
			});
	});
}

function getRandomNumber (lengtetext) {
	if (showAll) {
		allNummer += 1;
		return allNummer; 
	}
	return Math.floor(Math.random() * lengtetext) ;
}

function startHints(){
	htmltext = document.getElementById('mw-content-text').innerHTML;
	paginalink = 'https://wikikids.nl/Wikikids:Wikiproject/Opschonen#';
	document.getElementById('mw-content-text').innerHTML = '<div id="gadget-ophalen">Hints ophalen</div>'
	+ '<div id="gadget-hint-http" style="color:red; display:none;">Er is een link die begint met http. (<a href="' + paginalink + 'HTTP_links">Wat moet ik doen?</a>)</div>'
	+ '<div id="gadget-hint-vreemdelink" style="color:red; display:none;">Er klopt iets niet met een link. (<a href="' + paginalink + 'Link_klopt_niet">Wat moet ik doen?</a>)</div>'
	+ '<div id="gadget-hint-dp" style="color:red; display:none;">Er staat een link naar een doorverwijspagina op dit artikel. (<a href="' + paginalink + 'Doorverwijspagina">Wat moet ik doen?</a>)</div>'
	+ '<span id="gadget-hint-geenlinks" style="color:red; display:none;">Er verwijzen geen andere artikels naar dit artikel. <span id="gadget-hint-welportaal" style="color:green; display:none;">(Wel een portaal) </span>(<a href="' + paginalink + 'Geen_links">Wat moet ik doen?</a>)</span>'
	+ '<div id="gadget-hint-grootbeg" style="color:red; display:none;">Dit artikel is wel groot voor een beginnetje. (<a href="' + paginalink + 'Groot_beginnetje">Wat moet ik doen?</a>)</div>'
	+ '<div id="gadget-hint-geencat" style="color:red; font-weight:bold; display:none;">Er staat geen categorie op dit artikel. (<a href="' + paginalink + 'Geen_categorie">Wat moet ik doen?</a>)</div>'
	+ '<div id="gadget-hint-weiniglinks" style="color:red; display:none;">Er staan te weinig links op dit artikel. (<a href="' + paginalink + 'Te_weinig_links_op_pagina">Wat moet ik doen?</a>)</div>'
	+ '<div id="gadget-hint-woordenschat" style="display:none;">Ter informatie: Woordenschatartikel</div>'
	+ '<div id="gadget-hint-extlink" style="display:none;">Er staan externe links op deze pagina. (<a href="' + paginalink + 'Externe_links">Wat moet ik doen?</a>)</div>'
	+ '<div id="gadget-hint-gebruiker" style="color:green; font-weight:bold; display:none;">Artikel is geschreven door Hanssain. (<a href="' + paginalink + 'Artikel_gemaakt_door_gebruiker">Wat moet ik doen?</a>)</div>'
	+ '<div id="gadget-hint-gecontroleerd" style="color:green; font-weight:bold; display:none;">Artikel is al gecontroleerd. (<a href="' + paginalink + 'Artikel_al_gecontroleerd">Wat moet ik doen?</a>)</div>'
	+ '<hr id="gadget-ophalenlijn>'
	+ document.getElementById('mw-content-text').innerHTML;
	getFirstAuteur();
	getCategories();
	getLinksIn();
	getTextLength();
	getBeg();
	getLinksOut();
	checkIfChecked();
	getWoordenschat();
	getExterneLinks();
	setTimeout(removeloading,1500);
	// Gecontroleerd, gebruiker, extlink, vreemde link, http, geencat, geenlinks
	//Moet nog: weiniglinks, grootkopje, dp
}

function removeloading (){
	if (!woordenschat) {
		if (articlesize >2000) {
			if (beg) {
				document.getElementById('gadget-hint-grootbeg').style.display = "";
			}
			if (linksopartikel < 5) {
				document.getElementById('gadget-hint-weiniglinks').style.display = "";
			}
		} else if (linksopartikel < 2) {
			document.getElementById('gadget-hint-weiniglinks').style.display = "";
		} 
	}
    api.get( {
        action: "query",
        prop: "linkshere",
        titles: articletitle, 
        lhnamespace: "100",
        lhlimit: "50",
        lhshow: "!redirect",
    } ).then( function (data) {
            temp = data.query.pages[articleId];
            if (typeof temp.linkshere === 'undefined') { 
            } else {
            	document.getElementById('gadget-hint-welportaal').style.display = "";
            	document.getElementById('gadget-hint-geenlinks').style.color = "";
            }
    });
	document.getElementById("gadget-ophalen").innerHTML="";
}

function getTextLength (){
	return api.get( {
		action:"query",
		prop: "revisions",
		titles: articletitle,
		rvlimit: "1",
		rvprop: "content|size",
		rvslots: "main",
	}).then( function (data) { 
		temp = data.query.pages;
		temp = temp[articleId].revisions["0"].size;
		articlesize = temp;
		return temp;
	});
}

function getCategories () {
	return api.get( {
		action:"query",
		prop: "categories",
		titles: articletitle,
		clshow: "!hidden",
	}).then( function (data) { 
		temp = data.query.pages[articleId].categories;
		if (!temp) {
			document.getElementById("gadget-hint-geencat").style.display="";
		}
	});
}

function getFirstAuteur (){
	return api.get( {
		action:"query",
		prop: "revisions",
		titles: articletitle,
		rvlimit: "1",
		rvprop: "user",
		rvdir: "newer",
		rvslots: "main",
	}).then( function (data) { 
		temp = data.query.pages[articleId].revisions[0].user;
		if (temp === "Hanssain") {
			document.getElementById("gadget-hint-gebruiker").style.display="";
		}
	});
}

function getWoordenschat () {
    return api.get( {
        action: "query",
        prop: "categories",
        clcategories: "Category:Woordenschat",
        titles: articletitle, 
    } ).then( function (data) { 
    	    temp = data.query.pages;
            temp = temp[articleId];
			if (typeof temp.categories !== 'undefined') {
            	woordenschat = true;
            	document.getElementById('gadget-hint-woordenschat').style.display = "";
            }
    });
}

function getBeg () {
    return api.get( {
        action: "query",
        prop: "categories",
        clcategories: "Category:WikiKids:Beginnetje",
        titles: articletitle, 
    } ).then( function (data) { 
    	    temp = data.query.pages;
            temp = temp[articleId];
			if (typeof temp.categories !== 'undefined') {
            	beg = true;
            }
    });
}

function getLinksOut() {    
    return api.get( {
        action: "query",
        prop: "links",
        titles: articletitle, 
        pllimit: "5000",
    } ).then( function (data) {
            temp = data.query.pages;
            temp = temp[articleId];
            if (typeof temp.links !== 'undefined') {
          		linksopartikel = temp.links.length;
          		getDP();
            } else { 
            	linksopartikel = 0;
            }
    } );
}

function getLinksIn() {
    api.get( {
        action: "query",
        prop: "linkshere",
        titles: articletitle, 
        lhnamespace: "0",
        lhlimit: "50",
        lhshow: "!redirect",
    } ).then( function (data) {
            temp = data.query.pages[articleId];
            if (typeof temp.linkshere === 'undefined') {
				document.getElementById("gadget-hint-geenlinks").style.display="";
            	
            }
    } );
}

function checkIfChecked () {
	valuechecked = mw.util.getParamValue( 'checked' );
	if (valuechecked === "Done") {
		document.getElementById("gadget-hint-gecontroleerd").style.display="";
	} else {
	getJSONText().done( function(text) {
		for (var i=0, iLen=text.length; i<iLen; i++) {
			if (text[i].N == articletitle) checkChecked = text[i]["D"];
		}
		if (checkChecked === "D") { 
			document.getElementById("gadget-hint-gecontroleerd").style.display="";
		}
	});
	}
}

function getDP () {
	api.get( {
        action: "query",
        generator: "links",
        prop: "categories",
        titles: articletitle, 
        gpllimit: "5000",
        cllimit: "5000",
        clcategories: "Categorie:Wikikids:Doorverwijspagina",
    } ).then( function (data) {
    	temp = data.query.pages;
    	for (const property in temp) {
    		if (temp[property].categories) {
    			console.log(temp[property].title);
    			document.getElementById("gadget-hint-dp").style.display="";
    		}
		}
    	});
}

function getExterneLinks() {    
    api.get( {
        action: "query",
        prop: "extlinks|categories",
        titles: articletitle, 
        ellimit: "5000",
    } ).then( function (data) {	
    		temp = data.query.pages;
            temp = temp[articleId].extlinks;
            if (typeof temp === 'undefined') {
            } else {
            	var tempgetal = 0;
            	while (typeof temp[tempgetal] !== 'undefined'){
            		if ( temp[tempgetal]["*"].startsWith("http:") ) {
            			document.getElementById("gadget-hint-http").style.display="";
            		} else if (temp[tempgetal]["*"].startsWith("https:")) {
            			if (beg === true) {
            				if (temp[tempgetal]["*"] == "https://schooltv.nl/zoekresultaten/?q=" + articletitle ) { 
            				} else if (temp[tempgetal]["*"] == "https://www.youtube.com/results?search_query=" + articletitle ) {
            				} else if (temp[tempgetal]["*"] == "https://commons.wikimedia.org/w/index.php?title=Special:Search&search=" + articletitle + "&ns0=1&ns6=1&ns12=1&ns14=1&ns100=1&ns106=1") {
            				} else if (temp[tempgetal]["*"] == "https://commons.wikimedia.org/w/index.php?search=" + articletitle + "&title=Special:MediaSearch&go=Go&type=image") {
            				} else if (temp[tempgetal]["*"] == "https://www.google.nl/search?q=" + articletitle ) {
            				} else if (temp[tempgetal]["*"] == "https://nl.wikipedia.org/wiki/" + articletitle) {
            				} else if (temp[tempgetal]["*"] == "https://wikikids.nl/Wikikids:Beeldbank") {
            				} else { document.getElementById("gadget-hint-extlink").style.display="";
            				} 
            			} else {
            				document.getElementById("gadget-hint-extlink").style.display="";
            			}
            		} else { 
            			document.getElementById("gadget-hint-vreemdelink").style.display="";
            		}
            		tempgetal += 1;
            	}
            }
    } );
}

function changeInstellingen() {
	var instelling = document.getElementById("instellingen").style.display;
	if (instelling === 'none') { 
		document.getElementById("instellingen").style.display = "";
		document.getElementById("maxoption").disabled = false;
	} else {
		document.getElementById("instellingen").style.display = 'none';
		document.getElementById("maxoption").disabled = true;
		document.getElementById("user").value = "";
		document.getElementById("startwith").value = "";
	}
}

function hulpInfo() {
	document.getElementsByTagName("h1")[0].textContent = "Speciaal:Opschonen";
	document.title = "Help - Opschonen - WikiKids";
	infotext = '<input type="checkbox" id="allepaginas" onclick="changeInstellingen();">Krijg willekeurige pagina\'s. <br>'
	+ '<div id="instellingen">'
	+ 'Gebruiker: <input type="text" id="user"><br>'
	+ 'Alleen artikels die starten met: <input type="text" id="startwith"><br></div>'
	+ 'Gecontroleerd: <select name="done" id="done">'
	+ '<option value="notdone">Niet</option>'
	+ '<option value="xdone" selected>Maakt niet uit</option>'
	+ '<option value="done">Wel</option>'
	+ '</select><br>'
	+ 'Thema: <select name="thema" id="thema">'
	+ '<option value="notthema">Geen</option>'
	+ '<option value="xthema" selected>Maakt niet uit</option>'
	+ '<option value="thema">Wel</option>'
	+ '</select><br>'
	+ 'Aantal: <select name="aantal" id="aantal">'
	+ '<option value="100">100</option>'
	+ '<option value="50" selected>50</option>'
	+ '<option value="10">10</option>'
	+ '<option value="0">0</option>'
	+ '<option value="max" id="maxoption">Max</option>'
	+ '</select><br>'
	+ '<br><button onclick="getsettings()">Bekijk pagina\'s</button>'
	+ 'Vragen hierover? Laat het me weten';
	document.getElementById('bodyContent').innerHTML = infotext;
}

function getsettings () {
	var allepaginasl = document.getElementById('allepaginas').checked;
	var startwithl = document.getElementById('startwith').value;
	var themal = document.getElementById('thema').value;
	var userl = document.getElementById('user').value;
	var aantall = document.getElementById('aantal').value;
	var donel = document.getElementById('done').value;
	var url = 'https://wikikids.nl/Speciaal:Opschonen?';
	if (allepaginasl) {
	} else {
		url += 'allepaginas=x&';
	}
	if (themal === "thema") {
		url +='thema=x&';
	} else if (themal === "notthema") {
		url +='notthema=x&'; 
	}
	if (donel === "done") {
		url +='done=x&';
	} else if (donel === "notdone") {
		url +='notdone=x&';
	}
	if (userl) {
		url +='user='+ userl + '&';
	}
	url +='aantal=' + aantall;
	window.location.href = url;
}

if (mw.config.get('wgNamespaceNumber') === -1 && mw.config.get('wgTitle') === "Opschonen") { 
	document.getElementById("footer-places").innerHTML += '<li id="footer-places-gadget-opschonen">Script met veel liefde gemaakt door <a href="/User:Rots61" title="Gebruiker:Rots61">Rots61</a></li>';
	if (document.URL === "https://wikikids.nl/Speciaal:Opschonen?action=help") {
		var infotext;
		hulpInfo();
	} else {
		showAantal = parseInt(mw.util.getParamValue( 'aantal' ));
		showUser = mw.util.getParamValue('user');
		showStartwith = mw.util.getParamValue('Startwith');
		var tussenvoegsel;
		document.getElementById('bodyContent').innerHTML = "Laden... krijg je niets te zien? Maak hier dan een melding van bij mij met deze url:" + document.URL;
		var edit_token;
		var tempgetal;
		var temp;
		var Artikelr = [];
		var Artikeln = [];
		var Artikellink = [];
		var getUser;
		var Thematemp = [];
		var Opmerkingtemp = [];
		var Thematempx;
		var Opmerkingtempx;
		var Knop1x = [];
		var Knop2x = [];
		var Knop3x = [];
		var Opmerking = [];
		var Thema = [];
		var tabel;
		var eindetabel;
		var highArtikelr;
		var showAantal;
		var gedaan = [];
		var vorigeuser = [];
		var linkextra = [];
		var getKnop3;
		var getKnop2;
		var getKnop1;
		var randomNumber;
		var showAll;
		var showSkipDone;
		var showSkipSkipped;
		var showDone;
		var showThema;
		var addarticle;
		var paginalink;
		var checkChecked;
		var allNummer = 1; 
		var showFrom;
		var showTo;
		var showSkipThema;
		var lengtetext;
		var showMax;
		var Waardes = {"Radio1":[],"Radio2":[],"Radio3":[],"Opmerking":[],"Thema":[], "Opmerkingdis":[],"Themadis":[]};
		//varvar
		getJSONText().done( function(text) {
			showProject(text);
			});
	}
}

var showHints = mw.util.getParamValue( 'projectopschonen' );
if (showHints) { 
	showHints = "disabled";
	document.getElementById("footer-places").innerHTML += '<li id="footer-places-gadget-opschonen">Hints zijn gemaakt door <a href="/User:Rots61" title="Gebruiker:Rots61">Rots61</a></li>';
	//varvar
	var articletitle = mw.config.get('wgPageName');
	var articleId = mw.config.get('wgArticleId');
	var beg = false;
	var dp = false;
	var link = 0;
	var link2 = "";
	var temp;
	var temp2;
	var linkhttp = 0;
	var redirects = "";
	var Hints = "";
	var htmltext;
	var Nummer;
	var CheckChecked;
	var articlesize;
	var linksopartikel;
	var valuechecked;
	var woordenschat = false;
	startHints();
}

if ((mw.config.get('wgNamespaceNumber') === 0) && (mw.config.get('wgArticleId') > 1 )) { 
	document.getElementById("mw-panel").innerHTML +='&nbsp;&nbsp;&nbsp;Gadget:Opschonen<br>&nbsp;&nbsp;&nbsp;<input type="button" onclick="location.href=\'https://wikikids.nl/Speciaal:Opschonen\';" value="Speciaal:Opschonen" />'
	+ '<br>&nbsp;&nbsp;&nbsp;<input type="button" onclick="location.href=\'https://wikikids.nl/' + mw.config.get( 'wgPageName' ) + '?projectopschonen=x\';" ' +	showHints +  ' value="Opschoon hints" />'
	+ '<br>&nbsp;&nbsp;&nbsp;<input type="button" onclick="fromPageaddPage();" value="Gecontroleerd" disabled/>';
}
Afkomstig van Wikikids , de interactieve Nederlandstalige Internet-encyclopedie voor en door kinderen. "https://wikikids.nl/index.php?title=Gebruiker:Rots61/Gadget-Opschonen.js&oldid=758403"