MediaWiki:Skin/RTRC.js

$=jQuery;var krRTRC_appVersion="v0.8.2-beta";var krRTRC_appDate="November 7, 2010";var krRTRC_APIURL=wgServer+wgScriptPath+"/api.php";var krRTRC_LoaderSRC="http://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif";var krRTRC_BliconSRC="http://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Nuvola_apps_important.svg/18px-Nuvola_apps_important.svg.png";var krRTRC_HelpURL="http://meta.wikimedia.org/wiki/User:Krinkle/Tools/Real-Time_Recent_Changes?uselang="+wgUserLanguage;var krRTRC_Debug=0;if(typeof krRTRC_Disabled=='undefined'||krRTRC_Disabled!==true){var krRTRC_Disabled=false;}else{var krRTRC_Disabled=true;} var krRTRC_MarkPatrolCacheMax=20;var krRTRC_Patrolright=false;var krRTRC_Patroltoken=false;var krRTRC_Delhistright=false;var krRTRC_RCDataURL=false;var krRTRC_optLimit="25";var krRTRC_optFiltAnon=false;var krRTRC_optFiltPatrol=false;var krRTRC_optUser="";var krRTRC_optTypeEdit=true;var krRTRC_optTypeNewpage=true;var krRTRC_optPage="";var krRTRC_optRctype="";var krRTRC_optFrom=false;var krRTRC_optUntill=false;var krRTRC_optRcshow="";var krRTRC_optRcprop="";var krRTRC_optRcstart="";var krRTRC_optNS="";var krRTRC_optOrder="desc";var krRTRC_optRcend="";var krRTRC_optRInt=3000;var krRTRC_optIRCBL=false;var krRTRC_RCTimeout=false;var krRTRC_RCEnabled=null;var krRTRC_IntMsgs={};var krRTRC_RCLegendHTML="";var krRTRC_MassPatrol=false;var krRTRC_AutoDiff=false;var krRTRC_AutoDiffTop=false;var krRTRC_DayHeadPrev=false;var krRTRC_SkipDiffs=[];var krRTRC_MarkPatrolCache=[];var krRTRC_Months=["January","February","March","April","May","June","July","August","September","October","November","December"];var krRTRC_SkipButon="";var krRTRC_FeedMemHTML="";var krRTRC_FeedMemUidArr=[];var krRTRC_TimeDiff=0;var krRTRC_WikiID="unknown";var krRTRC_Updating=false;if(typeof window.krMsgs!=='object'){$.getScript('http://toolserver.org/~krinkle/I18N/export.php?lang='+wgUserLanguage,function{krRTRC_Months=krRTRC_Msg('months').split(',');});} function krLog(s,o){if(krRTRC_Debug===1){console.log(s);if(o){console.log(o);}} return true;} if(typeof String.prototype.ucFirst==='undefined'){String.prototype.ucFirst=function{return this.substr(0,1).toUpperCase+this.substr(1,this.length);};} if(typeof String.prototype.escapeRE==='undefined'){String.prototype.escapeRE=function{return this.replace(/([\\{}|.?*+^$\[\]])/g,"\\$1");};} function krEncodeEntities(s){return $(" ").text(s).html;} function krDencodeEntities(s){return $(" ").html(s).text;} function krRTRC_Msg(key){if(krMsgs[key]){return krMsgs[key];}else{return key.ucFirst;}} function krGetUrlParam(s,url){url=url?url:document.location.href;var re=new RegExp('[^#]*[&?]'+s.escapeRE+'=([^&#]*)');var m=re.exec(url);if(m&&m.length>1){return decodeURIComponent(m[1]);} return null;} function krParseUrlParams(l){var url=l?l:document.location.href;var match=url.match(/\?[^#]*/);if(match===null)return null;var query=match[0];var ret={};var pattern=/[&?]([^&=]*)=?([^&]*)/g;match=pattern.exec(query);for(match!==null;match=pattern.exec(query)){var key=decodeURIComponent(match[1]);var value=decodeURIComponent(match[2]);ret[key]=value;} return ret;} function krEmpty(v){var key;if(v===""||v===0||v==="0"||v===null||v===false||typeof v==='undefined'){return true;} if(typeof v=='object'){for(key in v){return false;} return true;} return false;} function krTrim(v){return v.replace(/^\s*((?:[\S\s]*\S)?)\s*$/,'$1');} function krRTRC_leadZ(i){if(i<10){i="0"+i;} return i;} function krRTRC_WikiLink(s){var l=wgServer;l+=wgArticlePath.replace("$1",encodeURIComponent(s).replace(/\%3A/g,":").replace(/\%2F/g,"/").replace(/\%3F/g,"?"));return l;} function krRTRC_APITimeConv(s){s=s.toString;s=s.replace("-","/").replace("-","/").replace("T"," ").replace("Z","");return new Date(s);} function krRTRC_AdjustAPIClocktime(s){d=krRTRC_APITimeConv(s);msd=krRTRC_TimeDiff*60*1000;d.setTime(d.getTime+msd);return krRTRC_leadZ(d.getHours)+':'+krRTRC_leadZ(d.getMinutes);} function krRTRC_AdjustLongTime(s){s=s.toString;s=s.substr(0,4)+'/'+s.substr(4,2)+'/'+s.substr(6,2)+' '+s.substr(8,2)+':'+s.substr(10,2)+':'+s.substr(12,2);d=new Date(s);if(d=='Invalid Date'){krLog("krRTRC_AdjustLongTime: d-var: Invalid Date");return false;} msd=krRTRC_TimeDiff*60*1000;d.setTime(d.getTime-msd);return d.getFullYear++krRTRC_leadZ(d.getMonth+1)++krRTRC_leadZ(d.getDate)++krRTRC_leadZ(d.getHours)++krRTRC_leadZ(d.getMinutes)+''+krRTRC_leadZ(d.getSeconds);} function krRTRC_isInt(i){return parseInt(i,10)===i;} function krInArray(s,array){for(i=0;i<array.length;i++){if(array[i]==s){return true;}} return false;} function krRTRC_RCDayHead(time){var current=time.getDate;if(current==krRTRC_DayHeadPrev){return'';}else{krRTRC_DayHeadPrev=current;return' '+time.getDate+' '+krRTRC_Months[time.getMonth]+' ';}} function krRTRC_BuildItem(type,title,rcid,revid,old_revid,user,timestamp,comment,patrolled,anon,oldlen,newlen){diffsize=(+newlen)-(+oldlen);patrolled=patrolled===?true:false;anon=anon===?true:false;var typeSymbol=" ";var itemClass="";var diffLink=krRTRC_IntMsgs.diff;if(type=='edit'){if(krRTRC_Patrolright===true&&krRTRC_optFiltPatrol=='on'){typeSymbol=' ! ';}else if(krRTRC_Patrolright===true&&patrolled===false){typeSymbol=' ! ';} itemClass='rcitem';}else if(type=='new'){itemClass='rcitem';typeSymbol=' N ';} comment=comment.replace(/<[^>]*>/g,"");if(comment.indexOf("←")===0){itemClass+=' aes';comment=comment.replace("←","← ");} if(anon){usertypeClass=' anoncontrib';}else{usertypeClass=' usercontrib';} var item=krRTRC_RCDayHead(krRTRC_APITimeConv(timestamp));item+='';if(type=='edit'){diffLink=wgServer+wgScript+"?diff="+revid+"&oldif="+old_revid+"&rcid="+rcid;diffLink=''+krRTRC_IntMsgs.diff+'';}else if(type=='new'){diffLink='new';} item+=' ('+diffLink+') '+typeSymbol+' ';item+=krRTRC_AdjustAPIClocktime(timestamp)+' '+title+' ';item+=' · T · C · '+user+' ';item+=' '+krEncodeEntities(comment)+'  ';if(diffsize>0){el=diffsize>399?"strong":"span";item+=' ('+diffsize+') ';}else if(diffsize===0){item+='  (0)  ';}else{el=diffsize<-399?"strong":"span";item+=' ('+diffsize+') ';} item+=' ';return item;} function krRTRC_GetRCOptions{krRTRC_optLimit=$("#rc-options-limit").val;krRTRC_optFiltAnon=$("#rc-options-filter-anons:checked").val;krRTRC_optRcshow=krRTRC_optFiltAnon=='on'?"|anon":"";krRTRC_optFiltPatrol=$("#rc-options-filter-unpatrolled:checked").val;if(krRTRC_optFiltPatrol=='on'){krRTRC_optRcshow+="|!patrolled";} if(krRTRC_Patrolright===true){krRTRC_optRcprop="|patrolled";} krRTRC_optUser=$("#rc-options-rcuser").val===''?false:krTrim($("#rc-options-rcuser").val);if(!krEmpty(krRTRC_optUser)){krRTRC_optUser="&rcuser="+krRTRC_optUser;}else{krRTRC_optUser="";} krRTRC_optTypeEdit=$("#rc-options-type-edit:checked").val=='on'?true:false;krRTRC_optTypeNewpage=$("#rc-options-type-newpage:checked").val=='on'?true:false;krRTRC_optRctype=[];if(krRTRC_optTypeEdit){krRTRC_optRctype.push('edit');} if(krRTRC_optTypeNewpage){krRTRC_optRctype.push('new');} krRTRC_optRctype=krRTRC_optRctype.join("|");if(krRTRC_optRctype===""){$("#rc-options-type-edit").click;$("#rc-options-type-newpage").click;krRTRC_optRctype='edit|new';} krRTRC_optFrom=krEmpty(krTrim($("#rc-options-timeframe-rcfrom").val))?false:krTrim($("#rc-options-timeframe-rcfrom").val);krRTRC_optUntill=krEmpty(krTrim($("#rc-options-timeframe-rcuntill").val))?false:krTrim($("#rc-options-timeframe-rcuntill").val);if(krRTRC_optOrder=='older'){if(krRTRC_isInt(parseInt(krRTRC_optUntill,10))&&krRTRC_AdjustLongTime(krRTRC_optUntill)){krRTRC_optRcstart="&rcstart="+krRTRC_AdjustLongTime(krRTRC_optUntill);}else{krRTRC_optRcstart="";} if(krRTRC_isInt(parseInt(krRTRC_optFrom,10))&&krRTRC_AdjustLongTime(krRTRC_optFrom)){krRTRC_optRcend="&rcend="+krRTRC_AdjustLongTime(krRTRC_optFrom);}else{krRTRC_optRcend="";}}else if(krRTRC_optOrder=='newer'){if(krRTRC_isInt(parseInt(krRTRC_optFrom,10))&&krRTRC_AdjustLongTime(krRTRC_optFrom)){krRTRC_optRcstart="&rcstart="+krRTRC_AdjustLongTime(krRTRC_optFrom);}else{krRTRC_optRcstart="";} if(krRTRC_isInt(parseInt(krRTRC_optUntill,10))&&krRTRC_AdjustLongTime(krRTRC_optUntill)){krRTRC_optRcend="&rcend="+krRTRC_AdjustLongTime(krRTRC_optUntill);}else{krRTRC_optRcend="";}} krRTRC_optNS=$("#rc-options-namespace").val;krRTRC_optRcdir=$("input[name='rc-options-rcdir']:checked").val;krRTRC_optOrder=krRTRC_optRcdir=='asc'?'newer':'older';krRTRC_optRInt=parseInt($("#rc-options-interval").val,10)*1000;krRTRC_optIRCBL=$("#rc-options-ircbl:checked").val=='on'?true:false;krRTRC_optAutoDiff=$("#rc-options-autodiff").val;krRTRC_AutoDiff=krRTRC_optAutoDiff=='On'?true:false;krRTRC_optAutoDiffTop=$("#rc-options-autodiff-top:checked").val;krRTRC_AutoDiffTop=krRTRC_optAutoDiffTop=='on'?true:false;krRTRC_RCDataURL=krRTRC_APIURL+"?action=query&format=xml&list=recentchanges"+krRTRC_optUser+""+krRTRC_optPage+"&rctype="+krRTRC_optRctype+"&rcshow=!bot"+krRTRC_optRcshow+"&rcprop=flags|timestamp|user|title|comment|sizes|ids"+krRTRC_optRcprop+"&rcnamespace="+krRTRC_optNS+"&rclimit="+krRTRC_optLimit+"&rcdir="+krRTRC_optOrder+krRTRC_optRcstart+krRTRC_optRcend;return krRTRC_RCDataURL;} function krRTRC_RebindElements{$("#krRTRC_RCOutput>.feed div.rcitem").each(function{if(krInArray($(this).attr("rcid"),krRTRC_SkipDiffs)){$(this).addClass("skipped");}else if(krInArray($(this).attr("rcid"),krRTRC_MarkPatrolCache)){$(this).addClass("patrolled");}});$("#krRTRC_RCOutput>.feed div[rcid="+window.currentDiffRcid+"]").addClass("indiff");$("#krRTRC_DiffFrame>table.diff a[href^=http://]").attr("target","_blank");} function krRTRC_PushFrontend{$("#krRTRC_RCOutput").removeClass("placeholder");$("#krRTRC_RCOutput>.feed").html(krRTRC_FeedMemHTML);krRTRC_RebindElements;krRTRC_DayHeadPrev="";krRTRC_RCTimeout=setTimeout(krRTRC_Refresh,krRTRC_optRInt);$("#krRTRC_loader").hide;} function krRTRC_ApplyIRCBL{if(krRTRC_Updating===true){krRTRC_FeedMemUidArr=[];$(krRTRC_FeedMemHTML).find("div.item").each(function(index,el){krRTRC_FeedMemUidArr.push($(el).attr("user"));});krRTRC_FeedMemUidArr.shift;try{$.ajax({url:"http://toolserver.org/~krinkle/CVN/API/?raw=0&format=json&uid="+krRTRC_FeedMemUidArr.join("|")+"&jsoncallback=?",timeout:500,dataType:'json',success:function(data){if(data.users){$.each(data.users,function(i,val){if(val.usertype=='bl'){var tooltip="";if(val.reason){tooltip+=krRTRC_Msg('reason')+': '+val.reason+". ";}else{tooltip+=krRTRC_Msg('noreasonfound');} if(val.adder){tooltip+=krRTRC_Msg('adder')+": "+val.adder;}else{tooltip+=krRTRC_Msg('adder')+": "+krRTRC_Msg('unknown');} krRTRC_FeedMemHTML=$(" "+krRTRC_FeedMemHTML+" ").find("div.item[user="+i+"] .user").addClass("blacklisted").prepend('').attr("title",tooltip).end.html;}});} krRTRC_PushFrontend;$("#krRTRC_RCOutput>.feed").append('<small id="krRTRC_Dumpdate">CVN DB '+krRTRC_Msg('lastupdate')+': '+data.dumpdate+' (UTC) ');krRTRC_Updating=false;},error:function(data,txtstatus,error){krRTRC_PushFrontend;krRTRC_Updating=false;}});}catch(e){krRTRC_PushFrontend;krRTRC_Updating=false;}}} function krRTRC_Refresh{if(krRTRC_RCEnabled===true&krRTRC_Updating===false){$("#krRTRC_loader").show;krRTRC_Updating=true;$.ajax({type:"GET",url:krRTRC_RCDataURL,dataType:"xml",success:function(rawback){lastupdate=new Date;msd=krRTRC_TimeDiff*60*1000;lastupdate.setTime(lastupdate.getTime+msd);krRTRC_FeedMemHTML='<div id="krRTRC_lastupdate">'+krRTRC_Msg('lastupdate')+': '+lastupdate.toUTCString+' | <a href="'+krRTRC_GeneratePermalink+'">'+krRTRC_Msg('permalinktext')+'</a> ';if($(rawback).find('error').length>0){krLog("krRTRC_GetRCData-> "+$(rawback).find('rc').length+" errors");$("#krRTRC_RCOutput").removeClass("placeholder");if($(rawback).find('error').attr("code")=="rcpermissiondenied"){krRTRC_FeedMemHTML+=' Downloading recent changes failed Please untick the "Unpatrolled only"-checkbox or request the Patroller-right on <a href="'+wgServer+'">'+wgServer+'</a>';}else{krRTRC_FeedMemHTML+=' Downloading recent changes failed Please check the settings above and try again. If you believe this is a bug, please <a href="http://meta.wikimedia.org/w/index.php?title=User_talk:Krinkle/Tools&action=edit&section=new&editintro=User_talk:Krinkle/Tools/Editnotice&preload=User_talk:Krinkle/Tools/Preload" target="_blank"> let me know </a>.';} krRTRC_PushFrontend;krRTRC_Updating=false;}else if($(rawback).find('rc').length>0){var htmloutput='<div id="krRTRC_list">';$(rawback).find('rc').each(function(i){htmloutput+=krRTRC_BuildItem($(this).attr("type"),$(this).attr("title"),$(this).attr("rcid"),$(this).attr("revid"),$(this).attr("old_revid"),$(this).attr("user"),$(this).attr("timestamp"),$(this).attr("comment"),$(this).attr("patrolled"),$(this).attr("anon"),$(this).attr("oldlen"),$(this).attr("newlen"));});krRTRC_FeedMemHTML+=htmloutput+" ";if(krRTRC_optIRCBL===true){krRTRC_ApplyIRCBL;}else{krRTRC_PushFrontend;krRTRC_Updating=false;}}else{krRTRC_FeedMemHTML+=' '+krRTRC_Msg('nomatches')+' ';krRTRC_PushFrontend;krRTRC_Updating=false;} $RCOptions_submit.removeAttr("disabled").css("opacity","1.0");}});}} function krRTRC_hardRefresh{krRTRC_RCEnabled=true;$("#krRTRC_toggleRefresh").val("Off").removeClass("button-on");var x=krRTRC_GetRCOptions;clearTimeout(krRTRC_RCTimeout);krRTRC_Refresh;} function krRTRC_ProcesPermalink(l){var get=krGetUrlParam('rclimit',l);$("#rc-options-limit option[value="+get+"]").attr("selected","selected");get=krGetUrlParam('rcshow_anon',l);if(get=="on"){$("#rc-options-filter-anons").attr("checked","checked");} get=krGetUrlParam('rcshow_patrol',l);if(get=="on"){$("#rc-options-filter-unpatrolled").attr("checked","checked");} get=krGetUrlParam('rcuser',l);$("#rc-options-rcuser").val(get);get=krGetUrlParam('typeedit',l);if(get=="off"){$("#rc-options-type-edit").removeAttr("checked");} get=krGetUrlParam('typenewpage',l);if(get=="off"){$("#rc-options-type-newpage").removeAttr("checked");} get=krGetUrlParam('rcfrom',l);$("#rc-options-timeframe-rcfrom").val(get);get=krGetUrlParam('rcuntill',l);$("#rc-options-timeframe-rcuntill").val(get);get=krGetUrlParam('rcnamespace',l);$("#rc-options-namespace option[value="+get+"]").attr("selected","selected");get=krGetUrlParam('rcdir',l);if(get=="asc"){$("#krRTRC_RCOptions input[name=rc-options-rcdir][value=asc]").attr("checked","checked");$("#krRTRC_RCOptions input[name=rc-options-rcdir][value=desc]").removeAttr("checked");} get=krGetUrlParam('ajaxint',l);if(get!==""&&get!==" "&&get!==null&&get!==false){$("#rc-options-interval").val(get);} get=krGetUrlParam('ircbl',l);if(get=="on"){$("#rc-options-ircbl").attr("checked","checked");} get=krGetUrlParam('autodiff');if(get=="on"){$("#rc-options-autodiff").val("On").addClass("button-on");} get=krGetUrlParam('autodiff_top',l);if(get=="on"){$("#rc-options-autodiff-top").attr("checked","checked");} get=krGetUrlParam('jumpstart',l);if(get=="on"){get=krRTRC_GetRCOptions;krRTRC_hardRefresh;window.location.hash='';window.location.hash='toggleHelp';}} function krRTRC_GeneratePermalink{var a='&rclimit='+krRTRC_optLimit;a+=krRTRC_optFiltAnon=='on'?'&rcshow_anon=on':;a+=krRTRC_optFiltPatrol=='on'?'&rcshow_patrol=on':;a+=krRTRC_optUser?krRTRC_optUser:;a+=krRTRC_optTypeEdit?:'&typeedit=off';a+=krRTRC_optTypeNewpage?:'&typenewpage=off';a+=krRTRC_optPage?krRTRC_optPage:;a+=krRTRC_optFrom===false?:'&rcfrom='+krRTRC_optFrom;a+=krRTRC_optUntill===false?:'&rcuntill='+krRTRC_optUntill;a+=krRTRC_optNS===""?:'&rcnamespace='+krRTRC_optNS;a+='&rcdir=';a+=krRTRC_optRcdir=='asc'?'asc':'desc';a+=Math.round(krRTRC_optRInt/1000)!==3?'&ajaxint='+Math.round(krRTRC_optRInt/1000):;a+=krRTRC_optIRCBL?'&ircbl=on':;a+=krRTRC_AutoDiff?'&autodiff=on':;a+=krRTRC_AutoDiffTop?'&autodiff_top=on':'';return wgServer+wgScript+"?title="+wgPageName+a+'&jumpstart=on';} function krRTRC_NextDiff{var $lis=$("#krRTRC_RCOutput>.feed div.rcitem:not(.indiff,.patrolled,.skipped)");if(krRTRC_AutoDiffTop===true){$lis.eq(0).find("a.rcitemlink").click;}else{$lis.eq($lis.length-1).find(" a.rcitemlink").click;}} function krRTRC_TipIn($targetEl,uid,is_anon){krLog("krRTRC_TipIn");var o=$targetEl.offset;if(is_anon){links=' · <a target="_blank" title="Whois '+uid+'?" href="http://toolserver.org/~chm/whois.php?ip='+uid+'">WHOIS</a>';}else{links='';} links+=' · <a target="_blank" title="View cross-wiki contributions" href="http://toolserver.org/~luxo/contributions/contributions.php?user='+uid+'&blocks=true">CrossWiki</a>';if(krRTRC_Delhistright===true){links+=' · <a target="_blank" title="View deleted contributions" href="'+krRTRC_WikiLink('Special:DeletedContributions/'+uid)+'">DeletedContributions</a>';} $krRTRC_Tiptext.html('<a id="krRTRC_Tip_FilterAdd" onclick="$(\'#rc-options-rcuser\').val(\''+uid+'\'); $RCOptions_submit.click;" uid="'+uid+'" title="Filter by '+uid+'">[+ filter ]</a>'+links);$krRTRC_Tip.css({"left":o.left+"px","top":(o.top-23)+"px","display":"block"}).fadeIn('fast');window.krRTRC_TipTime=setTimeout(krRTRC_TipOut,3000);} function krRTRC_TipOut{if(typeof krRTRC_TipTime!=='undefined'){clearTimeout(krRTRC_TipTime);} $krRTRC_Tip.fadeOut;} function krRTRC_RefreshWhois{$.ajax({type:"GET",url:"http://secure.grizzdesign.nl/RTRC-whoisonline.php?wiki_user="+encodeURIComponent(wgUserName+"@"+krRTRC_WikiID)+"&rtrc_hideme=0&rtrc_url="+encodeURIComponent(window.location.href)+"&debug=0&jsoncallback=?",timeout:500,dataType:'json',success:function(data){krLog("Whosonline data",data);$("#krwhosonline").html(data);}});} function krRTRC_ToggleMassPatrol(b){if(b===true){krRTRC_MassPatrol=true;$krRTRC_MassPatrol.val("On").addClass("button-on");$(".patrollink a").click;}else{krRTRC_MassPatrol=false;$krRTRC_MassPatrol.val("Off").removeClass("button-on");}} function krRTRC_GetPatroltoken{$.ajax({type:"GET",url:krRTRC_APIURL+"?action=query&format=xml&list=recentchanges&rctoken=patrol&rclimit=1&rctype=new",dataType:"xml",success:function(rawback){krRTRC_Patroltoken=$(rawback).find('rc').attr("patroltoken");if(krRTRC_Patroltoken){krRTRC_Patroltoken=krRTRC_Patroltoken.replace("+","%2B").replace("\\","%5C");}else{krRTRC_Patroltoken=false;}}});} function krRTRC_init1{krLog("Init Phase 1 started");while(krRTRC_initFuncs.length>0){(krRTRC_initFuncs.shift);} krLog("Init Phase 1 done");} function krRTRC_init2{krLog("Init Phase 2 started");while(krRTRC_initFuncs2.length>0){(krRTRC_initFuncs2.shift);} krLog("Init Phase 2 done");} window.krRTRC_initFuncs=[];window.krRTRC_initFuncs[0]=function{$.ajax({type:"GET",url:krRTRC_APIURL+"?action=query&meta=userinfo&uiprop=rights&format=xml",dataType:"xml",success:function(rawback){if($(rawback).find("r:contains('patrol')").length>0){$(rawback).find("r:contains('patrol')").each(function{if($(this).text=='patrol'&&krRTRC_Patrolright===false){krRTRC_Patrolright=true;}});} if($(rawback).find("r:contains('deletedhistory')").length>0){$(rawback).find("r:contains('deletedhistory')").each(function{if($(this).text=='deletedhistory'&&krRTRC_Delhistright===false){krRTRC_Delhistright=true;}});}}});};window.krRTRC_initFuncs[1]=function{krRTRC_GetPatroltoken;};window.krRTRC_initFuncs[2]=function{$.ajax({type:"GET",url:krRTRC_APIURL+"?action=query&meta=siteinfo&format=xml",dataType:"xml",success:function(rawback){krRTRC_TimeDiff=$(rawback).find('general').attr("timeoffset");krRTRC_WikiID=$(rawback).find('general').attr("wikiid");document.title="RTRC: "+krRTRC_WikiID;}});};window.krRTRC_initFuncs[3]=function{$.getJSON(krRTRC_APIURL+"?action=query&format=json&meta=allmessages&amlang="+wgUserLanguage+"&ammessages=show|hide|ascending abbrev|descending abbrev|markaspatrolleddiff|markedaspatrolled|markedaspatrollederror|next|diff|talkpagelinktext|contributions|recentchanges-label-legend|recentchanges-label-bot|recentchanges-label-minor|recentchanges-label-newpage|recentchanges-label-unpatrolled|recentchanges-legend-bot|recentchanges-legend-minor|recentchanges-legend-newpage|recentchanges-legend-unpatrolled|namespaces|namespacesall|blanknamespace&callback=?",function(data){krLog("GetIntMsgs->"+data);krLog(data);data=data.query.allmessages;for(i=0;i<data.length;i++){krRTRC_IntMsgs[data[i].name]=data[i]['*'];} krRTRC_init2;});};window.krRTRC_initFuncs2=[];window.krRTRC_initFuncs2[0]=function{$("#p-namespaces>ul>li").removeClass("new").find(">a>span").eq(0).html("Tool");$("#ca-talk").removeClass("new").find(">a").attr("href","http://meta.wikimedia.org/w/index.php?title=User_talk:Krinkle/Tools&action=edit&section=new&editintro=User_talk:Krinkle/Tools/Editnotice&preload=User_talk:Krinkle/Tools/Preload").attr("target","_blank").find(">span").html("Feedback");$("#footer").remove;$("#content").addClass("krRTRC_body");krRTRC_RCLegendHTML='<div id="krRTRC_RCLegend">'+krRTRC_IntMsgs["recentchanges-label-legend"].replace("$1.","")+' <abbr class="newpage" title="'+krRTRC_IntMsgs["recentchanges-label-newpage"]+'">N '+krRTRC_IntMsgs["recentchanges-legend-newpage"].replace("$1","")+', <abbr class="unpatrolled" title="'+krRTRC_IntMsgs["recentchanges-label-unpatrolled"]+'">! '+krRTRC_IntMsgs["recentchanges-legend-unpatrolled"].replace("$1","")+' Colors: '+krRTRC_IntMsgs.markedaspatrolled+', '+krRTRC_Msg('currentedit')+' , '+krRTRC_Msg('skippededit')+' , Edit with an Automatic Edit Summary '+krRTRC_Msg('abbreviations')+': T - '+krRTRC_IntMsgs.talkpagelinktext+', C - '+krRTRC_IntMsgs.contributions+' ';krRTRC_RCNamespaceDropdown='<select id="rc-options-namespace" name="rc-options-namespace">';krRTRC_RCNamespaceDropdown+=' '+krRTRC_IntMsgs.namespacesall+' ';krRTRC_RCNamespaceDropdown+=' '+krRTRC_IntMsgs.blanknamespace+' ';for(var ns in wgFormattedNamespaces){if(ns>0){krRTRC_RCNamespaceDropdown+='<option value="'+ns+'">'+wgFormattedNamespaces[ns]+' ';}}krRTRC_RCNamespaceDropdown+=' ';$("#content").html(' <div id="krRTRC_PageWrap" class="plainlinks">'+'<div id="krRTRC_Topbar">Real-Time Recent Changes ('+krRTRC_appVersion+' as of '+krRTRC_appDate+') <small id="toggleHelp">[help] <a target="_blank" href="'+krRTRC_WikiLink("Special:Log/patrol")+'?user='+encodeURIComponent(wgUserName)+'" style="float:right;font-size:smaller;color:#ccc"> ['+krRTRC_Msg('mypatrollog')+'] </a> '+'<div id="krRTRC_RCForm"><fieldset id="krRTRC_RCOptions" class="nohelp"> '+' <label for="rc-options-limit" class="head">'+krRTRC_Msg('limit')+' <select id="rc-options-limit" name="rc-options-limit"> 10 <option selected="" value="25">25 50  75  100  '+' '+' '+krRTRC_Msg('filter')+' <input type="checkbox" value="on" id="rc-options-filter-anons" name="rc-options-filter-anons"><label for="rc-options-filter-anons"> '+krRTRC_Msg('anononly')+' <input type="checkbox" value="on" id="rc-options-filter-unpatrolled" name="rc-options-filter-unpatrolled"><label for="rc-options-filter-unpatrolled"> '+krRTRC_Msg('unpatrolledonly')+' '+' '+' <label for="rc-options-rcuser" class="head">'+krRTRC_Msg('userfilter-opt')+' <input type="text" value="" size="16" id="rc-options-rcuser" name="rc-options-rcuser" /> <input class="button" type="button" id="RCOptions_RcuserClr" value="'+krRTRC_Msg('clear')+'" /> '+' '+' '+krRTRC_Msg('type')+' <input type="checkbox" value="on" id="rc-options-type-edit" name="rc-options-type-edit" checked="checked"><label for="rc-options-type-edit"> '+krRTRC_Msg('edits')+' <input type="checkbox" checked="checked" value="on" id="rc-options-type-newpage" name="rc-options-type-newpage"><label for="rc-options-type-newpage"> '+krRTRC_Msg('newpages')+' '+' '+' '+krRTRC_Msg('timeframe-opt')+' <label for="rc-options-timeframe-rcfrom">'+krRTRC_Msg('from')+': <input type="text" value="" size="14" id="rc-options-timeframe-rcfrom" name="rc-options-timeframe-rcfrom"> <label for="rc-options-timeframe-rcuntill">'+krRTRC_Msg('untill')+': <input type="text" value="" size="14" id="rc-options-timeframe-rcuntill" name="rc-options-timeframe-rcuntill"> '+' '+' <label for="rc-options-namespace" class="head">'+krRTRC_IntMsgs.namespaces+' '+krRTRC_RCNamespaceDropdown+' '+' '+' '+krRTRC_Msg('order')+' <input type="radio" name="rc-options-rcdir" value="asc"> '+krRTRC_Msg('asc')+' <input type="radio" name="rc-options-rcdir" value="desc" checked="checked"> '+krRTRC_Msg('desc')+' '+' '+' <label for="rc-options-interval" class="head">R <span section="Reload_Interval" class="helpicon"> <input type="text" value="3" size="1" id="rc-options-interval" name="rc-options-interval"> '+' '+' <label class="head" for="rc-options-ircbl">IRCBL <span section="IRC_Blacklist" class="helpicon"> <input type="checkbox" value="on" size id="rc-options-ircbl" name="rc-options-ircbl" /> '+' '+' <input class="button" type="button" id="RCOptions_submit" value="'+krRTRC_Msg('apply')+'" /> '+'<hr style="clear:both" />'+' <label for="krRTRC_MassPatrol" class="head">MassPatrol <input id="krRTRC_MassPatrol" class="button button-off" type="button" value="Off" /> '+' '+' <label for="rc-options-autodiff" class="head">AutoDiff <input type="button" class="button button-off" value="Off" id="rc-options-autodiff" /> <input type="checkbox" value="on" id="rc-options-autodiff-top" /> <label for="rc-options-autodiff-top"> '+krRTRC_Msg('loadfromtop')+' '+' '+' <label for="krRTRC_toggleRefresh" class="head">Pause <input id="krRTRC_toggleRefresh" class="button button-off" type="button" value="Off" /> '+' '+'<a name="krRTRC_DiffTop" />'+'<div id="krRTRC_DiffFrame" style="display:none"> '+'<div id="krRTRC_RCOutput" class="placeholder">'+krRTRC_RCLegendHTML+' '+' '+'<div id="krRTRC_Footer"> '+' <a href="http://meta.wikimedia.org/wiki/User:Krinkle/Tools/Real-Time_Recent_Changes" class="external text" rel="nofollow">'+krRTRC_Msg('documentation')+'</a> '+'Real-Time Recent Changes by <a href="http://commons.wikimedia.org/wiki/User:Krinkle" class="external text" rel="nofollow">Krinkle</a> is licensed under a <a href="http://creativecommons.org/licenses/by-sa/3.0" class="external text" rel="nofollow">Creative Commons Attribution-Share Alike 3.0 Unported License</a>.'+' <a href="http://meta.wikimedia.org/wiki/User:Krinkle/Tools/Real-Time_Recent_Changes#Changelog" id="krwhosonline" class="external text" rel="nofollow">'+krRTRC_Msg('whatsnew')+'</a> '+'  ');$("body").append("<div id='krRTRC_Tip'><span id='krRTRC_Tiptext'>  ");$("#content-inner").css("position","relative");$("#krRTRC_RCOutput").prepend(' <img src="'+krRTRC_LoaderSRC+'" id="krRTRC_loader" style="display:none" />');};window.krRTRC_initFuncs2[1]=function{krRTRC_ProcesPermalink;};window.krRTRC_initFuncs2[2]=function{$RCOptions_submit=$("#RCOptions_submit");$RCOptions_submit.click(function{$RCOptions_submit.attr("disabled","disabled").css("opacity","0.5");a=krRTRC_GetRCOptions;krRTRC_hardRefresh;return false;});$("#diffClose").live("click",function{$("#krRTRC_DiffFrame").fadeOut('fast');});window.currentDiff="unknown";window.currentDiffRcid="unknown";$("a.diff").live("click",function{window.currentDiff=$(this).attr("diff");window.currentDiffRcid=$(this).attr("rcid");var title=$(this).parent.find(">a.page").text;var href=$(this).parent.find(">a.diff").attr('href');$("#krRTRC_DiffFrame").removeAttr('style').load(wgServer+wgScript+'?action=render&diff='+window.currentDiff+'&diffonly=1&uselang='+wgUserLanguage,function{$(this).html($(this).html.replace("diffonly=","krinkle=").replace("diffonly=","krinkle="));if(krInArray(window.currentDiffRcid,krRTRC_SkipDiffs)){krRTRC_SkipButon=' <a id="diffUnskip">Unskip</a> ';}else{krRTRC_SkipButon=' <a id="diffSkip">Skip</a> ';} $("#krRTRC_DiffFrame").fadeIn.prepend(' '+title+' <div id="krRTRC_DiffTools"> <a id="diffClose">X</a> <a href="'+href+'" target="_blank" id="diffNewWindow">Open in Wiki</a> '+ (krRTRC_Patroltoken?' <a onclick="(function{ if($(\'.patrollink a\').length){ $(\'.patrollink a\').click; } else { $(\'#diffSkip\').click; } });">[mark]</a> ':'')+' <a id="diffNext">'+krRTRC_IntMsgs.next.ucFirst+' »</a> '+krRTRC_SkipButon+' ');if(krRTRC_MassPatrol===true){$(".patrollink a").click;} $("#krRTRC_RCOutput>.feed div.indiff").removeClass("indiff");krRTRC_RebindElements;});return false;});$("a.newPage").live("click",function{window.currentDiffRcid=$(this).attr("rcid");var title=$(this).parent.find(">a.page").text;var href=$(this).parent.find(">a.page").attr('href');$("#krRTRC_DiffFrame").css("max-height","400px").load(href+'&action=render&uselang='+wgUserLanguage,function{if(krInArray(window.currentDiffRcid,krRTRC_SkipDiffs)){krRTRC_SkipButon=' <a id="diffUnskip">Unskip</a> ';}else{krRTRC_SkipButon=' <a id="diffSkip">Skip</a> ';} $("#krRTRC_DiffFrame").fadeIn.prepend(' '+title+' <div id="krRTRC_DiffTools"> <a id="diffClose">X</a> <a href="'+href+'" target="_blank" id="diffNewWindow">Open in Wiki</a> <a onclick="$(\'.patrollink a\').click">[mark]</a> <a id="diffNext">'+krRTRC_IntMsgs.next.ucFirst+' »</a> '+krRTRC_SkipButon+' ');if(krRTRC_MassPatrol===true){$(".patrollink a").click;} $("#krRTRC_RCOutput>.feed div.indiff").removeClass("indiff");krRTRC_RebindElements;});return false;});$(".patrollink").live("click",function{$(".patrollink>a").html(krRTRC_IntMsgs.markaspatrolleddiff+'...');$.ajax({type:"GET",url:krRTRC_APIURL+'?action=patrol&format=xml&list=recentchanges&rcid='+currentDiffRcid+'&token='+krRTRC_Patroltoken,dataType:"xml",success:function(rawback){if($(rawback).find('error').length>0){$(".patrollink").html(' '+krRTRC_IntMsgs.markedaspatrollederror+' ');krLog("PatrolError: "+$(rawback).find('error').attr("code")+"; info: "+$(rawback).find('error').attr("info"));}else{$(".patrollink").html(' '+krRTRC_IntMsgs.markedaspatrolled+' ');$("#krRTRC_RCOutput>.feed div[rcid="+window.currentDiffRcid+"]").addClass("patrolled");krRTRC_MarkPatrolCache.push(window.currentDiffRcid);while(krRTRC_MarkPatrolCache.length>krRTRC_MarkPatrolCacheMax){krLog('MarkPatrolCache -> Cache array is bigger then cachemax, shifting array('+krRTRC_MarkPatrolCache.length+' vs. '+krRTRC_MarkPatrolCacheMax+'). Current array:');krLog(krRTRC_MarkPatrolCache);krRTRC_MarkPatrolCache.shift;krLog('MarkPatrolCache -> Cache array is shifted. New array:');krLog(krRTRC_MarkPatrolCache);} if(krRTRC_AutoDiff===true){krRTRC_NextDiff;}}},error:function{$(".patrollink").html(' '+krRTRC_IntMsgs.markedaspatrollederror+' ');}});return false;});$("#diffNext").live("click",function{krRTRC_NextDiff;});$("#diffSkip").live("click",function{$("#krRTRC_RCOutput>.feed div[rcid="+window.currentDiffRcid+"]").addClass("skipped");krRTRC_SkipDiffs.push(window.currentDiffRcid);krRTRC_NextDiff;});$("#diffUnskip").live("click",function{$('#krRTRC_RCOutput>.feed div[rcid='+window.currentDiffRcid+']').removeClass("skipped");krRTRC_SkipDiffs.splice(krRTRC_SkipDiffs.indexOf(window.currentDiffRcid),1);});$("#toggleHelp").live("click",function{$("#krRTRC_RCOptions").toggleClass('nohelp');});$("#krRTRC_RCForm .helpicon").attr("title",krRTRC_Msg('clickforinfo'));$("#krRTRC_RCForm .helpicon").live("click",function{window.open(krRTRC_HelpURL+'#'+$(this).attr("section"),"_blank");return false;});$("#RCOptions_RcuserClr").live("click",function{if(krRTRC_MassPatrol===true){var a=window.confirm(krRTRC_Msg('masspatrol_userfilterconfirm'));if(a){$("#rc-options-rcuser").val("");krRTRC_ToggleMassPatrol(false);}}else{$("#rc-options-rcuser").val("");} $RCOptions_submit.click;});$krRTRC_Tip=$("#krRTRC_Tip");$krRTRC_Tiptext=$("#krRTRC_Tiptext");$("#krRTRC_Tip,#krRTRC_Tiptext").live("click",function{krRTRC_TipOut;});$("#krRTRC_Tip,#krRTRC_Tiptext").live("mouseover",function{clearTimeout(window.krRTRC_TipTime);});$("#krRTRC_Tip,#krRTRC_Tiptext").live("mouseleave",function{window.krRTRC_TipTime=setTimeout(krRTRC_TipOut,1000);});$("#krRTRC_list *").live("mouseover",function(e){krLog(e);krLog(e.target);$hovEl=false;if($(e.target).is(".rcitem")){$hovEl=$(e.target);}else if($(e.target).parents(".rcitem").is(".rcitem")){$hovEl=$(e.target).parents(".rcitem");} if($hovEl){krRTRC_TipIn($hovEl.find(".user"),$hovEl.find(".user").text,$hovEl.hasClass("anoncontrib"));}else{krRTRC_TipOut;}});$(".mw-rollback-link a").live("click",function{$(".patrollink a").click;});$krRTRC_MassPatrol=$("#krRTRC_MassPatrol");$krRTRC_MassPatrol.live("click",function{if(krRTRC_MassPatrol===true){krRTRC_ToggleMassPatrol(false);}else if(krRTRC_AutoDiff===true){krRTRC_ToggleMassPatrol(true);}else{var a=window.confirm(krRTRC_Msg('masspatrol_autodiffneeded'));if(a){krRTRC_AutoDiff=true;$("#rc-options-autodiff").val("On").addClass("button-on");krRTRC_ToggleMassPatrol(true);}}});$("#rc-options-autodiff").live("click",function{if(krRTRC_AutoDiff===true){if(krRTRC_MassPatrol===true){var a=window.confirm(krRTRC_Msg('autodiff_masspatrolneeds'));if(a){$("#rc-options-autodiff").val("Off").removeClass("button-on");krRTRC_AutoDiff=false;krRTRC_ToggleMassPatrol(false);}}else{$(this).val("Off").removeClass("button-on");krRTRC_AutoDiff=false;}}else{$(this).val("On").addClass("button-on");krRTRC_AutoDiff=true;}});$("#rc-options-autodiff-top").live("click",function{if(krRTRC_AutoDiffTop===true){$(this).removeAttr("checked");krRTRC_AutoDiffTop=false;}else{$(this).attr("checked","checked");krRTRC_AutoDiffTop=true;}});$("#krRTRC_toggleRefresh").live("click",function{krLog("#krRTRC_toggleRefresh clicked");if(krRTRC_RCEnabled===true){krRTRC_RCEnabled=false;$(this).val("On").addClass("button-on");clearTimeout(krRTRC_RCTimeout);}else if(krRTRC_RCEnabled===false){krRTRC_RCEnabled=true;$(this).val("Off").removeClass("button-on");krRTRC_hardRefresh;}else{$(this).val("On").addClass("button-on");clearTimeout(krRTRC_RCTimeout);} return false;});};if(wgTitle=="Krinkle/RTRC"&&(wgAction=='view'||wgAction=='edit')&&!krRTRC_Disabled){importStylesheetURI('http://meta.wikimedia.org/w/index.php?title=User:Krinkle/RTRC.css&action=raw&ctype=text/css');importStylesheetURI('http://bits.wikimedia.org/skins-1.5/common/diff.css');$(function{if($("html").hasClass("msie")){var s="Internet Explorer is not supported. Please use a Mozilla or WebKit-based browser such as Firefox, Chrome or Safari.";alert(s);$(" <p style='color:red'>"+s+" ").insertBefore("#catlinks");return true;}else if($("html").hasClass("opera")){alert("Opera is currently not supported. Proceed at own risk or use a Mozilla or WebKit-based browser such as Firefox, Chrome or Safari.");} krRTRC_init1;});}