Gebruiker:Rots61/Gadget-Opschonen2.js: verschil tussen versies

Uit Wikikids
Naar navigatie springen Naar zoeken springen
(Nieuwe pagina aangemaakt met '→‎jshint sub:true maxerr:100000: // Gadget gemaakt door User:Rots61, maar dan nu beter. // Documentatie op WikiKids:Opschonen var text; var api = new mw...')
 
 
Regel 7: Regel 7:
 
var Nummer;
 
var Nummer;
  
function showProjectOpschonen(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 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. "
 
        + 'Als je specifieker wilt controleren klik dan <a href="https://wikikids.nl/Speciaal:Opschonen?action=help">hier</a>. <br>Er zijn ook statistieken beschikbaar voor deze pagina, deze kun je <a href="https://wikikids.nl/Speciaal:Opschonen?action=stats">hier</a> vinden. '
 
        + 'Om ervoor te zorgen dat je niets verliest, wordt je altijd gevraagd of je de pagina af wilt sluiten. '
 
        + '<br><input type="text" id="addarticle" name="addarticle"> <button onclick="addArticleToListOpschonen()">Voeg toe</button><br>'
 
        + '<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 + tabelstuk3 + '<th width="1">Opmerking<br><span style="color:gray;">van de andere gebruiker</span></th></tr>';
 
    showSkipDone = mw.util.getParamValue('notdone');
 
    //Zorg ervoor dat je al gecontroleerde pagina's niet ziet
 
    showDone = mw.util.getParamValue('done');
 
    //Zorg ervoor dat je alle pagina's ziet waar deze gebruiker bij staat.
 
    showUser = mw.util.getParamValue('user');
 
    showStartwith = mw.util.getParamValue('startwith');
 
    showTo = mw.util.getParamValue('to');
 
    showFrom = mw.util.getParamValue('from');
 
    showAantal = 51;
 
    showSkipDone = true;
 
 
    lengtetext = text.length;
 
    while (tempnumber < showAantal) {
 
        Artikeln[tempgetal] = Math.round(Math.random()*text.length,1);
 
        if (Artikeln[tempgetal] === 'exit') {
 
            tempnumber = -1;
 
            showAantal = -1;
 
        } else {
 
            Artikelr[tempgetal] = text[Artikeln[tempgetal]]["N"];
 
            if (text[Artikeln[tempgetal]]["D"]) {
 
                gedaan[tempgetal] = " disabled";
 
                linkextra[tempgetal] = "Done";
 
                Knop1x[tempgetal] = "";
 
                Knop3x[tempgetal] = '<td colspan="2" 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="Change1Opschonen(' + tempgetal + ');"></td>';
 
                Knop3x[tempgetal] = '<td><input type="radio" id="Radio3.' + tempgetal + '" name="Knop' + tempgetal + '" onclick="Change3Opschonen(' + 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">';
 
            }
 
            console.log(Artikeln[tempgetal] + ": " + Artikelr[tempgetal]);
 
            Artikellink[tempgetal] = '<a href="https://wikikids.nl/' + Artikelr[tempgetal] + '?projectopschonen=x&opschonengecontroleerd=' + linkextra[tempgetal] + '" target="_blank">' + Artikelr[tempgetal] + '</a>' + vorigeuser[tempgetal];
 
            tabel += '<tr> <td>' + Artikellink[tempgetal] + '</td>' + Knop1x[tempgetal] + Knop3x[tempgetal] + '<td>' + Opmerking[tempgetal] + '</td> </tr>';
 
            tempgetal += 1;
 
            if (showMax) {
 
                tempnumber = allNummer;
 
            } else {
 
                tempnumber = tempgetal;
 
            }
 
        }
 
    }
 
 
    eindetabel += '</tbody></table> <button onclick="startITOpschonen()">Opslaan</button> Dit kan een paar seconden duren. Wacht totdat je ziet dat de wijziging is opgeslagen. ';
 
    document.getElementById('bodyContent').innerHTML = tabel + eindetabel;
 
    mw.notify("Welkom!");
 
}
 
 
 
function Change1Opschonen(getal) {
 
    document.getElementById('Opmerking' + getal).disabled = false;
 
    Opmerkingtempx = document.getElementById('Opmerking' + getal).value;
 
    document.getElementById('Opmerking' + getal).value = Opmerkingtemp[getal] ? Opmerkingtemp[getal] : Opmerkingtempx ? Opmerkingtempx : "";
 
}
 
 
function Change3Opschonen(getal) {
 
    Opmerkingtemp[getal] = document.getElementById('Opmerking' + getal).value;
 
    document.getElementById('Opmerking' + getal).disabled = true;
 
    document.getElementById('Opmerking' + getal).value = "";
 
}
 
  
 
function fromPageaddPageOpschonen() {
 
function fromPageaddPageOpschonen() {
     var text;
+
     artikel = mw.config.get('wgTitle');
    var artikel;
+
     user = mw.config.get('wgUserName');
    var checkconfirm;
+
     checkopmerking = prompt("Mogelijke opmerking over het artikel: ");
    var checkopmerking;
+
    if (checkopmerking === null) return;
    getJSONTextOpschonen().done(function (text) {
+
     response = callSite({checked: artikel, user: user, opmerking: checkopmerking});  
        fromPageCheckOnListOpschonen(text);
+
     mw.notify(response);
    });
 
}
 
 
 
function fromPageCheckOnListOpschonen(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 {
 
        text[Nummer]["D"] = "D";
 
        text[Nummer]["U"] = mw.config.get('wgUserName');
 
     }
 
    fromPageSaveOpschonen(text);
 
}
 
 
 
function fromPageSaveOpschonen(text) {
 
    if (alreadydone) {
 
    } else if (!Nummer) {
 
        setTimeout(function () {fromPageSaveOpschonen(text)}, 250);
 
    } else {
 
        checkopmerking = prompt("Mogelijke opmerking over het artikel: ");
 
        if (checkopmerking === null) {
 
        } else if (checkopmerking === '') {
 
            editPageNowOpschonen(text);
 
        } else {
 
            text[Nummer]["O"] = checkopmerking;
 
            editPageNowOpschonen(text);
 
        }
 
    }
 
}
 
 
 
function addArticleToListOpschonen(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['Radio3'][tempgetal] = document.getElementById('Radio3.' + tempgetal).checked;
 
                Waardes['Opmerking'][tempgetal] = document.getElementById('Opmerking' + tempgetal).value;
 
                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";
 
            linkextra[tempgetal] = "Done";
 
            Knop1x[tempgetal] = "";
 
            Knop3x[tempgetal] = '<td colspan="2" style="color:green; font-weight: bold;">Gedaan</td>';
 
        } else {
 
            gedaan[tempgetal] = "";
 
            linkextra[tempgetal] = "Niet";
 
            Knop1x[tempgetal] = '<td><input type="checkbox" id="checkbox.' + tempgetal + '" name="Knop' + tempgetal + '" onclick="Change1Opschonen(' + tempgetal + ');"></td>';
 
            Knop3x[tempgetal] = '<td></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">';
 
        }
 
        console.log(Artikeln[tempgetal] + ": " + Artikelr[tempgetal]);
 
        Artikellink[tempgetal] = '<a href="https://wikikids.nl/' + Artikelr[tempgetal] + '?projectopschonen=x&opschonengecontroleerd=' + linkextra[tempgetal] + '" target="_blank">' + Artikelr[tempgetal] + '</a>' + vorigeuser[tempgetal];
 
        tabel += '<tr> <td>' + Artikellink[tempgetal] + '</td>' + Knop1x[tempgetal] + Knop3x[tempgetal] + '<td>' + Opmerking[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('Radio3.' + tempgetal).checked = Waardes['Radio3'][tempgetal];
 
            document.getElementById('Opmerking' + tempgetal).value = Waardes['Opmerking'][tempgetal];
 
            document.getElementById('Opmerking' + tempgetal).disabled = Waardes['Opmerkingdis'][tempgetal];
 
            tempgetal += 1;
 
        }
 
        if (comesfromcookie) {
 
            document.getElementById('Radio1.' + tempgetalxyz).checked = true;
 
            Change1Opschonen(tempgetalxyz);
 
            comesfromcookie = false;
 
        }
 
        Nummer = undefined;
 
    }
 
}
 
 
 
function editPageNowOpschonen(textx) {
 
    while (textx) {
 
        text = textx;
 
        textx = false;
 
    }
 
    if (Array.isArray(text)) {
 
        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);
 
                    isOpgeslagenOpschonen = true;
 
                    document.getElementsByTagName("h1")[0].textContent = "Opslaan gelukt!";
 
                    document.getElementById('bodyContent').innerHTML = "Herlaad de pagina.";
 
                });
 
        });
 
}
 
 
 
function startITOpschonen() {
 
    if (!Array.isArray(text)) {
 
        text = JSON.parse(text);
 
    }
 
    tempgetal = 1;
 
    highArtikelr = Artikelr.length;
 
    while (tempgetal !== highArtikelr) {
 
        if (text[Artikeln[tempgetal]]["D"]) {
 
        } else {
 
            console.log(text[Artikeln[tempgetal]]);
 
            getKnop3 = document.getElementById("Radio3." + tempgetal);
 
            if (getKnop3 && getKnop3.checked) {
 
            } else {
 
                var getopmerking = document.getElementById("Opmerking" + tempgetal);
 
                if (getopmerking && getopmerking.value) {
 
                    getopmerking = getopmerking.value;
 
                } else {
 
                    getopmerking = "";
 
                }
 
                getKnop1 = document.getElementById("Radio1." + 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 (getopmerking) {
 
                    text[Artikeln[tempgetal]]["U"] = mw.config.get('wgUserName');
 
                    text[Artikeln[tempgetal]]["O"] = getopmerking;
 
                }
 
            }
 
        }
 
        tempgetal += 1;
 
    }
 
    editPageNowOpschonen(text);
 
}
 
 
 
function getJSONTextOpschonen() {
 
var urlWS = 'https://example.com/';
 
var request = new XMLHttpRequest();
 
request.open('GET', urlWS, false);
 
request.send(null);
 
if (request.status === 200) {
 
text = JSON.parse(request.responseText);
 
}
 
 
}
 
}
  
Regel 414: Regel 72:
 
         action: "query",
 
         action: "query",
 
         prop: "linkshere",
 
         prop: "linkshere",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
         lhnamespace: "100",
 
         lhnamespace: "100",
 
         lhlimit: "50",
 
         lhlimit: "50",
Regel 433: Regel 91:
 
         action: "query",
 
         action: "query",
 
         prop: "revisions",
 
         prop: "revisions",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
         rvlimit: "1",
 
         rvlimit: "1",
 
         rvprop: "content|size",
 
         rvprop: "content|size",
Regel 450: Regel 108:
 
         prop: "categories",
 
         prop: "categories",
 
         clcategories: "Categorie:Wikikids:Doorverwijspagina",
 
         clcategories: "Categorie:Wikikids:Doorverwijspagina",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
     }).then(function (data) {
 
     }).then(function (data) {
 
         temp = data.query.pages;
 
         temp = data.query.pages;
Regel 464: Regel 122:
 
         action: "query",
 
         action: "query",
 
         prop: "categories",
 
         prop: "categories",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
         clshow: "!hidden",
 
         clshow: "!hidden",
 
     }).then(function (data) {
 
     }).then(function (data) {
Regel 478: Regel 136:
 
         action: "query",
 
         action: "query",
 
         prop: "revisions",
 
         prop: "revisions",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
         rvlimit: "1",
 
         rvlimit: "1",
 
         rvprop: "user",
 
         rvprop: "user",
Regel 499: Regel 157:
 
         prop: "categories",
 
         prop: "categories",
 
         clcategories: "Category:Woordenschat",
 
         clcategories: "Category:Woordenschat",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
     }).then(function (data) {
 
     }).then(function (data) {
 
         temp = data.query.pages;
 
         temp = data.query.pages;
Regel 515: Regel 173:
 
         prop: "categories",
 
         prop: "categories",
 
         clcategories: "Category:WikiKids:Beginnetje",
 
         clcategories: "Category:WikiKids:Beginnetje",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
     }).then(function (data) {
 
     }).then(function (data) {
 
         temp = data.query.pages;
 
         temp = data.query.pages;
Regel 529: Regel 187:
 
         action: "query",
 
         action: "query",
 
         prop: "links",
 
         prop: "links",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
         pllimit: "5000",
 
         pllimit: "5000",
 
     }).then(function (data) {
 
     }).then(function (data) {
Regel 547: Regel 205:
 
         action: "query",
 
         action: "query",
 
         prop: "linkshere",
 
         prop: "linkshere",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
         lhnamespace: "0",
 
         lhnamespace: "0",
 
         lhlimit: "50",
 
         lhlimit: "50",
Regel 564: Regel 222:
 
         document.getElementById("gadget-hint-gecontroleerd").style.display = "";
 
         document.getElementById("gadget-hint-gecontroleerd").style.display = "";
 
     } else {
 
     } else {
         getJSONTextOpschonen().done(function (text) {
+
    title = mw.config.get('wgTitle');
             for (var i = 0, iLen = text.length; i < iLen; i++) {
+
         callSite({check: mw.config.get('wgTitle')}).done(function (resp) {
                if (text[i].N == articletitle) checkChecked = text[i]["D"];
+
             if (resp[title].checked) {
            }
 
            if (checkChecked === "D") {
 
 
                 document.getElementById("gadget-hint-gecontroleerd").style.display = "";
 
                 document.getElementById("gadget-hint-gecontroleerd").style.display = "";
 
             }
 
             }
 
         });
 
         });
 
     }
 
     }
 +
}
 +
 +
function callSite(obj) {
 +
obj.check; // return {Appel: {checked: true}}
 +
obj.stats = true; // return stats;
 +
obj.checked; // Zorgt ervoor dat die afgevinkt wordt
 +
obj.user;  //
 +
obj.opmerking //
 
}
 
}
  
Regel 580: Regel 244:
 
         generator: "links",
 
         generator: "links",
 
         prop: "categories",
 
         prop: "categories",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
         gpllimit: "5000",
 
         gpllimit: "5000",
 
         cllimit: "5000",
 
         cllimit: "5000",
Regel 599: Regel 263:
 
         action: "query",
 
         action: "query",
 
         prop: "extlinks|categories",
 
         prop: "extlinks|categories",
         titles: articletitle,
+
         titles: mw.config.get('wgPageName'),
 
         ellimit: "5000",
 
         ellimit: "5000",
 
     }).then(function (data) {
 
     }).then(function (data) {
Regel 626: Regel 290:
 
         }
 
         }
 
     });
 
     });
}
 
 
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 = "";
 
    }
 
 
}
 
}
  
Regel 699: Regel 350:
 
};
 
};
 
if (mw.util.getParamValue('action') === 'stats') {
 
if (mw.util.getParamValue('action') === 'stats') {
     getJSONTextOpschonen().done(function (text) {
+
     callSite({'stats':true}).done(function (text) {
 
             statsOpschonen(text);
 
             statsOpschonen(text);
 
         });
 
         });
 
     } else {
 
     } else {
        showAantal = parseInt(mw.util.getParamValue('aantal'));
 
 
         showUser = mw.util.getParamValue('user');
 
         showUser = mw.util.getParamValue('user');
 
         showStartwith = mw.util.getParamValue('startwith');
 
         showStartwith = mw.util.getParamValue('startwith');
 
         var tussenvoegsel;
 
         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;
 
         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 temp;
        var Artikelr = [];
 
        var Artikeln = [];
 
        var Artikellink = [];
 
        var getUser;
 
        var Opmerkingtemp = [];
 
        var Opmerkingtempx;
 
        var Knop1x = [];
 
        var Knop3x = [];
 
        var Opmerking = [];
 
        var tabel;
 
        var eindetabel;
 
        var highArtikelr;
 
        var showAantal;
 
        var gedaan = [];
 
        var vorigeuser = [];
 
        var linkextra = [];
 
        var getKnop3;
 
        var getKnop1;
 
        var randomNumber;
 
        var showAll;
 
        var showSkipDone;
 
        var showSkipSkipped;
 
        var showDone;
 
        var addarticle;
 
 
         var paginalink;
 
         var paginalink;
        var checkChecked;
 
        var allNummer = 1;
 
        var showFrom;
 
        var showTo;
 
        var lengtetext;
 
        var showMax;
 
        var Waardes = { "Radio1": [], "Radio3": [], "Opmerking": [], "Opmerkingdis": []};
 
        //varvar
 
        getJSONTextOpschonen().done(function (text) {
 
            showProjectOpschonen(text);
 
        });
 
 
     }
 
     }
 
}
 
}
Regel 754: Regel 367:
 
     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>';
 
     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
 
     //varvar
    var articletitle = mw.config.get('wgPageName');
 
 
     var articleId = mw.config.get('wgArticleId');
 
     var articleId = mw.config.get('wgArticleId');
 
     var beg = false;
 
     var beg = false;
Regel 760: Regel 372:
 
     var link = 0;
 
     var link = 0;
 
     var temp;
 
     var temp;
    var CheckChecked;
 
 
     var articlesize;
 
     var articlesize;
 
     var linksopartikel;
 
     var linksopartikel;

Huidige versie van 29 jul 2025 om 01:11

/* jshint sub:true maxerr:100000 */
// Gadget gemaakt door [[User:Rots61]], maar dan nu beter. 
// Documentatie op [[WikiKids:Opschonen]]
var text;
var api = new mw.Api();
var alreadydone;
var Nummer;


function fromPageaddPageOpschonen() {
    artikel = mw.config.get('wgTitle');
    user = mw.config.get('wgUserName');
    checkopmerking = prompt("Mogelijke opmerking over het artikel: ");
    if (checkopmerking === null) return;
    response = callSite({checked: artikel, user: user, opmerking: checkopmerking}); 
    mw.notify(response);
}

function startHintsOpschonen() {
    paginalink = 'https://wikikids.nl/Wikikids:Wikiproject/Opschonen#';
    document.getElementById('mw-content-text').innerHTML = '<div id="gadget-ophalen">Hints ophalen</div>'
    	+ '<div id="gadget-hint-standaard">Er kunnen taal of spellingsfouten in het artikel staan. De opmaak kan te wensen overlaten. Ook kan de informatie niet kloppen. </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-haslinks-dp" style="display:none;">Er wordt gelinkt naar deze doorverwijspagina. (<a href="' + paginalink + 'Artikel_al_gecontroleerd">Wat moet ik doen?</a>)</div>'
        + '<div id="gadget-hint-hanssain" 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-mike1023" style="color:green; font-weight:bold; display:none;">Artikel is geschreven door Mike1023. (<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();
    getTextLengthOpschonen();
    getBegOpschonen();
    checkIfDPOpschonen();
    getLinksOut();
    checkIfChecked();
    getWoordenschat();
    getExterneLinks();
    setTimeout(removeLoadingOpschonen, 1500);
}

function removeLoadingOpschonen() {
    if (!woordenschat) {
    	if (isDP) {
    		if (linksopartikel !== 0) {
    			console.log(linksopartikel);
    			document.getElementById('gadget-hint-haslinks-dp').style.display = "";
    		}
    	} else {
    		getLinksIn();
   		    getCategoriesOpschonen();
    		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: mw.config.get('wgPageName'),
        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 getTextLengthOpschonen() {
    return api.get({
        action: "query",
        prop: "revisions",
        titles: mw.config.get('wgPageName'),
        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 checkIfDPOpschonen(){
    return api.get({
        action: "query",
        prop: "categories",
        clcategories: "Categorie:Wikikids:Doorverwijspagina",
        titles: mw.config.get('wgPageName'),
    }).then(function (data) {
        temp = data.query.pages;
        temp = temp[articleId];
        if (typeof temp.categories !== 'undefined') {
            isDP = true;
        }
    });
}

function getCategoriesOpschonen() {
    return api.get({
        action: "query",
        prop: "categories",
        titles: mw.config.get('wgPageName'),
        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: mw.config.get('wgPageName'),
        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-hanssain").style.display = "";
        }
        if (temp === "Mike1023") {
            document.getElementById("gadget-hint-mike1023").style.display = "";
        }
    });
}

function getWoordenschat() {
    return api.get({
        action: "query",
        prop: "categories",
        clcategories: "Category:Woordenschat",
        titles: mw.config.get('wgPageName'),
    }).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 getBegOpschonen() {
    return api.get({
        action: "query",
        prop: "categories",
        clcategories: "Category:WikiKids:Beginnetje",
        titles: mw.config.get('wgPageName'),
    }).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: mw.config.get('wgPageName'),
        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: mw.config.get('wgPageName'),
        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() {
    let valuechecked = mw.util.getParamValue('opschonengecontroleerd');
    if (valuechecked === "Done") {
        document.getElementById("gadget-hint-gecontroleerd").style.display = "";
    } else {
    	title = mw.config.get('wgTitle');
        callSite({check: mw.config.get('wgTitle')}).done(function (resp) {
            if (resp[title].checked) {
                document.getElementById("gadget-hint-gecontroleerd").style.display = "";
            }
        });
    }
}

function callSite(obj) {
	obj.check; // return {Appel: {checked: true}}
	obj.stats = true; // return stats;
	obj.checked; // Zorgt ervoor dat die afgevinkt wordt 
	obj.user;  //
	obj.opmerking //
}

function getDP() {
    api.get({
        action: "query",
        generator: "links",
        prop: "categories",
        titles: mw.config.get('wgPageName'),
        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: mw.config.get('wgPageName'),
        ellimit: "5000",
    }).then(function (data) {
        temp = data.query.pages;
        temp = temp[articleId].extlinks;
        if (typeof temp === 'undefined') {
        } else {
            var tempgetal = 0;
            var aantallinks = 0;
            while (typeof temp[tempgetal] !== 'undefined') {
                if (temp[tempgetal]["*"].startsWith("http:")) {
                    document.getElementById("gadget-hint-http").style.display = "";
                } else if (temp[tempgetal]["*"].startsWith("https:")) {
                	aantallinks +=1;
                } else {
                    document.getElementById("gadget-hint-vreemdelink").style.display = "";
                }
                tempgetal += 1;
            }
            if (beg === true) {
            	aantallinks -=6;
            } 
            if (aantallinks > 0) {
            	document.getElementById("gadget-hint-extlink").style.display = "";
            }
        }
    });
}

function statsOpschonen(text){
	var xaantal = {"totaal": 300}; 
	var opschonenuser = [];
	for (const x of text) { 
		if (x.D === "D") {
			xaantal.totaal += 1;
			if (x.U) {
				opschonenuser.push(x.U);
				if (xaantal[x.U]) {
					xaantal[x.U] += 1;
				} else {
					xaantal[x.U] = 1;
				}
			}
		}
	} 
	var aantalwikikidsartikelen = 5000;
	api.get({
	    action: "query",
	    meta: 'siteinfo',
	    siprop: 'statistics'
	}).then(function (ret) {
		aantalwikikidsartikelen = ret.query.statistics.articles;
		console.log('X', ret, aantalwikikidsartikelen);
		opschonenuser = removeDuplicates(opschonenuser);
	    document.getElementsByTagName("h1")[0].textContent = "Speciaal:Opschonen";
	    document.title = "Opschonen - WikiKids";
		var tobody = `<br> Er zijn totaal ${xaantal.totaal} artikelen gecontroleerd. Dat is ${Math.round((xaantal.totaal/aantalwikikidsartikelen) * 100 * 1000) / 1000}% van WikiKids. Hieronder staan alle gebruikers die minimaal een artikel hebben gecontroleerd. <ul>`;
		tobody += `<div style="background-color:#eeeeee; width:400px;height:18px;float:left;margin-right:5px;border:1px solid #bbb;"><div style="background-color:#119000;width:${(xaantal.totaal/aantalwikikidsartikelen) * 100 * 4}px;height:18px;"><div style="font-weight:bold;width:400px;text-align:center;height:18px;line-height:18px;color:black;"><abbr title="7&nbsp;%"></abbr>${Math.round((xaantal.totaal/aantalwikikidsartikelen) * 100 * 1000) / 1000} / 100%</div></div></div><br>`;
		console.log(aantalwikikidsartikelen);
		for (const x of opschonenuser) {
			tobody += '<li>' + x + ' (aantal: ' + xaantal[x] + ')</li>';
		}
		tobody += '</ul>';
		document.getElementById('bodyContent').innerHTML = terugnaaropschonen + tobody;
	});
}
	
function removeDuplicates(arr) {
    let unique = arr.reduce(function (acc, curr) {
        if (!acc.includes(curr))
            acc.push(curr);
        return acc;
    }, []);
    return unique;
}

if (mw.config.get('wgNamespaceNumber') === -1 && mw.config.get('wgTitle') === "Opschonen") {
	var terugnaaropschonen = '<div id="contentSub"><span class="subpages">&lt; <a href="/Speciaal:Opschonen" title="Speciaal:Opschonen">Speciaal:Opschonen</a></span></div>';
    document.getElementById("footer-places").innerHTML += '<li id="footer-places-gadget-opschonen">Script gemaakt door <a href="/User:Rots61" title="Gebruiker:Rots61">Rots61</a></li>';
    var isOpgeslagenOpschonen = false;
    window.onbeforeunload = function() {
		if (!isOpgeslagenOpschonen) {
			return 'Weet je zeker dat je deze pagina wilt verlaten?';
		}
		return undefined;
	};
	if (mw.util.getParamValue('action') === 'stats') {
    	callSite({'stats':true}).done(function (text) {
            statsOpschonen(text);
        });
    } else {
        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 temp;
        var paginalink;
    }
}

var showHints = mw.util.getParamValue('projectopschonen');
if (showHints) {
    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 articleId = mw.config.get('wgArticleId');
    var beg = false;
    var isDP = false; 
    var link = 0;
    var temp;
    var articlesize;
    var linksopartikel;
    var woordenschat = false;
    startHintsOpschonen();
}

if ((mw.config.get('wgNamespaceNumber') === 0) && (mw.config.get('wgArticleId') > 1)) {
    document.getElementById("mw-panel").innerHTML += `<nav id="p-op" style="background-color: #1D9CB9" class="vector-menu vector-menu-portal portal"
    aria-labelledby="p-op-label" role="navigation">
    <h3 id="p-op-label">
        <span>Opschonen</span>
    </h3>
    <div class="body vector-menu-content" style="border-bottom: 1px solid #1D9CB9">
        <ul class="vector-menu-content-list">
            <li>
                <a href="https://wikikids.nl/Speciaal:Opschonen">Speciaal:Opschonen</a>
            </li>
            <li>
            	<a href="https://wikikids.nl/${mw.config.get('wgPageName')}?projectopschonen=x">Opschoon hints</a>
            </li>
            <li>
                <button onclick="fromPageaddPageOpschonen()">Gecontroleerd</button>
            </li>
        </ul>
    </div>
</nav>`;
}
Afkomstig van Wikikids , de interactieve Nederlandstalige Internet-encyclopedie voor en door kinderen. "https://wikikids.nl/index.php?title=Gebruiker:Rots61/Gadget-Opschonen2.js&oldid=957902"