MOD avancement dans la Grande Restructuration
authorGreg Burri <greg.burri@gmail.com>
Tue, 22 Jul 2008 10:09:36 +0000 (10:09 +0000)
committerGreg Burri <greg.burri@gmail.com>
Tue, 22 Jul 2008 10:09:36 +0000 (10:09 +0000)
js/pageMinichat/message.js

index f7a1110..a4b8808 100644 (file)
 // You should have received a copy of the GNU General Public License\r
 // along with Euphorik.  If not, see <http://www.gnu.org/licenses/>.\r
  \r
-function Reponse(id, pseudo, login)\r
-{\r
-   this.id = id\r
-   this.pseudo = pseudo\r
-   this.login = login\r
-   \r
-   if (this.pseudo == undefined)\r
-      this.pseudo = ""\r
-   \r
-   if (this.login == undefined)\r
-      this.login = ""\r
-}\r
-\r
+euphorik.Reponse = function(id, pseudo, login) {\r
+   this.id = id;\r
+   this.pseudo = pseudo;\r
+   this.login = login;\r
+   this.pseudo = pseudo || "";\r
+   this.login = login || "";\r
+};\r
 \r
 /**\r
   * Représente un message.\r
   */\r
-function Message(client, formateur, element)\r
-{\r
-   this.client = client\r
-   this.formateur = formateur\r
+euphorik.Message = function(client, formateur, element) {\r
+   this.client = client;\r
+   this.formateur = formateur;\r
    \r
-   this.id = element["id"]\r
-   this.auteurId = element["user_id"]\r
-   this.racineId = element["root"]\r
-   this.date = element["date"]\r
-   this.pseudo = element["nick"]\r
-   this.login = element["login"]\r
-   this.contenu = element["content"]\r
+   this.id = element.id;\r
+   this.auteurId = element.user_id;\r
+   this.racineId = element.root;\r
+   this.date = element.date;\r
+   this.pseudo = element.nick;\r
+   this.login = element.login;\r
+   this.contenu = element.content;\r
    \r
-   this.appartientAuClient = element["owner"]\r
-   this.clientARepondu = element["answered"]\r
-   this.estUneReponse = element["is_a_reply"]\r
-   this.systeme = element["system"] // est-ce un message 'système' ?\r
-   this.setRepondA(element["answer_to"]) // un ensemble de reponse (voir Reponse) indexé par l'id du message de la reponses\r
-   this.ekMaster = element["ek_master"]\r
-   this.degreeOstentatoire = element["ostentatious_master"]\r
-}\r
+   this.appartientAuClient = element.owner;\r
+   this.clientARepondu = element.answered;\r
+   this.estUneReponse = element.is_a_reply;\r
+   this.systeme = element.system; // est-ce un message 'système' ?\r
+   this.setRepondA(element.answer_to); // un ensemble de reponse (voir Reponse) indexé par l'id du message de la reponses\r
+   this.ekMaster = element.ek_master;\r
+   this.degreeOstentatoire = element.ostentatious_master;\r
+};\r
 \r
 /**\r
   * @param pre est un prefix permettant de créer un Id différent pour deux mêmes messages.\r
   *   Cela est utile pour afficher plusieurs mêmes messages au sein d'un document XHTML.\r
   *   voir également la fonction 'XHTML()'.\r
   */\r
-Message.prototype.getId = function(pre)\r
-{\r
-   if (pre == undefined)\r
-      pre = ""\r
-   return pre + "mess" + this.id.toString(36)\r
-}\r
+euphorik.Message.prototype.getId = function(pre) {\r
+   pre = pre || "";\r
+   return pre + "mess" + this.id.toString(36);\r
+};\r
 \r
-/**\r
-  *\r
-  */\r
-Message.prototype.setRepondA = function(repondAJSON)\r
-{\r
-   var thisMessage = this\r
-   this.repondA = {}\r
+euphorik.Message.prototype.setRepondA = function(repondAJSON) {\r
+   var thisMessage = this;\r
+   this.repondA = {};\r
    \r
-   for(var i = 0; i < repondAJSON.length; i++)\r
-   {\r
-      thisMessage.repondA[repondAJSON[i]["id"]] = new Reponse(\r
-         repondAJSON[i]["id"],\r
-         repondAJSON[i]["nick"],\r
-         repondAJSON[i]["login"]\r
-      )\r
-   }\r
-}\r
+   repondAJSON.each(function(i, reponse) {\r
+      thisMessage.repondA[reponse.id] = new Reponse(reponse.id, reponse.nick, reponse.login);\r
+   });\r
+};\r
 \r
 /**\r
   * Renvoie les messages faisant partie d'une conversation.\r
@@ -91,69 +73,69 @@ Message.prototype.setRepondA = function(repondAJSON)
   * @return les id des messages qui ont été mis en evidence sous la forme\r
   *   d'un hash (object) {id => 0 | 1 | 2 | 3}. 1 : proprietaire, 2 : reponse directe, 3 : message repondu\r
   */\r
-Message.prototype.getConversation = function(messages)\r
-{\r
-   var thisMessage = this\r
+euphorik.Message.prototype.getConversation = function(messages) {\r
+   var thisMessage = this;\r
 \r
    // les messages faisant partie de la conversation\r
-   var messagesEnEvidence = {}\r
+   var messagesEnEvidence = {};\r
    \r
-   messagesEnEvidence[this.id] = 1\r
+   messagesEnEvidence[this.id] = 1;\r
    \r
    // recherche les réponses (O(n))\r
-   for (var i = 0; i < messages.messages.length; i++)\r
-      if (messages.messages[i].repondA.hasOwnProperty(this.id))\r
-         messagesEnEvidence[messages.messages[i].id] = 2\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 \r
-   var f = function(tabIds, premierNiveau)\r
-   {\r
-      for(var id in tabIds)\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] != undefined && !premierNiveau)\r
-            continue\r
+         if (!messagesEnEvidence[id] && !premierNiveau) {\r
+            continue;\r
+         }\r
            \r
-         var message = messages.messagesParId[id]\r
-         if (message != undefined)\r
-         {         \r
-            messagesEnEvidence[id] = premierNiveau ? 3 : (message.auteurId == thisMessage.auteurId ? 1 : 0)\r
-            f (message.repondA, false)\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
          }\r
-      }\r
-   }\r
-   f(this.repondA, true)\r
+      });\r
+   };\r
+   f(this.repondA, true);\r
    \r
-   return messagesEnEvidence\r
-}\r
+   return messagesEnEvidence;\r
+};\r
 \r
 /**\r
   * Renvoie le message sous la forme de code XHTML (string) prêt à être inséré dans un document.\r
   * Aucun callback n'est affecté.\r
   */\r
-Message.prototype.XHTML = function(messagePair, pre)\r
-{\r
-   if (messagePair == undefined)\r
-      messagePair = true\r
-   if (pre == undefined)\r
-      pre = ""\r
+euphorik.Message.prototype.XHTML = function(messagePair, pre) {\r
+   messagePair = messagePair || true;\r
+   pre = pre || "";\r
+   \r
+   thisMessage = this;\r
       \r
    // construit l'identifiant de la personne\r
    var identifiant = \r
-      this.client.nickFormat == "nick" || this.login == "" ? this.formateur.traitementComplet(this.pseudo) : \r
+      this.client.nickFormat == "nick" || this.login === "" ? this.formateur.traitementComplet(this.pseudo) : \r
       (this.client.nickFormat == "login" ? this.formateur.traitementComplet(this.login) : \r
-      this.formateur.traitementComplet(this.pseudo) + "<span class=\"login\">(" + this.formateur.traitementComplet(this.login) +")</span>" )\r
+      this.formateur.traitementComplet(this.pseudo) + "<span class=\"login\">(" + this.formateur.traitementComplet(this.login) +")</span>" );\r
 \r
-   var XHTMLrepondA = ""\r
-   var debut = true\r
-   for (var id in this.repondA)\r
-   {\r
-      if (!debut) XHTMLrepondA += ", "\r
-      XHTMLrepondA += this.formateur.traitementComplet(this.repondA[id].pseudo)\r
-      debut = false\r
+   var XHTMLrepondA = "";\r
+   var debut = true;\r
+   objectEach(function(id, rep) {\r
+      if (!debut) {\r
+         XHTMLrepondA += ", ";\r
+      }\r
+      XHTMLrepondA += thisMessage.formateur.traitementComplet(rep.pseudo);\r
+      debut = false;\r
+   });\r
+   if (XHTMLrepondA) {\r
+      XHTMLrepondA = "<span class=\"repondA\">" + XHTMLrepondA + "</span><span class=\"delimitationRepondA\"></span>";\r
    }\r
-   if (XHTMLrepondA != "")\r
-      XHTMLrepondA = "<span class=\"repondA\">" + XHTMLrepondA + "</span><span class=\"delimitationRepondA\"></span>"\r
    \r
    return "<div id=\"" + this.getId(pre) + "\" class=\"" + (messagePair ? "messagePair" : "messageImpair") + " message" +\r
          (this.appartientAuClient ? " proprietaire" : "")  +\r
@@ -167,6 +149,5 @@ Message.prototype.XHTML = function(messagePair, pre)
          "<span class=\"pseudo\"><span class=\"id\" style=\"display: none\">" + this.auteurId + "</span class=\"ident\">" + identifiant + "</span></span><span class=\"delimitationEntete\"></span>" +\r
          XHTMLrepondA +\r
          "<span class=\"contenu\">" + this.formateur.traitementComplet(this.contenu, this.pseudo) + "</span>" +\r
-      "</div>"\r
-}\r
-\r
+      "</div>";\r
+};\r