#page.admin .troll {
- margin-top: 10px
-}
-
-#page.admin .troll span.content {
+ margin-top: 10px;
padding: 2px;
border: 1px solid;
border-color: #253f18;
background-color: #0c2003;
}
+#page.admin .troll img {
+ margin: 0px;
+ vertical-align: bottom;
+}
+
+#page.admin .troll span.content {
+ font-style: italic;
+ color: #FFFF88
+}
+
#page.admin .troll .author {
margin-left: 10px
}
margin-left: 10px;
font-size: 9px;
border: 1px solid;
- cursor: pointer
+ cursor: pointer;
}
\r
=== v1.0 ===
-* Est-ce que client.dernierMessageErreur est vraiment utile ??
-* Problème des images dans les trolls
-* Finir l'édition (mémoriser le contenu) des trolls
* marquer <aucun login> lors de l'affichage des login dans le chat pour les personnes n'en ayant pas\r
[80%] Un statut "EK" avec plein de privilège à la con. (avoir une petite étoile à coté de son nick ou le nick d'une certaine couleur)\r
* Une page "admin" avec :\r
* Modifier le script pour virer les lignes matchant /^\W*;;;.*$/
* Virer les commentaires dans les pages HTML\r
=== v1.1 ===\r
-* Passer sur git !?\r
* Tests de monter en charge coté serveur, analyse de la complexité (regarder du coté des TODO dans le code). Utiliser eventuellement Tsung\r
* Profiling pour améliorer les performances (client et serveur)\r
* traitementComplet() de euphorik.js est très très lent à executer\r
[ok] Trouver un moyen pour éviter la création à la suite de plusieurs comptes (via register).
[ok] Restructurer le code Erlang : déplacer certaines fonctions d'un module à l'autre (ev. créer des modules)
[ok] remplacer lightbox par : http://leandrovieira.com/projects/jquery/lightbox/
-
+[ok] Problème des images dans les trolls
+[ok] Finir l'édition (mémoriser le contenu) des trolls
+[ok] Est-ce que client.dernierMessageErreur est vraiment utile ??
=== Bugs ===
1 : Critique
2 : Urgent
thisFormateur = this
var traitementUrl = function(url)
{
- return "[" + thisFormateur.getShort(url)[0] + (urlCourante == url ? ": image courante" : "") + "]"
+ return "[" + thisFormateur.getShort(url)[0] + (urlCourante == url ? "*" : "") + "]"
}
\r
return this.remplacerBalisesHTML(M).replace(this.regexUrl, traitementUrl)
// données personnels\r
this.resetDonneesPersonnelles()
- this.setStatut(statutType.deconnected)
-
- // le dernier message d'erreur recut du serveur (par exemple une connexion foireuse : "login impossible")
- this.dernierMessageErreur = ""\r
+ this.setStatut(statutType.deconnected)\r
}
\r
Client.prototype.resetDonneesPersonnelles = function()\r
this.email = ""\r
this.css = $("link#cssPrincipale").attr("href")
this.nickFormat = "nick"
+ this.cookie = undefined
this.pagePrincipale = 1
this.ekMaster = false
(statut == "auth_not_registered" ? statutType.auth_not_registered : statutType.deconnected)\r
} \r
\r
- if (statut == this.statut) return \r
+ if (statut == this.statut) return\r
\r
this.statut = statut \r
this.majMenu()
function(data)
{
;;; dumpObj(data)
- thisClient.chargerDonnees(data)
+ if (data["reply"] == "error")
+ thisClient.util.messageDialogue(data["error_message"])
+ else
+ thisClient.chargerDonnees(data)
}
}
)
Client.prototype.deconnexion = function()\r
{
this.flush(true)
- this.delCookie()\r
- this.setStatut(statutType.deconnected) // deconnexion\r
+ this.delCookie()
this.resetDonneesPersonnelles()\r
+ this.setStatut(statutType.deconnected) // deconnexion\r
}
Client.prototype.chargerDonnees = function(data)
// les conversations
this.conversations = data["conversations"]
}
- this.dernierMessageErreur = data["error_message"]
}
/**
if (!this.authentifie())
return false
- thisClient = this
+ var thisClient = this
var ok = true
;;; dumpObj(this.getJSONProfile())
;;; dumpObj(data)
if (data["reply"] == "error")
{
- thisClient.dernierMessageErreur = data["error_message"]
+ thisClient.util.messageDialogue(data["error_message"])
ok = false
}
}
this.trolls = new Trolls(this.client, this.util, this.formateur)
this.trolls.rafraichirTrolls()
+ $("#page form#nouveauTroll input.troll").focus()
+
$("#page form#nouveauTroll button.return").click(
function()
{
)
}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+function Troll(content, author)
+{
+ this.content = content
+ this.author = author
+}
+
+
///////////////////////////////////////////////////////////////////////////////////////////////////
+
function Trolls(client, util, formateur)
{
this.client = client
this.formateur = formateur
this.dernierTroll = 0
this.pageEvent = new PageEvent("admin", this.util)
+
+ this.trolls = {}
}
var XHTML = ""
for (var i = 0; i < data["trolls"].length; i++)
{
+ var troll = new Troll(data["trolls"][i]["content"], data["trolls"][i]["author"])
+ var trollId = data["trolls"][i]["troll_id"]
+ thisTrolls.trolls[trollId] = troll
+
XHTML +=
- '<div id="troll' + data["trolls"][i]["troll_id"] + '" class="troll">' +
- '<span class="content">' + thisTrolls.formateur.traitementComplet(data["trolls"][i]["content"], data["trolls"][i]["author"]) + '</span>' +
- '<span class="author">' + thisTrolls.formateur.traitementComplet(data["trolls"][i]["author"]) + '</span>' +
+ '<div id="troll' + trollId + '" class="troll">' +
+ '<span class="content">' + thisTrolls.formateur.traitementComplet(troll.content, troll.author) + '</span>' +
+ '<span class="author"> - ' + thisTrolls.formateur.traitementComplet(troll.author) + '</span>' +
(data["trolls"][i]["author_id"] == thisTrolls.client.id ? '<span class="editTroll">éditer</span><span class="delTroll">Supprimer</span>' : '') +
'</div>'
}
{
var troll = this
var id = parseInt($(this).attr("id").substr(5))
+
+ $("a[@rel*=lightbox]", this).lightBox()
+
+ $(this).keypress(
+ function(e)
+ {
+ if (e.which == 13) // return
+ $(".modifier", this).click()
+ }
+ )
$(".delTroll", this).click(
function()
{
$("span", troll).css("display", "none")
$(troll).append(
'<form><p><input class="content" type="text" size="50" maxlength="500" value="' +
- $(".contentPasFormate", troll).html() +
+ thisTrolls.trolls[id].content +
'"></input><span class="modifier">modifier</span><span class="annuler">annuler</span></p></form>'
)
+ $("form input.content").focus()
+
var virerLeFormulaire = function()
{
$("form", troll).remove()
thisTrolls.dernierTroll = data["trolls"][data["trolls"].length - 1]["troll_id"]
break
case "troll_modified" :
- $("#trolls #troll" + data["troll_id"] + " .content").html(thisTrolls.formateur.traitementComplet(data["content"], $("#trolls #troll" + data["troll_id"] + " .author").html()))
- $("#trolls #troll" + data["troll_id"] + " .contentPasFormat").html(data["content"])
+ $("#trolls #troll" + data["troll_id"] + " .content").html(thisTrolls.formateur.traitementComplet(data["content"], thisTrolls.trolls[data["troll_id"]].author))
+ $("#trolls #troll" + data["troll_id"] + " a[@rel*=lightbox]").lightBox()
+ thisTrolls.trolls[data["troll_id"]].content = data["content"]
break
case "troll_deleted" :
$("#trolls #troll"+data["troll_id"]).remove()
function(e)
{
var offset = $(e.target).offset()
+ alert($("$smiles").width())
$("#smiles").css("top", offset.top).css("left", offset.left).show()
},
function(e){}
$("form input.message").val()
)
- $("form input.message")[0].focus()
+ $("form input.message").focus()
}
$("form").keypress(
case "new_troll" :
thisMessages.trollIdCourant = data["troll_id"]
$("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"]))
+ $("#trollCourant .troll a[@rel*=lightbox]").lightBox()
break
case "new_messages" :
thisPage.util.messageDialogue("Un mot de passe est obligatoire")
else if (password != passwordRe)
thisPage.util.messageDialogue("Les mots de passes ne correspondent pas")
- else if(!thisPage.client.enregistrement(login, thisPage.util.md5(password)))
- {
- thisPage.util.messageDialogue(thisPage.client.dernierMessageErreur, messageType.erreur)
- }
- else
+ else if(thisPage.client.enregistrement(login, thisPage.util.md5(password)))
{
// TODO : avertir que l'enregistrement s'est bien déroulé
- thisPage.client.majMenu()
+ thisPage.util.messageDialogue("Enregistrement réussi")
thisPage.pages.afficherPage("minichat")
}
}
ok;
{mnesia_table_event, {write, troll, Troll, [Old_troll | _], _}} when Troll#troll.date_post =/= undefined, Old_troll#troll.date_post == undefined ->
ok;
- _ ->
+ M ->
+ io:format("M : ~p~n", [M]), %TODO : a virer
wait_event_bd_page_chat()
% 60 minutes de timeout (le cas ou il n'y a que des consultations et jamais de post)
% Après 60 minutes de connexion, le client doit donc reétablir une connexion