' +
- '
' +
- (num == 0 ? '' : '
') +
- '
<1>' +
- '
' +
+ var messagesXHTML = '
'
+ var messageRacineXHTML = '
'
+ var reverse = this.client.chatOrder == "reverse"
+
+ var XHTML =
+ '
' +
+ (reverse ? messagesXHTML : "") +
+ '' +
+ (reverse ? messageRacineXHTML : "") +
+ ' ' +
+ (num == 0 ? '' : ' ') +
+ ' <1>' +
+ ' ' +
+ (reverse ? "" : messageRacineXHTML) +
' ' +
- ''
- )
+ (reverse ? "" : messagesXHTML) +
+ ' | '
+
+ $("#conversations tr").append(XHTML)
- this.util.infoBulle("Aller à la première page", $("#conversations #" + this.getId() + " .numPage"))
+ 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", $("#conversations #" + this.getId() + " .lien"))
- this.util.infoBulle("Fermer la conversation", $("#conversations #" + this.getId() + " .fermer"))
+ 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)
- this.majRacine()
}
/**
@@ -480,9 +512,14 @@ Conversation.prototype.majRacine = function()
{
if (this.racine == undefined)
return
-
+
if (!(this.racine.id in this.messagesParId))
- $("#" + this.getId() + " .titre").prepend(this.racine.XHTML(true, this.getId()))
+ {
+ 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()
@@ -511,7 +548,7 @@ Conversation.prototype.colorerEntetes = function()
Conversation.prototype.decolorerEntetes = function()
{
- $("#" + this.getId() + " .message")
+ $("#" + this.getId() + " .messages .message")
.removeClass("reponse")
.removeClass("repondu")
.removeClass("proprietaire")
@@ -524,9 +561,9 @@ Conversation.prototype.decolorerEntetes = function()
*/
Conversation.prototype.setPage = function(pageCourante, dernierePage)
{
- $("#conversations #" + this.getId() + " .numPage").text(pageCourante)
- $("#conversations #" + this.getId() + " .next").css("display", pageCourante == 1 ? "none" : "inline")
- $("#conversations #" + this.getId() + " .prev").css("display", dernierePage ? "none" : "inline")
+ $("#" + this.getId() + " .numPage").text(pageCourante)
+ $("#" + this.getId() + " .next").css("display", pageCourante == 1 ? "none" : "inline")
+ $("#" + this.getId() + " .prev").css("display", dernierePage ? "none" : "inline")
}
/**
@@ -536,7 +573,7 @@ Conversation.prototype.eventLien = function(fun)
{
var thisConversation = this
- $("#conversations #" + this.getId() + " .titre .lien").click(
+ $("#" + this.getId() + " .titre .lien").click(
function()
{
fun(thisConversation.num)
@@ -551,7 +588,7 @@ Conversation.prototype.eventFermer = function(fun)
{
var thisConversation = this
- $("#conversations #" + this.getId() + " .titre .fermer").click(
+ $("#" + this.getId() + " .titre .fermer").click(
function()
{
fun(thisConversation.num)
@@ -568,13 +605,13 @@ Conversation.prototype.setFunPage = function(funNext, funPrev, funReset)
{
var thisConversation = this
- $("#conversations #" + this.getId() + " .next").click(
+ $("#" + this.getId() + " .next").click(
function() { funNext(thisConversation.num) }
)
- $("#conversations #" + this.getId() + " .prev").click(
+ $("#" + this.getId() + " .prev").click(
function() { funPrev(thisConversation.num) }
)
- $("#conversations #" + this.getId() + " .numPage").click(
+ $("#" + this.getId() + " .numPage").click(
function() { funReset(thisConversation.num) }
)
}
@@ -603,7 +640,10 @@ Conversation.prototype.viderMessages = function()
this.messages = []
this.messagesParId = {}
this.idDernierMessageAffiche = 0
- $("#conversations #" + this.getId() + " .message").remove()
+ $("#" + this.getId() + " .messages .message").remove()
+
+ // enlève également la racine
+ $("#" + this.getId() + " .titre .messageRacine").empty()
}
Conversation.prototype.idMessageFromString = function(idString)
@@ -619,10 +659,11 @@ Conversation.prototype.idMessageFromString = function(idString)
Conversation.prototype.flush = function()
{
var thisConversation = this
+ var reverse = this.client.chatOrder == "reverse"
// est-ce que le prochain message est pair ? (permet d'alterner le style des messages)
var messagePair = (this.idDernierMessageAffiche == 0 ? true :
- ($("#" + this.getId() + " .messages div:first").attr("class").search("messagePair") == -1)
+ ($("#" + this.getId() + " .messages div:" + (reverse ? "first" : "last")).attr("class").search("messagePair") == -1)
)
// construction de l'XHTML des messages
@@ -633,17 +674,25 @@ Conversation.prototype.flush = function()
XHTML += this.messages[i].XHTML(messagePair, this.getId())
messagePair = !messagePair
}
-
+
var DOM = $(XHTML)
-
+
// pour chaque nouveau message au niveau du document on crée ses événements
DOM.each(function() { thisConversation.attacherEventsSurMessage(this) })
- DOM.prependTo("#" + this.getId() + " .messages")
+ if (reverse)
+ DOM.prependTo("#" + this.getId() + " .messages")
+ else
+ DOM.appendTo("#" + this.getId() + " .messages")
// enlève les messages exedentaires
- var nbMessagesAffiche = $("#" + this.getId() + " .message").size()
+ var nbMessagesAffiche = $("#" + this.getId() + " .messages .message").size()
if (nbMessagesAffiche > this.nbMessageMax)
- $("#conversations #" + this.getId() + " .message").slice(this.nbMessageMax, nbMessagesAffiche).remove()
+ {
+ if (reverse)
+ $("#" + this.getId() + " .messages .message").slice(this.nbMessageMax, nbMessagesAffiche).remove()
+ else
+ $("#" + this.getId() + " .messages .message").slice(0, nbMessagesAffiche - this.nbMessageMax).remove()
+ }
if (this.messages.length > 0)
this.idDernierMessageAffiche = this.messages[this.messages.length-1].id
@@ -657,8 +706,8 @@ Conversation.prototype.attacherEventsSurMessage = function(element)
// l'id du message
var idMess = this.idMessageFromString($(element).attr("id"))
- this.util.infoBulle("Extraction de la conversation à partir de ce message", $(".extraire", this))
- this.util.infoBulle("Extraction de la conversation complète", $(".extraireCompletement", this))
+ this.util.infoBulle("Extraction de la conversation à partir de ce message", $(".extraire", element))
+ this.util.infoBulle("Extraction de la conversation complète", $(".extraireCompletement", element))
var thisConversation = this
$(".lienConv", element).click(
@@ -669,7 +718,7 @@ Conversation.prototype.attacherEventsSurMessage = function(element)
thisConversation.conversations.ouvrirConversation(parseInt(idString.substring(1, racine.length - 1), 36))
return false
}
- )
+ )
$(element).click(
function(event)
@@ -716,20 +765,21 @@ Conversation.prototype.attacherEventsSurMessage = function(element)
if (thisConversation.client.viewTimes)
$(".dateComplete", element).show()
else
- $(".dateComplete", idMess).hide()
+ $(".dateComplete", element).hide()
- $("a[@rel*=lightbox]", idMess).lightBox()
+ $("a[@rel*=lightbox]", element).lightBox()
// les outils de bannissement (uniquement pour les ekMaster)
if (thisConversation.client.ekMaster)
- $(".pseudo", idMess).hover(
+ $(".pseudo", element).hover(
function(e)
{
var userId = parseInt($(".id", this).text())
- var element = $(this)
- var h = element.height()
- var offset = element.offset()
- thisConversation.util.outilsBan.css("top", offset.top - 2).css("left", offset.left - 2).height(h < 16 ? 16 : h).width(element.width() + 16 * 3 + 4 + 64).prependTo(this).show()
+ var pseudo = $(this)
+ var h = pseudo.outerHeight()
+ var offset = pseudo.offset()
+ // TODO : calculer automatiquement la largeur plutôt que d'inscrire des valeurs en brut'
+ thisConversation.util.outilsBan.css("top", offset.top - 2).css("left", offset.left - 2).height(h < 16 ? 16 : h).width(pseudo.outerWidth() + 16 * 3 + 12 + 64).prependTo(this).show()
$("img", thisConversation.util.outilsBan).unbind("click")
$("#slap", thisConversation.util.outilsBan).click(
function()
@@ -778,7 +828,7 @@ Conversation.prototype.afficherConversation = function(id)
var mess = message.getConversation(this)
// FIXME : cet appel est très lent
- $("#conversations #" + this.getId() + " .message").each(
+ $("#" + this.getId() + " .messages .message").each(
function()
{
var jq = $(this)
@@ -812,7 +862,7 @@ Conversation.prototype.afficherConversation = function(id)
*/
Conversation.prototype.supprimer = function()
{
- $("#conversations #" + this.getId()).remove()
+ $("#" + this.getId()).remove()
}
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -868,7 +918,7 @@ Conversations.prototype.enleverMessagesRepond = function()
// on réinitialise pour être sur que tout est bien enlevé
this.messagesRepond = {}
- $("#conversations div.message").removeClass("repondEnEvidence")
+ $("#conversations .message").removeClass("repondEnEvidence")
$("form#posterMessage #repondA .messages").empty()
}
@@ -969,7 +1019,7 @@ Conversations.prototype.afficherMessagesRepondConversations = function()
Conversations.prototype.getJSONrafraichirMessages = function()
{
var mess = {
- "message_count" : conf.nbMessageAffiche,
+ "message_count" : euphorik.conf.nbMessageAffiche,
"main_page" : this.client.pagePrincipale,
"conversations" : this.getJSONConversations(),
"troll_id" : this.trollIdCourant
@@ -1127,11 +1177,13 @@ Conversations.prototype.supprimerConversation = function(num)
*/
Conversations.prototype.ajusterLargeurConversations = function()
{
+ // TODO : trouver mieux !
var largeurPourcent = (100 / this.conversations.length)
+ // obsolète !?
// le "- 0.01" evite que IE se chie dessus lamentablement et affiche les conversations les unes au dessus des autres
- if($.browser["msie"])
- largeurPourcent -= 0.05
- $("#conversations .conversation").css("width", largeurPourcent + "%")
+ //if($.browser["msie"])
+ // largeurPourcent -= 0.05
+ $("#conversations td").css("width", largeurPourcent + "%")
}
/**