User:EDUCA33E/LiveRC.js
/*
LiveWP
- Documentation : :fr:User:EDUCA33E/LiveRC/Documentation
- Author : :fr:User:EDUCA33E
- Dev & enhancements : :fr:User:TiChou, :pl:User:Leafnode, :it:User:Jalo & :fr:User:Nakor & :fr:User:Arkanosis
- Version: 0.3.9 (beta)
= 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 = "
}
}
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 = ' ' // 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+'] : ' + '' + '
';' + entete.innerHTML +
' + identique +
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 = ' ' '['+lang_menu[0].AVERTS+'] : ' + '' + '
';'+entete.innerHTML +
' +
}
/*
= 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 = '
';
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 += ' '
}
// Page protégée ? ;
////////////////////
if (state & FULLLOCK)
preArti += ' ';
if (state & LOCK)
preArti += ' ';
// Copyright ? ;
//////////
if (state & COPYRIGHT)
preArti += ' ';
// PaS ? ;
//////////////////
if (state & PAS)
preArti += ' ';
// Intervention wikipompiers ? ;
////////////////////////////////
if (state & FIRE)
preArti += ' ';
// Adq ? ;
//////////
if (state & ADQ)
postArti += '';
// Bon article ? ;
//////////////////
if (state & BA)
postArti += '';
// Article potentiellement de qualité ? ;
/////////////////////////////////////////
if (state & APDQ)
postArti += '';
// 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 += ' ';
postArti += ' '+rc.new_title+'';
arti = ''+title+'';
}
else if (state & REDIRECT) {
artiStyle = 'color: green; font-weight: bold; font-style: italic;';
postArti += ' ';
postArti += ' '+rc.redirect+'';
arti = ''+title+'';
}
else if (state & UPLOAD) {
postArti += ' ';
arti = ''+title+'';
}
else if (state & NEWUSER) {
postArti += ' ';
arti = ''+title+'';
}
else if (state & BLOCK) {
// artiStyle = 'color: magenta; font-weight: bold; font-style: italic;';
postArti += ' ';
postArti += ' ('+rc.duration+')';
arti = ''+title+'';
}
else if (state & DELETE) {
postArti += ' ';
arti = ''+title+'';
}
else if (state & PROTECT) {
postArti += ' ';
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 //
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 = '';
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(); } }); /* */