FIX de plein de truc, j'ai plus la force de regarder toutes les modifs (vive les...
[euphorik.git] / js / pageMinichat.js
index 03024bc..7282a43 100755 (executable)
@@ -26,6 +26,10 @@ function PageMinichat(client, formateur, util)
    
    this.regexMessageTagMatch = /\{.*?\}>/g
    this.regexMessageTagReplace =  /^(.*?\{.*?\}>)*/
+   
+   // permet d'éviter d'envoyer plusieurs messages simultanément en pressant
+   // rapidement sur "enter" par exemple
+   this.envoieMessageEnCours = false
 }
 
 PageMinichat.prototype.contenu = function()
@@ -173,7 +177,7 @@ PageMinichat.prototype.getJSONMessage = function(pseudo, message, repondA)
 }
 
 PageMinichat.prototype.envoyerMessage = function(pseudo, message)
-{
+{   
    var thisPageMinichat = this
 \r
    // (un pseudo vide est autorisé)
@@ -205,6 +209,14 @@ PageMinichat.prototype.envoyerMessage = function(pseudo, message)
       
    this.client.pseudo = pseudo\r
    
+   // évite le double post
+   if (this.envoieMessageEnCours)
+   {
+      this.util.messageDialogue("Message en cours d'envoie...")
+      return
+   }
+   this.envoieMessageEnCours = true
+   
    ;; dumpObj(this.getJSONMessage(pseudo, message, repondA))\r
    jQuery.ajax(\r
       {\r
@@ -214,6 +226,7 @@ PageMinichat.prototype.envoyerMessage = function(pseudo, message)
          dataType : "json",
          beforeSend : function(xmlHttpRequest)
          {
+            // TODO : ça marche ça ??
             xmlHttpRequest.setRequestHeader("X-Requested-With", "")
          },\r
          success : function(data, textStatus)\r
@@ -231,7 +244,12 @@ PageMinichat.prototype.envoyerMessage = function(pseudo, message)
             else if (data["reply"] == "error")
             {
                thisPageMinichat.util.messageDialogue(data["error_message"])
-            }  \r
+            }
+            thisPageMinichat.envoieMessageEnCours = false\r
+         },
+         error : function()
+         {
+            thisPageMinichat.envoieMessageEnCours = false         
          }\r
       }\r
    )
@@ -561,7 +579,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
    var DOM = $(XHTML)
    DOM.each(
       function()
-      {
+      {      
          $(".lienConv", this).click(
             function(event)
             {          
@@ -570,6 +588,49 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
                funClickOuvrirConv(parseInt(racine.substring(1, racine.length - 1), 36))
                return false
             }
+         )         
+         
+         thisConversation.util.infoBulle("Extraction de la conversation", $(".extraire", this))
+         
+         // l'id du message
+         var idMess36 = $(this).attr("id").substr(4)
+         var idMess = parseInt(idMess36, 36)
+         
+         $(this).click(
+            function(event)
+            {
+               if ($(event.target).is("a") || $(event.target).parents("#outilsBan").length > 0) return
+                              
+               // extraction d'une conversation
+               if ($(event.target).is(".extraire"))
+               {
+                  funClickOuvrirConv(idMess)
+                  return
+               }
+            
+               var valCourant = $("input.message").val()
+               if (valCourant == undefined) valCourant = ""
+               var tag = $(".pseudo span.ident", this).text()  + "{" + idMess36 + "}" + ">"
+               if (valCourant.indexOf(tag, 0) == -1)
+                  $("input.message").val(tag + " " + valCourant)
+               thisConversation.util.setCaretToEnd($("form input.message")[0])
+            }
+         )
+         
+         // mise en évidence de la conversation
+         $(".entete", this).hover(
+            function()
+            {
+               thisConversation.decolorerEntetes()
+               thisConversation.afficherConversation(idMess)
+            },
+            // quand on sort de l'entête du message la mise en évidence est enlevée
+            function()
+            {
+               thisConversation.enleverMiseEnEvidence()
+               thisConversation.decolorerEntetes()
+               thisConversation.colorerEntetes()
+            }
          )
          
          if (thisConversation.client.viewTimes)
@@ -620,49 +681,6 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
                   $("#outilsBan", this).hide()
                }
             )
-         
-         thisConversation.util.infoBulle("Extraction de la conversation", $(".extraire", this))
-         
-         // l'id du message
-         var idMess36 = $(this).attr("id").substr(4)
-         var idMess = parseInt(idMess36, 36)
-         
-         $(this).click(
-            function(event)
-            {
-               if ($(event.target).is("a") || $(event.target).parents("#outilsBan").length > 0) return
-                              
-               // extraction d'une conversation
-               if ($(event.target).is(".extraire"))
-               {
-                  funClickOuvrirConv(idMess)
-                  return
-               }
-            
-               var valCourant = $("input.message").val()
-               if (valCourant == undefined) valCourant = ""
-               var tag = $(".pseudo span.ident", this).text()  + "{" + idMess36 + "}" + ">"
-               if (valCourant.indexOf(tag, 0) == -1)
-                  $("input.message").val(tag + " " + valCourant)
-               thisConversation.util.setCaretToEnd($("form input.message")[0])
-            }
-         )\r
-         \r
-         // mise en évidence de la conversation
-         $(".entete", this).hover(\r
-            function()\r
-            {
-               thisConversation.decolorerEntetes()\r
-               thisConversation.afficherConversation(idMess)\r
-            },
-            // quand on sort de l'entête du message la mise en évidence est enlevée
-            function()
-            {
-               thisConversation.enleverMiseEnEvidence()
-               thisConversation.decolorerEntetes()
-               thisConversation.colorerEntetes()
-            }
-         )
       }
    )
    DOM.prependTo("#conversations #" + this.getId())