Utilisateur:EDUCA33E/LiveRC.js
Un article de Wikipédia, l'encyclopédie libre.
Note : Après avoir publié la page, vous devrez forcer son rechargement pour voir les changements : Mozilla / Konqueror / Firefox : Shift-Ctrl-R, Internet Explorer / Opera : Ctrl-F5, Safari : Cmd-R.
/* ==LiveWP== *Documentation : [[:fr:User:EDUCA33E/LiveRC/Documentation]] *Author : [[:fr:User:EDUCA33E]] *Dev & enhancements : [[:fr:User:TiChou]], [[:pl:User:Leafnode]] & [[:it:User:Jalo]] *Version: 0.3.7 (beta) === Variables globales === <source lang="javascript"> */ if (wgTitle == "EDUCA33E/LiveRC") { // Appel des parametres par défaut de LiveRC ; // /////////////////////////////////////////// document.write('<script type="text/javascript" src="' + wgServer + wgScriptPath + '/index.php?title='+wgPageName+'/LiveRCparam.js' + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); // Appel des parametres utilisateur ; // /////////////////////////////////////////// document.write('<script type="text/javascript" src="' + wgServer + wgScriptPath + '/index.php?title=User:'+encodeURI(wgUserName)+'/LiveRCparam.js' + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); var cssNode = document.createElement('link'); cssNode.type = 'text/css'; cssNode.rel = 'stylesheet'; cssNode.href = 'http://pl.wikipedia.org/skins-1.5/common/diff.css?90'; cssNode.media = 'screen'; cssNode.title = 'dynamicLoadedSheet'; document.getElementsByTagName("head")[0].appendChild(cssNode); document.write('<script type="text/javascript" src="http://pl.wikipedia.org/skins-1.5/common/diff.js?90"></script>'); var lastrevid,lasttimestamp=1; // Timestamp d'initialisation; // Découpage de l'URL et de ses parametres; var _GET = new Array(); var _uri = location.href; var _temp_get_arr = _uri.substring(_uri.indexOf('?')+1, _uri.length).split("&"); var _temp_get_arr_1 = new Array(); for(_get_arr_i=0; _get_arr_i<_temp_get_arr.length; _get_arr_i++){ _temp_get_arr_1 = _temp_get_arr[_get_arr_i].split("="); _GET[decodeURIComponent(_temp_get_arr_1[0])] = decodeURIComponent(_temp_get_arr_1[1]); } delete _uri; delete _temp_get_arr; delete _temp_get_arr_1; // Variables d'état (pour test sur rc.state); var IP = 1; var BOT = 2 << 0; var SYSOP = 2 << 1; var NEW = 2 << 2; var MINOR = 2 << 3; var NEWNS = 2 << 4; var RENAMED = 2 << 5; var PATROLLED = 2 << 6; var REVERT = 2 << 7; var BLANKING = 2 << 8; var REPLACED = 2 << 9; var REDIRECT = 2 << 10; var CATEGORIZED = 2 << 11; var LOCK = 2 << 12; var FULLLOCK = 2 << 13; var HOMONYMIE = 2 << 14; var ADQ = 2 << 15; var BA = 2 << 16; var APDQ = 2 << 17; var COPYRIGHT = 2 << 18; var PAS = 2 << 19; var FIRE = 2 << 20; var UPLOAD = 2 << 21; var NEWUSER = 2 << 22; var BLOCK = 2 << 23; var DELETE = 2 << 24; var MOVE = 2 << 25; var PROTECT = 2 << 26; var lstSysop = new Array(); // Sysop list; var lstContact = new Array(); // Contact list; var lstRevoc = new Array(); // Reverted list; var lstHidden = new Array(); // Hidden users list; // Is user Sysop; var lrcAdmin = false; // default value; if(wgUserGroups.indexOf("sysop") != -1) lrcAdmin = true; // Watchlist; var lstSuivi = new Array(); var lstSuiviHH = new Array(); } /* </source> ===Utilities=== <source lang="javascript"> */ var wpajax = { http: function(bundle) { // mandatory: bundle.url // optional: bundle.async // optional: bundle.method // optional: bundle.headers // optional: bundle.data // optional: bundle.onSuccess (xmlhttprequest, bundle) // optional: bundle.onFailure (xmlhttprequest, bundle) // optional: bundle.otherStuff OK too, passed to onSuccess and onFailure var xmlhttp; try { xmlhttp = new XMLHttpRequest(); } catch(e) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlhttp = false } } } if (xmlhttp) { xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) wpajax.httpComplete(xmlhttp,bundle); }; xmlhttp.open(bundle.method ? bundle.method : "GET",bundle.url,bundle.async == false ? false : true); if (bundle.headers) { for (var field in bundle.headers) xmlhttp.setRequestHeader(field,bundle.headers[field]); } xmlhttp.send(bundle.data ? bundle.data : null); } return xmlhttp; }, httpComplete: function(xmlhttp,bundle) { if (xmlhttp.status == 200 || xmlhttp.status == 302) { if (bundle.onSuccess) bundle.onSuccess(xmlhttp,bundle); } else if (bundle.onFailure) { bundle.onFailure(xmlhttp,bundle); } else { // A activer en debug mode ? // alert(xmlhttp.statusText); } } }; // Parser if (document.implementation.createDocument) { var gml_xmlparser = new DOMParser(); } function gml_XMLParse(string) { if (document.implementation.createDocument) { return gml_xmlparser.parseFromString(string, "text/xml"); } else if (window.ActiveXObject) { var gml_xmldoc = new ActiveXObject("Microsoft.XMLDOM"); gml_xmldoc.async = "false"; ret = gml_xmldoc.loadXML(string); if (!ret) return null; return gml_xmldoc.documentElement; } return null; } // HTMLize String.prototype.htmlize = function() { var chars = new Array('&','<','>','"'); var entities = new Array('amp','lt','gt','quot'); var regex = new RegExp(); var string = this; for (var i=0; i<chars.length; i++) { regex.compile(chars[i], "g"); string = string.replace(regex, '&' + entities[i] + ';'); } return string; } /* </source> === LiveDiff === <source lang="javascript"> */ function liveDiff(page, id, oldid) { var el = document.getElementById( 'livePreviewTitle' ); el.innerHTML="<b style='text-decoration: blink;'>Diff : <span style='color:red'>"+page+"</span>...</b>"; wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title='+encodeURIComponent(page)+'&diffonly=1&diff='+id+'&oldid='+oldid, onSuccess: getDiff, mpage: page, mid: id, moldid:oldid}); } function getDiff(xmlreq, data) { var doc = gml_XMLParse(xmlreq.responseText); var page=data.mpage; var oldid=data.moldid; var id=data.mid; var bC = doc.getElementById('bodyContent'); if (bC == null) bC = doc.getElementById('article') var LP = document.getElementById( 'livePreview' ); var dLP = document.getElementById( 'divLivePreview' ); var lD = getElementsByClass('diff',bC,null); var upage=page.replace(new RegExp(/\'/g), "\\'"); if (lD[0] == null) LP.innerHTML = bC.innerHTML; else { if (document.getElementById('showDiffR').checked) { var avantEl = getElementsByClass('diff-deletedline',bC,null); var apresEl = getElementsByClass('diff-addedline',bC,null); var rollback = getElementsByClass('mw-rollback-link',bC,null); if (rollback[0] == null) var rl = ""; else var rl = rollback[0].innerHTML+"<br />"; var avant = ""; var apres = ""; var lav = avantEl.length; var lap = apresEl.length; for(var n=0; n < lav ; n++) avant = avant + avantEl[n].innerHTML + "<br />"; for(var n=0; n < lap ; n++) apres = apres + apresEl[n].innerHTML + "<br />"; LP.innerHTML = rl+"<table width='100%'><tr><td width='50%' class='diff-deletedline'>"+avant+"</td><td class='diff-addedline'>"+apres+"</td></tr></table>"; } else { LP.innerHTML = "<table border='0' width='98%' cellpadding='0' cellspacing='4' class='diff'>"+lD[0].innerHTML+"</table>"; } } if (dLP.style.display == "none") { var elcb = document.getElementById( 'shidPrev' ); elcb.checked="true"; dLP.style.display = "inline"; } var entete = document.getElementById( 'livePreviewTitle' ); entete.innerHTML='<b><a href="'+wgServer + '/wiki/' + encodeURI(page) + '" target="_new">' + page + '</a></b> • ' + '(<a href="javascript:;" onClick="liveHist(\''+upage+'\');" style="color:darkorange">Hist</a>)'; var asNextDiff = doc.getElementById("differences-nextlink"); if(asNextDiff == null) { var optAvert = ""; var optl = lstAvert.length; for (j=0; j<optl; j++) { optAvert += '<option value="'+lstAvert[j].template; if(lstAvert[j].hasPage) optAvert += '|'+upage; optAvert += '">'+lstAvert[j].string+'</option>'; } // Get username of submitter var user1 = doc.getElementById( 'mw-diff-otitle2' ); if (user1 != null) { var usertmp=user1.innerHTML; user1 = usertmp.replace(new RegExp(/<a (.*)>(.*)<\/a> \(<a(.*)/g), "$2"); } var user2 = doc.getElementById( 'mw-diff-ntitle2' ); if (user2 != null) { var usertmp=user2.innerHTML; user2 = usertmp.replace(new RegExp(/<a (.*)>(.*)<\/a> \(<a(.*)/g), "$2"); } user1=user1.replace(new RegExp(/\'/g), "\\'"); user2=user2.replace(new RegExp(/\'/g), "\\'"); var identique=""; if(user1 == user2) { identique = "<b style='color:red'>[éditeur précédent identique]</b> "; } entete.innerHTML = '<table width="100%" class="creator"><tr><td>' + entete.innerHTML + '</td><td align="right"><small>' + identique + // Verifier avant si le patrouilleur peut modifier cette page ? (query.php?what=permissions&titles=page) '[<a id="LiveRevertLink" href="javascript:getLiveMessage(\'liverevert\',\''+user1+'\',\''+user2+'\',\''+upage+'\',\''+oldid+'\');" >' + lang_menu[0].UNDORC+'</a>] • ' + lang_menu[0].REASON+' : <input id="LiveRevertMessage" /> ••• ' + '[<a id="LiveAvertoLink" href="javascript:getLiveAverto(\''+user2+'\');">'+lang_menu[0].AVERTS+'</a>] : ' + '<select id="averto">' + optAvert + '</select>' + '</td></tr></table>'; document.getElementById('LiveRevertMessage').focus(); } } function getLiveAverto(user) { var link = document.getElementById('LiveAvertoLink'); link.href = "javascript:;"; link.style.color = "silver"; link.style.cursor = "default"; link.style.textDecoration = "none"; document.getElementById('averto').disabled = true; var message = document.getElementById('averto').value; wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title=User_Talk:' + encodeURIComponent(user) + '&action=edit', onSuccess: postLiveAverto, user: user, message: message }); } function postLiveAverto(xmlreq, data) { var parser = new DOMParser(); var doc = parser.parseFromString(xmlreq.responseText, 'application/xhtml+xml'); var user = data.user; var message = data.message.replace(new RegExp(/\\'/g),"'"); // Message au début // var wpTextbox1 = encodeURIComponent('{{subst:' + message + '}} ~~~~\n' + doc.getElementById('wpTextbox1').value); var wpTextbox1 = encodeURIComponent(doc.getElementById('wpTextbox1').value + '\n\n{{subst:' + message + '}} ~~~~\n'); var inputs = doc.getElementById('editform').getElementsByTagName('input'); var editform = new Array(); for (i=0; i<inputs.length; i++) { editform[inputs[i].name] = inputs[i].value; } var wpStarttime = encodeURIComponent(editform['wpStarttime']); var wpEdittime = encodeURIComponent(editform['wpEdittime']); var wpEditToken = encodeURIComponent(editform['wpEditToken']); //var wpSummary = encodeURIComponent('LiveRC : Avertissement ! ' + message.replace(new RegExp(/\|(.*)/), ' sur [[$1]]') + ' !'); var wpSummary = encodeURIComponent('LiveRC : Warning following edits ! ' + message.replace(new RegExp(/\|(.*)/), ' on [[$1]]') + ' !'); var headers = new Array(); headers['Content-Type'] = 'application/x-www-form-urlencoded'; wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title=User_Talk:' + encodeURI(user) + '&action=submit', method: "POST", headers: headers, data: 'wpSave=1&wpTextbox1=' + wpTextbox1 + '&wpStarttime=' + wpStarttime + '&wpEdittime=' + wpEdittime + '&wpEditToken=' + wpEditToken + '&wpSummary=' + wpSummary}); } function getLiveMessage(where, user1, user2, page, oldid) { var links = [ document.getElementById('LiveRevertLink') ]; var i,len=links.length; for (i=0; i<len; i++) { links[i].href = "javascript:;"; links[i].style.color = "silver"; links[i].style.cursor = "default"; links[i].style.textDecoration = "none"; } document.getElementById('LiveRevertMessage').disabled = true; var message = document.getElementById('LiveRevertMessage').value; wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title=' + encodeURI(page) + '&action=edit&oldid=' + oldid, onSuccess: postLiveRevert, where: where, page: page, user1: user1, user2: user2, message: message }); } function postLiveRevert(xmlreq, data) { var parser = new DOMParser(); var doc = parser.parseFromString(xmlreq.responseText, 'application/xhtml+xml'); var where = data.where; var page = data.page; var user1 = data.user1; var user2 = data.user2; var message = data.message; var wpTextbox1 = encodeURIComponent(doc.getElementById('wpTextbox1').value); var inputs = doc.getElementById('editform').getElementsByTagName('input'); var editform = new Array(); for (i=0; i<inputs.length; i++) { editform[inputs[i].name] = inputs[i].value; } var wpStarttime = encodeURIComponent(editform['wpStarttime']); var wpEdittime = encodeURIComponent(editform['wpEdittime']); var wpEditToken = encodeURIComponent(editform['wpEditToken']); switch(where) { case 'liverevert': var wpSummary = lang_menu[0].RVMES1 + ' [[Special:Contributions/' + user2 + '|' + user2 + ']]; '+lang_menu[0].RVMES2+' [[User:' + user1 + '|' + user1 + ']]'; break; /* case 'livevandalism': var wpSummary = 'LiveRC : Révocation de vandalisme par [[Special:Contributions/' + user2 + '|' + user2 + ']]; retour a la version de [[User:' + user1 + '|' + user1 + ']]'; break; */ } if (message) wpSummary = wpSummary + ' ; ' + message; wpSummary = encodeURIComponent(wpSummary); var headers = new Array(); headers['Content-Type'] = 'application/x-www-form-urlencoded'; wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(page) + '&action=submit', method: "POST", headers: headers, data: 'wpSave=1&wpTextbox1=' + wpTextbox1 + '&wpStarttime=' + wpStarttime + '&wpEdittime=' + wpEdittime + '&wpEditToken=' + wpEditToken + '&wpSummary=' + wpSummary}); } /* </source> === LiveHist === <source lang="javascript"> */ function liveHist(page) { var el = document.getElementById( 'livePreviewTitle' ); el.innerHTML="<b style='text-decoration: blink;'>Hist : <span style='color:red'>"+page+"</span>...</b>"; wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(page) + '&action=history', onSuccess: getHist, message: page }); } function getHist(xmlreq, data) { doc = gml_XMLParse(xmlreq.responseText); bC = doc.getElementById('bodyContent') if (bC == null) bC = doc.getElementById('article') var c=data.message; var LP = document.getElementById( 'livePreview' ); var dLP = document.getElementById( 'divLivePreview' ); LP.innerHTML = bC.innerHTML; if (dLP.style.display == "none") { var elcb = document.getElementById( 'shidPrev' ); elcb.checked="true"; dLP.style.display = "inline"; } var elt = document.getElementById( 'livePreviewTitle' ); elt.innerHTML='<b><a href="'+wgServer+'/wiki/'+encodeURIComponent(c)+'" target="_new">'+c+'</a></b>'; } /* </source> === LiveArticle === <source lang="javascript"> */ function liveArticle(page) { var el = document.getElementById( 'livePreviewTitle' ); el.innerHTML="<b style='text-decoration: blink;'><span style='color:red'>"+page+"</span>...</b>"; wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(page) + '&redirect=no', onSuccess: getArticle, message: page }); } function getArticle(xmlreq, data) { doc = gml_XMLParse(xmlreq.responseText); bC = doc.getElementById('bodyContent') if (bC == null) bC = doc.getElementById('article') var c=data.message; var LP = document.getElementById( 'livePreview' ); var dLP = document.getElementById( 'divLivePreview' ); LP.innerHTML = bC.innerHTML; if (dLP.style.display == "none") { var elcb = document.getElementById( 'shidPrev' ); elcb.checked="true"; dLP.style.display = "inline"; } var elt = document.getElementById( 'livePreviewTitle' ); elt.innerHTML='<b><a href="'+wgServer+'/wiki/'+encodeURI(c)+'" target="_new">'+c+'</a></b>'; } /* </source> === LiveContrib === <source lang="javascript"> */ function liveContrib(user) { var el = document.getElementById( 'livePreviewTitle' ); el.innerHTML="<b style='text-decoration: blink;'><span style='color:red'>"+user+"</span>...</b>"; wpajax.http({url:wgServer + '/wiki/Special:Contributions/'+encodeURIComponent(user), onSuccess: getContrib, message: user }); } function getContrib(xmlreq, data) { doc = gml_XMLParse(xmlreq.responseText); bC = doc.getElementById('bodyContent') if (bC == null) bC = doc.getElementById('article') var user=data.message; var LP = document.getElementById( 'livePreview' ); var dLP = document.getElementById( 'divLivePreview' ); LP.innerHTML = bC.innerHTML; if (dLP.style.display == "none") { var elcb = document.getElementById( 'shidPrev' ); elcb.checked="true"; dLP.style.display = "inline"; } var utilde=user.replace(new RegExp(/\'/g), "\\'"); var optAvert = ""; var optl = lstAvert.length; for (j=0; j<optl; j++) { if(lstAvert[j].hasPage) continue; optAvert += '<option value="'+lstAvert[j].template+'">'+lstAvert[j].string+'</option>'; } var entete = document.getElementById( 'livePreviewTitle' ); entete.innerHTML='<b><a href="'+wgServer+'/wiki/User:'+encodeURIComponent(user)+'" target="_new">'+user+'</a></b>'; entete.innerHTML = '<table width="100%" class="creator"><tr><td>'+entete.innerHTML + '</td><td align="right"><small>' + '[<a id="LiveAvertoLink" href="javascript:var message=getLiveAverto(\''+utilde+'\');">'+lang_menu[0].AVERTS+'</a>] : ' + '<select id="averto">' + optAvert + '</select>' + '</td></tr></table>'; } /* </source> === LiveLog (:it:User:Jalo) === <source lang="javascript"> */ function liveLog(action,page) { var titolo = ''; switch(action) { case 'upload': titolo = 'Log dei caricamenti'; break; case 'newuser': titolo = 'Log dei nuovi utenti'; break; case 'block': titolo = 'Log dei blocchi utente'; break; case 'delete': titolo = 'Log delle cancellazioni'; break; case 'move': titolo = 'Log degli spostamenti'; break; case 'protect': titolo = 'Log delle protezioni'; break; default: break; } var el = document.getElementById( 'livePreviewTitle' ); el.innerHTML="<b style='text-decoration: blink;'><span style='color:red'>"+titolo+"</span>...</b>"; wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=Special:Log&type=' + action + "&user=&page=" + encodeURIComponent(page), onSuccess: getLog, message: page }); } function getLog(xmlreq, data) { doc = gml_XMLParse(xmlreq.responseText); bC = doc.getElementById('bodyContent') if (bC == null) bC = doc.getElementById('article') var c=data.message; var LP = document.getElementById( 'livePreview' ); var dLP = document.getElementById( 'divLivePreview' ); LP.innerHTML = bC.innerHTML; if (dLP.style.display == "none") { var elcb = document.getElementById( 'shidPrev' ); elcb.checked="true"; dLP.style.display = "inline"; } var elt = document.getElementById( 'livePreviewTitle' ); elt.innerHTML='<b><a href="'+wgServer+'/wiki/'+encodeURI(c)+'" target="_new">'+c+'</a></b>'; } /* </source> === LiveSysop === <source lang="javascript"> */ function liveSysop() { wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=Special:Listusers&limit=500&group=sysop', onSuccess: getSysop, message: "Pobieranie listy adminów" }); } function getSysop(xmlreq, data) { var doc = gml_XMLParse(xmlreq.responseText); var bC = doc.getElementById('bodyContent'); if (bC == null) bC = doc.getElementById('article') var lstSys = bC.getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ); var info=""; var len = lstSys.length for(var i=0; i < len ; i++) { info=lstSys[i].getElementsByTagName( 'a' )[ 0 ].innerHTML; lstSysop.push(info); } liveNS(); } function liveWatch() { wpajax.http({url:wgServer + '/wiki/Special:Watchlist/edit', onSuccess: getWatch, message: "Pobieranie obserwowanych" }); } function getWatch(xmlreq, data) { var doc = gml_XMLParse(xmlreq.responseText); var bC = doc.getElementById('bodyContent'); if (bC == null) bC = doc.getElementById('article') var info=""; var lstUL = bC.getElementsByTagName( 'ul' ); var lenUL = lstUL.length; for(var j=0; j < lenUL ; j++) { var lstLI = lstUL[j].getElementsByTagName( 'li' ); var lenLI = lstLI.length; for(var i=0; i < lenLI ; i++) { info=lstLI[i].getElementsByTagName( 'input' )[ 0 ].value; lstSuivi.push(info); lstSuiviHH.push("--:--"); } } liveRC(); } /* function liveWatch() { wpajax.http({url:wgServer + wgScriptPath + '/api.php?action=query&list=watchlist&wllimit=500&format=xml', onSuccess: getWatch, message: "Pobieranie listy obserwowanych" }); } function getWatch(xmlreq, data) { var a=xmlreq.responseText; var c=data.message; var i; // document.getElementById('debug').innerHTML = a+"<br />**************************"; if(a.indexOf("<error")!=-1) { var lvSuivi = document.getElementById( 'liveSuivi' ); lvSuivi.innerHTML = "<small>Suivi désactivé. (API.php : watchlist)</small>"; return; } a=a.split("title=\""); var info=""; for(i=a.length-1; i >= 0 ; i--) { info=a[i].substr(0,a[i].indexOf("\" pageid")); if (info == "") continue; lstSuivi.push(info); lstSuiviHH.push("--:--"); } //document.getElementById('debug').innerHTML += lstSuivi; } */ function liveNS() { wpajax.http({url: wgServer + wgScriptPath + '/api.php?action=query&meta=siteinfo&siprop=namespaces&format=xml', onSuccess: getNS, message: "Pobieranie nazw przestrzeni" }); } function getNS(xmlreq, data) { var api = xmlreq.responseXML; if (api.firstChild.nodeName == "error") return; var nss = api.getElementsByTagName('query')[0].getElementsByTagName('namespaces')[0].getElementsByTagName('ns'); var len = nss.length; var i; var id,ns; var options = ""; var lstNs = new Array(); for (i=0; i<len; i++) { id = nss[i].getAttribute('id'); ns = nss[i].textContent; if (id < 0) continue; if (id == 0) ns = "Article"; options += '<option value="' + id + '">' + ns + '</option>'; lstNs.push(id); } options = '<option value="' + lstNs.join('|') + '">*</option>' + options; document.getElementById('selectNS').innerHTML = '<label for="showNS0">'+lang_menu[0].NAMESP+' </label><select id="showNS0">' + options + '</select>'; liveWatch(); } /* </source> === LiveRC === <source lang="javascript"> */ function supprLigne(quelLigne) { var i,len; var tab = document.getElementById('tabRC'); var els = new Array(); if (quelLigne == '*') els = tab.getElementsByTagName('tr'); else if (quelLigne == 'd') { var _els = tab.getElementsByTagName('tr'); len = _els.length; for (i=len-1; i>=0; i--) if (_els[i].firstChild.style.backgroundColor == 'rgb(255, 250, 205)') els.push(_els[i]); } else if (quelLigne == 'r') { var _els = tab.getElementsByTagName('tr'); len = _els.length; for (i=len-1; i>=0; i--) if (_els[i].firstChild.style.backgroundColor == 'rgb(255, 228, 225)') els.push(_els[i]); } else if (quelLigne == 'n') { var _els = tab.getElementsByTagName('tr'); len = _els.length; for (i=len-1; i>=0; i--) if (_els[i].firstChild.style.backgroundColor == 'rgb(226, 242, 210)') els.push(_els[i]); } else els.push(document.getElementById(quelLigne)); len = els.length; for (i=len-1; i>=0; i--) if (els[i] != null) tab.removeChild(els[i]); } function changeLigne(quelLigne) { var el = document.getElementById(quelLigne); var els1 = el.getElementsByTagName('th'); var els2 = el.getElementsByTagName('td'); var len = els1.length; for (var i=len-1; i>=0; i--) if (els1[i] != null) els1[i].style.backgroundColor = "#FFFACD"; var len = els2.length; for (var i=len-1; i>=0; i--) if (els2[i] != null) els2[i].style.backgroundColor = "#FFFFE0"; } function getElementsByClass(searchClass,node,tag) { var classElements = new Array(); if ( node == null ) node = document; if ( tag == null ) tag = '*'; var els = node.getElementsByTagName(tag); var elsLen = els.length; var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)'); for (i = 0, j = 0; i < elsLen; i++) { if (pattern.test(els[i].className) ) { classElements[j] = els[i]; j++; } } return classElements; } function tsToHhMm(timestamp) { var tz; var match, regex = new RegExp(); if (lrcTZ) { regex.compile(/^([-+])?(\d?\d):?(\d\d)$/); match = regex.exec(lrcTZ); if (!match) { //livercError(lang_error.TZ); return 'xx:xx'; } tz = match[2]*60 + match[3]*1; tz = match[1] == '-' ? -tz : tz; } else { var now = new Date(); tz = -now.getTimezoneOffset(); } regex.compile(/^\d\d\d\d-\d\d-\d\dT(\d\d):(\d\d):\d\dZ$/); match = regex.exec(timestamp); if (!match) { //livercError(lang_error.timestamp); return 'xx:xx'; } var tt = (match[1]*60 + match[2]*1 + tz + 1440) % 1440; var mm = tt % 60; var hh = (tt - mm) / 60 % 24; return hh + ':' + (mm < 10 ? '0' : '') + mm; } function updateHidden() { var tempAr = new Array(); for (var user in lstHidden) { var utilde = user.replace(new RegExp(/\'/g), "\\'"); var uremove = '<a href="javascript:;" onClick="unhideUser(\''+utilde+'\');" style="color:grey">-</a>'; var udiscut = '<a href="'+wgServer+'/wiki/User talk:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">T</a>'; var ucontrib = '<a href="javascript:;" onClick="liveContrib(\''+utilde+'\');" style="color:#43CD80">C</a>'; var uadmin = ''; if (lrcAdmin == true) { uadmin = ' • <a href="'+wgServer+'/wiki/Special:Blockip/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>'; } var ueditor = '<a href="'+wgServer+'/wiki/User:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>'; var ligne = '<span id="hidden-' + user + '"><small>' + uremove + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • </small>' + ueditor + '</span><br />'; tempAr.push(ligne); } tempAr.sort(); var lvHidden = document.getElementById('liveHidden'); lvHidden.innerHTML = ""; var len = tempAr.length; for (var n=len-1; n>=0; n--) lvHidden.innerHTML += tempAr[n]; } function updateFollowContact() { var tempAr = new Array(); for (var user in lstContact) { var timestamp = lstContact[user].ts; if (timestamp == 0) continue; var utilde = user.replace(new RegExp(/\'/g), "\\'"); var udiscut = '<a href="'+wgServer+'/wiki/User talk:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">T</a>'; var ucontrib = '<a href="javascript:;" onClick="liveContrib(\''+utilde+'\');" style="color:#43CD80">C</a>'; var uadmin = ''; if (lrcAdmin == true) { uadmin = ' • <a href="'+wgServer+'/wiki/Special:Blockip/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>'; } var ueditor = '<a href="'+wgServer+'/wiki/User:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>'; var ligne = '<span id="contact-' + timestamp + '"><small>' + tsToHhMm(timestamp) + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • </small>' + ueditor + '</span><br />'; tempAr.push(ligne); } tempAr.sort(); var lvContact = document.getElementById('liveContact'); lvContact.innerHTML = ""; var len = tempAr.length; for (var n=len-1; n>=0; n--) lvContact.innerHTML += tempAr[n]; } function updateFollowRevoc() { var tempAr = new Array(); for (var user in lstRevoc) { var timestamp = lstRevoc[user].ts; var utilde = user.replace(new RegExp(/\'/g), "\\'"); var udiscut = '<a href="'+wgServer+'/wiki/User talk:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">T</a>'; var ucontrib = '<a href="javascript:;" onClick="liveContrib(\''+utilde+'\');" style="color:#43CD80">C</a>'; var uadmin = ''; if (lrcAdmin == true) { uadmin = ' • <a href="'+wgServer+'/wiki/Special:Blockip/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>'; } var ueditor = '<a href="'+wgServer+'/wiki/User:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>'; var ligne = '<span id="revoc-' + timestamp + '"><small>' + tsToHhMm(timestamp) + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • </small>' + ueditor + ' (' + lstRevoc[user].nb + ' '+lang_menu[0].XTIMES+')</span><br />'; tempAr.push(ligne); } tempAr.sort(); var lvRevoc = document.getElementById('liveRevoc'); lvRevoc.innerHTML = ""; var len = tempAr.length; for (var n=len-1; n>=0; n--) lvRevoc.innerHTML += tempAr[n]; } //function getRevision(xmlreq, data) { function getRevision(rc) { if (document.getElementById('stopLive').checked) return; // var api = xmlreq.responseXML.getElementsByTagName('api')[0]; // // if (api.firstChild.nodeName == "error") return; var match, regex = new RegExp(); // var rc = data.rc var title = rc.title; var pageid = rc.pageid; var revid = rc.revid; var oldid = rc.old_revid; var user = rc.user; var comment = (rc.comment ? rc.comment : ""); var timestamp = rc.timestamp; var ns = rc.ns; var state = rc.state; regex.compile(/\'/g); var escTitle = title.replace(regex, "\\'"); var escUser = user.replace(regex, "\\'"); // var revisions = api.getElementsByTagName('query')[0].getElementsByTagName('pages')[0].getElementsByTagName('page')[0].getElementsByTagName('revisions')[0].getElementsByTagName('rev'); // // var oldsize = (state & NEW ? 0 : revisions[1].textContent.length); // var newsize = revisions[0].textContent.length var oldsize = rc.oldlen var newsize = rc.newlen var sizediff = newsize - oldsize; // INITIALISATION LIGNE RC // var tr1 = document.createElement('tr'); var th0 = document.createElement('th'); var th1 = document.createElement('th'); var td2 = document.createElement('td'); var td3 = document.createElement('td'); var td4 = document.createElement('td'); // SUPPR. LIGNE // th0.innerHTML = '<a href="javascript:;" onClick="supprLigne(\''+pageid+'_'+revid+'\');" style="color:red">X</a>'; // ARTICLE // var arti = "", artiStyle = ""; var preArti = "", postArti = ""; var diff = ""; var diffClose = ""; if (lrcAutoCloseDiff == 1) diffClose='supprLigne(\''+pageid+'_'+revid+'\');'; if (state & NEW) diff = '<a href="javascript:;" onClick="changeLigne(\''+pageid+'_'+revid+'\');liveArticle(\''+escTitle+'\',\''+user+'\');'+diffClose+'" style="color:green">New</a>'; else if (state & UPLOAD) diff = '<a href="javascript:;" onClick="changeLigne(\''+pageid+'_'+revid+'\');liveLog(\'upload\',\''+escTitle+'\');'+diffClose+'" style="color:darkslateblue">Log</a>'; else if (state & NEWUSER) diff = '<a href="javascript:;" onClick="changeLigne(\''+pageid+'_'+revid+'\');liveLog(\'newusers\',\''+escTitle+'\');'+diffClose+'" style="color:lime">Log</a>'; else if (state & BLOCK) diff = '<a href="javascript:;" onClick="changeLigne(\''+pageid+'_'+revid+'\');liveLog(\'block\',\''+escTitle+'\');'+diffClose+'" style="color:darkgoldenrod">Log</a>'; else if (state & DELETE) diff = '<a href="javascript:;" onClick="changeLigne(\''+pageid+'_'+revid+'\');liveLog(\'delete\',\''+escTitle+'\');'+diffClose+'" style="color: saddlebrown">Log</a>'; else if (state & MOVE) diff = '<a href="javascript:;" onClick="changeLigne(\''+pageid+'_'+revid+'\');liveLog(\'move\',\''+escTitle+'\');'+diffClose+'" style="color:black">Log</a>'; else if (state & PROTECT) diff = '<a href="javascript:;" onClick="changeLigne(\''+pageid+'_'+revid+'\');liveLog(\'protect\',\''+escTitle+'\');'+diffClose+'" style="color: darkslategray">Log</a>'; else // simple edit diff = '<a href="javascript:;" onClick="changeLigne(\''+pageid+'_'+revid+'\');liveDiff(\''+escTitle+'\','+revid+','+oldid+');'+diffClose+'" style="color:orange">Diff</a>'; var hist = ''; var edit = ''; var admin = ''; // Don't show link for log rows if (!(state & UPLOAD) && !(state & NEWUSER) && !(state & BLOCK) && !(state & DELETE) && !(state & PROTECT) && !(state & MOVE)) { hist = '<a href="javascript:;" onClick="liveHist(\''+escTitle+'\');" style="color:darkorange">C</a>'; edit = '<a href="' + wgServer + wgScriptPath + '/index.php?title='+encodeURI(escTitle)+'&action=edit" target="_new" style="color:tomato">M</a>'; if (lrcAdmin == true) { admin = ' • <a href="' + wgServer + wgScriptPath + '/index.php?title='+encodeURI(escTitle)+'&action=delete" target="_new" style="color:orangered">S</a>'; admin += ' • <a href="' + wgServer + wgScriptPath + '/index.php?title='+encodeURI(escTitle)+'&action=protect" target="_new" style="color: coral">P</a>'; } } // Disambig / Homonymie ? ; /////////////////////////// if (ns == 0 && state & HOMONYMIE) { artiStyle = 'color: darkorange; font-weight: bold; font-style: italic;'; preArti += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/7/72/Disambig.svg/16px-Disambig.svg.png" width="16px" alt="Homonymie" /> ' } // Page protégée ? ; //////////////////// if (state & FULLLOCK) preArti += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Padlock-red.svg/16px-Padlock-red.svg.png" width="16px" alt="Article protégé"/> '; if (state & LOCK) preArti += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Padlock-gold.svg/16px-Padlock-gold.svg.png" width="16px" alt="Article semi-protégé"/> '; // Copyright ? ; ////////// if (state & COPYRIGHT) preArti += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Copyright.svg/16px-Copyright.svg.png" width="16px" alt="Copyright" /> '; // PaS ? ; ////////////////// if (state & PAS) preArti += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Cestino_pieno_architetto_01.svg/11px-Cestino_pieno_architetto_01.svg.png" height="11px" alt="PaS" /> '; // Intervention wikipompiers ? ; //////////////////////////////// if (state & FIRE) preArti += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/99/FireIcon.svg/12px-FireIcon.svg.png" height="12px" alt="Intervention Wikipompiers" /> '; // Adq ? ; ////////// if (state & ADQ) postArti += '<sup><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/Fairytale_bookmark_gold.png/10px-Fairytale_bookmark_gold.png" width="10px" alt="Adq" /></sup>'; // Bon article ? ; ////////////////// if (state & BA) postArti += '<sup><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Fairytale_bookmark_silver_light.png/10px-Fairytale_bookmark_silver_light.png" width="10px" alt="Bon article" /></sup>'; // Article potentiellement de qualité ? ; ///////////////////////////////////////// if (state & APDQ) postArti += '<sup><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Fairytale_bookmark_light.png/10px-Fairytale_bookmark_light.png" width="10px" alt="Article potentiellement de qualité" /></sup>'; // Article catégorisé ? ; ///////////////////////// var isCategorized = ""; if (!(state & REDIRECT) && !(state & HOMONYMIE) && ns == 0 && !(state & CATEGORIZED)) postArti += '<sup style="color:crimson">(cat ?)</sup>'; // Redirect, Log, or simple edit ? ; ////////////////// if (state & MOVE) { // artiStyle = 'color: magenta; font-weight: bold; font-style: italic;'; postArti += ' <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Forward.png/16px-Forward.png" width="16px" alt="Renommage" />'; postArti += ' <a href="javascript:;" onClick="liveArticle(\''+rc.new_title+'\',\''+user+'\');">'+rc.new_title+'</a>'; arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+escTitle+'\',\''+user+'\');">'+title+'</a>'; } else if (state & REDIRECT) { artiStyle = 'color: green; font-weight: bold; font-style: italic;'; postArti += ' <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Redirectltr.png/20px-Redirectltr.png" width="20px" alt="Redirect" />'; postArti += ' <a href="javascript:;" onClick="liveArticle(\''+rc.redirect+'\',\''+user+'\');">'+rc.redirect+'</a>'; arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+escTitle+'\',\''+user+'\');">'+title+'</a>'; } else if (state & UPLOAD) { postArti += ' <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Gartoon-Gnome-dev-floppy.png/16px-Gartoon-Gnome-dev-floppy.png" width="16px" alt="Upload" />'; arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+escTitle+'\',\''+user+'\');" onDblClick="window.open(\''+wgServer+'/wiki/'+encodeURI(title)+'\');">'+title+'</a>'; } else if (state & NEWUSER) { postArti += ' <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Crystal_personal.png/16px-Crystal_personal.png" width="16px" alt="Nouvel utilisateur" />'; arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+escTitle+'\',\''+user+'\');" onDblClick="window.open(\''+wgServer+'/wiki/'+encodeURI(title)+'\');">'+title+'</a>'; } else if (state & BLOCK) { // artiStyle = 'color: magenta; font-weight: bold; font-style: italic;'; postArti += ' <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Crystal_Clear_action_lock3.png/16px-Crystal_Clear_action_lock3.png" width="16px" alt="Blocage" />'; postArti += ' <a href="javascript:;" onClick="liveLog("block",\''+rc.title+'\');">('+rc.duration+')</a>'; arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+escTitle+'\',\''+user+'\');">'+title+'</a>'; } else if (state & DELETE) { postArti += ' <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Editcut.png/16px-Editcut.png" width="16px" alt="Suppression" />'; arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+escTitle+'\',\''+user+'\');" onDblClick="window.open(\''+wgServer+'/wiki/'+encodeURI(title)+'\');">'+title+'</a>'; } else if (state & PROTECT) { postArti += ' <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/7/72/Crystal_Clear_app_agent.png/16px-Crystal_Clear_app_agent.png" width="16px" alt="Protection" />'; arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+escTitle+'\',\''+user+'\');" onDblClick="window.open(\''+wgServer+'/wiki/'+encodeURI(title)+'\');">'+title+'</a>'; } else { arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+escTitle+'\',\''+user+'\');" onDblClick="window.open(\''+wgServer+'/wiki/'+encodeURI(title)+'\');">'+title+'</a>'; } th1.innerHTML = '<small>' + tsToHhMm(timestamp) + ' • ' + diff + ' • ' + hist + ' • ' + edit + admin + ' • </small>' + preArti + arti + postArti; th1.className="creator-title"; th1.style.textAlign="left"; th1.style.border="1px"; th1.style.width="40%"; // EDITOR // //////////// var discut = '<a href="'+wgServer+'/wiki/User talk:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">T</a>'; var contrib = '<a href="javascript:;" onClick="liveContrib(\''+escUser+'\');" style="color:#43CD80">C</a>'; var editor = "", preEditor = ""; // Bot ? ; ////////// if (state & BOT) preEditor += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nuvola_apps_kservices.png/16px-Nuvola_apps_kservices.png" width="16px" /> '; // Sysop ? ; //////////// if (state & SYSOP) preEditor += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Broom_icon.svg/16px-Broom_icon.svg.png" width="16px" /> '; // Reverted ? ; ///////////////// if (state & REVERT) preEditor += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Nuvola_actions_undo.png/16px-Nuvola_actions_undo.png" width="16px" /> '; // TOR potentiel / AOL var isTOR = regex.compile(/172\.\d+\.\d+\.\d+/); if (isTOR.test(user)) preEditor += '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Dialog-warning.svg/16px-Dialog-warning.svg.png" width="16px" /> '; editor = '<a href="'+wgServer+'/wiki/User:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>'; var uadmin = ''; if (lrcAdmin == true) { uadmin = ' • <a href="'+wgServer+'/wiki/Special:Blockip/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>'; } var uhide = '<a href="javascript:;" onClick="supprLigne(\''+pageid+'_'+revid+'\'); hideUser(\''+ user +'\');" style="color:grey">H</a>' td2.innerHTML = '<small>' + discut + ' • ' + contrib + ' • ' + uhide + uadmin + ' • </small>' + preEditor + editor; td2.className="creator-name"; td2.style.border = "1px"; td2.style.width = "20%"; if (lstRevoc[user]) { td2.style.border = "2px solid red"; td2.innerHTML += '<sup style="color:red">(' + lstRevoc[user].nb + ' révoc)</sup>' } // COMMENT // // Remplace lien [[xxx]] par <a> ; var wcomment = comment.htmlize(); regex.compile(/\[\[(([^\]\|]*)(.*?))\]\]/g); wcomment = wcomment.replace(regex, "<a href='"+wgServer+wgScriptPath+"/index.php?title=$2&redirect=no' target='_new'>$1</a>"); regex.compile(/\>[^\]\|<]*\|([^\]\|<]*)</g); wcomment = wcomment.replace(regex, ">$1<"); td3.innerHTML = "<small>" + wcomment + "</small>"; td3.style.border = "1px"; td3.style.width = "40%"; if (state & UPLOAD) { th0.style.backgroundColor = "#D1CAFA"; th1.style.backgroundColor = "#D1CAFA"; td2.style.backgroundColor = "#D1CAFA"; td3.style.backgroundColor = "#D1CAFA"; td4.style.backgroundColor = "#D1CAFA"; tr1.style.border = "1px solid darkslateblue"; } if (state & NEWUSER) { th0.style.backgroundColor = "#C6FF6D"; th1.style.backgroundColor = "#C6FF6D"; td2.style.backgroundColor = "#C6FF6D"; td3.style.backgroundColor = "#C6FF6D"; td4.style.backgroundColor = "#C6FF6D"; tr1.style.border = "1px solid lime"; } if (state & BLOCK) { th0.style.backgroundColor = "#EECC84"; th1.style.backgroundColor = "#EECC84"; td2.style.backgroundColor = "#EECC84"; td3.style.backgroundColor = "#EECC84"; td4.style.backgroundColor = "#EECC84"; tr1.style.border = "1px solid darkgoldenrod"; } if (state & DELETE) { th0.style.backgroundColor = "#E7CAA7"; th1.style.backgroundColor = "#E7CAA7"; td2.style.backgroundColor = "#E7CAA7"; td3.style.backgroundColor = "#E7CAA7"; td4.style.backgroundColor = "#E7CAA7"; tr1.style.border = "1px solid saddlebrown"; } if (state & MOVE) { th0.style.backgroundColor = "#FDC5FF"; th1.style.backgroundColor = "#FDC5FF"; td2.style.backgroundColor = "#FDC5FF"; td3.style.backgroundColor = "#FDC5FF"; td4.style.backgroundColor = "#FDC5FF"; tr1.style.border = "1px solid magenta"; } if (state & PROTECT) { th0.style.backgroundColor = "#B2BCC6"; th1.style.backgroundColor = "#B2BCC6"; td2.style.backgroundColor = "#B2BCC6"; td3.style.backgroundColor = "#B2BCC6"; td4.style.backgroundColor = "#B2BCC6"; tr1.style.border = "1px solid darkslategray"; } if (state & REVERT) { th0.style.backgroundColor = "#FFE4E1"; th1.style.backgroundColor = "#FFE4E1"; td2.style.backgroundColor = "#FFE4E1"; td3.style.backgroundColor = "#FFE4E1"; td4.style.backgroundColor = "#FFE4E1"; tr1.style.border = "1px solid crimson"; } if (state & BLANKING || newsize == 0) { th0.style.backgroundColor = "white"; th1.style.backgroundColor = "white"; td2.style.backgroundColor = "white"; td3.style.backgroundColor = "white"; td4.style.backgroundColor = "white"; tr1.style.border = "2px double crimson"; } if (state & NEW) { th0.style.backgroundColor = "#e2f2d2"; th1.style.backgroundColor = "#e2f2d2"; td2.style.backgroundColor = "#e2f2d2"; td3.style.backgroundColor = "#e2f2d2"; td4.style.backgroundColor = "#e2f2d2"; tr1.style.border = "1px solid green"; } if (state & IP) { td2.style.backgroundColor = "white"; td3.style.backgroundColor = "white"; td4.style.backgroundColor = "white"; } if (isTOR.test(user)) td2.style.backgroundColor = "pink"; if (state & REPLACED) { th0.style.backgroundColor = "pink"; th1.style.backgroundColor = "pink"; td2.style.backgroundColor = "pink"; td3.style.backgroundColor = "pink"; td4.style.backgroundColor = "pink"; td4.innerHTML = '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Categorie_III.svg/10px-Categorie_III.svg.png" width="10px" alt="Warning"/>'; tr1.style.border = "2px solid crimson"; } // CONTACT LIST // ////////////////// if (lstContact[user]) { td2.style.border = "2px solid gold"; td2.style.backgroundColor = "yellow"; } if (user == wgUserName) { td2.style.border = "2px solid #A0B0E0"; td2.style.backgroundColor = "#F0F8FF"; } // DELTA SIZE // // delta de modif ; /////////////////// var txtdiff = ""; if (sizediff < 0) txtdiff = '<sub style="color:red">'+sizediff+'</sub>'; else if (sizediff == 0) txtdiff = '<small style="color:purple">='+sizediff+'</small>'; else txtdiff = '<sup style="color:blue">+'+sizediff+'</sup>'; td4.innerHTML += txtdiff; td4.style.border = "1px"; td4.style.textAlign = "right"; // ASSEMBLAGE LIGNE // tr1.appendChild(th0); tr1.appendChild(th1); tr1.appendChild(td2); tr1.appendChild(td3); tr1.appendChild(td4); tr1.id = pageid+"_"+revid; var tab = document.getElementById( 'tabRC' ); var elold = document.getElementById(pageid+"_"+oldid); if (tab.firstChild != null) tab.insertBefore(tr1, tab.firstChild); else tab.appendChild(tr1); if (elold == null) { if (tab.childNodes.length > lrcRCLimit) { var idt = tab.lastChild.id; supprLigne(idt); } } else { supprLigne(pageid+"_"+oldid); } // Don't show RC if checkbox is not checked if ((!document.getElementById('showRC').checked) && (!(state & UPLOAD) && !(state & NEWUSER) && !(state & BLOCK) && !(state & DELETE) && !(state & PROTECT) && !(state & MOVE))) supprLigne(pageid+"_"+revid); // Don't show Log if checkbox is not checked if ((!document.getElementById('showLog').checked) && ((state & UPLOAD) || (state & NEWUSER) || (state & BLOCK) || (state & DELETE) || (state & PROTECT) || (state & MOVE))) supprLigne(pageid+"_"+revid); // MISE A JOUR LISTES // var spos = lstSuivi.indexOf(title); if(spos != -1) { th0.style.border = "2px solid gold"; th0.style.backgroundColor = "yellow"; th1.style.border = "2px solid gold"; th1.style.backgroundColor = "yellow"; lstSuiviHH[spos] = tsToHhMm(timestamp); var tempsAr = new Array(); var len = lstSuivi.length; for (var n = 0; n < len; n++) { if(lstSuiviHH[n] == "--:--") continue; var cstilde = lstSuivi[n].replace(new RegExp(/\'/g), "\\'"); var sdiff = '<a href="javascript:;" onClick="liveDiff(\''+cstilde+'\','+revid+','+oldid+');" style="color:orange">Diff</a>'; var shist = '<a href="javascript:;" onClick="liveHist(\''+cstilde+'\');" style="color:darkorange">H</a>'; var sarti = '<a href="javascript:;" onClick="liveArticle(\''+cstilde+'\');">'+lstSuivi[n]+'</a>'; var ligne='<small>' + lstSuiviHH[n] + ' • ' + sdiff + ' • ' + shist + ' • </small>' + sarti +'<br />'; tempsAr.push(ligne); } tempsAr.sort(); len = tempsAr.length; var lvSuivi = document.getElementById( 'liveSuivi' ); lvSuivi.innerHTML = ""; for (var n=len-1; n >= 0; n--) lvSuivi.innerHTML = lvSuivi.innerHTML + tempsAr[n]; } if (lstContact[user]) { lstContact[user].ts = timestamp; updateFollowContact(); } if (state & REVERT) { regex.compile(/\[\[Special:Contributions\/([^\]\|]+)/); match = regex.exec(comment); if (!match) { regex.compile(/\[\[Specjalna:Wkład\/([^\]\|]+)/); match = regex.exec(comment); } if (match) { var userR = match[1]; if (userR != user && userR != wgUserName) { if (!lstRevoc[userR]) lstRevoc[userR] = { ts: 0, nb: 0 }; lstRevoc[userR].ts = timestamp; lstRevoc[userR].nb += 1; updateFollowRevoc(); } } } } function getRedirCat(xmlreq, data) { if (document.getElementById('stopLive').checked) return; var yurik = xmlreq.responseXML.getElementsByTagName('yurik')[0]; if (yurik.firstChild.nodeName == "error") return; var rc = data.rc; var pageid = rc.pageid; var revid = rc.revid; var state = rc.state; var page = yurik.getElementsByTagName('pages')[0].getElementsByTagName('page')[0]; if (page.getElementsByTagName('redirect').length) { state += REDIRECT; if (page.getElementsByTagName('redirect')[0].getElementsByTagName('to').length) rc.redirect = page.getElementsByTagName('redirect')[0].getElementsByTagName('to')[0].textContent; } if (page.getElementsByTagName('categories').length) { state += CATEGORIZED; var categories = page.getElementsByTagName('categories')[0].getElementsByTagName('cl'); var i,j; var leni = categories.length; var lenj = categoriestests.length; for (i=0; i<leni; i++) for (j=0; j<lenj; j++) if (new RegExp(lang_category+categoriestests[j].regex, "i").test(categories[i].textContent)) state += categoriestests[j].state; } rc.state = state; getRevision(rc); // wpajax.http({ url: wgServer + wgScriptPath + '/api.php?action=query&prop=revisions&pageids=' + pageid + '&rvstartid=' + revid + '&rvlimit=1&rvprop=content&format=xml', // onSuccess: getRevision, rc: rc }); } function getRedirCat2(xmlreq, data) { if (document.getElementById('stopLive').checked) return; var yurik = xmlreq.responseXML.getElementsByTagName('yurik')[0]; if (yurik.firstChild.nodeName == "error") return; var log = data.log; var pageid = log.pageid; var revid = log.revid; var state = log.state; var page = yurik.getElementsByTagName('pages')[0].getElementsByTagName('page')[0]; if (page.getElementsByTagName('redirect').length) { state += REDIRECT; if (page.getElementsByTagName('redirect')[0].getElementsByTagName('to').length) log.redirect = page.getElementsByTagName('redirect')[0].getElementsByTagName('to')[0].textContent; } if (page.getElementsByTagName('categories').length) { state += CATEGORIZED; var categories = page.getElementsByTagName('categories')[0].getElementsByTagName('cl'); var i,j; var leni = categories.length; var lenj = categoriestests.length; for (i=0; i<leni; i++) for (j=0; j<lenj; j++) if (new RegExp(lang_category+categoriestests[j].regex, "i").test(categories[i].textContent)) state += categoriestests[j].state; } log.state = state; getRevision(log); // wpajax.http({ url: wgServer + wgScriptPath + '/api.php?action=query&prop=revisions&pageids=' + pageid + '&rvstartid=' + revid + '&rvlimit=1&rvprop=content&format=xml', // onSuccess: getRevision, rc: rc }); } // Get RC and Log function getRC(xmlreq, data) { if (document.getElementById('stopLive').checked) return; var api = xmlreq.responseXML.getElementsByTagName('api')[0]; if (api.firstChild.nodeName == "error") return; var rcs = api.getElementsByTagName('query')[0].getElementsByTagName('recentchanges')[0].getElementsByTagName('rc'); var i,j,leni,lenj,rc; leni=rcs.length; for (i=leni-1; i>=0; i--) { if (rcs[i].getAttribute('revid') <= lastrevid) continue; rc = new Object(); rc.state = 0; lenj = rcs[i].attributes.length; for (j=0; j<lenj; j++) { switch(rcs[i].attributes[j].name) { case 'anon': rc.state += IP; break; case 'bot': rc.state += BOT; break; case 'new': rc.state += NEW; break; case 'minor': rc.state += MINOR; break; case 'new_ns': rc.state += NEWNS; break; case 'new_title': rc.state += RENAMED; break; case 'patrolled': rc.state += PATROLLED; break; case 'type': break; default: rc[rcs[i].attributes[j].name] = rcs[i].attributes[j].value; break; } } if (typeof(rc.comment) != "undefined") { lenj = commenttests.length; for (j=0; j<lenj; j++) if (new RegExp(commenttests[j].regex).test(rc.comment)) rc.state += commenttests[j].state; } if (lstSysop.indexOf(rc.user) != -1) rc.state += SYSOP; var mitigating = (rc.state & REVERT) || (rc.state & BLANKING) || (rc.state & REPLACED) || (lstContact[rc.user]) || (lstRevoc[rc.user]) || (rc.user == wgUserName); if (document.getElementById('showIP').checked && !(rc.state & IP) && !mitigating ) continue; if (lstHidden[rc.user] && !mitigating) continue; wpajax.http({url: wgServer + wgScriptPath + '/query.php?titles=' + encodeURIComponent(rc.title) + '&what=redirects|categories&format=xml', onSuccess: getRedirCat, rc: rc }); } // Log var logs = api.getElementsByTagName('query')[0].getElementsByTagName('logevents')[0].getElementsByTagName('item'); var i,j,leni,lenj,log; leni=logs.length; for (i=leni-1; i>=0; i--) { if (logs[i].getAttribute('timestamp').replace(new RegExp(/\D/g), "") <= lasttimestamp) continue; log = new Object(); log.state = 0; lenj = logs[i].attributes.length; for (j=0; j<lenj; j++) { if (logs[i].attributes[j].name == 'type') { switch(logs[i].attributes[j].value) { case 'patrol': // I "Segna come verificata" non li cago // rc.state += PATROL; break; case 'newusers': log.state += NEWUSER; break; case 'upload': log.state += UPLOAD; break; case 'block': log.state += BLOCK; if (logs[i].firstChild) log.duration = logs[i].firstChild.attributes[1].value; break; case 'delete': log.state += DELETE; break; case 'move': log.state += MOVE; if (logs[i].firstChild) log.new_title = logs[i].firstChild.attributes[1].value; case 'protect': log.state += PROTECT; break; default: break; } } else log[logs[i].attributes[j].name] = logs[i].attributes[j].value; } if (typeof(log.comment) != "undefined") { lenj = commenttests.length; for (j=0; j<lenj; j++) if (new RegExp(commenttests[j].regex).test(log.comment)) log.state += commenttests[j].state; } if (lstSysop.indexOf(log.user) != -1) log.state += SYSOP; wpajax.http({url: wgServer + wgScriptPath + '/query.php?titles=' + encodeURIComponent(log.title) + '&what=redirects|categories&format=xml', onSuccess: getRedirCat2, log: log }); } lastrevid = rcs[0].getAttribute('revid'); lasttimestamp = rcs[0].getAttribute('timestamp').replace(new RegExp(/\D/g), ""); document.getElementById('tsInit').innerHTML = "Last situation : " + lasttimestamp; } function liveRC() { var refresh = 10; timer= setTimeout("liveRC()",refresh*1000); if (document.getElementById('stopLive').checked) return; var rcns = document.getElementById('showNS0').value; if (rcns == null) return; var rcshow = ""; if (document.getElementById('showBot').checked) rcshow = '&rcshow=!bot'; wpajax.http({url:wgServer + wgScriptPath + '/api.php?action=query&list=recentchanges|logevents&rcnamespace=' + rcns + '&rcprop=user|comment|flags|timestamp|title|ids|sizes' + rcshow + '&rcend=' + lasttimestamp + '&rclimit=' + lrcRCLimit + '&leend=' + lasttimestamp + '&lelimit=' + lrcRCLimit + '&format=xml', onSuccess: getRC, message: "Traitement en cours...\n\n" }); } function hideUser(name) { lstHidden[name] = true; updateHidden(); } function unhideUser(name) { delete lstHidden[name]; updateHidden(); } function showHideObj(parent, fils) { var ofils = document.getElementById( fils ); if (parent.checked) ofils.style.display="inline"; else ofils.style.display="none"; } addOnloadHook(function () { if (wgTitle == "EDUCA33E/LiveRC") { var top = document.getElementById( 'top' ); if (top != null) { top.innerHTML = ""; top.style.display = "none"; } var siteSub = document.getElementById( 'siteSub' ); var contentSub = document.getElementById( 'contentSub' ); var rtb = document.getElementById( 'RealTitleBanner' ); var rt = document.getElementById( 'RealTitle' ); var pca = document.getElementById( 'p-cactions' ); if (siteSub != null) siteSub.style.display = "none"; if (contentSub != null) contentSub.style.display = "none"; if (rtb != null) rtb.style.display = "none"; if (rt != null) rt.style.display = "none"; if (pca != null) pca.style.display = "none"; var lvPreviewFoot = document.getElementById( 'livePreviewFoot' ); lvPreviewFoot.innerHTML = '<a href="javascript:;" onClick="supprLigne(\'*\');" style="color: red; font-weight: bold;">X</a>' + '<a href="javascript:;" onClick="supprLigne(\'d\');" style="color: rgb(255, 235, 71); font-weight: bold;">X</a>' + '<a href="javascript:;" onClick="supprLigne(\'r\');" style="color: rgb(255, 99, 83); font-weight: bold;">X</a>' + '<a href="javascript:;" onClick="supprLigne(\'n\');" style="color: rgb(178, 243, 113); font-weight: bold;">X</a>' + '<input id="stopLive" type="checkbox" value="true" />' + '<label for="stopLive">' + lang_menu[0].PAUSE + '</label>' + '<input id="shidPrev" type="checkbox" onclick="showHideObj(this, \'divLivePreview\');" />' + '<label for="shidPrev">' + lang_menu[0].PREVIEW + '</label>' + '<input id="shidList" type="checkbox" onclick="showHideObj(this, \'liveFollow\');" />' + '<label for="shidList">' + lang_menu[0].LISTS + '</label>' + '<input id="showDiffR" type="checkbox" />' + '<label for="showDiffR">'+ lang_menu[0].LOWDIFF + '</label>' + '<input id="showBot" type="checkbox" checked />' + '<label for="showBot">' + lang_menu[0].NOBOTS + '</label>' + '<input id="showIP" type="checkbox" />' + '<label for="showIP">' + lang_menu[0].IPONLY + ' • </label>' + '<input id="showRC" type="checkbox" checked />' + '<label for="showRC">' + lang_menu[0].RCLABEL + ' • </label>' + '<input id="showLog" type="checkbox" />' + '<label for="showLog">' + lang_menu[0].LOGSHOW + ' • </label>' + '<span id="selectNS" />'; // '<input id="shidRC" type="checkbox" checked onclick="showHideObj(this, \'divTabRC\');" />' + // '<label for="shidRC">' + lang_menu[0].RCLABEL + '</label>' + if (lrcPreviewHeight) document.getElementById('livePreview').style.height = lrcPreviewHeight; var _lstContact = lstContact; var _len = lstContact.length; lstContact = new Array(); for (var _i=0; _i<_len; _i++) lstContact[_lstContact[_i]] = { ts: 0 }; // Main liveSysop(); } }); /* </source> */