Suradnik:Ivi104/Skripte/Glas.js
< Suradnik:Ivi104 | Skripte
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.';
}