projects
/
euphorik.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8775978
)
ADD création d'un message associé au troll de la semaine lors de l'élection de celui ci.
author
Greg Burri
<greg.burri@gmail.com>
Sat, 24 May 2008 07:50:38 +0000
(07:50 +0000)
committer
Greg Burri
<greg.burri@gmail.com>
Sat, 24 May 2008 07:50:38 +0000
(07:50 +0000)
css/1/pageMinichat.css
patch
|
blob
|
history
doc/protocole3.txt
patch
|
blob
|
history
js/pageMinichat.js
patch
|
blob
|
history
modules/erl/euphorik_bd.erl
patch
|
blob
|
history
modules/erl/euphorik_protocole.erl
patch
|
blob
|
history
modules/include/euphorik_bd.hrl
patch
|
blob
|
history
diff --git
a/css/1/pageMinichat.css
b/css/1/pageMinichat.css
index
bd2a920
..
da92691
100755
(executable)
--- a/
css/1/pageMinichat.css
+++ b/
css/1/pageMinichat.css
@@
-60,7
+60,8
@@
#page.minichat #trollCourant .troll {
font-style: italic;
#page.minichat #trollCourant .troll {
font-style: italic;
- color: #FFFF88
+ color: #FFFF88;
+ cursor: pointer;
}
#page.minichat .titreSmiles:hover {
}
#page.minichat .titreSmiles:hover {
diff --git
a/doc/protocole3.txt
b/doc/protocole3.txt
index
8489e58
..
4b18f9e
100644
(file)
--- a/
doc/protocole3.txt
+++ b/
doc/protocole3.txt
@@
-192,6
+192,7
@@
ou
{
"reply" : "new_troll",
"troll_id" : 123,
{
"reply" : "new_troll",
"troll_id" : 123,
+ "message_id" : 12,
"content" : "Linux sera desktop ready en 2008 ?"
}
ou
"content" : "Linux sera desktop ready en 2008 ?"
}
ou
diff --git
a/js/pageMinichat.js
b/js/pageMinichat.js
index
5ce2793
..
0ba6dc6
100755
(executable)
--- a/
js/pageMinichat.js
+++ b/
js/pageMinichat.js
@@
-242,14
+242,7
@@
PageMinichat.prototype.envoyerMessage = function(pseudo, message)
// met à jour la classe des messages auquel repond celui ci (c'est un peu de la triche)
for (var i = 0; i < repondA.length; i++)
// met à jour la classe des messages auquel repond celui ci (c'est un peu de la triche)
for (var i = 0; i < repondA.length; i++)
- {
$("#conversations div#" + repondA[i]).addClass("repondu")
$("#conversations div#" + repondA[i]).addClass("repondu")
- /* Ca sert à rien, TODO : tester/virer
- for (var c = 0; c < thisPageMinichat.messages.conversations.length; c++)
- for (var m = 0; m < thisPageMinichat.messages.conversations[c].messages.length; m++)
- thisPageMinichat.messages.conversations[c].messages[m].clientARepondu = true
- */
- }
}
else if (data["reply"] == "error")
{
}
else if (data["reply"] == "error")
{
@@
-930,7
+923,13
@@
Messages.prototype.rafraichirMessages = function(vider)
{
case "new_troll" :
thisMessages.trollIdCourant = data["troll_id"]
{
case "new_troll" :
thisMessages.trollIdCourant = data["troll_id"]
- $("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"]))
+ $("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"])).unbind().click(
+ function()
+ {
+ thisMessages.ouvrirConversation(data["message_id"])
+ }
+ )
+
$("#trollCourant .troll a[@rel*=lightbox]").lightBox()
break
$("#trollCourant .troll a[@rel*=lightbox]").lightBox()
break
diff --git
a/modules/erl/euphorik_bd.erl
b/modules/erl/euphorik_bd.erl
index
b938f75
..
91d6f67
100755
(executable)
--- a/
modules/erl/euphorik_bd.erl
+++ b/
modules/erl/euphorik_bd.erl
@@
-50,6
+50,7
@@
% messages :
nouveau_message/3,
nouveau_message_sys/1,
% messages :
nouveau_message/3,
nouveau_message_sys/1,
+ nouveau_message_sys/2,
messages/1,
messages/2,
\r
messages/3,
messages/1,
messages/2,
\r
messages/3,
@@
-78,6
+79,7
@@
troll_by_id/1,
current_troll/0,
elire_troll/0,
troll_by_id/1,
current_troll/0,
elire_troll/0,
+ message_id_associe/1,
% versions :
update_version/1,
% versions :
update_version/1,
@@
-110,7
+112,7
@@
create_tables() ->
]),
mnesia:create_table(minichat, [
{attributes, record_info(fields, minichat)},
]),
mnesia:create_table(minichat, [
{attributes, record_info(fields, minichat)},
- {index, [auteur_id]},
+ {index, [auteur_id
, troll_id
]},
{disc_copies, [node()]}
]),
mnesia:create_table(reponse_minichat, [
{disc_copies, [node()]}
]),
mnesia:create_table(reponse_minichat, [
@@
-430,13
+432,19
@@
inserer_reponses(_, []) ->
% Permet de créer un message système.
% Renvoie l'id du message système
nouveau_message_sys(Mess) ->
% Permet de créer un message système.
% Renvoie l'id du message système
nouveau_message_sys(Mess) ->
+ nouveau_message_sys(Mess, undefined).
+
+
+% Création d'un message système lié à un troll.
+nouveau_message_sys(Mess, Troll_id) ->
{ok, Root} = user_by_id(0),
{ok, Root} = user_by_id(0),
- mnesia:transaction(
+
resultat_transaction(
mnesia:transaction(
fun() ->
Id = nouvel_id(minichat),
fun() ->
Id = nouvel_id(minichat),
- mnesia:write(#minichat{id=Id, auteur_id=0, date=now(), pseudo=Root#user.pseudo, contenu=Mess})
+ mnesia:write(#minichat{id=Id, auteur_id=0, date=now(), pseudo=Root#user.pseudo, contenu=Mess, troll_id=Troll_id}),
+ Id
end
end
- ).
+ )
)
.
% Renvoie N messages se trouvant sur la première page
% Renvoie N messages se trouvant sur la première page
@@
-447,7
+455,10
@@
messages(N) ->
% Renvoie N messages se trouvant sur la page P
messages(N, P) ->
F = fun() ->
% Renvoie N messages se trouvant sur la page P
messages(N, P) ->
F = fun() ->
- C = cursor(q([E || E <- qlc:keysort(2, mnesia:table(minichat), [{order, descending}])])),
+ C = cursor(q([
+ E#minichat{contenu = contenu_message(E)} ||
+ E <- qlc:keysort(2, mnesia:table(minichat), [{order, descending}])
+ ])),
if P > 1 -> qlc:next_answers(C, N * (P - 1));
true -> ok
end,
if P > 1 -> qlc:next_answers(C, N * (P - 1));
true -> ok
end,
@@
-468,12
+479,18
@@
messages(Id, N, P) ->
message_by_id(Id) ->
case resultat_transaction(mnesia:transaction(
fun() ->
message_by_id(Id) ->
case resultat_transaction(mnesia:transaction(
fun() ->
- e(q([E || E <- qlc:keysort(2, mnesia:table(minichat), [{order, ascending}]), Id =:= E#minichat.id]))
+ e(q([E
#minichat{contenu = contenu_message(E)}
|| E <- qlc:keysort(2, mnesia:table(minichat), [{order, ascending}]), Id =:= E#minichat.id]))
end
)) of
[M] -> {ok, M};
_ -> erreur
end.
end
)) of
[M] -> {ok, M};
_ -> erreur
end.
+
+
+% Renvoie le contenu d'un message donnée, à utiliser à l'intérieur d'une transaction.
+% TODO : Cette fonction pourrait être remplacé par un "outer-join", est-ce possible avec qlc ?
+contenu_message(E) ->
+ lists:flatten(E#minichat.contenu ++ e(q([T#troll.content || T <- mnesia:table(troll), T#troll.id =:= E#minichat.troll_id]))).
% Renvoie une liste de message (voir #minichat de euphorik_bd.hrl) à partir d'une liste d'id (Ids).
% Renvoie une liste de message (voir #minichat de euphorik_bd.hrl) à partir d'une liste d'id (Ids).
@@
-678,6
+695,7
@@
trolls(Last_id) ->
)).
)).
+ % Crée un nouveau troll.
% Renvoie l'id du nouveau troll
% ou max_troll_reached_per_user si le nombre de troll posté par l'utilisateur max a été atteind
% ou max_troll_reached si le nombre de troll posté max a été atteind
% Renvoie l'id du nouveau troll
% ou max_troll_reached_per_user si le nombre de troll posté par l'utilisateur max a été atteind
% ou max_troll_reached si le nombre de troll posté max a été atteind
@@
-775,6
+793,7
@@
current_troll() ->
% Elit un troll au hasard parmis les trolls en attente (leur date_post =:= undefined)
% Elit un troll au hasard parmis les trolls en attente (leur date_post =:= undefined)
+% Un message est posté par 'Sys' et le troll elu est lié à ce message
% met à jour sa date de post.
% renvoie plus_de_trolls si il n'y a aucun troll en attente.
elire_troll() ->
% met à jour sa date de post.
% renvoie plus_de_trolls si il n'y a aucun troll en attente.
elire_troll() ->
@@
-788,12
+807,25
@@
elire_troll() ->
Trolls ->
Troll = lists:nth(random:uniform(length(Trolls)), Trolls),
Troll2 = Troll#troll{date_post = now()},
Trolls ->
Troll = lists:nth(random:uniform(length(Trolls)), Trolls),
Troll2 = Troll#troll{date_post = now()},
- mnesia:write(Troll2)
+ mnesia:write(Troll2),
+ nouveau_message_sys("Troll de la semaine : ", Troll2#troll.id)
end
end
).
end
end
).
-
+
+% Renvoie l'id du message associé au troll dont l'id est donnée.
+% Renvoie undefined si il n'y en a pas.
+message_id_associe(Troll_id) ->
+ resultat_transaction(mnesia:transaction(
+ fun() ->
+ case e(q([M#minichat.id || M <- mnesia:table(minichat), M#minichat.troll_id =:= Troll_id])) of
+ [Id] -> Id;
+ _ -> undefined
+ end
+ end
+ )).
+
update_version(1) ->
mnesia:transform_table(
update_version(1) ->
mnesia:transform_table(
diff --git
a/modules/erl/euphorik_protocole.erl
b/modules/erl/euphorik_protocole.erl
index
f1f0acd
..
e3e2cdf
100755
(executable)
--- a/
modules/erl/euphorik_protocole.erl
+++ b/
modules/erl/euphorik_protocole.erl
@@
-38,7
+38,6
@@
list_banned_ips/1,
erreur/1
]).
list_banned_ips/1,
erreur/1
]).
--include_lib("xmerl/include/xmerl.hrl").
-include("../include/euphorik_bd.hrl").
\r
-include("../include/euphorik_defines.hrl").
\r
-include("../include/euphorik_bd.hrl").
\r
-include("../include/euphorik_defines.hrl").
\r
@@
-229,6
+228,7
@@
wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id
{struct, [
{reply, "new_troll"},
{troll_id, Current#troll.id},
{struct, [
{reply, "new_troll"},
{troll_id, Current#troll.id},
+ {message_id, euphorik_bd:message_id_associe(Current#troll.id)},
{content, Current#troll.content}
]};
_ ->
{content, Current#troll.content}
]};
_ ->
diff --git
a/modules/include/euphorik_bd.hrl
b/modules/include/euphorik_bd.hrl
index
8c16c70
..
ff1ca40
100755
(executable)
--- a/
modules/include/euphorik_bd.hrl
+++ b/
modules/include/euphorik_bd.hrl
@@
-33,7
+33,8
@@
auteur_id, % -> #user.id
date, % erlang:now()
pseudo, % chaine de caractère
auteur_id, % -> #user.id
date, % erlang:now()
pseudo, % chaine de caractère
- contenu % chaine de caractère
+ contenu, % chaine de caractère
+ troll_id = undefined % l'id du troll associé correspondant
}).
\r
\r
}).
\r
\r