Utilisateur:STyx/monobook.js/messagerie.js

Une page de Wikipédia, l'encyclopédie libre.
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) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/*</pre>
==Messagerie==
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===
objets Ajax et cookies pour lecture des messages
<source lang="javascript">*/
 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>');
/*</source>

===getArticleName()===
<source lang="javascript">*/
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
}/*</source>

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

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

===getMessages()===
<source lang="javascript">*/
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);
  }
}
/*</source>

===checkPagesForMessages()===
<source lang="javascript">*/
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());
}
/*</source>

===checkPageForMessages()===
<source lang="javascript">*/
function checkPageForMessages(page) {
  if (typeof objAJAX === 'undefined') {
	return
  }
  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));
}
/*</source>

===alertMessage()===
<source lang="javascript">*/
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"));
}
/*</source>

===Message()===
<source lang="javascript">*/
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;
}
/*</source>

===Debug()===
<source lang="javascript">*/
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;
}
/*</source>

===Main===
<source lang="javascript">*/
$(getMessages);
$(checkPagesForMessages);
/*</source><pre>*/