FIX petit bug dans la mise en évidence des messages auquel l'utilisateur répond
[euphorik.git] / js / pageMinichat / conversation.js
index d8cd8a7..71a7b3d 100644 (file)
@@ -62,10 +62,28 @@ euphorik.Conversation = function(conversations, num) {
             (reverse ? "" : messageRacineXHTML) +\r
          '</div>' +\r
          (reverse ? "" : messagesXHTML) +\r
+         '<div class="messageReduit" style="height:200px; width:50px"></div>' +\r
       '</td>';\r
     \r
    $("#conversations tr").append(XHTML);\r
    \r
+    // les différents événements liés à la conversation\r
+   var thisConversation = this;   \r
+   $("#" + this.getId() + " .titre .lien").click(function() {\r
+        thisConversation.util.replaceSelection(\r
+           $("form#posterMessage input.message")[0],\r
+           "{" + thisConversation.client.conversations[thisConversation.num - 1].root.toString(36) + "}"\r
+        );\r
+   });   \r
+   $("#" + this.getId() + " .titre .fermer").click(function() {\r
+      thisConversation.conversations.supprimerConversation(num);\r
+   });\r
+   $("#" + this.getId() + " .titre .reduire").click(function() {\r
+      $("#" + thisConversation.getId() + " .titre, #" + thisConversation.getId() + " .messages").hide()\r
+      var e = $("#" + thisConversation.getId() +  " .messageReduit");\r
+      e.get()[0].innerHTML = thisConversation.getMessageReduit()\r
+   });\r
+\r
    this.util.infoBulle("Aller à la première page", $("#" + this.getId() + " .numPage"), euphorik.Util.positionBulleType.haut);\r
    if (num !== 0) {\r
       this.util.infoBulle("Créer un lien vers la conversation", $("#" + this.getId() + " .lien"));\r
@@ -73,6 +91,16 @@ euphorik.Conversation = function(conversations, num) {
    }\r
 };\r
 \r
+euphorik.Conversation.prototype.getMessageReduit = function() {\r
+   return '' +\r
+      '<svg:svg version="1.1" baseProfile="full" width="100px" height="200px">' +\r
+         '<svg:image x="10" y="10" height="10" width="10" class="fermer" />' +\r
+         '<svg:text transform="rotate(-90)" y="15" x="-200" >' +\r
+            'Blabla blablablabla bla blabla ..' +\r
+         '</svg:text>' +\r
+      '</svg:svg>';\r
+}\r
+\r
 /**\r
   * @racine un message représentant la racine de la conversation, vaut undefined pour la conversation générale\r
   */\r
@@ -139,32 +167,6 @@ euphorik.Conversation.prototype.setPage = function(pageCourante, dernierePage) {
    $("#" + this.getId() + " .prev").css("display", dernierePage ? "none" : "inline");\r
 };\r
 \r
-/**\r
-  * Evenement déclanché lors de l'insertion du lien de la conversation dans le message courant.\r
-  */\r
-euphorik.Conversation.prototype.eventLien = function(fun) {\r
-   var thisConversation = this;\r
-   \r
-   $("#" + this.getId() + " .titre .lien").click(\r
-      function() {\r
-         fun(thisConversation.num);\r
-      }\r
-   );\r
-};\r
-\r
-/**\r
-  * Evenement déclanché lors de la fermeture de la conversation.\r
-  */\r
-euphorik.Conversation.prototype.eventFermer = function(fun) {\r
-   var thisConversation = this;\r
-   \r
-   $("#" + this.getId() + " .titre .fermer").click(\r
-      function() {\r
-         fun(thisConversation.num);\r
-      }\r
-   );\r
-};\r
-\r
 /**\r
   * @funNext appelé lorsque l'on passe à la page suivante (de 2 à 1 par exemple)\r
   * @funPrev appelé lorsque l'on passe à la page précédente (de 1 à 2 par exemple)\r
@@ -191,14 +193,25 @@ euphorik.Conversation.prototype.getId = function() {
    return "conv" + this.id;\r
 };\r
 \r
+/**\r
+  * Après avoir créé un message celui ci est ajouté à une conversation via cette méthode.\r
+  */\r
 euphorik.Conversation.prototype.ajouterMessage = function(message) {\r
    this.messages.push(message);\r
    this.messagesParId[message.id] = message;\r
    \r
-   // enlève les messages exedentaires\r
+   // enlève le message exedentaire si nécessaire\r
    if (this.messages.length > this.nbMessageMax) {\r
       delete this.messagesParId[this.messages.shift().id];\r
    }\r
+   \r
+   // met à jour le membre 'estReponduPar' des messages de la conversation\r
+   for (var i = 0; i < this.messages.length - 1; i++) {\r
+     var autreMess = this.messages[i];\r
+     if (autreMess.id in message.repondA) {\r
+        autreMess.estReponduPar[message.id] = true;\r
+     }\r
+   }\r
 };\r
 \r
 /**\r
@@ -227,7 +240,6 @@ euphorik.Conversation.prototype.flush = function() {
    var thisConversation = this;\r
    var reverse = this.client.chatOrder === "reverse";\r
 \r
-   // est-ce que le prochain message est pair ? (permet d'alterner le style des messages)\r
    var messagePair = (this.idDernierMessageAffiche === 0 ? true :\r
       ($("#" + this.getId() + " .messages div:" + (reverse ? "first" : "last")).attr("class").search("messagePair") === -1)\r
    );\r
@@ -240,7 +252,7 @@ euphorik.Conversation.prototype.flush = function() {
          messagePair = !messagePair;\r
       }\r
    });\r
-      \r
+   \r
    var DOM = $(XHTML);\r
        \r
    // pour chaque nouveau message au niveau du document on lui assigne ses événements\r
@@ -277,6 +289,10 @@ euphorik.Conversation.prototype.flush = function() {
 euphorik.Conversation.prototype.attacherEventsSurMessage = function(element) {\r
    // l'id du message\r
    var idMess = this.idMessageFromString($(element).attr("id"));\r
+   \r
+   if (idMess in this.conversations.messagesRepond) {\r
+      $(element).addClass("repondEnEvidence");\r
+   }\r
 \r
    this.util.infoBulle("Extraction de la conversation à partir de ce message", $(".extraire", element));\r
    this.util.infoBulle("Extraction de la conversation complète", $(".extraireCompletement", element));\r
@@ -399,7 +415,7 @@ euphorik.Conversation.prototype.afficherConversation = function(id) {
       function() {\r
          var jq = $(this);\r
          var statut = mess[thisConversation.idMessageFromString(jq.attr("id"))];\r
-         if (!statut) {\r
+         if (statut === undefined) {\r
             jq.addClass("cache");\r
          } else {\r
             jq.removeClass("cache");\r