X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageMinichat.js;h=2de1531976b7a6dc29cfbe0bd167196e6005a75e;hp=29effacf4cfcdcf8f406ef1899f0a9047ffaf7f0;hb=c01d54fd6a515a6f2860e3b18ff574afa5caa83b;hpb=e90f287f99a621173b606ddba73dcec169c6b3bd diff --git a/js/pageMinichat.js b/js/pageMinichat.js index 29effac..2de1531 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -174,7 +174,7 @@ PageMinichat.prototype.getJSONMessage = function(pseudo, message) repondA.push(parseInt(id)) // FIXME : une propriété ne peut pas être de type int ? return { - "action" : "put_message", + "header" : { "action" : "put_message", "version" : conf.versionProtocole }, "cookie" : this.client.cookie, "nick" : pseudo, "content" : message, @@ -437,8 +437,8 @@ function Conversation(num, util, formateur, client) this.client = client this.idDernierMessageAffiche = 0 - this.messages = new Array() - this.messagesParId = new Object() + this.messages = [] + this.messagesParId = {} this.nbMessageMax = conf.nbMessageAffiche // Le nombre de message affiché par page @@ -472,11 +472,11 @@ Conversation.prototype.colorerEntetes = function() for (var i = 0; i < this.messages.length; i++) { if (this.messages[i].appartientAuClient) - messagesProprietaire += "#" + this.messages[i].getId() + "," + messagesProprietaire += "#" + this.messages[i].getId(this.getId()) + "," else if (this.messages[i].clientARepondu) - messagesRepondu += "#" + this.messages[i].getId() + "," + messagesRepondu += "#" + this.messages[i].getId(this.getId()) + "," else if (this.messages[i].estUneReponse) - messagesReponse += "#" + this.messages[i].getId() + "," + messagesReponse += "#" + this.messages[i].getId(this.getId()) + "," } $(messagesReponse).addClass("reponse") $(messagesRepondu).addClass("repondu") @@ -579,6 +579,11 @@ Conversation.prototype.viderMessages = function() $("#conversations #" + this.getId() + " .message").remove() } +Conversation.prototype.idMessageFromString = function(idString) +{ + return parseInt(idString.substr(4 + this.getId().length), 36) +} + /** * Après l'ajout d'un ou plusieurs message cette méthode est appelée afin * d'afficher les messages non-affichés. @@ -600,7 +605,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage) for (var i = 0; i < this.messages.length; i++) if (this.messages[i].id > this.idDernierMessageAffiche) { - XHTML += this.messages[i].XHTML(messagePair) + XHTML += this.messages[i].XHTML(messagePair, this.getId()) messagePair = !messagePair } @@ -613,7 +618,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage) { // FIXME : ya pas mieux ? var racine = $(event.target).text() - funClickOuvrirConv(parseInt(racine.substring(1, racine.length - 1), 36)) + funClickOuvrirConv(parseInt(idString.substring(1, racine.length - 1), 36)) return false } ) @@ -622,7 +627,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage) thisConversation.util.infoBulle("Extraction de la conversation complète", $(".extraireCompletement", this)) // l'id du message - var idMess = parseInt($(this).attr("id").substr(4), 36) + var idMess = thisConversation.idMessageFromString($(this).attr("id")) $(this).click( function(event) @@ -674,7 +679,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage) $(".pseudo", this).hover( function(e) { - var userId = parseInt($(".id", this).text()) + var userId = parseInt($(".id", this).text()) var element = $(this) var h = element.height() var offset = element.offset() @@ -730,6 +735,8 @@ Conversation.prototype.flush = function(funClickOuvrirConv, funClickMessage) */ Conversation.prototype.afficherConversation = function(id) { + var thisConversation = this + var message = this.messagesParId[id] if (message == undefined) return @@ -740,7 +747,7 @@ Conversation.prototype.afficherConversation = function(id) function() { var jq = $(this) - var statut = mess[parseInt(jq.attr("id").substr(4), 36)] + var statut = mess[thisConversation.idMessageFromString(jq.attr("id"))] if (statut == undefined) jq.addClass("cache") else @@ -822,8 +829,13 @@ Messages.prototype.toggleMessageRepond = function(mess) */ Messages.prototype.enleverMessagesRepond = function() { + for (var messId in this.messagesRepond) + this.enleverMessageRepond(this.messagesRepond[messId]) + + // on réinitialise pour être sur que tout est bien enlevé this.messagesRepond = {} - $(".message").removeClass("repondEnEvidence") + $("#conversations div.message").removeClass("repondEnEvidence") + $("form#posterMessage #repondA .messages").empty() } /** @@ -833,7 +845,6 @@ Messages.prototype.enleverMessageRepond = function(mess) { $("#" + mess.getId()).removeClass("repondEnEvidence") $("#" + mess.getId(this.prefixIdMessage)).remove() - $("form#posterMessage #repondA .messages").empty() delete this.messagesRepond[mess.id] this.rafraichireNombreMessagesRepond() } @@ -873,7 +884,7 @@ Messages.prototype.ajouterMessageRepond = function(mess) } /** - * Met à jour le nombre qui indique à l'utilisateur à combien de messages il répond + * Met à jour le nombre qui indique à l'utilisateur à combien de messages il répond. */ Messages.prototype.rafraichireNombreMessagesRepond = function() { @@ -888,6 +899,18 @@ Messages.prototype.rafraichireNombreMessagesRepond = function() else boite.hide() } +/** + * Affiche les messages auquel l'utilisateur souhaite répondre au sein des messages des conversations. + * Utilisé lorsqu'une conversation est extraite. + */ +Messages.prototype.afficherMessagesRepondConversations = function() +{ + var expr = "" + for(var messId in this.messagesRepond) + expr += "#" + this.messagesRepond[messId].getId() + "," + $(expr).addClass("repondEnEvidence") +} + /** * Crée un message JSON contenant le message demandant un rafraichissement. */ @@ -1092,6 +1115,8 @@ Messages.prototype.flush = function(numConv) { // met ou enlève la mise en evidence du message thisMessages.toggleMessageRepond(Mess) + // donne le focus à la ligne de saisie + $("form input.message").focus() } ) } @@ -1146,10 +1171,7 @@ Messages.prototype.rafraichirMessages = function(vider) 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++) { @@ -1159,6 +1181,9 @@ Messages.prototype.rafraichirMessages = function(vider) thisMessages.client.supprimerConversation(numConv - 1) } } + if (vider) + thisMessages.afficherMessagesRepondConversations() + vider = false } } )