}
#page.minichat div.message .pseudo .login {
margin-left: 2px;
- font-size: 8px;
+ font-size: 8px;
}
#page.minichat #conversations .repondA {
z-index: 5;
#page.minichat #conversations .contenu {
margin-left: 5px;
}
+#page.minichat #conversations .outilsMess {
+ float: right;
+ display: none;
+}
+#page.minichat #conversations div.message:hover .outilsMess {
+ display: block
+}
#page.minichat #conversations .extraire {
float: right;
width: 13px;
#page.minichat #conversations .extraire:hover {
background-image: url(../../img/css1/extraction_hover.png);
}
+#page.minichat #conversations .extraireCompletement {
+ float: right;
+ width: 13px;
+ height: 13px;
+ background-image: url(../../img/css1/extraction.png);
+ margin-top: 2px
+}
+#page.minichat #conversations .extraireCompletement:hover {
+ background-image: url(../../img/css1/extraction_hover.png);
+}
"troll_id" : 45,
"conversations" : [
{
- "racine" : 123,
+ "root" : 123,
"page" : 1,
"last_message_id" : 4 (pas obligatoire)
}
"is_a_reply" : true | false,\r
"nick" : "Paul",\r
"login" : "paul_22",\r
- "content" : "Salut",\r
+ "content" : "Salut",
+ "root" : 453,\r
"answer_to" : [\r
{ "id" : 123, "nick" : "Pierre", "login" : "pierre_45" }\r
]
this.ekMaster = false
// les conversations, une conversation est un objet possédant les attributs suivants :
- // - racine (entier)
+ // - root (entier)
// - page (entier)
this.conversations = new Array()
}
for (var i = 0; i < this.conversations.length; i++)
if (this.conversations[i].root == racine)
return false
-
- this.conversations.push({root : racine, page : 1})
+ this.conversations.push({root : racine, page : 1})
if (this.autoflush) this.flush(true)
return true
"nick_format" : this.nickFormat,
"view_times" : this.viewTimes,
"view_tooltips" : this.viewTooltips,
- "main_page" : this.pagePrincipale < 1 ? 1 : this.pagePrincipale,
"conversations" : this.getJSONConversations()
}
}
this.viewTooltips = data["view_tooltips"]
// la page de la conversation principale
- this.pagePrincipale = data["main_page"] == undefined ? 1 : data["main_page"]
+ this.pagePrincipale = 1
// les conversations
this.conversations = data["conversations"]
{
// extraction du numéro de la css courante
var numCssCourante = this.css.match(/^.*?\/(\d)\/.*$/)
- if (numCssCourante[1] != undefined)
+ if (numCssCourante != null && numCssCourante[1] != undefined)
{
$("#menuCss option").removeAttr("selected")
$("#menuCss option[value=" + numCssCourante[1]+ "]").attr("selected", "selected")
(this.messages[i].systeme ? " systeme" : "") +
(this.messages[i].ekMaster ? " ekMaster" : "") +
"\">" +
- "<div class=\"extraire\"></div><span class=\"entete\">" +
+ "<div class=\"outilsMess\"><div class=\"extraire\"></div><div class=\"extraireCompletement\"></div></div><span class=\"entete\">" +
"<span class=\"dateComplete\">[<span class=\"date\">" + message.date + "</span>]</span>" +
"<span class=\"pseudo\"><span class=\"id\" style=\"display: none\">" + message.auteurId + "</span class=\"ident\">" + identifiant + "</span></span><span class=\"delimitationEntete\"></span>" +
XHTMLrepondA +
}
)
- thisConversation.util.infoBulle("Extraction de la conversation", $(".extraire", this))
+ thisConversation.util.infoBulle("Extraction de la conversation à partir de ce message", $(".extraire", this))
+ thisConversation.util.infoBulle("Extraction de la conversation complète", $(".extraireCompletement", this))
// l'id du message
var idMess36 = $(this).attr("id").substr(4)
this.util = util
this.conversations = new Array() // les conversations, la première représente la conversation principale
+
this.nouvelleConversation(0)
this.trollIdCourant = 0
Messages.prototype.getJSONConversations = function()
{
- var clientConv = this.client.getJSONConversations()
- for (var i = 1; i < this.conversations.length; i++)
+ var clientConv = []
+
+ for (var i = 0; i < this.client.conversations.length; i++)
{
- clientConv[i-1]["last_message_id"] = this.conversations[i].idDernierMessageAffiche
+ clientConv.push(
+ {
+ root : this.client.conversations[i].root,
+ page : this.client.conversations[i].page,
+ last_message_id : this.conversations[i + 1] == undefined ? 0 : this.conversations[i + 1].idDernierMessageAffiche
+ }
+ )
}
return clientConv
}
{
var thisMessages = this
- this.conversations[num] = new Conversation(num, this.util, this.formateur, this.client)
+ this.conversations[num] = new Conversation(num, this.util, this.formateur, this.client)
+
if (funFermer != undefined)
this.conversations[num].eventFermer(funFermer)
if (funLien != undefined)
% Ajoute un message. Repond_A est une liste d'id auquel le message répond
% retourne soit l'id du message soit {erreur, <raison>}.
-nouveau_message(Mess, Auteur_id, Repond_A) ->
+nouveau_message(Mess, Auteur_id, Repond_A_ids) ->
% regarde si les id 'Repond_A' existent
F = fun() ->
- Nb_id_trouve = length(e(q([E#minichat.id || E <- mnesia:table(minichat), lists:member(E#minichat.id, Repond_A)]), [{tmpdir, ?KEY_SORT_TEMP_DIR}])),
+ Repond_A = e(
+ q([M || M <- mnesia:table(minichat), lists:member(M#minichat.id, Repond_A_ids)]),
+ [{tmpdir, ?KEY_SORT_TEMP_DIR}]
+ ),
+ Racine_id = case Repond_A of
+ [] -> undefined;
+ [M | _ ] -> M#minichat.racine_id
+ end,
% est-ce que l'auteur existe ?
case e(q([E || E <- mnesia:table(user), E#user.id =:= Auteur_id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of
[Auteur] ->
- if Nb_id_trouve =/= length(Repond_A) ->
+ if length(Repond_A) =/= length(Repond_A_ids) ->
{erreur, "Un ou plusieurs messages introuvable"};
true ->
% comparaison entre la date du dernier poste et maintenant (gestion du flood)
true ->
mnesia:write(Auteur_maj),
Id = nouvel_id(minichat),
- inserer_reponses(Id, Repond_A),
- mnesia:write(#minichat{id=Id, auteur_id=Auteur#user.id, date=now(), pseudo=Auteur#user.pseudo, contenu=Mess}),
+ inserer_reponses(Id, Repond_A_ids),
+ mnesia:write(#minichat{
+ id = Id,
+ auteur_id = Auteur#user.id,
+ date = now(),
+ pseudo = Auteur#user.pseudo,
+ contenu = Mess,
+ racine_id = if Racine_id =:= undefined -> Id; true -> Racine_id end
+ }),
Id
end
end;
resultat_transaction(mnesia:transaction(
fun() ->
Id = nouvel_id(minichat),
- mnesia:write(#minichat{id=Id, auteur_id=0, date=now(), pseudo=Root#user.pseudo, contenu=Mess, troll_id=Troll_id}),
+ mnesia:write(#minichat{id=Id, auteur_id=0, date=now(), pseudo=Root#user.pseudo, contenu=Mess, troll_id=Troll_id, racine_id=Id}),
Id
end
)).
{nick_format, Nick_format_str},
{view_times, View_times},
{view_tooltips, View_tooltips},
- {main_page, Main_page},
{conversations, {array, Conversations_json}}
]
) ->
list_to_atom(Nick_format_str),
View_times,
View_tooltips,
- Main_page,
Conversations) of
ok ->
json_reponse_ok();
{nick, Mess#minichat.pseudo},
{login, User_mess#user.login},
{content, Mess#minichat.contenu},
+ {root, Mess#minichat.racine_id},
{answer_to, {array, lists:map(
fun(Id_mess) ->
{ok, M} = euphorik_bd:message_by_id(Id_mess),
pseudo, % chaine de caractère
contenu, % chaine de caractère
troll_id = undefined, % l'id du troll associé correspondant
- racine_id % la racine, par défaut correspond à l'id du message
+ racine_id = undefined % la racine, par défaut correspond à l'id du message
}).\r
\r
# SciTE session file
-buffer.1.path=/home/gburri/projets/euphorik/css/1/euphorik.css
+buffer.1.path=/home/gburri/projets/euphorik/trunk/css/1/euphorik.css
buffer.1.position=377
-buffer.2.path=/home/gburri/projets/euphorik/css/1/pageAbout.css
+buffer.2.path=/home/gburri/projets/euphorik/trunk/css/1/pageAbout.css
buffer.2.position=1
-buffer.3.path=/home/gburri/projets/euphorik/css/1/pageAdmin.css
+buffer.3.path=/home/gburri/projets/euphorik/trunk/css/1/pageAdmin.css
buffer.3.position=1
-buffer.4.path=/home/gburri/projets/euphorik/css/1/pageMinichat.css
+buffer.4.path=/home/gburri/projets/euphorik/trunk/css/1/pageMinichat.css
buffer.4.position=1
-buffer.5.path=/home/gburri/projets/euphorik/css/1/pageProfileRegister.css
+buffer.5.path=/home/gburri/projets/euphorik/trunk/css/1/pageProfileRegister.css
buffer.5.position=130
-buffer.6.path=/home/gburri/projets/euphorik/index.yaws
+buffer.6.path=/home/gburri/projets/euphorik/trunk/index.yaws
buffer.6.position=1
buffer.6.current=1
# SciTE session file
-buffer.1.path=/home/gburri/projets/euphorik/doc/technique.txt
+buffer.1.path=/home/gburri/projets/euphorik/trunk/doc/technique.txt
buffer.1.position=572
-buffer.2.path=/home/gburri/projets/euphorik/doc/TODO.txt
+buffer.2.path=/home/gburri/projets/euphorik/trunk/doc/TODO.txt
buffer.2.position=181
buffer.2.current=1
-buffer.3.path=/home/gburri/projets/euphorik/doc/protocole3.txt
+buffer.3.path=/home/gburri/projets/euphorik/trunk/doc/protocole3.txt
buffer.3.position=248
-buffer.4.path=/home/gburri/projets/euphorik/doc/description.txt
+buffer.4.path=/home/gburri/projets/euphorik/trunk/doc/description.txt
buffer.4.position=1
-buffer.5.path=/home/gburri/projets/euphorik/doc/installation.txt
+buffer.5.path=/home/gburri/projets/euphorik/trunk/doc/installation.txt
buffer.5.position=1231
# SciTE session file
-buffer.1.path=/home/gburri/projets/euphorik/modules/erl/euphorik_minichat_conversation.erl
+buffer.1.path=/home/gburri/projets/euphorik/trunk/modules/erl/euphorik_minichat_conversation.erl
buffer.1.position=580
-buffer.2.path=/home/gburri/projets/euphorik/modules/erl/euphorik_protocole.erl
+buffer.2.path=/home/gburri/projets/euphorik/trunk/modules/erl/euphorik_protocole.erl
buffer.2.position=1
-buffer.3.path=/home/gburri/projets/euphorik/modules/erl/euphorik_requests.erl
+buffer.3.path=/home/gburri/projets/euphorik/trunk/modules/erl/euphorik_requests.erl
buffer.3.position=1
-buffer.4.path=/home/gburri/projets/euphorik/modules/include/euphorik_bd.hrl
+buffer.4.path=/home/gburri/projets/euphorik/trunk/modules/include/euphorik_bd.hrl
buffer.4.position=1
-buffer.5.path=/home/gburri/projets/euphorik/modules/include/euphorik_defines.hrl
+buffer.5.path=/home/gburri/projets/euphorik/trunk/modules/include/euphorik_defines.hrl
buffer.5.position=336
-buffer.6.path=/home/gburri/projets/euphorik/modules/erl/euphorik_bd.erl
+buffer.6.path=/home/gburri/projets/euphorik/trunk/modules/erl/euphorik_bd.erl
buffer.6.position=1
-buffer.7.path=/home/gburri/projets/euphorik/modules/erl/euphorik_daemon.erl
+buffer.7.path=/home/gburri/projets/euphorik/trunk/modules/erl/euphorik_daemon.erl
buffer.7.position=1
buffer.7.current=1
# SciTE session file
-buffer.1.path=/home/gburri/projets/euphorik/js/euphorik.js
+buffer.1.path=/home/gburri/projets/euphorik/trunk/js/euphorik.js
buffer.1.position=22818
-buffer.2.path=/home/gburri/projets/euphorik/js/pageMinichat.js
+buffer.2.path=/home/gburri/projets/euphorik/trunk/js/pageMinichat.js
buffer.2.position=7496
-buffer.3.path=/home/gburri/projets/euphorik/js/pageProfile.js
+buffer.3.path=/home/gburri/projets/euphorik/trunk/js/pageProfile.js
buffer.3.position=1
-buffer.4.path=/home/gburri/projets/euphorik/js/pageRegister.js
+buffer.4.path=/home/gburri/projets/euphorik/trunk/js/pageRegister.js
buffer.4.position=1
-buffer.5.path=/home/gburri/projets/euphorik/js/pageAbout.js
+buffer.5.path=/home/gburri/projets/euphorik/trunk/js/pageAbout.js
buffer.5.position=1
-buffer.6.path=/home/gburri/projets/euphorik/js/pageAdmin.js
+buffer.6.path=/home/gburri/projets/euphorik/trunk/js/pageAdmin.js
buffer.6.position=1
buffer.6.current=1