REPORT de la branche 1.0
[euphorik.git] / js / euphorik.js
index ca84a02..825e4c3 100755 (executable)
@@ -1,4 +1,4 @@
-// coding: utf-8\r
+// coding: utf-8\r
 // Copyright 2008 Grégory Burri\r
 //\r
 // This file is part of Euphorik.\r
 // Copyright 2008 Grégory Burri\r
 //\r
 // This file is part of Euphorik.\r
@@ -31,7 +31,9 @@
 var conf = {\r
    nbMessageAffiche : 40, // (par page)
    pseudoDefaut : "<nick>",\r
 var conf = {\r
    nbMessageAffiche : 40, // (par page)
    pseudoDefaut : "<nick>",\r
-   tempsAffichageMessageDialogue : 4000, // en ms\r
+   tempsAffichageMessageDialogue : 4000, // en ms
+   tempsKick : 15, // en minute
+   tempsBan : 60 * 24 * 3, // en minutes (3jours)\r
    smiles : {   \r
       "smile" : [/:\)/g, /:-\)/g],  \r
       "bigsmile" : [/:D/g, /:-D/g],\r
    smiles : {   \r
       "smile" : [/:\)/g, /:-\)/g],  \r
       "bigsmile" : [/:D/g, /:-D/g],\r
@@ -250,19 +252,16 @@ Util.prototype.replaceSelection = function(input, replaceString) {
          this.setCaretToPos(input, selectionStart + replaceString.length)\r
    }\r
    else if (document.selection)
          this.setCaretToPos(input, selectionStart + replaceString.length)\r
    }\r
    else if (document.selection)
-   {\r
-      var range = document.selection.createRange();\r
+   {
+      input.focus()\r
+      var range = document.selection.createRange()\r
       if (range.parentElement() == input)
       {\r
          var isCollapsed = range.text == ''\r
          range.text = replaceString\r
          if (!isCollapsed)
       if (range.parentElement() == input)
       {\r
          var isCollapsed = range.text == ''\r
          range.text = replaceString\r
          if (!isCollapsed)
-         {
-            // there has been a selection\r
-            // it appears range.select() should select the newly \r
-            // inserted text but that fails with IE\r
+         {\r
             range.moveStart('character', -replaceString.length);\r
             range.moveStart('character', -replaceString.length);\r
-            range.select();\r
          }\r
       }\r
    }\r
          }\r
       }\r
    }\r
@@ -299,10 +298,21 @@ function Pages()
    this.pages = {}
 }
 
    this.pages = {}
 }
 
+/**
+  * Accepte soit un objet soit un string.
+  * un string correspond au nom de la page, par exemple : "page" -> "page.html"
+  */
 Pages.prototype.ajouterPage = function(page)
 {
 Pages.prototype.ajouterPage = function(page)
 {
-   page.pages = this // la magie des langages dynamiques : le foutoire
-   this.pages[page.nom] = page
+   if (typeof page == "string")
+   {
+      this.pages[page] = page
+   }
+   else
+   {
+      page.pages = this // la magie des langages dynamiques : le foutoire
+      this.pages[page.nom] = page
+   }
 }
 
 Pages.prototype.afficherPage = function(nomPage, forcerChargement)
 }
 
 Pages.prototype.afficherPage = function(nomPage, forcerChargement)
@@ -319,7 +329,12 @@ Pages.prototype.afficherPage = function(nomPage, forcerChargement)
    $("#menu li." + nomPage).addClass("courante")
       
    this.pageCourante = page
    $("#menu li." + nomPage).addClass("courante")
       
    this.pageCourante = page
-   $("#page").html(this.pageCourante.contenu()).removeClass().addClass(this.pageCourante.nom)
+   var contenu = ""
+   if (typeof page == "string")
+      $.ajax({async: false, url: "pages/" + page + ".html", success : function(page) { contenu += page }})
+   else
+      contenu += this.pageCourante.contenu()
+   $("#page").html(contenu).removeClass().addClass(this.pageCourante.nom)
    
    if (this.pageCourante.charger)
       this.pageCourante.charger()
    
    if (this.pageCourante.charger)
       this.pageCourante.charger()
@@ -700,14 +715,16 @@ Client.prototype.delCookie = function()
    document.cookie = "cookie=; max-age=0"\r
 }
 
    document.cookie = "cookie=; max-age=0"\r
 }
 
-Client.prototype.setCookie = function(cookie)
+Client.prototype.setCookie = function()
 {
 {
-   if (this.cookie == null)
+   if (this.cookie == null || this.cookie == undefined)
       return
       
       return
       
-   document.cookie =
-      "cookie="+this.cookie+
-      "; max-age="  + (60 * 60 * 24 * 365)
+   // ne fonctionne pas sous IE....
+   /*document.cookie = "cookie=" + this.cookie + "; max-age="  + (60 * 60 * 24 * 365) */
+   
+   document.cookie = 
+      "cookie="+this.cookie+"; expires=" + new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365).toUTCString()
 }
 
 Client.prototype.authentifie = function()
 }
 
 Client.prototype.authentifie = function()
@@ -771,7 +788,7 @@ Client.prototype.enregistrement = function(login, password)
 
 Client.prototype.connexion = function(messageJson)
 {
 
 Client.prototype.connexion = function(messageJson)
 {
-   ;;; dumpObj(messageJson)
+   ;; dumpObj(messageJson)
    thisClient = this
    jQuery.ajax(
       {
    thisClient = this
    jQuery.ajax(
       {
@@ -783,7 +800,7 @@ Client.prototype.connexion = function(messageJson)
          success:
             function(data)
             {
          success:
             function(data)
             {
-               ;;; dumpObj(data)
+               ;; dumpObj(data)
                if (data["reply"] == "error")
                   thisClient.util.messageDialogue(data["error_message"])
                else
                if (data["reply"] == "error")
                   thisClient.util.messageDialogue(data["error_message"])
                else
@@ -850,7 +867,7 @@ Client.prototype.flush = function(async)
    var thisClient = this
    var ok = true
    
    var thisClient = this
    var ok = true
    
-   ;;; dumpObj(this.getJSONProfile())
+   ;; dumpObj(this.getJSONProfile())
    jQuery.ajax(
       {
          async: async,
    jQuery.ajax(
       {
          async: async,
@@ -861,7 +878,7 @@ Client.prototype.flush = function(async)
          success:
             function(data)
             {
          success:
             function(data)
             {
-               ;;; dumpObj(data)
+               ;; dumpObj(data)
                if (data["reply"] == "error")
                {
                   thisClient.util.messageDialogue(data["error_message"])
                if (data["reply"] == "error")
                {
                   thisClient.util.messageDialogue(data["error_message"])
@@ -945,7 +962,7 @@ Client.prototype.ban = function(userId, raison, minutes)
 
    // par défaut un ban correspond à 3 jours
    if (typeof(minutes) == "undefined")
 
    // par défaut un ban correspond à 3 jours
    if (typeof(minutes) == "undefined")
-      minutes = 60 * 24 * 3
+      minutes = conf.tempsBan;
       
    jQuery.ajax({
       type: "POST",
       
    jQuery.ajax({
       type: "POST",
@@ -970,7 +987,7 @@ Client.prototype.ban = function(userId, raison, minutes)
 
 Client.prototype.kick = function(userId, raison)
 {
 
 Client.prototype.kick = function(userId, raison)
 {
-   this.ban(userId, raison, 15)
+   this.ban(userId, raison, conf.tempsKick)
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1028,7 +1045,7 @@ PageEvent.prototype.waitEvent = function(funSend, funReceive)
    for (v in poulpe)
       dataToSend[v] = poulpe[v]
    
    for (v in poulpe)
       dataToSend[v] = poulpe[v]
    
-   ;;; dumpObj(dataToSend)
+   ;; dumpObj(dataToSend)
    
    this.attenteCourante = jQuery.ajax({
       type: "POST",
    
    this.attenteCourante = jQuery.ajax({
       type: "POST",
@@ -1038,7 +1055,7 @@ PageEvent.prototype.waitEvent = function(funSend, funReceive)
       success:
          function(data)
          {            
       success:
          function(data)
          {            
-            ;;; dumpObj(data)
+            ;; dumpObj(data)
             
             funReceive(data)
             
             
             funReceive(data)
             
@@ -1076,7 +1093,7 @@ function initialiserListeStyles(client)
 }
             
 // charge dynamiquement le script de debug
 }
             
 // charge dynamiquement le script de debug
-;;; jQuery.ajax({async : false, url : "js/debug.js", dataType : "script"})
+;; jQuery.ajax({async : false, url : "js/debug.js", dataType : "script"})
       \r
 // le main
 $(document).ready(
       \r
 // le main
 $(document).ready(
@@ -1112,12 +1129,17 @@ $(document).ready(
       })
       $("#menu .register").click(function(){ pages.afficherPage("register") })
       $("#menu .about").click(function(){ pages.afficherPage("about") })
       })
       $("#menu .register").click(function(){ pages.afficherPage("register") })
       $("#menu .about").click(function(){ pages.afficherPage("about") })
+      
+      // TODO : simplifier et pouvoir créer des liens par exemple : <span class="lien" href="conditions">Conditions d'utilisation</span>
+      $("#footer .conditions").click(function(){ pages.afficherPage("conditions_utilisation") })
 
       pages.ajouterPage(new PageMinichat(client, formateur, util))
       pages.ajouterPage(new PageAdmin(client, formateur, util))
       pages.ajouterPage(new PageProfile(client, formateur, util))
       pages.ajouterPage(new PageRegister(client, formateur, util))
       pages.ajouterPage(new PageAbout(client, formateur, util))
 
       pages.ajouterPage(new PageMinichat(client, formateur, util))
       pages.ajouterPage(new PageAdmin(client, formateur, util))
       pages.ajouterPage(new PageProfile(client, formateur, util))
       pages.ajouterPage(new PageRegister(client, formateur, util))
       pages.ajouterPage(new PageAbout(client, formateur, util))
+      pages.ajouterPage("conditions_utilisation")
+      
       pages.afficherPage("minichat")
    }
 )
       pages.afficherPage("minichat")
    }
 )