From 9fe75dcc30306cb1dc9b5b1aa438094c2f6175f3 Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Tue, 22 Jul 2008 10:09:36 +0000 Subject: [PATCH] MOD avancement dans la Grande Restructuration --- js/pageMinichat/message.js | 179 +++++++++++++++++-------------------- 1 file changed, 80 insertions(+), 99 deletions(-) diff --git a/js/pageMinichat/message.js b/js/pageMinichat/message.js index f7a1110..a4b8808 100644 --- a/js/pageMinichat/message.js +++ b/js/pageMinichat/message.js @@ -16,74 +16,56 @@ // You should have received a copy of the GNU General Public License // along with Euphorik. If not, see . -function Reponse(id, pseudo, login) -{ - this.id = id - this.pseudo = pseudo - this.login = login - - if (this.pseudo == undefined) - this.pseudo = "" - - if (this.login == undefined) - this.login = "" -} - +euphorik.Reponse = function(id, pseudo, login) { + this.id = id; + this.pseudo = pseudo; + this.login = login; + this.pseudo = pseudo || ""; + this.login = login || ""; +}; /** * Représente un message. */ -function Message(client, formateur, element) -{ - this.client = client - this.formateur = formateur +euphorik.Message = function(client, formateur, element) { + this.client = client; + this.formateur = formateur; - this.id = element["id"] - this.auteurId = element["user_id"] - this.racineId = element["root"] - this.date = element["date"] - this.pseudo = element["nick"] - this.login = element["login"] - this.contenu = element["content"] + this.id = element.id; + this.auteurId = element.user_id; + this.racineId = element.root; + this.date = element.date; + this.pseudo = element.nick; + this.login = element.login; + this.contenu = element.content; - this.appartientAuClient = element["owner"] - this.clientARepondu = element["answered"] - this.estUneReponse = element["is_a_reply"] - this.systeme = element["system"] // est-ce un message 'système' ? - this.setRepondA(element["answer_to"]) // un ensemble de reponse (voir Reponse) indexé par l'id du message de la reponses - this.ekMaster = element["ek_master"] - this.degreeOstentatoire = element["ostentatious_master"] -} + this.appartientAuClient = element.owner; + this.clientARepondu = element.answered; + this.estUneReponse = element.is_a_reply; + this.systeme = element.system; // est-ce un message 'système' ? + this.setRepondA(element.answer_to); // un ensemble de reponse (voir Reponse) indexé par l'id du message de la reponses + this.ekMaster = element.ek_master; + this.degreeOstentatoire = element.ostentatious_master; +}; /** * @param pre est un prefix permettant de créer un Id différent pour deux mêmes messages. * Cela est utile pour afficher plusieurs mêmes messages au sein d'un document XHTML. * voir également la fonction 'XHTML()'. */ -Message.prototype.getId = function(pre) -{ - if (pre == undefined) - pre = "" - return pre + "mess" + this.id.toString(36) -} +euphorik.Message.prototype.getId = function(pre) { + pre = pre || ""; + return pre + "mess" + this.id.toString(36); +}; -/** - * - */ -Message.prototype.setRepondA = function(repondAJSON) -{ - var thisMessage = this - this.repondA = {} +euphorik.Message.prototype.setRepondA = function(repondAJSON) { + var thisMessage = this; + this.repondA = {}; - for(var i = 0; i < repondAJSON.length; i++) - { - thisMessage.repondA[repondAJSON[i]["id"]] = new Reponse( - repondAJSON[i]["id"], - repondAJSON[i]["nick"], - repondAJSON[i]["login"] - ) - } -} + repondAJSON.each(function(i, reponse) { + thisMessage.repondA[reponse.id] = new Reponse(reponse.id, reponse.nick, reponse.login); + }); +}; /** * Renvoie les messages faisant partie d'une conversation. @@ -91,69 +73,69 @@ Message.prototype.setRepondA = function(repondAJSON) * @return les id des messages qui ont été mis en evidence sous la forme * d'un hash (object) {id => 0 | 1 | 2 | 3}. 1 : proprietaire, 2 : reponse directe, 3 : message repondu */ -Message.prototype.getConversation = function(messages) -{ - var thisMessage = this +euphorik.Message.prototype.getConversation = function(messages) { + var thisMessage = this; // les messages faisant partie de la conversation - var messagesEnEvidence = {} + var messagesEnEvidence = {}; - messagesEnEvidence[this.id] = 1 + messagesEnEvidence[this.id] = 1; // recherche les réponses (O(n)) - for (var i = 0; i < messages.messages.length; i++) - if (messages.messages[i].repondA.hasOwnProperty(this.id)) - messagesEnEvidence[messages.messages[i].id] = 2 + messages.messages.each(function(i, mess) { + if (mess.repondA.hasOwnProperty(thisMessage.id)) { + messagesEnEvidence[mess.id] = 2; + } + }); - // parcours en - var f = function(tabIds, premierNiveau) - { - for(var id in tabIds) - { + // parcours en largeur + var f = function(tabIds, premierNiveau) { + objectEach(tabIds, function(id) { // si le message (id) a déjà été traité - if (messagesEnEvidence[id] != undefined && !premierNiveau) - continue + if (!messagesEnEvidence[id] && !premierNiveau) { + continue; + } - var message = messages.messagesParId[id] - if (message != undefined) - { - messagesEnEvidence[id] = premierNiveau ? 3 : (message.auteurId == thisMessage.auteurId ? 1 : 0) - f (message.repondA, false) + var message = messages.messagesParId[id]; + if (!message) { + messagesEnEvidence[id] = premierNiveau ? 3 : (message.auteurId == thisMessage.auteurId ? 1 : 0); + f (message.repondA, false); } - } - } - f(this.repondA, true) + }); + }; + f(this.repondA, true); - return messagesEnEvidence -} + return messagesEnEvidence; +}; /** * Renvoie le message sous la forme de code XHTML (string) prêt à être inséré dans un document. * Aucun callback n'est affecté. */ -Message.prototype.XHTML = function(messagePair, pre) -{ - if (messagePair == undefined) - messagePair = true - if (pre == undefined) - pre = "" +euphorik.Message.prototype.XHTML = function(messagePair, pre) { + messagePair = messagePair || true; + pre = pre || ""; + + thisMessage = this; // construit l'identifiant de la personne var identifiant = - this.client.nickFormat == "nick" || this.login == "" ? this.formateur.traitementComplet(this.pseudo) : + this.client.nickFormat == "nick" || this.login === "" ? this.formateur.traitementComplet(this.pseudo) : (this.client.nickFormat == "login" ? this.formateur.traitementComplet(this.login) : - this.formateur.traitementComplet(this.pseudo) + "(" + this.formateur.traitementComplet(this.login) +")" ) + this.formateur.traitementComplet(this.pseudo) + "(" + this.formateur.traitementComplet(this.login) +")" ); - var XHTMLrepondA = "" - var debut = true - for (var id in this.repondA) - { - if (!debut) XHTMLrepondA += ", " - XHTMLrepondA += this.formateur.traitementComplet(this.repondA[id].pseudo) - debut = false + var XHTMLrepondA = ""; + var debut = true; + objectEach(function(id, rep) { + if (!debut) { + XHTMLrepondA += ", "; + } + XHTMLrepondA += thisMessage.formateur.traitementComplet(rep.pseudo); + debut = false; + }); + if (XHTMLrepondA) { + XHTMLrepondA = "" + XHTMLrepondA + ""; } - if (XHTMLrepondA != "") - XHTMLrepondA = "" + XHTMLrepondA + "" return "
" + this.auteurId + "" + identifiant + "" + XHTMLrepondA + "" + this.formateur.traitementComplet(this.contenu, this.pseudo) + "" + - "
" -} - + ""; +}; -- 2.45.2