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;
function showProject (text) {
	document.getElementsByTagName("h1")[0].textContent = "Speciaal:Opschonen";
	document.title = "Opschonen - WikiKids";
	tempgetal = 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. Als je 100 artikels wilt, pas je de url aan naar 'https://wikikids.nl/Speciaal:Opschonen?aantal=100'."
	+ '<br>Dit is nog geen uiteindelijke versie van de pagina, pagina\'s die je nu afvinkt, worden niet afgevinkt op de echte lijst. Je kunt gewoon opslaan, daarna kun je controleren wat het resultaat is, door de titel hieronder in te vullen. Opslaan duurt een paar seconden, wacht totdat je ziet dat het is aangepast.'
	+ '<br><input type="text" id="addarticle" name="addarticle"> <button onclick="addArticleToList()">Voeg toe</button><small><small>(Ja hierachter staat "undefined", dat kan ik niet weghalen.)</small></small> '
	+ '<table class="wikitable"> <tbody> <tr> <th width="1"><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 = parseInt(mw.util.getParamValue( 'aantal' ));
	if (showAantal) {
		showAantal = showAantal + 1;
	} else {
		showAantal = 11; 
	}
	while (tempgetal !== showAantal) {
		Artikeln[tempgetal] = getRandomNumber(text, tempgetal);
		Artikelr[tempgetal] = text[Artikeln[tempgetal]]["N"];
		if (text[Artikeln[tempgetal]]["D"]) {
			gedaan[tempgetal] = " disabled"; 
			text[Artikeln[tempgetal]]["T"] = "&nbsp;";
			Knop1x[tempgetal] = "";
			Knop2x[tempgetal] = "";
			Knop3x[tempgetal] = '<td colspan="3" style="color:green; font-weight: bold; text-align: center;">Gedaan</td>';
		} else {
			gedaan[tempgetal] = "";
			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" 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;
	}
	eindetabel += '</tbody></table> <button onclick="startIT()">Opslaan</button>';
	document.getElementById('bodyContent').innerHTML = tabel + eindetabel;
	mw.notify("Welkom!");
}

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

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){
	document.getElementById('Thema' + getal).disabled = true;
	document.getElementById('Opmerking' + getal).disabled = true;
	Thematemp[getal] = document.getElementById('Thema' + getal).value;
	Opmerkingtemp[getal] = document.getElementById('Opmerking' + getal).value;
	document.getElementById('Thema' + getal).value = "";
	document.getElementById('Opmerking' + getal).value = "";
}

function addArticleToList () {
	if (!text[1]["N"]) {
		text = JSON.parse(text);
	}
	addarticle = undefined;
	addarticle = document.getElementById('addarticle').value;
	for (var i=0, iLen=text.length; i<iLen; i++) {
		if (text[i].N == addarticle) Nummer = i;
	}
	if (!Nummer) {
		mw.notify("Deze pagina staat niet op de lijst. Hij is dus na pas in 2023 gemaakt. Of al eerder gecontroleerd door Rots61.");
	} else {
		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;";
			Knop1x[tempgetal] = "";
			Knop2x[tempgetal] = "";
			Knop3x[tempgetal] = '<td colspan="3" style="color:green; font-weight: bold;">Gedaan</td>';
		} else {
			gedaan[tempgetal] = "";
			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" 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;
	}
Nummer = undefined;
}

function startIT() {
	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(text);
}

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(text) {
	console.log(text);
	if (text[0] === '[') {
		text = JSON.parse(text);
	}
	console.log(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 op de OP van Rots61", { autoHide: false });
				}
				console.log(data.edit);
				document.getElementById('bodyContent').innerHTML = "Opslaan gelukt. Herlaad de pagina om hem opnieuw te gebruiken. ";
			});
	});
}

function getRandomNumber (text, nummer) {
	randomNumber = Math.floor(Math.random() * text.length) +1 ;
	if (text[randomNumber]["D"] === "D" ) {
		return getRandomNumber(text, nummer);
	} else {
		return randomNumber;
	}
}

if (mw.config.get('wgNamespaceNumber') === -1 && mw.config.get('wgTitle') === "Opschonen") { 
	var api = new mw.Api();
	var edit_token;
	var tempgetal;
	var temp;
	var Artikelr = [];
	var Artikeln = [];
	var Artikellink = [];
	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 getKnop3;
	var getKnop2;
	var getKnop1;
	var randomNumber;
	getJSONText().done( function(text) {
		console.log(text);
		if (text[0] === '[') {
		text = JSON.parse(text);
		}
		console.log(text);
		showProject(text);
		});
}

function startHints(){
	htmltext = document.getElementById('mw-content-text').innerHTML;
	paginalink = 'https://wikikids.nl/Wikikids:Opschonen#';
	document.getElementById('mw-content-text').innerHTML = '<span id="gadget-ophalen">Hints ophalen</span>'
	+ '<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>'
	+ '<div id="gadget-hint-geenlinks" style="color:red; display:none;">Er verwijzen geen andere artikels naar dit artikel. (<a href="' + paginalink + 'Geen_links">Wat moet ik doen?</a>)</div>'
	+ '<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-grootkopje" style="color:red; font-weight:bold; display:none;">Er staat een te groot kopje op dit artikel. (<a href="' + paginalink + 'Groot_kopje">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">Wat moet ik doen?</a>)</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 een gebruiker. (<a href="' + paginalink + 'Artikel_gemaakt_door_gebruiker">Wat moet ik doen?</a>)</div>'
	+ '<div id="gadget-hint-gecontroleerd" style="color:green; font-weight:bold; 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();
	checkIfChecked();
	getCategories();
	getLinksIn();
	setTimeout(removeloading,2500);
	// Gecontroleerd, gebruiker, extlink, vreemde link, http, geencat, geenlinks
	//Moet nog: weiniglinks, grootkopje, dp
}

function removeloading (){
	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.page;
		temp = temp[articleId].revisions.slots.main;
		console.log(temp);
		temp = temp["*"];
		return temp;
	});
}

function getCategories () {
	return api.get( {
		action:"query",
		prop: "categories",
		titles: articletitle,
		clshow: "!hidden",
	}).then( function (data) { 
		console.log(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 getBeginnetje () {
    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;
            }
            return beg;
    });
}

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') {
          		return temp.links.length;
            } else { 
            	return 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 () {
	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 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 { 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;
            	}
            }
    } );
}

var showHints = mw.util.getParamValue( 'projectopschonen' );
if (showHints) { 
	console.log("x");
	var articletitle = mw.config.get('wgPageName');
	var articleId = mw.config.get('wgArticleId');var beg = false;
	var api = new mw.Api();
	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;
	startHints();
}
Afkomstig van Wikikids , de interactieve Nederlandstalige Internet-encyclopedie voor en door kinderen. "https://wikikids.nl/index.php?title=Gebruiker:Rots61/Gadget-Opschonen.js&oldid=755793"