/* <pre> */
/*
On [[Special:Recenchanges]], wherever a (diff) link appears with an
RCID= parameter, add a (mark) link right after it.
TODO: in custom.js, don't show this option, if not a sysop.
*/
wiktCurLink = 0;
wiktCurMarkedLink = 0;
wiktLinks = new Array();
function workAroundMicrosoft() {
var reqObj = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
reqObj = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
reqObj = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
reqObj = false;
}
}
@else
reqObj = false;
@end @*/
if (!reqObj) {
try {
reqObj = new XMLHttpRequest();
} catch (e) {
reqObj = false;
}
}
return reqObj;
}
wiktLink = new workAroundMicrosoft();
function wiktWhiteListed( user ) {
if (!user) { return false; }
if (wgServer != "http://en.wiktionary.org" ) {return false;} //TODO: provide mechanism for other sites using this code to have their own whitelist. Hmmm, I guess they can override this function...
var whiteList = ''; //I suppose keeping these alphabetic might help. ASCII only - sry.
//Note to other sysops: build these lists out. Add contributors that are good
//...and are not suspected sockpuppets, etc. Try and keep these in alphabetic order. Only add
//numeric IPs if you see 10 or more good contribs, no rollbacks, and they don'e seem to be in
//a highly dynamic range. Watch out for extra commas. Don't add sysops that are supposed to
//mark their own (via [[Special:Preferences]]) edits. YMMV. HAND. Whatever.
whiteList += ',24.255.155.100';
whiteList += ',62.163.45.60,64.50.84.194,62.194.18.128';
whiteList += ',84.3.248.3,84.3.248.240,84.3.249.67';
whiteList += ',85.156.128.119,87.69.38.78';
whiteList += ',194.249.53.251';
whiteList += ',198.62.10.100';
whiteList += ',203.222.154.2,212.29.160.170,212.205.252.22';
whiteList += ',220.54.155.201,220.239.249.36';
whiteList += ',16,16@r';
whiteList += ',Alasdair,Alhen,Amjaabc,Andyluciano,AnnaKucsma,Arctic.gnome,AugPi,Az1568,AzaToth';
whiteList += ',Baron_de_Saint-Rémy,Basawala,Beobach972,Bisoud,BiT,Blastu,Brpellis,';
whiteList += ',Calavera,CJLippert,Connel_MacKenzieBot,Cynewulf';
whiteList += ',Dart_evader,DAVilla,Dcljr,Derbeth,Dfeuer,Dmol,Dodde,Doddebot,Doug_Hockin';
whiteList += ',Ed_Poor,El_Chico,EncycloPetey,Enginear,Eric_Utgerd';
whiteList += ',GerardM';
whiteList += ',Hamaryns,HinoiFan,Hopiakuta';
whiteList += ',Izumi5';
whiteList += ',Jaroslavleff,Jeffqyzt,Jimp,Jronner,Jyril,Jusjih';
whiteList += ',Kappa,Keffy,Kevin_Ryde,Krun,KYPark,Lmaltier';
whiteList += ',M7,Mattrogers,MGSpiller,Medellia,MichaelLau,Moglex,Morkva,Mxn';
whiteList += ',Nathanael_Bar-Aur_L.';
whiteList += ',Oleg_Katsitadze,Opiaterein,Ortografix,Pathoschild,Ptcamn,Pumpie';
whiteList += ',Patzak,PierreAbbat,Pschemp'
whiteList += ',Raghun,RJFJR,Rklawton,UllmannBot,RobotGMwikt,Rsvk';
whiteList += ',Saltmarsh,Schoenfeld,Sannab,Scs,Siri_We,Smurrayinchester,SnoopY,Spacebirdy';
whiteList += ',DblRedirBot,TheCheatBot,TheDaveBot,The_Wrong_Man,ThirdPersBot,PastBot';
whiteList += ',Taxman,Tirkfl,Tohru,Uncle_G,V-ball,Venere,Visviva,Wanjuscha';
whiteList += ',Werdna,Werdnabot,Williamsayers79,Xhienne,Yyy' ;
whiteList += ',' ; //list starts and ends with comma
if (whiteList.search(','+user+',') != -1) { return true; }
return false;
}
function wiktAddMarkLink( l, l2 ) {
var title=l.split('title=')[1].split('&')[0];
var rcid=l.split('rcid=')[1].split('&')[0];
var newlink = document.createElement('a');
newlink.innerHTML = '<a href="' + mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=' +
title + '&action=markpatrolled&rcid=' + rcid + '" ' +
'onclick="wiktMarkOneLink(this); return false;">(mark?</a>' ;
var newlink2 = document.createTextNode(' - ');
l2.parentNode.insertBefore(newlink2, l2.nextSibling);
l2.parentNode.insertBefore(newlink, newlink2.nextSibling);
}
function wiktMarkOneLink( urlToGet, rawUrl ) {
if (!rawUrl) {
var rawUrl = urlToGet.toString();
}
var link = new XMLHttpRequest();
link.open( "GET", rawUrl, true );
link.onreadystatechange = function() {};
link.send(null);
var title = rawUrl.split('title=')[1].split('&')[0];
var rcid = rawUrl.split('rcid=')[1].split('&')[0];
if (getCookie('WiktPrefPatrolFast') != 'true') {
alert('Marked ' + title + ' (rcid=' + rcid + ')' );
}
}
function wiktJustClickIt( l, l2 ) {
var title=l.split('title=')[1].split('&')[0];
var rcid=l.split('rcid=')[1].split('&')[0];
var newlink = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=' +
title + '&action=markpatrolled&rcid=' + rcid ;
var wiktLink = new XMLHttpRequest();
wiktLink.open( "GET", newlink, true );
wiktLink.onreadystatechange = function() {
if (wiktLink.readyState==4) {
setTimeout( 'wiktDoNextLink();', 0);
}
};
wiktLink.send(null);
}
function wiktGetNextUser( j ) {
for (var cnt=j; cnt<(j+7); cnt++) {
if (cnt != (j+2)) {
var nxtLink = document.links[cnt];
var txtLink = nxtLink.toString().split('User:')[1];
if (txtLink) {
txtLink += "&";
return txtLink.split('&')[0];
} else {
txtLink = nxtLink.toString().split('index.php?title=Special:Contributions&target=')[1];
if (txtLink) {
return txtLink;
}
}
}
}
return null;
}
//Once every 5 minutes, refresh (only if showing last 49, 499 or 4999.)
//TODO: Add an ON/OFF link somewhere instead of hardcoding it to my Special:Preferences default
function refreshIf500() {
var loc = document.location.href;
if ( (loc.search('&limit=49') != -1) ){
document.location.href = loc;
}
}
function wiktReformatRecentChangesDiffLinks() {
setTimeout( 'wiktReformatRC()', 1);
}
function wiktDoNextLink() {
wiktCurLink--;
if (wiktCurLink < 1) {
return;
}
var skipping = true;
var skipped = 0;
while (skipping) {
if (skipped > 20) { skipping = false; }
var j = wiktCurLink;
var l2 = wiktLinks[j];
if (l2) {
var l = l2.toString();
if (l.search(/&rcid=/) != -1 ) {
var editor = wiktGetNextUser( j );
if (wiktWhiteListed( editor )) {
wiktJustClickIt( l, l2 );
skipping = false;
} else {
//wiktAddMarkLink( l, l2 );
skipped++;
}
} else { skipped++; }
} else { skipped++; }
}
setTimeout( 'wiktDoNextLink();', 1);
}
function wiktReformatMoreRC() {
for (i=0; i<20; i++) {
var j = wiktCurMarkedLink--;
if (j < 1) { return; }
var l2 = wiktLinks[j];
if (l2) {
var l = l2.toString();
if (l.search(/&rcid=/) != -1 ) {
var editor = wiktGetNextUser( j );
if (wiktWhiteListed( editor )) {
//wiktJustClickIt( l, l2 );
} else {
wiktAddMarkLink( l, l2 );
}
}
}
}
setTimeout( 'wiktReformatMoreRC();', 1);
}
function wiktReformatRC() {
if (wgPageName != "Special:Recentchanges") { return; }
var ok = true;
wiktLinks = document.links;
wiktCurLink = wiktLinks.length;
wiktCurMarkedLink = wiktLinks.length;
//now start clicking the whitelisted links
setTimeout( 'wiktDoNextLink();', 1);
setTimeout( 'wiktReformatMoreRC();', 1);
setTimeout( 'refreshIf500();', 300000); //once every 5 minutes
}
addLoadEvent( wiktReformatRecentChangesDiffLinks );