ADD avancement sur la page admin : listage des ips bannis (presque fini)
authorGreg Burri <greg.burri@gmail.com>
Sun, 18 May 2008 21:48:43 +0000 (21:48 +0000)
committerGreg Burri <greg.burri@gmail.com>
Sun, 18 May 2008 21:48:43 +0000 (21:48 +0000)
css/1/euphorik.css
css/1/pageAdmin.css
css/1/pageMinichat.css
css/1/pageProfileRegister.css
doc/protocole3.txt
index.html
js/euphorik.js
js/pageAdmin.js
modules/erl/euphorik_protocole.erl

index e73c696..81f6a77 100755 (executable)
@@ -28,16 +28,19 @@ body {
 }
 
 #menu {
-       position: absolute;
-       z-index: 10;
-       top: 2px;
+       /*
        left: 300px;
+       top: 2px;*/
+       padding-left: 300px;
+       /*position: absolute;*/
+       height: 25px;
        font-size: 11px;
        background-color: #000000;
 }
-#menu div {    
+#menu div {
        cursor: pointer;        
-       display: inline;
+       z-index: 20;
+       float: left;
        padding: 2px;
        margin-left: 2px;
        background-color: #4f5519;
@@ -61,7 +64,7 @@ body {
    position: relative;
    font-size: 12px;
    background-color: #000000;
-   padding: 30px 10px 15px 10px;
+   padding: 10px 10px 15px 10px;
 }
 
 #page > h1 {
index 5ab8031..a945b7c 100644 (file)
        width: 80%
 }
 
-#page.admin div.troll {
+#page.admin div.troll,
+#page.admin .ban {
        margin-top: 10px;
-       padding: 2px;
+       padding: 2px 10px 2px 10px;
        border: 1px solid;
        border-color: #253f18;
        background-color: #0c2003;
 #page.admin div.troll .editTroll,
 #page.admin div.troll .delTroll,
 #page.admin div.troll .modifier,
-#page.admin div.troll .annuler
+#page.admin div.troll .annuler,
+#page.admin div.ban .deban
 {
+       font-size: 10px;
        margin-left: 10px;
-       font-size: 9px;
-       border: 1px solid;
        cursor: pointer;
+       padding-right: 5px;
+       padding-left: 5px;
+       background-color: #164200; 
+       border: #2d8800 1px solid;
+       color: #EEEEEE; 
 }
 
-#page.admin #ips .ip {
-       margin-left : 10px;
-}
 
-#page.admin #ips .temps {
-       margin-left : 10px;
+#page.admin #ips .ip {
        margin-right : 10px;
 }
 
+#page.admin #ips .temps,
 #page.admin #ips .pseudo {
-       margin-left : 4px;
-       margin-right : 4px;
+       margin-left : 10px;
+       margin-right : 10px;
 }
 
 #page.admin #ips .login {
index 35c7cde..27a0ef8 100755 (executable)
@@ -1,5 +1,6 @@
 #page.minichat {
-   padding: 25px 0px 15px 0px;
+   padding-right: 0px;
+   padding-left: 0px
 }
 
 #page.minichat img {
index 1b8b70a..5c262a0 100755 (executable)
@@ -2,4 +2,5 @@
 
 #page.register,
 #page.profile {
+   padding-top: 20px
 }
index f7fd6a5..faa7596 100644 (file)
@@ -232,6 +232,12 @@ s -> c
       "reply" : "troll_deleted",
       "troll_id" : 2
    }
+ou
+indique de mettre à jour la liste d'ips
+s -> c
+   {
+      "reply" : "maj_banned_ips"
+   }
 \r
 \r
 === Envoie d'un troll ===\r
index 5b53b6a..54132c1 100755 (executable)
@@ -24,7 +24,7 @@
          <div id="menu">
             <div class="minichat">chat</div><div class="admin" style="display:none">admin</div><div class="profile"></div><div class="register">register</div><div class="logout">logout</div><div class="about">about</div>\r
          </div>
-         <form action="">
+         <!-- form action=""  id="formMenuCss">
             <p>
                <select id="menuCss">
                   <option value="1" selected="selected">Dark</option>
@@ -32,7 +32,7 @@
                   <option value="3">Classic</option>
                </select>
             </p>
-         </form>
+         </form --> 
          <div id="page"></div>
          <div id="footer"><a href="http://yaws.hyber.org"><img src="img/powered-by-yaws.gif" alt="powered by Yaws" /></a></div>
       </div>
index c9291a2..a19d33e 100755 (executable)
@@ -756,9 +756,10 @@ Client.prototype.flush = function(async)
 Client.prototype.majMenu = function()
 {
    // TODO : à virer : ne plus changer de style de display ... spa beau .. ou trouver une autre méthode
-   var displayType = this.css == "css/3/euphorik.css" ? "block" : "inline" //this.client
+   // var displayType = this.css == "css/3/euphorik.css" ? "block" : "inline" //this.client
+   displayType = "block"
 
-   $("#menu .admin").css("display", this.ekMaster ? "inline" : "none")
+   $("#menu .admin").css("display", this.ekMaster ? displayType : "none")
 
    // met à jour le menu   
    if (this.statut == statutType.auth_registered)
index d7d735a..9091d6d 100644 (file)
@@ -7,6 +7,8 @@ function PageAdmin(client, formateur, util)
    this.client = client
    this.formateur = formateur
    this.util = util
+   
+   this.timeoutIDmajIPs = null
 }
 
 PageAdmin.prototype.contenu = function()
@@ -102,6 +104,9 @@ PageAdmin.prototype.posterTroll = function()
   */
 PageAdmin.prototype.majIPs = function()
 {
+   if (this.timeoutIDmajIPs)
+      clearTimeout(this.timeoutIDmajIPs)
+
    var thisPageAdmin = this
 
    var dataToSend = 
@@ -128,10 +133,10 @@ PageAdmin.prototype.majIPs = function()
                   for(var i = 0; i < data["list"].length; i++)
                   {
                      var ip = data["list"][i]
-                     XHTML += '<span class="ip">' + ip["ip"] + '</span>' +
+                     XHTML += '<div class="ban"><span class="ip">' + ip["ip"] + '</span>|' +
                         '<span class="temps">' +
                         ip["remaining_time"] +
-                        '</span>['
+                        '</span>|'
                      for(var j = 0; j < ip["users"].length; j++)
                      {
                         var user = ip["users"][j]
@@ -139,14 +144,78 @@ PageAdmin.prototype.majIPs = function()
                            '<span class="pseudo">' + thisPageAdmin.formateur.traitementComplet(user["nick"]) + '</span>' +
                            (user["login"] == "" ? "" : '<span class="login">(' + thisPageAdmin.formateur.traitementComplet(user["login"]) + ')</span>')
                      }
-                     XHTML += ']'
+                     XHTML += '<span class="deban">débannir</span></div>'
                   }
+                  
+                  if (data["list"].length == 0)
+                     XHTML += '<p>Aucune IP bannie</p>'
+                     
                   $("#ips").html(XHTML)
+                  
+                  $(".ban").each(
+                     function()
+                     {
+                        var ip = $(".ip").html()
+                        $(".deban", this).click(
+                           function()
+                           {
+                              thisPageAdmin.util.messageDialogue("Êtes-vous sur de vouloir débannir l'IP " + ip + " ?", messageType.question,
+                                 {"Oui" : function()
+                                    {
+                                       thisPageAdmin.deban(ip)
+                                    },
+                                  "Non" : function(){}
+                                 }
+                              )
+                           }
+                        )
+                     }
+                  )
                }
                else if (data["reply"] == "error")
                {
                   thisPageAdmin.util.messageDialogue(data["error_message"])
                }
+               
+               // rafraichissement toutes les minutes (je sais c'est mal)
+               // le problème est le rafraichissement des temps restant de bannissement qui doit êtrew fait du coté client
+               thisPageAdmin.timeoutIDmajIPs = setTimeout(function(){ thisPageAdmin.majIPs() }, 60 * 1000)
+            }
+      }
+   )
+}
+
+PageAdmin.prototype.deban = function(ip)
+{
+   var thisPageAdmin = this
+
+   var dataToSend = 
+      {
+         "action" : "unban", 
+         "cookie" : this.client.cookie,
+         "ip" : ip
+      }
+
+   ;;; dumpObj(dataToSend)
+   jQuery.ajax(
+      {
+         type: "POST",
+         url: "request",
+         dataType: "json",
+         data: this.util.jsonVersAction(dataToSend),
+         success:
+            function(data)
+            {
+               ;;; dumpObj(data)
+               switch(data["reply"])
+               {
+                  case "error" :
+                     thisPageAdmin.util.messageDialogue(data["error_message"])
+                     break
+                  case "ok" :
+                     thisPageAdmin.majIPs()
+                     break 
+               }
             }
       }
    )
@@ -342,6 +411,10 @@ Trolls.prototype.rafraichirTrolls = function()
             case "troll_deleted" :
                $("#trolls #troll"+data["troll_id"]).remove()
                break
+            case "majIPs" :
+               // TODO : mettre l'attente au niveau de la page et pas au niveau des trolls
+               // thisPageAdmin.majIPs()
+               break
             case "error" :
                thisTrolls.util.messageDialogue(data["error_message"])
                break
index 8313484..cfb9df4 100755 (executable)
@@ -466,7 +466,7 @@ unban_ip(
    case euphorik_bd:user_by_cookie(Cookie) of
       {ok, #user{ek_master = true}} ->
          euphorik_bd:deban(unserialize_ip(IP)),
-         json_reponse_ok;
+         json_reponse_ok();
       _ ->
          erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")
    end.