Utilisateur:Dr Brains/SuiviRC.js
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*
mw.config.get('wgServer') + '/w/api.php?action=query&list=recentchanges&rcnamespace=0&rclimit=499&rctype=edit&rcshow=!patrolled&rcprop=user|comment|timestamp|title|ids'
*/
document.write('<style type="text/css">');
document.write('#SuiviRC_Div {font-size:80%;height:80px;overflow-y:auto;margin-right:-1em;}');
document.write('</style>');
$(SuiviRC);
if(mw.config.get('wgUserGroups').indexOf('sysop')!=-1){
var SuiviRC_APILimit = 4999;
}else{
var SuiviRC_APILimit = 499;
}
function SuiviRC(){
var TB = document.getElementById('p-tb');
var PortletSuivi = document.createElement('div');
PortletSuivi.className="portlet";
var H5Suivi = document.createElement('h5');
H5Suivi.innerHTML = '<a href="javascript:SuiviRC_getRC();" title="Mettre à jour" >RC</a>';
PortletSuivi.appendChild(H5Suivi);
var pBodySuivi = document.createElement('div');
pBodySuivi.className="pBody";
PortletSuivi.appendChild(pBodySuivi);
var CadreSuivi = document.createElement('div');
CadreSuivi.id="SuiviRC_Div";
pBodySuivi.appendChild(CadreSuivi);
TB.parentNode.insertBefore(PortletSuivi, TB);
SuiviRC_getRC();
}
var SuiviRC_pages = new Array();
var SuiviRC_pagesCount = 0;
var SuiviRC_Timestamp = '';
var SuiviRC_MinimumChanges = 4;
function SuiviRC_getRC(){
var NouvelleRequete = new XMLHttpRequest()
var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=recentchanges&rcnamespace=0&rclimit='+SuiviRC_APILimit+'&rctype=edit&rcshow=!patrolled&rcprop=user|comment|timestamp|title|ids';
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.send(null);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
var ElementTraitement = document.createElement('div');
ElementTraitement.innerHTML = NouvelleRequete.responseText;
//document.body.insertBefore(ElementTraitement,document.body.firstChild);
var Informations = ElementTraitement.getElementsByTagName('span');
for(a=0;a<Informations.length;a++){
var ContenuInformation = Informations[a].innerHTML;
if(ContenuInformation.indexOf('title=')!=-1){
var TitrePage = ContenuInformation.split('title="')[1].split('"')[0];
while(TitrePage.indexOf('&#039;')!=-1){
TitrePage = TitrePage.split('&#039;').join("'");
if(TitrePage.indexOf('&#039;')==-1) break;
}
SuiviRC_pages[SuiviRC_pagesCount] = TitrePage;
SuiviRC_pagesCount++
}
if(ContenuInformation.indexOf('rcstart=')!=-1){
SuiviRC_Timestamp = ContenuInformation.split('rcstart="')[1].split('"')[0];
}
}
SuiviRC_printRC();
}
}
}
function SuiviRC_printRC(){
SuiviRC_pagesCount = 0;
var SuiviRC_RencentChanges = new Array();
var SuiviRC_RencentChangesCount = 0;
var RecentChanges = SuiviRC_pages.sort();
var MemePage = 1;
for(a=0;a<RecentChanges.length;a++){
if(RecentChanges[a]==RecentChanges[(a+1)]){
MemePage++
RecentChanges[a] = false;
}else{
if(MemePage<SuiviRC_MinimumChanges){
RecentChanges[a] = false;
}else{
var zeroPage = ""
if(MemePage<1000)zeroPage += "0";
if(MemePage<100)zeroPage += "0";
if(MemePage<10)zeroPage += "0";
SuiviRC_RencentChanges[SuiviRC_RencentChangesCount] = '(' + zeroPage + MemePage + ') <a href="' + mw.config.get('wgServer') + '/wiki/' + RecentChanges[a] + '">' + RecentChanges[a] + '</a> (<a href="' + mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + RecentChanges[a] + '&action=history">hist</a>)';
SuiviRC_RencentChangesCount++
}
MemePage = 1;
}
}
var List = document.getElementById('SuiviRC_Div');
while (List.firstChild){ List.removeChild(List.firstChild); }
List.innerHTML += '<ul>';
SuiviRC_RencentChanges = SuiviRC_RencentChanges.sort();
var MaxLength = (SuiviRC_RencentChanges.length-1);
for(a=MaxLength;a>0;a--){
if(SuiviRC_RencentChanges[a]!=false){
List.innerHTML += '<li>' + SuiviRC_RencentChanges[a] + '</li>';
}
}
List.innerHTML += '</ul>';
setTimeout("SuiviRC_getRC()",100*1000);
}