FIX#64
[euphorik.git] / js / pageMinichat / message.js
index 3afb8b5..417f330 100644 (file)
@@ -39,6 +39,10 @@ euphorik.Message = function(client, formateur, element) {
    this.login = element.login;\r
    this.contenu = element.content;\r
    \r
+   // l'ensemble des id des messages qui reponde à ce message, exemple : {45:true, 32:true} (le 'true' ne sert à rien ^_^)\r
+   // mis à jour au fur à mesure que des messages sont ajoutés aux conversations\r
+   this.estReponduPar = {};\r
+   \r
    this.appartientAuClient = element.owner;\r
    this.clientARepondu = element.answered;\r
    this.estUneReponse = element.is_a_reply;\r
@@ -78,30 +82,26 @@ euphorik.Message.prototype.getConversation = function(messages) {
 \r
    // les messages faisant partie de la conversation\r
    var messagesEnEvidence = {};\r
-   \r
    messagesEnEvidence[this.id] = 1;\r
    \r
-   // recherche les réponses (O(n))\r
-   messages.messages.each(function(i, mess) {\r
-      if (mess.repondA.hasOwnProperty(thisMessage.id)) {\r
-         messagesEnEvidence[mess.id] = 2;\r
-      }\r
-   });\r
-   \r
-   // parcours en largeur\r
-   var f = function(tabIds, premierNiveau) {\r
-      objectEach(tabIds, function(id) {\r
-         // si le message (id) a déjà été traité\r
-         if (messagesEnEvidence[id] || premierNiveau) {           \r
+   // parcours en profondeur\r
+   var f = function(ids, premierNiveau, ensemble, evidence) {\r
+      objectEach(ids, function(id) {\r
+         if (!messagesEnEvidence[id] || premierNiveau) {\r
             var message = messages.messagesParId[id];\r
-            if (!message) { \r
-               messagesEnEvidence[id] = premierNiveau ? 3 : (message.auteurId === thisMessage.auteurId ? 1 : 0);\r
-               f (message.repondA, false);\r
+            if (message) {\r
+               messagesEnEvidence[id] = premierNiveau ? evidence : (message.auteurId === thisMessage.auteurId ? 1 : 0);\r
+               f(message[ensemble], false, ensemble, evidence);\r
             }\r
          }\r
       });\r
    };\r
-   f(this.repondA, true);\r
+   \r
+   // remonte le temps\r
+   f(this.estReponduPar, true, "estReponduPar", 2);\r
+   \r
+   // descent le temps\r
+   f(this.repondA, true, "repondA", 3);       \r
    \r
    return messagesEnEvidence;\r
 };\r
@@ -111,7 +111,9 @@ euphorik.Message.prototype.getConversation = function(messages) {
   * Aucun callback n'est affecté.\r
   */\r
 euphorik.Message.prototype.XHTML = function(messagePair, pre) {\r
-   messagePair = messagePair || true;\r
+   if (messagePair === undefined) {\r
+      messagePair =  true;\r
+   }\r
    pre = pre || "";\r
    \r
    thisMessage = this;\r
@@ -142,9 +144,11 @@ euphorik.Message.prototype.XHTML = function(messagePair, pre) {
          (this.systeme ? " systeme" : "") +\r
          (this.ekMaster ? " ekMaster" + this.degreeOstentatoire : "") +\r
       "\">" +\r
-         "<div class=\"outilsMess\"><div class=\"extraire\"></div><div class=\"extraireCompletement\"></div></div><span class=\"entete\">" +\r
-         "<span class=\"dateComplete\">[<span class=\"date\">" + this.date + "</span>]</span>" +\r
-         "<span class=\"pseudo\"><span class=\"id\" style=\"display: none\">" + this.auteurId + "</span class=\"ident\">" + identifiant + "</span></span><span class=\"delimitationEntete\"></span>" +\r
+         "<span class=\"entete\">" +\r
+            "<span class=\"dateComplete\">[<span class=\"date\">" + this.date + "</span>]</span>" +\r
+            "<span class=\"pseudo\"><span class=\"id\" style=\"display: none\">" + this.auteurId + "</span><span class=\"ident\">" + identifiant + "</span></span>" +\r
+         "</span>" + \r
+         "<span class=\"delimitationEntete\"></span>" +\r
          XHTMLrepondA +\r
          "<span class=\"contenu\">" + this.formateur.traitementComplet(this.contenu, this.pseudo) + "</span>" +\r
       "</div>";\r