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

Content deleted Content added
complete
update
Line 6:
*/
 
$.when($.ready).then(function() {
 
$.when($.ready).then(function() {
 
if (mw.config.get('wgAction') !== 'history') return;
 
// bool: are the reverts currently hidden or not?
var hidingReverts = false;
var hidingReverts;
 
if (/&hidereverted=y/.test(window.___location.href)) {
hideRevertedEdits();
fixLinks(true);
hidingReverts = true;
} else {
var hidingReverts = false;
}
 
$('<button>')
.attraddClass('class', 'reverted-edits-showhide')
.text(hidingReverts ? 'Show reverted edits' : 'Hide reverted edits')
.on('click', function(e) {
e.preventDefault();
Line 26 ⟶ 35:
}
hidingReverts = !hidingReverts;
fixLinks(hidingReverts);
 
}).insertAfter('.mw-history-compareselectedversions');
Line 33 ⟶ 43:
 
function hideRevertedEdits() {
 
$('#pagehistory li').each(function(idx) {
 
Line 40 ⟶ 51:
 
var editcomment = $(this).find('.comment').text();
var rgx, rev;
 
// Plain mediawiki undo with untampered edit summary
if (editcomment.startsWith('rgx = /^Undid revision '(\d+) by/.exec(editcomment)) {
var reverted_rev_id = rgx[1];
var reverted_rev = parseInt(editcomment.slice('Undid revision '.length));
ifvar (isNaN($reverted_rev)) return= true$('[data-mw-revid=' + reverted_rev_id +']');
$(this).hide();
$('[data-mw-revid=' + reverted_rev +']').hide();
console.log(idx, $(this).find('.mw-changeslist-date').text(), 'undo');
 
// just to confirm that the edit is a revert, find the byte count changes for the
// Twinkle 'Restore this version' reverts
// two edits: if they add up to 0, then this is a revert (in all likelihood)
} else if (rgx = /^Reverted to revision (\d+) by /.exec(editcomment)) {
var diffbytes1 = parseInt($(this).find('[class^=mw-plusminus]').text());
var diffbytes2 = parseInt($reverted_rev.find('[class^=mw-plusminus]').text());
 
if (diffbytes1 + diffbytes2 === 0) {
$(this).hide();
$('[data-mw-revid=' + reverted_rev +']').hide();
if (window.hre_debug) console.log(idx, $(this).find('.mw-changeslist-date').text(), 'undo');
}
 
// 'Restore this version' reverts using Twinkle or popups or the pending changes tool
// TW: 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 = /^RevertedRevert(?:ed)? (?:\d+ pending edits? by .*?)?to revision (\d+) by /.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();
Line 60 ⟶ 86:
if (rev.length === 0) break; // end of page history in current view
}
if (window.hre_debug) console.log(idx, $(this).find('.mw-changeslist-date').text(), 'TW restore');
 
} else {
Line 66 ⟶ 92:
var reverted_user;
 
// Twinkle rollbackrollbacks
if (rgx = /^Reverted (?:good faith|\d+) edits? by (.*?) \(talk\)/.exec(editcomment)) {
reverted_user = rgx[1];
if (window.hre_debug) console.log(idx, $(this).find('.mw-changeslist-date').text(), 'Twinkle rollback');
 
// Old Twinke vandalism rollback
} else if (rgx = /^Reverted \d+ (?:good faith )?edits? by (.*?) (?:identified as (?:test\/)?vandalism )?using STiki/.exec(editcomment)) {
reverted_user = rgx[1];
if (window.hre_debug) console.log(idx, $(this).find('.mw-changeslist-date').text(), 'Twinkle (old) rollback');
 
// STiki AGF/normal/vandalism revert
} else if (rgx = //^Reverted also\d+ matches(?:good oldfaith Twinle)?edits? "by (.*?) (?:identified as test\/vandalism" rollbacks)?using STiki/.exec(editcomment)) {
} else if (rgx = /^Reverted \d+ (?:good faith )?edits? by (.*?) (?:identified as (?:test\/)?vandalism )?using STiki/.exec(editcomment)) {
reverted_user = rgx[1];
if (window.hre_debug) console.log(idx, $(this).find('.mw-changeslist-date').text(), 'STiki rollback');
 
// normal mediawiki rollback and Huggle rollback
} else if (rgx = /^Reverted edits by (.*?) \(talk\)/.exec(editcomment)) {
reverted_user = rgx[1];
if (window.hre_debug) console.log(idx, $(this).find('.mw-changeslist-date').text(), 'mw/huggle rollback');
 
// ClueBot
} else if ( ['ClueBot NG', 'ClueBot'].includes($(this).find('.mw-userlink bdi').text()) ) {
reverted_user = /^Reverting possible vandalism by (.*?) to version by/.exec(editcomment)[1];
if (window.hre_debug) console.log(idx, $(this).find('.mw-changeslist-date').text(), 'cluebot rollback');
 
// XLinkBot
} else if ( $(this).find('.mw-userlink bdi').text() === 'XLinkBot' ) {
reverted_user = /BOT--Reverting link additions\(s\) by (.*?) to/.exec(editcomment)[1];
if (window.hre_debug) console.log(idx, $(this).find('.mw-changeslist-date').text(), 'xlinkbot rollback');
}
 
Line 101 ⟶ 131:
}
$(this).hide();
var rev = $(this).next();
while ( rev.find('.mw-userlink bdi').text() === reverted_user ) {
rev.hide();
Line 112 ⟶ 142:
 
});
 
}
 
function fixLinks(hidingReverts) {
 
if (hidingReverts && !/&hidereverted=y/.test($('.mw-firstlink').attr('href'))) {
$('.mw-firstlink, .mw-lastlink, .mw-prevlink, .mw-nextlink, .mw-numlink').each(function() {
this.href += '&hidereverted=y';
});
} else {
$('.mw-firstlink, .mw-lastlink, .mw-prevlink, .mw-nextlink, .mw-numlink').each(function() {
this.href.replace(/&hidereverted=y/, '');
});
}
 
}