FIX il manquait le dernier message à l'affichage (problème dans euphorik_minichat_con...
[euphorik.git] / js / pageMinichat.js
index 454b357..f6b73c0 100755 (executable)
@@ -103,8 +103,8 @@ PageMinichat.prototype.charger = function()
 
 PageMinichat.prototype.decharger = function()
 {
-   if (this.attenteCourante != null)
-      this.attenteCourante.abort()
+   //alert(this.attenteCourante)
+   this.messages.stopAttenteCourante()
 }
 
 PageMinichat.prototype.getXMLMessage = function(pseudo, message, repondA)
@@ -140,7 +140,9 @@ PageMinichat.prototype.getXMLMessage = function(pseudo, message, repondA)
 }
 
 PageMinichat.prototype.envoyerMessage = function(pseudo, message)
-{\r
+{
+   var thisPageMinichat = this
+\r
    // (un pseudo vide est autorisé)
    pseudo = this.formateur.filtrerInputPseudo(pseudo)
 
@@ -152,15 +154,6 @@ PageMinichat.prototype.envoyerMessage = function(pseudo, message)
       for(var i = 0; i < tags.length; i++)
          repondA.push(/\{(.*?)\}>/.exec(tags[i])[1])
       message = message.replace(this.regexMessageTagReplace, "")
-            
-      // met à jour la classe des messages auquel repond celui ci (c'est un peu de la triche)
-      for (var i = 0; i < repondA.length; i++)
-      {
-         jQuery("#conversation div#" + repondA[i]).addClass("repondu")
-         for (var c = 0; c < this.messages.conversations.length; c++)
-            for (var m = 0; m < this.messages.conversations[c].messages.length; m++)
-               this.messages.conversations[c].messages[m].clientARepondu = true
-      }
    }\r
    \r
    message = message.trim()\r
@@ -185,8 +178,21 @@ PageMinichat.prototype.envoyerMessage = function(pseudo, message)
          dataType : "xml",\r
          success : function(data, textStatus)\r
          {
-            if(jQuery("statut", data.documentElement).text() == "ok")\r
-               jQuery("form input.message").val("")\r
+            if(jQuery("statut", data.documentElement).text() == "ok")
+            {\r
+               jQuery("form input.message").val("")
+                        
+               // met à jour la classe des messages auquel repond celui ci (c'est un peu de la triche)
+               for (var i = 0; i < repondA.length; i++)
+               {
+                  jQuery("#conversations div#" + repondA[i]).addClass("repondu")
+                  /* Ca sert à rien, TODO : tester/virer
+                  for (var c = 0; c < thisPageMinichat.messages.conversations.length; c++)
+                     for (var m = 0; m < thisPageMinichat.messages.conversations[c].messages.length; m++)
+                        thisPageMinichat.messages.conversations[c].messages[m].clientARepondu = true
+                  */
+               }
+            }\r
          }\r
       }\r
    )
@@ -302,6 +308,8 @@ function Conversation(num, util, formateur)
    this.formateur = formateur
    this.messages = new Array()
    this.messagesParId = new Object()
+   
+   this.nbMessageMax = conf.nbMessageAffiche // Le nombre de message affiché par page
 
    jQuery("#conversations").append(
       '<div id="' + this.getId() + '" class="conversation">\
@@ -450,8 +458,9 @@ Conversation.prototype.flush = function(funClickExtract, funClickLienConv)
    
    // enlève les messages exedentaires
    var nbMessagesAffiche = jQuery("#conversations #" + this.getId() + " .message").size()
+   
    if (nbMessagesAffiche > this.nbMessageMax)
-      jQuery("#conversations #" + this.getId() + " .message").slice(this.nbMessageMax, nbMessagesAffiche).empty();
+      jQuery("#conversations #" + this.getId() + " .message").slice(this.nbMessageMax, nbMessagesAffiche).empty()
 
    // Ajoute les événements liés à chaque message
    jQuery("#conversations #" + this.getId() + " .message").filter(function(){return parseInt(jQuery(this).attr("id"), 36) > parseInt(idDernierMessageAffiche, 36)}).each(
@@ -753,6 +762,15 @@ Messages.prototype.viderMessages = function()
       this.conversations[i].viderMessages()
 }
 
+/**
+  * Arrete l'attente courante s'il y en a une.
+  */
+Messages.prototype.stopAttenteCourante = function()
+{
+   if (this.attenteCourante != null)
+      this.attenteCourante.abort()   
+}
+
 /**
   * Met à jour les messages de manière continue.
   * (AJAX-Comet-style proof)
@@ -762,16 +780,15 @@ Messages.prototype.rafraichirMessages = function(vider)
 {
    var thisMessages = this // caisupair javacrypte
    
-   if (this.attenteCourante != null)
-      this.attenteCourante.abort()
-   
    if (vider == undefined)
       vider = false
+      
+   this.stopAttenteCourante()
    
    if (vider)
       this.idDernierMessage = null\r
       
-   this.util.xmlVersAction(this.getXMLrafraichirMessages()).action.dump("Client")
+   ;;; this.util.xmlVersAction(this.getXMLrafraichirMessages()).action.dump("Client")
    this.attenteCourante = jQuery.ajax({
          type: "POST",
          url: "request",
@@ -780,7 +797,7 @@ Messages.prototype.rafraichirMessages = function(vider)
          success:
             function(data)
             {            \r
-               thisMessages.util.serializer.serializeToString(data).dump("Serveur")\r
+               ;;; thisMessages.util.serializer.serializeToString(data).dump("Serveur")\r
             
                if (vider)
                   thisMessages.viderMessages()