/*

Messagerie

modifier

Amélioration de la messagerie. Voir aussi Utilisateur:Céréales Killer/monobook.js (auteur Gôtô)

Ce système fonctionne correctement avec Firefox. En revanche, cela ne fonctionne pas avec Internet Explorer (le message perdure).

objets Ajax

modifier

objets Ajax et cookies pour lecture des messages

*/
 document.write('<script type="text/javascript" src="' 
             + 'http://fr.wikipedia.org/w/index.php?title=Utilisateur:GôTô/objects.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
/*

getArticleName()

modifier
*/
function getArticleName()
{
  var strOut = document.title
  // case search
  if (strOut == "Rechercher - Wikipédia") return document.getElementById("lsearchbox").value
  // case article being modified
  strOut = strOut.replace("modification de ", "").replace(" - Modifier", "")

  strOut = strOut.replace(" - Prévisualiser", "").replace(" - Wikipédia", "")
  return strOut
}/*

getCookieTag()

modifier
*/
function getCookieTag(page) {
  return (page.charAt(0)+"_"+encodeURIComponent(page.split("Utilisateur:" + mw.config.get('wgUserName') + "/")[1]).replace(/%20/g, "_")+"_oldid");
}
/*

getCurrentId()

modifier
*/
function getCurrentId(page) {
  var li = document.getElementById("t-permalink");
  if (li) return (li.getElementsByTagName("a")[0].href.split("oldid=")[1].split("&")[0]);
}
/*

getMessages()

modifier
*/
function getMessages() {
  var article = getArticleName();
  if (article.indexOf("Utilisateur:" + mw.config.get('wgUserName') + "/") > -1) {
    //first case: we are on a talk page of ours: we read and save the ''oldid'' in a cookie
    //Debug("cookies.set("+getCookieTag(article)+","+getCurrentId()+")");
    cookies.set(getCookieTag(article), getCurrentId(), 1000*3600*24*30);
  }
}
/*

checkPagesForMessages()

modifier
*/
function checkPagesForMessages() {
  //checkPageForMessages("Discussion_Utilisateur:STyx/Aide");
  //checkPageForMessages("Discussion_Utilisateur:STyx/Ce_Que_j'étais");
  var dNow = new Date();
  //checkPageForMessages("Discussion_Utilisateur:"  + mw.config.get('wgUserName') + "/" + (dNow.getFullYear()-1));
  checkPageForMessages("Discussion_Utilisateur:"  + mw.config.get('wgUserName') + "/" + dNow.getFullYear());
}
/*

checkPageForMessages()

modifier
*/
function checkPageForMessages(page) {
  var ajaxObj = new objAJAX();
  ajaxObj.page = encodeURI(page).replace(/'/g, "%27");
  ajaxObj.conn.onreadystatechange = function () {
    if (ajaxObj.conn.readyState == 4) {
      if (ajaxObj.conn.status == 200) {
        var lastViewedId = (cookies.get(getCookieTag(page)) ? cookies.get(getCookieTag(page)) : 0);
        //Debug("lastViewedId=cookies.get("+getCookieTag(page)+")="+ lastViewedId+"\n" );
        //Debug("ajaxObj.conn.responseText.split("+ajaxObj.page + "&amp;oldid=)[1]="+ajaxObj.conn.responseText.split(ajaxObj.page + "&amp;oldid=")[1]);
        //Debug("ajaxObj.conn.responseText="+ajaxObj.conn.responseText);
        var currentId = ajaxObj.conn.responseText.split(ajaxObj.page + "&amp;oldid=")[1].split('"')[0];
        //Debug("currentId ="+currentId);
        if (parseInt(currentId, 10) > parseInt(lastViewedId, 10))
          alertMessage(page);
      }
    }
  }
  return(ajaxObj.sendRequest("/w/index.php?title=" + ajaxObj.page + "&limit=1&action=history", "GET", true));
}
/*

alertMessage()

modifier
*/
function alertMessage(page) {
  var div = Message("Vous avez de nouveaux messages: ");
  var aDiff = document.createElement("a");
  aDiff.href = "/w/index.php?title=" + encodeURI(page).split("||")[0] + "&diff=cur";
  aDiff.innerHTML = "différences (" + page + ")";
  div.appendChild(aDiff);
  div.appendChild(document.createElement("br"));
}
/*

Message()

modifier
*/
function Message(str) {
  var div = document.getElementById("nouveauMessage");
  if (!div) {
    div = document.createElement("div");
    div.className = "usermessage";
    div.id = "nouveauMessage";
    var cont = document.getElementById("content");
    cont.insertBefore(div, document.getElementById("bodyContent"));
  }
  var txt = document.createTextNode(str);
  div.appendChild(txt);
  return div;
}
/*

Debug()

modifier
*/
function Debug(str) {
  var div = document.getElementById("Debug");
  if (!div) {
    div = document.createElement("div");
    div.className = "messagebox";
    var cont = document.getElementById("content");
    cont.insertBefore(div, document.getElementById("bodyContent"));
  }
  var txt = document.createTextNode(str);
  div.appendChild(txt);
  return div;
}
/*
*/
addOnloadHook(getMessages);
addOnloadHook(checkPagesForMessages);
/*
*/