/**\r
* Représente l'ensemble des conversations affichés.\r
*/\r
-euphorik.Conversations = function(client, formateur, util) {\r
+euphorik.Conversations = function(client, formateur, util, fragment) {\r
this.client = client;\r
this.formateur = formateur;\r
this.util = util;\r
+ this.fragment = fragment;\r
\r
// un ensemble des messages (id) auquel l'utilisateur répond (vider après l'envoie du message courant)\r
this.messagesRepond = {};\r
\r
this.trollIdCourant = 0;\r
\r
- this.pageEvent = new euphorik.PageEvent("chat", this.util);\r
+ this.comet = new Comet("chat", euphorik.conf.versionProtocole);\r
};\r
\r
// les messages auquels l'utilisateur répond et qui sont insérés dans le document XHTML\r
};\r
\r
/**\r
- * Enlève tous les messages auquel l'utilisateur souhaite répond.\r
+ * Met à jour le fragment de l'url renseignant sur les conversations ouvertes.\r
+ */\r
+euphorik.Conversations.prototype.mettreAJourFragment = function() {\r
+ conv = [];\r
+ for(var i = 1; i < this.conversations.length; i++) {\r
+ conv.push(this.conversations[i].racine.id)\r
+ }\r
+ this.fragment.setVal("conv", conv);\r
+ this.fragment.write();\r
+}\r
+\r
+/**\r
+ * Enlève tous les messages auquel l'utilisateur souhaite répondre.\r
*/\r
euphorik.Conversations.prototype.enleverMessagesRepond = function() {\r
var thisConversations = this;\r
\r
- objectEach(function(messId, mess) {\r
+ objectEach(this.messagesRepond, function(messId, mess) {\r
thisConversations.enleverMessageRepond(mess);\r
});\r
\r
var mess2;\r
for (mess2 in this.messagesRepond) {\r
if (this.messagesRepond.hasOwnProperty(mess2)) {\r
+ mess2 = this.messagesRepond[mess2];\r
break;\r
}\r
}\r
- mess2 = this.messagesRepond[mess2];\r
\r
- if (!mess2 && mess2.racineId !== mess.racineId) {\r
+ if (mess2 && mess2.racineId !== mess.racineId) {\r
this.util.messageDialogue("Impossible de répondre à deux messages ne faisant pas partie de la même conversation");\r
return;\r
}\r
*/\r
euphorik.Conversations.prototype.afficherMessagesRepondConversations = function() {\r
var expr = "";\r
- objectEach(function(messId, mess) {\r
+ objectEach(this.messagesRepond, function(messId, mess) {\r
expr += "#" + mess.getId() + ",";\r
});\r
$(expr).addClass("repondEnEvidence");\r
};\r
\r
euphorik.Conversations.prototype.getJSONConversations = function() {\r
+ var thisConversations = this\r
var clientConv = [];\r
\r
this.client.conversations.each(function(i, conv) {\r
clientConv.push({\r
root : conv.root,\r
page : conv.page,\r
- last_message_id : this.conversations[i + 1] ? this.conversations[i + 1].idDernierMessageAffiche : 0\r
+ last_message_id : thisConversations.conversations[i + 1] ? thisConversations.conversations[i + 1].idDernierMessageAffiche : 0\r
});\r
});\r
return clientConv;\r
if (!elements.messages.length) {\r
return this.conversations[numConversation] !== undefined;\r
}\r
-\r
+ \r
for (var i = 0; i < elements.messages.length; i++) {\r
- // si une nouvelle conversation a été créée alors on lui donne la racine\r
if (this.ajouterMessage(elements.messages[i], numConversation)) {\r
+ // si une nouvelle conversation a été créée alors on lui donne la racine\r
+ // TODO : ce block ne devrait pas se trouver ici mais dans "nouvelleConversation"\r
this.conversations[numConversation].setRacine(elements.first);\r
+ this.mettreAJourFragment();\r
}\r
}\r
\r
* @return true si une nouvelle conversation a été créée sinon false\r
*/\r
euphorik.Conversations.prototype.ajouterMessage = function(element, numConversation) {\r
- var thisMessages = this;\r
-\r
- // pas d'utilisation de jquery pour des raisons de performance \r
+ var thisConversations = this;\r
+ \r
var message = \r
new euphorik.Message(\r
this.client,\r
this.nouvelleConversation(\r
numConversation,\r
function(num) { // fermeture de la conversation\r
- thisMessages.supprimerConversation(num);\r
+ thisConversations.supprimerConversation(num);\r
},\r
function(num) { // insertion du lien vers la conversation\r
thisPage.util.replaceSelection(\r
$("form#posterMessage input.message")[0],\r
- "{" + thisMessages.client.conversations[num-1].root.toString(36) + "}"\r
+ "{" + thisConversations.client.conversations[num-1].root.toString(36) + "}"\r
);\r
}\r
);\r
var thisMessages = this;\r
\r
this.conversations[num] = new euphorik.Conversation(this, num);\r
- \r
+ \r
if (funFermer) {\r
this.conversations[num].eventFermer(funFermer);\r
}\r
this.client.supprimerConversation(num - 1);\r
\r
this.rafraichirMessages(true);\r
+ this.mettreAJourFragment();\r
};\r
\r
/**\r
});\r
}\r
\r
- this.pageEvent.waitEvent(\r
+ this.comet.waitEvent(\r
function() { return thisMessages.getJSONrafraichirMessages(); },\r
{\r
"new_troll" :\r