Użytkownik:Polskacafe/rvall.js: Różnice pomiędzy wersjami
Z Nonsensopedii, polskiej encyklopedii humoru
Polskacafe (dyskusja • edycje) |
Polskacafe (dyskusja • edycje) M (feedback) |
||
Linia 46: | Linia 46: | ||
$(".revall-button > .mw-rollback-link-a").on("click", function(){ |
$(".revall-button > .mw-rollback-link-a").on("click", function(){ |
||
document.body.style.cursor = "wait"; |
|||
var title = $(this).attr("data-title"); |
var title = $(this).attr("data-title"); |
||
var lastRevid = $(this).attr("data-last-revid"); |
var lastRevid = $(this).attr("data-last-revid"); |
||
Linia 52: | Linia 53: | ||
}); |
}); |
||
$(".revall-button-restore").on("click", function(){ |
$(".revall-button-restore").on("click", function(){ |
||
document.body.style.cursor = "wait"; |
|||
var title = $(this).attr("data-title"); |
var title = $(this).attr("data-title"); |
||
var lastRevid = $(this).attr("data-last-revid"); |
var lastRevid = $(this).attr("data-last-revid"); |
||
Linia 67: | Linia 69: | ||
'action': 'fmod-patrol', |
'action': 'fmod-patrol', |
||
'maxrevid': revId |
'maxrevid': revId |
||
}).then(function(){window.location.reload();}); |
|||
}); |
|||
} |
} |
||
Aktualna wersja na dzień 03:40, 1 wrz 2024
/* Brudna metoda na cofanie wszystkich zmian na OZetach. Działa z "nowym" (tj JavaScriptowym) UI ostatnich zmian. */
function rvall(){
// @param username Nazwa użytkownika
function makeUserDesc(username) {
return "[[Specjalna:Wkład/" + username +"|" + username +"]]";
}
// @param title Nazwa strony
// @param firstRevid pierwszy chronologicznie revid
// @param newestRevid revid najnowszej zmiany
function makeRevallButton(title, firstRevid, newestRevid) {
return ' <span class="revall-button mw-rollback-link"><a href="#" class="mw-rollback-link-a" data-title="' + title +
'" data-last-revid="' + firstRevid +
'" data-newest-revid="' + newestRevid +
'">cofnij wszystko</a></span>';
}
function makeRestoreMeButton(title, oneAboveRevid, newestRevid) {
return ' • <a class="mw-changeslist-restoreme revall-button-restore" href="#" data-title="' + title +
'" data-last-revid="' + oneAboveRevid +
'" data-newest-revid="' + newestRevid +
'">przywr.</a>';
}
function rcAddLinks() {
// mw-changeslist-last
$('tr.mw-changeslist-last.mw-changeslist-reviewstatus-unpatrolled.mw-changeslist-src-mw-edit > td.mw-changeslist-line-inner').each(function(){
var firstSpan = $(this).children().first();
var href = $(firstSpan).children().first();
var title = $(href).attr('title');
var parent = $(this).parent();
var tbody = $(parent).parent();
var firstTr = $(tbody).children(".mw-changeslist-edit").first();
var lastTr = $(tbody).children().last(); // ostatnie dziekco = pierwsza zmiana chronologicznie
var firstRevid = $(lastTr).attr('data-mw-revid');
var newestRevid = $(firstTr).attr('data-mw-revid');
$(this).append(makeRevallButton(title, firstRevid, newestRevid));
var edits = $(tbody).children(".mw-changeslist-edit");
edits.each(function(i){
if (i === 0) return;
var smallRevid = $(edits.get(i-1)).attr('data-mw-revid');
var diffBefore = $(this).find("a.mw-changeslist-diff");
$(diffBefore).after(makeRestoreMeButton(title, smallRevid, newestRevid));
});
$(".revall-button > .mw-rollback-link-a").on("click", function(){
document.body.style.cursor = "wait";
var title = $(this).attr("data-title");
var lastRevid = $(this).attr("data-last-revid");
var newestRevid = $(this).attr("data-newest-revid");
rollToVersion(title, lastRevid, newestRevid);
});
$(".revall-button-restore").on("click", function(){
document.body.style.cursor = "wait";
var title = $(this).attr("data-title");
var lastRevid = $(this).attr("data-last-revid");
var newestRevid = $(this).attr("data-newest-revid");
rollToVersion(title, lastRevid, newestRevid);
});
});
}
// @param title Tytuł artykułu
// @param refId Revid ostatniej chronologicznie
function patrolAllChanges(title, revId) {
var api = new mw.Api();
api.postWithToken('patrol', {
'action': 'fmod-patrol',
'maxrevid': revId
}).then(function(){window.location.reload();});
}
// @param title Tytuł artykułu
// @param rollBeforeRevID pierwsza chronologicznie "zła" edycja
function rollToVersion(title, rollBeforeRevID, newestRevID) {
var api = new mw.Api();
api.get({
'action': 'query',
'formatversion': '2',
'prop': 'revisions',
'titles': title,
'rvprop': 'ids|content|user',
'rvstartid': rollBeforeRevID,
'rvlimit': '2'
}).then(function(result){
var revisions = result.query.pages[0].revisions;
if (!revisions || revisions.length < 2) return;
var goodRevision = revisions[1];
api.edit(title, function() {
return {undo: newestRevID,
undoafter: goodRevision.revid,
summary: 'Wycofano edycje wielu użytkowników, przywrócono edycję autorstwa ' + makeUserDesc(goodRevision.user),
minor: true};
}).then(function(){patrolAllChanges(title, newestRevID);});
});
}
if (mw.config.get('wgCanonicalSpecialPageName') !== "Recentchanges") return;
mw.user.getRights(function(rights) {
if (rights.indexOf('rollback') !== -1 && rights.indexOf('patrol')) {
rcAddLinks();
$('body').on('DOMNodeInserted', '.mw-rcfilters-ui-changesListWrapperWidget-previousChangesIndicator', function () { // W Y K U R W I Ś C I E B R U D N E
$(".revall-button").remove();
rcAddLinks();
});
}
});
}
rvall();