User:SD0001/hide-reverted-edits.js: Difference between revisions

Content deleted Content added
fix redwarn summary
handle twinkle's new restore-to-revision edit summary
Line 54:
 
var editcomment = $this.find('.comment').text();
var rgx, reverted_user, last_good_revision;
 
// Plain MediaWiki undo with untampered edit summary
Line 72:
}
 
// 'Restore this version' reverts using Twinkle (old) or popups or pending changes reverts
// TW(old): Reverted to revision 3234343 by ...
// popups: Revert to revision 34234234 by ...
// PC tool: Revereted 3 pending edits by Foo and Bar to revision 3243432 by ...
} else if (rgx = /^Revert(?:ed)? (?:\d+ pending edits? by .*?)?to revision (\d+)/.exec(editcomment)) {
var last_good_revision = rgx[1];
$this.hide();
var $rev = $this.next();
if (parseInt(last_good_revision) > parseInt($rev.attr('data-mw-revid')) ||
parseInt(last_good_revision) < 100) { // sanity checks
return true; // revision id given has to be wrong
}
while ($rev.attr('data-mw-revid') !== last_good_revision) {
$rev.hide();
$rev = $rev.next();
if ($rev.length === 0) break; // end of page history in current view
}
log(idx, $this.find('.mw-changeslist-date').text(), 'restore');
 
// 'Restore this version' reverts using Twinkle (new)
} else {
} else if (rgx = /^Restored revision (\d+) by/) {
last_good_revision = rgx[1];
log(idx, $this.find('.mw-changeslist-date').text(), 'tw(new) restore');
 
// Reverts tagged as "Rollback"
var reverted_user;
} else if ($this.find('.mw-tag-marker-mw-rollback').length) {
reverted_user = $this.next().find('.mw-userlink bdi').text();
}
 
// Twinkle rollbacks
// Reverts tagged as "Rollback"
else if (rgx = /^Reverted (?:good faith|\d+) edits? by (.*?) \(talk\)/.exec(editcomment)) {
if ($this.find('.mw-tag-marker-mw-rollback').length) {
reverted_user = $this.next().find('.mw-userlink bdi').text()rgx[1];
log(idx, $this.find('.mw-changeslist-date').text(), 'Twinkle rollback');
}
 
// Old Twinke vandalism rollback
// Twinkle rollbacks
} else if (rgx = /^Reverted (?:good faith|\d+) edits? by (.*?) \(talk\)identified as vandalism/.exec(editcomment)) {
reverted_user = rgx[1];
log(idx, $this.find('.mw-changeslist-date').text(), 'Twinkle (old) rollback');
 
// STiki vandalism rollbacks, and all reverts using MediaWiki rollback, Huggle, Cluebot have the "Rollback" tag added
// Old Twinke vandalism rollback
// and hence would have been handled above. The regex checks here are to account for old reverts done before the
} else if (rgx = /^Reverted \d+ edits? by (.*?) identified as vandalism/.exec(editcomment)) {
// "Rollback" tag was introduced
reverted_user = rgx[1];
log(idx, $this.find('.mw-changeslist-date').text(), 'Twinkle (old) rollback');
 
// STiki AGF/normal/vandalism revert
// STiki vandalism rollbacks, and all reverts using MediaWiki rollback, Huggle, Cluebot have the "Rollback" tag added
} else if (rgx = /^Reverted \d+ (?:good faith )?edits? by (.*?) (?:identified as test\/vandalism )?using STiki/.exec(editcomment)) {
// and hence would have been handled above. The regex checks here are to account for old reverts done before the
reverted_user = rgx[1];
// "Rollback" tag was introduced
log(idx, $this.find('.mw-changeslist-date').text(), 'STiki rollback');
 
// normal MediaWiki rollback and Huggle rollback, and redwarn rollback
// STiki AGF/normal/vandalism revert
// MW/Huggle: Reverted edits by User (talk)
} else if (rgx = /^Reverted \d+ (?:good faith )?edits? by (.*?) (?:identified as test\/vandalism )?using STiki/.exec(editcomment)) {
// RedWarn: Reverting edit(s) by User (talk)
reverted_user = rgx[1];
} else if (rgx = /^Revert(?:ed|ing) edit\(?s\)? by (.*?) \(talk\)/.exec(editcomment)) {
log(idx, $this.find('.mw-changeslist-date').text(), 'STiki rollback');
reverted_user = rgx[1];
log(idx, $this.find('.mw-changeslist-date').text(), 'mw/huggle/redwarn rollback');
 
// ClueBot
// normal MediaWiki rollback and Huggle rollback, and redwarn rollback
} else if (['ClueBot NG', 'ClueBot'].includes($this.find('.mw-userlink bdi').text())) {
// MW/Huggle: Reverted edits by User (talk)
reverted_user = /^Reverting possible vandalism by (.*?) to version by/.exec(editcomment)?.[1];
// RedWarn: Reverting edit(s) by User (talk)
log(idx, $this.find('.mw-changeslist-date').text(), 'cluebot rollback');
} else if (rgx = /^Revert(?:ed|ing) edit\(?s\)? by (.*?) \(talk\)/.exec(editcomment)) {
reverted_user = rgx[1];
log(idx, $this.find('.mw-changeslist-date').text(), 'mw/huggle/redwarn rollback');
 
// ClueBotXLinkBot
} else if (['ClueBot NG', 'ClueBot'].includes($this.find('.mw-userlink bdi').text()) === 'XLinkBot') {
reverted_user = /^BOT--Reverting possiblelink vandalismaddition\(s\) by (.*?) to version by/.exec(editcomment)?.[1];
log(idx, $this.find('.mw-changeslist-date').text(), 'cluebotxlinkbot rollback');
}
 
// XLinkBot
if (reverted_user) {
} else if ($this.find('.mw-userlink bdi').text() === 'XLinkBot') {
reverted_user = /^BOT--Reverting link addition\(s\) by (.*?) to/.exec(editcomment)?.[1];
// page history shows compressed IPv6 address (with multiple 0's replaced by ::)
log(idx, $this.find('.mw-changeslist-date').text(), 'xlinkbot rollback');
// though rollback edit summaries use the uncompressed form (though with leading 0's removed)
if (mw.util.isIPv6Address(reverted_user)) {
reverted_user = reverted_user.replace(/\b(?:0+:){2,}/, ':').toLowerCase();
}
$this.hide();
 
var $rev = $this.next();
if (reverted_user) {
while ($rev.find('.mw-userlink bdi').text() === reverted_user) {
 
$rev.hide();
// page history shows compressed IPv6 address (with multiple 0's replaced by ::)
$rev = $rev.next();
// though rollback edit summaries use the uncompressed form (though with leading 0's removed)
if ($rev.length === 0) break; // end of page history (in current view)
if (mw.util.isIPv6Address(reverted_user)) {
}
reverted_user = reverted_user.replace(/\b(?:0+:){2,}/, ':').toLowerCase();
}
$this.hide();
if (last_good_revision) {
var $rev = $this.next();
while ($rev.find('.mw-userlink bdi').text() === reverted_user) {
$revthis.hide();
var $rev = $revthis.next();
if (parseInt(last_good_revision) > parseInt($rev.attr('data-mw-revid')) ||
if ($rev.length === 0) break; // end of page history (in current view)
parseInt(last_good_revision) < 100) { // sanity checks
}
return true; // revision id given has to be wrong
}
while ($rev.attr('data-mw-revid') !== last_good_revision) {
$rev.hide();
$rev = $rev.next();
if ($rev.length === 0) break; // end of page history in current view
}