-// coding: utf-8\r
+// coding: utf-8\r
// Copyright 2008 Grégory Burri\r
//\r
// This file is part of Euphorik.\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
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)
- {
- // 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.select();\r
}\r
}\r
}\r
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)
{
- 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)
$("#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()
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
- 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()
// par défaut un ban correspond à 3 jours
if (typeof(minutes) == "undefined")
- minutes = 60 * 24 * 3
+ minutes = conf.tempsBan;
jQuery.ajax({
type: "POST",
Client.prototype.kick = function(userId, raison)
{
- this.ban(userId, raison, 15)
+ this.ban(userId, raison, conf.tempsKick)
}
///////////////////////////////////////////////////////////////////////////////////////////////////
/**
* classe permettant de gérer les événements (push serveur).
+ * l'information envoyé est sous la forme :
+ * {
+ * "action" : "wait_event"
+ * "page" : <page>
+ * [..]
+ * }
+ * l'information reçu est sous la forme :
+ * {
+ * "reply" : <reply>
+ * }
* @page la page
*/
function PageEvent(page, util)
/**
* Attend un événement lié à la page.
* @funSend une fonction renvoyant les données json à envoyer
- * @funReceive une fonction qui accepte un paramètre correspondant au données reçues
+ * @funsReceive est un objet comprenant les fonctions à appeler en fonction du "reply"
+ * les fonctions acceptent un paramètre correspondant au données reçues.
+ * exemple : {"new_message" : function(data){ ... }}
*/
-PageEvent.prototype.waitEvent = function(funSend, funReceive)
+PageEvent.prototype.waitEvent = function(funSend, funsReceive)
{
this.stopAttenteCourante()
{
;; dumpObj(data)
- funReceive(data)
+ funsReceive[data["reply"]](data)
// rappel de la fonction dans 100 ms
- setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funReceive) }, 100)
+ setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive) }, 100)
},
error:
function(XMLHttpRequest, textStatus, errorThrown)
{
- setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funReceive) }, 1000)
+ ;; console.log("Connexion perdue dans waitEvent")
+ setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive) }, 1000)
}
})
}
/**
* Si un stopAttenteCourante survient un peu n'importe quand il faut imédiatement arreter de boucler.
*/
-PageEvent.prototype.waitEvent2 = function(funSend, funReceive)
+PageEvent.prototype.waitEvent2 = function(funSend, funsReceive)
{
if (this.stop)
return
- this.waitEvent(funSend, funReceive)
+ this.waitEvent(funSend, funsReceive)
}
///////////////////////////////////////////////////////////////////////////////////////////////////
})
$("#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("conditions_utilisation")
+
pages.afficherPage("minichat")
}
)