X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageMinichat%2Fconversation.js;h=60b22a62d855a1078055d07940cf8d7e21809885;hp=73b8d3a7011c4392f16df5e9a60ea67791777cd8;hb=85dc0facbc2b2de826978fac3768db7949a6b92f;hpb=7cf389481b133c57d6563b5e6747131f4abbf589 diff --git a/js/pageMinichat/conversation.js b/js/pageMinichat/conversation.js index 73b8d3a..60b22a6 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(); @@ -299,7 +320,7 @@ euphorik.Conversation.prototype.attacherEventsSurMessage = function(element) { var thisConversation = this; $(".lienConv", element).click( - function(event) { + function(event) { // FIXME : ya pas mieux ? var racine = $(event.target).text(); thisConversation.conversations.ouvrirConversation(parseInt(racine.substring(1, racine.length - 1), 36)); @@ -326,8 +347,8 @@ 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 left = $(this).offset().left + $(this).outerWidth() - thisConversation.util.outilsMessage.largeur + 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(); // TODO : ces deux appels devraient se trouver dans "PageMinichat" lors de la création de thisConversation.util @@ -335,9 +356,8 @@ euphorik.Conversation.prototype.attacherEventsSurMessage = function(element) { thisConversation.util.infoBulle("Extraction de la conversation à partir de ce message", $(".extraire", thisConversation.util.outilsMessage)); 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(); - thisConversation.util.outilsMessage.largeur = thisConversation.util.outilsMessage.outerWidth(); }, function() { - thisConversation.util.outilsMessage.hide() + thisConversation.util.outilsMessage.hide(); }); // mise en évidence de la conversation