|
|
(15 versions intermédiaires par le même utilisateur non affichées) |
Ligne 1 : |
Ligne 1 : |
| /*
| |
| <pre>
| |
| <source lang="javascript"> */
| |
|
| |
|
| if (wgTitle == "LiveRC") {
| |
|
| |
| // Appel des paramètres 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 paramètres 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 lastrevid,lasttimestamp=1; // Timestamp d'initialisation;
| |
|
| |
| // Découpage de l'URL et de ses paramètres;
| |
|
| |
| 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 lstSysop = new Array(); // Sysop list;
| |
| var lstContact = new Array(); // Contact list;
| |
| var lstRevoc = new Array(); // Reverted 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');
| |
| 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 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 = "<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 = getElementsByClass('diff-otitle',doc,'td');
| |
| if (user1 != null && user1[0] != null) {
| |
| var usertmp=user1[0].innerHTML;
| |
| user1 = usertmp.replace(new RegExp(/(.*)<br (.*)>(.*)<\/a> \(<a(.*)/g), "$3");
| |
| }
| |
| var user2 = getElementsByClass('diff-ntitle',doc,'td');
| |
| if (user2 != null && user2[0] != null) {
| |
| var usertmp=user2[0].innerHTML;
| |
| user2 = usertmp.replace(new RegExp(/(.*)<br (.*)>(.*)<\/a> \(<a(.*)/g), "$3");
| |
| }
| |
| user1=user1.replace(new RegExp(/\'/g), "\\'");
| |
| user2=user2.replace(new RegExp(/\'/g), "\\'");
| |
|
| |
| entete.innerHTML = '<table width="100%" class="creator"><tr><td>' + entete.innerHTML +
| |
| '</td><td align="right"><small>' +
| |
| // 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 à 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')
| |
| 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')
| |
| 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')
| |
| 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>
| |
|
| |
| === LiveSuivi ===
| |
|
| |
| <source lang="javascript"> */
| |
|
| |
| function liveSysop() {
| |
| wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=Special:Listusers&limit=500&group=sysop',
| |
| onSuccess: getSysop, message: "Récup sysoplist" });
| |
| }
| |
|
| |
| function getSysop(xmlreq, data) {
| |
| var doc = gml_XMLParse(xmlreq.responseText);
| |
| var bC = doc.getElementById('bodyContent');
| |
| 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: "Récup watchlist" });
| |
| }
| |
|
| |
| function getWatch(xmlreq, data) {
| |
| var doc = gml_XMLParse(xmlreq.responseText);
| |
| var bC = doc.getElementById('bodyContent');
| |
| 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: "Récup watchlist" });
| |
| }
| |
|
| |
| 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: "Récup NS" });
| |
| }
| |
|
| |
| 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 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+'\');'+diffClose+'" style="color:green">New</a>';
| |
| else
| |
| diff = '<a href="javascript:;" onClick="changeLigne(\''+pageid+'_'+revid+'\');liveDiff(\''+escTitle+'\','+revid+','+oldid+');'+diffClose+'" style="color:orange">Diff</a>';
| |
| var hist = '<a href="javascript:;" onClick="liveHist(\''+escTitle+'\');" style="color:darkorange">H</a>';
| |
| var edit = '<a href="' + wgServer + wgScriptPath + '/index.php?title='+encodeURI(escTitle)+'&action=edit" target="_new" style="color:tomato">E</a>';
| |
| var admin = '';
| |
| if (lrcAdmin == true) {
| |
| admin = ' • <a href="' + wgServer + wgScriptPath + '/index.php?title='+encodeURI(escTitle)+'&action=delete" target="_new" style="color:orangered">S</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" /> ';
| |
|
| |
| // PàS ? ;
| |
| //////////////////
| |
| 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="PàS" /> ';
| |
|
| |
| // 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 ? ;
| |
| //////////////////
| |
| 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="Redirection" />';
| |
| postArti += '<a href="javascript:;" onClick="liveArticle(\''+rc.redirect+'\');">'+rc.redirect+'</a>';
| |
| /* if (rc.redirect) {
| |
| // postArti += '<a href="'+wgServer+'/wiki/'+encodeURIComponent(rc.redirect)+'" target="_new">'+rc.redirect+'</a>';
| |
| postArti += '<a href="javascript:;" onClick="liveArticle(\''+rc.redirect+'\');">'+rc.redirect+'</a>';
| |
| } else {
| |
| regex.compile(/^#REDIRECT\s*\[\[(.*)\]\]/i);
| |
| match = regex.exec(revisions[0].textContent);
| |
| if (match) {
| |
| // postArti += '<a style="color:red;" href="'+wgServer+'/wiki/'+encodeURIComponent(match[1])+'" target="_new">'+match[1]+'</a>';
| |
| postArti += '<a style="color:red" href="javascript:;" onClick="liveArticle(\''+match[1]+'\');">'+match[1]+'</a>';
| |
| } else {
| |
| // postArti += '<a style="color:red;" href="'+wgServer+wgScriptPath+'/index.php?title='+encodeURI(title)+'&redirect=no" target="_new">/!\\</a>';
| |
| postArti += '<a style="color:red" href="javascript:;" onClick="liveArticle(\''+title+'\');">'+title+'</a>';
| |
| }
| |
| } */
| |
| // arti = '<a style="'+artiStyle+'" href="'+wgServer+wgScriptPath+'/index.php?title='+encodeURI(title)+'&redirect=no" target="_new">'+title+'</a>';
| |
| arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+title+'\');">'+title+'</a>';
| |
| } else {
| |
| // arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+title+'\');">'+title+'</a>';
| |
| // arti = '<a href="#" mousebotton="right" onmousedown="window.open(\'http://fr.wikipedia.org/\')">'+title+'</a>';
| |
| arti = '<a style="'+artiStyle+'" href="javascript:;" onClick="liveArticle(\''+title+'\');" 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.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>';
| |
| }
| |
|
| |
| td2.innerHTML = '<small>' + discut + ' • ' + contrib + 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 & 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);
| |
| }
| |
|
| |
|
| |
| // 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) {
| |
| 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 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;
| |
|
| |
| if (document.getElementById('showIP').checked
| |
| && !(rc.state & IP)
| |
| && !(rc.state & REVERT)
| |
| && !(rc.state & BLANKING)
| |
| && !(rc.state & REPLACED)
| |
| && !(lstContact[rc.user])
| |
| && !(lstRevoc[rc.user])
| |
| && (rc.user != wgUserName)) continue;
| |
|
| |
| wpajax.http({url: wgServer + wgScriptPath + '/query.php?titles=' + encodeURIComponent(rc.title) + '&what=redirects|categories&format=xml',
| |
| onSuccess: getRedirCat, rc: rc });
| |
| }
| |
|
| |
| 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 showHideObj(parent, fils) {
| |
| var ofils = document.getElementById( fils );
| |
| if (parent.checked)
| |
| ofils.style.display="inline";
| |
| else
| |
| ofils.style.display="none";
| |
| }
| |
|
| |
| addOnloadHook(function () {
| |
| if (wgTitle == "LiveRC") {
| |
|
| |
| var top = document.getElementById( 'top' ); top.innerHTML = "";
| |
| 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' );
| |
|
| |
| top.style.display = "none";
| |
| siteSub.style.display = "none";
| |
| 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="shidRC" type="checkbox" checked onclick="showHideObj(this, \'divTabRC\');" />' +
| |
| '<label for="shidRC">' + lang_menu[0].RCLABEL + '</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>' +
| |
| '<span id="selectNS" />';
| |
| 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></pre> */
| |