Remove the weekly troll.
[euphorik.git] / js / chat / conversation.js
index 5321380..8c11752 100644 (file)
@@ -15,7 +15,7 @@
 //\r
 // You should have received a copy of the GNU General Public License\r
 // along with Euphorik.  If not, see <http://www.gnu.org/licenses/>.\r
\r
+\r
  /*jslint laxbreak:true */\r
 \r
 /**\r
   */\r
 euphorik.Conversation = function(conversations, num) {\r
    this.conversations = conversations;\r
-   \r
+\r
    // peut changer au cours de la vie de la conversation, n'est pas un id !\r
    this.num = num;\r
-   \r
+\r
    this.id = Math.floor(Math.random() * 1000000).toString(36);\r
-   \r
+\r
    this.util = this.conversations.util;\r
    this.formater = this.conversations.formater;\r
    this.client = this.conversations.client;\r
-   \r
+\r
    this.idDernierMessageAffiche = 0;\r
    this.racine = undefined;\r
-   \r
+\r
    this.messages = [];\r
    this.messagesParId = {};\r
-   \r
+\r
    this.nbMessageMax = euphorik.conf.nbMessageAffiche; // Le nombre de message affiché par page\r
 \r
    var messagesXHTML = '<div class="messages"></div>';\r
    var messageRacineXHTML = '<div class="messageRacine"></div>';\r
    var reverse = this.client.chatOrder === "reverse";\r
-    \r
-   var XHTML = \r
+\r
+   var XHTML =\r
       '<td class="conversation" id="' + this.getId() + '">' +\r
          (reverse ? messagesXHTML : "") +\r
          '<div class="titre">' +\r
@@ -64,24 +64,24 @@ euphorik.Conversation = function(conversations, num) {
          (reverse ? "" : messagesXHTML) +\r
          //'<div class="messageReduit" style="height:200px; width:50px"></div>' +\r
       '</td>';\r
-    \r
+\r
    $("#conversations tr").append(XHTML);\r
-   \r
+\r
    // les infos bulles\r
    this.util.infoBulle("Aller à la première page", $("#" + this.getId() + " .titre .numPage"), euphorik.Util.positionBulleType.haut);\r
    if (this.num !== 0) {\r
       this.util.infoBulle("Créer un lien vers la conversation", $("#" + this.getId() + " .titre .creerLien"));\r
       this.util.infoBulle("Close the conversation", $("#" + this.getId() + " .titre .close"));\r
    }\r
-   \r
+\r
     // les différents événements liés à la conversation\r
-   var thisConversation = this;   \r
+   var thisConversation = this;\r
    $("#" + this.getId() + " .titre .creerLien").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
+   });\r
    $("#" + this.getId() + " .titre .close").click(function() {\r
       thisConversation.conversations.supprimerConversation(thisConversation.num);\r
    });\r
@@ -118,7 +118,7 @@ euphorik.Conversation.prototype.majRacine = function() {
    if (!this.racine) {\r
       return;\r
    }\r
-     \r
+\r
    if (!(this.racine.id in this.messagesParId)) {\r
       this.messagesParId[this.racine.id] = this.racine;\r
       var element = $(this.racine.XHTML(true, this.getId()));\r
@@ -176,7 +176,7 @@ euphorik.Conversation.prototype.setPage = function(pageCourante, dernierePage) {
   */\r
 euphorik.Conversation.prototype.setFunPage = function(funNext, funPrev, funReset) {\r
    var thisConversation = this;\r
-   \r
+\r
    $("#" + this.getId() + " .next").click(\r
       function() { funNext(thisConversation.num); }\r
    );\r
@@ -201,12 +201,12 @@ euphorik.Conversation.prototype.getId = function() {
 euphorik.Conversation.prototype.ajouterMessage = function(message) {\r
    this.messages.push(message);\r
    this.messagesParId[message.id] = message;\r
-   \r
+\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
+\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
@@ -224,7 +224,7 @@ euphorik.Conversation.prototype.viderMessages = function() {
    this.messagesParId = {};\r
    this.idDernierMessageAffiche = 0;\r
    $("#" + this.getId() + " .messages .message").remove();\r
-   \r
+\r
    // enlève également la racine\r
    $("#" + this.getId() + " .titre .messageRacine").empty();\r
 };\r
@@ -244,35 +244,35 @@ euphorik.Conversation.prototype.flush = function() {
 \r
    var messagePair = (this.idDernierMessageAffiche === 0 ? true :\r
       ($("#" + this.getId() + " .messages div:" + (reverse ? "first" : "last")).attr("class").search("messagePair") === -1)\r
-   );
-   
-   // permet d'itérer sur les nouveaux messages à afficher
-   var pourChaqueNouveauMessage = function(f) {
-      thisConversation.messages.each(function(i, mess) {
-         if (mess.id > thisConversation.idDernierMessageAffiche) {
-            f(mess);
-         }
-      });
+   );\r
+\r
+   // permet d'itérer sur les nouveaux messages à afficher\r
+   var pourChaqueNouveauMessage = function(f) {\r
+      thisConversation.messages.each(function(i, mess) {\r
+         if (mess.id > thisConversation.idDernierMessageAffiche) {\r
+            f(mess);\r
+         }\r
+      });\r
    };\r
-      \r
+\r
    // construction de l'XHTML des messages\r
-   var XHTML = "";
+   var XHTML = "";\r
    pourChaqueNouveauMessage(function(mess) {\r
       XHTML += mess.XHTML(messagePair, thisConversation.getId());\r
       messagePair = !messagePair;\r
    });\r
-   \r
-   var DOM = $(XHTML);       \r
-       \r
+\r
+   var DOM = $(XHTML);\r
+\r
    // pour chaque nouveau message au niveau du document on lui assigne ses événements\r
    DOM.each(function() { thisConversation.attacherEventsSurMessage(this); });\r
-   \r
+\r
    if (reverse) {\r
       DOM.prependTo("#" + this.getId() + " .messages");\r
    } else {\r
       DOM.appendTo("#" + this.getId() + " .messages");\r
    }\r
-   \r
+\r
    // enlève les messages exedentaires au niveau du document\r
    var nbMessagesAffiche = $("#" + this.getId() + " .messages .message").size();\r
    if (nbMessagesAffiche > this.nbMessageMax) {\r
@@ -281,26 +281,26 @@ euphorik.Conversation.prototype.flush = function() {
       } else {\r
          $("#" + this.getId() + " .messages .message").slice(0, nbMessagesAffiche - this.nbMessageMax).remove();\r
       }\r
-   }
-  
-   // met à jour la classe des messages auquels repondent les nouveaux messages
-   // dans le cas où ce message appartient au client courant (c'est un peu de la triche) TODO : ya mieux ?    
-   pourChaqueNouveauMessage(function(mess) {
-      if (mess.auteurId === thisConversation.client.id) {
-         objectEach(mess.repondA, function(messId) {
-            var mess = thisConversation.messagesParId[messId];
-            if (mess) {
-               mess.clientARepondu = true;
-               $("#conversations #" + mess.getId(thisConversation.getId())).addClass("repondu");
-            }
-         });
-      }
+   }\r
+\r
+   // met à jour la classe des messages auquels repondent les nouveaux messages\r
+   // dans le cas où ce message appartient au client courant (c'est un peu de la triche) TODO : ya mieux ?\r
+   pourChaqueNouveauMessage(function(mess) {\r
+      if (mess.auteurId === thisConversation.client.id) {\r
+         objectEach(mess.repondA, function(messId) {\r
+            var mess = thisConversation.messagesParId[messId];\r
+            if (mess) {\r
+               mess.clientARepondu = true;\r
+               $("#conversations #" + mess.getId(thisConversation.getId())).addClass("repondu");\r
+            }\r
+         });\r
+      }\r
    });\r
-   \r
+\r
    if (this.messages.length > 0) {\r
       this.idDernierMessageAffiche = this.messages[this.messages.length-1].id;\r
-   }
-  \r
+   }\r
+\r
    // met à jour la racine de la conversation\r
    this.majRacine();\r
 };\r
@@ -313,11 +313,11 @@ 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
+\r
    if (idMess in this.conversations.messagesRepond) {\r
       $(element).addClass("repondEnEvidence");\r
    }\r
-   \r
+\r
    var thisConversation = this;\r
    $(".conversationLink", element).click(\r
       function(event) {\r
@@ -327,7 +327,7 @@ euphorik.Conversation.prototype.attacherEventsSurMessage = function(element) {
          return false;\r
       }\r
    );\r
-       \r
+\r
    $(element).click(function(event) {\r
       if ($(event.target).is("a") || $(event.target).parents("#outilsBan").length > 0) {\r
          return;\r
@@ -386,7 +386,7 @@ euphorik.Conversation.prototype.attacherEventsSurMessage = function(element) {
    // les outils de bannissement (uniquement pour les ekMaster)\r
    if (thisConversation.client.ekMaster) {\r
       $(".nick", element).hover(\r
-         function(e) {     \r
+         function(e) {\r
             var userId = parseInt($(".id", this).text(), 10);\r
             var nick = $(this);\r
             var h = nick.outerHeight();\r
@@ -422,22 +422,22 @@ euphorik.Conversation.prototype.attacherEventsSurMessage = function(element) {
       );\r
    }\r
 };\r
-  \r
+\r
 /**\r
   * Etablit une liste des messages à mettre en evidence et des messages à cacher.\r
   * Puis applique un plan diabolique.\r
   * @param id l'id du message\r
   */\r
-euphorik.Conversation.prototype.afficherConversation = function(id) {   \r
+euphorik.Conversation.prototype.afficherConversation = function(id) {\r
    var thisConversation = this;\r
-    \r
+\r
    var message = this.messagesParId[id];\r
    if (!message) {\r
       return;\r
    }\r
 \r
    var mess = message.getConversation(this);\r
-   \r
+\r
    // FIXME : cet appel est très lent\r
    $("#" + this.getId() + " .messages .message").each(\r
       function() {\r