X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageMinichat%2Fconversations.js;h=0ad7878a2d991ca97907d6e2604a7ef8558d1d5f;hp=277726db92e5ea0d0b6f988631460a68206979ad;hb=a57cb5dd4f773111f734c726f61f06434c39b94e;hpb=4f15129b495827b1894f8a234cc8f32262233fb1 diff --git a/js/pageMinichat/conversations.js b/js/pageMinichat/conversations.js index 277726d..0ad7878 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 = {}; @@ -56,6 +57,18 @@ euphorik.Conversations.prototype.toggleMessageRepond = function(mess) { this.ajouterMessageRepond(mess); }; +/** + * 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. */ @@ -205,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(); } } @@ -232,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, @@ -246,38 +260,19 @@ euphorik.Conversations.prototype.ajouterMessage = function(element, numConversat if (!this.conversations[numConversation]) { nouvelleConversation = true; - this.nouvelleConversation( - numConversation, - function(num) { // fermeture de la conversation - thisMessages.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) + "}" - ); - } - ); + this.nouvelleConversation(numConversation); } this.conversations[numConversation].ajouterMessage(message); return nouvelleConversation; }; -euphorik.Conversations.prototype.nouvelleConversation = function(num, funFermer, funLien) +euphorik.Conversations.prototype.nouvelleConversation = function(num) { var thisMessages = this; this.conversations[num] = new euphorik.Conversation(this, num); - - if (funFermer) { - this.conversations[num].eventFermer(funFermer); - } - - if (funLien) { - this.conversations[num].eventLien(funLien); - } - + this.conversations[num].setFunPage( function(num) { // page suivante thisMessages.client.pageSuivante(num - 1); @@ -317,6 +312,7 @@ euphorik.Conversations.prototype.supprimerConversation = function(num) { this.client.supprimerConversation(num - 1); this.rafraichirMessages(true); + this.mettreAJourFragment(); }; /**