Utilisateur:Althiphika/NewMessages.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./* {{Projet:JavaScript/Script|NewMessage}} */
// <source lang=javascript><pre><nowiki>
// /////////////////////////////////////////////////////////////////// VARIABLES : Pages à surveiller
if(typeof(NewMessage_PagesASurveiller)=="undefined"){
var NewMessage_PagesASurveiller = new Array();
NewMessage_PagesASurveiller.push("Discussion utilisateur:Althiphika/Parrainage/Watever");
}
// /////////////////////////////////////////////////////// MISE A JOUR DU COOKIE
function NewMessage_setCookie (cookieName, cookieValue) {
var now = new Date();
var nextYear = new Date(now.getTime() + 1000 * 60 * 60 * 24 * 365 );
document.cookie = escape(cookieName) + '=' + escape(cookieValue) + '; EXPIRES=' + nextYear.toGMTString() + "; PATH=/" ;
}
// /////////////////////////////////////////////////////// INTERROGATION DU COOKIE
function NewMessage_getCookie(cookieName) {
var cookieValue = "null";
var posName = document.cookie.indexOf(escape(cookieName) + '=' );
if (posName != -1) {
var posValue = posName + (escape(cookieName) + '=' ).length;
var endPos = document.cookie.indexOf(';', posValue) ;
if (endPos != -1) {
cookieValue = unescape(document.cookie.substring(posValue, endPos));
} else {
cookieValue = unescape(document.cookie.substring(posValue));
}
}
return decodeURIComponent(cookieValue);
}
// /////////////////////////////////////////////////////////////////// LANCEMENT
$(NewMessage);
// /////////////////////////////////////////////////////////////////// RECHERCHE OLDID ACTUEL
function NewMessage(position){
if(!position) position = 0;
var Page = NewMessage_PagesASurveiller[position];
if(!Page) return;
var LastOldid = "prev";
var LastOldidCookie = NewMessage_getCookie("NewMessage" + Page.replace(/ /g,"_").replace(/:/g,"DEUXPOINT"));
if((LastOldidCookie!=false)&&(LastOldidCookie!='')&&(LastOldidCookie!="null")&&(LastOldidCookie!=null)&&(LastOldidCookie!="undefined")) LastOldid = LastOldidCookie;
var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&prop=revisions&titles=' + Page;
var NouvelleRequete = new XMLHttpRequest();
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState != 4 ) return;
var ObjetXML = NouvelleRequete.responseXML;
if(ObjetXML==null){
NewMessage((position+1));
return;
}
var PageInfos = ObjetXML.getElementsByTagName('rev')[0];
if(!PageInfos){
NewMessage((position+1));
return;
}
var NewOldid = PageInfos.getAttribute('revid');
if(NewOldid!=LastOldid){
if(mw.config.get('wgPageName').replace(/_/g," ") == Page){
NewMessage_setCookie("NewMessage" + Page.replace(/ /g,"_").replace(/:/g,"DEUXPOINT") , NewOldid);
}else{
var User = PageInfos.getAttribute('user');
var Date = NewMessage_ManageTimestamp(PageInfos.getAttribute('timestamp'));
NewMessage_AjoutBandeau(position, LastOldid, NewOldid, User, Date);
}
}
NewMessage((position+1));
}
NouvelleRequete.send(null);
}
var NewMessage_ArticlePath = mw.config.get('wgArticlePath').split('$1').join('');
var NewMessage_MessageTemplate = '<table width="100%" style="background:none"><tr><td width="30px" valign="middle"><img height="25" width="25" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Nuvola_apps_email.png/25px-Nuvola_apps_email.png" alt="Nuvola apps email.png"></td><td><span style="float:right;"><small><sub><a href="javascript:NewMessage_MiseAJourCookie($0, $3);" title="Mettre à jour cette notification">RAZ</a></sub></small></span>Vous avez de nouveaux messages sur la page <a href="'+mw.config.get('wgServer') + '/wiki/$1" title="$1" >$1</a> <sup>(<a href="' + mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=$1&action=history" title="Historique de $1" >hist</a>|<a href="' + mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=$1&diff=$3&oldid=$2" title="Dernières modifications de $1" >diff</a>)</sup><br/> <small>Dernière modification par <a href="'+mw.config.get('wgServer')+NewMessage_ArticlePath+mw.config.get('wgFormattedNamespaces')[2]+':$4" title="'+mw.config.get('wgFormattedNamespaces')[2]+':$4">$4</a> (<a href="'+mw.config.get('wgServer')+NewMessage_ArticlePath+mw.config.get('wgFormattedNamespaces')[3]+':$4" title="'+mw.config.get('wgFormattedNamespaces')[3]+':$4">d</a>) le $5</small></td></tr><table>';
// /////////////////////////////////////////////////////////////////// INSERTION BANDEAU
function NewMessage_AjoutBandeau(position, LastOldid, NewOldid, User, Date){
var Content = document.getElementById('bodyContent'); // monobook, myskin, chick, simple, vector
if(!Content) Content = document.getElementById('article'); // cologneblue, nostalgia, standard
if(!Content) Content = document.getElementById('mw_contentholder'); // modern
if(!Content) return;
var MessageContent = NewMessage_MessageTemplate;
MessageContent = MessageContent.split('$0').join(position);
MessageContent = MessageContent.split('$1').join(NewMessage_PagesASurveiller[position]);
MessageContent = MessageContent.split('$2').join(LastOldid);
MessageContent = MessageContent.split('$3').join(NewOldid);
MessageContent = MessageContent.split('$4').join(User);
MessageContent = MessageContent.split('$5').join(Date);
var Div = document.createElement('div');
Div.className = "usermessage";
Div.id = "usermessage_" + position;
Div.innerHTML = MessageContent;
Content.parentNode.insertBefore(Div, Content);
}
function NewMessage_MiseAJourCookie(position, NewOldid){
var Page = NewMessage_PagesASurveiller[position];
if(Page){
var CookieName = "NewMessage" + Page.replace(/ /g,"_").replace(/:/g,"DEUXPOINT")
NewMessage_setCookie(CookieName , NewOldid);
}
var DivMessage = document.getElementById("usermessage_" + position);
if(DivMessage){
DivMessage.style.display = "none";
}
}
////////////////////////// DÉCODAGE TIMESTAMP
function NewMessage_ManageTimestamp(TimeStamp){
if(!TimeStamp) return false;
var DateUgly = TimeStamp.replace(/Z/g, "").split("T")[0];
var Time = TimeStamp.split("T")[1].replace(/Z/g, "");
var Date = DateUgly.split("-");
var Year = Date[0];
var Month = Date[1];
var Day = Date[2];
var Text = Day + "/" + Month + "/" + Year + " à " + Time;
return Text;
}
//</nowiki></pre></source>