X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;ds=sidebyside;f=js%2FpageMinichat.js;h=454b357ac7ed70737a23e95f18168c4e6eb1aed1;hb=ffea71492c07cbf81430883c894b34e1c9408699;hp=ed1a46c177875531e51cb39069f7e3f1e80a5bc0;hpb=dbd5dc444ede3a82c3266684470b342f6a21f685;p=euphorik.git diff --git a/js/pageMinichat.js b/js/pageMinichat.js index ed1a46c..454b357 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -132,7 +132,7 @@ PageMinichat.prototype.getXMLMessage = function(pseudo, message, repondA) { var nodeReponse = XMLDocument.createElement("reponse") nodeReponse.setAttribute("id", repondA[i]) - nodeReponses.appendChild(nodeReponse) + nodeReponses.appendChild(nodeReponse) } } @@ -291,7 +291,7 @@ Message.prototype.getConversation = function(messages) * @param numConv le numéro (appelé id) de la conversation * @param formateur outil permettant la mise en forme du texte des messages */ -function Conversation(num, util, formateur, funFermer) +function Conversation(num, util, formateur) { var thisConversation = this @@ -306,7 +306,7 @@ function Conversation(num, util, formateur, funFermer) jQuery("#conversations").append( '
\
' + - (funFermer == undefined ? '' : '
x
') + + (num == 0 ? '' : '
x
c
') + '<1>\
\
' @@ -321,15 +321,6 @@ function Conversation(num, util, formateur, funFermer) thisConversation.messageOver = null } ) - - // suppression de la conversation - if (funFermer != undefined) - jQuery("#conversations #" + this.getId() + " .titre .fermer").click( - function() - { - funFermer(thisConversation.num) - } - ) } /** @@ -337,13 +328,43 @@ function Conversation(num, util, formateur, funFermer) * @pageCourante la page courante * @dernierePage true si c'est la dernière page sinon false */ -Conversation.prototype.setPage = function(pageCourante, dernierePage) +Conversation.prototype.eventsPage = function(pageCourante, dernierePage) { jQuery("#conversations #" + this.getId() + " .numPage").text(pageCourante) jQuery("#conversations #" + this.getId() + " .next").css("display", pageCourante == 1 ? "none" : "inline") jQuery("#conversations #" + this.getId() + " .prev").css("display", dernierePage ? "none" : "inline") } +/** + * Evenement déclanché lors de l'insertion du lien de la conversation dans le message courant. + */ +Conversation.prototype.eventLien = function(fun) +{ + var thisConversation = this + + jQuery("#conversations #" + this.getId() + " .titre .lien").click( + function() + { + fun(thisConversation.num) + } + ) +} + +/** + * Evenement déclanché lors de la fermeture de la conversation. + */ +Conversation.prototype.eventFermer = function(fun) +{ + var thisConversation = this + + jQuery("#conversations #" + this.getId() + " .titre .fermer").click( + function() + { + fun(thisConversation.num) + } + ) +} + /** * @funNext appelé lorsque l'on passe à la page suivante (de 2 à 1 par exemple) * @funPrev appelé lorsque l'on passe à la page précédente (de 1 à 2 par exemple) @@ -391,13 +412,14 @@ Conversation.prototype.viderMessages = function() * d'afficher les messages non-affichés. * @param funClickExtract fonction (fun(numMess)) appellée lors du clic sur un bouton "extraire" */ -Conversation.prototype.flush = function(funClickExtract) +Conversation.prototype.flush = function(funClickExtract, funClickLienConv) { var thisConversation = this var idDernierMessageAffiche = jQuery("#conversations #" + this.getId() + " div:first").attr("id") if (idDernierMessageAffiche == undefined) idDernierMessageAffiche = "0" + // construction de l'XHTML des messages var XHTML = "" for (var i = this.messages.length - 1; i >= 0; i--) if (parseInt(this.messages[i].id, 36) > parseInt(idDernierMessageAffiche, 36)) @@ -405,13 +427,13 @@ Conversation.prototype.flush = function(funClickExtract) var message = this.messages[i] var XHTMLrepondA = "" for (var id in message.repondA) - XHTMLrepondA += this.formateur.traitementComplet(message.repondA[id].pseudo) + "> " + XHTMLrepondA += this.formateur.traitementComplet(message.repondA[id].pseudo) + "> " XHTMLrepondA = "" + XHTMLrepondA + "" XHTML += "
" + "
>
" + "[" + message.date + "]" + "" + this.formateur.traitementComplet(message.pseudo) + ":" + @@ -426,6 +448,7 @@ Conversation.prototype.flush = function(funClickExtract) if (myLightbox != null) myLightbox.updateImageList() + // enlève les messages exedentaires var nbMessagesAffiche = jQuery("#conversations #" + this.getId() + " .message").size() if (nbMessagesAffiche > this.nbMessageMax) jQuery("#conversations #" + this.getId() + " .message").slice(this.nbMessageMax, nbMessagesAffiche).empty(); @@ -434,6 +457,16 @@ Conversation.prototype.flush = function(funClickExtract) jQuery("#conversations #" + this.getId() + " .message").filter(function(){return parseInt(jQuery(this).attr("id"), 36) > parseInt(idDernierMessageAffiche, 36)}).each( function() { + jQuery(".lienConv", this).click( + function(event) + { + // FIXME : ya pas mieux ? + var racine = jQuery(event.target).text() + funClickLienConv(racine.substring(1, racine.length - 1)) + return false + } + ) + jQuery(this).click( function(event) { @@ -515,6 +548,8 @@ Conversation.prototype.supprimer = function() */ function Messages(client, formateur, util) { + var thisMessages = this + this.client = client this.formateur = formateur this.util = util @@ -604,6 +639,13 @@ Messages.prototype.ajouterMessage = function(element, numConversation) function(num) // fermeture de la conversation { thisMessages.supprimerConversation(num) + }, + function(num) // insertion du lien vers la conversation + { + thisPage.util.replaceSelection( + jQuery("form input.message")[0], + "{" + thisMessages.client.conversations[num-1].racine + "}" + ) } ) } @@ -611,11 +653,15 @@ Messages.prototype.ajouterMessage = function(element, numConversation) this.conversations[numConversation].ajouterMessage(message) } -Messages.prototype.nouvelleConversation = function(num, funFermer) +Messages.prototype.nouvelleConversation = function(num, funFermer, funLien) { var thisMessages = this - this.conversations[num] = new Conversation(num, this.util, this.formateur, funFermer) + this.conversations[num] = new Conversation(num, this.util, this.formateur) + if (funFermer != undefined) + this.conversations[num].eventFermer(funFermer) + if (funLien != undefined) + this.conversations[num].eventLien(funLien) this.conversations[num].setFunPage( function(num) // page suivante @@ -684,13 +730,17 @@ Messages.prototype.flush = function(numConv) { var thisMessages = this - this.conversations[numConv].flush - ( + this.conversations[numConv].flush( // fonction appelée lors de la demande d'extraction d'une conversation function(idMess) { if (thisMessages.client.ajouterConversation(idMess)) thisMessages.rafraichirMessages(true) + }, + function(racine) // appelé lorsqu'un utilisateur click sur un lien vers une conversation + { + if (thisMessages.client.ajouterConversation(racine)) + thisMessages.rafraichirMessages(true) } ) } @@ -721,7 +771,7 @@ Messages.prototype.rafraichirMessages = function(vider) if (vider) this.idDernierMessage = null - //this.util.xmlVersAction(this.getXMLrafraichirMessages()).action.dump() + this.util.xmlVersAction(this.getXMLrafraichirMessages()).action.dump("Client") this.attenteCourante = jQuery.ajax({ type: "POST", url: "request", @@ -730,7 +780,7 @@ Messages.prototype.rafraichirMessages = function(vider) success: function(data) { - //thisMessages.util.serializer.serializeToString(data).dump() + thisMessages.util.serializer.serializeToString(data).dump("Serveur") if (vider) thisMessages.viderMessages() @@ -751,7 +801,7 @@ Messages.prototype.rafraichirMessages = function(vider) thisMessages.ajouterMessages(messages, numConv) - thisMessages.conversations[numConv].setPage( + thisMessages.conversations[numConv].eventsPage( numConv == 0 ? thisMessages.client.pagePrincipale : thisMessages.client.conversations[numConv - 1].page, jQuery("autresPages", this).text() != "true" )