"login" : "paul49",\r
"email" : "paul@pierre.com",\r
"css" : "css/3/euphorik.css",
- "nick_format" : "nick" | "login" | "nick_login",\r
+ "nick_format" : "nick" | "login" | "nick_login",
+ "view_times" : true | false,
+ "view_tooltips" : true | false,\r
"main_page" : 1,
"conversations" : [
{
"nick" : "Paul",\r
"email" : "paul@pierre.com",\r
"css" : "css/3/euphorik.css",
- "nick_format" : "nick" | "login" | "nick_login",\r
+ "nick_format" : "nick" | "login" | "nick_login",
+ "view_times" : true | false,
+ "view_tooltips" : true | false,\r
"main_page" : 1,
"conversations" : [
{
$("#info").slideUp(50)
})
+ $("body").append('<div id="flecheBulle"></div>').append('<div id="messageBulle"><p></p></div>')
+
this.formateur = formateur
+ this.bulleActive = true
}
var messageType = {informatif: 0, question: 1, erreur: 2}
*/
Util.prototype.infoBulle = function(message, element)
{
- var virerMess = function()
+ var thisUtil = this
+
+ var cacherBulle = function()
{
- $("#flecheBulle").remove()
- $("#messageBulle").remove()
+ $("#flecheBulle").hide()
+ $("#messageBulle").hide()
}
- element.click(virerMess)
-
element.hover(
function(e)
{
- f = $('<div id="flecheBulle"></div>').appendTo("body")
- m = $('<div id="messageBulle"><p>' + message + '</p></div>').appendTo("body")
+ if (!thisUtil.bulleActive)
+ return
+
+ var m = $("#messageBulle")
+ var f = $("#flecheBulle")
+
+ $("p", m).html(message)
+
var positionFleche = {
left : element.offset().left + element.width() / 2 - f.width() / 2,
top : element.offset().top - f.height()
m.css("top", positionMessage.top).css("left", positionMessage.left).show()
f.css("top", positionFleche.top).css("left", positionFleche.left).show()
},
- virerMess
- )
+ cacherBulle
+ ).click(cacherBulle)
}
/**
this.email = ""\r
this.css = $("link#cssPrincipale").attr("href")
this.nickFormat = "nick"
+ this.viewTimes = true
+ this.viewTooltips = true
this.cookie = undefined
this.pagePrincipale = 1
"email" : this.email,
"css" : this.css,
"nick_format" : this.nickFormat,
+ "view_times" : this.viewTimes,
+ "view_tooltips" : this.viewTooltips,
"main_page" : this.pagePrincipale < 1 ? 1 : this.pagePrincipale,
"conversations" : this.getJSONConversations()
}
this.email = data["email"]\r
this.setCss(data["css"])
this.nickFormat = data["nick_format"]
+ this.viewTimes = data["view_times"]
+ this.viewTooltips = data["view_tooltips"]
// la page de la conversation principale
this.pagePrincipale = data["main_page"] == undefined ? 1 : data["main_page"]
// les conversations
this.conversations = data["conversations"]
+
+ this.majBulle()
}
}
thisClient.util.messageDialogue(data["error_message"])
ok = false
}
+ else
+ {
+ thisClient.majBulle()
+ }
}
}
)
}
}
+/**
+ * Met à jour l'affichage des infos bulles en fonction du profile.
+ */
+Client.prototype.majBulle = function()
+{
+ this.util.bulleActive = this.viewTooltips
+}
+
Client.prototype.slap = function(userId, raison)
{
var thisClient = this
// les outils de bannissement (uniquement pour les ekMaster)
if (this.client.ekMaster)
{
- $("body").append(
+ $(
'<div id="outilsBan">' +
'<form action=""><p><input id="raison" name="raison" type="text" size="10" maxlength="200"></input></p></form>' +
'<img id="ban" src="img/ban.gif" alt="Ban de 3 jours" />' +
'<img id="kick" src="img/kick.gif" alt="Ban de 15min" />' +
'<img id="slap" src="img/slap.gif" alt="Avertissement" />' +
'</div>'
- )
- $("#outilsBan").hover(
+ ).hover(
function(){},
function()
{
$("#outilsBan").hide()
}
- )
+ ).appendTo("body")
+
+ this.util.infoBulle("Slap", $("#outilsBan #slap"))
+ this.util.infoBulle("Kick", $("#outilsBan #kick"))
+ this.util.infoBulle("Ban", $("#outilsBan #ban"))
}
- this.util.infoBulle("Ouvrir la conversation liée au troll de la semaine", $("#trollCourant"))
+ this.util.infoBulle("Ouvrir la conversation liée au troll de la semaine", $("#trollCourant .troll"))
// <smiles>
$("body").append("<div id=\"smiles\"></div>")
(this.messages[i].ekMaster ? " ekMaster" : "") +
"\">" +
"<div class=\"extraire\"></div><span class=\"entete\">" +
- "[<span class=\"date\">" + message.date + "</span>]" +
+ "<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 +
"<span class=\"contenu\">" + this.formateur.traitementComplet(message.contenu, message.pseudo) + "</span>" +
}
)
+ if (thisConversation.client.viewTimes)
+ $(".dateComplete", this).show()
+ else
+ $(".dateComplete", this).hide()
+
$("a[@rel*=lightbox]", this).lightBox()
// les outils de bannissement (uniquement pour les ekMaster)
var h = element.height()
var offset = element.offset()
var outils = $("#outilsBan").css("top", offset.top - 2).css("left", offset.left - 2).height(h < 16 ? 16 : h).width(element.width() + 16 * 3 + 4 + 64).show()
- $("img", outils).unbind()
+ $("img", outils).unbind("click")
$("#slap", outils).click(
function(e)
{
{
case "new_troll" :
thisMessages.trollIdCourant = data["troll_id"]
- $("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"])).unbind().click(
+ $("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"])).unbind("click").click(
function()
{
thisMessages.ouvrirConversation(data["message_id"])
$("form#profile input.login").val(this.client.login)\r
$("form#profile input.pseudo").val(this.client.pseudo)\r
$("form#profile input.email").val(this.client.email)
+ $("form#profile input#viewTooltips").attr("checked", this.client.viewTooltips)
+ $("form#profile input#viewTimes").attr("checked", this.client.viewTimes)
$("form#profile select#affichagePseudo option").removeAttr("selected")
$("form#profile select#affichagePseudo option[value=" + this.client.nickFormat + "]").attr("selected", "selected")
thisPage.client.pseudo = thisPage.formateur.filtrerInputPseudo($("form#profile input.pseudo").val())\r
thisPage.client.email = $("form#profile input.email").val()
thisPage.client.nickFormat = $("form#profile select#affichagePseudo option:selected").attr("value")
+ thisPage.client.viewTooltips = $("form#profile input#viewTooltips").attr("checked")
+ thisPage.client.viewTimes = $("form#profile input#viewTimes").attr("checked")
\r
var password = $("form#profile input.password").val()\r
var passwordRe = $("form#profile input.passwordRe").val() \r
if(!thisPage.client.flush())\r
thisPage.util.messageDialogue("Impossible de mettre à jour votre profile, causes inconnues", messageType.erreur)\r
else
- {
thisPage.util.messageDialogue("Votre profile a été mis à jour")\r
- //thisPage.pages.afficherPage("minichat")
- }\r
}\r
)
}
</select>\
</td>\
</tr>\
- <tr>' : '') + '\
<tr>\
- <td></td>\
- <td><button>Valider</button>\
+ <td>Afficher les infos bulles</td>\
+ <td><input type="checkbox" id="viewTooltips" /></td>\
+ </tr>\
+ <tr>\
+ <td>Afficher les dates</td>\
+ <td><input type="checkbox" id="viewTimes" /></td>\
+ </tr>' : '') + '\
+ <tr>\
+ <td></td>\
+ <td><button>Valider</button>\
</tr>\
</table>\
</form>'
% users :
nouveau_user/2,
nouveau_user/3,
- set_profile/9,
+ set_profile/11,
update_date_derniere_connexion/1,
update_ip/2,
update_pseudo_user/2,
% Mise à par Cookie les autres peuvent être undefined ce qui veut dire qu'ils ne seront pas modifié.
-set_profile(Cookie, Login, Password, Pseudo, Email, Css, Nick_format, Page_principale, Conversations) ->
+set_profile(Cookie, Login, Password, Pseudo, Email, Css, Nick_format, View_times, View_tooltips, Page_principale, Conversations) ->
if Nick_format =:= nick; Nick_format =:= login; Nick_format =:= nick_login ->
resultat_transaction(mnesia:transaction(
fun() ->
case user_by_cookie(Cookie) of
- {ok, User} ->
+ {ok, User} ->
case user_by_login(Login) of
{ok, U} when Login =/= [], U#user.id =/= User#user.id ->
login_deja_pris;
email = if is_list(Email) -> Email; true -> User#user.email end,
css = if is_list(Css) -> Css; true -> User#user.css end,
nick_format = Nick_format,
+ view_times = View_times,
+ view_tooltips = View_tooltips,
page_principale = if is_integer(Page_principale), Page_principale > 0 -> Page_principale; true -> User#user.page_principale end,
conversations = if is_list(Conversations) -> Conversations; true -> User#user.conversations end
},
{email, Email},
{css, Css},
{nick_format, Nick_format_str},
+ {view_times, View_times},
+ {view_tooltips, View_tooltips},
{main_page, Main_page},
{conversations, {array, Conversations_json}}
]
[],
Conversations_json
),
- case euphorik_bd:set_profile(Cookie, Login, Password, Pseudo, Email, Css, list_to_atom(Nick_format_str), Main_page, Conversations) of
+ % TODO : pas très beau, mieux vaut construire un #user
+ case euphorik_bd:set_profile(
+ Cookie,
+ Login,
+ Password,
+ Pseudo,
+ Email,
+ Css,
+ list_to_atom(Nick_format_str),
+ View_times,
+ View_tooltips,
+ Main_page,
+ Conversations) of
ok ->
json_reponse_ok();
login_deja_pris ->
{email, User#user.email},
{css, User#user.css},
{nick_format, atom_to_list(User#user.nick_format)},
+ {view_times, User#user.view_times},
+ {view_tooltips, User#user.view_tooltips},
{main_page, User#user.page_principale},
{conversations,
{array,
date_derniere_connexion, % erlang:now(), est mis à jour lors de n'importe quelle activitée (envoie de message par exemple)\r
css = [], % string()
nick_format = nick, %atom(), peut valoir 'nick', 'login' ou 'nick_login'
+ view_times = true,
+ view_tooltips = true,
indice_flood = 0, % integer() est incrémenté lorsque l'utilisateur envoie trop rapidement des messages.
page_principale = 1, % la page de la conversation principale
conversations = [], % [{integer(), integer()}], la liste des messages correspondant au conversation ainsi que la page affichée