From 3a3ceb24e4a4f3bbec9ec72c945b0cf1bb1ef1a6 Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Thu, 24 Jul 2008 16:43:59 +0000 Subject: [PATCH] --- doc/TODO.txt | 16 ++++------------ js/comet.js | 34 ++++++++++++++++++---------------- js/euphorik.js | 5 +++-- js/pageAdmin.js | 6 +++--- 4 files changed, 28 insertions(+), 33 deletions(-) diff --git a/doc/TODO.txt b/doc/TODO.txt index 655553d..8916f71 100755 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -31,15 +31,10 @@ Ce fichier est obsolète, Redmine le remplace : http://www.euphorik.ch:81 * Crée un
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 / - * /nick : changer de pseudo - * /me : "* " - * /blam : 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 === +* Ajout des wikilien : [[chien de prairie]] -> http://fr.wikipedia.org/wiki/Chien_de_prairie[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 * 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 ! @@ -250,9 +245,6 @@ ok : Implémenté [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 diff --git a/js/comet.js b/js/comet.js index f26a325..5d848d6 100644 --- a/js/comet.js +++ b/js/comet.js @@ -21,29 +21,31 @@ /** * Permet de gérer les événements (push serveur). * Principe de fonctionnement : - * - La page courante créer un objet euphorik.PageEvent en indiquant le nom de la page + * - La page courante créer un objet euphorik.Comet en indiquant le nom de la page et la version du protocole * - La page courante attend un événement en appelant 'waitEvent' et en donnant deux fonctions : * - 'funSend' une fonction qui renvoie les données à envoyer avant l'attente, par exemple {"dernierMess" : 23} * "header" et "page" seront ajoutés aux données - * - 'funsReceive' un ensemble de fonctions à appeler en fonction du "reply" sur serveur + * - 'funsReceive' un ensemble de fonctions à appeler en fonction du "reply" du serveur * - * l'information envoyé est sous la forme : + * l'information envoyée est sous la forme : * { * "header" : {"action" : "wait_event", "version" : }, * "page" : * [..] * } - * l'information reçu est sous la forme : + * l'information reçue est sous la forme : * { * "reply" : * [..] * } - * @page la page courante pour laquelle on écoute des événements (un string) - * @util le helper 'util' + * et sont de type chaine + * + * @page [string] la page courante pour laquelle on écoute des événements (un string) + * @util [int] la version */ -euphorik.PageEvent = function(page, util) { +Comet = function(page, version) { this.page = page; - this.util = util; + this.version = version; // l'objet JSONHttpRequest représentant la connexion d'attente this.attenteCourante = undefined; @@ -55,7 +57,7 @@ euphorik.PageEvent = function(page, util) { /** * Arrête l'attente courante s'il y en a une. */ -euphorik.PageEvent.prototype.stopAttenteCourante = function() { +Comet.prototype.stopAttenteCourante = function() { this.stop = true; if (this.attenteCourante) { @@ -70,17 +72,17 @@ euphorik.PageEvent.prototype.stopAttenteCourante = function() { * les fonctions acceptent un paramètre correspondant au données reçues. * exemple : {"new_message" : function(data){ ... }} */ -euphorik.PageEvent.prototype.waitEvent = function(funSend, funsReceive) { +Comet.prototype.waitEvent = function(funSend, funsReceive) { this.stopAttenteCourante(); this.stop = false; - var thisPageEvent = this; + var thisComet = this; // on doit conserver l'ordre des valeurs de l'objet JSON (le serveur les veut dans l'ordre définit dans le protocole) // TODO : ya pas mieux ? var dataToSend = { - "header" : { "action" : "wait_event", "version" : euphorik.conf.versionProtocole }, + "header" : { "action" : "wait_event", "version" : this.version }, "page" : this.page }; var poulpe = funSend(); @@ -94,18 +96,18 @@ euphorik.PageEvent.prototype.waitEvent = function(funSend, funsReceive) { dataType: "json", // TODO : doit disparaitre 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 - data: this.util.jsonVersAction(dataToSend), + data: { action : JSON.stringify(dataToSend) success: function(data) { funsReceive[data.reply](data); // rappel de la fonction dans 100 ms - setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive); }, 100); + setTimeout(function(){ thisComet.waitEvent2(funSend, funsReceive); }, 100); }, error: function(XMLHttpRequest, textStatus, errorThrown) { ;; console.log("Connexion perdue dans PageEvent.prototype.waitEvent()"); - setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive); }, 1000); + setTimeout(function(){ thisComet.waitEvent2(funSend, funsReceive); }, 1000); } }); }; @@ -113,7 +115,7 @@ euphorik.PageEvent.prototype.waitEvent = function(funSend, funsReceive) { /** * Si un stopAttenteCourante survient un peu n'importe quand il faut imédiatement arreter de boucler. */ -euphorik.PageEvent.prototype.waitEvent2 = function(funSend, funsReceive) { +Comet.prototype.waitEvent2 = function(funSend, funsReceive) { if (this.stop) { return; } diff --git a/js/euphorik.js b/js/euphorik.js index 1d6f3e8..9541716 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -46,18 +46,19 @@ var euphorik = {} ;; 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"); ;; euphorik.include("pageMinichat/conversation"); ;; euphorik.include("pageMinichat/conversations"); -;; euphorik.include("pageMinichat/message"); +;; euphorik.include("pageMinichat/message"); +;; euphorik.include("pageMinichat/commandes"); ;; euphorik.include("pageAdmin"); ;; euphorik.include("pageProfile"); ;; euphorik.include("pageRegister"); diff --git a/js/pageAdmin.js b/js/pageAdmin.js index d83e354..04b642c 100644 --- a/js/pageAdmin.js +++ b/js/pageAdmin.js @@ -28,7 +28,7 @@ euphorik.PageAdmin = function(client, formateur, util) { 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; @@ -80,7 +80,7 @@ euphorik.PageAdmin.prototype.charger = function() { * Interface des pages. */ euphorik.PageAdmin.prototype.decharger = function() { - this.pageEvent.stopAttenteCourante(); + this.comet.stopAttenteCourante(); // supprime le rafraichissement période des ips if (this.timeoutIDmajIPs) { @@ -224,7 +224,7 @@ euphorik.PageAdmin.prototype.deban = function(ip) { 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); }, -- 2.45.2