FIX légère optimisation du rafraichissement des messages
[euphorik.git] / js / pageMinichat.js
index ed0321c..217069d 100755 (executable)
@@ -15,11 +15,12 @@ function PageMinichat(client, formateur, util)
 PageMinichat.prototype.contenu = function()
 {
    return '\
+<div id="trollCourant">Troll de la semaine : <span class="troll"></span></div>\
 <form method="post" action="">\
    <p>\
       <input class="captcha" name="captcha" type="text" size="8" maxlength="8"></input>\
-      <input class="pseudo" name="pseudo" type="text" size="12" maxlength="50" value="&lt;nick&gt;"></input>\
-      <input class="message" name="message" type="text" size="80" maxlength="500" value=""></input>\
+      <input class="pseudo" name="pseudo" type="text" maxlength="50" value="&lt;nick&gt;"></input>\
+      <input class="message" name="message" type="text" maxlength="500" value=""></input>\
       <button class="smiles"></button>\
       <button class="return"></button>\
    </p>\
@@ -96,8 +97,12 @@ PageMinichat.prototype.charger = function()
    $("form button.smiles").hover(
       function(e)
       {
-         var offset = $(e.target).offset()
-         $("#smiles").css("top", offset.top).css("left", offset.left).show()
+         var position = $(e.target).offset()
+         // le décalage pour ne pas dépasser à droite (10 correspond à la marge pour éviter de coller le bord)
+         var decalage = $("body").width() - $("#smiles").width() - position.left - 10
+         decalage = decalage > 0 ? 0 : decalage
+         
+         $("#smiles").css("top", position.top).css("left", position.left + decalage).show()
       },
       function(e){}
    )
@@ -122,7 +127,7 @@ PageMinichat.prototype.charger = function()
             $("form input.message").val()
          )
             
-         $("form input.message")[0].focus()
+         $("form input.message").focus()
       }
       
    $("form").keypress(
@@ -487,10 +492,10 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
       if (this.messages[i].id > this.idDernierMessageAffiche)
       {      
          var message = this.messages[i]
-         
+        
          // construit l'identifiant de la personne
          var identifiant = 
-            this.client.nickFormat == "nick" ? this.formateur.traitementComplet(message.pseudo) : 
+            this.client.nickFormat == "nick" || message.login == "" ? this.formateur.traitementComplet(message.pseudo) : 
             (this.client.nickFormat == "login" ? this.formateur.traitementComplet(message.login) : 
             this.formateur.traitementComplet(message.pseudo) + "<span class=\"login\">(" + this.formateur.traitementComplet(message.login) +")</span>" )
          
@@ -547,7 +552,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
                function(e)
                {     
                   var userId =  parseInt($(this).attr("id").substr(4))
-                  var element = $(e.target)
+                  var element = $(this)
                   var h = element.height()
                   var offset = element.offset()
                   var outils = $("#outilsBan").css("top", offset.top - 2).css("left", offset.left - 2).height(h < 16 ? 16 : h).width(element.width() + 16 * 3 + 4 + 64).show()
@@ -671,6 +676,8 @@ function Messages(client, formateur, util)
    this.conversations = new Array() // les conversations, la première représente la conversation principale
    this.nouvelleConversation(0)
    
+   this.trollIdCourant = 0
+   
    this.pageEvent = new PageEvent("chat", this.util)
 }
 
@@ -682,10 +689,11 @@ Messages.prototype.getJSONrafraichirMessages = function()
    var mess =  {
       "message_count" : conf.nbMessageAffiche,
       "main_page" : this.client.pagePrincipale,
-      "conversations" : this.getJSONConversations()
+      "conversations" : this.getJSONConversations(),
+      "troll_id" : this.trollIdCourant
    }
    
-   if (this.client.cookie != null) mess["cookie"] = this.client.cookie;
+   if (this.client.cookie != null) mess["cookie"] = this.client.cookie
    mess["last_message_id"] = this.conversations[0].idDernierMessageAffiche
    
    return mess
@@ -709,8 +717,8 @@ Messages.prototype.getJSONConversations = function()
   */
 Messages.prototype.ajouterMessages = function(elements, numConversation)
 {
-   if (elements["messages"].length == 0 && typeof(this.conversations[numConversation]) == "undefined")
-      return false
+   if (elements["messages"].length == 0)
+      return this.conversations[numConversation] != undefined
 
    for (var i = 0; i < elements["messages"].length; i++)
       this.ajouterMessage(elements["messages"][i], numConversation)
@@ -894,21 +902,33 @@ Messages.prototype.rafraichirMessages = function(vider)
       function() { return thisMessages.getJSONrafraichirMessages() },
       function(data)
       {
-            if (vider)
-            {
-               thisMessages.viderMessages()
-               vider = false
-            }
-            
-            // ajoute les messages reçus à leur conversation respective
-            for (var numConv = 0; numConv < data["conversations"].length; numConv++)
-            {
-               if (! thisMessages.ajouterMessages(data["conversations"][numConv], numConv))
+         if (vider)
+         {
+            thisMessages.viderMessages()
+            vider = false
+         }
+               
+         // en fonction du message
+         switch(data["reply"])
+         {
+            case "new_troll" :
+               thisMessages.trollIdCourant = data["troll_id"]
+               $("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"]))
+               $("#trollCourant .troll a[@rel*=lightbox]").lightBox()
+               break
+               
+            case "new_messages" :                        
+               // ajoute les messages reçus à leur conversation respective
+               for (var numConv = 0; numConv < data["conversations"].length; numConv++)
                {
-                  thisMessages.util.messageDialogue("La conversation {" + thisMessages.client.conversations[numConv -1].root.toString(36) + "} n'existe pas")
-                  thisMessages.client.supprimerConversation(numConv - 1) 
+                  if (! thisMessages.ajouterMessages(data["conversations"][numConv], numConv))
+                  {
+                     thisMessages.util.messageDialogue("La conversation {" + thisMessages.client.conversations[numConv -1].root.toString(36) + "} n'existe pas")
+                     thisMessages.client.supprimerConversation(numConv - 1) 
+                  }
                }
-            }
+               break
+         }
       }
    )
 }