Suradnik:Ivi104/Skripte/Glas.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.
//Glas
mw.loader.using('oojs-ui-core').done(function() {
    if (location.href.includes('Ivi104/Skripte/Glas')) {
        var textboxGlas = document.createElement('input');
        textboxGlas.type = 'text';
        textboxGlas.id = 'ivi-glas-input';
        textboxGlas.style.padding = '6px 12px';
        textboxGlas.style.width = '200px';
        textboxGlas.addEventListener("keyup", function(event) {
            if (event.isTrusted == true && event.key == "Enter") {
              // Cancel the default action, if needed
              event.preventDefault();
              // Trigger the button element with a click
              document.getElementById("ivi-glas-gumb").click();
            }
          });
        document.getElementById('ivi-glas-text').after(textboxGlas);

        var gumbProvjeri = document.createElement('span');
        gumbProvjeri.type = 'button';
        gumbProvjeri.id='ivi-glas-gumb';
        gumbProvjeri.classList.add('cdx-button', 'cdx-button--action-progressive');
        gumbProvjeri.style.marginLeft = '5px';
        gumbProvjeri.style.verticalAlign = 'bottom';
        gumbProvjeri.innerText = 'Provjeri';
        gumbProvjeri.setAttribute('onclick', 'provjeri()');
        document.getElementById('ivi-glas-input').after(gumbProvjeri);
        //Linkback: [[User:Ivi104/Skripte/Glas.js]]

    }
});

function provjeri() {
    document.getElementById('ivi-glas-main-blocked').innerHTML = '';
    document.getElementById('ivi-glas-main-allns').innerHTML = '';
    document.getElementById('ivi-glas-main-gip').innerHTML = '';
    document.getElementById('ivi-glas-main-year-allns').innerHTML = '';
    document.getElementById('ivi-glas-main-year-gip').innerHTML = '';

    var username = document.getElementById('ivi-glas-input').value;
    var pronoun = 'Suradnik';

    document.getElementById('ivi-glas-status').innerText = 'provjeravam postoji li suradnik...';

    //1. - podatci o suradniku i najstariji doprinos
    var checUserExistsParams = {
            "action": "query",
            "format": "json",
            "list": "users|usercontribs",
            "usprop": "editcount|gender|registration|groups|blockinfo",
            "ususers": username,
            "uclimit": "1",
            "ucuser": username,
            "ucdir": "newer",
            "ucprop": "timestamp"
        },
        api = new mw.Api();
    api.get(checUserExistsParams).done(function(data) {
        //ako suradnik ne postoji
        if (data.query.users[0].missing == '') {
            var nePostoji = document.createElement('span');
            nePostoji.style.color = 'red';
            nePostoji.innerHTML = 'Suradnik <b>' + username + '</b> ne postoji!';
            document.getElementById('ivi-glas-status').append(nePostoji);

            //ako suradnik postoji
        } else {
            document.getElementById('ivi-glas-status').innerText = 'Suradnik postoji - gledam uvjete...';
            pronoun = (data.query.users[0].gender == 'female' ? 'Suradnica' : 'Suradnik');

            //provjeri je li suradnik blokiran
            if (data.query.users[0].blockid) {
                var datumIsteka = new Date(data.query.users[0].blockexpiry);
                var sedamDana = new Date();
                sedamDana.setUTCDate(sedamDana.getDay() - 7);
                var blokiran = document.createElement('span');
                var blockedPronoun = (data.query.users[0].gender == 'female' ? ' blokirana.' : ' blokiran.');
                blokiran.innerHTML = pronoun + ' je <span id="ivi-glas-blocked' + blockedPronoun + '</span>.';
                document.getElementById('ivi-glas-main-blocked').append(blokiran);
                document.getElementById('ivi-glas-main-blocked').append(blockedPronoun);

                if (+datumIsteka < +sedamDana) {
                    blokiran.append(' Blok završava za manje od tjedan dana, molim ručno provjerite hoće li blok završiti prije zaključivanja glasovanja.');
                    document.getElementById('ivi-glas-main-blocked').style.color = 'orange';
                } else {
                    document.getElementById('ivi-glas-main-blocked').style.color = 'red';
                    //return zavrseno();
                }

            }

            var registriran = document.createElement('span');
            //provjeri ima li suradnik ijednu izmjenu
            if (data.query.users[0].editcount > 0) {
                var prviEdit = String(data.query.usercontribs[0].timestamp).split("T");

                registriran.innerHTML = pronoun + ' ukupno ima <span id="ivi-glas-editcount">' + data.query.users[0].editcount + ' izmjena</span>, prvu na datum <span id="ivi-glas-firstedit">' + prviEdit[0] + ' u ' + prviEdit[1].replace('Z', '') + '</span>.';

                document.getElementById('ivi-glas-main-allns').append(registriran);

                //provjera prvog reda - editcount
                if (parseInt(data.query.users[0].editcount) < 200) {
                    //error
                    document.getElementById('ivi-glas-editcount').style.color = 'red';
                    var nedovoljanEditCount = document.createElement('div');
                    nedovoljanEditCount.innerText = pronoun + ' nema dovoljno izmjena!';
                    nedovoljanEditCount.className = 'errorbox';
                    document.getElementById('ivi-glas-main-allns').append(nedovoljanEditCount);
                    return zavrseno();
                } else {
                    document.getElementById('ivi-glas-editcount').style.color = 'green';
                }

                //provjera prvog reda - date
                var danas = new Date();
                var dvaMjeseca = new Date();
                dvaMjeseca.setMonth(dvaMjeseca.getMonth() - 2);
                var prviEditDate = Date.parse(prviEdit[0]);

                if (+dvaMjeseca > +prviEditDate)
                    document.getElementById('ivi-glas-firstedit').style.color = 'green';
                else {
                    //error
                    document.getElementById('ivi-glas-firstedit').style.color = 'red';
                    var nedovoljanStaz = document.createElement('div');
                    nedovoljanStaz.innerText = pronoun + ' nema dva mjeseca staža!';
                    nedovoljanStaz.className = 'errorbox';
                    document.getElementById('ivi-glas-main-allns').append(nedovoljanStaz);

                    //provjera mjesesc dana - za pravo glasanja na admin izborima
                    var dodatanUvjet = document.createElement('span');
                    var jedanMjesec = new Date();
                    jedanMjesec.setMonth(jedanMjesec.getMonth() - 1);
                    console.log("jedan mjesec: " + jedanMjesec);
                    if (+jedanMjesec > +prviEditDate) {
                        dodatanUvjet.innerHTML = pronoun + ' <span id="admin-vote-right">ima dovoljan staž</span> (mjesec dana) kako bi glasao na izboru administratora.';
                        document.getElementById('ivi-glas-main-allns').append(dodatanUvjet);
                        document.getElementById('admin-vote-right').style.color = 'green';
                    } else {
                        dodatanUvjet.innerHTML = pronoun + ' <span id="admin-vote-right">nema dovoljan staž</span> (mjesec dana) kako bi glasao na izboru administratora.';
                        document.getElementById('ivi-glas-main-allns').append(dodatanUvjet);
                        document.getElementById('admin-vote-right').style.color = 'red';
                    }
                }

                drugiPoziv(username, pronoun); //Izmjene u GIP-u - all-time            
                treciPoziv(username, pronoun); //izmjene u zadnjih godinu dana - allNS
                cetvrtiPoziv(username, pronoun); //izmjene u zadnjih godinu dana - GIP
                //if suradnik postoji - kraj
            } else {
                //error
                var nedovoljanEditCount = document.createElement('div');
                nedovoljanEditCount.innerText = pronoun + ' nema nijednu izmjenu!';
                nedovoljanEditCount.className = 'errorbox';
                document.getElementById('ivi-glas-main-allns').append(nedovoljanEditCount);
                return zavrseno();

            }
        }
    });


}

function drugiPoziv(username, pronoun) {
    //2. - Izmjene u GIP-u - all-time
    var GIPEditCount = {
            "action": "query",
            "format": "json",
            "list": "usercontribs",
            "uclimit": "max",
            "ucuser": username,
            "ucprop": "",
            "ucnamespace": "0"
        },
        api = new mw.Api();
    api.get(GIPEditCount).done(function(data) {

        var GIPAlltime = document.createElement('span');
        GIPAlltime.innerHTML = pronoun + ' ukupno ima <span id="gip-all-time">' + (data.query.usercontribs.length >= data.limits.usercontribs ? data.limits.usercontribs + ' ili više ' : data.query.usercontribs.length) + ' izmjena</span> u GIP-u.';
        document.getElementById('ivi-glas-main-gip').append(GIPAlltime);

        if (data.query.usercontribs.length < 200) {
            //error
            document.getElementById('gip-all-time').style.color = 'red';
            var nedovoljanGIPEditCount = document.createElement('div');
            nedovoljanGIPEditCount.innerText = pronoun + ' nema dovoljno izmjena u GIP-u!';
            nedovoljanGIPEditCount.className = 'errorbox';
            document.getElementById('ivi-glas-main-gip').append(nedovoljanGIPEditCount);
            return zavrseno();
        } else {
            document.getElementById('gip-all-time').style.color = 'green';
        }
    });

}

function treciPoziv(username, pronoun) {
    //2. - izmjene u zadnjih godinu dana - allNS
    var oneYearAgo = new Date();
    oneYearAgo.setMonth(oneYearAgo.getMonth() - 12);

    var allNSYearAgoParams = {
            "action": "query",
            "format": "json",
            "list": "usercontribs",
            "uclimit": "max",
            "ucstart": oneYearAgo.toISOString(),
            "ucuser": username,
            "ucdir": "newer",
            "ucprop": ""
        },
        api = new mw.Api();
    api.get(allNSYearAgoParams).done(function(data) {
        var dateYearAgo = oneYearAgo.toISOString().split('T');
        var allNSYearAgo = document.createElement('span');
        allNSYearAgo.id = 'ivi-glas-allns-year';
        allNSYearAgo.innerHTML = 'U zadnjih godinu dana (od ' + dateYearAgo[0] + '), ' + String(pronoun).toLowerCase() + ' ukupno ima <span id="allns-year-ago">' + (data.query.usercontribs.length >= data.limits.usercontribs ? data.limits.usercontribs + ' ili više ' : data.query.usercontribs.length) + ' izmjena</span> u svim imenskim prostorima.';
        document.getElementById('ivi-glas-main-year-allns').appendChild(allNSYearAgo);

        //provjera valjanosti
        if (data.query.usercontribs.length < 50) {
            //error
            document.getElementById('allns-year-ago').style.color = 'red';
            var nedovoljanEditCountYear = document.createElement('div');
            nedovoljanEditCountYear.innerText = pronoun + ' nema dovoljno izmjena u zadnjih godinu dana!';
            nedovoljanEditCountYear.className = 'errorbox';
            document.getElementById('ivi-glas-main-year-allns').append(nedovoljanEditCountYear);
            return zavrseno();
        } else {
            document.getElementById('allns-year-ago').style.color = 'green';
        }
    });

}

function cetvrtiPoziv(username, pronoun) {
    //3. - izmjene u zadnjih godinu dana - samo GIP
    var oneYearAgo = new Date();
    oneYearAgo.setMonth(oneYearAgo.getMonth() - 12);

    var GIPYearAgoParams = {
            "action": "query",
            "format": "json",
            "list": "usercontribs",
            "uclimit": "max",
            "ucstart": oneYearAgo.toISOString(),
            "ucuser": username,
            "ucdir": "newer",
            "ucprop": "",
            "ucnamespace": "0"
        },
        api = new mw.Api();
    api.get(GIPYearAgoParams).done(function(data) {
        var dateYearAgo = oneYearAgo.toISOString().split('T');
        var GIPYearAgo = document.createElement('span');
        GIPYearAgo.innerHTML = ' U istom periodu u GIP-u je <span id="gip-year-ago">' + (data.query.usercontribs.length >= data.limits.usercontribs ? data.limits.usercontribs + ' ili više ' : data.query.usercontribs.length) + ' izmjena</span>.';
        document.getElementById('ivi-glas-main-year-gip').append(GIPYearAgo);


        //provjera valjanosti
        if (data.query.usercontribs.length < 50) {
            //error
            document.getElementById('gip-year-ago').style.color = 'red';
            var nedovoljanGIPEditCountYear = document.createElement('div');
            nedovoljanGIPEditCountYear.innerText = pronoun + ' nema dovoljno izmjena u GIP-u u zadnjih godinu dana!';
            nedovoljanGIPEditCountYear.className = 'errorbox';
            document.getElementById('ivi-glas-main-year-gip').append(nedovoljanGIPEditCountYear);
            return zavrseno();
        } else {
            document.getElementById('gip-year-ago').style.color = 'green';
        }
        zavrseno();
    });

}

function zavrseno() {
    document.getElementById('ivi-glas-status').innerText = 'Provjera završena.';
}