X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageMinichat%2Fconversation.js;fp=js%2FpageMinichat%2Fconversation.js;h=acd7d672cfb244dae3d9a755e7af0bfd0923ce75;hp=2810b1b3e730d755ffa6fc928ef95672516e4d50;hb=8ee1535f5594573931ddaebee77bf6148a5358cb;hpb=1eaef253e3c3436668379409472d27d45b7fd2b6 diff --git a/js/pageMinichat/conversation.js b/js/pageMinichat/conversation.js index 2810b1b..acd7d67 100644 --- a/js/pageMinichat/conversation.js +++ b/js/pageMinichat/conversation.js @@ -244,15 +244,22 @@ euphorik.Conversation.prototype.flush = function() { var messagePair = (this.idDernierMessageAffiche === 0 ? true : ($("#" + this.getId() + " .messages div:" + (reverse ? "first" : "last")).attr("class").search("messagePair") === -1) - ); + ); + + // 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); + } + }); + }; // construction de l'XHTML des messages - var XHTML = ""; - this.messages.each(function(i, mess) { - if (mess.id > thisConversation.idDernierMessageAffiche) { - XHTML += mess.XHTML(messagePair, thisConversation.getId()); - messagePair = !messagePair; - } + var XHTML = ""; + pourChaqueNouveauMessage(function(mess) { + XHTML += mess.XHTML(messagePair, thisConversation.getId()); + messagePair = !messagePair; }); var DOM = $(XHTML); @@ -274,11 +281,25 @@ euphorik.Conversation.prototype.flush = function() { } else { $("#" + this.getId() + " .messages .message").slice(0, nbMessagesAffiche - this.nbMessageMax).remove(); } - } + } + + // 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") + } + }); + } + }); if (this.messages.length > 0) { this.idDernierMessageAffiche = this.messages[this.messages.length-1].id; - } + } // met à jour la racine de la conversation this.majRacine(); @@ -326,7 +347,7 @@ euphorik.Conversation.prototype.attacherEventsSurMessage = function(element) { // donne le focus à la ligne de saisie $("form input.message").focus(); }).hover(function() { // affiche les outils liées au message - var top = $(this).offset().top + var top = $(this).offset().top; var left = $(this).offset().left + $(this).outerWidth() - thisConversation.util.outilsMessage.outerWidth(); $(".extraire", thisConversation.util.outilsMessage).unbind(); $(".extraireCompletement", thisConversation.util.outilsMessage).unbind(); @@ -336,7 +357,7 @@ euphorik.Conversation.prototype.attacherEventsSurMessage = function(element) { thisConversation.util.infoBulle("Extraction de la conversation complète", $(".extraireCompletement", thisConversation.util.outilsMessage)); thisConversation.util.outilsMessage.css("top", top).css("left", left).prependTo(this).show(); }, function() { - thisConversation.util.outilsMessage.hide() + thisConversation.util.outilsMessage.hide(); }); // mise en évidence de la conversation