-Messages.prototype.getXMLrafraichirMessages = function()
-{
- var XMLDocument = this.util.creerDocumentXMLAction()
- XMLDocument.documentElement.setAttribute("name", "refreshMessages")
- \r
- //alert(this.util.serializer.serializeToString(XMLDocument))\r
-
- if (this.client.identifie())
- {
- var nodeCookie= XMLDocument.createElement("cookie")
- nodeCookie.appendChild(XMLDocument.createTextNode(this.client.cookie))
- XMLDocument.documentElement.appendChild(nodeCookie)
- }
-
- if (this.idDernierMesssage != null)
- {
- var nodeDernierMessageId = XMLDocument.createElement("dernierMessageId")
- nodeDernierMessageId.appendChild(XMLDocument.createTextNode(this.idDernierMesssage))
- XMLDocument.documentElement.appendChild(nodeDernierMessageId)
- }
-
- var nodeNombreMessage = XMLDocument.createElement("nombreMessage")
- nodeNombreMessage.appendChild(XMLDocument.createTextNode(conf.nbMessageAffiche))
- XMLDocument.documentElement.appendChild(nodeNombreMessage)
-
- var nodePage = XMLDocument.createElement("page")
- nodePage.appendChild(XMLDocument.createTextNode(this.conversation[0].page))
- XMLDocument.documentElement.appendChild(nodePage)
-
- // les conversations
- for (var i = 1; i < this.conversations.length; i++)
- {
- var nodeConversation = XMLDocument.createElement("conversation")
- XMLDocument.documentElement.appendChild(nodeConversation)
-
- var nodeRacine = XMLDocument.createElement("racine")
- nodeRacine.appendChild(XMLDocument.createTextNode(this.conversation.racine))
- nodeConversation.appendChild(nodeRacine)
-
- var nodePageConv = XMLDocument.createElement("page")
- nodePageConv.appendChild(XMLDocument.createTextNode(this.conversation.page))
- nodeConversation.appendChild(nodePageConv)
- }
-
- return XMLDocument;
-}
-
-/**
- * Création d'un nouveau message.
- * Les message sont données dans l'ordre de leur id.
- * Met directement à jour l'affichage.
- * @param element un element xml représentant le message
- * @param numConversation le numéro de la conversation, 0 = principale
- * @param autoFlush si oui alors le message est directement ajouté à la vue
- */
-Messages.prototype.ajouterMessage = function(element, numConversation, autoFlush)
-{
- if (autoFlush == undefined) autoFlush = true // valeur par défaut
-
- // pas d'utilisation de jquery pour des raisons de performance
- this.idDernierMesssage = element.getAttribute("id")
-
- var message = new Message(
- this.idDernierMesssage, \r
- jQuery("date", element).text(),\r
- jQuery("pseudo", element).text(),\r
- jQuery("contenu", element).text()
- ) \r
-
- message.appartientAuClient = jQuery("proprietaire", element).text() == "true"
- message.clientARepondu = jQuery("repondu", element).text() == "true"
- message.estUneReponse = jQuery("reponse", element).text() == "true"
- message.systeme = jQuery("systeme", element).text() == "true"
- message.setRepondA(jQuery("repondA", element))
-
- if (this.conversations[numConversation] == null)
- this.conversations[numConversation] = new Conversation()
-
- this.conversations[numConversation].ajouterMessage(message)
-
- if (autoFlush)
- this.flush()
-}
-
-
-// <<< TODO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-
-Messages.prototype.flush = function()
-{
- var thisMessages = this
-
- var idDernierMessageAffiche = jQuery("#messages div:first").attr("id")
- if (idDernierMessageAffiche == undefined) idDernierMessageAffiche = "0"
-
- var XHTML = ""
- for (var i = this.messages.length - 1; i >= 0; i--)
- if (parseInt(this.messages[i].id, 36) > parseInt(idDernierMessageAffiche, 36))
- {
- var message = this.messages[i]
- var XHTMLrepondA = ""
- for (var id in message.repondA)
- XHTMLrepondA += this.formateur.traitementComplet(message.repondA[id].pseudo) + "> "
- XHTMLrepondA = "<div class=\"repondA\">" + XHTMLrepondA + "</div>"
-
- XHTML +=
- "<div id=\"" + message.id + "\" class=\"" + (parseInt(message.id, 36) % 2 == 0 ? "messagePair" : "messageImpair") + " message" +
- (this.messages[i].appartientAuClient ? " proprietaire" : "") + (this.messages[i].clientARepondu ? " repondu" : "") + (this.messages[i].estUneReponse ? " reponse" : "") + (this.messages[i].systeme ? " systeme" : "") +
- "\" >" +
- "[<div class=\"date\">" + message.date + "</div>]" +
- "<div class=\"pseudo\">" + this.formateur.traitementComplet(message.pseudo) + "</div>:" +
- XHTMLrepondA +
- "<div class=\"contenu\">" + (message.systeme ? this.formateur.remplacerBalisesHTML(message.contenu) : this.formateur.traitementComplet(message.contenu, message.pseudo))+ "</div>" +
- "</div>"
- }
- jQuery("#messages").prepend(XHTML)\r
- \r
- if (myLightbox != null)
- myLightbox.updateImageList()
-
- var nbMessagesAffiche = jQuery("#messages .message").size()
- if (nbMessagesAffiche > this.nbMessageMax)
- jQuery("#messages .message").slice(this.nbMessageMax, nbMessagesAffiche).empty();
-
- jQuery("#messages .message").filter(function(){return parseInt(jQuery(this).attr("id"), 36) > parseInt(idDernierMessageAffiche, 36)}).each(
- function()
- {
- jQuery(this).click(
- function(event)
- {\r
- if (jQuery(event.target).is("a")) return\r
-
- var valCourant = jQuery("input.message").val()
- if (valCourant == undefined) valCourant = ""
- var tag = jQuery(".pseudo", this).text() + "{" + jQuery(this).attr("id") + "}" + ">"
- if (valCourant.indexOf(tag, 0) == -1)
- jQuery("input.message").val(tag + " " + valCourant)
- thisMessages.util.setCaretToEnd(jQuery("form input.message")[0])
- }
- )
- // Q : pourquoi pas un .hover ?
- // R : simplement pour éviter que lorsqu'un message arrive cela n'affecte la conversation actuellement mise en évidence
- .mousemove(
- function(e)
- {
- if (this !== thisMessages.messageOver)
- {
- thisMessages.afficherConversation(this)
- thisMessages.messageOver = this
- }
- }
- )
- }
- )
-}