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.
+ - 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