* Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera)
* Pouvoir afficher les utilisateurs (print_users(admin)) qui sont admin\r
* Afficher l'ip dans le print_users().\r
-* Limiter la mise en évidence de la conversation lorsque le curseur se trouve sur les pseudos\r
-* Mettre dans la FAQ la signification des couleurs associées aux messages.\r
+* Limiter la mise en évidence de la conversation lorsque le curseur se trouve sur les pseudos
* Enlever le petit carré mis en couleur et mettre le pseudo + date en couleur à la place\r
+* Mettre dans la FAQ la signification des couleurs associées aux messages.\r
* Ne pas pouvoir poster avec "<nick>"\r
* 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)\r
=== v1.1 ===\r
$(rep_ebin)/euphorik_requests.beam \\r
$(rep_ebin)/euphorik_protocole.beam \
$(rep_ebin)/euphorik_daemon.beam \
+$(rep_ebin)/euphorik_common.beam \
$(rep_ebin)/euphorik_test.beam
\r
# Module pour la gestion des données persistante la BD\r
$(rep_ebin)/euphorik_daemon.beam: $(rep_erl)/euphorik_daemon.erl $(rep_include)/euphorik_defines.hrl\r
erlc $(erlc_params)
+# Module avec plein de bordel dedant
+$(rep_ebin)/euphorik_common.beam: $(rep_erl)/euphorik_common.erl
+ erlc $(erlc_params)
+
# Module dédié au tests
$(rep_ebin)/euphorik_test.beam: $(rep_erl)/euphorik_test.erl $(rep_erl)/euphorik_bd.erl $(rep_include)/euphorik_bd.hrl
erlc $(erlc_params)\r
messages/2,\r
messages/3,
message_by_id/1,
- message_by_id_sans_transaction/1,
messages_by_ids/1,
message_existe/1,
reponses/0,
print_user(User) when is_record(User, user) ->
- #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date} = User,
+ #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date, last_ip = IP} = User,
{{Annee, Mois, Jour}, {Heure, Min, _}} = calendar:now_to_local_time(Date),
io:format(
- "~4w : ~10.10..s~10.10..s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n",
+ % id pseudo (login) IP Jour Mois Année Heure Minute
+ "~4w : ~10.10..s(~10.10..s) ~s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n",
[
Id,
if Ek_master -> "*"; true -> "" end ++ Pseudo,
- "(" ++ Login ++ ")",
+ Login,
+ euphorik_common:serialize_ip(IP),
Jour, Mois, Annee, Heure, Min
]
);
message_by_id(Id) ->
resultat_transaction(mnesia:transaction(
fun() ->
- message_by_id_sans_transaction(Id)
+ case mnesia:read({minichat, Id}) of
+ [] -> erreur;
+ [M] ->
+ {ok, M#minichat{contenu = contenu_message(M)}}
+ end
end
)).
-message_by_id_sans_transaction(Id) ->
- case mnesia:read({minichat, Id}) of
- [] -> erreur;
- [M] ->
- {ok, M#minichat{contenu = contenu_message(M)}}
- end.
% Renvoie le contenu d'un message donnée, à utiliser à l'intérieur d'une transaction.
fun() ->
lists:foldr(
fun(Id, Acc) ->
- case euphorik_bd:message_by_id_sans_transaction(Id) of
+ case euphorik_bd:message_by_id(Id) of
{ok, Message} ->
[{Message, parents(Id)} | Acc];
_ ->
) ->
case euphorik_bd:user_by_cookie(Cookie) of
{ok, #user{ek_master = true}} ->
- euphorik_bd:deban(unserialize_ip(IP)),
+ euphorik_bd:deban(euphorik_common:unserialize_ip(IP)),
json_reponse_ok();
_ ->
erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")
fun({IP, T, Users}) ->
{struct,
[
- {ip, serialize_ip(IP)},
+ {ip, euphorik_common:serialize_ip(IP)},
{remaining_time, format_minutes(T)},
{users, {array, lists:map(
fun({Pseudo, Login}) ->
]
}.
-
-serialize_ip(IP) ->
- lists:flatten(io_lib:format("~w.~w.~w.~w", tuple_to_list(IP))).
-
-
-unserialize_ip(IP) ->
- case io_lib:fread("~d.~d.~d.~d", IP) of
- {ok, [A, B, C, D], []} -> {A, B, C, D};
- _ -> erreur
- end.
-
% Formatage de minutes.
% par exemple : "1min", "45min", "1h23min", "1jour 2h34min"