From 81f4aa92e9076d2ca03f5c10ff88439178730ca8 Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Tue, 3 Jun 2008 12:57:19 +0000 Subject: [PATCH] REPORT de la branche 1.0 --- css/1/euphorik.css | 3 + css/2/euphorik.css | 3 + doc/TODO.txt | 64 ++++++++++++------- modules/erl/euphorik_bd.erl | 16 ++--- .../erl/euphorik_minichat_conversation.erl | 11 +++- pages/about.html | 26 ++++++-- 6 files changed, 86 insertions(+), 37 deletions(-) diff --git a/css/1/euphorik.css b/css/1/euphorik.css index 1fdc0f4..5964a11 100755 --- a/css/1/euphorik.css +++ b/css/1/euphorik.css @@ -216,6 +216,9 @@ form select { form button { font-size: 11px; } +form input[readonly] { + background-color: #d0c9aa +} /***** Les liens *****/ .lien, a { diff --git a/css/2/euphorik.css b/css/2/euphorik.css index ca5992e..df54431 100755 --- a/css/2/euphorik.css +++ b/css/2/euphorik.css @@ -209,6 +209,9 @@ form select { form button { font-size: 11px; } +form input[readonly] { + background-color: #484e46 +} /***** Les liens *****/ .lien, a { diff --git a/doc/TODO.txt b/doc/TODO.txt index 8da3fb2..6e4c09f 100755 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -2,20 +2,35 @@ === v1.0 === * Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera) -* Pouvoir afficher les utilisateurs (print_users()) qui sont admin +* Pouvoir afficher les utilisateurs (print_users(admin)) qui sont admin + * Afficher l'ip dans le print_users(). +* Limiter la mise en évidence de la conversation lorsque le curseur se trouve sur les pseudos +* Mettre dans la FAQ la signification des couleurs associées aux messages. +* Enlever le petit carré mis en couleur et mettre le pseudo + date en couleur à la place +* Ne pas pouvoir poster avec "" +* Lorsque le curseur se trouve sur le nom d'une personne à qui l'on répond n'highliter que cette conversation !! (très bonne idée) === v1.1 === +* Revoir le système de conversation : + * Pouvoir extraire "toute la conversation" ou seulement une "sous conversation" (ce qui est actuellement le cas) + * Tous les messages auquels on répond doivent faire partie de la conversation !! + * Fermer temporairement une conversation (la réduire sous la forme d'un onglet) + * lien vers une conversation : http://www.euphorik.ch/?conv=45 * 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) + * L'icon apparait tout en haut (absolute) * Simuler un réseau lent -* 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 - * Eventuellement mettre à jour automatiquement le Copyright (date) et les personnes responsables -* Mise à jour automatique de la version dans le about en fonction du tag/branche courant ? -* Modération des messages : les modos peuvent les supprimer +* Mise à jour automatique de la version dans le about en fonction du tag/branche courant (lors de la mise en production) ? * 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 et FIXME dans le code -* Pouvoir récupérer son mdp (ou en générer un autre) via son email +* 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 +* (Pouvoir inverser le chat) tester la faisabilité === v1.2 === +* Avoir une liste d'amis dans le profile + * Pouvoir n'afficher les messages que des amis (et des personnes y répondant) + * Ajouter une personne à ses amis avec une toolbar similaire à celle de banissement +* 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 + * Eventuellement mettre à jour automatiquement le Copyright (date) et les personnes responsables +* Système de censure par les admins (suppression d'un message) * 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 une certaine taille en pixel @@ -178,7 +193,8 @@ 1 : Critique 2 : Urgent 3 : Peu grave - + +[1] 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 @@ -247,26 +263,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) + +[2] Indiquer le nombre de fois qu'un lien a été visité (également pour les images) (Bernie) + * 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) +[2] Système de news/event (Bernie) [2] Syntaxe avancée des messagees : * Possibilité d'utiliser les balises , , , (quoted text) - * Utiliser la syntaxe de mediaWiki + * Utiliser la syntaxe de mediaWiki : http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet * La balise 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 +[2] Une option dans le profile pour se délogger automatiquement lorsque l'on quitte le site [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]) @@ -298,8 +308,16 @@ ok : Implémenté [4] Système de trolls. Voir decription.txt. [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+\}/ +[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 === Concurrents === http://www.phpfreechat.net/demo.fr.html diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 93cb835..46cefed 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -308,7 +308,7 @@ print_users(N) -> resultat_transaction(mnesia:transaction(fun() -> C = cursor( qlc:keysort( - 9, + #user.date_derniere_connexion, q([E || E <- mnesia:table(user)]), [{order, descending}] ), @@ -516,7 +516,7 @@ messages(N, P) -> F = fun() -> C = cursor( qlc:keysort( - 2, + #minichat.id, q([E#minichat{contenu = contenu_message(E)} || E <- mnesia:table(minichat)]), [{order, descending}] ), @@ -563,12 +563,13 @@ contenu_message(E) -> % Renvoie une liste de message (voir #minichat de euphorik_bd.hrl) à partir d'une liste d'id (Ids). +% TODO : optimisations ? serait-ce du O(n) ? +% Bon de toutes façons on s'en fout c'est pas utilisé :) messages_by_ids(Ids) -> resultat_transaction(mnesia:transaction( fun() -> - % TODO : optimisations ? serait-ce du O(n) ? e(qlc:keysort( - 2, + #minichat.id, q([E || E <- mnesia:table(minichat), lists:any(fun(Id) -> Id =:= E#minichat.id end, Ids)]), [{order, ascending}] ),[{tmpdir, ?KEY_SORT_TEMP_DIR}]) @@ -753,7 +754,7 @@ can_register(IP) -> trolls() -> resultat_transaction(mnesia:transaction( fun() -> - e(qlc:keysort(2, q([T || T <- mnesia:table(troll)])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) + e(qlc:keysort(#troll.id, q([T || T <- mnesia:table(troll)])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -762,7 +763,7 @@ trolls() -> trolls(Last_id) -> resultat_transaction(mnesia:transaction( fun() -> - e(qlc:keysort(2, q([T || T <- mnesia:table(troll), T#troll.id > Last_id, T#troll.date_post =:= undefined])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) + e(qlc:keysort(#troll.id, q([T || T <- mnesia:table(troll), T#troll.id > Last_id, T#troll.date_post =:= undefined])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -852,8 +853,7 @@ troll_by_id(Troll_id) -> current_troll() -> resultat_transaction(mnesia:transaction( fun() -> - % TODO : ya pas moyen de désigner le champs plutot qu'avec un nombre pour le tri ? - C = cursor(qlc:keysort(5, q([T || T <- mnesia:table(troll), T#troll.date_post =/= undefined]), [{order, descending}]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]), + C = cursor(qlc:keysort(#troll.date_post, q([T || T <- mnesia:table(troll), T#troll.date_post =/= undefined]), [{order, descending}]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]), R = case qlc:next_answers(C, 1) of [T] -> T; _ -> aucun diff --git a/modules/erl/euphorik_minichat_conversation.erl b/modules/erl/euphorik_minichat_conversation.erl index 06fad7f..60f92e4 100755 --- a/modules/erl/euphorik_minichat_conversation.erl +++ b/modules/erl/euphorik_minichat_conversation.erl @@ -35,7 +35,7 @@ -include_lib("stdlib/include/qlc.hrl"). -import(lists, [reverse/1, any/2, map/2, sublist/3, filter/2]). -import(euphorik_bd, [resultat_transaction/1]). --import(qlc, [e/2, q/1, keysort/3]). +-import(qlc, [e/2, q/1]). -import(mnesia, [table/1, transaction/1]). @@ -44,6 +44,10 @@ % Message est le message de type #minichat et Parents une liste d'Id. % Plus est un bool. Si Plus vaut true alors il y a encore des messages. % Si il n'y a pas de nouveaux message alors vide est renvoyé. +% Chaque racine est un tuple {N, P, D} +% N : le nombre de message +% D : le dernier message connu, 0 si aucun +% P : la page souhaité, la premier est la 1 % @spec conversations([{integer(), integer(), integer()}], integer(), integer(), integer()) -> [Conversation()] conversations(Racines, N, D, P) -> Conversations = conversations_detailees(Racines, N, D, P), @@ -101,7 +105,10 @@ mise_en_forme_conversation(Messages) -> conversations_detailees(Racines, N, D, P) -> Conversations = map(fun({Racine, P_conv, Dernier}) -> conversation(Racine, N, Dernier, P_conv) end, Racines), Conversation_principale = resultat_transaction(transaction(fun() -> - Curseur = qlc:cursor(q([E#minichat.id || E <- qlc:sort(table(minichat), [{order, descending}])]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]), + Curseur = qlc:cursor( + qlc:sort(q([E#minichat.id || E <- table(minichat)]), [{order, descending}]), + [{tmpdir, ?KEY_SORT_TEMP_DIR}] + ), {CP, Plus} = conversation_principale(Curseur, Conversations, N, P), qlc:delete_cursor(Curseur), {[M || M <- CP, M > D], Plus} % filtre en fonction de D diff --git a/pages/about.html b/pages/about.html index a30e345..db98b68 100644 --- a/pages/about.html +++ b/pages/about.html @@ -77,13 +77,31 @@ voici mon email/jabberID : {EMAIL}

Versions à venir

-

Liste non-exaustive des fonctionnalités à venir.

+

Liste non-exaustive des fonctionnalités à venir.

+

1.1

-
  • possibilité de récupérer son login/password via son email.
+
    +
  • Possibilité de récupérer son login/password via son email.
  • +
  • Possibilité d'inverser le chat.
  • +
  • Révision du système de conversation. +
      +
    • Impossibilité de répondre à plusieurs messages de conversations différentes.
    • +
    • Possibilité d'extraire complétement une conversation.
    • +
    • Possibilité de réduire une conversation (la cacher temporairement).
    • +
    • Possibilité de créer un lien vers une conversation, par exemple : http://www.euphorik.ch/?conv=34 +
    +
  • +
+

1.2

-
  • Intégration des totoz.
+
    +
  • Intégration des totoz.
  • +
  • Un admin pourra censurer un message.
  • +
+

1.3

-
  • Possibilité d'ajouter une correction à son dernier message.
+
  • Possibilité d'ajouter une correction à son dernier message.
+

1.4

  • Ajout de nouveaux styles.
-- 2.45.2