Użytkownik:Expert3222/patrolModule.js: Różnice pomiędzy wersjami
Z Nondanych
(to się jeszcze pewnie zmieni) |
|||
(Nie pokazano 10 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
/* |
|||
* gadżet do szybkiego oznaczania wersji jako sprawdzonych na OZ, nowych stronach i widoku diffów |
|||
* autor: Expert3222 |
|||
* drobne modyfikacje: Ostrzyciel |
|||
*/ |
|||
// TODO: $(this) na $this (do zmiennej), lepsza wydajność będzie |
|||
var QuickPatrolLastClick = 0; //https://stackoverflow.com/questions/28609994/javascript-prevent-function-from-executing-multiple-times |
var QuickPatrolLastClick = 0; //https://stackoverflow.com/questions/28609994/javascript-prevent-function-from-executing-multiple-times |
||
var QuickPatrolDelay = 20; //syfiło w logach, rejestrując patrolowanie po kilka razy |
var QuickPatrolDelay = 20; //syfiło w logach, rejestrując patrolowanie po kilka razy |
||
var QuickPatrolToken = null; |
|||
var QuickPatrolDiffPageRevids = []; |
|||
var spinnerCode = "<div class='mw-spinner mw-spinner-small mw-spinner-inline' title='...'></div>"; |
|||
var patrolModule = {}; |
|||
//fix dla |
|||
//https://nonsa.pl/wiki/Plik:Patrolowe_czworaczki.jpg |
|||
var makePatrolLinksIsExecuting = false; |
|||
var makeDiffViewRevidsListIsExecuting = false; |
|||
var makeFilePatrolLinkCallCount = 0; |
|||
$(document).ready(function() |
|||
⚫ | |||
if (mw.config.get("wgCanonicalSpecialPageName") === "Recentchanges") |
|||
{ |
|||
makePatrolLinks(); |
|||
if (!!$('.mw-rcfilters-enabled').length) //wzięte od Polskacafe z gadżetu RollWithReason |
|||
{ |
|||
setInterval(makePatrolLinks, 2000); |
|||
} |
|||
⚫ | |||
else if (mw.config.get("wgCanonicalSpecialPageName") == "Newpages") |
|||
{ |
|||
makeNewpagesPatrolLinks(); |
|||
} |
|||
else if (mw.util.getParamValue("diff") !== null) |
|||
{ |
|||
var parse = function() |
|||
{ |
|||
var oldid = mw.util.getParamValue("oldid", $("#mw-diff-otitle1 > strong > a").attr("href")); |
|||
//alert("oldid = " + oldid); |
|||
var curid = mw.util.getParamValue("oldid", $("#mw-diff-ntitle1 > strong > a").attr("href")); |
|||
//alert("curid = " + curid); |
|||
var title = mw.config.get("wgPageName").replace("_", " "); |
|||
//console.log(oldid, curid, title); |
|||
makeDiffViewRevidsList(oldid, curid, title); |
|||
}; |
|||
parse(); |
|||
setInterval(parse, 2000); //"przeglądaj historię interaktywnie" na górze |
|||
} |
|||
else if (mw.config.get("wgCanonicalSpecialPageName") == "MobileDiff") |
|||
{ |
|||
//TODO |
|||
/*var oldid = mw.util.getParamValue("oldid", $("#mw-mf-diff-info a").attr("href")); |
|||
alert("oldid = " + oldid); |
|||
var urlArray = window.location.href.split("/"); |
|||
var curid = urlArray[urlArray.length - 1]; |
|||
alert("curid = " + curid); |
|||
var title = $("#mw-mf-diff-info a").text(); |
|||
makeDiffViewRevidsList(oldid, curid, title);*/ |
|||
} |
|||
}); |
|||
// |
//usage: patrolModule.patrolChange(diff).done(callback).fail(callback2); |
||
patrolModule.patrolChange = function(diff, tokenAlreadyReset) |
|||
{ |
{ |
||
if (QuickPatrolLastClick >= (Date.now() - QuickPatrolDelay)) |
if (QuickPatrolLastClick >= (Date.now() - QuickPatrolDelay)) |
||
return $.Deferred().reject(); //rejected promise |
|||
$.when(); |
|||
QuickPatrolLastClick = Date.now(); |
QuickPatrolLastClick = Date.now(); |
||
if (diff === null || diff === "" || typeof diff == "undefined") |
if (diff === null || diff === "" || typeof diff == "undefined") |
||
{ |
{ |
||
return $. |
return $.Deferred().reject(); |
||
} |
} |
||
Linia 89: | Linia 27: | ||
}).done(function(data) |
}).done(function(data) |
||
{ |
{ |
||
deferred.resolve(); |
deferred.resolve(data); |
||
}).fail(function(error) |
}).fail(function(error) |
||
{ |
{ |
||
Linia 102: | Linia 40: | ||
meta: "tokens", |
meta: "tokens", |
||
type: "patrol" |
type: "patrol" |
||
}).done(function( |
}).done(function() |
||
{ |
{ |
||
mw.user.tokens.set("patrolToken", data.query.tokens.patroltoken); |
mw.user.tokens.set("patrolToken", data.query.tokens.patroltoken); |
||
patrolChange(diff, true) |
patrolChange(diff, true) |
||
.done(function() |
.done(function(data) |
||
{ |
{ |
||
deferred.resolve(); |
deferred.resolve(data); |
||
console.log("NOWY TOKEN PRAWIDŁOWY"); |
console.log("NOWY TOKEN PRAWIDŁOWY"); |
||
}).fail(function() |
}).fail(function() |
||
Linia 128: | Linia 66: | ||
} |
} |
||
// |
//usage: patrolModule.patrolRangeOfChanges(to, from).done(callback).fail(callback2); |
||
patrolModule.patrolRangeOfChanges = function(to, from, tokenAlreadyReset) |
|||
{ |
{ |
||
if (QuickPatrolLastClick >= (Date.now() - QuickPatrolDelay)) |
if (QuickPatrolLastClick >= (Date.now() - QuickPatrolDelay)) |
||
return $. |
return $.Deferred().reject(); |
||
QuickPatrolLastClick = Date.now(); |
QuickPatrolLastClick = Date.now(); |
||
if ( |
if (to === null || to === "" || typeof to == "undefined") |
||
{ |
{ |
||
return $. |
return $.Deferred().reject(); |
||
} |
} |
||
Linia 145: | Linia 83: | ||
var request = |
var request = |
||
{ |
{ |
||
action: 'patrol', |
action: 'fmod-patrol', |
||
format: 'json', |
format: 'json', |
||
maxrevid: to, |
maxrevid: to, |
||
Linia 158: | Linia 96: | ||
api.post(request).done(function(data) |
api.post(request).done(function(data) |
||
{ |
{ |
||
deferred.resolve(); |
deferred.resolve(data); |
||
}).fail(function(error) |
}).fail(function(error) |
||
{ |
{ |
||
Linia 175: | Linia 113: | ||
mw.user.tokens.set("patrolToken", data.query.tokens.patroltoken); |
mw.user.tokens.set("patrolToken", data.query.tokens.patroltoken); |
||
patrolRangeOfChanges(to, from, true) |
patrolRangeOfChanges(to, from, true) |
||
.done(function() |
.done(function(data) |
||
{ |
{ |
||
deferred.resolve(); |
deferred.resolve(data); |
||
console.log("NOWY TOKEN PRAWIDŁOWY"); |
console.log("NOWY TOKEN PRAWIDŁOWY"); |
||
}).fail(function() |
}).fail(function() |
||
Linia 197: | Linia 135: | ||
} |
} |
||
// |
//usage: patrolModule.patrolPage(pageid).done(callback).fail(callback2); |
||
patrolModule.patrolPage = function(id, tokenAlreadyReset) |
|||
{ |
{ |
||
if (QuickPatrolLastClick >= (Date.now() - QuickPatrolDelay)) |
if (QuickPatrolLastClick >= (Date.now() - QuickPatrolDelay)) |
||
return $. |
return $.Deferred().reject(); |
||
QuickPatrolLastClick = Date.now(); |
QuickPatrolLastClick = Date.now(); |
||
if ( |
if (id === null || id === "" || typeof id == "undefined") |
||
{ |
{ |
||
return $. |
return $.Deferred().reject(); |
||
} |
} |
||
Linia 214: | Linia 152: | ||
api.post( |
api.post( |
||
{ |
{ |
||
action: 'patrol', |
action: 'fmod-patrol', |
||
format: 'json', |
format: 'json', |
||
pageid: id, |
pageid: id, |
||
Linia 220: | Linia 158: | ||
}).done(function(data) |
}).done(function(data) |
||
{ |
{ |
||
deferred.resolve(); |
deferred.resolve(data); |
||
}).fail(function(error) |
}).fail(function(error) |
||
{ |
{ |
||
Linia 237: | Linia 175: | ||
mw.user.tokens.set("patrolToken", data.query.tokens.patroltoken); |
mw.user.tokens.set("patrolToken", data.query.tokens.patroltoken); |
||
patrolPage(id, true) |
patrolPage(id, true) |
||
.done(function() |
.done(function(data) |
||
{ |
{ |
||
deferred.resolve(); |
deferred.resolve(data); |
||
console.log("NOWY TOKEN PRAWIDŁOWY"); |
console.log("NOWY TOKEN PRAWIDŁOWY"); |
||
}).fail(function() |
}).fail(function() |
||
Linia 257: | Linia 195: | ||
return deferred.promise(); |
return deferred.promise(); |
||
⚫ | |||
//usage: patrolModule.resetLastClick() |
|||
//before every call to any of above functions |
|||
patrolModule.resetLastClick = function() |
|||
⚫ | |||
QuickPatrolLastClick = 0; |
|||
} |
} |
Aktualna wersja na dzień 14:25, 20 maj 2020
var QuickPatrolLastClick = 0; //https://stackoverflow.com/questions/28609994/javascript-prevent-function-from-executing-multiple-times
var QuickPatrolDelay = 20; //syfiło w logach, rejestrując patrolowanie po kilka razy
var patrolModule = {};
//usage: patrolModule.patrolChange(diff).done(callback).fail(callback2);
patrolModule.patrolChange = function(diff, tokenAlreadyReset)
{
if (QuickPatrolLastClick >= (Date.now() - QuickPatrolDelay))
return $.Deferred().reject(); //rejected promise
QuickPatrolLastClick = Date.now();
if (diff === null || diff === "" || typeof diff == "undefined")
{
return $.Deferred().reject();
}
var api = new mw.Api(),
deferred = $.Deferred();
api.post(
{
action: 'fmod-patrol',
format: 'json',
revid: diff,
token: mw.user.tokens.get("patrolToken")
}).done(function(data)
{
deferred.resolve(data);
}).fail(function(error)
{
if (!tokenAlreadyReset)
{
console.log("TOKEN PATROLOWANIA NIEPRAWIDŁOWY - DRUGA PRÓBA");
api.post
({
format: "json",
formatversion: "2",
action: "query",
meta: "tokens",
type: "patrol"
}).done(function()
{
mw.user.tokens.set("patrolToken", data.query.tokens.patroltoken);
patrolChange(diff, true)
.done(function(data)
{
deferred.resolve(data);
console.log("NOWY TOKEN PRAWIDŁOWY");
}).fail(function()
{
deferred.reject();
console.log("NOWY TOKEN NIEPRAWIDŁOWY");
});
});
}
else // w przypadku pierwszego faila to zostanie wykonane przez funkcję wywołaną rekursywnie
{
console.log(error);
deferred.reject();
}
});
return deferred.promise();
}
//usage: patrolModule.patrolRangeOfChanges(to, from).done(callback).fail(callback2);
patrolModule.patrolRangeOfChanges = function(to, from, tokenAlreadyReset)
{
if (QuickPatrolLastClick >= (Date.now() - QuickPatrolDelay))
return $.Deferred().reject();
QuickPatrolLastClick = Date.now();
if (to === null || to === "" || typeof to == "undefined")
{
return $.Deferred().reject();
}
var api = new mw.Api(),
deferred = $.Deferred();
var request =
{
action: 'fmod-patrol',
format: 'json',
maxrevid: to,
token: mw.user.tokens.get("patrolToken")
};
if (from !== null && from <= to && from >= 0)
{
$.extend(request, {
minrevid: from
});
}
api.post(request).done(function(data)
{
deferred.resolve(data);
}).fail(function(error)
{
if (!tokenAlreadyReset)
{
console.log("TOKEN PATROLOWANIA NIEPRAWIDŁOWY - DRUGA PRÓBA");
api.post
({
format: "json",
formatversion: "2",
action: "query",
meta: "tokens",
type: "patrol"
}).done(function(data)
{
mw.user.tokens.set("patrolToken", data.query.tokens.patroltoken);
patrolRangeOfChanges(to, from, true)
.done(function(data)
{
deferred.resolve(data);
console.log("NOWY TOKEN PRAWIDŁOWY");
}).fail(function()
{
deferred.reject();
console.log("NOWY TOKEN NIEPRAWIDŁOWY");
});
});
}
else // w przypadku pierwszego faila to zostanie wykonane przez funkcję wywołaną rekursywnie
{
console.log(error);
deferred.reject();
}
});
return deferred.promise();
}
//usage: patrolModule.patrolPage(pageid).done(callback).fail(callback2);
patrolModule.patrolPage = function(id, tokenAlreadyReset)
{
if (QuickPatrolLastClick >= (Date.now() - QuickPatrolDelay))
return $.Deferred().reject();
QuickPatrolLastClick = Date.now();
if (id === null || id === "" || typeof id == "undefined")
{
return $.Deferred().reject();
}
var api = new mw.Api(),
deferred = $.Deferred();
api.post(
{
action: 'fmod-patrol',
format: 'json',
pageid: id,
token: mw.user.tokens.get("patrolToken")
}).done(function(data)
{
deferred.resolve(data);
}).fail(function(error)
{
if (!tokenAlreadyReset)
{
console.log("TOKEN PATROLOWANIA NIEPRAWIDŁOWY - DRUGA PRÓBA");
api.post
({
format: "json",
formatversion: "2",
action: "query",
meta: "tokens",
type: "patrol"
}).done(function(data)
{
mw.user.tokens.set("patrolToken", data.query.tokens.patroltoken);
patrolPage(id, true)
.done(function(data)
{
deferred.resolve(data);
console.log("NOWY TOKEN PRAWIDŁOWY");
}).fail(function()
{
deferred.reject();
console.log("NOWY TOKEN NIEPRAWIDŁOWY");
});
});
}
else // w przypadku pierwszego faila to zostanie wykonane przez funkcję wywołaną rekursywnie
{
console.log(error);
deferred.reject();
}
});
return deferred.promise();
}
//usage: patrolModule.resetLastClick()
//before every call to any of above functions
patrolModule.resetLastClick = function()
{
QuickPatrolLastClick = 0;
}