MOD avancement dans la Grande Restructuration
[euphorik.git] / js / pageAdmin.js
index faf5f8c..ab91eec 100644 (file)
@@ -1,20 +1,22 @@
-// 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
+// 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)
 {
@@ -24,16 +26,21 @@ function PageAdmin(client, formateur, util)
    this.formateur = formateur
    this.util = util
    
-   this.pageEvent = new PageEvent("admin", this.util)
+   this.pageEvent = new euphorik.PageEvent("admin", this.util)
    
+   // le timer qui rappelle periodiquement le rafraichissement des IP bannies
    this.timeoutIDmajIPs = null
 }
 
+/**
+  * Interface des pages.
+  */
 PageAdmin.prototype.contenu = function()
 {
-   return '<h1>Trolls</h1>\
+   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 choisit au hasard parmis les trolls proposés et devient le troll de la semaine.</p>\
+   <p>Chaque semaine un troll est choisi au hasard parmis les trolls proposés et devient le troll de la semaine.</p>\
    <form action="" id="nouveauTroll">\
       <p>\
          <input class="troll" name="troll" type="text" maxlength="500" value=""></input>\
@@ -45,13 +52,18 @@ PageAdmin.prototype.contenu = function()
    <div id="ips"></div>'
 }
 
+/**
+  * 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.waitEvent()
    
    this.majIPs()
@@ -66,11 +78,21 @@ PageAdmin.prototype.charger = function()
    )
 }
 
+/**
+  * Interface des pages.
+  */
 PageAdmin.prototype.decharger = function()
 {
    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".
+  */
 PageAdmin.prototype.posterTroll = function()
 {
    var thisPageAdmin = this
@@ -86,12 +108,11 @@ PageAdmin.prototype.posterTroll = function()
 
    var dataToSend = 
       {
-         "action" : "put_troll", 
+         "header" : { "action" : "put_troll", "version" : euphorik.conf.versionProtocole },
          "cookie" : this.client.cookie,
          "content" : content
       }
 
-   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -100,9 +121,7 @@ PageAdmin.prototype.posterTroll = function()
          data: this.util.jsonVersAction(dataToSend),
          success:
             function(data)
-            {
-               ;; dumpObj(data)
-               
+            {               
                if (data["reply"] == "ok")
                {
                   $("#page form#nouveauTroll input.troll").val("")
@@ -128,11 +147,10 @@ PageAdmin.prototype.majIPs = function()
 
    var dataToSend = 
       {
-         "action" : "list_banned_ips", 
+         "header" : { "action" : "list_banned_ips", "version" : euphorik.conf.versionProtocole },
          "cookie" : this.client.cookie
       }
 
-   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -141,9 +159,7 @@ PageAdmin.prototype.majIPs = function()
          data: this.util.jsonVersAction(dataToSend),
          success:
             function(data)
-            {
-               ;; dumpObj(data)
-               
+            {               
                if (data["reply"] == "list_banned_ips")
                {
                   var XHTML = ""
@@ -176,7 +192,7 @@ PageAdmin.prototype.majIPs = function()
                         $(".deban", this).click(
                            function()
                            {
-                              thisPageAdmin.util.messageDialogue("Êtes-vous sur de vouloir débannir l'IP ''" + ip + "'' ?", messageType.question,
+                              thisPageAdmin.util.messageDialogue("Êtes-vous sur de vouloir débannir l'IP ''" + ip + "'' ?", euphorik.Util.messageType.question,
                                  {"Oui" : function()
                                     {
                                        thisPageAdmin.deban(ip)
@@ -195,25 +211,27 @@ PageAdmin.prototype.majIPs = function()
                }
                
                // 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
+               // le problème est le rafraichissement des temps restant de bannissement qui doit être fait du coté client
                thisPageAdmin.timeoutIDmajIPs = setTimeout(function(){ thisPageAdmin.majIPs() }, 60 * 1000)
             }
       }
    )
 }
 
+/**
+  * Débannie une ip donnée.
+  */
 PageAdmin.prototype.deban = function(ip)
 {
    var thisPageAdmin = this
 
    var dataToSend = 
       {
-         "action" : "unban", 
+         "header" : { "action" : "unban", "version" : euphorik.conf.versionProtocole },
          "cookie" : this.client.cookie,
          "ip" : ip
       }
 
-   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -223,55 +241,41 @@ PageAdmin.prototype.deban = function(ip)
          success:
             function(data)
             {
-               ;; dumpObj(data)
-               switch(data["reply"])
-               {
-                  case "error" :
-                     thisPageAdmin.util.messageDialogue(data["error_message"])
-                     break
-                  case "ok" :
-                     // obsolète : plus besoin
-                     /* thisPageAdmin.majIPs() */ 
-                     break 
-               }
+               if(data["reply"] == "error")
+                  thisPageAdmin.util.messageDialogue(data["error_message"])
             }
       }
    )
 }
 
+/**
+  * Attente d'événement de la part du serveur.
+  */
 PageAdmin.prototype.waitEvent = function()
 {
    var thisPageAdmin = this
          
    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(data) },
+         "troll_deleted" : function(data){ thisPageAdmin.trolls.supprimerTrollEvent(data) },
+         "banned_ips_refresh" : function(data){ thisPageAdmin.majIPs() },
+         "error" :
+            function(data)
+            {
                thisTrolls.util.messageDialogue(data["error_message"])
-               break
-         }
+            }
       }
    )
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-
+/**
+  * Représente un troll, pas grand chose finalement.
+  */
 function Troll(content, author)
 {
    this.content = content
@@ -331,7 +335,7 @@ Trolls.prototype.ajouterTrollEvent = function(data)
             {
                thisTrolls.util.messageDialogue(
                   "Êtes-vous sur de vouloir supprimer le troll \"" + thisTrolls.trolls[id].content + "\" ?",
-                  messageType.question,
+                  euphorik.Util.messageType.question,
                   {
                      "oui" : function()
                         {
@@ -396,13 +400,12 @@ Trolls.prototype.modifier = function(id, content)
    
    var dataToSend =
       {
-         "action" : "mod_troll",
+         "header" : { "action" : "mod_troll", "version" : euphorik.conf.versionProtocole },
          "cookie" : this.client.cookie,
          "troll_id" : id,
          "content" : content
       }
 
-   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -412,7 +415,6 @@ Trolls.prototype.modifier = function(id, content)
          success:
             function(data)
             {
-               ;; dumpObj(data)
                if (data["reply"] == "error")
                {
                   thisTrolls.util.messageDialogue(data["error_message"])
@@ -431,12 +433,11 @@ Trolls.prototype.supprimer = function(id)
 
    var dataToSend =
       {
-         "action" : "del_troll",
+         "header" : { "action" : "del_troll", "version" : euphorik.conf.versionProtocole },
          "cookie" : this.client.cookie,
          "troll_id" : id
       }
 
-   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -446,7 +447,6 @@ Trolls.prototype.supprimer = function(id)
          success:
             function(data)
             {
-               ;; dumpObj(data)
                if (data["reply"] == "error")
                {
                   thisTrolls.util.messageDialogue(data["error_message"])