MOD amélioration dans les couleurs des entêtes des messages
authorGreg Burri <greg.burri@gmail.com>
Thu, 5 Jun 2008 21:43:26 +0000 (21:43 +0000)
committerGreg Burri <greg.burri@gmail.com>
Thu, 5 Jun 2008 21:43:26 +0000 (21:43 +0000)
css/1/pageMinichat.css
doc/TODO.txt
doc/graphiques/couleurs entetes messages css1.svg
js/pageAdmin.js
js/pageMinichat.js

index 04d6f54..2cc07be 100755 (executable)
        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 {
        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 {
index 6babe5d..a3cfc52 100755 (executable)
@@ -1,8 +1,7 @@
 == TODO ==\r
 \r
 === 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\r
+* Pouvoir afficher les utilisateurs (print_users(admin)) qui sont admin\r
 * Mettre dans la FAQ la signification des couleurs associées aux messages.\r
 * Ne pas pouvoir poster avec "<nick>"\r
 === v1.1 ===\r
 [ok] Limiter la mise en évidence de la conversation lorsque le curseur se trouve sur les pseudos\r
 [ok] Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera)\r
 [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
index a8b1b14..98d261e 100644 (file)
@@ -65,8 +65,8 @@
        id="rect3153"
        width="100.18613"
        height="75.186127"
-       x="116.3355"
-       y="383.69766" />
+       x="115.62122"
+       y="547.2691" />
     <rect
        style="opacity:1;fill:#841919;fill-opacity:1;fill-rule:evenodd;stroke:#0d00a8;stroke-width:0.34887081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="rect3155"
@@ -79,8 +79,8 @@
        id="rect3157"
        width="100.18613"
        height="75.186127"
-       x="116.3355"
-       y="547.2691" />
+       x="117.76408"
+       y="383.69766" />
     <rect
        style="opacity:1;fill:#84196c;fill-opacity:1;fill-rule:evenodd;stroke:#0d00a8;stroke-width:0.34887081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="rect3159"
index 0187118..db50c4b 100644 (file)
@@ -1,21 +1,21 @@
-// coding: utf-8\r
-// Copyright 2008 Grégory Burri\r
-//\r
-// This file is part of Euphorik.\r
-//\r
-// Euphorik is free software: you can redistribute it and/or modify\r
-// it under the terms of the GNU General Public License as published by\r
-// the Free Software Foundation, either version 3 of the License, or\r
-// (at your option) any later version.\r
-//\r
-// Euphorik is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-// GNU General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU General Public License\r
-// along with Euphorik.  If not, see <http://www.gnu.org/licenses/>.\r
-// \r
+// 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 <http://www.gnu.org/licenses/>.
+// 
 // 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)
-   \r
+   
    // le timer qui rappelle periodiquement le rafraichissement des IP bannies
    this.timeoutIDmajIPs = null
 }
-\r
-/**\r
-  * Interface des pages.\r
+
+/**
+  * Interface des pages.
   */
 PageAdmin.prototype.contenu = function()
 {
-   return '\\r
+   return '\
    <h1>Trolls</h1>\
    <p>Un troll est un sujet à débat, en général une question, affiché sur la page principale.</p>\
    <p>Chaque semaine un troll est choisi au hasard parmis les trolls proposés et devient le troll de la semaine.</p>\
@@ -51,18 +51,18 @@ PageAdmin.prototype.contenu = function()
    <h1>IPs bannies</h1>\
    <div id="ips"></div>'
 }
-\r
-/**\r
-  * Interface des pages.\r
+
+/**
+  * Interface des pages.
   */
 PageAdmin.prototype.charger = function()
 {      
    $("#page form#nouveauTroll").submit(function(){return false})
       
    var thisPage = this
-   \r
+   
    // la liste des trolls proposés par les ekMasters
-   this.trolls = new Trolls(this.client, this.util, this.formateur)\r
+   this.trolls = new Trolls(this.client, this.util, this.formateur)
    
    this.waitEvent()
    
@@ -77,21 +77,21 @@ PageAdmin.prototype.charger = function()
       }
    )
 }
-\r
-/**\r
-  * Interface des pages.\r
+
+/**
+  * Interface des pages.
   */
 PageAdmin.prototype.decharger = function()
 {
-   this.pageEvent.stopAttenteCourante()\r
-   \r
-   // supprime le rafraichissement période des ips\r
-   if (this.timeoutIDmajIPs)\r
+   this.pageEvent.stopAttenteCourante()
+   
+   // supprime le rafraichissement période des ips
+   if (this.timeoutIDmajIPs)
       clearTimeout(this.timeoutIDmajIPs)
 }
-\r
-/**\r
-  * Post un troll, le contenu est lu à partir de "input.troll".\r
+
+/**
+  * Post un troll, le contenu est lu à partir de "input.troll".
   */
 PageAdmin.prototype.posterTroll = function()
 {
@@ -223,9 +223,9 @@ PageAdmin.prototype.majIPs = function()
       }
    )
 }
-\r
-/**\r
-  * Débannie une ip donnée.\r
+
+/**
+  * Débannie une ip donnée.
   */
 PageAdmin.prototype.deban = function(ip)
 {
@@ -257,9 +257,9 @@ PageAdmin.prototype.deban = function(ip)
       }
    )
 }
-\r
-/**\r
-  * Attente d'événement de la part du serveur.\r
+
+/**
+  * Attente d'événement de la part du serveur.
   */
 PageAdmin.prototype.waitEvent = function()
 {
@@ -283,8 +283,8 @@ PageAdmin.prototype.waitEvent = function()
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-/**\r
-  * Représente un troll, pas grand chose finalement.\r
+/**
+  * Représente un troll, pas grand chose finalement.
   */
 function Troll(content, author)
 {
index 0aa2142..03024bc 100755 (executable)
@@ -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(\r
             function()\r
-            {\r
+            {
+               thisConversation.decolorerEntetes()\r
                thisConversation.afficherConversation(idMess)\r
             },
             // 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;
+            }
+         }
       }
    )
 }