X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=js%2FpageMinichat.js;h=03024bcb00bfc5be0b5f21c5c00c7cd8da313024;hb=5790c374341c5e542ff17a8f245bb5aa43af1d58;hp=53f4ab2d5e7d12b3374d8b3080e4352ebba4d15f;hpb=63d7601eeee2660728be1ff778dd7e6a04246ee5;p=euphorik.git diff --git a/js/pageMinichat.js b/js/pageMinichat.js index 53f4ab2..03024bc 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -301,20 +301,24 @@ Message.prototype.setRepondA = function(repondAJSON) /** * Renvoie les messages faisant partie d'une conversation. * @param messages l'ensemble des messages de la conversation - * @return les id des messages qui ont été mis en evidence sous la forme d'un hash (object) {id => bool} + * @return les id des messages qui ont été mis en evidence sous la forme + * d'un hash (object) {id => 0 | 1 | 2 | 3}. 1 : proprietaire, 2 : reponse directe, 3 : message repondu */ Message.prototype.getConversation = function(messages) { + var thisMessage = this + // les messages faisant partie de la conversation var messagesEnEvidence = {} - messagesEnEvidence[this.id] = true + messagesEnEvidence[this.id] = 1 // recherche les réponses (O(n)) for (var i = 0; i < messages.messages.length; i++) if (messages.messages[i].repondA.hasOwnProperty(this.id)) - messagesEnEvidence[messages.messages[i].id] = true + messagesEnEvidence[messages.messages[i].id] = messages.messages[i].auteurId == this.auteurId ? 1 : 2 + var premierNiveau = true var f = function(tabIds) { for(var id in tabIds) @@ -322,7 +326,8 @@ Message.prototype.getConversation = function(messages) var message = messages.messagesParId[id] if (message != undefined) { - messagesEnEvidence[id] = true + messagesEnEvidence[id] = message.auteurId == thisMessage.auteurId ? 1 : ( premierNiveau ? 3 : 0 ) + premierNiveau = false f (message.repondA) } } @@ -345,7 +350,6 @@ function Conversation(num, util, formateur, client) this.num = num // peut changer au cours de la vie de la conversation this.id = Math.floor(Math.random() * 1000000).toString(36) - this.messageOver = null // le message sur lequel se trouve le curseur this.util = util this.formateur = formateur this.client = client @@ -371,15 +375,6 @@ function Conversation(num, util, formateur, client) this.util.infoBulle("Créer un lien vers la conversation", $("#conversations #" + this.getId() + " .lien")) this.util.infoBulle("Fermer la conversation", $("#conversations #" + this.getId() + " .fermer")) } - - // enlève la mise en évidence pour la conversation - $("#conversations #" + this.getId()).hover( - function(){}, - function(event) - { - thisConversation.enleverMiseEnEvidence() - } - ) } /** @@ -388,7 +383,33 @@ function Conversation(num, util, formateur, client) Conversation.prototype.enleverMiseEnEvidence = function() { $("#conversations .message").removeClass("cache") - this.messageOver = null +} + +Conversation.prototype.colorerEntetes = function() +{ + var messagesReponse = "" + var messagesRepondu = "" + var messagesProprietaire = "" + for (var i = 0; i < this.messages.length; i++) + { + if (this.messages[i].appartientAuClient) + messagesProprietaire += "#mess" + this.messages[i].id.toString(36) + "," + else if (this.messages[i].estUneReponse) + messagesReponse += "#mess" + this.messages[i].id.toString(36) + "," + else if (this.messages[i].clientARepondu) + messagesRepondu += "#mess" + this.messages[i].id.toString(36) + "," + } + $(messagesReponse).addClass("reponse") + $(messagesRepondu).addClass("repondu") + $(messagesProprietaire).addClass("proprietaire") +} + +Conversation.prototype.decolorerEntetes = function() +{ + $("#" + this.getId() + " .message") + .removeClass("reponse") + .removeClass("repondu") + .removeClass("proprietaire") } /** @@ -625,25 +646,21 @@ Conversation.prototype.flush = function(funClickOuvrirConv) $("input.message").val(tag + " " + valCourant) thisConversation.util.setCaretToEnd($("form input.message")[0]) } - ) - - // Q : pourquoi pas un .hover ? - // R : simplement pour éviter que lorsqu'un message arrive cela n'affecte la conversation actuellement mise en évidence (uniquement pour Firefox) - $(".entete", this).mousemove( - function(e) + ) + + // mise en évidence de la conversation + $(".entete", this).hover( + function() { - if (this !== thisConversation.messageOver) - { - thisConversation.afficherConversation(idMess) - thisConversation.messageOver = this - } - } - ).hover( - function(){}, + thisConversation.decolorerEntetes() + thisConversation.afficherConversation(idMess) + }, // quand on sort de l'entête du message la mise en évidence est enlevée function() { - thisConversation.enleverMiseEnEvidence() + thisConversation.enleverMiseEnEvidence() + thisConversation.decolorerEntetes() + thisConversation.colorerEntetes() } ) } @@ -676,10 +693,25 @@ Conversation.prototype.afficherConversation = function(id) function() { var jq = $(this) - if (!mess.hasOwnProperty(parseInt(jq.attr("id").substr(4), 36))) + var statut = mess[parseInt(jq.attr("id").substr(4), 36)] + if (statut == undefined) jq.addClass("cache") - else + else + { jq.removeClass("cache") + switch (statut) + { + case 1 : + jq.addClass("proprietaire") + break; + case 2 : + jq.addClass("reponse") + break; + case 3 : + jq.addClass("repondu") + break; + } + } } ) } @@ -936,18 +968,10 @@ Messages.prototype.rafraichirMessages = function(vider) this.pageEvent.waitEvent( function() { return thisMessages.getJSONrafraichirMessages() }, - function(data) - { - if (vider) - { - thisMessages.viderMessages() - vider = false - } - - // en fonction du message - switch(data["reply"]) - { - case "new_troll" : + { + "new_troll" : + function(data) + { thisMessages.trollIdCourant = data["troll_id"] $("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"])).unbind("click").click( function() @@ -957,9 +981,15 @@ Messages.prototype.rafraichirMessages = function(vider) ) $("#trollCourant .troll a[@rel*=lightbox]").lightBox() - break - - case "new_messages" : + }, + "new_messages" : + function(data) + { + if (vider) + { + thisMessages.viderMessages() + vider = false + } // ajoute les messages reçus à leur conversation respective for (var numConv = 0; numConv < data["conversations"].length; numConv++) { @@ -969,8 +999,7 @@ Messages.prototype.rafraichirMessages = function(vider) thisMessages.client.supprimerConversation(numConv - 1) } } - break - } + } } ) }