X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageMinichat%2FpageMinichat.js;h=7aeb1589be0dc42c4ce17819408bc044a73654c1;hp=333d22db9b8dbef08a490975054f33400f9ff7b7;hb=7e471788d9356b1cb8659513674df9a883101807;hpb=75e69b9fa74954d55acaa5f342579524c3397cb4 diff --git a/js/pageMinichat/pageMinichat.js b/js/pageMinichat/pageMinichat.js index 333d22d..7aeb158 100755 --- a/js/pageMinichat/pageMinichat.js +++ b/js/pageMinichat/pageMinichat.js @@ -15,182 +15,189 @@ // // You should have received a copy of the GNU General Public License // along with Euphorik. If not, see . - -function PageMinichat(client, formateur, util) -{ - this.nom = "minichat" + +/*jslint laxbreak:true */ + +euphorik.PageMinichat = function(client, formateur, util) { + this.nom = "minichat"; - this.client = client - this.formateur = formateur - this.util = util + this.client = client; + this.formateur = formateur; + this.util = util; + this.commandes = new euphorik.Commandes(this.client); // permet d'éviter d'envoyer plusieurs messages simultanément en pressant // rapidement sur "enter" par exemple - this.envoieMessageEnCours = false + this.envoieMessageEnCours = false; - this.regexMessageTagMatch = /\{.*?\}>/g - this.regexMessageTagReplace = /^(.*?\{.*?\}>)*/ -} + this.regexMessageTagMatch = /\{.*?\}>/g; + this.regexMessageTagReplace = /^(.*?\{.*?\}>)*/; +}; -PageMinichat.prototype.contenu = function() -{ +euphorik.PageMinichat.prototype.contenu = function() { // le fait que tout soit collé est fait exprès, permet d'éviter d'avoir des espaces supplémentaires entre les spans' - var formulaireXHTML = '
\ -

\ -\ -\ -0\ -\ -\ -\ -

\ -
' - var trollXHTML = '
Troll de la semaine :
' - //var titreXHTML = '' - //var messagesXHTML = '' - var conversationXHTML = '
' + var formulaireXHTML = '' + + '
' + + '

' + + ' ' + + ' ' + + ' 0' + + ' ' + + ' ' + + ' ' + + '

' + + '
'; + + var trollXHTML = '
Troll de la semaine :
'; + var conversationXHTML = '
'; - if (this.client.chatOrder === "reverse") - return trollXHTML + formulaireXHTML + conversationXHTML - else - return trollXHTML + conversationXHTML + formulaireXHTML -} + if (this.client.chatOrder === "reverse") { + return trollXHTML + formulaireXHTML + conversationXHTML; + } else { + return trollXHTML + conversationXHTML + formulaireXHTML; + } +}; -PageMinichat.prototype.classes = function() -{ - return this.client.chatOrder === "reverse" ? "orderReverse" : "orderChrono" -} +euphorik.PageMinichat.prototype.classes = function() { + return this.client.chatOrder === "reverse" ? "orderReverse" : "orderChrono"; +}; -PageMinichat.prototype.charger = function() -{ - thisPage = this +euphorik.PageMinichat.prototype.charger = function() { + thisPage = this; - $("form input.pseudo").val(this.client.pseudo) + $("#posterMessage input.pseudo").val(this.client.pseudo); // cet appel ne doit pas être fait avant l'appel à 'charger' - this.conversations = new Conversations(this.client, this.formateur, this.util) + this.conversations = new Conversations(this.client, this.formateur, this.util); - this.conversations.rafraichirMessages(true) + this.conversations.rafraichirMessages(true); - this.util.setCaretToEnd($("form input.message")[0]) + this.util.setCaretToEnd($("form#posterMessage input.message")[0]); // les outils de bannissement (uniquement pour les ekMaster) - if (this.client.ekMaster) - { + if (this.client.ekMaster) { this.util.outilsBan = $( '' + - '' + - '

' + - 'Ban de 3 jours' + - 'Ban de 15min' + - 'Avertissement' + + ' ' + + '

' + + ' Ban de 3 jours' + + ' Ban de 15min' + + ' Avertissement' + '
' - ) + ); - this.util.infoBulle("Slap", $("#slap", this.util.outilsBan)) - this.util.infoBulle("Kick (" + euphorik.conf.tempsKick + "min)", $("#kick", this.util.outilsBan)) - this.util.infoBulle("Ban (" + euphorik.conf.tempsBan / 24 / 60 + " jours)", $("#ban", this.util.outilsBan)) - this.util.infoBulle("La raison", $("input", this.util.outilsBan)) + this.util.infoBulle("Slap", $("#slap", this.util.outilsBan)); + this.util.infoBulle("Kick (" + euphorik.conf.tempsKick + "min)", $("#kick", this.util.outilsBan)); + this.util.infoBulle("Ban (" + euphorik.conf.tempsBan / 24 / 60 + " jours)", $("#ban", this.util.outilsBan)); + this.util.infoBulle("La raison", $("input", this.util.outilsBan)); } - this.util.infoBulle("Ouvrir la conversation liée au troll de la semaine", $("#trollCourant .troll")) + this.util.infoBulle("Ouvrir la conversation liée au troll de la semaine", $("#trollCourant .troll")); this.util.infoBulle("Cliquer sur les messages pour les enlevers de la liste", $("form#posterMessage #repondA").hover( - function() { thisPage.util.afficherBoite($(".messages", this), $(this), positionTypeX.centre, positionTypeY.bas) }, - function() { $(".messages", this).hide() } + function() { thisPage.util.afficherBoite($(".messages", this), $(this), positionTypeX.centre, positionTypeY.bas); }, + function() { $(".messages", this).hide(); } ).click( - function(e) - { - if ($(e.target).is(".nb")) - thisPage.conversations.enleverMessagesRepond() + function(e) { + if ($(e.target).is(".nb")) { + thisPage.conversations.enleverMessagesRepond(); + } } ), euphorik.Util.positionBulleType.droite - ) + ); // - $("body").append('
') + $("body").append('
'); // affichage des smiles $("#smiles").append(this.formateur.getSmilesHTML()).children().each( - function(i) - { - var opacityBase = $(this).css("opacity") + function(i) { + var opacityBase = $(this).css("opacity"); $(this).click( - function() - { - thisPage.util.replaceSelection($("form#posterMessage input.message")[0], thisPage.formateur.smiles[$(this).attr("class")][0].source.replace(/\\/g, "")) + function() { + thisPage.util.replaceSelection($("form#posterMessage input.message")[0], thisPage.formateur.smiles[$(this).attr("class")][0].source.replace(/\\/g, "")); } ).hover( - function() { $(this).animate({opacity: 1}, 200) }, - function() { $(this).animate({opacity: opacityBase}, 200) } - ) + function() { $(this).animate({opacity: 1}, 200); }, + function() { $(this).animate({opacity: opacityBase}, 200); } + ); } - ) - $("form button.smiles").hover( + ); + $("form#posterMessage button.smiles").hover( // affichage de la boite présentant les smiles - function(e){ thisPage.util.afficherBoite($("#smiles"), $(e.target), positionTypeX.centre, positionTypeY.basRecouvrement) }, + function(e){ thisPage.util.afficherBoite($("#smiles"), $(e.target), positionTypeX.centre, positionTypeY.basRecouvrement); }, function(){} - ) + ); $("#smiles").hover( function(){}, - function() - { - $("#smiles").hide() + function() { + $("#smiles").hide(); } - ) + ); //
// événements var nouveauMessage = - function() - { + function() { // captcha anti bot - if ($("form input.captcha").val() != "") return - - thisPage.envoyerMessage( - $("form input.pseudo").val(), - $("form input.message").val() - ) + if ($("form#posterMessage input.captcha").val() !== "") { + return; + } + + var message = $("form#posterMessage input.message").val(); + + // traitement des commandes.. + var retCommandes = thisPage.commandes.exec(message); + switch (retCommandes[0]) { + case euphorik.Commandes.statut.pas_une_commande : + thisPage.envoyerMessage(message, $("form#posterMessage input.message").val()); + break; + case euphorik.Commandes.statut.erreur_commande : + thisPage.util.messageDialogue(retCommandes[1], euphorik.Util.messageType.erreur); + break; + case euphorik.Commandes.statut.ok : + $("form#posterMessage input.message").val(""); + break; + } - $("form input.message").focus() - } + $("form#posterMessage input.message").focus(); + }; - $("form").keypress( - function(e) - { - if (e.which === 13) // return - nouveauMessage() + $("form#posterMessage").keypress( + function(e) { + if (e.which === 13) { // return + nouveauMessage(); + } } - ) + ); - $("form button.return").click(nouveauMessage) + $("form#posterMessage button.return").click(nouveauMessage); // interdiction de submiter le formulaire - $("form").submit(function(){ return false}) + $("form#posterMessage").submit(function(){ return false; }); $("input.pseudo").click( - function() - { - var input = $("input.pseudo")[0] - if (input.value === euphorik.conf.pseudoDefaut) - input.value = "" + function() { + var input = $("input.pseudo")[0]; + if (input.value === euphorik.conf.pseudoDefaut) { + input.value = ""; + } } - ) -} + ); +}; -PageMinichat.prototype.decharger = function() -{ - this.conversations.pageEvent.stopAttenteCourante() +euphorik.PageMinichat.prototype.decharger = function() { + this.conversations.comet.stopAttenteCourante(); - $("body #smiles").remove() -} + $("body #smiles").remove(); +}; -PageMinichat.prototype.getJSONMessage = function(pseudo, message) -{ - var repondA = [] - for (var id in this.conversations.messagesRepond) - repondA.push(parseInt(id)) // FIXME : une propriété ne peut pas être de type int ? +euphorik.PageMinichat.prototype.getJSONMessage = function(pseudo, message) { + var repondA = []; + objectEach(this.conversations.messagesRepond, function(id) { + repondA.push(parseInt(id, 10)); + }); return { "header" : { "action" : "put_message", "version" : euphorik.conf.versionProtocole }, @@ -198,87 +205,74 @@ PageMinichat.prototype.getJSONMessage = function(pseudo, message) "nick" : pseudo, "content" : message, "answer_to" : repondA - } -} + }; +}; -PageMinichat.prototype.envoyerMessage = function(pseudo, message) -{ - var thisPageMinichat = this +euphorik.PageMinichat.prototype.envoyerMessage = function(pseudo, message) { + var thisPageMinichat = this; // (un pseudo vide est autorisé) - pseudo = this.formateur.filtrerInputPseudo(pseudo) + pseudo = this.formateur.filtrerInputPseudo(pseudo); - if (pseudo === euphorik.conf.nickDefaut) - { - this.util.messageDialogue("Le pseudo ne peut pas être " + euphorik.conf.nickDefaut) - return + if (pseudo === euphorik.conf.nickDefaut) { + this.util.messageDialogue("Le pseudo ne peut pas être " + euphorik.conf.nickDefaut); + return; } - - message = message.trim() - if (!message) - { - this.util.messageDialogue("Le message est vide") - return + + message = message.trim(); + if (!message) { + this.util.messageDialogue("Le message est vide"); + return; } - if (!this.client.authentifie()) - if (!this.client.enregistrement()) - { - this.util.messageDialogue("login impossible") - return - } + if (!this.client.authentifie()) { + if (!this.client.enregistrement()) { + this.util.messageDialogue("login impossible"); + return; + } + } - this.client.pseudo = pseudo + this.client.pseudo = pseudo; // évite le double post - if (this.envoieMessageEnCours) - { - this.util.messageDialogue("Message en cours d'envoie...") - return + if (this.envoieMessageEnCours) { + this.util.messageDialogue("Message en cours d'envoie..."); + return; } - this.envoieMessageEnCours = true + this.envoieMessageEnCours = true; - jQuery.ajax( - { - url : "request", - type: "POST", - data : this.util.jsonVersAction(this.getJSONMessage(pseudo, message)), - dataType : "json", - beforeSend : function(xmlHttpRequest) - { - // TODO : ça marche ça ?? - xmlHttpRequest.setRequestHeader("X-Requested-With", "") - }, - success : function(data, textStatus) - { - if(data["reply"] === "ok") - { - // met à jour la classe des messages auquel repond celui ci (c'est un peu de la triche) TODO : ya mieux ? - for (var messId in thisPageMinichat.conversations.messagesRepond) - { - for (var j = 0; j < thisPageMinichat.conversations.conversations.length; j++) - { - var mess = thisPageMinichat.conversations.conversations[j].messagesParId[messId] - if (mess != undefined) - mess.clientARepondu = true + jQuery.ajax({ + url : "request", + type: "POST", + data : this.util.jsonVersAction(this.getJSONMessage(pseudo, message)), + dataType : "json", + beforeSend : function(xmlHttpRequest) { + // TODO : ça marche ça ?? + xmlHttpRequest.setRequestHeader("X-Requested-With", ""); + }, + success : function(data, textStatus) { + if(data.reply === "ok") { + // met à jour la classe des messages auquel repond celui ci (c'est un peu de la triche) TODO : ya mieux ? + objectEach(thisPageMinichat.conversations.messagesRepond, function(messId) { + thisPageMinichat.conversations.conversations.each(function(i, conv) { + var mess = conv.messagesParId[messId]; + if (!mess) { + mess.clientARepondu = true; } - // TODO : ca sert à qque chose ? - //$("#conversations div#" + thisPageMinichat.conversations.messagesRepond[messId].getId()).addClass("repondu") - } - - $("form input.message").val("") - thisPageMinichat.conversations.enleverMessagesRepond() - } - else if (data["reply"] === "error") - { - thisPageMinichat.util.messageDialogue(data["error_message"]) - } - thisPageMinichat.envoieMessageEnCours = false - }, - error : function() - { - thisPageMinichat.envoieMessageEnCours = false + }); + // TODO : ca sert à qque chose ? + //$("#conversations div#" + thisPageMinichat.conversations.messagesRepond[messId].getId()).addClass("repondu") + }); + + $("form#posterMessage input.message").val(""); + thisPageMinichat.conversations.enleverMessagesRepond(); + } else if (data.reply === "error") { + thisPageMinichat.util.messageDialogue(data.error_message); } + thisPageMinichat.envoieMessageEnCours = false; + }, + error : function() { + thisPageMinichat.envoieMessageEnCours = false; } - ) -} + }); +};