//
// You should have received a copy of the GNU General Public License
// along with Euphorik. If not, see <http://www.gnu.org/licenses/>.
- \r
-/*jslint laxbreak:true */\r
+
+/*jslint laxbreak:true */
-euphorik.PageMinichat = function(client, formateur, util) {
+euphorik.PageMinichat = function(client, formateur, util, communication) {
this.nom = "minichat";
this.client = client;
this.formateur = formateur;
- this.util = util;\r
+ this.util = util;
+ this.communication = communication;
this.commandes = new euphorik.Commandes(this.client);
// permet d'éviter d'envoyer plusieurs messages simultanément en pressant
};
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 = '' +\r
+ // le fait que tout soit collé est fait exprès, permet d'éviter d'avoir des espaces supplémentaires entre les spans
+ var formulaireXHTML = '' +
'<form method="post" action="" id ="posterMessage">' +
' <p>' +
' <input class="captcha" name="captcha" type="text" size="8" maxlength="8"></input>' +
- ' <input class="pseudo" name="pseudo" type="text" maxlength="50" value="' + encodeURI(euphorik.conf.nickDefaut) + '"></input>' +
+ ' <input class="pseudo" name="pseudo" type="text" maxlength="50" value="' + encodeURI(euphorik.conf.pseudoDefaut) + '"></input>' +
' <span id="repondA"><span class="nb">0</span><span class="messages"></span></span>' +
' <input class="message" name="message" type="text" maxlength="500" value=""></input>' +
' <button class="smiles"></button>' +
' <button class="return"></button>' +
' </p>' +
- '</form>';\r
+ '</form>';
var trollXHTML = '<div id="trollCourant">Troll de la semaine : <span class="troll"></span></div>';
var conversationXHTML = '<table id="conversations"><tr></tr></table>';
if (this.client.chatOrder === "reverse") {
return trollXHTML + formulaireXHTML + conversationXHTML;
} else {
- return trollXHTML + conversationXHTML + formulaireXHTML;\r
+ return trollXHTML + conversationXHTML + formulaireXHTML;
}
};
euphorik.PageMinichat.prototype.charger = function() {
thisPage = this;
-
+
$("#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 euphorik.Conversations(this.client, this.formateur, this.util, this.fragment);
- this.conversations.rafraichirMessages(true);
+ this.chargerConversationsFragment();
+ this.conversations.rafraichirMessages(true);
+
this.util.setCaretToEnd($("form#posterMessage input.message")[0]);
// les outils de bannissement (uniquement pour les ekMaster)
if (this.client.ekMaster) {
+ // TODO : augmentation un peu space, à revoir
this.util.outilsBan = $(
'<span id="outilsBan">' +
' <span class="spacer"></span>' +
this.util.infoBulle("La raison", $("input", this.util.outilsBan));
}
- this.util.infoBulle("Ouvrir la conversation liée au troll de la semaine", $("#trollCourant .troll"));
-
+ // la barre d'outils liée à chaque message
+ this.util.outilsMessage = $('<div id="outilsMess"><div class="extraire"></div><div class="extraireCompletement"></div></div>').prependTo("#page.minichat");
+ 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() {
+ thisPage.util.afficherBoite(
+ $(".messages", this),
+ $(this),
+ euphorik.Util.positionTypeX.centre,
+ thisPage.client.chatOrder === "reverse" ? euphorik.Util.positionTypeY.bas : euphorik.Util.positionTypeY.haut
+ );
+ },
function() { $(".messages", this).hide(); }
).click(
function(e) {
if ($(e.target).is(".nb")) {
- thisPage.conversations.enleverMessagesRepond();\r
+ thisPage.conversations.enleverMessagesRepond();
}
}
),
);
$("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), euphorik.Util.positionTypeX.centre, euphorik.Util.positionTypeY.basRecouvrement); },
function(){}
);
$("#smiles").hover(
}
);
// </smiles>
-
+
// événements
var nouveauMessage =
function() {
// captcha anti bot
- if ($("form#posterMessage input.captcha").val() !== "") {\r
- return;\r
- }\r
- \r
- var message = $("form#posterMessage input.message").val();\r
- \r
- // traitement des commandes..\r
- var retCommandes = thisPage.commandes.exec(message); \r
- switch (retCommandes[0]) {\r
+ 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());\r
- break;\r
- case euphorik.Commandes.statut.erreur_commande :\r
- thisPage.util.messageDialogue(retCommandes[1], euphorik.Util.messageType.erreur);\r
- break;\r
- case euphorik.Commandes.statut.ok :\r
- $("form#posterMessage input.message").val("");\r
- break;\r
+ thisPage.envoyerMessage($("form#posterMessage input.pseudo").val(), message);
+ 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#posterMessage input.message").focus();
$("form#posterMessage").keypress(
function(e) {
if (e.which === 13) { // return
- nouveauMessage();\r
+ nouveauMessage();
}
}
);
function() {
var input = $("input.pseudo")[0];
if (input.value === euphorik.conf.pseudoDefaut) {
- input.value = "";\r
+ input.value = "";
}
}
);
};
+euphorik.PageMinichat.prototype.chargerConversationsFragment = function() {
+ var thisPageMinichat = this;
+
+ // attention : "conv" doit être un tableau d'entier
+ try {
+ var conv = this.fragment.getVal("conv");
+ if (conv) {
+ conv.each(function(i, racine) {
+ thisPageMinichat.client.ajouterConversation(racine)
+ });
+ }
+ } catch(e) {
+ ;; console.log(e)
+ }
+}
+
euphorik.PageMinichat.prototype.decharger = function() {
this.conversations.comet.stopAttenteCourante();
$("body #smiles").remove();
-};
-
-euphorik.PageMinichat.prototype.getJSONMessage = function(pseudo, message) {
- var repondA = [];\r
- objectEach(this.conversations.messagesRepond, function(id) {
- repondA.push(parseInt(id, 10));\r
- });
-
- return {
- "header" : { "action" : "put_message", "version" : euphorik.conf.versionProtocole },
- "cookie" : this.client.cookie,
- "nick" : pseudo,
- "content" : message,
- "answer_to" : repondA
- };
+
+ this.fragment.delVal("conv")
};
euphorik.PageMinichat.prototype.envoyerMessage = function(pseudo, message) {
// (un pseudo vide est autorisé)
pseudo = this.formateur.filtrerInputPseudo(pseudo);
- if (pseudo === euphorik.conf.nickDefaut) {
- this.util.messageDialogue("Le pseudo ne peut pas être " + euphorik.conf.nickDefaut);
+ if (pseudo === euphorik.conf.pseudoDefaut) {
+ this.util.messageDialogue("Le pseudo ne peut pas être " + euphorik.conf.pseudoDefaut);
return;
}
- \r
+
message = message.trim();
if (!message) {
this.util.messageDialogue("Le message est vide");
if (!this.client.enregistrement()) {
this.util.messageDialogue("login impossible");
return;
- }\r
+ }
}
this.client.pseudo = pseudo;
}
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 ?\r
- objectEach(thisPageMinichat.conversations.messagesRepond, function(messId) {\r
- thisPageMinichat.conversations.conversations.each(function(i, conv) {
- var mess = conv.messagesParId[messId];
- if (!mess) {
- mess.clientARepondu = true;\r
- }
- });
- // TODO : ca sert à qque chose ?
- //$("#conversations div#" + thisPageMinichat.conversations.messagesRepond[messId].getId()).addClass("repondu")
+ this.communication.requete(
+ "put_message",
+ this.getJSONMessage(pseudo, message),
+ function() {
+ // TODO : revoir cette partie
+ // 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;
+ $("#conversations #" + mess.getId(conv.getId())).addClass("repondu")
+ }
});
-
- $("form#posterMessage input.message").val("");
- thisPageMinichat.conversations.enleverMessagesRepond();
- } else if (data.reply === "error") {
- thisPageMinichat.util.messageDialogue(data.error_message);
- }
+ });
+ $("form#posterMessage input.message").val("");
+ thisPageMinichat.conversations.enleverMessagesRepond();
thisPageMinichat.envoieMessageEnCours = false;
},
- error : function() {
+ function(data) {
+ thisPageMinichat.util.messageDialogue(data.error_message);
thisPageMinichat.envoieMessageEnCours = false;
+ },
+ true,
+ {
+ error : function() {
+ thisPageMinichat.envoieMessageEnCours = false;
+ }
}
+ );
+};
+
+euphorik.PageMinichat.prototype.getJSONMessage = function(pseudo, message) {
+ var repondA = [];
+ objectEach(this.conversations.messagesRepond, function(id) {
+ repondA.push(parseInt(id, 10));
});
-};\r
+
+ return {
+ "cookie" : this.client.cookie,
+ "nick" : pseudo,
+ "content" : message,
+ "answer_to" : repondA
+ };
+};