REPORT de la branche 1.0 (tag 1.0.1)
[euphorik.git] / doc / TODO.txt
index ec37827..cebd646 100755 (executable)
@@ -1,32 +1,56 @@
 == TODO ==\r
 \r
-=== v1.0 ===\r
-* Rendre compatible IE 7 (pfff..)\r
-* Finir le script de mise en production\r
-   * Make des modules.\r
-   * 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.\r
-      * Modifier le script pour virer les lignes matchant /^\W*;;.*$/
-   * Virer les commentaires dans les pages HTML\r
-   * processus :\r
-      1) copie des fichiers (+minimisation)\r
-      2) Execution d'un scripte erlang pour recharger tous les modules au sein du noeud\r
-      3) Executer euphorik_bd:update() pour mettre à jour la BD\r
-* 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/\r
-* Corriger les bugs de niveau [1] et [2]\r
-* Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera)\r
+=== v1.0.1 ===
+* Pouvoir afficher les utilisateurs (print_users(admin)) qui sont admin\r
+<<<<<<< .working\r
+* Mettre dans la FAQ la signification des couleurs associées aux messages.\r
+* Ne pas pouvoir poster avec "<nick>"\r
+* Ajouter euphorik_common.erl au repo !!\r
+* Compilation :\r
+   * Compiler avec le flag +debug_info pour le developpement\r
+   * Compiler avec le flag +native lors de la mise en production\r
+      * Faire d'abord des tests en local pour voir s'il y a vraiment des gains, utiliser le module test_euphorik\r
+      * Regarder également si la comsommation de la mémoire est différentes\r
+      * La compilation DOIT se faire sur la machine cible, il faut donc d'abord copier les fichiers dans /tmp sur euphorik.ch\r
+         puis lancer la compilation à distance et finalement copier les fichiers sur /var/www/euphorik\r
+* Appliquer les flags suivant à Yaws : http://forum.trapexit.org/mailinglists/viewtopic.php?t=6725&sid=8729e02f79c3ef0e0794add77b74b6ce\r
+=======\r
+* Ne pas pouvoir poster avec "<nick>" -> mettre en constante\r
+* Ajouter euphorik_common.erl au repo !!\r
+* Compilation :\r
+   * Compiler avec le flag +debug_info pour le developpement\r
+   * Compiler avec le flag +native lors de la mise en production\r
+      * Faire d'abord des tests en local pour voir s'il y a vraiment des gains, utiliser le module test_euphorik\r
+      * Regarder également si la comsommation de la mémoire est différentes\r
+      * La compilation DOIT se faire sur la machine cible, il faut donc d'abord copier les fichiers dans /tmp sur euphorik.ch\r
+         puis lancer la compilation à distance et finalement copier les fichiers sur /var/www/euphorik\r
+* Appliquer les flags suivant à Yaws : http://forum.trapexit.org/mailinglists/viewtopic.php?t=6725&sid=8729e02f79c3ef0e0794add77b74b6ce\r
+>>>>>>> .merge-right.r271\r
 === v1.1 ===\r
+* Revoir le système de conversation : \r
+   * Pouvoir extraire "toute la conversation" ou seulement une "sous conversation" (ce qui est actuellement le cas)\r
+   * Tous les messages auquels on répond doivent faire partie de la conversation !!\r
+   * Fermer temporairement une conversation (la réduire sous la forme d'un onglet)\r
+   * lien vers une conversation : http://www.euphorik.ch/?conv=45\r
 * Mettre un icon (genre sablier ou truc qui tourne à la apple) lorsque le chat se charge (également lors d'un changement de page par exemple)\r
+   * L'icon apparait tout en haut (absolute)\r
    * Simuler un réseau lent\r
-* Création d'un script ruby dans /tool pour apposer  automatiquement une entête concernant la licence voir : http://www.gnu.org/licenses/gpl-howto.fr.html\r
-   * Eventuellement mettre à jour automatiquement le Copyright (date) et les personnes responsables \r
-* Mise à jour automatique de la version dans le about en fonction du tag/branche courant ?\r
-* Modération des messages : les modos peuvent les supprimer\r
+* Mise à jour automatique de la version dans le about en fonction du tag/branche courant (lors de la mise en production) ?\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 et FIXME dans le code\r
-* Pouvoir récupérer son mdp (ou en générer un autre) via son email\r
+* Pouvoir récupérer son mdp (ou en générer un autre) via son email. Marquer dans le profile que l'email sert à cela et n'est pas visible pas les autres personnes\r
+* (Pouvoir inverser le chat) tester la faisabilité\r
 === v1.2 ===\r
+* Avoir une liste d'amis dans le profile\r
+   * Pouvoir n'afficher les messages que des amis (et des personnes y répondant)\r
+   * Ajouter une personne à ses amis avec une toolbar similaire à celle de banissement\r
+* Création d'un script ruby dans /tool pour apposer  automatiquement une entête concernant la licence voir : http://www.gnu.org/licenses/gpl-howto.fr.html\r
+   * Eventuellement mettre à jour automatiquement le Copyright (date) et les personnes responsables \r
+* Système de censure par les admins (suppression d'un message)\r
+   * Ne supprime pas réellement le message mais le censure\r
+   * L'admin vois toujours le message (grisé, ou tracé)\r
+   * Les utilisateurs normaux voient à la place "<censuré, raison : blabla>"\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 une certaine taille en pixel\r
    * 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\r
+[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/\r
+[ok] Limiter la mise en évidence de la conversation lorsque le curseur se trouve sur les pseudos\r
+[ok] Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera)\r
+[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.
+
+\r
 === Bugs ===
 1 : Critique
 2 : Urgent
 3 : Peu grave\r
-
-[1] 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\r
-   * Peut être un bug lié à jQuery\r
-   * Reproduit sur Firefox 2 et 3 !\r
-[2] Lors du click sur le bouton slap/kick/ban il faut fermer la mini fenêtre\r
-[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é\r
-[2] cliquer sur les smiles ne marche pas sous IE
-[2] Lors d'un logout il faut faire un full refresh (pour mettre à jour les messages auquel on répond par exemple)
+\r
+[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\r
+   * Observé sur opera et firefox\r
+   * Après quelques analyses il apparait que firefox attend alors que le processus n'existe plus du coté yaws\r
+   * Cela arrive après 5-10min\r
+   * Regarder du coté des paramètres (options) du socket coté yaws s'il n'y a pas un indice, par exemple un timeout\r
+   * solution de secours : timeout de (1 à 5 min) sur la connexion ajax\r
+   * 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\r
+   * Normalement si le socket est fermé du coté de yaws, le client devrait être avertis... !?\r
+   * Après beaucoup d'investigation il semblerai que se soit le firewall/routeur qui coupe la connexion sans prévenir,\r
+      pour éviter cela il est possible de mettre 'keepalive' à true au niveau du socket, voir : \r
+         - http://erlang.org/doc/man/inet.html#setopts-2\r
+         - 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\r
+[2] Traiter les tags TODO et FIXME dans le code\r
+[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\r
+[2] Il est possible d'envoyer plusieurs fois le même message en pressant très rapidement plusieurs fois sur ENTER... (à vérifier)\r
+[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\r
+[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...\r
-[3] Le changement de page sous Firefox (pas essayé avec d'autre nav) est plutot moche, le texte est d'abors affiché puis le style est appliqué.
+[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é
 [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\r
 [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)
+<<<<<<< .working\r
+[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
+=======\r
+[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
+>>>>>>> .merge-right.r271\r
 
 === Idées ===\r
 Une fois l'idée validée elle est déplacée dans une version à venir.\r
@@ -242,26 +313,20 @@ Une fois l'idée validée elle est déplacée dans une version à venir.
 4 : A discuter
 A : Abandonné
 ok : Implémenté
-
-[1] 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)
+\r
+[2] Indiquer le nombre de fois qu'un lien a été visité (également pour les images) (Bernie)\r
+   * Afficher quelque part les url les plus cliqués
 [2] Raccourcis pour répondre aux conversations (genre CTRL+2 pour répondre au deuxième)\r
+[2] Système de news/event (Bernie)\r
 [2] Syntaxe avancée des messagees :\r
    * Possibilité d'utiliser les balises <i>, <b>, <code>, <q> (quoted text)\r
-   * Utiliser la syntaxe de mediaWiki
+   * Utiliser la syntaxe de mediaWiki : http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet
    * La balise <hide> pour mettre des spoilers
-[2] Une option dans le profile pour se délogger automatiquement lorsque l'on quitte le site
-[2] Pouvoir cacher les dates\r
+[2] Une option dans le profile pour se délogger automatiquement lorsque l'on quitte le site\r
 [3] Gestion de l'historique (calendrier)
 [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 piché parmis une liste éditable depuis le panneau d'admin
+   * 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] Unifier tout le code en anglais (sauf les commentaires)
 [4] Inscrire le nom de l'image dans les les liens vers des images (à la place de simplement [jpg] ou [gif])
@@ -293,8 +358,16 @@ ok : Implémenté
 [4] Système de trolls. Voir decription.txt.\r
 \r
 [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] Pouvoir insérer des tags qui sont des liens vers des conversations, par exemple : {R4S} =~ /\{\w+\}/\r
+[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.\r
+   * Il est possible d'ouvrir plusieurs conversations\r
+   * Les messages faisant partie des conversations ne sont plus visibles dans le flux général\r
+   * (une colonne peut avoir le focus, dans ce cas on répond automatiquement à la dernière personne qui nous a répondu)\r
+   * Chaque colonne possède une entête avec le message d'origine et trois boutons :\r
+      * un pour copier l'id de la conversation dans la textbox (voir point suivant) \r
+      * un pour fermer la conversation\r
+      * un pour créer une url vers cette conversation (un peu à la manière de google maps)\r
+[ok] Pouvoir cacher les dates
 
 === Concurrents ===
 http://www.phpfreechat.net/demo.fr.html