X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=js%2FpageMinichat.js;h=678dac3add9916f5ea06bd91161e69c5d612ae75;hb=4a510de0c99d080cdd3ecc837307ac8ee3509e87;hp=ed0321c4f7cd7daf463c2814bb46e1c2d9d3dd3a;hpb=7e76d6bc2ccd165730addd3337656b479f9d95d4;p=euphorik.git diff --git a/js/pageMinichat.js b/js/pageMinichat.js index ed0321c..678dac3 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -15,11 +15,12 @@ function PageMinichat(client, formateur, util) PageMinichat.prototype.contenu = function() { return '\ +
Troll de la semaine :
\
\

\ \ - \ - \ + \ + \ \ \

\ @@ -45,7 +46,7 @@ PageMinichat.prototype.charger = function() { $("body").append( '
' + - '

' + + '

' + 'Ban de 3 jours' + 'Ban de 15min' + 'Avertissement' + @@ -96,8 +97,12 @@ PageMinichat.prototype.charger = function() $("form button.smiles").hover( function(e) { - var offset = $(e.target).offset() - $("#smiles").css("top", offset.top).css("left", offset.left).show() + var position = $(e.target).offset() + // le décalage pour ne pas dépasser à droite (10 correspond à la marge pour éviter de coller le bord) + var decalage = $("body").width() - $("#smiles").width() - position.left - 10 + decalage = decalage > 0 ? 0 : decalage + + $("#smiles").css("top", position.top).css("left", position.left + decalage).show() }, function(e){} ) @@ -122,7 +127,7 @@ PageMinichat.prototype.charger = function() $("form input.message").val() ) - $("form input.message")[0].focus() + $("form input.message").focus() } $("form").keypress( @@ -487,10 +492,10 @@ Conversation.prototype.flush = function(funClickOuvrirConv) if (this.messages[i].id > this.idDernierMessageAffiche) { var message = this.messages[i] - + // construit l'identifiant de la personne var identifiant = - this.client.nickFormat == "nick" ? this.formateur.traitementComplet(message.pseudo) : + this.client.nickFormat == "nick" || message.login == "" ? this.formateur.traitementComplet(message.pseudo) : (this.client.nickFormat == "login" ? this.formateur.traitementComplet(message.login) : this.formateur.traitementComplet(message.pseudo) + "(" + this.formateur.traitementComplet(message.login) +")" ) @@ -500,7 +505,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv) XHTMLrepondA = "" + XHTMLrepondA + "" XHTML += - "
" + "
>
" + "[" + message.date + "]" + - "" + identifiant + ":" + + "" + message.auteurId + "" + identifiant + ":" + XHTMLrepondA + - "" + (message.systeme ? this.formateur.remplacerBalisesHTML(message.contenu) : this.formateur.traitementComplet(message.contenu, message.pseudo)) + "" + + "" + this.formateur.traitementComplet(message.contenu, message.pseudo) + "" + "
" messagePair = !messagePair @@ -526,7 +531,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv) $("#conversations #" + this.getId() + " .message").slice(this.nbMessageMax, nbMessagesAffiche).empty() // ajoute les événements liés à chaque nouveau message - $("#conversations #" + this.getId() + " .message").filter(function(){return parseInt($(this).attr("id"), 36) > thisConversation.idDernierMessageAffiche}).each( + $("#conversations #" + this.getId() + " .message").filter(function(){ return parseInt($(this).attr("id").substr(4), 36) > thisConversation.idDernierMessageAffiche }).each( function() { $(".lienConv", this).click( @@ -546,8 +551,8 @@ Conversation.prototype.flush = function(funClickOuvrirConv) $(".pseudo", this).hover( function(e) { - var userId = parseInt($(this).attr("id").substr(4)) - var element = $(e.target) + var userId = parseInt($(".id", this).text()) + var element = $(this) var h = element.height() var offset = element.offset() var outils = $("#outilsBan").css("top", offset.top - 2).css("left", offset.left - 2).height(h < 16 ? 16 : h).width(element.width() + 16 * 3 + 4 + 64).show() @@ -583,7 +588,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv) if ($(event.target).is("a")) return // l'id du message - var idMess = $(this).attr("id") + var idMess = $(this).attr("id").substr(4) // extraction d'une conversation if ($(event.target).is(".extraire")) @@ -594,7 +599,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv) var valCourant = $("input.message").val() if (valCourant == undefined) valCourant = "" - var tag = $(".pseudo", this).text() + "{" + idMess + "}" + ">" + var tag = $(".pseudo span.ident", this).text() + "{" + idMess + "}" + ">" if (valCourant.indexOf(tag, 0) == -1) $("input.message").val(tag + " " + valCourant) thisConversation.util.setCaretToEnd($("form input.message")[0]) @@ -627,7 +632,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv) Conversation.prototype.afficherConversation = function(element) { // cherche le message selectionné - var id = parseInt($(element).attr("id"), 36) + var id = parseInt($(element).attr("id").substr(4), 36) var message = this.messagesParId[id] if (message == undefined) return @@ -639,7 +644,7 @@ Conversation.prototype.afficherConversation = function(element) function() { var jq = $(this) - if (!mess.hasOwnProperty(parseInt(jq.attr("id"), 36))) + if (!mess.hasOwnProperty(parseInt(jq.attr("id").substr(4), 36))) jq.addClass("cache") else jq.removeClass("cache") @@ -671,6 +676,8 @@ function Messages(client, formateur, util) this.conversations = new Array() // les conversations, la première représente la conversation principale this.nouvelleConversation(0) + this.trollIdCourant = 0 + this.pageEvent = new PageEvent("chat", this.util) } @@ -682,10 +689,11 @@ Messages.prototype.getJSONrafraichirMessages = function() var mess = { "message_count" : conf.nbMessageAffiche, "main_page" : this.client.pagePrincipale, - "conversations" : this.getJSONConversations() + "conversations" : this.getJSONConversations(), + "troll_id" : this.trollIdCourant } - if (this.client.cookie != null) mess["cookie"] = this.client.cookie; + if (this.client.cookie != null) mess["cookie"] = this.client.cookie mess["last_message_id"] = this.conversations[0].idDernierMessageAffiche return mess @@ -709,8 +717,8 @@ Messages.prototype.getJSONConversations = function() */ Messages.prototype.ajouterMessages = function(elements, numConversation) { - if (elements["messages"].length == 0 && typeof(this.conversations[numConversation]) == "undefined") - return false + if (elements["messages"].length == 0) + return this.conversations[numConversation] != undefined for (var i = 0; i < elements["messages"].length; i++) this.ajouterMessage(elements["messages"][i], numConversation) @@ -832,8 +840,9 @@ Messages.prototype.supprimerConversation = function(num) * Ajuste la largeur des conversations en fonction de leur nombre. modifie l'attribut CSS 'width'. */ Messages.prototype.ajusterLargeurConversations = function() -{ - $("#conversations .conversation").css("width", 100 / this.conversations.length + "%") +{ + // le "- 0.01" evite que IE se chie dessus lamentablement et affiche les conversations les unes au dessus des autres + $("#conversations .conversation").css("width", (100 / this.conversations.length) - 0.01 + "%") } /** @@ -894,21 +903,33 @@ Messages.prototype.rafraichirMessages = function(vider) function() { return thisMessages.getJSONrafraichirMessages() }, function(data) { - if (vider) - { - thisMessages.viderMessages() - vider = false - } - - // ajoute les messages reçus à leur conversation respective - for (var numConv = 0; numConv < data["conversations"].length; numConv++) - { - if (! thisMessages.ajouterMessages(data["conversations"][numConv], numConv)) + if (vider) + { + thisMessages.viderMessages() + vider = false + } + + // en fonction du message + switch(data["reply"]) + { + case "new_troll" : + thisMessages.trollIdCourant = data["troll_id"] + $("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"])) + $("#trollCourant .troll a[@rel*=lightbox]").lightBox() + break + + case "new_messages" : + // ajoute les messages reçus à leur conversation respective + for (var numConv = 0; numConv < data["conversations"].length; numConv++) { - thisMessages.util.messageDialogue("La conversation {" + thisMessages.client.conversations[numConv -1].root.toString(36) + "} n'existe pas") - thisMessages.client.supprimerConversation(numConv - 1) + if (! thisMessages.ajouterMessages(data["conversations"][numConv], numConv)) + { + thisMessages.util.messageDialogue("La conversation {" + thisMessages.client.conversations[numConv -1].root.toString(36) + "} n'existe pas") + thisMessages.client.supprimerConversation(numConv - 1) + } } - } + break + } } ) }