User:EDUCA33E/LiveRC.js

/*

LiveWP

= Variables globales =

*/

if (mw.config.get('wgTitle') == "EDUCA33E/LiveRC") {

// 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 PATROL = 2 << 27;

var ABFILTER = 2 << 28;

var TAG = 2 << 29;

var REVIEW = 2 << 30;

/*

// ///////////////////////////////////// //

== Global variables / Variables globales ==

// ///////////////////////////////////// //

*/

var lrcRCLimit = 30; // LiveRC default RC list size;

var lrcPreviewHeight = '250px'; // LiveRC default preview window height;

var lrcAutoCloseDiff = 0; // LiveRC default Diff behaviour;

var lrcTZ = ''; // Default time zone (+02:00, 02:00, -0200, -05:45, ...)

/*

// //////////////////// //

== Internationalization ==

// //////////////////// //

*/

// Wiki specific translation;

// /////////////////////

var lang_category = 'Catégorie:';

var lang_category_short = '(cat ?)';

var lang_main_namespace = 'Articles';

// Menu translation;

// /////////////////

var lang_menu = [ {

PAUSE: "Pause",

PREVIEW: "Prévisualiser",

LISTS: "Listes",

LOWDIFF: "Diff réduit",

RCLABEL: "RC",

NOBOTS: "Sans Bots",

IPONLY: "IP seules",

IPNEW: "IP et débutant",

NAMESP: "Espace",

XTIMES: "fois",

UNDORC: "Défaire",

REVERT: "Révoquer",

REASON: "Motif",

AVERTS: "Avertir",

RVMES1: "LiveRC : Révocation des modifications de",

RVMES2: "retour à la version de",

EMPTY: "Blanchir",

LOGSHOW: "Journaux",

ABSHOW: "Filtres"

} ];

var lang_tooltips = {

// main menu

HIDE_ALL: "Supprimer toutes les lignes",

HIDE_REVIEWED: "Supprimer les lignes des modifications visualisées",

HIDE_REVERTS: "Supprimer les lignes d'annulation",

HIDE_NEW: "Supprimer les lignes de création de page",

HIDE_BLANKING: "Supprimer les lignes de blanchiment",

HIDE_THIS: "Supprimer cette ligne",

// links in rows

DIFF_TIP: "Différence (prévisualisation)",

DIFF_SHORT: "Diff",

HIST_TIP: "Historique (prévisualisation)",

HIST_SHORT: "C",

EDIT_TIP: "Modifier (nouvelle fenêtre)",

EDIT_SHORT: "M",

DEL_TIP: "Supprimer (nouvelle fenêtre)",

DEL_SHORT: "S",

PROTECT_TIP: "Protéger (nouvelle fenêtre)",

PROTECT_SHORT: "P",

TALK_TIP: "Page de discussion (nouvelle fenêtre)",

TALK_SHORT: "T",

CONTRIB_TIP: "Contributions (prévisualisation)",

CONTRIB_SHORT: "C",

BLOCK_TIP: "Bloquer (Nouvelle fenêtre)",

BLOCK_SHORT: "B",

USER_HIDE_TIP: "Ignorer l'utilisateur",

USER_HIDE_SHORT:"H"

}

var lang_log = {

UPLOAD: 'Journal d\'import de fichiers',

NEWUSER: 'Journal des création de comptes utilisateur',

BLOCK: 'Journal des blocages',

DELETE: 'Journal des suppressions de page',

MOVE: 'Journal des renommages et déplacements',

PROTECT: 'Journal des protections'

};

var lang_messages = {

SAME_EDITOR: 'éditeur précédent identique',

WARNING: 'Avertissement',

ON_ARTICLE: 'sur'

};

// Comments test table (regexp format);

// ////////////////////////////////////

var commenttests = [

{ state: BLANKING , regex: /^Résumé automatique : blanchiment|^[Bb]lanchi/ },

{ state: REPLACED , regex: /^Résumé automatique : contenu remplacé par/ },

{ state: REVERT , regex: /(LiveRC : )?Révocation |([Bb]ot : )?[Aa]nnulation des modifications|([Bb]ot : )?[Rr]évocation de |^(Undid|Revert to( the)?) revision|^(Undoing|Reverted( \d+)?) edit|^r(e)?v(ert(ing|ed)?)?\b/ }

];

// Categories test table (regexp format);

var categoriestests = [

{ state: LOCK , regex: 'Page (semi-protégée|en semi-protection longue)' },

{ state: FULLLOCK , regex: 'Page protégée' },

{ state: HOMONYMIE , regex: 'Homonymie' },

{ state: ADQ , regex: 'Article de qualité( contesté)?' },

{ state: BA , regex: 'Bon article' },

{ state: APDQ , regex: 'Article potentiellement (bon|de qualité)' },

{ state: COPYRIGHT , regex: 'Article soupçonné de travail sous copyright' },

{ state: PAS , regex: 'Page proposée à la suppression' },

{ state: FIRE , regex: 'Wikipompiers' }

];

// LiveRC default template use;

// ////////////////////////////

var lstAvert = [

{ template: "Test 0" , string: "Test 0" , hasPage: false },

{ template: "Test 1" , string: "Test 1" , hasPage: false },

{ template: "Test 2" , string: "Test 2" , hasPage: false },

{ template: "Test 3" , string: "Test 3" , hasPage: false },

{ template: "Vandalisme" , string: "Vandal" , hasPage: true },

{ template: "Spammeur" , string: "Spam" , hasPage: true },

{ template: "Motivation_modif" , string: "Résumé" , hasPage: true },

{ template: "Signature" , string: "Signature" , hasPage: false },

{ template: "Bienvenue_copyright" , string: "Copyright" , hasPage: false },

{ template: "Vandalisme_cracra" , string: "Cracra" , hasPage: false }

];

// LiveRC default values for checkboxes

var lrcShowBotChecked = 'checked'; // change to 'checked' to show only IPs by default

var lrcShowIPChecked = ''; // change to 'checked' to show only IPs by default

var lrcShowIPNEWChecked = ''; // change to 'checked' to show only IPs and non-patrolled by default (sysops only)

var lrcShowRCChecked = 'checked'; // change to 'checked' to hide recent changes by default

var lrcShowLogChecked = ''; // change to 'checked' to show logs by default

var lrcShowFilterChecked = ''; // change to 'checked' to show filters by default

// Getting user params

// FIXME: works fine in Mozilla and Opera, does not work in Chrome and Safari

importScript(mw.config.get('wgPageName')+'/LiveRCparam.js');

importScript('User:'+mw.config.get('wgUserName')+'/LiveRCparam.js');

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('');

var lastrcid=0,lastfilterid=0,lastlogid=0,lastrctimestamp=1,lastletimestamp=1,lastafltimestamp=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;

var lstSysop = new Array(); // Sysop list;

var lstContact = new Array(); // Contact list;

var lstContact2 = new Array(); // Contact list;

var lstRevoc = new Array(); // Reverted list;

var lstHidden = new Array(); // Hidden users list;

// Has user patrol rights?

var lrcPatrol = false;

var lrcAPIlimit = 500;

if(mw.config.get('wgUserGroups').indexOf("autopatrolled") != -1)

lrcPatrol = true;

// Is user Sysop;

var lrcAdmin = false; // default value;

if(mw.config.get('wgUserGroups').indexOf("sysop") != -1)

{

lrcAdmin = true;

lrcPatrol = true;

}

// Watchlist;

var lstSuivi = new Array();

var lstSuiviHH = new Array();

}

/*

=Utilities=

*/

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);

}

}

};

///////////////////////////////////////////////////////////////////////////////

// * Recherche d'un élement dont on connait l'Id mais non unique, donc sans utiliser document.getElementById()

// Thanks to Dr Brains

function getElementWithId( elementId , elementTagName , elementParentNode ){

if(!elementParentNode) elementParentNode = document;

if (elementParentNode.getElementById) return elementParentNode.getElementById(elementId);

var TheElement = false;

var Elements = elementParentNode.getElementsByTagName(elementTagName);

var elementcount = 0;

while(elementcount

var Id = Elements[elementcount].getAttribute('id');

if(Id){

if(Id==elementId){

TheElement = Elements[elementcount];

break;

}

}

elementcount++

}

if (! TheElement) return null;

return TheElement;

}

///////////////////////////////////////////////////////////////////////////////

function getRights(xmlreq, data) {

var api = xmlreq.responseXML;

if (api.firstChild.nodeName == "error") return;

var rights = api.getElementsByTagName('query')[0].getElementsByTagName('userinfo')[0].getElementsByTagName('rights')[0].getElementsByTagName('r');

var len = rights.length;

var i;

var id,right;

for (i=0; i

right = rights[i].textContent;

// Handle IE

if (!right)right = rights[i].text;

if (right == "apihighlimits") lrcAPIlimit=5000;

if (right == "autopatrol") lrcPatrol=true;

}

buildControlBar();

}

function buildControlBar()

{

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 showIPNEWbox = '';

if (lrcPatrol)

showIPNEWbox = '' +

'';

var lvPreviewFoot = document.getElementById( 'livePreviewFoot' );

lvPreviewFoot.innerHTML = 'X | ' +

'X ' +

'X ' +

'X ' +

'X' +

'' +

'' +

' • ' +

'' +

'' +

'' +

'' +

' • ' +

'' +

'' +

' • ' +

'' +

'' +

'' +

'' +

showIPNEWbox +

' • ' +

'' +

'' +

'' +

'' +

'' +

'' +

'';

if (lrcPreviewHeight) document.getElementById('livePreview').style.height = lrcPreviewHeight;

liveSysop();

}

// Parser

if (window.DOMParser) var gml_xmlparser = new DOMParser();

function gml_XMLParse(string) {

if (window.DOMParser) {

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 string = this;

for (var i=0; i

var regex = new RegExp(chars[i], "g");

string = string.replace(regex, '&' + entities[i] + ';');

}

return string;

}

/*

= LiveDiff =

*/

function liveDiff(page, id, oldid) {

var el = document.getElementById( 'livePreviewTitle' );

el.innerHTML="Diff : "+page+"...";

wpajax.http({ url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title='+encodeURIComponent(page)+'&diffonly=1&diff='+id+'&oldid='+oldid,

onSuccess: getDiff, mpage: page, mid: id, moldid:oldid});

}

function getDiff(xmlreq, data) {

// temporary fix for incorrect HTML code

var text = xmlreq.responseText;

var newtext = text.replace(/ 

var doc = gml_XMLParse(newtext);

var page=data.mpage;

var oldid=data.moldid;

var id=data.mid;

var bC = getElementWithId('bodyContent', 'div', doc);

if (bC == null) bC = getElementWithId('article', 'div', doc);

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;

if (LP.innerHTML == "undefined") LP.innerHTML = bC.xml;

}

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+"
";

var avant = "";

var apres = "";

var lav = avantEl.length;

var lap = apresEl.length;

for(var n=0; n < lav ; n++)

avant = avant + avantEl[n].innerHTML + "
";

for(var n=0; n < lap ; n++)

apres = apres + apresEl[n].innerHTML + "
";

LP.innerHTML = rl+"

"+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";

}

if (typeof (setupTooltips) != 'undefined') {

setupTooltips(dLP, false, true);

}

var entete = document.getElementById( 'livePreviewTitle' );

entete.innerHTML='' + page + ' • ' +

'(Hist)';

var asNextDiff = getElementWithId('differences-nextlink', 'a', doc);

if ((asNextDiff == null) && lrcPatrol) {

var optAvert = "";

var optl = lstAvert.length;

for (j=0; j

optAvert += '';

}

// Get username of submitter

var user1 = getElementWithId('mw-diff-otitle2', 'div', doc);

if (user1 != null) {

var usertmp=user1.innerHTML;

if (!usertmp) usertmp=user1.firstChild.xml;

// user1 = usertmp.replace(new RegExp(/(.*)<\/a> \(

user1 = usertmp.replace(new RegExp(/(.*)<\/a>(.*)\((.*)\)/g), "$2");

user1 = user1.replace(new RegExp(/(.*)<(.*)>/g), "$1");

}

var user2 = getElementWithId('mw-diff-ntitle2', 'div', doc);

if (user2 != null) {

var usertmp=user2.innerHTML;

if (!usertmp) usertmp=user2.firstChild.xml;

// user2 = usertmp.replace(new RegExp(/(.*)<\/a> \(

user2 = usertmp.replace(new RegExp(/(.*)<\/a>(.*)\(

}

user1=user1.replace(new RegExp(/\'/g), "\\'");

user2=user2.replace(new RegExp(/\'/g), "\\'");

var identique="";

if(user1 == user2) {

identique = "[" + lang_messages.SAME_EDITOR + "] ";

}

entete.innerHTML = '

' + entete.innerHTML +

'

' + identique +

// Verifier avant si le patrouilleur peut modifier cette page ? (query.php?what=permissions&titles=page)

'[' + 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;

wpajax.http({ url: mw.config.get('wgServer') + mw.config.get('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),"'");

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

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 : ' + lang_messages.WARNING + ' ' + message.replace(new RegExp(/\|(.*)/),

' ' + lang_messages.ON_ARTICLE + ' $1') + ' !');

var headers = new Array();

headers['Content-Type'] = 'application/x-www-form-urlencoded';

wpajax.http({ url: mw.config.get('wgServer') + mw.config.get('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

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: mw.config.get('wgServer') + mw.config.get('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

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+' ' + user1 + '';

break;

/* case 'livevandalism':

var wpSummary = 'LiveRC : Révocation de vandalisme par [[Special:Contributions/' + user2 + '|' + user2

+ ']]; retour a la version de ' + 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: mw.config.get('wgServer') + mw.config.get('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});

}

/*

= LiveHist =

*/

function liveHist(page) {

var el = document.getElementById( 'livePreviewTitle' );

el.innerHTML="Hist : "+page+"...";

wpajax.http({url:wgServer + mw.config.get('wgScriptPath') + '/index.php?title=' + encodeURIComponent(page) + '&action=history', onSuccess: getHist, message: page });

}

function getHist(xmlreq, data) {

doc = gml_XMLParse(xmlreq.responseText);

bC = getElementWithId('bodyContent', 'div', doc);

if (bC == null) bC = getElementWithId('article', 'div', doc);;

var c=data.message;

var LP = document.getElementById( 'livePreview' );

var dLP = document.getElementById( 'divLivePreview' );

LP.innerHTML = bC.innerHTML;

if (LP.innerHTML == "undefined") LP.innerHTML = bC.xml;

if (dLP.style.display == "none") {

var elcb = document.getElementById( 'shidPrev' );

elcb.checked="true";

dLP.style.display = "inline";

}

var elt = document.getElementById( 'livePreviewTitle' );

elt.innerHTML=''+c+'';

}

/*

= LiveArticle =

*/

function liveArticle(page) {

var el = document.getElementById( 'livePreviewTitle' );

el.innerHTML=""+page+"...";

wpajax.http({url:wgServer + mw.config.get('wgScriptPath') + '/index.php?title=' + encodeURIComponent(page) + '&redirect=no', onSuccess: getArticle, message: page });

}

function getArticle(xmlreq, data) {

doc = gml_XMLParse(xmlreq.responseText);

bC = getElementWithId('bodyContent', 'div', doc);

if (bC == null) bC = getElementWithId('article', 'div', doc);

var c=data.message;

var LP = document.getElementById( 'livePreview' );

var dLP = document.getElementById( 'divLivePreview' );

LP.innerHTML = bC.innerHTML;

if (LP.innerHTML == "undefined") LP.innerHTML = bC.xml;

if (dLP.style.display == "none") {

var elcb = document.getElementById( 'shidPrev' );

elcb.checked="true";

dLP.style.display = "inline";

}

var elt = document.getElementById( 'livePreviewTitle' );

elt.innerHTML=''+c+'';

}

/*

= LiveContrib =

*/

function liveContrib(user) {

var el = document.getElementById( 'livePreviewTitle' );

el.innerHTML=""+user+"...";

wpajax.http({url:wgServer + '/wiki/Special:Contributions/'+encodeURIComponent(user),

onSuccess: getContrib, message: user });

}

function getContrib(xmlreq, data) {

doc = gml_XMLParse(xmlreq.responseText);

bC = getElementWithId('bodyContent', 'div', doc);

if (bC == null) bC = getElementWithId('article', 'div', doc);

var user=data.message;

var LP = document.getElementById( 'livePreview' );

var dLP = document.getElementById( 'divLivePreview' );

LP.innerHTML = bC.innerHTML;

if (LP.innerHTML == "undefined") LP.innerHTML = bC.xml;

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

if(lstAvert[j].hasPage) continue;

optAvert += '';

}

var entete = document.getElementById( 'livePreviewTitle' );

entete.innerHTML=''+user+'';

entete.innerHTML = '

'+entete.innerHTML +

'

' +

'['+lang_menu[0].AVERTS+'] : ' +

'' + '

';

}

/*

= LiveLog (:it:User:Jalo) =

*/

function liveLog(action,page) {

var titolo = '';

switch(action) {

case 'upload':

titolo = lang_log.UPLOAD;

break;

case 'newusers':

titolo = lang_log.NEWUSER;

break;

case 'block':

titolo = lang_log.BLOCK;

break;

case 'delete':

titolo = lang_log.DELETE;

break;

case 'move':

titolo = lang_log.MOVE;

break;

case 'protect':

titolo = lang_log.PROTECT;

break;

default:

break;

}

var el = document.getElementById( 'livePreviewTitle' );

el.innerHTML=""+titolo+"...";

wpajax.http({url:wgServer + mw.config.get('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 = getElementWithId('bodyContent', 'div', doc);

if (bC == null) bC = getElementWithId('article', 'div', doc);

var c=data.message;

var LP = document.getElementById( 'livePreview' );

var dLP = document.getElementById( 'divLivePreview' );

LP.innerHTML = bC.innerHTML;

if (LP.innerHTML == "undefined") LP.innerHTML = bC.xml;

if (dLP.style.display == "none") {

var elcb = document.getElementById( 'shidPrev' );

elcb.checked="true";

dLP.style.display = "inline";

}

var elt = document.getElementById( 'livePreviewTitle' );

elt.innerHTML=''+c+'';

}

/*

= LiveFilter =

  • /

function liveFilter(id) {

var el = document.getElementById( 'livePreviewTitle' );

el.innerHTML="Filter: ...";

wpajax.http({ url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=Special:AbuseLog&details='+id,

onSuccess: getFilter, mid: id});

}

function getFilter(xmlreq, data) {

doc = gml_XMLParse(xmlreq.responseText);

bC = getElementWithId('bodyContent', 'div', doc);

if (bC == null) bC = getElementWithId('article', 'div', doc);

var LP = document.getElementById( 'livePreview' );

var dLP = document.getElementById( 'divLivePreview' );

LP.innerHTML = bC.innerHTML;

if (LP.innerHTML == "undefined") LP.innerHTML = bC.xml;

if (dLP.style.display == "none") {

var elcb = document.getElementById( 'shidPrev' );

elcb.checked="true";

dLP.style.display = "inline";

}

var elt = document.getElementById( 'livePreviewTitle' );

elt.innerHTML='Détails';

}

/*

= LiveSysop =

*/

function liveSysop() {

wpajax.http({url:wgServer + mw.config.get('wgScriptPath') + '/api.php?action=query&list=allusers&augroup=sysop&aulimit=' +lrcAPIlimit +'&format=xml',

onSuccess: getSysop, message: "Traitement en cours...\n\n" });

}

function getSysop(xmlreq, data) {

var api = xmlreq.responseXML.getElementsByTagName('api')[0];

if (api.firstChild.nodeName == "error") return;

var rcs = api.getElementsByTagName('query')[0].getElementsByTagName('allusers')[0].getElementsByTagName('u');

leni=rcs.length;

for (i=leni-1; i>=0; i--) {

lstSysop.push(rcs[i].getAttribute('name'));

}

liveNS();

}

function liveWatch() {

wpajax.http({url:wgServer + mw.config.get('wgScriptPath') + '/api.php?action=query&list=watchlistraw&wrlimit=' +lrcAPIlimit +'&format=xml',

onSuccess: getWatch, message: "Traitement en cours..." });

}

function getWatch(xmlreq, data) {

var api = xmlreq.responseXML.getElementsByTagName('api')[0];

if (api.firstChild.nodeName == "error") return;

var rcs = api.getElementsByTagName('watchlistraw')[0].getElementsByTagName('wr');

leni=rcs.length;

for (i=0; i

lstSuivi.push(rcs[i].getAttribute('title'));

lstSuiviHH.push("--:--");

}

var wc1=api.getElementsByTagName('query-continue')[0];

if (wc1)

{

var wrcontinue=wc1.getElementsByTagName('watchlistraw')[0].getAttribute('wrcontinue');

wpajax.http({url:wgServer + mw.config.get('wgScriptPath') + '/api.php?action=query&list=watchlistraw&wrlimit=' +lrcAPIlimit +'&format=xml&wrcontinue=' + wrcontinue,

onSuccess: getWatch, message: "Traitement en cours..." });

}

else

liveRC();

}

function liveNS() {

wpajax.http({url: mw.config.get('wgServer') + mw.config.get('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

id = nss[i].getAttribute('id');

ns = nss[i].textContent;

// Handle IE

if (!ns) ns = nss[i].text;

if (id < 0) continue;

if (id == 0) ns = lang_main_namespace;

options += '';

lstNs.push(id);

}

options = '' + options;

document.getElementById('selectNS').innerHTML = '';

liveWatch();

}

/*

= LiveRC =

*/

function supprLigne(quelLigne) {

var i,len;

var tab = document.getElementById('tabRC');

// IE automatically inserts a TBODY that we have to take care of

if (tab.firstChild && (tab.firstChild.nodeName == "TBODY")) tab=tab.firstChild;

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 if (quelLigne == 'c') {

var _els = tab.getElementsByTagName('tr');

len = _els.length;

for (i=len-1; i>=0; i--)

if (_els[i].firstChild.style.backgroundColor == 'white')

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;

if (lrcTZ) {

var regex = new RegExp(/^([-+])?(\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();

}

var regex = new RegExp(/^\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 = '-';

var udiscut = ''+lang_tooltips.TALK_SHORT+'';

var ucontrib = ''+lang_tooltips.CONTRIB_SHORT+'';

var uadmin = '';

if (lrcAdmin == true) {

uadmin = ' • '+lang_tooltips.BLOCK_SHORT+'';

}

var ueditor = ''+user+'';

var ligne = '' + uremove + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • ' + ueditor + '
';

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 lstContact2) {

var timestamp = lstContact2[user].ts;

if (timestamp == 0) continue;

var utilde = user.replace(new RegExp(/\'/g), "\\'");

var udiscut = ''+lang_tooltips.TALK_SHORT+'';

var ucontrib = ''+lang_tooltips.CONTRIB_SHORT+'';

var uadmin = '';

if (lrcAdmin == true) {

uadmin = ' • '+lang_tooltips.BLOCK_SHORT+'';

}

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 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 uremove = '-';

var udiscut = ''+lang_tooltips.TALK_SHORT+'';

var ucontrib = ''+lang_tooltips.CONTRIB_SHORT+'';

var uadmin = '';

if (lrcAdmin == true) {

uadmin = ' • '+lang_tooltips.BLOCK_SHORT+'';

}

var ueditor = ''+user+'';

var ligne = '' + tsToHhMm(timestamp) + ' • ' + uremove + ' • ' + 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 removeRevoc(name) {

delete lstRevoc[name];

updateFollowRevoc();

}

//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;

// 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;

var regex = new RegExp(/\'/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 = '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 if (state & UPLOAD)

diff = 'Log';

else if (state & NEWUSER)

diff = 'Log';

else if (state & BLOCK)

diff = 'Log';

else if (state & DELETE)

diff = 'Log';

else if (state & MOVE)

diff = 'Log';

else if (state & PROTECT)

diff = 'Log';

else if (state & ABFILTER)

diff = 'Filt';

else { // simple edit

diff = ''+lang_tooltips.DIFF_SHORT+''

diff += '+';

}

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 & PATROL) &&

!(state & MOVE) &&

!(state & ABFILTER))

{

hist = ''+lang_tooltips.HIST_SHORT+'';

edit = ''+lang_tooltips.EDIT_SHORT+'';

if (lrcAdmin == true) {

admin = ' • '+lang_tooltips.DEL_SHORT+'';

admin += ' • '+lang_tooltips.PROTECT_SHORT+'';

}

}

// 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 ';

// PaS ? ;

//////////////////

if (state & PAS)

preArti += 'PaS ';

// 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 += ''+lang_category_short+'';

// Redirect, Log, or simple edit ? ;

//////////////////

if (state & MOVE) {

// artiStyle = 'color: magenta; font-weight: bold; font-style: italic;';

postArti += ' Renommage';

postArti += ' '+rc.new_title+'';

arti = ''+title+'';

}

else if (state & REDIRECT) {

artiStyle = 'color: green; font-weight: bold; font-style: italic;';

postArti += ' Redirect';

postArti += ' '+rc.redirect+'';

arti = ''+title+'';

}

else if (state & UPLOAD) {

postArti += ' Upload';

arti = ''+title+'';

}

else if (state & NEWUSER) {

postArti += ' Nouvel utilisateur';

arti = ''+title+'';

}

else if (state & BLOCK) {

// artiStyle = 'color: magenta; font-weight: bold; font-style: italic;';

postArti += ' Blocage';

postArti += ' ('+rc.duration+')';

arti = ''+title+'';

}

else if (state & DELETE) {

postArti += ' Suppression';

arti = ''+title+'';

}

else if (state & PROTECT) {

postArti += ' Protection';

arti = ''+title+'';

}

else {

arti = ''+title+'';

}

th1.innerHTML = '' + tsToHhMm(timestamp) + ' • ' + diff + ' • ' + hist + ' • ' + edit + admin + ' • '

+ preArti + arti + postArti;

th1.className="creator-title";

th1.style.textAlign="left";

th1.style.border="1px";

th1.style.width="40%";

// EDITOR //

////////////

var discut = ''+lang_tooltips.TALK_SHORT+'';

var contrib = ''+lang_tooltips.CONTRIB_SHORT+'';

var editor = "", preEditor = "";

// Bot ? ;

//////////

if (state & BOT)

preEditor += ' ';

// Sysop ? ;

////////////

if (state & SYSOP)

preEditor += ' ';

// Reverted ? ;

/////////////////

if (state & REVERT)

preEditor += ' ';

// TOR potentiel / AOL

var isTOR = new RegExp(/172\.\d+\.\d+\.\d+/);

if (isTOR.test(user))

preEditor += ' ';

editor = ''+user+'';

var uadmin = '';

if (lrcAdmin == true) {

uadmin = ' • '+lang_tooltips.BLOCK_SHORT+'';

}

var uhide = ''+lang_tooltips.USER_HIDE_SHORT+'';

td2.innerHTML = '' + discut + ' • ' + contrib + ' • ' + uhide + uadmin + ' • '

+ 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 += '(' + lstRevoc[user].nb + ' révoc -)'

}

// COMMENT //

// Remplace lien xxx par ;

var wcomment = comment.htmlize();

var regex1 = new RegExp(/\[\[(([^\]\|]*)(.*?))\]\]/g);

wcomment = wcomment.replace(regex1, "$1");

var regex2 = new RegExp(/\>[^\]\|<]*\|([^\]\|<]*)

wcomment = wcomment.replace(regex2, ">$1<");

// Abusefilter tag ? ;

/////////////////

if (state & TAG) {

wcomment += '
Tag : ';

wcomment += rc.tags[0].firstChild.nodeValue;

for (var tagId = 1; tagId < rc.tags.length; ++tagId)

wcomment += ' | ' + rc.tags[tagId].firstChild.nodeValue;

wcomment += '';

td3.style.border = "2px solid red";

} else {

td3.style.border = "1px";

td3.style.width = "40%";

}

td3.innerHTML = "" + wcomment + "";

if (state & PATROLLED) {

td2.style.backgroundColor = "#e3e3f1";

td3.style.backgroundColor = "#e3e3f1";

td4.style.backgroundColor = "#e3e3f1";

}

if (state & ABFILTER) {

th0.style.backgroundColor = "#FFBE60";

th1.style.backgroundColor = "#FFBE60";

td2.style.backgroundColor = "#FFBE60";

td3.style.backgroundColor = "#FFBE60";

td4.style.backgroundColor = "#FFBE60";

}

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 = 'Warning';

tr1.style.border = "2px solid crimson";

}

// CONTACT LIST //

//////////////////

if (lstContact2[user]) {

td2.style.border = "2px solid gold";

td2.style.backgroundColor = "yellow";

}

if (user == mw.config.get('wgUserName')) {

td2.style.border = "2px solid #A0B0E0";

td2.style.backgroundColor = "#F0F8FF";

}

// DELTA SIZE //

// delta de modif ;

///////////////////

if (!(state & NEWUSER) &&

!(state & PROTECT) &&

!(state & MOVE) &&

!(state & DELETE) &&

!(state & ABFILTER)) {

var txtdiff = "";

if (sizediff < 0)

txtdiff = ''+sizediff+'';

else if (sizediff == 0)

txtdiff = '='+sizediff+'';

else

txtdiff = '+'+sizediff+'';

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' );

// IE automatically inserts a TBODY that we have to take care of

if (tab.firstChild && (tab.firstChild.nodeName == "TBODY")) tab=tab.firstChild;

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) &&

!(state & ABFILTER)))

supprLigne(pageid+"_"+revid);

if (state & PATROL)

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);

// Don't show Filter if checkbox is not checked

if ((!document.getElementById('showFilter').checked) &&

(state & ABFILTER))

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 = '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 (lstContact2[user]) {

lstContact2[user].ts = timestamp;

updateFollowContact();

}

if (state & REVERT) {

var regex = new RegExp(/\[\[Sp[ée]cial:Contributions\/([^\]\|]+)/);

match = regex.exec(comment);

if (!match) {

var regex2 = new RegExp(/\[\[Specjalna:Wkład\/([^\]\|]+)/);

match = regex2.exec(comment);

}

if (match) {

var userR = match[1];

if (userR != user && userR != mw.config.get('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('api')[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

for (j=0; j

if (new RegExp(lang_category+categoriestests[j].regex, "i").test(categories[i].textContent))

state += categoriestests[j].state;

}

rc.state = state;

getRevision(rc);

}

function getRedirCat2(xmlreq, data) {

if (document.getElementById('stopLive').checked) return;

var api = xmlreq.responseXML.getElementsByTagName('api')[0];

if (api.firstChild.nodeName == "error") return;

var log = data.log;

var pageid = log.pageid;

var revid = log.revid;

var state = log.state;

var query = api.getElementsByTagName('query')[0];

if (query.getElementsByTagName('redirects').length) {

state += REDIRECT;

if (query.getElementsByTagName('redirects')[0].getElementsByTagName('r').length)

log.redirect = query.getElementsByTagName('redirects')[0].getElementsByTagName('r')[0].getAttribute('to');

}

if (query.getElementsByTagName('categories').length) {

state += CATEGORIZED;

var categories = query.getElementsByTagName('categories')[0].getElementsByTagName('cl');

var i,j;

var leni = categories.length;

var lenj = categoriestests.length;

for (i=0; i

for (j=0; j

if (new RegExp(lang_category+categoriestests[j].regex, "i").test(categories[i].getAttribute('title')))

state += categoriestests[j].state;

}

log.state = state;

getRevision(log);

}

// 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--) {

// Using rcid as revid can be 0 (e.g. when moving a page)

if (rcs[i].getAttribute('rcid') <= lastrcid) continue;

rc = new Object();

rc.state = 0;

lenj = rcs[i].attributes.length;

for (j=0; 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;

}

}

var tags = rcs[i].getElementsByTagName('tags')[0].getElementsByTagName('tag');

if (tags.length) {

rc.state += TAG;

rc.tags = tags;

}

if (typeof(rc.comment) != "undefined") {

lenj = commenttests.length;

for (j=0; j

if (new RegExp(commenttests[j].regex).test(rc.comment))

rc.state += commenttests[j].state;

}

if (rc.newlen == 0) rc.state += BLANKING;

if (lstSysop.indexOf(rc.user) != -1)

rc.state += SYSOP;

var mitigating = (rc.state & REVERT)

|| (rc.state & BLANKING)

|| (rc.state & REPLACED)

|| (rc.state & TAG)

|| (lstContact2[rc.user])

|| (lstRevoc[rc.user])

|| (rc.user == mw.config.get('wgUserName'));

if (document.getElementById('showIP').checked

&& !(rc.state & IP)

&& !mitigating ) continue;

if ((rc.state & PATROLLED)

&& document.getElementById('showIPNEW').checked

&& !mitigating ) continue;

if ((typeof(rc.logtype) != "undefined")

&& rc.logtype == "newuser") continue;

if (lstHidden[rc.user] && !mitigating) continue;

wpajax.http({url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?titles=' + encodeURIComponent(rc.title) + '&action=query&prop=categories&redirects&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('logid') <= lastlogid) continue;

log = new Object();

log.state = 0;

lenj = logs[i].attributes.length;

for (j=0; j

if (logs[i].attributes[j].name == 'type')

{

switch(logs[i].attributes[j].value) {

case 'patrol':

// I "Segna come verificata" non li cago

log.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;

case 'review':

log.state += REVIEW;

break;

default:

break;

}

}

else

log[logs[i].attributes[j].name] = logs[i].attributes[j].value;

//Set a dummy revid to prevent deletion

log.revid=log.logid;

}

if (typeof(log.comment) != "undefined") {

lenj = commenttests.length;

for (j=0; j

if (new RegExp(commenttests[j].regex).test(log.comment))

log.state += commenttests[j].state;

}

if (lstSysop.indexOf(log.user) != -1)

log.state += SYSOP;

if (!(log.state & REVIEW))

wpajax.http({url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?titles=' + encodeURIComponent(log.title) + '&action=query&prop=categories&redirects&format=xml',

onSuccess: getRedirCat2, log: log });

}

// Filters

var filters = api.getElementsByTagName('query')[0].getElementsByTagName('abuselog')[0].getElementsByTagName('item');

var i,j,leni,lenj,filter;

leni=filters.length;

for (i=leni-1; i>=0; i--) {

if (filters[i].getAttribute('id') <= lastfilterid) continue;

filter = new Object();

filter.state = ABFILTER;

lenj = filters[i].attributes.length;

for (j=0; j

filter[filters[i].attributes[j].name] = filters[i].attributes[j].value;

}

//Set a dummy revid to prevent deletion

filter.revid = filter.id

// Get filter description

//Set a dummy revid to prevent deletion

filter.revid = filter.id

wpajax.http({url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&list=abusefilters&abflimit=1&format=xml&abfstartid=' + filter.filter_id,

onSuccess: getFilterTitle, filter: filter });

}

lastrcid = rcs[0].getAttribute('rcid');

lastlogid = logs[0].getAttribute('logid');

lastfilterid = filters[0].getAttribute('id');

lastrctimestamp = rcs[0].getAttribute('timestamp').replace(new RegExp(/\D/g), "");

lastletimestamp = logs[0].getAttribute('timestamp').replace(new RegExp(/\D/g), "");

lastafltimestamp = filters[0].getAttribute('timestamp').replace(new RegExp(/\D/g), "");

document.getElementById('tsInit').innerHTML = "Last situation : " + lastrctimestamp ;

}

function getFilterTitle(xmlreq, data) {

var filter = data.filter;

var xmlinfo = xmlreq.responseXML.getElementsByTagName('api')[0];

if (xmlinfo.firstChild.nodeName == "error") return;

filter.comment = 'Déclenchement du filtre '

filter.comment += xmlinfo.getElementsByTagName('abusefilters')[0].getElementsByTagName('filter')[0].getAttribute('id');

filter.comment += ': ';

filter.comment += xmlinfo.getElementsByTagName('abusefilters')[0].getElementsByTagName('filter')[0].getAttribute('description');

filter.comment += ' (action: '+ filter.result + ')';

getRevision(filter);

}

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;

wpajax.http({url:wgServer + mw.config.get('wgScriptPath')

+ '/api.php?action=query&list=recentchanges|logevents|abuselog&rcnamespace=' + rcns

+ '&rcprop=user|comment|flags|timestamp|title|ids|sizes|tags' + (lrcPatrol ? '|patrolled' : '')

+ (document.getElementById('showBot').checked ? '&rcshow=!bot' : '')

+ '&rcend=' + lastrctimestamp + '&rclimit=' + lrcRCLimit

+ '&leend=' + lastletimestamp + '&lelimit=' + lrcRCLimit

+ '&aflend=' + lastafltimestamp + '&afllimit=' + 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";

}

function liveRCInit()

{

wpajax.http({ url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&meta=userinfo&uiprop=rights&format=xml',

onSuccess: getRights});

}

$(function () {

if (mw.config.get('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 showIPNEWbox = '';

if (lrcPatrol)

showIPNEWbox = '' +

'';

var lvPreviewFoot = document.getElementById( 'livePreviewFoot' );

lvPreviewFoot.innerHTML = 'X' +

'X' +

'X' +

'X' +

'' +

'' +

'' +

'' +

'' +

'' +

'' +

'' +

'' +

'' +

'' +

'' +

showIPNEWbox +

'' +

'' +

'' +

'' +

'' +

'' +

'';

// '' +

// '' +

if (lrcPreviewHeight) document.getElementById('livePreview').style.height = lrcPreviewHeight;

var _len = lstContact.length;

lstContact2 = new Array();

for (var _i=0; _i<_len; _i++)

lstContact2[lstContact[_i]] = { ts: 0 };

// Main

liveRCInit();

}

});

/* */