From 96ba3a0f8ce151653f0e994955e44eafa995beca Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Thu, 5 Jun 2008 21:43:26 +0000 Subject: [PATCH] =?utf8?q?MOD=20am=C3=A9lioration=20dans=20les=20couleurs?= =?utf8?q?=20des=20ent=C3=AAtes=20des=20messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- css/1/pageMinichat.css | 4 +- doc/TODO.txt | 4 +- .../couleurs entetes messages css1.svg | 8 +- js/pageAdmin.js | 92 +++++++++---------- js/pageMinichat.js | 60 ++++++++++-- 5 files changed, 104 insertions(+), 64 deletions(-) diff --git a/css/1/pageMinichat.css b/css/1/pageMinichat.css index 04d6f54..2cc07be 100755 --- a/css/1/pageMinichat.css +++ b/css/1/pageMinichat.css @@ -182,7 +182,7 @@ line-height: 18px; } #page.minichat #conversations div.message.reponse .entete { - background-color: #31732f + background-color: #bf2911 } #page.minichat #conversations div.message.reponse .delimitationEntete, #page.minichat #conversations div.message.reponse .repondA { @@ -196,7 +196,7 @@ background-image: url(../../img/css1/fleche_repondu.png); } #page.minichat #conversations div.message.proprietaire .entete { - background-color: #bf2911 + background-color: #31732f } #page.minichat #conversations div.message.proprietaire .delimitationEntete, #page.minichat #conversations div.message.proprietaire .repondA { diff --git a/doc/TODO.txt b/doc/TODO.txt index 6babe5d..a3cfc52 100755 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -1,8 +1,7 @@ == TODO == === v1.0.1 === -* Pouvoir afficher les utilisateurs (print_users(admin)) qui sont admin -* Enlever le petit carré mis en couleur et mettre le pseudo + date en couleur à la place +* Pouvoir afficher les utilisateurs (print_users(admin)) qui sont admin * Mettre dans la FAQ la signification des couleurs associées aux messages. * Ne pas pouvoir poster avec "" === v1.1 === @@ -190,6 +189,7 @@ [ok] Limiter la mise en évidence de la conversation lorsque le curseur se trouve sur les pseudos [ok] Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera) [ok] Afficher l'ip dans le print_users(). +[ok] Enlever le petit carré mis en couleur et mettre le pseudo + date en couleur à la place === Bugs === 1 : Critique diff --git a/doc/graphiques/couleurs entetes messages css1.svg b/doc/graphiques/couleurs entetes messages css1.svg index a8b1b14..98d261e 100644 --- a/doc/graphiques/couleurs entetes messages css1.svg +++ b/doc/graphiques/couleurs entetes messages css1.svg @@ -65,8 +65,8 @@ id="rect3153" width="100.18613" height="75.186127" - x="116.3355" - y="383.69766" /> + x="115.62122" + y="547.2691" /> + x="117.76408" + y="383.69766" /> . -// +// coding: utf-8 +// Copyright 2008 Grégory Burri +// +// This file is part of Euphorik. +// +// Euphorik is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Euphorik is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Euphorik. If not, see . +// // La page d'administation, ne peut être accédée que par les ekMaster (admins) function PageAdmin(client, formateur, util) @@ -27,17 +27,17 @@ function PageAdmin(client, formateur, util) this.util = util this.pageEvent = new PageEvent("admin", this.util) - + // le timer qui rappelle periodiquement le rafraichissement des IP bannies this.timeoutIDmajIPs = null } - -/** - * Interface des pages. + +/** + * Interface des pages. */ PageAdmin.prototype.contenu = function() { - return '\ + return '\

Trolls

\

Un troll est un sujet à débat, en général une question, affiché sur la page principale.

\

Chaque semaine un troll est choisi au hasard parmis les trolls proposés et devient le troll de la semaine.

\ @@ -51,18 +51,18 @@ PageAdmin.prototype.contenu = function()

IPs bannies

\
' } - -/** - * Interface des pages. + +/** + * Interface des pages. */ PageAdmin.prototype.charger = function() { $("#page form#nouveauTroll").submit(function(){return false}) var thisPage = this - + // la liste des trolls proposés par les ekMasters - this.trolls = new Trolls(this.client, this.util, this.formateur) + this.trolls = new Trolls(this.client, this.util, this.formateur) this.waitEvent() @@ -77,21 +77,21 @@ PageAdmin.prototype.charger = function() } ) } - -/** - * Interface des pages. + +/** + * Interface des pages. */ PageAdmin.prototype.decharger = function() { - this.pageEvent.stopAttenteCourante() - - // supprime le rafraichissement période des ips - if (this.timeoutIDmajIPs) + this.pageEvent.stopAttenteCourante() + + // supprime le rafraichissement période des ips + if (this.timeoutIDmajIPs) clearTimeout(this.timeoutIDmajIPs) } - -/** - * Post un troll, le contenu est lu à partir de "input.troll". + +/** + * Post un troll, le contenu est lu à partir de "input.troll". */ PageAdmin.prototype.posterTroll = function() { @@ -223,9 +223,9 @@ PageAdmin.prototype.majIPs = function() } ) } - -/** - * Débannie une ip donnée. + +/** + * Débannie une ip donnée. */ PageAdmin.prototype.deban = function(ip) { @@ -257,9 +257,9 @@ PageAdmin.prototype.deban = function(ip) } ) } - -/** - * Attente d'événement de la part du serveur. + +/** + * Attente d'événement de la part du serveur. */ PageAdmin.prototype.waitEvent = function() { @@ -283,8 +283,8 @@ PageAdmin.prototype.waitEvent = function() /////////////////////////////////////////////////////////////////////////////////////////////////// -/** - * Représente un troll, pas grand chose finalement. +/** + * Représente un troll, pas grand chose finalement. */ function Troll(content, author) { diff --git a/js/pageMinichat.js b/js/pageMinichat.js index 0aa2142..03024bc 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -301,20 +301,24 @@ Message.prototype.setRepondA = function(repondAJSON) /** * Renvoie les messages faisant partie d'une conversation. * @param messages l'ensemble des messages de la conversation - * @return les id des messages qui ont été mis en evidence sous la forme d'un hash (object) {id => bool} + * @return les id des messages qui ont été mis en evidence sous la forme + * d'un hash (object) {id => 0 | 1 | 2 | 3}. 1 : proprietaire, 2 : reponse directe, 3 : message repondu */ Message.prototype.getConversation = function(messages) { + var thisMessage = this + // les messages faisant partie de la conversation var messagesEnEvidence = {} - messagesEnEvidence[this.id] = true + messagesEnEvidence[this.id] = 1 // recherche les réponses (O(n)) for (var i = 0; i < messages.messages.length; i++) if (messages.messages[i].repondA.hasOwnProperty(this.id)) - messagesEnEvidence[messages.messages[i].id] = true + messagesEnEvidence[messages.messages[i].id] = messages.messages[i].auteurId == this.auteurId ? 1 : 2 + var premierNiveau = true var f = function(tabIds) { for(var id in tabIds) @@ -322,7 +326,8 @@ Message.prototype.getConversation = function(messages) var message = messages.messagesParId[id] if (message != undefined) { - messagesEnEvidence[id] = true + messagesEnEvidence[id] = message.auteurId == thisMessage.auteurId ? 1 : ( premierNiveau ? 3 : 0 ) + premierNiveau = false f (message.repondA) } } @@ -382,12 +387,29 @@ Conversation.prototype.enleverMiseEnEvidence = function() Conversation.prototype.colorerEntetes = function() { - + var messagesReponse = "" + var messagesRepondu = "" + var messagesProprietaire = "" + for (var i = 0; i < this.messages.length; i++) + { + if (this.messages[i].appartientAuClient) + messagesProprietaire += "#mess" + this.messages[i].id.toString(36) + "," + else if (this.messages[i].estUneReponse) + messagesReponse += "#mess" + this.messages[i].id.toString(36) + "," + else if (this.messages[i].clientARepondu) + messagesRepondu += "#mess" + this.messages[i].id.toString(36) + "," + } + $(messagesReponse).addClass("reponse") + $(messagesRepondu).addClass("repondu") + $(messagesProprietaire).addClass("proprietaire") } Conversation.prototype.decolorerEntetes = function() { - + $("#" + this.getId() + " .message") + .removeClass("reponse") + .removeClass("repondu") + .removeClass("proprietaire") } /** @@ -629,13 +651,16 @@ Conversation.prototype.flush = function(funClickOuvrirConv) // mise en évidence de la conversation $(".entete", this).hover( function() - { + { + thisConversation.decolorerEntetes() thisConversation.afficherConversation(idMess) }, // quand on sort de l'entête du message la mise en évidence est enlevée function() { - thisConversation.enleverMiseEnEvidence() + thisConversation.enleverMiseEnEvidence() + thisConversation.decolorerEntetes() + thisConversation.colorerEntetes() } ) } @@ -668,10 +693,25 @@ Conversation.prototype.afficherConversation = function(id) function() { var jq = $(this) - if (!mess.hasOwnProperty(parseInt(jq.attr("id").substr(4), 36))) + var statut = mess[parseInt(jq.attr("id").substr(4), 36)] + if (statut == undefined) jq.addClass("cache") - else + else + { jq.removeClass("cache") + switch (statut) + { + case 1 : + jq.addClass("proprietaire") + break; + case 2 : + jq.addClass("reponse") + break; + case 3 : + jq.addClass("repondu") + break; + } + } } ) } -- 2.43.0