- }
- }
- f(this.repondA, true)
-
- return messagesEnEvidence
-}
-
-/**
- * Renvoie le message sous la forme de code XHTML (string) prêt à être inséré dans un document.
- * Aucun callback n'est affecté.
- */
-Message.prototype.XHTML = function(messagePair, pre)
-{
- if (messagePair == undefined)
- messagePair = true
- if (pre == undefined)
- pre = ""
-
- // construit l'identifiant de la personne
- var identifiant =
- this.client.nickFormat == "nick" || this.login == "" ? this.formateur.traitementComplet(this.pseudo) :
- (this.client.nickFormat == "login" ? this.formateur.traitementComplet(this.login) :
- this.formateur.traitementComplet(this.pseudo) + "<span class=\"login\">(" + this.formateur.traitementComplet(this.login) +")</span>" )
-
- var XHTMLrepondA = ""
- var debut = true
- for (var id in this.repondA)
- {
- if (!debut) XHTMLrepondA += ", "
- XHTMLrepondA += this.formateur.traitementComplet(this.repondA[id].pseudo)
- debut = false
- }
- if (XHTMLrepondA != "")
- XHTMLrepondA = "<span class=\"repondA\">" + XHTMLrepondA + "</span><span class=\"delimitationRepondA\"></span>"
-
- return "<div id=\"" + this.getId(pre) + "\" class=\"" + (messagePair ? "messagePair" : "messageImpair") + " message" +
- (this.appartientAuClient ? " proprietaire" : "") +
- (this.clientARepondu ? " repondu" : "") +
- (this.estUneReponse ? " reponse" : "") +
- (this.systeme ? " systeme" : "") +
- (this.ekMaster ? " ekMaster" + this.degreeOstentatoire : "") +
- "\">" +
- "<div class=\"outilsMess\"><div class=\"extraire\"></div><div class=\"extraireCompletement\"></div></div><span class=\"entete\">" +
- "<span class=\"dateComplete\">[<span class=\"date\">" + this.date + "</span>]</span>" +
- "<span class=\"pseudo\"><span class=\"id\" style=\"display: none\">" + this.auteurId + "</span class=\"ident\">" + identifiant + "</span></span><span class=\"delimitationEntete\"></span>" +
- XHTMLrepondA +
- "<span class=\"contenu\">" + this.formateur.traitementComplet(this.contenu, this.pseudo) + "</span>" +
- "</div>"
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-/**
- * Représente une conversation.
- * Une conversation, au niveau XHTML, est formé de deux partie, le titre et les messages.
- * Le titre comprend la navigation par page, un bouton pour la fermer, un bouton pour la plier, un bouton
- * pour créer un lien ainsi que le premier message.
- * @param conversations l'ensemble des conversations
- * @param num le numéro de la conversation
- */
-function Conversation(conversations, num)
-{
- this.conversations = conversations
- this.num = num // peut changer au cours de la vie de la conversation, n'est pas un id !
- this.id = Math.floor(Math.random() * 1000000).toString(36)
-
- this.util = this.conversations.util
- this.formateur = this.conversations.formateur
- this.client = this.conversations.client
-
- this.idDernierMessageAffiche = 0
- this.racine = undefined
-
- this.messages = []
- this.messagesParId = {}
-
- this.nbMessageMax = euphorik.conf.nbMessageAffiche // Le nombre de message affiché par page
-
- var messagesXHTML = '<div class="messages"></div>'
- var messageRacineXHTML = '<div class="messageRacine"></div>'
- var reverse = this.client.chatOrder == "reverse"
-
- var XHTML =
- '<td class="conversation" id="' + this.getId() + '">' +
- (reverse ? messagesXHTML : "") +
- '<div class="titre">' +
- (reverse ? messageRacineXHTML : "") +
- '<div class="nav">' +
- (num == 0 ? '' : '<div class="fermer"></div><div class="lien"></div><div class="reduire"></div>') +
- '<span class="next"><</span><span class="numPage">1</span><span class="prev">></span>' +
- '</div>' +
- (reverse ? "" : messageRacineXHTML) +
- '</div>' +
- (reverse ? "" : messagesXHTML) +
- '</td>'
-
- $("#conversations tr").append(XHTML)
-
- this.util.infoBulle("Aller à la première page", $("#" + this.getId() + " .numPage"), euphorik.Util.positionBulleType.haut)
- if (num != 0)
- {
- this.util.infoBulle("Créer un lien vers la conversation", $("#" + this.getId() + " .lien"))
- this.util.infoBulle("Fermer la conversation", $("#" + this.getId() + " .fermer"))
- }
-}
-
-/**
- * @racine un message représentant la racine de la conversation, vaut undefined pour la conversation générale
- */
-Conversation.prototype.setRacine = function(racineElement)
-{
- this.racine = new Message(this.client, this.formateur, racineElement)
-}
-
-/**
- * Met à jour la racine, décide de l'afficher ou non.
- * On l'affiche uniquement si le message racine n'est pas déjà affiché sur la liste des messages.
- */
-Conversation.prototype.majRacine = function()
-{
- if (this.racine == undefined)
- return
-
- if (!(this.racine.id in this.messagesParId))
- {
- this.messagesParId[this.racine.id] = this.racine
- var element = $(this.racine.XHTML(true, this.getId()))
- this.attacherEventsSurMessage(element)
- $("#" + this.getId() + " .titre .messageRacine").html(element)
- }
-}
-
-Conversation.prototype.enleverMiseEnEvidence = function()
-{
- $("#" + this.getId() + " .message").removeClass("cache")
-}
-
-Conversation.prototype.colorerEntetes = function()
-{
- var messagesReponse = ""
- var messagesRepondu = ""
- var messagesProprietaire = ""
- for (var i = 0; i < this.messages.length; i++)
- {
- if (this.messages[i].appartientAuClient)
- messagesProprietaire += "#" + this.messages[i].getId(this.getId()) + ","
- else if (this.messages[i].clientARepondu)
- messagesRepondu += "#" + this.messages[i].getId(this.getId()) + ","
- else if (this.messages[i].estUneReponse)
- messagesReponse += "#" + this.messages[i].getId(this.getId()) + ","
- }
- $(messagesReponse).addClass("reponse")
- $(messagesRepondu).addClass("repondu")
- $(messagesProprietaire).addClass("proprietaire")
-}
-
-Conversation.prototype.decolorerEntetes = function()
-{
- $("#" + this.getId() + " .messages .message")
- .removeClass("reponse")
- .removeClass("repondu")
- .removeClass("proprietaire")
-}
-
-/**
- * Défini la page courante et s'il l'on se trouve sur la dernière page.
- * @pageCourante la page courante
- * @dernierePage true si c'est la dernière page sinon false
- */
-Conversation.prototype.setPage = function(pageCourante, dernierePage)
-{
- $("#" + this.getId() + " .numPage").text(pageCourante)
- $("#" + this.getId() + " .next").css("display", pageCourante == 1 ? "none" : "inline")
- $("#" + this.getId() + " .prev").css("display", dernierePage ? "none" : "inline")
-}