ADD gestion du fragment de url, voir #2
[euphorik.git] / js / pageMinichat / conversations.js
index b0eea99..ada8a24 100644 (file)
 /**\r
   * Représente l'ensemble des conversations affichés.\r
   */\r
-euphorik.Conversations = function(client, formateur, util) {\r
+euphorik.Conversations = function(client, formateur, util, fragment) {\r
    this.client = client;\r
    this.formateur = formateur;\r
    this.util = util;\r
+   this.fragment = fragment;\r
    \r
    // un ensemble des messages (id) auquel l'utilisateur répond (vider après l'envoie du message courant)\r
    this.messagesRepond = {};\r
@@ -56,6 +57,18 @@ euphorik.Conversations.prototype.toggleMessageRepond = function(mess) {
    this.ajouterMessageRepond(mess);\r
 };\r
 \r
+/**\r
+  * Met à jour le fragment de l'url renseignant sur les conversations ouvertes.\r
+  */\r
+euphorik.Conversations.prototype.mettreAJourFragment = function() {\r
+   conv = [];\r
+   for(var i = 1; i < this.conversations.length; i++) {\r
+       conv.push(this.conversations[i].racine.id)\r
+   }\r
+   this.fragment.setVal("conv", conv);\r
+   this.fragment.write();\r
+}\r
+\r
 /**\r
   * Enlève tous les messages auquel l'utilisateur souhaite répondre.\r
   */\r
@@ -207,10 +220,7 @@ euphorik.Conversations.prototype.ajouterMessages = function(elements, numConvers
    }\r
 \r
    for (var i = 0; i < elements.messages.length; i++) {\r
-      // si une nouvelle conversation a été créée alors on lui donne la racine\r
-      if (this.ajouterMessage(elements.messages[i], numConversation)) {\r
-         this.conversations[numConversation].setRacine(elements.first);\r
-      }\r
+      this.ajouterMessage(elements.messages[i], numConversation)\r
    }\r
          \r
    this.flush(numConversation);\r
@@ -247,6 +257,7 @@ euphorik.Conversations.prototype.ajouterMessage = function(element, numConversat
       nouvelleConversation = true;\r
       this.nouvelleConversation(\r
          numConversation,\r
+         message, // si une nouvelle conversation a été créée alors on lui donne la racine qui correspond au premier message\r
          function(num) { // fermeture de la conversation\r
             thisConversations.supprimerConversation(num);\r
          },\r
@@ -263,12 +274,17 @@ euphorik.Conversations.prototype.ajouterMessage = function(element, numConversat
    return nouvelleConversation;\r
 };\r
 \r
-euphorik.Conversations.prototype.nouvelleConversation = function(num, funFermer, funLien)\r
+euphorik.Conversations.prototype.nouvelleConversation = function(num, racine, funFermer, funLien)\r
 {\r
    var thisMessages = this;\r
 \r
    this.conversations[num] = new euphorik.Conversation(this, num);\r
    \r
+   if (racine) {\r
+      this.conversations[num].racine = racine;\r
+      this.mettreAJourFragment();\r
+   }\r
+   \r
    if (funFermer) {\r
       this.conversations[num].eventFermer(funFermer);\r
    }\r
@@ -316,6 +332,7 @@ euphorik.Conversations.prototype.supprimerConversation = function(num) {
    this.client.supprimerConversation(num - 1);\r
       \r
    this.rafraichirMessages(true);\r
+   this.mettreAJourFragment();\r
 };\r
 \r
 /**\r