(no commit message)
[euphorik.git] / doc / TODO.txt
index ee877b0..d8b4d9c 100755 (executable)
@@ -1,4 +1,22 @@
-== TODO ==
+== TODO ==\r
+\r
+Ce fichier est obsolète, Redmine le remplace : http://dev.euphorik.ch
+
+=== v2.0 ===
+* Création des channels, un file de discussion ainsi qu'un troll de la semaine par channel (est ce que les channels enfants possèdent aussi un troll de la semaine??)
+   * Un channel possède un nom, une langue, une description et une série de mots clefs (tags)
+   * Un channel peut être l'enfant d'un autre channel (et ceci de manière récursive).
+      * lorsque l'on se trouve sur un parent on voit récursivement les messages de tous les enfants
+      * S'il l'on répond à un message d'un channel enfant le message fait alors "partie" de ce channel enfant
+   * Une page ressence tous les channels, il est possible de faire des recherches de channel par mot clef de la même manière que pour les conversations
+   * N'importe qui peut créer un channel
+      * Il est alors admin pour ce channel et peu nommer d'autres admins (à réflechir)
+   * Le site euphorik.ch ne montre que le channel "euphorik"
+* Création d'un site à l'échelle mondiale
+   * Ce site permet d'accèder à tous les channels
+   * Traduction du site en plusieurs langues
+
+
 [ok] Réaliser la structure suivante :
    * Table minichat : {id, auteur_id, date, pseudo, contenu, reponses_minichat_id} reponses_minichat_id peut être null
    * Table reponse_minichat : {id, minichat_id} la clef est (id, minichat_id)
  * Créer le style old (avec le style de l'ancien site)   
 [ok] Ne pas afficher la css dans le profile
 [ok] Ne pas effacer le message (dans le <input>) si l'on recoit un "pas ok" lors de l'envoie
-
-* Conversations : 
-   a) implémenter coté serveur et client la sauvegarde et la restauration des conversations
-   b) 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)
-   c) Navigation vers les pages précédentes
-   c) Mettre à jour l'HTML/CSS de chaque skin en fonction
-* Utiliser une listbox pour la liste des css
-* Ralentir volontairement le connexion lors d'un mauvais login (ou après n mauvais login)
-* Pouvoir switcher entre un affichage "pseudo" ou "pseudo (login)"
-* réduire les pseudo trop long en mettant un ".." à la fin et permettre de le voir en entier lorsque le curseur le survol.
-* Problème d'utf-8 avec opera, firefox et konqueror, le prologue (<?xml charset="utf8"...) n'est pas supporté par certains navigateur
-* Transfert des messages XML (AJAX) en https et le noter dans la faq (même la mafia chinoise ne peut pas sniffer les messages)
-* Tester avec des caractères exotiques (jap, coréen, etc..)
-* Shift-enter pour ajouter une ligne dans la ligne de saisie (retour à la ligne)
-   * Crée un <br /> XHTML
-   * A chaque Shift-enter la textbox s'agrandit d'une ligne
-* 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 ?"
+[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)
-* 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.
-* Ajouter de nouveaux smiles :
+[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)
    * "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
-* Ajouter un skin "simple" sans images ni fioritures (éventuellement le proposer par défaut)
-* Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera)
-* Gestion de l'historique au niveau du navigateur (pouvoir revenir aux pages précédentes)
-* Intégrer les totoz : http://www.totoz.eu/ (avec une limite de 3 par messages par exemple) 
-   * avoir une option pour les cacher ou les voir
-   * Masquer systématiquement ceux qui dépassent d'une certaine taille (en pixel?)
-   * modifier la syntaxe des smiles actuels (pour pas qu'ils entre en conflit avec totoz)
-* Mettre un icone (genre sablier) lorsque le chat se charge (également lors d'un changement de page par exemple)
-* gestion des timezone (fuseaux horaire) :
-   * L'utilisateur peut simplement définit une timezone dans son profil, les dates sont alors affichées en fonction de sa zone (en option)
-* Créer un style "super old school" (couleur 8 bit, pas de smiles/images, font fixe)
-* 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)
-* Tests de monter en charge coté serveur, analyse de la complexité (regarder du coté des TODO dans le code). Utiliser eventuellement Tsung
-* Profiling pour améliorer les performances (client et serveur)
-   * traitementComplet() de euphorik.js est très très lent à executer
-* Traiter les tags TODO dans le code
-* Compatage des js lors de la mise en production (afin d'optimiser la bande passante lors de l'accès au site)
-* Elaborer une stratégie de mise à jour de la structure de la BD quand celle ci est modifié (voir euphorik_bd:vers_version())
+[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())   
+\r
 
-
-== Bugs ==
+=== Bugs ===
 1 : Critique
 2 : Urgent
 3 : Peu grave
 
+[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] un undefined est mis lorsque l'on répond à qqun qui n'a pas de pseudo (traiter ces pseudo par le formateur)
 [ok] On ne peut pas réponde aux messages du système
 [ok] Apparement les process liés aux connexions ne sont jamais terminé même quand l'utilisateur coupe la connexion à cause de minichat:attends_nouveau_messages()
+[ok] Bug rafraichissement des conversations, exemple :
+   - la page 2 de la conv est affiché (mess 1 à 10) et la conv principale contient les mess de 11 à 2.
+   - lors de l'ajout d'un mess dans la conv celle ci n'est pas rafraichit.
+   - trouver une solution : donné un idDernierMess pour chaque conv ou supprimer cet idDernierMess et jouer sur le fait que l'on recoit un message après l'autre (orientation des messages après attente)
+[ok] En changeant de page puis en revenant sur la page principale les smiles ne sont plus highlightés lorsque le curseur les survol
+   * Plus reproduit
+[ok] Dans certains cas (à déterminer) les message-box (message d'information affiché tout en haut de la page) ne s'affiche plus (on ne voit que un petit bout dépassé)
+   * Plus reproduit
+[ok] Après un register le pseudo est effacé - le pseudo n'est pas mémorisé dans le profil lors d'un envoie de mess en l'ayant changé
+[ok] jQuery définit l'option "X-Requested-With" à "XMLHttpRequest dans l'entête HTTP. De ce fait Yaws exige absolument de l'xml...
+   Solution actuelle : jquery.js est modifié pour ne plus définir cette option. Trouver un autre moyen plus élégant.
+[ok] Les smiles ne devraient pas dépasser de la fenêtre lorsqu'ils sont affichés
+[ok] Les processus en attente ne se termine pas lorsque le socket est fermé (pour l'instant un timeout de 1heure est appliqué)
+[ok] Possibilité d'enregistrer plusieurs users avec le même login
+[ok] le return ne marche pas sous IE
+[ok] Lors du click sur le bouton slap/kick/ban il faut fermer la mini fenêtre
+[ok] Lors de l'extraction d'une conv il arrive que la conv extractée soit bien créée mais vide, le bouton ne ferme pas la conv (très étrange, bug de firefox?)
+   * Arrive une fois sur 20 environ
+   * Jamais reproduit avec Opera
+   * Peut être un bug lié à jQuery
+   * Reproduit sur Firefox 2 et 3 !
+[ok] Lors d'un logout il faut faire un full refresh (pour mettre à jour les messages auquel on répond par exemple)
+[ok] Après être passé de la page Admin à Chat le client continu de réaliser de temps en temp des requêtes "lists_banned_ips"
+   * action=%7B%22action%22%3A%22list_banned_ips%22%2C%22cookie%22%3A%22<<cookie>>%22%7D
+[ok] Le widget select qui permet la sélection des css n'est pas initialisé correctement au chargement du site
+[ok] Il est possible d'envoyer plusieurs fois le même message en pressant très rapidement plusieurs fois sur ENTER... (à vérifier)
+[ok] griser le login dans le profil pour montrer qu'on ne peut pas l'éditer
 
-[1] Lors de l'extraction d'une conv il arrive que la conv extracté soit bien créée mais vide, le bouton ne ferme pas la conv (très étrange, bug de firefox?)
-[3] Amélioration des requêtes MNESIA, voir : http://mail.google.com/mail/#label/Erlang+mailing-list/117f688280569a58
-[2] Quand on revient en arrière dans firefox le message en rédaction est perdu
-[2] En changeant de page puis en revenant sur la page principale les smiles ne sont plus highlightés lorsque le curseur les survol
-[2] Après un register le pseudo est effacé - le pseudo n'est pas mémorisé dans le profil lors d'un envoie de mess en l'ayant changé
-[3] "Return" ne marche pas sous safari
-[2] cliquer sur les smiles ne marche pas sous IE
-[2] le return ne marche pas sous IE
-[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)
 
+=== Idées ===
+Une fois l'idée validée elle est déplacée dans une version à venir.
 
-== Idées ==
 1 : A implémenter tout de suite !
 2 : A implémenter dans un futur proche
 3 : Ca peut attendre
-4 : Faut en discuter, est-ce réellement utile ?
+4 : A discuter
 A : Abandonné
+ok : Implémenté
 
-[A] smiles personnalisés, on peut en ajouter dans la préférence utilisateur.
-
-[40%] Possibilité d'extraire une conversation, on click (par l'intermediaire d'un petit bouton par exemple) sur un message et l'arbre de réponses correspondant s'affiche dans une colonne sur la gauche.
-   * Il est possible d'ouvrir plusieurs conversations
-   * Les messages faisant partie des conversations ne sont plus visibles dans le flux général
-   * (une colonne peut avoir le focus, dans ce cas on répond automatiquement à la dernière personne qui nous a répondu)
-   * Chaque colonne possède une entête avec le message d'origine et trois boutons :
-      * un pour copier l'id de la conversation dans la textbox (voir point suivant) 
-      * un pour fermer la conversation
-      * un pour créer une url vers cette conversation (un peu à la manière de google maps)
-      
-[2] Raccourcis pour répondre à des messages (genre CTRL+2 pour répondre au deuxième)
-[2] Possibilité d'utiliser les balises <i> et <b>
-[2] La balise <hide> pour mettre des spoilers
-[2] Pouvoir insérer des tags qui sont des liens vers des conversations, par exemple : {R4S} =~ /\{\w+\}/
-[1] 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?"
-[2] Pouvoir cacher les dates
-[4] Pouvoir choisir une couleur pour son pseudo
 [3] Gestion de l'historique (calendrier)
-[4] Créer un gamebot pour lancer des jeux. Par exemple un jeu d'énigmes
-[4] Utiliser XMLRPC ou SOAP ou JSON pour la communication client -> serveur (boah, faut pas déconner :))
+[3] Afficher une page concernant la grammaire, ya un topic sur HFR
+[3] Idée de bernie :
+   * Pouvoir STFUER des personnes, lorsqu'elle envoie un message un autre truc à la con est écrit à la place
+   * la phrase à la con est prise parmis une liste éditable depuis le panneau d'admin
+   * La stfuation se fait depuis le panel de bannissement (slap, stfu, kick, ban)
+[4] Créer un style "super old school" (couleur 8 bit, pas de smiles/images, police à chasse fixe)
+[4] Unifier tout le code en anglais (sauf les commentaires)
+[4] Inscrire le nom de l'image dans les liens vers des images (à la place de simplement [jpg] ou [gif])
+[4] Réduire les pseudos trop long en mettant un ".." à la fin et permettre de le voir en entier lorsque le curseur le survol.
+[4] Compatible OpenID pour l'identification
+[4] Outil de localisation des personnes un peu comme ca : http://bouchot.org/cps
+[4] Pouvoir voir le profile des personnes.
+   * Voir leurs derniers messages
+   * Une page de recherche de personne
+[4] Chaque user possède un Blog (ne pas utiliser le terme 'Blog') Dans lequel il peut poster des "Troll", sorte de "sujet" de forum.
+   * Ce système est utilisé dans le chat principal (avec le troll de la semaine posté par un admin).
+   * Chaque troll possède un certain nombre de tag.
+   * il est possible de faire une recherche sur l'ensemble des users.
+   * Voir description.txt pour plus d'info sur les trolls
+[4] Pouvoir privatiser une conversation entre 2 ou plusieurs personnes
+[4] Pouvoir choisir une couleur pour son pseudo
+[4] Créer un gamebot pour lancer des jeux
+   * Définir une interface pour la création de nouveau jeu au sein du serveur
+   * Jeu d'énigmes
+   * jeu du pendu
+   * Jeu des chiffres et des lettres : "[Lettres tirées] - E N X U L S Z C M I - (trouvez le mot de plus long avec ces lettres)"
 [4] Image animée à la http://www.google.co.kr/ cf http://www.google.co.kr//ig/f/AaEyQnOaAr4/intl/ALL_kr/svc_sprite_all.gif
 [4] Bot de traduction
-[4] Bot de jeu (jeu du pendu par exemple)
 [4] RSS
 [4] Système de vote sur les messages, + ou - qui donne des points aux messages...
-[4] Voir les personnes connectées
+[4] Voir les personnes connectées + un statut
 [4] Avoir une liste d'amis
 [4] Restreindre la consultation d'un message posté à un ou plusieurs utilisateurs définis. Les messages de la conversation ne sont alors vus que par cet ensemble d'utilisateurs.
-[4] Plusieurs canaux
+[4] Système de trolls. Voir decription.txt.
 
-
-== Concurrents ==
-http://www.phpfreechat.net/demo.fr.html
-http://moules.org/board
-http://hadoken.free.fr/board/index#b
-http://bouchot.org/tribune#missive
+[A] smiles personnalisés, on peut en ajouter dans la préférence utilisateur.
+[ok] Pouvoir insérer des tags qui sont des liens vers des conversations, par exemple : {R4S} =~ /\{\w+\}/
+[ok] Possibilité d'extraire une conversation, on click (par l'intermediaire d'un petit bouton par exemple) sur un message et l'arbre de réponses correspondant s'affiche dans une colonne sur la gauche.
+   * Il est possible d'ouvrir plusieurs conversations
+   * Les messages faisant partie des conversations ne sont plus visibles dans le flux général
+   * (une colonne peut avoir le focus, dans ce cas on répond automatiquement à la dernière personne qui nous a répondu)
+   * Chaque colonne possède une entête avec le message d'origine et trois boutons :
+      * un pour copier l'id de la conversation dans la textbox (voir point suivant) 
+      * un pour fermer la conversation
+      * un pour créer une url vers cette conversation (un peu à la manière de google maps)
+[ok] Pouvoir cacher les dates