From beb0e9617b60e39a0493926a563574bb9cd9765b Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Thu, 5 Jun 2008 20:24:33 +0000 Subject: [PATCH] =?utf8?q?ADD=20changement=20du=20skin1=20pour=20une=20mei?= =?utf8?q?lleure=20lisibilit=C3=A9=20des=20reponses=20FIX=20probl=C3=A8me?= =?utf8?q?=20du=20refresh=20des=20ip=20bannies?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- css/1/pageMinichat.css | 51 ++++--- doc/TODO.txt | 10 +- doc/description.txt | 5 +- .../couleurs entetes messages css1.svg | 132 ++++++++++++++++++ doc/graphiques/maquette_1.svg | 32 ++++- js/euphorik.js | 27 +++- js/pageAdmin.js | 26 ++-- js/pageMinichat.js | 41 +++--- modules/erl/euphorik_protocole.erl | 2 +- 9 files changed, 252 insertions(+), 74 deletions(-) create mode 100644 doc/graphiques/couleurs entetes messages css1.svg diff --git a/css/1/pageMinichat.css b/css/1/pageMinichat.css index d555074..04d6f54 100755 --- a/css/1/pageMinichat.css +++ b/css/1/pageMinichat.css @@ -114,15 +114,6 @@ float: left; width: 100%; } -#page.minichat #conversations div.message { - border-left-width: 5px; - border-left-style: solid; - border-color: transparent; - padding-right: 5px; - cursor: pointer; - min-height: 18px; - line-height: 18px; -} #page.minichat #conversations div.messageImpair { background-color: #fbeede; } @@ -136,18 +127,6 @@ filter: alpha(opacity = 30); zoom: 1 } -#page.minichat #conversations div.reponse { - border-color: #bd7a11 -} -#page.minichat #conversations div.repondu { - border-color: #b711bd -} -#page.minichat #conversations div.proprietaire { - border-color: #bd1129 -} -#page.minichat #conversations div.systeme { - background-color: #f0df95 -} #page.minichat #conversations .titre { text-align: center; padding-right: 8px; @@ -196,6 +175,36 @@ } /***** Les messages *****/ +#page.minichat #conversations div.message { + padding-right: 5px; + cursor: pointer; + min-height: 18px; + line-height: 18px; +} +#page.minichat #conversations div.message.reponse .entete { + background-color: #31732f +} +#page.minichat #conversations div.message.reponse .delimitationEntete, +#page.minichat #conversations div.message.reponse .repondA { + background-image: url(../../img/css1/fleche_reponse.png); +} +#page.minichat #conversations div.message.repondu .entete { + background-color: #84196c +} +#page.minichat #conversations div.message.repondu .delimitationEntete, +#page.minichat #conversations div.message.repondu .repondA { + background-image: url(../../img/css1/fleche_repondu.png); +} +#page.minichat #conversations div.message.proprietaire .entete { + background-color: #bf2911 +} +#page.minichat #conversations div.message.proprietaire .delimitationEntete, +#page.minichat #conversations div.message.proprietaire .repondA { + background-image: url(../../img/css1/fleche_proprietaire.png); +} +#page.minichat #conversations div.message.systeme { + background-color: #f0df95 +} #page.minichat div.message a { font-weight: bold; } diff --git a/doc/TODO.txt b/doc/TODO.txt index 26de108..6babe5d 100755 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -196,11 +196,9 @@ 2 : Urgent 3 : Peu grave -[1] Le widget select qui permet la sélection des css n'est pas initialisé correctement au chargement du site -[1] Il arrive qu'après le poste d'un message le refresh ne se fasse plus, peut-être une "race-condition" dans la classe PageEvent de euphorik.js -[1] Après être passé de la page Admin à Chat le client continu de réaliser de temps en temp des requêtes "lists_banned_ips" - * action=%7B%22action%22%3A%22list_banned_ips%22%2C%22cookie%22%3A%22<>%22%7D -[1] Traiter les tags TODO et FIXME dans le code +[1] Il arrive qu'après le poste d'un message le refresh ne se fasse plus, peut-être une "race-condition" dans la classe PageEvent de euphorik.js +[2] Le widget select qui permet la sélection des css n'est pas initialisé correctement au chargement du site +[2] Traiter les tags TODO et FIXME dans le code [2] Le changement de skin n'est pas mémorisé lorsque l'on est pas connecté (normal puisque le style est mémorisé dans le profil) * solution 1 : permettre le changement de skin uniquement pour les personnes enregistré ? * solution 2 : mémoriser le skin courant dans un cookie @@ -260,6 +258,8 @@ * Peut être un bug lié à jQuery * Reproduit sur Firefox 2 et 3 ! [ok] Lors d'un logout il faut faire un full refresh (pour mettre à jour les messages auquel on répond par exemple) +[ok] Après être passé de la page Admin à Chat le client continu de réaliser de temps en temp des requêtes "lists_banned_ips" + * action=%7B%22action%22%3A%22list_banned_ips%22%2C%22cookie%22%3A%22<>%22%7D === Idées === Une fois l'idée validée elle est déplacée dans une version à venir. diff --git a/doc/description.txt b/doc/description.txt index a91e228..11e1205 100644 --- a/doc/description.txt +++ b/doc/description.txt @@ -44,7 +44,10 @@ Les n derniers trolls des semaines pr === Le message === Un message répond à un troll et peut répondre à d'autres messages de ce troll. -Un message ne peut pas être éditer, il est possible de lui appondre une ou plusieurs corrections " +++ Correction" +Un message ne peut pas être éditer, il est possible de lui appondre une ou plusieurs corrections " +++ Correction" +un message dont l'entête est de couleur verte signfie : "un message qui me répond" +un message dont l'entête est de couleur orange signifie : "mon message" +Un message dont l'entête est de couleur bleu signifie : "un message auquel je répond" === Admin === diff --git a/doc/graphiques/couleurs entetes messages css1.svg b/doc/graphiques/couleurs entetes messages css1.svg new file mode 100644 index 0000000..a8b1b14 --- /dev/null +++ b/doc/graphiques/couleurs entetes messages css1.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + + référence + réponse + mon message + répondu + + diff --git a/doc/graphiques/maquette_1.svg b/doc/graphiques/maquette_1.svg index f7f1a98..85a06ab 100644 --- a/doc/graphiques/maquette_1.svg +++ b/doc/graphiques/maquette_1.svg @@ -90,11 +90,11 @@ objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="1.7173688" - inkscape:cx="521.17414" - inkscape:cy="922.1821" + inkscape:zoom="9.714905" + inkscape:cx="540.88058" + inkscape:cy="905.07314" inkscape:document-units="px" - inkscape:current-layer="layer2" + inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1280" inkscape:window-height="800" @@ -380,6 +380,30 @@ inkscape:export-filename="/home/gburri/projets/euphorik/doc/graphiques/copier_conv_hover.png" inkscape:export-xdpi="138.64" inkscape:export-ydpi="138.64" /> + + + + * [..] + * } + * l'information reçu est sous la forme : + * { + * "reply" : + * } * @page la page */ function PageEvent(page, util) @@ -1024,9 +1034,11 @@ PageEvent.prototype.stopAttenteCourante = function() /** * Attend un événement lié à la page. * @funSend une fonction renvoyant les données json à envoyer - * @funReceive une fonction qui accepte un paramètre correspondant au données reçues + * @funsReceive est un objet comprenant les fonctions à appeler en fonction du "reply" + * les fonctions acceptent un paramètre correspondant au données reçues. + * exemple : {"new_message" : function(data){ ... }} */ -PageEvent.prototype.waitEvent = function(funSend, funReceive) +PageEvent.prototype.waitEvent = function(funSend, funsReceive) { this.stopAttenteCourante() @@ -1057,15 +1069,16 @@ PageEvent.prototype.waitEvent = function(funSend, funReceive) { ;; dumpObj(data) - funReceive(data) + funsReceive[data["reply"]](data) // rappel de la fonction dans 100 ms - setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funReceive) }, 100) + setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive) }, 100) }, error: function(XMLHttpRequest, textStatus, errorThrown) { - setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funReceive) }, 1000) + ;; console.log("Connexion perdue dans waitEvent") + setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive) }, 1000) } }) } @@ -1073,11 +1086,11 @@ PageEvent.prototype.waitEvent = function(funSend, funReceive) /** * Si un stopAttenteCourante survient un peu n'importe quand il faut imédiatement arreter de boucler. */ -PageEvent.prototype.waitEvent2 = function(funSend, funReceive) +PageEvent.prototype.waitEvent2 = function(funSend, funsReceive) { if (this.stop) return - this.waitEvent(funSend, funReceive) + this.waitEvent(funSend, funsReceive) } /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/js/pageAdmin.js b/js/pageAdmin.js index ddde690..0187118 100644 --- a/js/pageAdmin.js +++ b/js/pageAdmin.js @@ -267,26 +267,16 @@ PageAdmin.prototype.waitEvent = function() this.pageEvent.waitEvent( function() { return { "last_troll" : thisPageAdmin.trolls.dernierTroll }}, - function(data) { - switch (data["reply"]) - { - case "troll_added" : - thisPageAdmin.trolls.ajouterTrollEvent(data) - break - case "troll_modified" : - thisPageAdmin.trolls.modifierTrollEvent(data) - break - case "troll_deleted" : - thisPageAdmin.trolls.supprimerTrollEvent(data) - break - case "banned_ips_refresh" : - thisPageAdmin.majIPs() - break - case "error" : + "troll_added" : function(data){ thisPageAdmin.trolls.ajouterTrollEvent(data) }, + "troll_modified" : function(data){ thisPageAdmin.trolls.modifierTrollEvent }, + "troll_deleted" : function(data){ thisPageAdmin.trolls.supprimerTrollEvent }, + "banned_ips_refresh" : function(data){ thisPageAdmin.majIPs() }, + "error" : + function(data) + { thisTrolls.util.messageDialogue(data["error_message"]) - break - } + } } ) } diff --git a/js/pageMinichat.js b/js/pageMinichat.js index f4faa02..0aa2142 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -380,6 +380,16 @@ Conversation.prototype.enleverMiseEnEvidence = function() $("#conversations .message").removeClass("cache") } +Conversation.prototype.colorerEntetes = function() +{ + +} + +Conversation.prototype.decolorerEntetes = function() +{ + +} + /** * Défini la page courante et s'il l'on se trouve sur la dernière page. * @pageCourante la page courante @@ -918,18 +928,10 @@ Messages.prototype.rafraichirMessages = function(vider) this.pageEvent.waitEvent( function() { return thisMessages.getJSONrafraichirMessages() }, - function(data) - { - if (vider) - { - thisMessages.viderMessages() - vider = false - } - - // en fonction du message - switch(data["reply"]) - { - case "new_troll" : + { + "new_troll" : + function(data) + { thisMessages.trollIdCourant = data["troll_id"] $("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"])).unbind("click").click( function() @@ -939,9 +941,15 @@ Messages.prototype.rafraichirMessages = function(vider) ) $("#trollCourant .troll a[@rel*=lightbox]").lightBox() - break - - case "new_messages" : + }, + "new_messages" : + function(data) + { + if (vider) + { + thisMessages.viderMessages() + vider = false + } // ajoute les messages reçus à leur conversation respective for (var numConv = 0; numConv < data["conversations"].length; numConv++) { @@ -951,8 +959,7 @@ Messages.prototype.rafraichirMessages = function(vider) thisMessages.client.supprimerConversation(numConv - 1) } } - break - } + } } ) } diff --git a/modules/erl/euphorik_protocole.erl b/modules/erl/euphorik_protocole.erl index ae79d84..72a9157 100755 --- a/modules/erl/euphorik_protocole.erl +++ b/modules/erl/euphorik_protocole.erl @@ -318,7 +318,7 @@ wait_event_bd_page_chat() -> % Après 60 minutes de connexion, le client doit donc reétablir une connexion after 1000 * 60 * 60 -> timeout - end. + end. % Attent un événement concernant la page admin -- 2.43.0