}.
</erl>
<link rel="stylesheet" href="css/jquery.lightbox.css" type="text/css" media="screen" ></link>
-<script type="text/javascript" src="js/euphorik.js" ></script>
+
+ <script type="text/javascript" src="js/jquery.js" prod="delete"></script>
+ <script type="text/javascript" src="js/jquery.lightbox.js" prod="delete"></script>
+ <script type="text/javascript" src="js/md5.js" prod="delete"></script>
+ <script type="text/javascript" src="js/json2.js" prod="delete"></script>
+ <script type="text/javascript" src="js/comet.js" prod="delete"></script>
+
+ <script type="text/javascript" src="js/euphorik.js" ></script>
+
+ <script type="text/javascript" src="js/conf.js" prod="delete"></script>
+ <script type="text/javascript" src="js/util.js" prod="delete"></script>
+ <script type="text/javascript" src="js/formateur.js" prod="delete"></script>
+ <script type="text/javascript" src="js/pages.js" prod="delete"></script>
+ <script type="text/javascript" src="js/client.js" prod="delete"></script>
+
+ <script type="text/javascript" src="js/pageMinichat/pageMinichat.js" prod="delete"></script>
+ <script type="text/javascript" src="js/pageMinichat/conversation.js" prod="delete"></script>
+ <script type="text/javascript" src="js/pageMinichat/conversations.js" prod="delete"></script>
+ <script type="text/javascript" src="js/pageMinichat/message.js" prod="delete"></script>
+ <script type="text/javascript" src="js/pageMinichat/commandes.js" prod="delete"></script>
+ <script type="text/javascript" src="js/pageAdmin.js" prod="delete"></script>
+ <script type="text/javascript" src="js/pageProfile.js" prod="delete"></script>
+ <script type="text/javascript" src="js/pageRegister.js" prod="delete"></script>
+ <script type="text/javascript" src="js/pageAbout.js" prod="delete"></script>
+
</head>
<body>
<div id="container">
/*jslint laxbreak:true */\r
\r
/**\r
- * Permet de gérer les événements (push serveur).\r
- * Principe de fonctionnement :\r
- * - La page courante créer un objet euphorik.Comet en indiquant le nom de la page et la version du protocole \r
- * - La page courante attend un événement en appelant 'waitEvent' et en donnant deux fonctions :\r
- * - 'funSend' une fonction qui renvoie les données à envoyer avant l'attente, par exemple {"dernierMess" : 23}\r
- * "header" et "page" seront ajoutés aux données\r
- * - 'funsReceive' un ensemble de fonctions à appeler en fonction du "reply" du serveur\r
- *\r
- * l'information envoyée est sous la forme :\r
- * {\r
- * "header" : {"action" : "wait_event", "version" : <v> },\r
- * "page" : <page>\r
- * [..]\r
- * }\r
- * l'information reçue est sous la forme :\r
- * {\r
- * "reply" : <reply>\r
- * [..]\r
- * }\r
- * <reply> et <page> sont de type chaine\r
- *\r
- * @page [string] la page courante pour laquelle on écoute des événements (un string)\r
- * @util [int] la version\r
- */\r
+ * Permet de gérer les événements (push serveur).\r
+ * Principe de fonctionnement :\r
+ * - La page courante créer un objet euphorik.Comet en indiquant le nom de la page et la version du protocole \r
+ * - La page courante attend un événement en appelant 'waitEvent' et en donnant deux fonctions :\r
+ * - 'funSend' une fonction qui renvoie les données à envoyer avant l'attente, par exemple {"dernierMess" : 23}\r
+ * "header" et "page" seront ajoutés aux données\r
+ * - 'funsReceive' un ensemble de fonctions à appeler en fonction du "reply" du serveur\r
+ *\r
+ * l'information envoyée est sous la forme :\r
+ * {\r
+ * "header" : {"action" : "wait_event", "version" : <v> },\r
+ * "page" : <page>\r
+ * [..]\r
+ * }\r
+ * l'information reçue est sous la forme :\r
+ * {\r
+ * "reply" : <reply>\r
+ * [..]\r
+ * }\r
+ * <reply> et <page> sont de type chaine\r
+ *\r
+ * @page [string] la page courante pour laquelle on écoute des événements (un string)\r
+ * @util [int] la version\r
+ */\r
Comet = function(page, version) {\r
this.page = page;\r
this.version = version;\r
dataType: "json",\r
// TODO : doit disparaitre\r
timeout: 180000, // timeout de 3min. Gros HACK pas beau. FIXME problème décrit ici : http://groups.google.com/group/jquery-en/browse_thread/thread/8724e64af3333a76\r
- data: { action : JSON.stringify(dataToSend) \r
+ data: { action : JSON.stringify(dataToSend) },\r
success:\r
- function(data) { \r
+ function(data) { \r
funsReceive[data.reply](data);\r
- \r
+ \r
// rappel de la fonction dans 100 ms\r
setTimeout(function(){ thisComet.waitEvent2(funSend, funsReceive); }, 100);\r
},\r
;; if (req!==false) { if (req.status==200) { window.eval(req.responseText); } else if (req.status==404) { alert("erreur de chargement (404) de : " + url) } }
;; };
-;; euphorik.include("jquery");
-;; euphorik.include("jquery.lightbox");
-;; euphorik.include("md5");
-;; euphorik.include("json2");
-;; euphorik.include("comet");
-
-;; euphorik.include("conf");
-;; euphorik.include("util");
-;; euphorik.include("formateur");
-;; euphorik.include("pages");
-;; euphorik.include("client");
-
-;; euphorik.include("pageMinichat/pageMinichat");\r
-;; euphorik.include("pageMinichat/conversation");\r
-;; euphorik.include("pageMinichat/conversations");\r
-;; euphorik.include("pageMinichat/message");\r
-;; euphorik.include("pageMinichat/commandes");
-;; euphorik.include("pageAdmin");
-;; euphorik.include("pageProfile");
-;; euphorik.include("pageRegister");
-;; euphorik.include("pageAbout");
// tout un tas d'améliorations de JavaScript ;)
/**
}
}
};
-\r
-var objectMemberCount = function(o) {\r
- var nb = 0;\r
- for (var k in o) {\r
- if (o.hasOwnProperty(k)) {\r
- nb += 1;\r
- }\r
- }\r
- return nb;\r
-};\r
+
+var objectMemberCount = function(o) {
+ var nb = 0;
+ for (var k in o) {
+ if (o.hasOwnProperty(k)) {
+ nb += 1;
+ }
+ }
+ return nb;
+};
Array.prototype.each = function(f) {
for (var i = 0; i < this.length; i++) {
// along with Euphorik. If not, see <http://www.gnu.org/licenses/>.
//
// La page d'administation, ne peut être accédée que par les ekMaster (admins)
-\r
-/*jslint laxbreak:true */\r
-\r
+
+/*jslint laxbreak:true */
+
euphorik.PageAdmin = function(client, formateur, util) {
this.nom = "admin";
// supprime le rafraichissement période des ips
if (this.timeoutIDmajIPs) {
- clearTimeout(this.timeoutIDmajIPs);\r
+ clearTimeout(this.timeoutIDmajIPs);
}
};
*/
euphorik.PageAdmin.prototype.majIPs = function() {
if (this.timeoutIDmajIPs) {
- clearTimeout(this.timeoutIDmajIPs);\r
+ clearTimeout(this.timeoutIDmajIPs);
}
var thisPageAdmin = this;
success:
function(data) {
if (data.reply === "list_banned_ips") {
- var XHTML = "";\r
+ var XHTML = "";
data.list.each(function(ip) {
XHTML += '<div class="ban"><span class="ip">' + ip.ip + '</span>|' +
'<span class="temps">' +
ip.remaining_time +
- '</span>|';\r
+ '</span>|';
ip.users.each(function(user) {
XHTML += (j > 0 ? ", " : "") +
'<span class="pseudo">' + thisPageAdmin.formateur.traitementComplet(user.nick) + '</span>' +
});
if (data.list.length === 0) {
- XHTML += '<p>Aucune IP bannie</p>';\r
+ XHTML += '<p>Aucune IP bannie</p>';
}
$("#ips").html(XHTML);
success:
function(data){
if(data.reply === "error") {
- thisPageAdmin.util.messageDialogue(data.error_message);\r
+ thisPageAdmin.util.messageDialogue(data.error_message);
}
}
});
euphorik.Trolls.prototype.ajouterTrollEvent = function(data) {
var thisTrolls = this;
- var XHTML = "";\r
+ var XHTML = "";
data.trolls.each(function(trollData) {
var troll = new euphorik.Troll(trollData.content, trollData.author);
var trollId = trollData.troll_id;
$(this).keypress(
function(e) {
if (e.which === 13) { // return
- $(".modifier", this).click();\r
+ $(".modifier", this).click();
}
}
- );\r
+ );
$(".delTroll", this).click(
function() {
}
);
}
- );\r
+ );
$(".editTroll", this).click(
function() {
$("span", troll).css("display", "none");
- $(troll).append(\r
+ $(troll).append(
'<form><p><input class="content" type="text" size="50" maxlength="500" value="' +
thisTrolls.trolls[id].content +
'"></input><span class="modifier">modifier</span><span class="annuler">annuler</span></p></form>'
);
if (data.trolls.length > 0) {
- thisTrolls.dernierTroll = data.trolls[data.trolls.length - 1].troll_id;\r
+ thisTrolls.dernierTroll = data.trolls[data.trolls.length - 1].troll_id;
}
};
thisTrolls.trolls[data.troll_id].content = data.content;
};
-Trolls.prototype.supprimerTrollEvent = function(data) {
+euphorik.Trolls.prototype.supprimerTrollEvent = function(data) {
$("#trolls #troll" + data.troll_id).remove();
};
-Trolls.prototype.modifier = function(id, content) {
+euphorik.Trolls.prototype.modifier = function(id, content) {
var thisTrolls = this;
var dataToSend = {
euphorik.Commandes.liste = {
"nick" : {
- usage :
+ usage : "\\nick <nouveau pseudo",
+ exec : function(args, client) {
+
+ if (args.length === 0) {
+ return [euphorik.Commandes.statut.erreur_commande, 'Utilisation de la commande : ' + this.usage];
+ }
+
+ client.pseudo = args[0];
+ $("form#posterMessage input.pseudo").val(client.pseudo);
+
+ return [euphorik.Commandes.statut.ok, ''];
+ }
+ }
};
/**
euphorik.Commandes.prototype.exec = function(chaine) {
chaine = chaine.trim();
- var fragments = chaine.split(/\s*/);
+ var fragments = chaine.split(/\s+/);
if (fragments.length === 0 || fragments[0].charAt(0) != '/') {
return [euphorik.Commandes.statut.pas_une_commande, ''];
}
+ console.log(fragments)
var nomCommande = fragments[0].slice(1);
var args = fragments.slice(1);
return [euphorik.Commandes.statut.erreur_commande, 'La commande est vide'];
}
- if (euphorik.Commandes.liste.hasOwnProperty(commande) {
- var commande =
- return this.commandeNick(args);
+ if (euphorik.Commandes.liste.hasOwnProperty(nomCommande)) {
+ return euphorik.Commandes.liste[nomCommande].exec(args, this.client);
}
- switch (commande) {
- case "" :
- case "nick" :
- }
-
- return [euphorik.Commandes.statut.erreur_commande, 'La commande \\' + commande + ' est inconnue'];
-};
-
-euphorik.Commandes.prototype.commandeNick = function(args) {
- if (args.length === 0) {
- return [euphorik.Commandes.statut.erreur_commande, 'Utilisation de la commande : "\nick <nouveau pseudo>"'];
- }
-
- this.client.pseudo = args[0];
- $("form#posterMessage input.pseudo").val(this.client.pseudo);
-
- return [euphorik.Commandes.statut.ok, ''];
+ return [euphorik.Commandes.statut.erreur_commande, 'La commande \\' + nomCommande + ' est inconnue'];
};
};\r
\r
/**\r
- * Enlève tous les messages auquel l'utilisateur souhaite répond.\r
+ * Enlève tous les messages auquel l'utilisateur souhaite répondre.\r
*/\r
euphorik.Conversations.prototype.enleverMessagesRepond = function() {\r
var thisConversations = this;\r
\r
- objectEach(function(messId, mess) {\r
+ objectEach(this.messagesRepond, function(messId, mess) {\r
thisConversations.enleverMessageRepond(mess);\r
});\r
\r
}\r
mess2 = this.messagesRepond[mess2];\r
\r
- if (!mess2 && mess2.racineId !== mess.racineId) {\r
+ if (mess2 && mess2.racineId == mess.racineId) {\r
this.util.messageDialogue("Impossible de répondre à deux messages ne faisant pas partie de la même conversation");\r
return;\r
}\r
*/\r
euphorik.Conversations.prototype.afficherMessagesRepondConversations = function() {\r
var expr = "";\r
- objectEach(function(messId, mess) {\r
+ objectEach(this.messagesRepond, function(messId, mess) {\r
expr += "#" + mess.getId() + ",";\r
});\r
$(expr).addClass("repondEnEvidence");\r
var f = function(tabIds, premierNiveau) {\r
objectEach(tabIds, function(id) {\r
// si le message (id) a déjà été traité\r
- if (!messagesEnEvidence[id] && !premierNiveau) {\r
- continue;\r
- }\r
- \r
- var message = messages.messagesParId[id];\r
- if (!message) { \r
- messagesEnEvidence[id] = premierNiveau ? 3 : (message.auteurId === thisMessage.auteurId ? 1 : 0);\r
- f (message.repondA, false);\r
+ if (messagesEnEvidence[id] || premierNiveau) { \r
+ var message = messages.messagesParId[id];\r
+ if (!message) { \r
+ messagesEnEvidence[id] = premierNiveau ? 3 : (message.auteurId === thisMessage.auteurId ? 1 : 0);\r
+ f (message.repondA, false);\r
+ }\r
}\r
});\r
};\r
\r
var XHTMLrepondA = "";\r
var debut = true;\r
- objectEach(function(id, rep) {\r
+ objectEach(this.repondA, function(id, rep) {\r
if (!debut) {\r
XHTMLrepondA += ", ";\r
}\r
//
// 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) {
this.nom = "minichat";
this.client = client;
this.formateur = formateur;
- this.util = util;\r
+ this.util = util;
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
+ var formulaireXHTML = '' +
'<form method="post" action="" id ="posterMessage">' +
' <p>' +
' <input class="captcha" name="captcha" type="text" size="8" maxlength="8"></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;
}
};
$("#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.conversations.rafraichirMessages(true);
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, euphorik.Util.positionTypeY.bas); },
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(
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.getJSONMessage = function(pseudo, message) {
- var repondA = [];\r
+ var repondA = [];
objectEach(this.conversations.messagesRepond, function(id) {
- repondA.push(parseInt(id, 10));\r
+ repondA.push(parseInt(id, 10));
});
return {
this.util.messageDialogue("Le pseudo ne peut pas être " + euphorik.conf.nickDefaut);
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;
},
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
+ // 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;\r
+ if (mess) {
+ mess.clientARepondu = true;
}
});
// TODO : ca sert à qque chose ?
thisPageMinichat.envoieMessageEnCours = false;
}
});
-};\r
+};