Suradnik:Ivi104/Skripte/Sakrivanje-svih-izmjena-suradnika-STARO.js

Izvor: Wikipedija

Napomena: Nakon objave možda ćete trebati očistiti međuspremnik svog preglednika kako biste vidjeli promjene.

  • Firefox / Safari: držite Shift i pritisnite Reload, ili pritisnite bilo Ctrl-F5 ili Ctrl-R (⌘-R na Macu)
  • Google Chrome: pritisnite Ctrl-Shift-R (⌘-Shift-R na Macu)
  • Internet Explorer / Edge: držite Ctrl i kliknite Refresh, ili pritisnite Ctrl-F5
  • Opera: pritisnite Ctrl-F5.
function sakrijIzmjene() {
    var sveIzmjene = document.querySelectorAll('ul.mw-contributions-list>li');
    sveIzmjene.forEach(function(izmjena, index) {
        var checkBox = document.createElement('input');
        checkBox.className = 'webfonts-changed';
        checkBox.type = 'checkbox';
        var idIzmjene = sveIzmjene[index].getAttribute('data-mw-revid');
        checkBox.setAttribute('name', 'ivi104-revdel-checkbox');
        checkBox.setAttribute('value', idIzmjene);

        //je li izmjena već sakrivena?
        if (sveIzmjene[index].getElementsByClassName('history-deleted').length > 0) {
            checkBox.setAttribute('disabled', 'disabled');
        }
        sveIzmjene[index].prepend(checkBox);
    });

    //onemogući ponovno klikanje poveznice za start
    document.getElementsByClassName("ivi104-revdel-startbutton")[0].removeAttribute('onclick');

    var gumbSakrij = document.createElement('input');
    gumbSakrij.type = 'submit';
    gumbSakrij.className = 'cdx-button webfonts-changed';
    gumbSakrij.value = 'Sakrij odabrane izmjene';
    gumbSakrij.setAttribute('onclick', 'printChecked()');
    document.getElementsByClassName('mw-contributions-list')[0].prepend(gumbSakrij);
}

function printChecked() {
    document.getElementsByTagName('input');
    var checkedBoxes = document.querySelectorAll('input[name=ivi104-revdel-checkbox]:checked');
    var checkedText = [];
    if (checkedBoxes.length == 0) {
        alert("Ništa nije označeno, molim pokušjte ponovno!");
    } else {
        checkedBoxes.forEach(function(box, index) {
            checkedText.push(box.getAttribute('value'));
        });


        var odabirSakrivanja = "";
        var regex = new RegExp("^[abc]{1,3}$");
        if (window.confirm("Korak 1/3\nŽelite li zaista sakriti izmjene: \n" + checkedText.join(", "))) {
            odabirSakrivanja = prompt("Korak 2/3\nOdaberite što sve želite sakriti:\n - upišite slovo 'a' za sakrivanje teksta izmjene\n - upišite slovo 'b' za sakrivanje sažetka\n - upišite slovo 'c' za sakrivanje imena suradnika\nDopušteno je unijeti više slova (unos 'abc' je u redu)");
            if (odabirSakrivanja == null || odabirSakrivanja == "" || regex.test(odabirSakrivanja) == false) {
                window.alert("Pogrešan unos, molim pokušajte ponovno.");
            } else {
                var razlog = window.prompt("Korak 3/3\nMolim unesite razlog sakrivanja:\n - unesite '1' za 'kršenje autorskih prava'\n - unesite '2' za 'neprimjereni osobni podatci'\n - unesite '3' za '[[Wikipedija:Vandalizam|vandalizam]]'\n - unesite '4' za 'grafit'\nTakođer možete ručno unijeti razlog:");

                validacija(checkedText, odabirSakrivanja, razlog);
            }
        } else {
            alert("Molim ispravite odabir.");
        }
    }

}

function validacija(checkedTextAny, odabirSakrivanjaAny, razlogAny) {
    var checkedText = Array.of(checkedTextAny);
    var odabirSakrivanja = String(odabirSakrivanjaAny);
    var razlog = String(razlogAny);

    var odabirArray = [];
    if (odabirSakrivanja.includes("a")) {
        odabirArray.push("content");
    }
    if (odabirSakrivanja.includes("b")) {
        odabirArray.push("comment");
    }
    if (odabirSakrivanja.includes("c")) {
        odabirArray.push("user");
    }
    var odabirString = odabirArray.join('|');

    var razlogString = "";
    if (razlog == "1") {
        razlogString = "kršenje autorskih prava";
    } else if (razlog == "2") {
        razlogString = "neprimjereni osobni podatci";
    } else if (razlog == "3") {
        razlogString = "[[Wikipedija:Vandalizam|vandalizam]]";
    } else if (razlog == "4") {
        razlogString = "grafit";
    } else {
        razlogString = razlog;
    }

    var checkedString = checkedText.toString().replaceAll(',', '|');
    //window.alert(checkedString + "\n" + odabirString + "\n" + razlogString);
    if (confirm("Posljednja potvrda - zaista sakriti?")) {
        apiPoziv(checkedString, odabirString, razlogString);
    } else window.alert("Otkazano. Ništa nije izmjenjeno.");
}

function apiPoziv(checkedString, odabirString, razlogString) {
    var params = {
            action: 'revisiondelete',
            type: 'revision',
            ids: String(checkedString),
            format: 'json',
            hide: String(odabirString),
            reason: String(razlogString),
            tags: 'revdel-api',
        },

        api = new mw.Api();
        console.log(params);

    api.postWithToken('csrf', params).done(function(data) {
        console.log(data);
    });
    window.alert("Dovršeno! Molim osvježite stranicu.");
    //location.reload();
}

$(document).ready(function() {
    if (location.search.includes('title=Posebno%3ADoprinosi') ||
        location.href.includes('Special:Contributions') || location.href.includes('Posebno:Doprinosi') || location.href.includes('Posebno%3ADoprinosi')) {

        var gumbStart = document.createElement('a');
        gumbStart.className = "ivi104-revdel-startbutton";
        gumbStart.innerHTML = 'sakrij više izmjena';
        gumbStart.setAttribute('onclick', 'sakrijIzmjene()');
        gumbStart.style.paddingLeft = '10px';

        document.querySelectorAll('span.mw-changeslist-links')[0].after(gumbStart);

    }
});