* 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
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.
//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
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>') +
- '< 1 >\
+ '<span class="prev"><</span><span class="numPage">1</span><span class="next">></span>\
</div>\
</div>'
)
)
}
+/**
+ * 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".
*/
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
this.rafraichirMessages(true)
}
-
/**
* Ajuste la largeur des conversations en fonction de leur nombre. modifie l'attribut CSS 'width'.
*/
*/
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)
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()))
var numConv = 0
jQuery("conversation", data.documentElement).each(
function(i)
- {
+ {
var messages = []
jQuery("message", this).each(
function(j)
)
//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
}
)
% 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
]
}\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
)
}];
_ ->