/* ==LiveWP== *Documentation : [[:fr:User:EDUCA33E/LiveRC/Documentation]] *Authors : [[:fr:User:EDUCA33E]], [[:fr:User:TiChou]] & [[:pl:User:Leafnode]] *Version: 0.3.5a (beta) Version modifiée basée sur la version du 1er avril 2007 à 00:49 : http://fr.wikipedia.org/w/index.php?title=User:EDUCA33E/LiveRC.js&oldid=15525649 ===Utilities=== */ // indexOf if (!Array.indexOf) { Array.prototype.indexOf = function(obj,idx) { var len = this.length; if (len == 0) return -1; if (!idx) idx = 0; while (idx < 0) idx = len + idx; for (var i = 0; i < len; i++) if (this[i] == obj) return i; return -1; } } // getElementsByClassName if (!document.getElementsByClassName) { document.getElementsByClassName = function() { var nodes; var elements = new Array(); elements.item = function(index) { return elements[index]; } if (this.getElementsByTagNameNS) nodes = this.getElementsByTagNameNS("*", "*"); else if (this.getElementsByTagName) nodes = this.getElementsByTagName("*"); else return null; var element; var match, regex = new RegExp(); var i,j; var leni = nodes.length; var lenj = arguments.length; for (i = 0; i < leni; i++) { element = nodes[i]; match = true; for (j = 0; j < lenj && match; j++) { regex.compile("(^|\\s)" + arguments[j] + "(\\s|$)"); if (!regex.test(element.className)) match = false; } if (match) elements.push(element); } return elements; } } if (typeof(HTMLElement) != 'undefined') { HTMLElement.prototype.getElementsByClassName = document.getElementsByClassName; } var lrc = new Object(); lrc.getElementById = function(id) { var element = null; if (this.id == id) { element = this; element.getElementsByClassName = document.getElementsByClassName; } for (var child = this.firstChild; !element && child; child = child.nextSibling) if (child.nodeType == 1) { child.getElementById = lrc.getElementById; element = child.getElementById(id); } return element; } if (window.ActiveXObject) lrc.browser = "Internet Explorer"; else lrc.browser = "Other"; lrc.http = { request: function(bundle) { // mandatory: bundle.url // optional: bundle.async // optional: bundle.method // optional: bundle.headers // optional: bundle.content // optional: bundle.onSuccess (request, bundle) // optional: bundle.onFailure (request, bundle) // optional: bundle.data var request; try { request = new XMLHttpRequest(); } catch(e) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { request = false; } } } if (request) { request.onreadystatechange = function() { if (request.readyState == 4) lrc.http.complete(request, bundle); }; request.open(bundle.method ? bundle.method : "GET", bundle.url, bundle.async == false ? false : true); if (bundle.headers) { for (var field in bundle.headers) request.setRequestHeader(field, bundle.headers[field]); } request.send(bundle.content ? bundle.content : null); } return request; }, complete: function(request, bundle) { if (request.status >= 200 && request.status < 300) { if (bundle.onSuccess) { var contentType = request.getResponseHeader("Content-Type"); var regex = new RegExp(); regex.compile(/^([^\/]+\/[^;]+).*/); contentType = contentType.replace(regex, "$1"); if (contentType == "text/html") { if (lrc.browser == "Internet Explorer") { var doc = document.createElement("div"); doc.innerHTML = request.responseText; doc.getElementsByClassName = document.getElementsByClassName; doc.getElementById = lrc.getElementById; bundle.onSuccess(doc, bundle.data); } else { var doc = (new DOMParser()).parseFromString(request.responseText, 'application/xhtml+xml'); bundle.onSuccess(doc, bundle.data); } } else if (contentType == "text/xml") { var xml = null; if (lrc.browser == "Internet Explorer") { xml = new ActiveXObject("Microsoft.XMLDOM"); xml.async = false; xml.loadXML(request.responseText); } else if (window.DOMParser) { xml = new DOMParser(); xml = xml.parseFromString(request.responseText, 'text/xml'); } bundle.onSuccess(xml, bundle.data); } else { bundle.onSuccess(request, bundle.data); } } } else if (bundle.onFailure) { bundle.onFailure(request, bundle.data); } else { // alert(request.statusText); } } } // URL encode lrc.URLEncode = function(string) { if (!string) return ""; return string.replace(/ /g, "_").replace(/[\x00-\x2C\x3B-\x40\x5B-\x5E\x60\x7B-\uFFFF]/g, function (match) { var c = match.charCodeAt(0); var s = new Array(); if (c < 0x80) s.push(c); else if (c < 0x0800) s.push(c >> 6 | 0xC0, c & 0x3F | 0x80); else if (c < 0x010000) s.push(c >> 12 | 0xE0, c >> 6 & 0x3F | 0x80, c & 0x3F | 0x80); else if (c < 0x110000) s.push(c >> 18 | 0xF0, c >> 12 & 0x3F | 0x80, c >> 6 & 0x3F | 0x80, c & 0x3F | 0x80); for (var i = 0, len = s.length; i < len; i++) s[i] = (s[i] < 16 ? "%0" : "%") + s[i].toString(16).toUpperCase(); return s.join(""); }); } // HTMLize lrc.encodeEntities = function(string) { var chars = new Array('&', '<', '>', '"', "'"); var entities = new Array('amp', 'lt', 'gt', 'quot', 'apos'); var regex = new RegExp(); for (var i = 0, len = chars.length; i < len; i++) { regex.compile(chars[i], "g"); string = string.replace(regex, '&' + entities[i] + ';'); } return string; } lrc.decodeEntities = function(string) { var chars = new Array('&', '<', '>', '"', "'"); var entities = new Array('amp', 'lt', 'gt', 'quot', 'apos'); var regex = new RegExp(); for (var i = 0, len = entities.length; i < len; i++) { regex.compile('&' + entities[i] + ';', "g"); string = string.replace(regex, chars[i]); } return string; } /* === Variables globales === */ if (wgTitle == "EDUCA33E/LiveRC") { // Appel des paramètres par défaut de LiveRC ; // /////////////////////////////////////////// document.write(''); // Appel des paramètres utilisateur ; // /////////////////////////////////////////// document.write(''); 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(); } /* === LiveDiff === */ function liveDiff(page, id, oldid) { var element = document.getElementById('livePreviewTitle'); element.innerHTML = "Diff : " + page + "..."; lrc.http.request({ url: wgServer + wgScriptPath + '/index.php?title=' + lrc.URLEncode(page) + '&diffonly=1&diff=' + id + '&oldid=' + oldid, onSuccess: getDiff, data: { page: page, id: id, oldid: oldid } }); } function getDiff(doc, data) { var page = data.page; var oldid = data.oldid; var bC = doc.getElementById('bodyContent'); var LP = document.getElementById('livePreview'); var dLP = document.getElementById('divLivePreview'); var lD = bC.getElementsByClassName('diff'); var regex = new RegExp(); var i,len; if (lD[0] == null) LP.innerHTML = bC.innerHTML; else { if (document.getElementById('showDiffR').checked) { var avantEl = bC.getElementsByClassName('diff-deletedline'); var apresEl = bC.getElementsByClassName('diff-addedline'); var avant = ""; var apres = ""; len = avantEl.length; for(i = 0; n < len; n++) avant = avant + avantEl[i].innerHTML + "
"; len = apresEl.length; for(i = 0; n < len; n++) apres = apres + apresEl[i].innerHTML + "
"; LP.innerHTML = '
' + avant + '' + apres + '
'; } else { LP.innerHTML = '' + lD[0].innerHTML + '
'; } } if (dLP.style.display == "none") { var elcb = document.getElementById('shidPrev'); elcb.checked = "true"; dLP.style.display = "inline"; } var entete = document.getElementById('livePreviewTitle'); entete.innerHTML = '' + page + ' • ' + '(Hist)'; var asNextDiff = doc.getElementById('differences-nextlink'); if (asNextDiff == null) { var optAvert = ""; len = lstAvert.length; for (i = 0; i < len; i++) { optAvert += ''; } // Get username of submitter var user1 = bC.getElementsByClassName('diff-otitle')[0].getElementsByTagName('br')[0].nextSibling.text; var user2 = bC.getElementsByClassName('diff-ntitle')[0].getElementsByTagName('br')[0].nextSibling.text; user1 = lrc.decodeEntities(user1); user2 = lrc.decodeEntities(user2); regex.compile(/'/g); user1 = user1.replace(regex, '\\\''); user2 = user2.replace(regex, '\\\''); // TODO Verifier avant si le patrouilleur peut modifier cette page (query.php?what=permissions&titles=page) entete.innerHTML = '' + '
' + entete.innerHTML + '[' + lang_menu[0].UNDORC + '] • ' + lang_menu[0].REASON + ' : ••• ' + '[' + lang_menu[0].AVERTS + '] : ' + '' + '
'; 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; lrc.http.request({ url: wgServer + wgScriptPath + '/index.php?title=User_Talk:' + lrc.URLEncode(user) + '&action=edit', onSuccess: postLiveAverto, data: { user: user, message: message } }); } function postLiveAverto(doc, data) { 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 (var i = 0, len = inputs.length; i < len; 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'; lrc.http.request({ url: wgServer + wgScriptPath + '/index.php?title=User_Talk:' + lrc.URLEncode(user) + '&action=submit', method: "POST", headers: headers, content: 'wpSave=1&wpTextbox1=' + wpTextbox1 + '&wpStarttime=' + wpStarttime + '&wpEdittime=' + wpEdittime + '&wpEditToken=' + wpEditToken + '&wpSummary=' + wpSummary}); } function getLiveMessage(where, user1, user2, page, oldid) { var links = [ document.getElementById('LiveRevertLink') ]; for (var i = 0, len = links.length; 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; lrc.http.request({ url: wgServer + wgScriptPath + '/index.php?title=' + lrc.URLEncode(page) + '&action=edit&oldid=' + oldid, onSuccess: postLiveRevert, data: { where: where, page: page, user1: user1, user2: user2, message: message } }); } function postLiveRevert(doc, data) { 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 (var i = 0, len = inputs.length; i < len; i++) { editform[inputs[i].name] = inputs[i].value; } var wpStarttime = encodeURIComponent(editform['wpStarttime']); var wpEdittime = encodeURIComponent(editform['wpEdittime']); var wpEditToken = encodeURIComponent(editform['wpEditToken']); if (where == 'liverevert') var wpSummary = lang_menu[0].RVMES1 + ' [[Special:Contributions/' + user2 + '|' + user2 + ']]; '+lang_menu[0].RVMES2+' [[User:' + user1 + '|' + user1 + ']]'; if (message) wpSummary = wpSummary + ' ; ' + message; wpSummary = encodeURIComponent(wpSummary); var headers = new Array(); headers['Content-Type'] = 'application/x-www-form-urlencoded'; lrc.http.request({ url: wgServer + wgScriptPath + '/index.php?title=' + lrc.URLEncode(page) + '&action=submit', method: "POST", headers: headers, content: 'wpSave=1&wpTextbox1=' + wpTextbox1 + '&wpStarttime=' + wpStarttime + '&wpEdittime=' + wpEdittime + '&wpEditToken=' + wpEditToken + '&wpSummary=' + wpSummary}); } /* === LiveHist === */ function liveHist(page) { var element = document.getElementById('livePreviewTitle'); element.innerHTML = 'Hist : ' + page + '...'; lrc.http.request({ url: wgServer + wgScriptPath + '/index.php?title=' + lrc.URLEncode(page) + '&action=history', onSuccess: getHist, data: { page: page } }); } function getHist(doc, data) { var page = data.page; var bC = doc.getElementById('bodyContent'); 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 element = document.getElementById('livePreviewTitle'); element.innerHTML = '' + page + ''; } /* === LiveArticle === */ function liveArticle(page) { var element = document.getElementById('livePreviewTitle'); element.innerHTML = '' + page + '...'; lrc.http.request({ url: wgServer + wgScriptPath + '/index.php?title=' + lrc.URLEncode(page) + '&redirect=no', onSuccess: getArticle, data: { page: page } }); } function getArticle(doc, data) { var page = data.page; var bC = doc.getElementById('bodyContent'); 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 element = document.getElementById('livePreviewTitle'); element.innerHTML = '' + page + ''; } /* === LiveContrib === */ function liveContrib(user) { var elelement = document.getElementById( 'livePreviewTitle' ); element.innerHTML = '' + user + '...'; lrc.http.request({ url: wgServer + '/wiki/Special:Contributions/' + lrc.URLEncode(user), onSuccess: getContrib, data: { user: user } }); } function getContrib(doc, data) { var user = data.user; var bC = doc.getElementById('bodyContent'); 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 (var i = 0, len = lstAvert.length; i < len; i++) { if (lstAvert[i].hasPage) continue; optAvert += ''; } var entete = document.getElementById('livePreviewTitle'); entete.innerHTML = '' + user + ''; entete.innerHTML = '
' +entete.innerHTML + '' + '[' + lang_menu[0].AVERTS + '] : ' + '' + '
'; } /* === LiveSuivi === */ function liveSysop() { lrc.http.request({ url: wgServer + wgScriptPath + '/index.php?title=Special:Listusers&limit=500&group=sysop', onSuccess: getSysop, data: { message: "Récup sysoplist" } }); } function getSysop(doc, data) { var bC = doc.getElementById('bodyContent'); var lstSys = bC.getElementsByTagName('ul')[0].getElementsByTagName('li'); var info; for (var i = 0, len = lstSys.length; i < len; i++) { info = lstSys[i].getElementsByTagName('a')[0].innerHTML; lstSysop.push(info); } liveNS(); } function liveWatch() { lrc.http.request({ url: wgServer + '/wiki/Special:Watchlist/edit', onSuccess: getWatch, data: { message: "Récup watchlist" } }); } function getWatch(doc, data) { var bC = doc.getElementById('bodyContent'); var info; var lstUL = bC.getElementsByTagName('ul'); for(var i = 0, leni = lstUL.length; i < leni ; i++) { var lstLI = lstUL[i].getElementsByTagName('li'); for(var j = 0, lenj = lstLI.length; j < lenj ; j++) { info = lstLI[j].getElementsByTagName('input')[0].value; lstSuivi.push(info); lstSuiviHH.push("--:--"); } } liveRC(); } /* function liveWatch() { lrc.http.request({url:wgServer + wgScriptPath + '/api.php?action=query&list=watchlist&wllimit=500&format=xml', onSuccess: getWatch, message: "Récup watchlist" }); } function getWatch(request, data) { var a=request.responseText; var c=data.message; var i; // document.getElementById('debug').innerHTML = a+"
**************************"; if(a.indexOf("= 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() { lrc.http.request({ url: wgServer + wgScriptPath + '/api.php?action=query&meta=siteinfo&siprop=namespaces&format=xml', onSuccess: getNS, data: { message: "Récup NS" }}); } function getNS(xml, data) { var api = xml.getElementsByTagName('api')[0]; if (api.firstChild.nodeName == "error") return; var nss = api.getElementsByTagName('query')[0].getElementsByTagName('namespaces')[0].getElementsByTagName('ns'); var id,ns; var options = ""; var lstNs = new Array(); for (var i = 0, len = nss.length; i < len; i++) { id = nss[i].getAttribute('id'); if (lrc.browser == "Internet Explorer") { ns = nss[i].text; } else ns = nss[i].textContent; if (id < 0) continue; if (id == 0) ns = "Article"; options += ''; lstNs.push(id); } options = '' + options; document.getElementById('selectNS').innerHTML = ''; liveWatch(); } /* === LiveRC === */ 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 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 = 'T'; var ucontrib = 'C'; var uadmin = ''; if (lrcAdmin == true) { uadmin = ' • B'; } var ueditor = '' + user + ''; var ligne = '' + tsToHhMm(timestamp) + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • ' + ueditor + '
'; tempAr.push(ligne); } tempAr.sort(); var lvContact = document.getElementById('liveContact'); lvContact.innerHTML = ""; var len = tempAr.length; for (var i = len-1; i >= 0; i--) lvContact.innerHTML += tempAr[i]; } 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 = 'T'; var ucontrib = 'C'; var uadmin = ''; if (lrcAdmin == true) { uadmin = ' • B'; } var ueditor = ''+user+''; var ligne = '' + tsToHhMm(timestamp) + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • ' + ueditor + ' (' + lstRevoc[user].nb + ' '+lang_menu[0].XTIMES+')
'; 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 getRedirCat(xml, data) { if (document.getElementById('stopLive').checked) return; var yurik = xml.getElementsByTagName('yurik')[0]; if (yurik.firstChild.nodeName == "error") return; var rc = data.rc; var title = rc.title; var ns = rc.ns; 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 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) if (lrc.browser == "Internet Explorer") { rc.redirect = page.getElementsByTagName('redirect')[0].getElementsByTagName('to')[0].text; } else { 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 regex = new RegExp(); for (var i = 0, leni = categories.length; i < leni; i++) for (var j = 0, lenj = categoriestests.length; j < lenj; j++) { regex.compile(lang_category+categoriestests[j].regex, "i"); if (lrc.browser == "Internet Explorer") if (regex.test(categories[i].text)) state += categoriestests[j].state; else if (regex.test(categories[i].textContent)) state += categoriestests[j].state; } } var match, regex = new RegExp(); regex.compile(/\'/g); var escTitle = title.replace(regex, "\\'"); var escUser = user.replace(regex, "\\'"); var oldsize = rc.oldlen var newsize = rc.newlen var sizediff = newsize - oldsize; // INITIALISATION LIGNE RC // var tr = document.createElement('tr'); var td1 = document.createElement('th'); var td2 = document.createElement('th'); var td3 = document.createElement('td'); var td4 = document.createElement('td'); var td5 = document.createElement('td'); // SUPPR. LIGNE // td1.innerHTML = 'X'; // ARTICLE // var arti = "", artiStyle = ""; var preArti = "", postArti = ""; var diff = ""; var diffClose = ""; if (lrcAutoCloseDiff == 1) diffClose='supprLigne(\''+pageid+'_'+revid+'\');'; if (state & NEW) diff = 'New'; else diff = 'Diff'; var hist = 'H'; var edit = 'E'; var admin = ''; if (lrcAdmin == true) { admin = ' • S'; } // Disambig / Homonymie ? ; /////////////////////////// if (ns == 0 && state & HOMONYMIE) { artiStyle = 'color: darkorange; font-weight: bold; font-style: italic;'; preArti += 'Homonymie ' } // Page protégée ? ; //////////////////// if (state & FULLLOCK) preArti += 'Article protégé '; if (state & LOCK) preArti += 'Article semi-protégé '; // Copyright ? ; ////////// if (state & COPYRIGHT) preArti += 'Copyright '; // PàS ? ; ////////////////// if (state & PAS) preArti += 'PàS '; // Intervention wikipompiers ? ; //////////////////////////////// if (state & FIRE) preArti += 'Intervention Wikipompiers '; // Adq ? ; ////////// if (state & ADQ) postArti += 'Adq'; // Bon article ? ; ////////////////// if (state & BA) postArti += 'Bon article'; // Article potentiellement de qualité ? ; ///////////////////////////////////////// if (state & APDQ) postArti += 'Article potentiellement de qualité'; // Article catégorisé ? ; ///////////////////////// var isCategorized = ""; if (!(state & REDIRECT) && !(state & HOMONYMIE) && ns == 0 && !(state & CATEGORIZED)) postArti += '(cat ?)'; // Redirect ? ; ////////////////// if (state & REDIRECT) { artiStyle = 'color: green; font-weight: bold; font-style: italic;'; postArti += 'Redirection'; postArti += ''+rc.redirect+''; /* if (rc.redirect) { // postArti += ''+rc.redirect+''; postArti += ''+rc.redirect+''; } else { regex.compile(/^#REDIRECT\s*\[\[(.*)\]\]/i); match = regex.exec(revisions[0].textContent); if (match) { // postArti += ''+match[1]+''; postArti += ''+match[1]+''; } else { // postArti += '/!\\'; postArti += ''+title+''; } } */ // arti = ''+title+''; arti = ''+title+''; } else { // arti = ''+title+''; // arti = ''+title+''; arti = ''+title+''; } td2.innerHTML = '' + tsToHhMm(timestamp) + ' • ' + diff + ' • ' + hist + ' • ' + edit + admin + ' • ' + preArti + arti + postArti; td2.className="creator-title"; td2.style.border="1px"; td2.style.width="40%"; // EDITOR // //////////// var discut = 'T'; var contrib = 'C'; var editor = "", preEditor = ""; // Bot ? ; ////////// if (state & BOT) preEditor += ' '; // Sysop ? ; //////////// if (state & SYSOP) preEditor += ' '; // Reverted ? ; ///////////////// if (state & REVERT) preEditor += ' '; // TOR potentiel / AOL var isTOR = regex.compile(/172\.\d+\.\d+\.\d+/); if (isTOR.test(user)) preEditor += ' '; editor = ''+user+''; var uadmin = ''; if (lrcAdmin == true) { uadmin = ' • B'; } td3.innerHTML = '' + discut + ' • ' + contrib + uadmin + ' • ' + preEditor + editor; td3.className="creator-name"; td3.style.border = "1px"; td3.style.width = "20%"; if (lstRevoc[user]) { td3.style.border = "2px solid red"; td3.innerHTML += '(' + lstRevoc[user].nb + ' révoc)' } // COMMENT // // Remplace lien [[xxx]] par ; var wcomment = lrc.encodeEntities(comment); regex.compile(/\[\[(([^\]\|]*)(.*?))\]\]/g); wcomment = wcomment.replace(regex, "$1"); regex.compile(/\>[^\]\|<]*\|([^\]\|<]*)$1<"); td4.innerHTML = "" + wcomment + ""; td4.style.border = "1px"; td4.style.width = "40%"; if (state & REVERT) { td1.style.backgroundColor = "#FFE4E1"; td2.style.backgroundColor = "#FFE4E1"; td3.style.backgroundColor = "#FFE4E1"; td4.style.backgroundColor = "#FFE4E1"; td5.style.backgroundColor = "#FFE4E1"; tr.style.border = "1px solid crimson"; } if (state & BLANKING || newsize == 0) { td1.style.backgroundColor = "white"; td2.style.backgroundColor = "white"; td3.style.backgroundColor = "white"; td4.style.backgroundColor = "white"; td5.style.backgroundColor = "white"; tr.style.border = "2px double crimson"; } if (state & NEW) { td1.style.backgroundColor = "#e2f2d2"; td2.style.backgroundColor = "#e2f2d2"; td3.style.backgroundColor = "#e2f2d2"; td4.style.backgroundColor = "#e2f2d2"; td5.style.backgroundColor = "#e2f2d2"; tr.style.border = "1px solid green"; } if (state & IP) { td3.style.backgroundColor = "white"; td4.style.backgroundColor = "white"; td5.style.backgroundColor = "white"; } if (isTOR.test(user)) td3.style.backgroundColor = "pink"; if (state & REPLACED) { td1.style.backgroundColor = "pink"; td2.style.backgroundColor = "pink"; td3.style.backgroundColor = "pink"; td4.style.backgroundColor = "pink"; td5.style.backgroundColor = "pink"; td5.innerHTML = 'Warning'; tr.style.border = "2px solid crimson"; } // CONTACT LIST // ////////////////// if (lstContact[user]) { td3.style.border = "2px solid gold"; td3.style.backgroundColor = "yellow"; } if (user == wgUserName) { td3.style.border = "2px solid #A0B0E0"; td3.style.backgroundColor = "#F0F8FF"; } // DELTA SIZE // // delta de modif ; /////////////////// var txtdiff = ""; if (sizediff < 0) txtdiff = ''+sizediff+''; else if (sizediff == 0) txtdiff = '='+sizediff+''; else txtdiff = '+'+sizediff+''; td5.innerHTML += txtdiff; td5.style.border = "1px"; td5.style.textAlign = "right"; // ASSEMBLAGE LIGNE // tr.appendChild(td1); tr.appendChild(td2); tr.appendChild(td3); tr.appendChild(td4); tr.appendChild(td5); tr.id = pageid+"_"+revid; var tab = document.getElementById( 'tabRC' ); var elold = document.getElementById(pageid+"_"+oldid); if (tab.firstChild != null) tab.insertBefore(tr, tab.firstChild); else tab.appendChild(tr); 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) { td1.style.border = "2px solid gold"; td1.style.backgroundColor = "yellow"; td2.style.border = "2px solid gold"; td2.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 = 'Diff'; var shist = 'H'; var sarti = ''+lstSuivi[n]+''; var ligne='' + lstSuiviHH[n] + ' • ' + sdiff + ' • ' + shist + ' • ' + sarti +'
'; 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 getRC(xml, data) { if (document.getElementById('stopLive').checked) return; var api = xml.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; jX' + 'X' + 'X' + 'X' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + ''; 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(); } }); /* */