Utente:Jalo/Sandbox3: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(188 versioni intermedie di 3 utenti non mostrate)
Riga 1:
Test colore link:
/*
*[[collegamento ipertestuale|link normale]]
==LiveWP==
*[[terra (disambigua)|disambigua]]
*Documentation : [[:fr:User:EDUCA33E/LiveRC/Documentation]]
*[[Globo terrestre|redirect]]
*Authors : [[:fr:User:EDUCA33E]], [[:fr:User:TiChou]] & [[:pl:User:Leafnode]]
*[[Terra (personaggio)|redirect a disambigua]]
*Version: 0.3.6 (beta)
 
Version modifiée basée sur la version du 1er avril 2007 a 00:49 :
 
http://fr.wikipedia.org/w/index.php?title=User:EDUCA33E/LiveRC.js&oldid=15525649
 
=== Variables globales ===
 
<source lang="javascript"> */
 
if (wgTitle == "Monobook.js/E-LiveRC") {
 
// Appel des parametres par défaut de LiveRC ;
// ///////////////////////////////////////////
document.write('<script type="text/javascript" src="'
+ wgServer + wgScriptPath + '/index.php?title='+wgPageName+'/LiveRCparam.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 
// Appel des parametres utilisateur ;
// ///////////////////////////////////////////
document.write('<script type="text/javascript" src="'
+ wgServer + wgScriptPath + '/index.php?title=Utente:'+encodeURI(wgUserName)+'/LiveRCparam.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 
var cssNode = document.createElement('link');
cssNode.type = 'text/css';
cssNode.rel = 'stylesheet';
cssNode.href = 'http://pl.wikipedia.org/skins-1.5/common/diff.css?90';
cssNode.media = 'screen';
cssNode.title = 'dynamicLoadedSheet';
document.getElementsByTagName("head")[0].appendChild(cssNode);
 
document.write('<script type="text/javascript" src="http://pl.wikipedia.org/skins-1.5/common/diff.js?90"></script>');
 
var lastrevid,lasttimestamp=1; // Timestamp d'initialisation;
 
// Découpage de l'URL et de ses parametres;
 
var _GET = new Array();
var _uri = ___location.href;
var _temp_get_arr = _uri.substring(_uri.indexOf('?')+1, _uri.length).split("&");
var _temp_get_arr_1 = new Array();
for(_get_arr_i=0; _get_arr_i<_temp_get_arr.length; _get_arr_i++){
_temp_get_arr_1 = _temp_get_arr[_get_arr_i].split("=");
_GET[decodeURIComponent(_temp_get_arr_1[0])] = decodeURIComponent(_temp_get_arr_1[1]);
}
delete _uri; delete _temp_get_arr; delete _temp_get_arr_1;
 
// Variables d'état (pour test sur rc.state);
 
var IP = 1;
var BOT = 2 << 0;
var SYSOP = 2 << 1;
var NEW = 2 << 2;
var MINOR = 2 << 3;
var NEWNS = 2 << 4;
var RENAMED = 2 << 5;
var PATROLLED = 2 << 6;
var REVERT = 2 << 7;
var BLANKING = 2 << 8;
var REPLACED = 2 << 9;
var REDIRECT = 2 << 10;
var CATEGORIZED = 2 << 11;
var LOCK = 2 << 12;
var FULLLOCK = 2 << 13;
var HOMONYMIE = 2 << 14;
var ADQ = 2 << 15;
var COPYRIGHT = 2 << 16;
var PAS = 2 << 17;
var UPLOAD = 2 << 18;
var NEWUSER = 2 << 19;
var BLOCK = 2 << 20;
var DELETE = 2 << 21;
var MOVE = 2 << 22;
var PROTECT = 2 << 23;
 
var lstSysop = new Array(); // Sysop list;
var lstContact = new Array(); // Contact list;
var lstIPClass = new Array(); // IPClass list;
var lstRevoc = new Array(); // Reverted list;
var lstHidden = new Array(); // Hidden users list;
 
// Is user Sysop;
var lrcAdmin = false; // default value;
if(wgUserGroups.indexOf("sysop") != -1)
lrcAdmin = true;
 
// Watchlist;
var lstSuivi = new Array();
var lstSuiviHH = new Array();
var lstSuivirevid = new Array();
var lstSuivioldid = new Array();
var lstSuivircid = new Array();
}
 
/* </source>
 
===Utilities===
 
<source lang="javascript"> */
var wpajax = {
http: function(bundle) {
// mandatory: bundle.url
// optional: bundle.async
// optional: bundle.method
// optional: bundle.headers
// optional: bundle.data
// optional: bundle.onSuccess (xmlhttprequest, bundle)
// optional: bundle.onFailure (xmlhttprequest, bundle)
// optional: bundle.otherStuff OK too, passed to onSuccess and onFailure
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
} catch(e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlhttp = false
}
}
}
 
if (xmlhttp) {
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4)
wpajax.httpComplete(xmlhttp,bundle);
};
xmlhttp.open(bundle.method ? bundle.method : "GET",bundle.url,bundle.async == false ? false : true);
if (bundle.headers) {
for (var field in bundle.headers)
xmlhttp.setRequestHeader(field,bundle.headers[field]);
}
xmlhttp.send(bundle.data ? bundle.data : null);
}
return xmlhttp;
},
 
httpComplete: function(xmlhttp,bundle) {
if (xmlhttp.status == 200 || xmlhttp.status == 302) {
if (bundle.onSuccess)
bundle.onSuccess(xmlhttp,bundle);
} else if (bundle.onFailure) {
bundle.onFailure(xmlhttp,bundle);
} else {
// A activer en debug mode ?
// alert(xmlhttp.statusText);
}
}
};
 
// Parser
if (document.implementation.createDocument) {
var gml_xmlparser = new DOMParser();
}
 
function gml_XMLParse(string) {
if (document.implementation.createDocument) {
return gml_xmlparser.parseFromString(string, "text/xml");
} else if (window.ActiveXObject) {
var gml_xmldoc = new ActiveXObject("Microsoft.XMLDOM");
gml_xmldoc.async = "false";
ret = gml_xmldoc.loadXML(string);
if (!ret)
return null;
return gml_xmldoc.documentElement;
}
return null;
}
 
// HTMLize
String.prototype.htmlize = function() {
var chars = new Array('&','<','>','"');
var entities = new Array('amp','lt','gt','quot');
var regex = new RegExp();
var string = this;
for (var i=0; i<chars.length; i++) {
regex.compile(chars[i], "g");
string = string.replace(regex, '&' + entities[i] + ';');
}
return string;
}
 
/* </source>
 
=== LiveDiff ===
 
<source lang="javascript"> */
 
function liveDiff(page, id, oldid, rcid) {
var el = document.getElementById( 'livePreviewTitle' );
el.innerHTML="<b style='text-decoration: blink;'>Diff : <span style='color:red'>"+page+"</span>...</b>";
wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title='+encodeURIComponent(page)+'&diff='+id+'&oldid='+oldid,
onSuccess: getDiff, mpage: page, mid: id, moldid:oldid, mrcid:rcid});
}
 
function getDiff(xmlreq, data) {
//2DO mostrare la diff e modificare le impostazioni delle casellle da parte (SI/NO/BOH e ULTIMA MODIFICA)
var doc = gml_XMLParse(xmlreq.responseText);
var page=data.mpage;
var oldid=data.moldid;
var id=data.mid;
var rcid=data.mrcid;
var bC = doc.getElementById('bodyContent');
if (bC == null) bC = doc.getElementById('article')
var LP = document.getElementById( 'livePreview' );
var dLP = document.getElementById( 'divLivePreview' );
var lD = getElementsByClass('diff',bC,null);
 
var upage=page.replace(new RegExp(/\'/g), "\\'");
 
if (lD[0] == null)
LP.innerHTML = bC.innerHTML;
else {
if (document.getElementById('showDiffR').checked) {
var avantEl = getElementsByClass('diff-deletedline',bC,null);
var apresEl = getElementsByClass('diff-addedline',bC,null);
var avant = "";
var apres = "";
var lav = avantEl.length;
var lap = apresEl.length;
for(var n=0; n < lav ; n++)
avant = avant + avantEl[n].innerHTML + "<br />";
for(var n=0; n < lap ; n++)
apres = apres + apresEl[n].innerHTML + "<br />";
LP.innerHTML = "<table width='100%'><tr><td width='50%' class='diff-deletedline'>"+avant+"</td><td class='diff-addedline'>"+apres+"</td></tr></table>";
}
else {
LP.innerHTML = "<table border='0' width='98%' cellpadding='0' cellspacing='4' class='diff'>"+lD[0].innerHTML+"</table>";
}
}
if (dLP.style.display == "none") {
var elcb = document.getElementById( 'shidPrev' );
elcb.checked="true";
dLP.style.display = "inline";
}
 
var entete = document.getElementById( 'livePreviewTitle' );
entete.innerHTML='<b><a href="'+wgServer + '/wiki/' + encodeURI(page) + '" target="_new">' + page + '</a></b> • ' +
'(<a href="javascript:;" onClick="liveHist(\''+upage+'\');" style="color:darkorange">Cron</a>)';
 
var asNextDiff = doc.getElementById("differences-nextlink");
if(asNextDiff == null) {
var optAvert = "";
var optl = lstAvert.length;
for (j=0; j<optl; j++) {
optAvert += '<option value="'+lstAvert[j].template;
if(lstAvert[j].hasPage) optAvert += '|'+upage;
optAvert += '">'+lstAvert[j].string+'</option>';
}
 
// Get username of submitter
var user1 = doc.getElementById( 'mw-diff-otitle2' );
if (user1 != null) {
var usertmp=user1.innerHTML;
var daDove = usertmp.indexOf('tente:')+6;
var daDove2 = usertmp.indexOf('/wiki/Speciale:Contributi/')+26;
if ((daDove2 != -1) && (daDove2 < daDove)) // e' un anonimo
daDove3 = daDove2;
else
daDove3 = daDove;
var finoA = usertmp.indexOf('" title="');
var finoA2 = usertmp.indexOf('&action=edit');
if ((finoA2 != -1) && (finoA2 < finoA)) // non esiste la pagina utente
finoA3 = finoA2;
else
finoA3 = finoA;
user1 = usertmp.substr(daDove3, finoA3-daDove3);
}
var user2 = doc.getElementById( 'mw-diff-ntitle2' );
if (user2 != null) {
var usertmp=user2.innerHTML;
var daDove = usertmp.indexOf('tente:')+6;
var daDove2 = usertmp.indexOf('/wiki/Speciale:Contributi/')+26;
if ((daDove2 != -1) && (daDove2 < daDove)) // e' un anonimo
daDove3 = daDove2;
else
daDove3 = daDove;
var finoA = usertmp.indexOf('" title="');
var finoA2 = usertmp.indexOf('&action=edit');
if ((finoA2 != -1) && (finoA2 < finoA)) // non esiste la pagina utente
finoA3 = finoA2;
else
finoA3 = finoA;
user2 = usertmp.substr(daDove3, finoA3-daDove3);
}
user1=user1.replace(new RegExp(/\'/g), "\\'");
user2=user2.replace(new RegExp(/\'/g), "\\'");
 
entete.innerHTML = '<table width="100%" class="creator"><tr><td>' + entete.innerHTML +
'</td><td align="right"><small>' +
// Verifier avant si le patrouilleur peut modifier cette page ? (query.php?what=permissions&titles=page)
'[<a id="LiveRevertLink" href="javascript:getLiveMessage(\'liverevert\',\''+user1+'\',\''+user2+'\',\''+upage+'\',\''+oldid+'\');" >' + lang_menu[0].UNDORC+'</a>] • ' +
lang_menu[0].REASON+' : <input id="LiveRevertMessage" /> ••• ' +
'[<a id="LiveAvertoLink" href="javascript:getLiveAverto(\''+user2+'\');">'+lang_menu[0].AVERTS+'</a>] : ' +
'<select id="averto">' + optAvert + '</select>' +
'</td></tr><tr><td /><td align="right"><small>[<a id="MarkAsPatrolled" href="'+wgServer+wgScript+'?action=markpatrolled&rcid='+rcid+'&title='+upage+'" target="_new" >' + lang_menu[0].VERIF + '</a>]</td></tr></table>';
document.getElementById('LiveRevertMessage').focus();
}
}
 
function getLiveDelete(page,type) {
page = encodeURIComponent(page);
var link = document.getElementById('LiveCancImmLink');
link.href = "javascript:;";
link.style.color = "silver";
link.style.cursor = "default";
link.style.textDecoration = "none";
document.getElementById('LiveRevertMessage').disabled = true;
var message = document.getElementById('LiveRevertMessage').value;
var testo = getpagecontent(page);
if (type == "copyviol")
testo = '{{Cancelcopy|' + message + '}}\n\n' + testo;
else
testo = '{{Cancella subito|' + message + '}}\n\n' + testo;
 
setpagecontent(page,testo,"LiveRC : Cancella subito");
}
 
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;
var fixMessage=message.replace(new RegExp(/\\'/g), "'");
var page = 'Discussioni utente:' + encodeURIComponent(user);
 
var testo = getpagecontent(page);
testo += '\n\n==Avviso==\n{{' + fixMessage + '}}~~~~\n';
if (message.indexOf('|') != -1)
template = message.substr(0,message.indexOf('|'));
else
template = message;
 
var optl = lstAvert.length;
var object = "LiveRC: Avviso";
for (j=0; j<optl; j++)
if(lstAvert[j].template == template)
object = "LiveRC: "+lstAvert[j].string;
setpagecontent(page,testo,object);
}
 
function getLiveMessage(where, user1, user2, page, oldid) {
var links = [ document.getElementById('LiveRevertLink') ];
var i,len=links.length;
for (i=0; i<len; i++) {
links[i].href = "javascript:;";
links[i].style.color = "silver";
links[i].style.cursor = "default";
links[i].style.textDecoration = "none";
}
document.getElementById('LiveRevertMessage').disabled = true;
var message = document.getElementById('LiveRevertMessage').value;
wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title=' + encodeURI(page) + '&action=edit&oldid=' + oldid,
onSuccess: postLiveRevert,
where: where, page: page, user1: user1, user2: user2, message: message });
}
 
function postLiveRevert(xmlreq, data) {
var parser = new DOMParser();
var doc = parser.parseFromString(xmlreq.responseText, 'application/xhtml+xml');
 
var where = data.where;
var page = data.page;
var user1 = data.user1;
var user2 = data.user2;
var message = data.message;
 
var wpTextbox1 = encodeURIComponent(doc.getElementById('wpTextbox1').value);
 
var inputs = doc.getElementById('editform').getElementsByTagName('input');
var editform = new Array();
for (i=0; i<inputs.length; i++) {
editform[inputs[i].name] = inputs[i].value;
}
var wpStarttime = encodeURIComponent(editform['wpStarttime']);
var wpEdittime = encodeURIComponent(editform['wpEdittime']);
var wpEditToken = encodeURIComponent(editform['wpEditToken']);
 
switch(where) {
case 'liverevert':
var wpSummary = lang_menu[0].RVMES1 + ' [[Speciale:Contributi/' + user2 + '|' + user2
+ ']]; '+lang_menu[0].RVMES2+' [[Utente:' + user1 + '|' + user1 + ']]';
break;
/* case 'livevandalism':
var wpSummary = 'LiveRC : Révocation de vandalisme par [[Special:Contributions/' + user2 + '|' + user2
+ ']]; retour a la version de [[User:' + user1 + '|' + user1 + ']]';
break; */
}
if (message)
wpSummary = wpSummary + ' ; ' + message;
wpSummary = encodeURIComponent(wpSummary);
 
var headers = new Array();
headers['Content-Type'] = 'application/x-www-form-urlencoded';
wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(page) + '&action=submit',
method: "POST", headers: headers,
data: 'wpSave=1&wpTextbox1=' + wpTextbox1 + '&wpStarttime=' + wpStarttime + '&wpEdittime=' + wpEdittime
+ '&wpEditToken=' + wpEditToken + '&wpSummary=' + wpSummary});
}
 
/* </source>
 
=== LiveHist ===
 
<source lang="javascript"> */
 
function liveHist(page) {
// uso delle " (soluzione di merda, ma se funziona...)
var page = page.replace(new RegExp(/\%22/g), '"');
 
var el = document.getElementById( 'livePreviewTitle' );
el.innerHTML="<b style='text-decoration: blink;'>Cron : <span style='color:red'>"+page+"</span>...</b>";
wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(page) + '&action=history', onSuccess: getHist, message: page });
}
 
function getHist(xmlreq, data) {
doc = gml_XMLParse(xmlreq.responseText);
bC = doc.getElementById('bodyContent')
if (bC == null) bC = doc.getElementById('article')
var c=data.message;
var LP = document.getElementById( 'livePreview' );
var dLP = document.getElementById( 'divLivePreview' );
LP.innerHTML = bC.innerHTML;
if (dLP.style.display == "none") {
var elcb = document.getElementById( 'shidPrev' );
elcb.checked="true";
dLP.style.display = "inline";
}
var elt = document.getElementById( 'livePreviewTitle' );
elt.innerHTML='<b><a href="'+wgServer+'/wiki/'+encodeURIComponent(c)+'" target="_new">'+c+'</a></b>';
}
 
/* </source>
 
=== LiveArticle ===
 
<source lang="javascript"> */
 
function liveArticle(page,user) {
// uso delle " (soluzione di merda, ma se funziona...)
var page = page.replace(new RegExp(/\%22/g), '"');
 
var el = document.getElementById( 'livePreviewTitle' );
el.innerHTML="<b style='text-decoration: blink;'><span style='color:red'>"+page+"</span>...</b>";
wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(page) + '&redirect=no', onSuccess: getArticle, message: page, user: user });
}
 
function getArticle(xmlreq, data) {
doc = gml_XMLParse(xmlreq.responseText);
bC = doc.getElementById('bodyContent')
if (bC == null) bC = doc.getElementById('article')
var c=data.message;
var user=data.user;
var LP = document.getElementById( 'livePreview' );
var dLP = document.getElementById( 'divLivePreview' );
LP.innerHTML = bC.innerHTML;
if (dLP.style.display == "none") {
var elcb = document.getElementById( 'shidPrev' );
elcb.checked="true";
dLP.style.display = "inline";
}
 
var upage=c.replace(new RegExp(/\'/g), "\\'");
var optAvert = "";
var optl = lstAvert.length;
for (j=0; j<optl; j++) {
optAvert += '<option value="'+lstAvert[j].template;
if(lstAvert[j].hasPage) optAvert += '|'+upage;
optAvert += '">'+lstAvert[j].string+'</option>';
}
 
var elt = document.getElementById( 'livePreviewTitle' );
elt.innerHTML='<b><a href="'+wgServer+'/wiki/'+encodeURI(c)+'" target="_new">'+c+'</a></b>';
elt.innerHTML = '<table width="100%" class="creator"><tr><td>' + elt.innerHTML +
'</td><td align="right"><small>' +
// Verifier avant si le patrouilleur peut modifier cette page ? (query.php?what=permissions&titles=page)
//canc imm
'[<a id="LiveCancImmLink" href="javascript:getLiveDelete(\''+encodeURIComponent(c)+'\');" >' + lang_menu[0].CANCIMM+'</a>] • ' +
lang_menu[0].REASON2+' : <input id="LiveRevertMessage" /> • ' +
// canc x copyviol
'[<a id="LiveCancImmLink" href="javascript:getLiveDelete(\''+encodeURIComponent(c)+'\',\'copyviol\');" >' + lang_menu[0].CANCCV+'</a>] ••• ' +
'[<a id="LiveAvertoLink" href="javascript:getLiveAverto(\''+user+'\');">'+lang_menu[0].AVERTS+'</a>] : ' +
'<select id="averto">' + optAvert + '</select>' +
'</td></tr></table>';
document.getElementById('LiveRevertMessage').focus();
}
 
/* </source>
 
=== LiveLog ===
 
<source lang="javascript"> */
 
function liveLog(action,page) {
var titolo = '';
switch(action) {
case 'upload':
titolo = 'Log dei caricamenti';
break;
case 'newuser':
titolo = 'Log dei nuovi utenti';
break;
case 'block':
titolo = 'Log dei blocchi utente';
break;
case 'delete':
titolo = 'Log delle cancellazioni';
break;
case 'move':
titolo = 'Log degli spostamenti';
break;
case 'protect':
titolo = 'Log delle protezioni';
break;
case '':
titolo = 'Log';
break;
default:
break;
}
 
var el = document.getElementById( 'livePreviewTitle' );
el.innerHTML="<b style='text-decoration: blink;'><span style='color:red'>"+titolo+"</span>...</b>";
wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=Speciale:Registri&type=' + action + "&user=&page=" + encodeURIComponent(page), onSuccess: getLog, message: page });
}
 
function getLog(xmlreq, data) {
doc = gml_XMLParse(xmlreq.responseText);
bC = doc.getElementById('bodyContent')
if (bC == null) bC = doc.getElementById('article')
var c=data.message;
var LP = document.getElementById( 'livePreview' );
var dLP = document.getElementById( 'divLivePreview' );
LP.innerHTML = bC.innerHTML;
if (dLP.style.display == "none") {
var elcb = document.getElementById( 'shidPrev' );
elcb.checked="true";
dLP.style.display = "inline";
}
var elt = document.getElementById( 'livePreviewTitle' );
elt.innerHTML='<b><a href="'+wgServer+'/wiki/'+encodeURI(c)+'" target="_new">'+c+'</a></b>';
}
 
/* </source>
 
=== LiveContrib ===
 
<source lang="javascript"> */
 
function liveContrib(user) {
var el = document.getElementById( 'livePreviewTitle' );
el.innerHTML="<b style='text-decoration: blink;'><span style='color:red'>"+user+"</span>...</b>";
wpajax.http({url:wgServer + '/wiki/Speciale:Contributi/'+encodeURIComponent(user),
onSuccess: getContrib, message: user });
}
 
function getContrib(xmlreq, data) {
doc = gml_XMLParse(xmlreq.responseText);
bC = doc.getElementById('bodyContent')
if (bC == null) bC = doc.getElementById('article')
var user=data.message;
var LP = document.getElementById( 'livePreview' );
var dLP = document.getElementById( 'divLivePreview' );
LP.innerHTML = bC.innerHTML;
if (dLP.style.display == "none") {
var elcb = document.getElementById( 'shidPrev' );
elcb.checked="true";
dLP.style.display = "inline";
}
var utilde=user.replace(new RegExp(/\'/g), "\\'");
 
var optAvert = "";
var optl = lstAvert.length;
for (j=0; j<optl; j++) {
if(lstAvert[j].hasPage) continue;
optAvert += '<option value="'+lstAvert[j].template+'">'+lstAvert[j].string+'</option>';
}
 
var entete = document.getElementById( 'livePreviewTitle' );
entete.innerHTML='<b><a href="'+wgServer+'/wiki/User:'+encodeURIComponent(user)+'" target="_new">'+user+'</a></b>';
entete.innerHTML = '<table width="100%" class="creator"><tr><td>'+entete.innerHTML +
'</td><td align="right"><small>' +
'[<a id="LiveAvertoLink" href="javascript:var message=getLiveAverto(\''+utilde+'\');">'+lang_menu[0].AVERTS+'</a>] : ' +
'<select id="averto">' + optAvert + '</select>' + '</td></tr></table>';
}
 
/* </source>
 
=== LiveSysop ===
 
<source lang="javascript"> */
 
function liveNS() {
wpajax.http({url: wgServer + wgScriptPath + '/api.php?action=query&meta=siteinfo&siprop=namespaces&format=xml',
onSuccess: getNS, message: "Pobieranie nazw przestrzeni" });
}
 
function getNS(xmlreq, data) {
var api = xmlreq.responseXML;
 
if (api.firstChild.nodeName == "error") return;
 
var nss = api.getElementsByTagName('query')[0].getElementsByTagName('namespaces')[0].getElementsByTagName('ns');
var len = nss.length;
var i;
var id,ns;
var options = "";
var lstNs = new Array();
for (i=0; i<len; i++) {
id = nss[i].getAttribute('id');
ns = nss[i].textContent;
 
if (id < 0) continue;
//Ex "Article"
if (id == 0) ns = "(Principale)";
 
//Select namespace (default = *)
if (typeof(checkNamespace)!="undefined" && checkNamespace == id)
options += '<option value="' + id + '" SELECTED >' + ns + '</option>';
else
options += '<option value="' + id + '">' + ns + '</option>';
lstNs.push(id);
}
options = '<option value="' + lstNs.join('|') + '">*</option>' + options;
document.getElementById('selectNS').innerHTML = '<label for="showNS0">'+lang_menu[0].NAMESP+' </label><select id="showNS0">' + options + '</select><br/><br/>';
 
/* da spostare in YesNo
// crea il bottone "Inizia"
var button = document.createElement('input');
button.value = 'Inizia';
button.type = 'button';
// il comando dipende dal browser utilizzato
// Per ora e' stato testato solo con Firefox2 ed IE6. In caso di problemi fare riferimento alla
// dichiarazione di "BrowserDetect", in cima allo script, per avere la lista dei browser
// supportati e dei metodi di calcolo degli stessi
if (BrowserDetect.browser=="Firefox" || BrowserDetect.browser=="Mozilla" || BrowserDetect.browser=="Netscape")
button.setAttribute('onclick', 'liveRC()');
else
//if (BrowserDetect.browser=="Explorer") commentato per farlo funzionare con gli altri browser
button.onclick = liveRC;
 
document.getElementById('selectNS').appendChild(button);
*/
}
 
/* </source>
 
=== LiveRC ===
 
<source lang="javascript"> */
 
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
for (i = 0, j = 0; i < elsLen; i++) {
if (pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
 
function tsToHhMm(timestamp) {
var tz;
var match, regex = new RegExp();
if (lrcTZ) {
regex.compile(/^([-+])?(\d?\d):?(\d\d)$/);
match = regex.exec(lrcTZ);
if (!match) {
//livercError(lang_error.TZ);
return 'xx:xx';
}
tz = match[2]*60 + match[3]*1;
tz = match[1] == '-' ? -tz : tz;
} else {
var now = new Date();
tz = -now.getTimezoneOffset();
}
regex.compile(/^\d\d\d\d-\d\d-\d\dT(\d\d):(\d\d):\d\dZ$/);
match = regex.exec(timestamp);
if (!match) {
//livercError(lang_error.timestamp);
return 'xx:xx';
}
var tt = (match[1]*60 + match[2]*1 + tz + 1440) % 1440;
var mm = tt % 60;
var hh = (tt - mm) / 60 % 24;
return hh + ':' + (mm < 10 ? '0' : '') + mm;
}
 
function updateHidden() {
var tempAr = new Array();
for (var user in lstHidden) {
var utilde = user.replace(new RegExp(/\'/g), "\\'");
var uremove = '<a href="javascript:;" onClick="unhideUser(\''+utilde+'\');" style="color:grey">-</a>';
var udiscut = '<a href="'+wgServer+'/wiki/Discussioni utente:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">D</a>';
var ucontrib = '<a href="javascript:;" onClick="liveContrib(\''+utilde+'\');" style="color:#43CD80">C</a>';
var uadmin = '';
if (lrcAdmin == true) {
uadmin = ' • <a href="'+wgServer+'/wiki/Speciale:Blocca/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>';
}
var ueditor = '<a href="'+wgServer+'/wiki/Utente:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>';
var ligne = '<span id="hidden-' + user + '"><small>' + uremove + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • </small>' + ueditor + '</span><br />';
tempAr.push(ligne);
}
tempAr.sort();
var lvHidden = document.getElementById('liveHidden');
lvHidden.innerHTML = "";
var len = tempAr.length;
for (var n=len-1; n>=0; n--)
lvHidden.innerHTML += tempAr[n];
}
 
function updateFollowContact() {
var tempAr = new Array();
for (var user in lstContact) {
var timestamp = lstContact[user].ts;
if (timestamp == 0) continue;
var utilde = user.replace(new RegExp(/\'/g), "\\'");
var udiscut = '<a href="'+wgServer+'/wiki/Discussioni utente:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">D</a>';
var ucontrib = '<a href="javascript:;" onClick="liveContrib(\''+utilde+'\');" style="color:#43CD80">C</a>';
var uadmin = '';
if (lrcAdmin == true) {
uadmin = ' • <a href="'+wgServer+'/wiki/Speciale:Blocca/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>';
}
var ueditor = '<a href="'+wgServer+'/wiki/Utente:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>';
var ligne = '<span id="contact-' + timestamp + '"><small>' + tsToHhMm(timestamp) + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • </small>' + ueditor + '</span><br />';
tempAr.push(ligne);
}
tempAr.sort();
var lvContact = document.getElementById('liveContact');
lvContact.innerHTML = "";
var len = tempAr.length;
for (var n=len-1; n>=0; n--)
lvContact.innerHTML += tempAr[n];
}
 
function updateFollowRevoc() {
var tempAr = new Array();
for (var user in lstRevoc) {
var timestamp = lstRevoc[user].ts;
var utilde = user.replace(new RegExp(/\'/g), "\\'");
var udiscut = '<a href="'+wgServer+'/wiki/Discussioni utente:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">D</a>';
var ucontrib = '<a href="javascript:;" onClick="liveContrib(\''+utilde+'\');" style="color:#43CD80">C</a>';
var uadmin = '';
if (lrcAdmin == true) {
uadmin = ' • <a href="'+wgServer+'/wiki/Speciale:Blocca/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>';
}
var ueditor = '<a href="'+wgServer+'/wiki/Utente:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>';
var ligne = '<span id="revoc-' + timestamp + '"><small>' + tsToHhMm(timestamp) + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • </small>' + ueditor + ' (' + lstRevoc[user].nb + ' '+lang_menu[0].XTIMES+')</span><br />';
tempAr.push(ligne);
}
tempAr.sort();
var lvRevoc = document.getElementById('liveRevoc');
lvRevoc.innerHTML = "";
var len = tempAr.length;
for (var n=len-1; n>=0; n--)
lvRevoc.innerHTML += tempAr[n];
}
 
function getRevision(flags2) {
 
var match, regex = new RegExp(), regex2 = new RegExp();
 
var flags;
flagNew = flags2.flagNew;
flagTitle = flags2.flagTitle;
flagRcid = flags2.flagRcid;
flagPageid = flags2.flagPageid;
flagRevid = flags2.flagRevid;
flagOld_revid = flags2.flagOld_revid;
flagUser = flags2.flagUser;
flagToken = flags2.flagToken;
 
regex.compile(/\'/g);
regex2.compile(/\"/g);
var escTitle = flagTitle.replace(regex, "\\'");
var diffEscTitle = escTitle.replace(regex2, '\%22');
var escUser = flagUser.replace(regex, "\\'");
 
liveDiff(flagTitle, flagRevid, flagOld_revid, flagRcid);
// BLACK LIST //
//////////////////
if (lstContact[flagUser]) {
//2DO: background color the diff
td2.style.border = "2px solid gold";
td2.style.backgroundColor = "yellow";
}
 
// IPCLASS LIST //
//////////////////
for (var IPclass in lstIPClass) {
if (user.indexOf(IPclass)==0) {
//2DO: background color the diff
td2.style.border = "2px solid gold";
td2.style.backgroundColor = "yellow";
IPclassMitigating = true;
}
}
}
 
// Get RC and Log
function getRC(xmlreq, data) {
 
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;
i = random (rcs.length);
 
var flags;
flags.flagNew = rcs[i].getAttribute('new');
flags.flagTitle = rcs[i].getAttribute('title');
flags.flagRcid = rcs[i].getAttribute('rcid');
flags.flagPageid = rcs[i].getAttribute('pageid');
flags.flagRevid = rcs[i].getAttribute('revid');
flags.flagOld_revid = rcs[i].getAttribute('old_revid');
flags.flagUser = rcs[i].getAttribute('user');
flags.flagToken = rcs[i].getAttribute('patroltoken');
var IPclassMitigating = false;
for (var IPclass in lstIPClass)
if (flagUser.indexOf(IPclass)==0)
IPclassMitigating = true;
 
var mitigating = (lstContact[flagUser]) || (IPclassMitigating == true);
 
if (lstHidden[flagUser] || (flagUser == wgUserName))
liveRC(); // take another diff, discard this
else
getRevision(flags); // operate on this diff
}
 
function liveRC() {
 
var rcns = document.getElementById('showNS0').value;
if (rcns == null) return;
 
var rcShow = "&rcshow=";
var rcIP = "";
if (document.getElementById('shidIP').checked &&
!document.getElementById('shidReg').checked )
rcShow += 'anon|';
else if (!document.getElementById('shidIP').checked &&
document.getElementById('shidReg').checked )
rcShow += '!anon|';
 
if (!document.getElementById('shidBot').checked)
rcShow += '!bot|';
if (!document.getElementById('shidMm').checked)
rcShow += '!minor|';
 
if (!document.getElementById('shidPatrol').checked)
rcShow += '!patrolled|';
rcShow = rcShow.substr(0,rcShow.length - 2)
wpajax.http({url:wgServer + wgScriptPath
+ '/api.php?action=query&list=recentchanges&rcnamespace=' + rcns
+ '&rcprop=user|title|ids' + rcshow
+ '&format=xml',
onSuccess: getRC, message: "Elaborazione in corso...\n\n" });
}
 
function hideUser(name) {
lstHidden[name] = true;
updateHidden();
}
 
function unhideUser(name) {
delete lstHidden[name];
updateHidden();
}
 
addOnloadHook(function () {
if (wgTitle == "Monobook.js/E-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 checkBoxes = document.getElementById( 'checkBoxes' );
//checkIP (default = checked)
if (typeof(checkIP)!="undefined" && checkIP == "0")
checkBoxes.innerHTML += '<input id="shidIP" type="checkbox" />';
else
checkBoxes.innerHTML += '<input id="shidIP" type="checkbox" checked />';
checkBoxes.innerHTML += '<label for="shidRC">' + lang_menu[0].IPLABEL + '</label><br/>';
//checkRegistrati (default = checked)
if (typeof(checkRegistrati)!="undefined" && checkRegistrati == "0")
checkBoxes.innerHTML += '<input id="shidReg" type="checkbox" />';
else
checkBoxes.innerHTML += '<input id="shidReg" type="checkbox" checked />';
checkBoxes.innerHTML += '<label for="shidReg">' + lang_menu[0].REGLABEL + '</label><br/>';
//checkBot (default = not checked)
if (typeof(checkBot)!="undefined" && checkBot == "1")
checkBoxes.innerHTML += '<input id="shidBot" type="checkbox" checked />';
else
checkBoxes.innerHTML += '<input id="shidBot" type="checkbox" />';
checkBoxes.innerHTML += '<label for="shidBot">' + lang_menu[0].BOTLABEL + '</label><br/>';
//checkModificheMinori (default = checked)
if (typeof(checkModificheMinori)!="undefined" && checkModificheMinori == "1")
checkBoxes.innerHTML += '<input id="shidMm" type="checkbox" />';
else
checkBoxes.innerHTML += '<input id="shidMm" type="checkbox" checked />';
checkBoxes.innerHTML += '<label for="shidMm">' + lang_menu[0].MMLABEL + '</label><br/>';
//checkPatrolled (default = not checked)
if (typeof(checkPatrolled)!="undefined" && checkPatrolled == "1")
checkBoxes.innerHTML += '<input id="shidPatrol" type="checkbox" checked />';
else
checkBoxes.innerHTML += '<input id="shidPatrol" type="checkbox" />';
checkBoxes.innerHTML += '<label for="shidPatrol">' + lang_menu[0].PATROLLABEL + '</label><br/>';
checkBoxes.innerHTML += '<span id="selectNS" />';
 
//Get contact list from property file
var _lstContact = lstContact;
var _len = lstContact.length;
lstContact = new Array();
for (var _i=0; _i<_len; _i++)
lstContact[_lstContact[_i]] = { ts: 0 };
 
//Get IPclass list from property file
var _lstIPClass = lstIPClass;
var _len = lstIPClass.length;
lstIPClass = new Array();
for (var _i=0; _i<_len; _i++)
lstIPClass[_lstIPClass[_i]] = { ts: 0 };
 
//Get trusted list from property file
var _lstHidden = lstHidden;
var _len = lstHidden.length;
lstHidden = new Array();
for (var _i=0; _i<_len; _i++)
lstHidden[_lstHidden[_i]] = { ts: 0 };
updateHidden();
liveNS();
 
}
});
 
/* </source> */