* Crée un <br /> XHTML (lf -> br coté client)
* A chaque Shift-enter la textbox s'agrandit d'une ligne
* Pouvoir activer pas défaut la présentation multi-ligne via le profile (le nombre de ligne)
-* Système de commande /<commande>
- * /nick : changer de pseudo
- * /me : "*<pseudo> <message>"
- * /blam <login> : permet d'envoyer un blame à qqun (uniquement depuis un modo vers un non-modo)
- * /+ blabla Pourvoir ajouter du texte (correctif en général) à son dernier message par une commande. Le texte ajouté est mise en évidence. Ceci peut être fait plusieurs fois.
-* Ajout des wikilien : [[chien de prairie]] -> http://fr.wikipedia.org/wiki/Chien_de_prairie
-=== v1.4 ===
-* gestion des timezone (fuseaux horaire) :
- * L'utilisateur peut simplement définir une timezone dans son profil, les dates sont alors affichées en fonction de sa zone (en option)
+=== v1.4 ===\r
+* Ajout des wikilien : [[chien de prairie]] -> http://fr.wikipedia.org/wiki/Chien_de_prairie[3] Compatibilité avec wmcoinoin\r
+ * http://moules.org/les_normes/le_backend (utilisé la DTD et non le schéma qui n'est pas correct)\r
+ * http://pycoincoin.free.fr/wikini/wakka.php?wiki=PagePrincipale
* Transfert des messages JSON (AJAX) en https et le noter dans la faq (même la mafia chinoise ne peut pas sniffer les messages). En fait il suffit (sauf erreur) de sécuriser euphorik : https://www.euphorik.ch
* voir : http://cert.startcom.org/ pour un certif gratuit ou du coté de cacert.org (linuxfr.org l'utilise)
* Mega stabilisation du code pour la cloture de la version 1 ! .. et en route pour la version 2 !
[3] Gestion de l'historique (calendrier)
[3] Afficher une page concernant la grammaire, ya un topic sur HFR
-[3] Compatibilité avec wmcoinoin
- * http://moules.org/les_normes/le_backend (utilisé la DTD et non le schéma qui n'est pas correct)
- * http://pycoincoin.free.fr/wikini/wakka.php?wiki=PagePrincipale
[3] Recharger automatiquement la page lorsque les numéros de la version du protocole ne sont plus égaux (kiki)
[3] Idée de bernie :
* Pouvoir STFUER des personnes, lorsqu'elle envoie un message un autre truc à la con est écrit à la place
/**\r
* Permet de gérer les événements (push serveur).\r
* Principe de fonctionnement :\r
- * - La page courante créer un objet euphorik.PageEvent en indiquant le nom de la page\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" sur serveur\r
+ * - 'funsReceive' un ensemble de fonctions à appeler en fonction du "reply" du serveur\r
*\r
- * l'information envoyé est sous la forme :\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çu est sous la forme :\r
+ * l'information reçue est sous la forme :\r
* {\r
* "reply" : <reply>\r
* [..]\r
* }\r
- * @page la page courante pour laquelle on écoute des événements (un string)\r
- * @util le helper 'util'\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
-euphorik.PageEvent = function(page, util) {\r
+Comet = function(page, version) {\r
this.page = page;\r
- this.util = util;\r
+ this.version = version;\r
\r
// l'objet JSONHttpRequest représentant la connexion d'attente\r
this.attenteCourante = undefined;\r
/**\r
* Arrête l'attente courante s'il y en a une.\r
*/\r
-euphorik.PageEvent.prototype.stopAttenteCourante = function() {\r
+Comet.prototype.stopAttenteCourante = function() {\r
this.stop = true;\r
\r
if (this.attenteCourante) {\r
* les fonctions acceptent un paramètre correspondant au données reçues.\r
* exemple : {"new_message" : function(data){ ... }}\r
*/\r
-euphorik.PageEvent.prototype.waitEvent = function(funSend, funsReceive) {\r
+Comet.prototype.waitEvent = function(funSend, funsReceive) {\r
this.stopAttenteCourante();\r
\r
this.stop = false;\r
\r
- var thisPageEvent = this;\r
+ var thisComet = this;\r
\r
// on doit conserver l'ordre des valeurs de l'objet JSON (le serveur les veut dans l'ordre définit dans le protocole)\r
// TODO : ya pas mieux ?\r
var dataToSend = {\r
- "header" : { "action" : "wait_event", "version" : euphorik.conf.versionProtocole },\r
+ "header" : { "action" : "wait_event", "version" : this.version },\r
"page" : this.page\r
};\r
var poulpe = funSend();\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: this.util.jsonVersAction(dataToSend),\r
+ data: { action : JSON.stringify(dataToSend) \r
success:\r
function(data) { \r
funsReceive[data.reply](data);\r
\r
// rappel de la fonction dans 100 ms\r
- setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive); }, 100);\r
+ setTimeout(function(){ thisComet.waitEvent2(funSend, funsReceive); }, 100);\r
},\r
error:\r
function(XMLHttpRequest, textStatus, errorThrown) {\r
;; console.log("Connexion perdue dans PageEvent.prototype.waitEvent()");\r
- setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive); }, 1000);\r
+ setTimeout(function(){ thisComet.waitEvent2(funSend, funsReceive); }, 1000);\r
}\r
});\r
};\r
/**\r
* Si un stopAttenteCourante survient un peu n'importe quand il faut imédiatement arreter de boucler.\r
*/\r
-euphorik.PageEvent.prototype.waitEvent2 = function(funSend, funsReceive) {\r
+Comet.prototype.waitEvent2 = function(funSend, funsReceive) {\r
if (this.stop) {\r
return;\r
}\r
;; 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("pageEvent");
;; euphorik.include("pageMinichat/pageMinichat");\r
;; euphorik.include("pageMinichat/conversation");\r
;; euphorik.include("pageMinichat/conversations");\r
-;; euphorik.include("pageMinichat/message");
+;; euphorik.include("pageMinichat/message");\r
+;; euphorik.include("pageMinichat/commandes");
;; euphorik.include("pageAdmin");
;; euphorik.include("pageProfile");
;; euphorik.include("pageRegister");
this.formateur = formateur;
this.util = util;
- this.pageEvent = new euphorik.PageEvent("admin", this.util);
+ this.comet = new Comet("admin", euphorik.conf.versionProtocole);
// le timer qui rappelle periodiquement le rafraichissement des IP bannies
this.timeoutIDmajIPs = null;
* Interface des pages.
*/
euphorik.PageAdmin.prototype.decharger = function() {
- this.pageEvent.stopAttenteCourante();
+ this.comet.stopAttenteCourante();
// supprime le rafraichissement période des ips
if (this.timeoutIDmajIPs) {
euphorik.PageAdmin.prototype.waitEvent = function() {
var thisPageAdmin = this;
- this.pageEvent.waitEvent(
+ this.comet.waitEvent(
function() { return { "last_troll" : thisPageAdmin.trolls.dernierTroll }; },
{
"troll_added" : function(data){ thisPageAdmin.trolls.ajouterTrollEvent(data); },