X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageMinichat%2Fconversations.js;h=26fbb66ebd299e0263b4997cd76082a58d6398b6;hp=d5a40e620a3e9c8a5a2ac05231c7d664245dd21b;hb=d8ea5d4c3a3ed6e596a473bbb8a4df0a41b4843a;hpb=7e471788d9356b1cb8659513674df9a883101807 diff --git a/js/pageMinichat/conversations.js b/js/pageMinichat/conversations.js index d5a40e6..26fbb66 100644 --- a/js/pageMinichat/conversations.js +++ b/js/pageMinichat/conversations.js @@ -21,10 +21,11 @@ /** * Représente l'ensemble des conversations affichés. */ -euphorik.Conversations = function(client, formateur, util) { +euphorik.Conversations = function(client, formateur, util, fragment) { this.client = client; this.formateur = formateur; this.util = util; + this.fragment = fragment; // un ensemble des messages (id) auquel l'utilisateur répond (vider après l'envoie du message courant) this.messagesRepond = {}; @@ -57,12 +58,24 @@ euphorik.Conversations.prototype.toggleMessageRepond = function(mess) { }; /** - * Enlève tous les messages auquel l'utilisateur souhaite répond. + * Met à jour le fragment de l'url renseignant sur les conversations ouvertes. + */ +euphorik.Conversations.prototype.mettreAJourFragment = function() { + conv = []; + for(var i = 1; i < this.conversations.length; i++) { + conv.push(this.conversations[i].racine.id) + } + this.fragment.setVal("conv", conv); + this.fragment.write(); +} + +/** + * Enlève tous les messages auquel l'utilisateur souhaite répondre. */ euphorik.Conversations.prototype.enleverMessagesRepond = function() { var thisConversations = this; - objectEach(function(messId, mess) { + objectEach(this.messagesRepond, function(messId, mess) { thisConversations.enleverMessageRepond(mess); }); @@ -93,12 +106,12 @@ euphorik.Conversations.prototype.ajouterMessageRepond = function(mess) { var mess2; for (mess2 in this.messagesRepond) { if (this.messagesRepond.hasOwnProperty(mess2)) { + mess2 = this.messagesRepond[mess2]; break; } } - mess2 = this.messagesRepond[mess2]; - if (!mess2 && mess2.racineId !== mess.racineId) { + if (mess2 && mess2.racineId !== mess.racineId) { this.util.messageDialogue("Impossible de répondre à deux messages ne faisant pas partie de la même conversation"); return; } @@ -156,7 +169,7 @@ euphorik.Conversations.prototype.rafraichireNombreMessagesRepond = function() { */ euphorik.Conversations.prototype.afficherMessagesRepondConversations = function() { var expr = ""; - objectEach(function(messId, mess) { + objectEach(this.messagesRepond, function(messId, mess) { expr += "#" + mess.getId() + ","; }); $(expr).addClass("repondEnEvidence"); @@ -182,13 +195,14 @@ euphorik.Conversations.prototype.getJSONrafraichirMessages = function() { }; euphorik.Conversations.prototype.getJSONConversations = function() { + var thisConversations = this var clientConv = []; this.client.conversations.each(function(i, conv) { clientConv.push({ root : conv.root, page : conv.page, - last_message_id : this.conversations[i + 1] ? this.conversations[i + 1].idDernierMessageAffiche : 0 + last_message_id : thisConversations.conversations[i + 1] ? thisConversations.conversations[i + 1].idDernierMessageAffiche : 0 }); }); return clientConv; @@ -204,11 +218,13 @@ euphorik.Conversations.prototype.ajouterMessages = function(elements, numConvers if (!elements.messages.length) { return this.conversations[numConversation] !== undefined; } - + for (var i = 0; i < elements.messages.length; i++) { - // si une nouvelle conversation a été créée alors on lui donne la racine if (this.ajouterMessage(elements.messages[i], numConversation)) { + // si une nouvelle conversation a été créée alors on lui donne la racine + // TODO : ce block ne devrait pas se trouver ici mais dans "nouvelleConversation" this.conversations[numConversation].setRacine(elements.first); + this.mettreAJourFragment(); } } @@ -231,9 +247,8 @@ euphorik.Conversations.prototype.ajouterMessages = function(elements, numConvers * @return true si une nouvelle conversation a été créée sinon false */ euphorik.Conversations.prototype.ajouterMessage = function(element, numConversation) { - var thisMessages = this; - - // pas d'utilisation de jquery pour des raisons de performance + var thisConversations = this; + var message = new euphorik.Message( this.client, @@ -248,12 +263,12 @@ euphorik.Conversations.prototype.ajouterMessage = function(element, numConversat this.nouvelleConversation( numConversation, function(num) { // fermeture de la conversation - thisMessages.supprimerConversation(num); + thisConversations.supprimerConversation(num); }, function(num) { // insertion du lien vers la conversation thisPage.util.replaceSelection( $("form#posterMessage input.message")[0], - "{" + thisMessages.client.conversations[num-1].root.toString(36) + "}" + "{" + thisConversations.client.conversations[num-1].root.toString(36) + "}" ); } ); @@ -268,7 +283,7 @@ euphorik.Conversations.prototype.nouvelleConversation = function(num, funFermer, var thisMessages = this; this.conversations[num] = new euphorik.Conversation(this, num); - + if (funFermer) { this.conversations[num].eventFermer(funFermer); } @@ -316,6 +331,7 @@ euphorik.Conversations.prototype.supprimerConversation = function(num) { this.client.supprimerConversation(num - 1); this.rafraichirMessages(true); + this.mettreAJourFragment(); }; /**