From 0531ee46484ef22f402191cc4dc84ca07f155fe4 Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Tue, 15 Apr 2008 04:31:09 +0000 Subject: [PATCH] MOD gestion des pages (pas fini) --- css/1/pageMinichat.css | 6 +++ doc/protocole2.txt | 1 - js/euphorik.js | 20 +++++++++- js/pageMinichat.js | 64 ++++++++++++++++++++---------- modules/erl/euphorik_protocole.erl | 13 ++---- 5 files changed, 72 insertions(+), 32 deletions(-) diff --git a/css/1/pageMinichat.css b/css/1/pageMinichat.css index ad139db..d965d6a 100755 --- a/css/1/pageMinichat.css +++ b/css/1/pageMinichat.css @@ -174,6 +174,12 @@ #page.minichat #conversations .titre .fermer:hover { background-color: #c95656 } + +#page.minichat #conversations .titre .next, +#page.minichat #conversations .titre .prev +{ + display:none +} #page.minichat #pages { margin-top: 10px; diff --git a/doc/protocole2.txt b/doc/protocole2.txt index 93efeb2..f968304 100644 --- a/doc/protocole2.txt +++ b/doc/protocole2.txt @@ -116,7 +116,6 @@ c -> s LKJDLAKSJBFLKASN 10 6ZR - s -> c diff --git a/js/euphorik.js b/js/euphorik.js index a20ee37..8487f77 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -12,7 +12,7 @@ * Normalement 'const' à la place de 'var' mais non supporté par IE7. */ var conf = { - nbMessageAffiche : 80, // (par page) + nbMessageAffiche : 10, // (par page) pseudoDefaut : "", tempsAffichageMessageDialogue : 4000, // en ms smiles : { @@ -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. diff --git a/js/pageMinichat.js b/js/pageMinichat.js index ef36892..c41aa6a 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -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( '
\
' + (funFermer == undefined ? '' : '
x
') + - '< 1 >\ + '<1>\
\
' ) @@ -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 - } + this.idDernierMessage = null 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() 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 } ) diff --git a/modules/erl/euphorik_protocole.erl b/modules/erl/euphorik_protocole.erl index 8fad0e9..19932f2 100755 --- a/modules/erl/euphorik_protocole.erl +++ b/modules/erl/euphorik_protocole.erl @@ -138,16 +138,9 @@ profile(Action) -> % Renvoie les messages appropriés. refreshMessage(Action) -> 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) -> ] } end, - euphorik_minichat_conversation:conversations(User#user.conversations, Nb_message, Dernier_id, Page) + euphorik_minichat_conversation:conversations(User#user.conversations, Nb_message, Dernier_id, User#user.page_principale) ) }]; _ -> -- 2.45.2