User:Js/markZeroEdits.js

//user:js/markZeroEdits

function markZeroEdits{

var i = -1, j, k, entry, plusminus, isHRDone var rows, td, aa, sp, step var firstEditor, thisEditor, isRevert

mzRevertRegExp = window.mzRevertRegExp || /^(BOT[ -]*)?Reverted|^Reverting|^Undid revision / appendCSS(window.mzCSS || 'table.revert-edit *, table.zero-edit * {color:#777799; }\ table.revert-edit td {text-decoration: line-through}')

while (entry=document.getElementById('mw-rc-closearrow-'+(++i))){//loop through all multiple edits //jsMsg(i + ' ' + entry) //check if this is a 0 size diff while ((entry=entry.parentNode) && entry.nodeName!='TR'); plusminus = entry.cells[1].getElementsByTagName('span')[0] if (!plusminus || plusminus.className!='mw-plusminus-null') continue //get all collapsed edits inside hidden DIV rows = document.getElementById('mw-rc-subentries-' + (i)).firstChild.rows //some initial values firstEditor = '' //first editor (who is possibly reverted later)

//check all edits from bottom, i.e. by the timeline for (j=rows.length-1; j>=0; j--){ //find editor td = rows[j].cells[1] aa = td.getElementsByTagName('a') for (k=0; k0){ //first editor keeps making several edits continue }   //we now have either a different editor of the last edit //find edit summary sp = getElementsByClassName(td, 'span', 'comment')[0] if (!sp) break //check if this was a revert if (!mzRevertRegExp.test(ts_getInnerText(sp).substring(1))) break //by default do not trust self reverts and reverts by unregs if (thisEditor==firstEditor && !window.mzTrustSelfRv) break if (/Special:Contributions/.test(thisEditor) && !window.mzTrustUnregRv) break //all checks done, this looks like a revert after all isRevert = true firstEditor = '' //get ready for the next block of edits } //categorize the entry while ((entry=entry.parentNode) && entry.nodeName!='TABLE'); if (isRevert){ entry.className += 'revert-edit' if (window.mzMoveReverts) do{ step = entry.nextSibling; entry.parentNode.appendChild(entry); entry = step }while (entry && entry.nodeName != 'TABLE' && entry.nodeName != 'HR') }else{ entry.className += 'zero-edit' } }//while

}

$(markZeroEdits)