this.login = element.login;\r
this.contenu = element.content;\r
\r
+ // l'ensemble des id des messages qui reponde à ce message, exemple : {45:true, 32:true} (le 'true' ne sert à rien ^_^)\r
+ // mis à jour au fur à mesure que des messages sont ajoutés aux conversations\r
+ this.estReponduPar = {};\r
+ \r
this.appartientAuClient = element.owner;\r
this.clientARepondu = element.answered;\r
this.estUneReponse = element.is_a_reply;\r
\r
// les messages faisant partie de la conversation\r
var messagesEnEvidence = {};\r
- \r
messagesEnEvidence[this.id] = 1;\r
\r
- // recherche les réponses (O(n))\r
- messages.messages.each(function(i, mess) {\r
- if (mess.repondA.hasOwnProperty(thisMessage.id)) {\r
- messagesEnEvidence[mess.id] = 2;\r
- }\r
- });\r
- \r
- // parcours en largeur\r
- var f = function(tabIds, premierNiveau) {\r
- objectEach(tabIds, function(id) {\r
- // si le message (id) a déjà été traité\r
- if (!messagesEnEvidence[id] && !premierNiveau) {\r
- continue;\r
- }\r
- \r
- var message = messages.messagesParId[id];\r
- if (!message) { \r
- messagesEnEvidence[id] = premierNiveau ? 3 : (message.auteurId === thisMessage.auteurId ? 1 : 0);\r
- f (message.repondA, false);\r
+ // parcours en profondeur\r
+ var f = function(ids, premierNiveau, ensemble, evidence) {\r
+ objectEach(ids, function(id) {\r
+ if (!messagesEnEvidence[id] || premierNiveau) {\r
+ var message = messages.messagesParId[id];\r
+ if (message) {\r
+ messagesEnEvidence[id] = premierNiveau ? evidence : (message.auteurId === thisMessage.auteurId ? 1 : 0);\r
+ f(message[ensemble], false, ensemble, evidence);\r
+ }\r
}\r
});\r
};\r
- f(this.repondA, true);\r
+ \r
+ // remonte le temps\r
+ f(this.estReponduPar, true, "estReponduPar", 2);\r
+ \r
+ // descent le temps\r
+ f(this.repondA, true, "repondA", 3); \r
\r
return messagesEnEvidence;\r
};\r
* Aucun callback n'est affecté.\r
*/\r
euphorik.Message.prototype.XHTML = function(messagePair, pre) {\r
- messagePair = messagePair || true;\r
+ if (messagePair === undefined) {\r
+ messagePair = true;\r
+ }\r
pre = pre || "";\r
\r
thisMessage = this;\r
\r
var XHTMLrepondA = "";\r
var debut = true;\r
- objectEach(function(id, rep) {\r
+ objectEach(this.repondA, function(id, rep) {\r
if (!debut) {\r
XHTMLrepondA += ", ";\r
}\r
(this.systeme ? " systeme" : "") +\r
(this.ekMaster ? " ekMaster" + this.degreeOstentatoire : "") +\r
"\">" +\r
- "<div class=\"outilsMess\"><div class=\"extraire\"></div><div class=\"extraireCompletement\"></div></div><span class=\"entete\">" +\r
- "<span class=\"dateComplete\">[<span class=\"date\">" + this.date + "</span>]</span>" +\r
- "<span class=\"pseudo\"><span class=\"id\" style=\"display: none\">" + this.auteurId + "</span class=\"ident\">" + identifiant + "</span></span><span class=\"delimitationEntete\"></span>" +\r
+ "<span class=\"entete\">" +\r
+ "<span class=\"dateComplete\">[<span class=\"date\">" + this.date + "</span>]</span>" +\r
+ "<span class=\"pseudo\"><span class=\"id\" style=\"display: none\">" + this.auteurId + "</span><span class=\"ident\">" + identifiant + "</span></span>" +\r
+ "</span>" + \r
+ "<span class=\"delimitationEntete\"></span>" +\r
XHTMLrepondA +\r
"<span class=\"contenu\">" + this.formateur.traitementComplet(this.contenu, this.pseudo) + "</span>" +\r
"</div>";\r