MOD gestion des pages (pas fini)
[euphorik.git] / js / pageMinichat.js
index ef36892..c41aa6a 100755 (executable)
@@ -308,7 +308,7 @@ function Conversation(num, util, formateur, funFermer)
    //alert("ok")
    var thisConversation = this
 
-   this.num = num
+   this.num = num // peut changer au cours de la vie de la conversation
    this.id = Math.random()*100000000000000000
    this.messageOver = null // le message sur lequel se trouve le curseur
    this.util = util
@@ -316,13 +316,11 @@ function Conversation(num, util, formateur, funFermer)
    this.messages = new Array()
    this.messagesParId = new Object()
 
-   this.page = 1 // par défaut on se trouve sur la première page
-
    jQuery("#conversations").append(
       '<div id="' + this.getId() + '" class="conversation">\
       <div class="titre">' +
          (funFermer == undefined ? '' : '<div class="fermer">x</div>') +
-         '&lt; 1 &gt;\
+         '<span class="prev">&lt;</span><span class="numPage">1</span><span class="next">&gt;</span>\
          </div>\
       </div>'
    )
@@ -347,6 +345,28 @@ function Conversation(num, util, formateur, funFermer)
       )
 }
 
+/**
+  * Défini les fonctions (callback) appelées lorsque l'on change de page.
+  * @funNext appelé lorsque l'on revient une page en arrière
+  * @funPrev appelé lorsque l'on passe à la page suisvante
+  * @pageCourante la page courante
+  * @dernierePage true si c'est la dernière page sinon false
+  */
+Conversation.prototype.initPage = function(funNext, funPrev, pageCourante, dernierePage)
+{
+   var thisConversation = this
+
+   jQuery("#conversations #" + this.getId() + " .next").click(
+      function() { funNext(thisConversation.num) }
+   )
+   jQuery("#conversations #" + this.getId() + " .prev").click(
+      function() { funPrev(thisConversation.num) }
+   )
+   
+   jQuery("#conversations #" + this.getId() + " .next").css("display", pageCourante == 1 ? "none" : "inline")
+   jQuery("#conversations #" + this.getId() + " .prev").css("display", dernierePage ? "none" : "inline")
+}
+
 /**
   * Retourne l'id de la conversation sous la forme (par exemple) "conv3".
   */
@@ -547,9 +567,9 @@ Messages.prototype.getXMLrafraichirMessages = function()
    nodeNombreMessage.appendChild(XMLDocument.createTextNode(conf.nbMessageAffiche))
    XMLDocument.documentElement.appendChild(nodeNombreMessage)
    
-   var nodePage = XMLDocument.createElement("page")
+   /*var nodePage = XMLDocument.createElement("page")
    nodePage.appendChild(XMLDocument.createTextNode(this.conversations[0].page))
-   XMLDocument.documentElement.appendChild(nodePage)
+   XMLDocument.documentElement.appendChild(nodePage)*/
    
    // les conversations
    /* Obsolète, le serveur les recupères directement auprès des informations utilisateurs
@@ -649,7 +669,6 @@ Messages.prototype.supprimerConversation = function(num)
    this.rafraichirMessages(true)
 }
 
-
 /**
   * Ajuste la largeur des conversations en fonction de leur nombre. modifie l'attribut CSS 'width'.
   */
@@ -700,18 +719,16 @@ Messages.prototype.viderMessages = function()
   */
 Messages.prototype.rafraichirMessages = function(vider)
 {
+   var thisMessages = this // caisupair javacrypte
+   
    if (this.attenteCourante != null)
       this.attenteCourante.abort()
-      
+   
    if (vider == undefined)
       vider = false
    
-   var thisMessages = this // caisupair javacrypte
-   
    if (vider)
-   {
-      this.idDernierMessage = null
-   }\r
+      this.idDernierMessage = null\r
       
    this.util.xmlVersAction(this.getXMLrafraichirMessages()).action.dump()
    //alert(this.util.xmlVersAction(this.getXMLrafraichirMessages()).action)
@@ -726,13 +743,7 @@ Messages.prototype.rafraichirMessages = function(vider)
                thisMessages.util.serializer.serializeToString(data).dump()\r
             
                if (vider)
-               {
                   thisMessages.viderMessages()
-                  /* Obsolète : pas besoin de supprimer les conversations
-                  for (var i = 1; i < this.conversations.length; i++)
-                     this.supprimerConversation(1)
-                     */
-               }
                
                //thisMessages.MAJPages(parseInt(jQuery("nbPage", data.documentElement).text()))
                
@@ -740,7 +751,7 @@ Messages.prototype.rafraichirMessages = function(vider)
                var numConv = 0
                jQuery("conversation", data.documentElement).each(
                   function(i)
-                  {
+                  { 
                      var messages = []
                      jQuery("message", this).each(
                         function(j)
@@ -751,6 +762,19 @@ Messages.prototype.rafraichirMessages = function(vider)
                      )
                      //alert("ajoutMess : " + messages.length + " " + numConv)
                      thisMessages.ajouterMessages(messages, numConv)
+                     
+                     thisMessages.conversations[numConv].initPage(
+                        function(num) // page suivante
+                        {
+                           thisMessages.client.pageSuivante(num - 1)
+                        },
+                        function(num) // page précédente
+                        {
+                           thisMessages.client.pagePrecedente(num - 1)
+                        },
+                        numConv == 0 ? thisMessages.client.pagePrincipale : thisMessages.client.conversations[numConv - 1].page,
+                        jQuery("autresPages", this).text() != "true"
+                     )
                      numConv += 1
                   }
                )