Suradnik:Ivi104/Skripte/Otkrij-sve.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.
//Deferred
$(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 revdelShowGumbStart = document.createElement('a');
revdelShowGumbStart.className = "ivi104-revdel-show-startbutton";
revdelShowGumbStart.innerHTML = 'otkrij više izmjena';
revdelShowGumbStart.setAttribute('onclick', 'revdelShowprikaziCheckBoxe()');
revdelShowGumbStart.style.paddingLeft = '10px';
setTimeout(() => { document.getElementsByClassName('ivi104-revdel-hide-startbutton')[0].after(revdelShowGumbStart); }, 1000);
}
});
function revdelShowprikaziCheckBoxe() {
var revdelShowSveIzmjene = document.querySelectorAll('ul.mw-contributions-list>li');
revdelShowSveIzmjene.forEach(function(izmjena, index) {
var revdelShowCheckBox = document.createElement('input');
revdelShowCheckBox.className = 'webfonts-changed';
revdelShowCheckBox.type = 'checkbox';
var revdelShowIDIzmjene = revdelShowSveIzmjene[index].getAttribute('data-mw-revid');
revdelShowCheckBox.setAttribute('disabled', 'disabled');
revdelShowCheckBox.setAttribute('name', 'ivi104-revdel-show-checkbox');
revdelShowCheckBox.setAttribute('value', revdelShowIDIzmjene);
//je li izmjena već otkrivena?
if (revdelShowSveIzmjene[index].getElementsByClassName('history-deleted').length > 0) {
revdelShowCheckBox.removeAttribute('disabled');
}
revdelShowSveIzmjene[index].prepend(revdelShowCheckBox);
});
//onemogući ponovno klikanje poveznice za start
document.getElementsByClassName("ivi104-revdel-show-startbutton")[0].removeAttribute('onclick');
var revdelShowGumbOtkrij = document.createElement('input');
revdelShowGumbOtkrij.type = 'submit';
revdelShowGumbOtkrij.className = 'cdx-button webfonts-changed';
revdelShowGumbOtkrij.id = 'ivi104-revdel-show-showButton';
revdelShowGumbOtkrij.value = 'Otkrij odabrane izmjene';
revdelShowGumbOtkrij.setAttribute('onclick', 'revdelShowPrintChecked()');
document.getElementsByClassName('mw-contributions-list')[0].prepend(revdelShowGumbOtkrij);
var revdelShowStatusText = document.createElement('span');
revdelShowStatusText.innerText = 'Čekam... : ';
revdelShowStatusText.id = 'ivi104-revdel-show-status';
var revdelShowSuccessText = document.createElement('span');
revdelShowSuccessText.innerText = '[Uspjelo: 0/';
revdelShowSuccessText.id = 'ivi104-revdel-show-success';
var revdelShowfailText = document.createElement('span');
revdelShowfailText.innerText = 'Neuspjelo: 0]';
revdelShowfailText.id = 'ivi104-revdel-show-fail';
document.getElementById('ivi104-revdel-show-showButton').after(revdelShowfailText);
document.getElementById('ivi104-revdel-show-showButton').after(revdelShowSuccessText);
document.getElementById('ivi104-revdel-show-showButton').after(revdelShowStatusText);
}
function revdelShowPrintChecked() {
document.getElementsByTagName('input');
var revdelShowCheckedBoxes = document.querySelectorAll('input[name=ivi104-revdel-show-checkbox]:checked');
var revdelShowCheckedArray = [];
if (revdelShowCheckedBoxes.length == 0) {
alert("Ništa nije označeno, molim pokušajte ponovno!");
} else {
revdelShowCheckedBoxes.forEach(function(box, index) {
revdelShowCheckedArray.push(box.getAttribute('value'));
});
// console.log("checkedarray1");
// console.log(checkedArray);
var revdelShowOdabirSakrivanja = "";
var revdelShowValidRegex = new RegExp("^[abc]{1,3}$");
if (window.confirm("Korak 1/3\nŽelite li zaista otkriti izmjene: \n" + revdelShowCheckedArray.join(", "))) {
revdelShowOdabirSakrivanja = prompt("Korak 2/3\nOdaberite što sve želite otkriti:\n - upišite slovo 'a' za otkrivanje teksta izmjene\n - upišite slovo 'b' za otkrivanje sažetka\n - upišite slovo 'c' za otkrivanje imena suradnika\nDopušteno je unijeti više slova (unos 'abc' je u redu)");
if (revdelShowOdabirSakrivanja == null || revdelShowOdabirSakrivanja == "" || revdelShowValidRegex.test(revdelShowOdabirSakrivanja) == false) {
window.alert("Pogrešan unos, molim pokušajte ponovno.");
} else {
var revdelShowRazlog = window.prompt("Korak 3/3\nMolim unesite razlog otkrivanja:\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:");
revdelShowValidacija(revdelShowCheckedArray, revdelShowOdabirSakrivanja, revdelShowRazlog);
}
} else {
alert("Molim ispravite odabir.");
}
}
}
function revdelShowValidacija(revdelShowCheckedArray, revdelShowOdabirSakrivanjaAny, revdelShowRazlogAny) {
// console.log("validacija start: ");
// console.log(checkedArray);
var revdelShowOdabirSakrivanja = String(revdelShowOdabirSakrivanjaAny);
var revdelShowRazlog = String(revdelShowRazlogAny);
var revdelShowOdabirArray = [];
if (revdelShowOdabirSakrivanja.includes("a")) {
revdelShowOdabirArray.push("content");
}
if (revdelShowOdabirSakrivanja.includes("b")) {
revdelShowOdabirArray.push("comment");
}
if (revdelShowOdabirSakrivanja.includes("c")) {
revdelShowOdabirArray.push("user");
}
var revdelShowOdabirString = revdelShowOdabirArray.join('|');
var revdelShowRazlogString = "";
if (revdelShowRazlog == "1") {
revdelShowRazlogString = "kršenje autorskih prava";
} else if (revdelShowRazlog == "2") {
revdelShowRazlogString = "neprimjereni osobni podatci";
} else if (revdelShowRazlog == "3") {
revdelShowRazlogString = "[[Wikipedija:Vandalizam|vandalizam]]";
} else if (revdelShowRazlog == "4") {
revdelShowRazlogString = "grafit";
} else {
revdelShowRazlogString = revdelShowRazlog;
}
//window.alert(checkedString + "\n" + odabirString + "\n" + razlogString);
if (confirm("Posljednja potvrda - zaista otkriti?")) {
revdelShowAPILoop(revdelShowCheckedArray, revdelShowOdabirString, revdelShowRazlogString);
} else window.alert("Otkazano. Ništa nije izmjenjeno.");
}
function revdelShowAPILoop(revdelShowCheckedArray, revdelShowOdabirString, revdelShowRazlogString) {
var
api = new mw.Api(),
revdelShowAllCount = revdelShowCheckedArray.length,
revdelShowSuccessCount = 0,
revdelShowFailCount = 0,
revdelShowFailed = [],
revdelShowError = [],
revdelShowDeferreds = [];
function revdelShowAPICall(revdelShowCheckedText, revdelShowOdabirString, revdelShowRazlogString) {
return function() {
var params = {
action: 'revisiondelete',
type: 'revision',
ids: String(revdelShowCheckedText),
format: 'json',
show: String(revdelShowOdabirString),
reason: String(revdelShowRazlogString),
tags: 'revdel-api',
};
return $.Deferred(function(revdelShowDeferred) {
var revdelShowPromise = api.postWithToken('csrf', params);
// console.log("params: ");
// console.log(params);
// console.log("checkedArray: " + checkedArray);
// console.log("checkedText: " + checkedText);
revdelShowPromise.done(function(data) {
revdelShowSuccessCount++;
document.getElementById("ivi104-revdel-show-success").innerText = "[Uspjelo: " + revdelShowSuccessCount + "/";
// console.log("PromiseSuccess: ");
// console.log(data);
});
revdelShowPromise.fail(function(data) {
revdelShowFailCount++;
revdelShowFailed.push(revdelShowCheckedText);
document.getElementById("ivi104-revdel-show-fail").innerText = "Nije uspjelo: " + revdelShowFailCount + "]";
console.log("PromiseError: ");
console.log(data);
console.log(revdelShowFailed);
});
revdelShowPromise.always(function() {
revdelShowDeferred.resolve();
});
});
};
}
// Make a chain of deferred objects. We chain them rather than execute them in
// parallel so that we don't make 1000 simultaneous delete requests and bring the
// site down. We use deferred objects rather than the promise objects returned
// from the API request so that the chain continues even if some articles gave
// errors.
document.getElementById('ivi104-revdel-show-status').innerText = 'Radim... ';
var revdelShowDeferred = revdelShowAPICall(revdelShowCheckedArray[0], revdelShowOdabirString, revdelShowRazlogString)();
for (var i = 1; i < revdelShowCheckedArray.length; i++) {
revdelShowDeferred = revdelShowDeferred.then(revdelShowAPICall(revdelShowCheckedArray[i], revdelShowOdabirString, revdelShowRazlogString));
}
// Show the output and do cleanup once all the requests are done.
$.when(revdelShowDeferred).then(function() {
document.getElementById('ivi104-revdel-show-status').innerText = 'Završeno! ';
document.getElementById('ivi104-revdel-show-status').style.backgroundColor = 'greenyellow';
window.alert('Otkrivanje završeno! Molim osvježite stranicu.');
});
}