-[ok] Ne pas effacer le message (dans le <input>) si l'on recoit un "pas ok" lors de l'envoie\r
-\r
-* Utiliser une listbox pour la liste de css\r
-* Ralentir volontairement le connexion lors d'un mauvais login (ou après n mauvais login)\r
-* Pouvoir switcher entre un affichage "pseudo" ou "pseudo (login)"\r
-* réduire les pseudo trop long en mettant un ".." à la fin et permettre de le voir en entier lorsque le curseur le survol.\r
-* Problème d'utf-8 avec opera, firefox et konqueror, le prologue (<?xml charset="utf8"...) n'est pas supporté par certains navigateur\r
-* Transfert des messages XML (AJAX) en https et le noter dans la faq (même la mafia chinoise ne peut pas sniffer les messages)\r
-* Tester avec des caractères exotiques (jap, coréen, etc..)\r
-* Shift-enter pour ajouter une ligne dans la ligne de saisie (retour à la ligne)\r
- * Crée un <br /> XHTML\r
-* Rendre compatible IE 7
-* Faire une page faq et raconter n'importe quoi (entre autre la limitation avec firefox) "pourquoi ce site à des couleurs qui ne veulent rien dire ?"\r
-* Créer un favicon (joli)\r
-* Système de commande /<commande>\r
- * /nick : changer de pseudo\r
- * /me : "*<pseudo> <message>"\r
- * /blam <login> : permet d'envoyer un blame à qqun (uniquement depuis un modo vers un non-modo) \r
- * /+ 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.\r
-* Ajouter de nouveaux smiles :\r
- * "slurp" ("ca fait envie") : http://forum-images.hardware.fr/images/perso/huit.gif\r
- * "agreed" : http://forum-images.hardware.fr/icones/smilies/jap.gif\r
- * "dodo" (tete avec un bonnet de nuit et des ZZZZ)\r
- * "hum?" : http://forum-images.hardware.fr/icones/smilies/heink.gif\r
- * "pas reveillé" avec une tasse de café et des cernes : http://forum-images.hardware.fr/images/perso/elmoricq.gif\r
- * "interrogation" genre http://forum-images.hardware.fr/icones/confused.gif\r
- * http://forum-images.hardware.fr/images/perso/dao.gif ou http://forum-images.hardware.fr/icones/redface.gif\r
- * http://forum-images.hardware.fr/icones/ohwell.gif\r
-* Ajouter un skin "simple" sans images ni fioritures (éventuellement le proposer par défaut)\r
-* Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera)\r
-* Gestion de l'historique au niveau du navigateur (pouvoir revenir aux pages précédentes)\r
-* Intégrer les totoz : http://www.totoz.eu/ (avec une limite de 3 par messages par exemple) \r
- * avoir une option pour les cacher ou les voir\r
- * Masquer systématiquement ceux qui dépassent d'une certaine taille (en pixel?)\r
- * modifier la syntaxe des smiles actuels (pour pas qu'ils entre en conflit avec totoz)\r
-* Mettre un icone (genre sablier) lorsque le chat se charge (également lors d'un changement de page par exemple)\r
-* gestion des timezone (fuseaux horaire) :\r
- * L'utilisateur peut simplement définit une timezone dans son profil, les dates sont alors affichées en fonction de sa zone (en option)\r
-* Créer un style "super old school" (couleur 8 bit, pas de smiles/images, font fixe)\r
-* Un statut "EK" avec plein de privilège à la con. (avoir une petite étoile à coté de son nick ou le nick d'une certaine couleur)\r
-* Tests de monter en charge coté serveur, analyse de la complexité (regarder du coté des TODO dans le code). Utiliser eventuellement Tsung\r
-* Profiling pour améliorer les performances (client et serveur)\r
- * traitementComplet() de euphorik.js est très très lent à executer\r
-* Traiter les tags TODO dans le code\r
-\r
-== Bugs ==\r
-1 : Critique\r
-2 : Urgent\r
-3 : Peu grave\r
-[ok] Au bout d'un moment opera n'écoute plus rien... et donc n'affiche plus les nouveaux messages..\r
-[ok] La méthod traiterSmiles est très lourde ! (4 secondes pour 80 appels (une page normale))\r
-[ok] Utiliser Alpha truc à la place d'opacity sous explorer\r
-[ok] les heures sont formatées par le serveur avec un espace devant : " 12.30:10", zarb\r
+[ok] Ne pas effacer le message (dans le <input>) si l'on recoit un "pas ok" lors de l'envoie
+[ok] Conversations :
+ [ok] implémenter coté serveur et client la sauvegarde et la restauration des conversations
+ [ok] Supprimer l'envoie de la description des conversations lors du refresh ainsi que modifié la manière de créer les conversations (maj des diagrammes de séquence)
+ [ok] Navigation vers les pages précédentes
+ [ok] Lien vers une conversation dans les messages sous cette forme {5F}. Le clic dessus ouvre la conversation. Egalement un bouton sur chaque conversation pour insérer son lien dans le message en cours de rédaction
+ [ok] Mettre à jour la CSS de chaque skin
+[ok] Remplacer l'XML par du JSON. gain en simplicité et en temps d'execution.
+ [ok] Tester sur un prototype : l'authentification -> concluant
+ [ok] Si concluant passage complet à JSON
+ [ok] Les id ne sont plus passés en base 36
+ [ok] Flusher le profil lors du déchargement de la page ? -> oui
+ [ok] Envoyer les infos des conversations avec l'attente d'events ? -> oui
+[ok] Problème de rafraichissement des couleurs des messages auquels on répond
+[ok] Problème dans l'alternance des couleurs des messages
+[ok] Utiliser une listbox pour la liste des css
+[ok] Changer les noms des css : Light -> Cold, Old -> Classic
+[ok] Faire une page faq et raconter n'importe quoi (entre autre la limitation avec firefox) "pourquoi ce site à des couleurs qui ne veulent rien dire ?"
+[ok] Ralentir volontairement le connexion lors d'un mauvais login (ou après n mauvais login)
+[ok] Pouvoir afficher le login et/ou le pseudo. Avoir dans le profile une liste box avec ces choix :
+ * pseudo
+ * login
+ * pseudo(login)
+* Créer un favicon (joli)
+[ok] Créer une page 'about'
+[ok] Ajouter de nouveaux smiles et changer la syntax pour eviter le conflit avec totoz :
+ * "slurp" : http://forum-images.hardware.fr/images/perso/huit.gif
+ * "agreed" : http://forum-images.hardware.fr/icones/smilies/jap.gif
+ * "dodo" (tete avec un bonnet de nuit et des ZZZZ)
+ * "hum?" : http://forum-images.hardware.fr/icones/smilies/heink.gif
+ * "pas reveillé" avec une tasse de café et des cernes : http://forum-images.hardware.fr/images/perso/elmoricq.gif
+ * "interrogation" genre http://forum-images.hardware.fr/icones/confused.gif
+ * http://forum-images.hardware.fr/images/perso/dao.gif ou http://forum-images.hardware.fr/icones/redface.gif
+ * http://forum-images.hardware.fr/icones/ohwell.gif
+[ok] Tester avec des caractères accentués sur Firefox, Safari, Opera et IE7. Les messages doivent être envoyés en UTF8.
+[ok] Tester avec des caractères exotiques (jap, coréen, etc..)
+[ok] Modifier la syntaxe des smiles actuels (pour pas qu'ils entre en conflit avec totoz)
+[ok] Trouver un moyen pour éviter la création à la suite de plusieurs comptes (via register).
+[ok] Restructurer le code Erlang : déplacer certaines fonctions d'un module à l'autre (ev. créer des modules)
+[ok] remplacer lightbox par : http://leandrovieira.com/projects/jquery/lightbox/
+[ok] Problème des images dans les trolls
+[ok] Finir l'édition (mémoriser le contenu) des trolls
+[ok] Est-ce que client.dernierMessageErreur est vraiment utile ??
+[ok] marquer <aucun login> lors de l'affichage des login dans le chat pour les personnes n'en ayant pas : finalement il n'affiche tout simplement pas les logins
+[ok] Avoir un thème de discussion affiché en haut des messages genre appellé "troll de la semaine : linux sera-t-il desktop ready en 2008?"
+[ok] Un statut "EK" avec plein de privilège à la con. (avoir une petite étoile à coté de son nick ou le nick d'une certaine couleur)
+ * Une page "admin" avec :
+ * Trolls : La liste des trolls proposés. L'admin peut éditer ses propres trolls.
+ * Les ip bannis : avec la date d'échéance et le pseudo. Un admin peut décider de débannir un utilisateur
+ * Pouvoir kick/ban un user (directement depuis le chat, lors du survol du pseudo d'un user des options sont présentés sous la forme de petits boutons)
+ * Un kick : l'utilisateur (ip) est kické et bannis pour 15 min
+ * Un ban : l'utilisateur (ip) est kické et bannis pour 3 jours
+ * Modification de la BD -> ajouter une relation "banned_ip"
+[ok] Passer à jQuery 1.2.4
+[ok] La largeur de la ligne de saisie doit corresponde à la largeur de la fenêtre
+[ok] Lorsqu'un troll de la semaine est posté un message l'est également par le sys formant la racine de la conversation lié au troll
+ * Il est alors possible de voir la conversation lié au troll en cliquant sur le troll de la page principale
+[ok] Faire des infos bulles à la facebook
+[ok] Mettre les constantes au niveau du serveur dans euphorik_defines.hrl (par exemple les temps lié au flood)
+[ok] Créer un style common puis adapter les CSS (classic et cold -> web2.0)
+ * Alignement du menu, du troll et des trolls de la partie admin à l'aide de line-height
+[ok] Finir les options d'affichage des bulles et des dates
+[ok] Stocker quelque part la version de la BD
+ * Créer une table "proprietes" contenant des tuples {propriete, nom, val}
+[ok] Définir la bonne feuille de style au chargement de la page pour éviter le "clignotement" pas beau
+ * Le cookie envoyé par le client doit permettre de retrouver le user
+[ok] Finir le script de mise en production
+ * Make des modules.
+ * Compactage des js lors de la mise en production (afin d'optimiser la bande passante lors de l'accès au site), regarder comment fait jQuery.
+ * Modifier le script pour virer les lignes matchant /^\W*;;.*$/
+ * Virer les commentaires dans les pages HTML
+ * processus :
+ 1) copie des fichiers (+minimisation)
+ 2) Execution d'un scripte erlang pour recharger tous les modules au sein du noeud
+ 3) Executer euphorik_bd:update() pour mettre à jour la BD
+[ok] Ajouter dans la FAQ et/ou dans la page d'enregistrement les conditions d'utilisation, genre "chacun est responsable de ses dires" https://linuxfr.org/bouchot/
+[ok] Limiter la mise en évidence de la conversation lorsque le curseur se trouve sur les pseudos
+[ok] Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera)
+[ok] Afficher l'ip dans le print_users().
+[ok] Enlever le petit carré mis en couleur et mettre le pseudo + date en couleur à la place
+[ok] Mettre dans la FAQ la signification des couleurs associées aux messages.
+[ok] Elaborer une stratégie de mise à jour de la structure de la BD quand celle ci est modifiée (voir euphorik_bd:vers_version())
+=== v1.0.1 ===
+[ok] Ne pas pouvoir poster avec "<nick>"
+[ok] La validation du profil fait revenir sur la page de chat
+[ok] Ne plus mémoriser le numéro de page dans le profile
+[ok] faire un backup de la base v1 avant d'écrire la mise à jour 1->2, permet de revenir à la 1 si des modifs supplémentaires sont nécessaires
+[ok] Modifier le comportement du système de reponse :
+ * Ne plus concatener les id des messages auquels on répond
+ * Un élément se place entre le pseudo et la ligne de saisie du message et affiche le nombre de message auquel on répond
+ * Lorsque l'on passe le curseur sur cet élément les messages sont affichés en dessous du bouton
+ * Les messages auquels ont répond sont mis en évidence
+ * lors de la mise à jour des messages la liste est interrogé pour savoir s'il faut le mettre en évidence
+[ok] Avoir une option dans le profile pour montrer son rang (ekMaster) de manière ostantatoire, discret ou caché
+[ok] Pouvoir inverser le chat
+[ok] supprimer le cookie si le client n'arrive pas à s'authentifier avec (réponse négative du serveur)
+[ok] (Pouvoir inverser le chat) tester la faisabilité
+
+=== Bugs ===
+1 : Critique
+2 : Urgent
+3 : Peu grave
+
+[1] Il arrive qu'après le poste d'un message le refresh ne se fasse plus, peut-être une "race-condition" dans la classe PageEvent de euphorik.js
+ * Observé sur opera et firefox
+ * Après quelques analyses il apparait que firefox attend alors que le processus n'existe plus du coté yaws
+ * Cela arrive après 5-10min
+ * Regarder du coté des paramètres (options) du socket coté yaws s'il n'y a pas un indice, par exemple un timeout
+ * solution de secours : timeout de (1 à 5 min) sur la connexion ajax
+ * Est-ce que yaws tient compte du "Keep-Alive 300" de l'entête HTTP ? (=5min) (normalement pas puisque HTTP/1.1) après avoir regardé les sources il me semble que non
+ * Normalement si le socket est fermé du coté de yaws, le client devrait être avertis... !?
+ * Après beaucoup d'investigation il semblerai que se soit le firewall/routeur qui coupe la connexion sans prévenir,
+ pour éviter cela il est possible de mettre 'keepalive' à true au niveau du socket, voir :
+ - http://erlang.org/doc/man/inet.html#setopts-2
+ - http://forums.globalscape.com/tm.aspx?m=4114
+[2] Le minificateur js doit ajouter un espace après une expression régulière sinon il est possible que le caractère qui suit celle ci soit pris pour un modificateur de la regexp
+[2] Le widget select qui permet la sélection des css n'est pas initialisé correctement au chargement du site
+[2] Traiter les tags TODO et FIXME dans le code
+[2] Le changement de skin n'est pas mémorisé lorsque l'on est pas connecté (normal puisque le style est mémorisé dans le profil)
+ * solution 1 : permettre le changement de skin uniquement pour les personnes enregistré ?
+ * solution 2 : mémoriser le skin courant dans un cookie
+[2] Il est possible d'envoyer plusieurs fois le même message en pressant très rapidement plusieurs fois sur ENTER... (à vérifier)
+[2] Après l'ajout d'une image il n'est pas possible de naviger depuis celle ci vers les autres images en utilisant Next et Prev de lightbox après l'avoir affich
+[2] Plein de bugs sous MS internet explorer 7
+ * click sur le lien du conv insère sont id systématiquement au début du message
+ * le changement de skin foire complétement
+[3] Quand on revient en arrière dans firefox le message en rédaction est perdu
+ * Pas sous Opera, apparemment Firefox recharge toute la page (donc impossible qu'il puisse remettre le message)
+ * Eventuellement sauvegarder le message en rédaction dans le profile...
+[3] Le changement de page sous Firefox (pas essayé avec d'autre nav) est plutot moche, le texte est d'abord affiché puis le style est appliqué.
+[3] Quelques fichiers sont encore en iso-8859-1 (Makefile, euphorik_bd.hrl, etc..) tout passer en UTF-8
+[3] Un message envoyé sans être authentifié ne sera pas taggé comme appartenant à l'utilisateur.
+ a) L'utilisateur attend des messages SANS donné de cookie car il n'est pas authentifié
+ b) L'utilisateur envoie un message
+ i) Il s'enregistre sans login/pass (réalisé automatiquement)
+ ii) Il envoie le message (put_message)
+ c) Le serveur réagie au nouveau message et débloque la connexion, à ce moment le serveur n'a pas le cookie car pas donné, voir a)
+[3] Traiter le cas ou le cookie n'existe pas coté serveur (et plus généralement traiter tous les cas d'inputs exeptionnels)
+ * Afficher un message dans le cas ou le navigateur du client ne supporte pas les cookies en lui disant que la session ne pourra pas être autmatiquement restoré à la prochaine utilisation
+[3] "Return" ne marche pas sous safari
+[3] Le "cachage" des messages ne marche pas sous Konqueror, voir : "#page.minichat #conversations div.cache {" dans pageMinichat.css.
+ "-khtml-opacity: 0.3;" ne fonctionne pas
+[3] Amélioration des requêtes MNESIA, voir : http://mail.google.com/mail/#label/Erlang+mailing-list/117f688280569a58
+[3] la page est completement rechargé après avoir submité le profile dans opera
+[3] après le login un '?' s'ajoute à l'adresse (opera, firefox)
+
+[ok] Comme le json du client est encapsulé dans de l'xml il faut utiliser des xml entities pour les charactères <, > et &. Il faudrait, absolument éviter cette encapsulation moisie.
+[ok] Au bout d'un moment opera n'écoute plus rien... et donc n'affiche plus les nouveaux messages..
+[ok] La méthod traiterSmiles est très lourde ! (4 secondes pour 80 appels (une page normale))
+[ok] Utiliser Alpha truc à la place d'opacity sous explorer
+[ok] les heures sont formatées par le serveur avec un espace devant : " 12.30:10", zarb