From 531c70729709cd97024eb1c2ff3ed836db9f550e Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Fri, 16 May 2008 18:47:10 +0000 Subject: [PATCH] MOD simplification du code javascript au niveau des messages d'erreur lors d'un enregistrement (register) MOD changement de l'affichage des trolls sur la page d'admin --- css/1/pageAdmin.css | 17 +++++++---- doc/TODO.txt | 8 ++---- js/euphorik.js | 24 ++++++++-------- js/pageAdmin.js | 45 ++++++++++++++++++++++++++---- js/pageMinichat.js | 4 ++- js/pageRegister.js | 8 ++---- modules/erl/euphorik_protocole.erl | 3 +- 7 files changed, 73 insertions(+), 36 deletions(-) diff --git a/css/1/pageAdmin.css b/css/1/pageAdmin.css index 2d656a2..0fcab16 100644 --- a/css/1/pageAdmin.css +++ b/css/1/pageAdmin.css @@ -6,16 +6,23 @@ #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 } @@ -28,6 +35,6 @@ margin-left: 10px; font-size: 9px; border: 1px solid; - cursor: pointer + cursor: pointer; } diff --git a/doc/TODO.txt b/doc/TODO.txt index 7ff9056..af01371 100755 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -2,9 +2,6 @@ === 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 lors de l'affichage des login dans le chat pour les personnes n'en ayant pas [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) * Une page "admin" avec : @@ -35,7 +32,6 @@ * Modifier le script pour virer les lignes matchant /^\W*;;;.*$/ * Virer les commentaires dans les pages HTML === v1.1 === -* Passer sur git !? * Tests de monter en charge coté serveur, analyse de la complexité (regarder du coté des TODO dans le code). Utiliser eventuellement Tsung * Profiling pour améliorer les performances (client et serveur) * traitementComplet() de euphorik.js est très très lent à executer @@ -162,7 +158,9 @@ [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 diff --git a/js/euphorik.js b/js/euphorik.js index 4b56fa3..6692be9 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -384,7 +384,7 @@ Formateur.prototype.traiterPourFenetreLightBox = function(M, urlCourante) thisFormateur = this var traitementUrl = function(url) { - return "[" + thisFormateur.getShort(url)[0] + (urlCourante == url ? ": image courante" : "") + "]" + return "[" + thisFormateur.getShort(url)[0] + (urlCourante == url ? "*" : "") + "]" } return this.remplacerBalisesHTML(M).replace(this.regexUrl, traitementUrl) @@ -413,10 +413,7 @@ function Client(util) // données personnels this.resetDonneesPersonnelles() - this.setStatut(statutType.deconnected) - - // le dernier message d'erreur recut du serveur (par exemple une connexion foireuse : "login impossible") - this.dernierMessageErreur = "" + this.setStatut(statutType.deconnected) } Client.prototype.resetDonneesPersonnelles = function() @@ -428,6 +425,7 @@ Client.prototype.resetDonneesPersonnelles = function() this.email = "" this.css = $("link#cssPrincipale").attr("href") this.nickFormat = "nick" + this.cookie = undefined this.pagePrincipale = 1 this.ekMaster = false @@ -611,7 +609,7 @@ Client.prototype.setStatut = function(statut) (statut == "auth_not_registered" ? statutType.auth_not_registered : statutType.deconnected) } - if (statut == this.statut) return + if (statut == this.statut) return this.statut = statut this.majMenu() @@ -669,7 +667,10 @@ Client.prototype.connexion = function(messageJson) function(data) { ;;; dumpObj(data) - thisClient.chargerDonnees(data) + if (data["reply"] == "error") + thisClient.util.messageDialogue(data["error_message"]) + else + thisClient.chargerDonnees(data) } } ) @@ -679,9 +680,9 @@ Client.prototype.connexion = function(messageJson) Client.prototype.deconnexion = function() { this.flush(true) - this.delCookie() - this.setStatut(statutType.deconnected) // deconnexion + this.delCookie() this.resetDonneesPersonnelles() + this.setStatut(statutType.deconnected) // deconnexion } Client.prototype.chargerDonnees = function(data) @@ -710,7 +711,6 @@ Client.prototype.chargerDonnees = function(data) // les conversations this.conversations = data["conversations"] } - this.dernierMessageErreur = data["error_message"] } /** @@ -726,7 +726,7 @@ Client.prototype.flush = function(async) if (!this.authentifie()) return false - thisClient = this + var thisClient = this var ok = true ;;; dumpObj(this.getJSONProfile()) @@ -743,7 +743,7 @@ Client.prototype.flush = function(async) ;;; dumpObj(data) if (data["reply"] == "error") { - thisClient.dernierMessageErreur = data["error_message"] + thisClient.util.messageDialogue(data["error_message"]) ok = false } } diff --git a/js/pageAdmin.js b/js/pageAdmin.js index fd1ddd4..6387574 100644 --- a/js/pageAdmin.js +++ b/js/pageAdmin.js @@ -28,6 +28,8 @@ PageAdmin.prototype.charger = function() 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() { @@ -86,8 +88,20 @@ PageAdmin.prototype.posterTroll = function() ) } + +/////////////////////////////////////////////////////////////////////////////////////////////////// + + +function Troll(content, author) +{ + this.content = content + this.author = author +} + + /////////////////////////////////////////////////////////////////////////////////////////////////// + function Trolls(client, util, formateur) { this.client = client @@ -95,6 +109,8 @@ function Trolls(client, util, formateur) this.formateur = formateur this.dernierTroll = 0 this.pageEvent = new PageEvent("admin", this.util) + + this.trolls = {} } @@ -174,10 +190,14 @@ Trolls.prototype.rafraichirTrolls = function() 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 += - '
' + - '' + thisTrolls.formateur.traitementComplet(data["trolls"][i]["content"], data["trolls"][i]["author"]) + '' + - '' + thisTrolls.formateur.traitementComplet(data["trolls"][i]["author"]) + '' + + '
' + + '' + thisTrolls.formateur.traitementComplet(troll.content, troll.author) + '' + + ' - ' + thisTrolls.formateur.traitementComplet(troll.author) + '' + (data["trolls"][i]["author_id"] == thisTrolls.client.id ? 'éditerSupprimer' : '') + '
' } @@ -187,6 +207,16 @@ Trolls.prototype.rafraichirTrolls = function() { 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() { @@ -209,9 +239,11 @@ Trolls.prototype.rafraichirTrolls = function() $("span", troll).css("display", "none") $(troll).append( '

modifierannuler

' ) + $("form input.content").focus() + var virerLeFormulaire = function() { $("form", troll).remove() @@ -236,8 +268,9 @@ Trolls.prototype.rafraichirTrolls = function() 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() diff --git a/js/pageMinichat.js b/js/pageMinichat.js index 1f6a118..d6a4bf0 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -98,6 +98,7 @@ PageMinichat.prototype.charger = function() function(e) { var offset = $(e.target).offset() + alert($("$smiles").width()) $("#smiles").css("top", offset.top).css("left", offset.left).show() }, function(e){} @@ -123,7 +124,7 @@ PageMinichat.prototype.charger = function() $("form input.message").val() ) - $("form input.message")[0].focus() + $("form input.message").focus() } $("form").keypress( @@ -910,6 +911,7 @@ Messages.prototype.rafraichirMessages = function(vider) 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" : diff --git a/js/pageRegister.js b/js/pageRegister.js index 797806e..ea9092d 100755 --- a/js/pageRegister.js +++ b/js/pageRegister.js @@ -55,14 +55,10 @@ PageRegister.prototype.charger = function() 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") } } diff --git a/modules/erl/euphorik_protocole.erl b/modules/erl/euphorik_protocole.erl index cdd0f6b..b81f60a 100755 --- a/modules/erl/euphorik_protocole.erl +++ b/modules/erl/euphorik_protocole.erl @@ -271,7 +271,8 @@ wait_event_bd_page_chat() -> 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 -- 2.43.0