ADD ajout d'une version de protocole, chaque message du client est taggé avec la...
[euphorik.git] / js / pageMinichat.js
index 8586bb5..2de1531 100755 (executable)
@@ -174,7 +174,7 @@ PageMinichat.prototype.getJSONMessage = function(pseudo, message)
       repondA.push(parseInt(id)) // FIXME : une propriété ne peut pas être de type int ?
       
    return {
-      "action" : "put_message",
+      "header" : { "action" : "put_message", "version" : conf.versionProtocole },
       "cookie" : this.client.cookie,
       "nick" : pseudo,
       "content" : message,
@@ -437,8 +437,8 @@ function Conversation(num, util, formateur, client)
    this.client = client
    this.idDernierMessageAffiche = 0
    
-   this.messages = new Array()
-   this.messagesParId = new Object()
+   this.messages = []
+   this.messagesParId = {}
    
    this.nbMessageMax = conf.nbMessageAffiche // Le nombre de message affiché par page
 
@@ -472,11 +472,11 @@ Conversation.prototype.colorerEntetes = function()
    for (var i = 0; i < this.messages.length; i++)
    {
       if (this.messages[i].appartientAuClient)
-         messagesProprietaire += "#" + this.messages[i].getId() + ","
+         messagesProprietaire += "#" + this.messages[i].getId(this.getId()) + ","
       else if (this.messages[i].clientARepondu)
-         messagesRepondu += "#" + this.messages[i].getId() + ","
+         messagesRepondu += "#" + this.messages[i].getId(this.getId()) + ","
       else if (this.messages[i].estUneReponse)
-         messagesReponse += "#" + this.messages[i].getId() + ","
+         messagesReponse += "#" + this.messages[i].getId(this.getId()) + ","
    }
    $(messagesReponse).addClass("reponse")
    $(messagesRepondu).addClass("repondu")
@@ -579,6 +579,11 @@ Conversation.prototype.viderMessages = function()
    $("#conversations #" + this.getId() + " .message").remove()
 }
 
+Conversation.prototype.idMessageFromString = function(idString)
+{
+   return parseInt(idString.substr(4 + this.getId().length), 36)
+}
+
 /**
   * Après l'ajout d'un ou plusieurs message cette méthode est appelée afin
   * d'afficher les messages non-affichés.
@@ -600,7 +605,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage)
    for (var i = 0; i < this.messages.length; i++)
       if (this.messages[i].id > this.idDernierMessageAffiche)
       {
-         XHTML += this.messages[i].XHTML(messagePair)
+         XHTML += this.messages[i].XHTML(messagePair, this.getId())
          messagePair = !messagePair
       }
    
@@ -613,7 +618,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage)
             {          
                // FIXME : ya pas mieux ?
                var racine = $(event.target).text()
-               funClickOuvrirConv(parseInt(racine.substring(1, racine.length - 1), 36))
+               funClickOuvrirConv(parseInt(idString.substring(1, racine.length - 1), 36))
                return false
             }
          )         
@@ -622,7 +627,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage)
          thisConversation.util.infoBulle("Extraction de la conversation complète", $(".extraireCompletement", this))
          
          // l'id du message
-         var idMess = parseInt($(this).attr("id").substr(4), 36)
+         var idMess = thisConversation.idMessageFromString($(this).attr("id"))
          
          $(this).click(
             function(event)
@@ -674,7 +679,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage)
             $(".pseudo", this).hover(
                function(e)
                {     
-                  var userId =  parseInt($(".id", this).text())
+                  var userId = parseInt($(".id", this).text())
                   var element = $(this)
                   var h = element.height()
                   var offset = element.offset()
@@ -730,6 +735,8 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage)
   */
 Conversation.prototype.afficherConversation = function(id)
 {   
+   var thisConversation = this
+    
    var message = this.messagesParId[id]
    if (message == undefined) return
       
@@ -740,7 +747,7 @@ Conversation.prototype.afficherConversation = function(id)
       function()
       {
          var jq = $(this)
-         var statut = mess[parseInt(jq.attr("id").substr(4), 36)]
+         var statut = mess[thisConversation.idMessageFromString(jq.attr("id"))]
          if (statut == undefined)
             jq.addClass("cache")
          else
@@ -822,6 +829,10 @@ Messages.prototype.toggleMessageRepond = function(mess)
   */
 Messages.prototype.enleverMessagesRepond = function()
 {
+   for (var messId in this.messagesRepond)
+      this.enleverMessageRepond(this.messagesRepond[messId])
+    
+   // on réinitialise pour être sur que tout est bien enlevé
    this.messagesRepond = {}
    $("#conversations div.message").removeClass("repondEnEvidence")
    $("form#posterMessage #repondA .messages").empty()
@@ -832,7 +843,6 @@ Messages.prototype.enleverMessagesRepond = function()
   */
 Messages.prototype.enleverMessageRepond = function(mess)
 {
-    console.log(mess)
    $("#" + mess.getId()).removeClass("repondEnEvidence")
    $("#" + mess.getId(this.prefixIdMessage)).remove()
    delete this.messagesRepond[mess.id]
@@ -1105,6 +1115,8 @@ Messages.prototype.flush = function(numConv)
       {
          // met ou enlève la mise en evidence du message
          thisMessages.toggleMessageRepond(Mess)
+         // donne le focus à la ligne de saisie
+         $("form input.message").focus()
       }
    )
 }