ADD ajout du bannissement (pas fini)
[euphorik.git] / js / pageMinichat.js
index c118c54..2be7ca5 100755 (executable)
@@ -250,6 +250,7 @@ function Message(id, date, pseudo, login, contenu)
    this.appartientAuClient = false
    this.clientARepondu = false
    this.estUneReponse = false
+   this.ekMaster = false
    
    this.systeme = false // est-ce un message 'système' ?
    
@@ -353,11 +354,11 @@ function Conversation(num, util, formateur, client)
 }
 
 /**
-  * Défini les fonctions (callback) appelées lorsque l'on change de page.
+  * Défini la page courante et s'il l'on se trouve sur la dernière page.
   * @pageCourante la page courante
   * @dernierePage true si c'est la dernière page sinon false
   */
-Conversation.prototype.eventsPage = function(pageCourante, dernierePage)
+Conversation.prototype.setPage = function(pageCourante, dernierePage)
 {
    jQuery("#conversations #" + this.getId() + " .numPage").text(pageCourante)
    jQuery("#conversations #" + this.getId() + " .next").css("display", pageCourante == 1 ? "none" : "inline")
@@ -430,6 +431,9 @@ Conversation.prototype.ajouterMessage = function(message)
       delete this.messagesParId[this.messages.shift().id]
 }
 
+/**
+  * FIXME : méthode très lourde. ne serait-ce pas mieux de virer d'un coup l'élément conversation et d'en remettre un vide ?
+  */
 Conversation.prototype.viderMessages = function()
 {
    this.messages = new Array()
@@ -440,6 +444,7 @@ Conversation.prototype.viderMessages = function()
 /**
   * Après l'ajout d'un ou plusieurs message cette méthode est appelée afin
   * d'afficher les messages non-affichés.
+  * FIXME : méthode super lourde, à optimiser.
   * @param funClickExtract fonction (fun(numMess)) appellée lors du clic sur un bouton "extraire"
   */
 Conversation.prototype.flush = function(funClickOuvrirConv)
@@ -475,6 +480,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
                (this.messages[i].clientARepondu ? " repondu" : "") +
                (this.messages[i].estUneReponse ? " reponse" : "") +
                (this.messages[i].systeme ? " systeme" : "") +
+               (this.messages[i].ekMaster ? " ekMaster" : "") +
             "\">" +
                "<div class=\"extraire\">&gt;</div>" +
                "[<span class=\"date\">" + message.date + "</span>]" +
@@ -498,7 +504,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
    if (nbMessagesAffiche > this.nbMessageMax)
       jQuery("#conversations #" + this.getId() + " .message").slice(this.nbMessageMax, nbMessagesAffiche).empty()
 
-   // Ajoute les événements liés à chaque message
+   // ajoute les événements liés à chaque nouveau message
    jQuery("#conversations #" + this.getId() + " .message").filter(function(){return parseInt(jQuery(this).attr("id"), 36) > thisConversation.idDernierMessageAffiche}).each(
       function()
       {
@@ -649,12 +655,24 @@ Messages.prototype.getJSONConversations = function()
   * Ajoute un ensemble de messages puis les affiches.
   * @param elements un tableau d'éléments JSON représentant les messages, voir protocole.txt
   * @param numConversation le numéro de la conversation auquel appartiennent les messages
+  * @return true si les messages on été ajoutés, false si la conversation n'existe pas et qu'il n'y a pas de message
   */
 Messages.prototype.ajouterMessages = function(elements, numConversation)
 {
+   if (elements["messages"].length == 0 && typeof(this.conversations[numConversation]) == "undefined")
+      return false
+
    for (var i = 0; i < elements["messages"].length; i++)
       this.ajouterMessage(elements["messages"][i], numConversation)
    this.flush(numConversation)
+   
+   // renseigne la conversation sur la page courante et si c'est la dernière
+   this.conversations[numConversation].setPage(
+      numConversation == 0 ? this.client.pagePrincipale : this.client.conversations[numConversation - 1].page,
+      elements["last_page"]
+   )
+   
+   return true
 }
 
 /**
@@ -670,10 +688,6 @@ Messages.prototype.ajouterMessage = function(element, numConversation)
    // pas d'utilisation de jquery pour des raisons de performance
    var id = element["id"]
    
-   // Obsolète
-   /*if (this.idDernierMessage == null || id > this.idDernierMessage)
-      this.idDernierMessage = id*/
-   
    var message = new Message(
       id,      
       element["date"],
@@ -687,6 +701,7 @@ Messages.prototype.ajouterMessage = function(element, numConversation)
    message.estUneReponse = element["is_a_reply"]
    message.systeme = element["system"] 
    message.setRepondA(element["answer_to"])
+   message.ekMaster = element["ek_master"]
    
    if (this.conversations[numConversation] == null)
    {
@@ -700,7 +715,7 @@ Messages.prototype.ajouterMessage = function(element, numConversation)
          {
                thisPage.util.replaceSelection(
                   jQuery("form input.message")[0],
-                  "{" + thisMessages.client.conversations[num-1].root + "}"
+                  "{" + thisMessages.client.conversations[num-1].root.toString(36) + "}"
                )
          }
       )
@@ -857,16 +872,14 @@ Messages.prototype.rafraichirMessages = function(vider)
             // ajoute les messages reçus à leur conversation respective
             for (var numConv = 0; numConv < data["conversations"].length; numConv++)
             {
-               // ya pas de nouveaux message -> on passe à la prochaine conversation
-               if (data["conversations"][numConv]["messages"].length == 0) continue
-               
-               thisMessages.ajouterMessages(data["conversations"][numConv], numConv)
+               // ya pas de nouveaux message -> on passe à la prochaine conversation FIXME : marche pas
+               //if (data["conversations"][numConv]["messages"].length == 0) continue
                
-               // définit les événements liés à la conversation
-               thisMessages.conversations[numConv].eventsPage(
-                  numConv == 0 ? thisMessages.client.pagePrincipale : thisMessages.client.conversations[numConv - 1].page,
-                  data["conversations"][numConv]["last_page"]
-               )
+               if (! thisMessages.ajouterMessages(data["conversations"][numConv], numConv))
+               {
+                  thisMessages.util.messageDialogue("La conversation {" + thisMessages.client.conversations[numConv -1].root.toString(36) + "} n'existe pas")
+                  thisMessages.client.supprimerConversation(numConv - 1) 
+               }
             }
             
             // rappel de la fonction dans 100 ms