(no commit message)
[euphorik.git] / js / pageMinichat.js
index 3093807..60c3a64 100755 (executable)
@@ -205,10 +205,9 @@ PageMinichat.prototype.envoyerMessage = function(pseudo, message)
          data : this.util.xmlVersAction(this.getXMLMessage(pseudo, message, repondA)),\r
          dataType : "xml",\r
          success : function(data, textStatus)\r
-         {\r
-            // TODO : traiter les erreurs\r
-            //alert(data)\r
-            jQuery("form input.message").val("")\r
+         {
+            if(jQuery("statut", data.documentElement).text() == "ok")\r
+               jQuery("form input.message").val("")\r
          }\r
       }\r
    )
@@ -306,6 +305,29 @@ Message.prototype.afficherConversation = function(messages)
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
+/**
+  * Représente une conversation.
+  */
+function Conversation()
+{
+   this.messages = new Array()
+   this.messagesParId = new Object()
+   
+   this.idDernierMesssage = null // la racine de la conversation (string), null = conversation principale
+
+   this.page = 1 // par défaut on se trouve sur la première page
+}
+
+Conversation.prototype.ajouterMessage = function(message)
+{
+   this.messages.push(message)
+   this.messagesParId[message.id] = message
+   if (this.messages.length > this.nbMessageMax)
+      delete this.messagesParId[this.messages.shift().id]   
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
 /**
   * Représente l'ensemble des messages affichés.
   */
@@ -314,13 +336,11 @@ function Messages(client, formateur, util)
    this.client = client
    this.formateur = formateur
    this.util = util
+   
+   this.conversations = new Array() // les conversations, la première représente la conversation principale
+   this.conversations[0] = new Conversation()
 
-   this.nbMessageMax = conf.nbMessageAffiche // Le nombre de message affiché par page
    this.idDernierMesssage = null // l'id du dernier message connu
-   this.page = 1 // par défaut on se trouve sur la première page
-   
-   this.messages = new Array()
-   this.messagesParId = new Object()
    
    // l'objet XMLHttpRequest représentant la connexion d'attente
    this.attenteCourante = null
@@ -353,13 +373,28 @@ Messages.prototype.getXMLrafraichirMessages = function()
    }
    
    var nodeNombreMessage = XMLDocument.createElement("nombreMessage")
-   nodeNombreMessage.appendChild(XMLDocument.createTextNode(this.nbMessageMax))
+   nodeNombreMessage.appendChild(XMLDocument.createTextNode(conf.nbMessageAffiche))
    XMLDocument.documentElement.appendChild(nodeNombreMessage)
    
    var nodePage = XMLDocument.createElement("page")
-   nodePage.appendChild(XMLDocument.createTextNode(this.page))
+   nodePage.appendChild(XMLDocument.createTextNode(this.conversation[0].page))
    XMLDocument.documentElement.appendChild(nodePage)
    
+   // les conversations
+   for (var i = 1; i < this.conversations.length; i++)
+   {
+      var nodeConversation = XMLDocument.createElement("conversation")
+      XMLDocument.documentElement.appendChild(nodeConversation)
+      
+      var nodeRacine = XMLDocument.createElement("racine")
+      nodeRacine.appendChild(XMLDocument.createTextNode(this.conversation.racine))
+      nodeConversation.appendChild(nodeRacine)
+      
+      var nodePageConv = XMLDocument.createElement("page")
+      nodePageConv.appendChild(XMLDocument.createTextNode(this.conversation.page))
+      nodeConversation.appendChild(nodePageConv)
+   }
+   
    return XMLDocument;
 }
 
@@ -368,9 +403,10 @@ Messages.prototype.getXMLrafraichirMessages = function()
   * Les message sont données dans l'ordre de leur id.
   * Met directement à jour l'affichage.
   * @param element un element xml représentant le message
+  * @param numConversation le numéro de la conversation, 0 = principale
   * @param autoFlush si oui alors le message est directement ajouté à la vue
   */
-Messages.prototype.ajouterMessage = function(element, autoFlush)
+Messages.prototype.ajouterMessage = function(element, numConversation, autoFlush)
 {
    if (autoFlush == undefined) autoFlush = true // valeur par défaut
 
@@ -390,15 +426,19 @@ Messages.prototype.ajouterMessage = function(element, autoFlush)
    message.systeme = jQuery("systeme", element).text() == "true" 
    message.setRepondA(jQuery("repondA", element))
    
-   this.messages.push(message)
-   this.messagesParId[message.id] = message
-   if (this.messages.length > this.nbMessageMax)
-      delete this.messagesParId[this.messages.shift().id]
+   if (this.conversations[numConversation] == null)
+      this.conversations[numConversation] = new Conversation()
+      
+   this.conversations[numConversation].ajouterMessage(message)
 
    if (autoFlush)
       this.flush()   
 }
 
+
+// <<< TODO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+
 Messages.prototype.flush = function()
 {
    var thisMessages = this
@@ -523,6 +563,7 @@ Messages.prototype.rafraichirMessages = function(vider)
    var thisMessages = this // caisupair javacrypte\r
       
    //this.util.log(this.util.serializer.serializeToString(this.getXMLrafraichirMessages()))   
+   //alert(this.util.xmlVersAction(this.getXMLrafraichirMessages()).action)
    this.attenteCourante = jQuery.ajax({
          type: "POST",
          url: "request",