MOD gestion des pages (pas fini)
authorGreg Burri <greg.burri@gmail.com>
Tue, 15 Apr 2008 04:31:09 +0000 (04:31 +0000)
committerGreg Burri <greg.burri@gmail.com>
Tue, 15 Apr 2008 04:31:09 +0000 (04:31 +0000)
css/1/pageMinichat.css
doc/protocole2.txt
js/euphorik.js
js/pageMinichat.js
modules/erl/euphorik_protocole.erl

index ad139db..d965d6a 100755 (executable)
 #page.minichat #conversations .titre .fermer:hover {
        background-color: #c95656
 }      
+
+#page.minichat #conversations .titre .next,
+#page.minichat #conversations .titre .prev
+{
+       display:none
+}
        \r
 #page.minichat #pages {\r
        margin-top: 10px;\r
index 93efeb2..f968304 100644 (file)
@@ -116,7 +116,6 @@ c -> s
       <cookie>LKJDLAKSJBFLKASN</cookie>
       <nombreMessage>10</nombreMessage>
       <dernierMessageId>6ZR</dernierMessageId>
-      <!-- [..] -->
    </action>
  
 s -> c
index a20ee37..8487f77 100755 (executable)
@@ -12,7 +12,7 @@
   * Normalement 'const' à la place de 'var' mais non supporté par IE7.
   */\r
 var conf = {\r
-   nbMessageAffiche : 80, // (par page)
+   nbMessageAffiche : 10, // (par page)
    pseudoDefaut : "<nick>",\r
    tempsAffichageMessageDialogue : 4000, // en ms\r
    smiles : {   \r
@@ -433,6 +433,24 @@ Client.prototype.setCss = function(css)
       this.flush()   
 }
 
+Client.prototype.pageSuivante = function(numConv)
+{
+   if (numConv < 0)
+      this.pagePrincipale += 1
+   else
+      this.conversations[numConv].page += 1
+   this.flush(false)
+}
+
+Client.prototype.pagePrecedente = function(numConv)
+{
+   if (numConv < 0)
+      this.pagePrincipale -= 1
+   else 
+      this.conversations[numConv].page -= 1
+   this.flush(false)
+}
+
 /**
   * Ajoute une conversation à la vue de l'utilisateur.
   * Le profile de l'utilisateur est directement sauvegardé sur le serveur.
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
                   }
                )
index 8fad0e9..19932f2 100755 (executable)
@@ -138,16 +138,9 @@ profile(Action) ->
 % Renvoie les messages appropriés.
 refreshMessage(Action) ->\r
    simple_xml_to_string(
-      case {
-         xmerl_xpath:string("nombreMessage", Action), % le nombre de message qu'affiche le client
-         xmerl_xpath:string("page", Action) % la page désiré, la première (les derniers messages) étant la 1
-         } of
-         {
-            [#xmlElement{content = [#xmlText{value = Nb_message_str}]}],
-            [#xmlElement{content = [#xmlText{value = Page_str}]}]
-         } ->         
+      case xmerl_xpath:string("nombreMessage", Action) of % le nombre de message qu'affiche le client
+         [#xmlElement{content = [#xmlText{value = Nb_message_str}]}] ->         
             Nb_message = list_to_integer(Nb_message_str),
-            Page = list_to_integer(Page_str),
             Dernier_id = case xmerl_xpath:string("dernierMessageId", Action) of % l'id du dernier message que connait le client
                [#xmlElement{content = [#xmlText{value = D}]}] -> erlang:list_to_integer(D, 36);
                _ -> 0
@@ -207,7 +200,7 @@ refreshMessage(Action) ->
                         ]
                      }\r
                   end,            
-                  euphorik_minichat_conversation:conversations(User#user.conversations, Nb_message, Dernier_id, Page)\r
+                  euphorik_minichat_conversation:conversations(User#user.conversations, Nb_message, Dernier_id, User#user.page_principale)\r
                )
             }];
          _ ->