From: Greg Burri Date: Sat, 2 Aug 2008 00:40:09 +0000 (+0000) Subject: ADD FIX#50 : numérotation des erreurs et préparation à leur traduction (coté serveur X-Git-Tag: 1.1.0~18 X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=commitdiff_plain;h=c219198926b679ef5bc28182b3d05e8c1f447886 ADD FIX#50 : numérotation des erreurs et préparation à leur traduction (coté serveur --- diff --git a/js/pageRegister.js b/js/pageRegister.js index f1abd70..37f7705 100755 --- a/js/pageRegister.js +++ b/js/pageRegister.js @@ -42,7 +42,7 @@ euphorik.PageRegister.prototype.contenu = function() { ' ' + ' ' + ' ' + - ' ' + + ' ' + ' ' + ' ' + ''; diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 921bac5..d583ecb 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -24,6 +24,10 @@ -module(euphorik_bd). -export([ + % texte : + get_texte/1, + get_texte/2, + % users : nouveau_user/2, nouveau_user/4, @@ -85,6 +89,20 @@ -include_lib("stdlib/include/qlc.hrl"). +get_texte(Id) -> + get_texte(Id, fr). + + +% TODO : généraliser la langue +get_texte(Id, _Lang = fr) -> + resultat_transaction(mnesia:transaction(fun() -> + case mnesia:read({texte, Id}) of + [#texte{fr = Texte}] -> Texte; + _ -> "Message " ++ integer_to_list(Id) ++ " unknown" + end + end)). + + % Ajoute un nouveau user et le renvoie nouveau_user(Cookie, Profile) -> F = fun() -> diff --git a/modules/erl/euphorik_bd_admin.erl b/modules/erl/euphorik_bd_admin.erl index 7412337..20da1fa 100644 --- a/modules/erl/euphorik_bd_admin.erl +++ b/modules/erl/euphorik_bd_admin.erl @@ -23,7 +23,7 @@ % - Copie de la BD à partir d'un autre noeud % % @author G.Burri - + -module(euphorik_bd_admin). -export([ @@ -79,6 +79,10 @@ create_tables() -> {attributes, record_info(fields, proprietes)}, {disc_copies, [node()]} ]), + mnesia:create_table(texte, [ + {attributes, record_info(fields, texte)}, + {disc_copies, [node()]} + ]), mnesia:create_table(minichat, [ {attributes, record_info(fields, minichat)}, {disc_copies, [node()]} @@ -125,6 +129,7 @@ connect(Node) -> reset() -> mnesia:clear_table(counter), mnesia:clear_table(proprietes), + mnesia:clear_table(texte), mnesia:clear_table(user), mnesia:clear_table(reponse_minichat), mnesia:clear_table(minichat), @@ -138,6 +143,34 @@ reset() -> User end). + +peupler_texte() -> + mnesia:transaction(fun() -> + mnesia:write(#texte{ id = 10, fr = "Login déjà existant"}), + mnesia:write(#texte{ id = 20, fr = "Trop de register (flood)"}), + mnesia:write(#texte{ id = 30, fr = "Couple login/pass introuvable"}), + mnesia:write(#texte{ id = 40, fr = "Authentification impossible par cookie"}), + mnesia:write(#texte{ id = 50, fr = "Impossible de mettre à jour le profile"}), + mnesia:write(#texte{ id = 60, fr = "timeout"}), + mnesia:write(#texte{ id = 70, fr = "Page inconnue"}), + mnesia:write(#texte{ id = 80, fr = "Vous êtes banni pour encore ~w"}), + mnesia:write(#texte{ id = 90, fr = "Message vide"}), + mnesia:write(#texte{ id = 100, fr = "Impossible d'ajouter un nouveau message. Raison : ~w"}), + mnesia:write(#texte{ id = 110, fr = "Utilisateur inconnu"}), + mnesia:write(#texte{ id = 120, fr = "Il n'est pas possible de s'auto bannir"}), + mnesia:write(#texte{ id = 130, fr = "L'utilisateur est lui même un ekMaster"}), + mnesia:write(#texte{ id = 140, fr = "Utilisateur à bannir inconnu"}), + mnesia:write(#texte{ id = 150, fr = "Utilisateur inconnu ou non ek master"}), + mnesia:write(#texte{ id = 160, fr = "Utilisateur à slaper inconnu"}), + mnesia:write(#texte{ id = 170, fr = "Utilisateur inconnu ou non ek master"}), + mnesia:write(#texte{ id = 180, fr = "Le nombre de troll maximum par utilisateur est atteint : ~w "}), + mnesia:write(#texte{ id = 190, fr = "Le nombre de troll maximum en attente est atteint : ~w "}), + mnesia:write(#texte{ id = 200, fr = "Seul les ekMaster peuvent proposer des trolls"}), + mnesia:write(#texte{ id = 210, fr = "Vous ne posséder pas ce troll"}), + mnesia:write(#texte{ id = 220, fr = "Seul les ekMaster peuvent proposer des trolls"}), + mnesia:write(#texte{ id = 230, fr = "Seul les ekMaster peuvent connaitre la liste des ips bannies"}) + end). + % Met à jour la bd, compare ?VERSION_BD avec la version dans la table 'proprietes' % et exécute les patchs nécessaires. @@ -172,6 +205,11 @@ update(Version) -> % dans BD/backups nommé "backup" où et le numéro de la version. % 1 -> 2 patch(1) -> + mnesia:create_table(texte, [ + {attributes, record_info(fields, texte)}, + {disc_copies, [node()]} + ]), + peupler_texte(), % traitement des users mnesia:transform_table( user, diff --git a/modules/erl/euphorik_protocole.erl b/modules/erl/euphorik_protocole.erl index a321287..82a4fce 100755 --- a/modules/erl/euphorik_protocole.erl +++ b/modules/erl/euphorik_protocole.erl @@ -47,7 +47,7 @@ register([{login, Login}, {password, Password}, {profile, Profile_json}], IP) -> if Can_register -> case euphorik_bd:user_by_login(Login) of {ok, _} -> - erreur("Login déjà existant"); + erreur(10); _ -> User = euphorik_bd:nouveau_user(Login, Password, generer_cookie(), profile_from_json(Profile_json)), euphorik_bd:update_ip(User#user.id, IP), @@ -69,7 +69,7 @@ register([{profile, Profile_json}], IP) -> end. erreur_register_flood() -> - erreur("Trop de register (flood)"). + erreur(20). % Un utilisateur se logge (avec un couple {login, mot de passe}) @@ -79,7 +79,7 @@ login([{login, Login}, {password, Password}], IP) -> loginUser(User, IP); _ -> timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN), - erreur("Couple login/pass introuvable") + erreur(30) end; % Un utilisateur se logge (avec un cookie) login([{cookie, Cookie}], IP) -> @@ -88,7 +88,7 @@ login([{cookie, Cookie}], IP) -> loginUser(User, IP); _ -> timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN), - erreur("Authentification impossible par cookie") + erreur(40) end. @@ -122,9 +122,9 @@ profile( ok -> json_reponse_ok(); login_deja_pris -> - erreur("Login déjà pris"); + erreur(10); _ -> - erreur("Impossible de mettre à jour le profile") + erreur(50) end end. @@ -269,10 +269,10 @@ wait_event([{page, "admin"}, {last_troll, Last_troll}]) -> ] }; _ -> - erreur("timeout") + erreur(60) end; wait_event(_) -> - erreur("Page inconnue"). + erreur(70). % Attend un événement pour la page "Chat" et renvoie soit un troll soit les messages manquants au client. @@ -426,23 +426,23 @@ put_message( {ok, User} -> case euphorik_bd:est_banni(User#user.id) of {true, Temps_restant} -> - erreur("Vous êtes banni pour encore " ++ format_minutes(Temps_restant)); + erreur(80, format_minutes(Temps_restant)); _ -> Strip_content = string:strip(Content), if Strip_content =:= [] -> - erreur("Message vide"); + erreur(90); true -> % attention : non-atomique (update_pseudo+nouveau_message) euphorik_bd:update_pseudo_user(User#user.id, Nick), case euphorik_bd:nouveau_message(Strip_content, User#user.id, Answer_to) of - {erreur, R} -> erreur("Impossible d'ajouter un nouveau message. Raison : " ++ R); + {erreur, R} -> erreur(100, R); _ -> json_reponse_ok() end end end; _ -> - erreur("Utilisateur inconnu") + erreur(110) end. @@ -459,7 +459,7 @@ ban( {ok, User1 = #user{ek_master = true}} -> case euphorik_bd:user_by_id(User_id) of {ok, User1} -> - erreur("Il n'est pas possible de s'auto bannir"); + erreur(120); {ok, #user{ek_master = false, profile = Profile2} = User2} -> euphorik_bd:ban(User2#user.last_ip, Duration), euphorik_bd:nouveau_message_sys(lists:flatten(io_lib:format("''~s~s'' est ~s pour ~s.~s", @@ -473,12 +473,12 @@ ban( ))), json_reponse_ok(); {ok, _} -> - erreur("L'utilisateur est lui même un ekMaster"); + erreur(130); _ -> - erreur("Utilisateur à bannir inconnu") + erreur(140) end; _ -> - erreur("Utilisateur inconnu ou non ek master") + erreur(150) end. @@ -511,12 +511,12 @@ slap( ))), json_reponse_ok(); {ok, _} -> - erreur("L'utilisateur est lui même un ekMaster"); + erreur(130); _ -> - erreur("Utilisateur à slaper inconnu") + erreur(160) end; _ -> - erreur("Utilisateur inconnu ou non ek master") + erreur(170) end. @@ -531,14 +531,14 @@ put_troll( {ok, User = #user{ek_master = true}} -> case euphorik_bd:put_troll(User#user.id, Content) of max_troll_reached_per_user -> - erreur(lists:flatten(io_lib:format("Le nombre de troll maximum par utilisateur est atteint : ~w ", [?NB_MAX_TROLL_WAITING_BY_USER]))); + erreur(180, ?NB_MAX_TROLL_WAITING_BY_USER); max_troll_reached -> - erreur(lists:flatten(io_lib:format("Le nombre de troll maximum en attente est atteint : ~w ", [?NB_MAX_TROLL_WAITING]))); + erreur(190, ?NB_MAX_TROLL_WAITING); _Id -> json_reponse_ok() end; _ -> - erreur("Seul les ekMaster peuvent proposer des trolls") + erreur(200) end. @@ -558,10 +558,10 @@ mod_troll( euphorik_bd:mod_troll(Troll_id, Content), json_reponse_ok(); _ -> - erreur("Vous ne posséder pas ce troll") + erreur(210) end; _ -> - erreur("Seul les ekMaster peuvent proposer des trolls") + erreur(220) end. @@ -580,10 +580,10 @@ del_troll( euphorik_bd:del_troll(Troll_id), json_reponse_ok(); _ -> - erreur("Vous ne posséder pas ce troll") + erreur(210) end; _ -> - erreur("Seul les ekMaster peuvent proposer des trolls") + erreur(220) end. @@ -598,7 +598,7 @@ unban_ip( euphorik_bd:deban(euphorik_common:unserialize_ip(IP)), json_reponse_ok(); _ -> - erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies") + erreur(230) end. @@ -638,16 +638,25 @@ list_banned_ips( ] }; _ -> - erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies") + erreur(230) end. % Construit une erreur -erreur(Message) -> +erreur(Num, Args) -> + erreur_json(Num, lists:flatten(io_lib:format(euphorik_bd:get_texte(Num), Args))). + + +erreur(Num) -> + erreur_json(Num, euphorik_bd:get_texte(Num)). + + +erreur_json(Num, Mess) -> { struct, [ {reply, "error"}, - {error_message, Message} + {no, Num}, + {error_message, Mess} ] }. diff --git a/modules/include/euphorik_bd.hrl b/modules/include/euphorik_bd.hrl index 01d6281..6713830 100755 --- a/modules/include/euphorik_bd.hrl +++ b/modules/include/euphorik_bd.hrl @@ -39,6 +39,14 @@ }). +% Contient tous les textes que peut envoyer le serveur vers client. +-record(texte, + { + id, + fr + }). + + % décrit un enregistrement d'un message -record(minichat, {