-Formateur.prototype.traiterURL = function(M, pseudo)
-{
- thisFormateur = this
-
- if (pseudo == undefined)
- pseudo = ""
-
- var traitementUrl = function(url)
- { \r
- // si ya pas de protocole on rajoute "http://"\r
- if (!thisFormateur.regexTestProtocoleExiste.test(url))\r
- url = "http://" + url
- var extension = thisFormateur.getShort(url)
- return "<a " + (extension[1] ? "title=\"" + thisFormateur.traiterPourFenetreLightBox(pseudo, url) + ": " + thisFormateur.traiterPourFenetreLightBox(M, url) + "\"" + " rel=\"lightbox[groupe]\"" : "") + " href=\"" + url + "\" >[" + extension[0] + "]</a>"
- }
- return M.replace(this.regexUrl, traitementUrl)
-}
-\r
-/**\r
- * Renvoie une version courte de l'url.\r
- * par exemple : http://en.wikipedia.org/wiki/Yakov_Smirnoff devient wikipedia.org\r
- */
-Formateur.prototype.getShort = function(url)
-{\r
- var estUneImage = false
- var versionShort = null
- var rechercheImg = this.regexImg.exec(url)\r
- //alert(url)
- if (rechercheImg != null)\r
- {
- versionShort = rechercheImg[1].toLowerCase()\r
- if (versionShort == "jpeg") versionShort = "jpg" // jpeg -> jpg\r
- estUneImage = true\r
- }\r
- else\r
- {\r
- var rechercheDomaine = this.regexDomaine.exec(url)\r
- if (rechercheDomaine != null && rechercheDomaine.length >= 2)\r
- versionShort = rechercheDomaine[1]\r
- else\r
- {\r
- var nomProtocole = this.regexNomProtocole.exec(url)\r
- if (nomProtocole != null && nomProtocole.length >= 2)\r
- versionShort = nomProtocole[1]\r
- }\r
- }\r
-
- return [versionShort == null ? "url" : versionShort, estUneImage]
- }
-
-/**
- * Traite les pseudo et messages à être affiché dans le titre d'une image visualisé avec lightbox.
- */
-Formateur.prototype.traiterPourFenetreLightBox = function(M, urlCourante)
-{
- thisFormateur = this
- var traitementUrl = function(url)
- {
- return "[" + thisFormateur.getShort(url)[0] + (urlCourante == url ? ": image courante" : "") + "]"
- }
- \r
- return this.remplacerBalisesHTML(M).replace(this.regexUrl, traitementUrl)
-}
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-var statutType = {enregistre: 0, identifie: 1, non_identifie: 2}
-\r
-function Client(util)\r
-{
- this.util = util
- \r
- this.cookie = null
- this.regexCookie = new RegExp("^cookie=([^;]*)")
-
- // données personnels\r
- this.resetDonneesPersonnelles()
-
- this.setStatut(statutType.non_identifie)
-
- // le dernier message d'erreur recut du serveur (par exemple une connexion foireuse : "login impossible")
- this.dernierMessageErreur = ""\r
-}
-\r
-Client.prototype.resetDonneesPersonnelles = function()\r
-{\r
- this.pseudo = conf.pseudoDefaut\r
- this.login = ""\r
- this.password = ""\r
- this.email = ""\r
- this.css = jQuery("link#cssPrincipale").attr("href")
-
- this.pagePrincipale = 1
-
- // les conversations, une conversation est un objet possédant les attributs suivants :
- // - racine (entier)
- // - page (entier)
- this.conversations = new Array()\r
-}
-
-Client.prototype.setCss = function(css)
-{
- if (this.css == css)
- return
-
- this.css = css
- jQuery("link#cssPrincipale").attr("href", this.css)
- this.majMenu()
-
- if (this.identifie())
- this.flush()
-}
-
-Client.prototype.pageSuivante = function(numConv)
-{
- if (numConv < 0 && this.pagePrincipale > 1)
- this.pagePrincipale -= 1
- else if (this.conversations[numConv].page > 1)
- this.conversations[numConv].page -= 1
- this.flush(false)
-}
-
-Client.prototype.pagePrecedente = function(numConv)
-{
- if (numConv < 0)
- this.pagePrincipale += 1
- else
- this.conversations[numConv].page += 1
- this.flush(false)
-}
-
-/**
- * Définit la première page pour la conversation donnée.
- * @return true si la page a changé sinon false
- */
-Client.prototype.goPremierePage = function(numConv)
-{
- if (numConv < 0)
- {
- if (this.pagePrincipale == 1)
- return false
- this.pagePrincipale = 1
- }
- else
- {
- if (this.conversations[numConv].page == 1)
- return false
- this.conversations[numConv].page = 1
- }
- this.flush(false)
- return true
-}
-
-/**
- * Ajoute une conversation à la vue de l'utilisateur.
- * Le profile de l'utilisateur est directement sauvegardé sur le serveur.
- * @param racines la racine de la conversation
- * @return true si la conversation a été créée sinon false (par exemple si la conv existe déjà)
- */
-Client.prototype.ajouterConversation = function(racine)
-{
- // vérification s'il elle n'existe pas déjà
- for (var i = 0; i < this.conversations.length; i++)
- if (this.conversations[i].racine == racine)
- return false
-
- this.conversations.push({racine : racine, page : 1})
- this.flush(false)
- return true
-}
-
-Client.prototype.supprimerConversation = function(num)
-{
- if (num < 0 || num >= this.conversations.length) return
-
- // décalage TODO : supprimer le dernier élément
- for (var i = num; i < this.conversations.length - 1; i++)
- this.conversations[i] = this.conversations[i+1]
- this.conversations.pop()
-
- this.flush(false)
-}\r
-
-Client.prototype.getXMLlogin = function(login, password)
-{
- var XMLDocument = this.util.creerDocumentXMLAction()
- XMLDocument.documentElement.setAttribute("name", "login")
-
- var nodeLogin = XMLDocument.createElement("login")
- nodeLogin.appendChild(XMLDocument.createTextNode(login))
- XMLDocument.documentElement.appendChild(nodeLogin)
-
- var nodePassword = XMLDocument.createElement("password")
- nodePassword.appendChild(XMLDocument.createTextNode(password))
- XMLDocument.documentElement.appendChild(nodePassword)
-
- return XMLDocument
-}
-
-Client.prototype.getXMLloginCookie = function()
-{
- var XMLDocument = this.util.creerDocumentXMLAction()
- XMLDocument.documentElement.setAttribute("name", "login")
-
- var nodeCookie = XMLDocument.createElement("cookie")
- nodeCookie.appendChild(XMLDocument.createTextNode(this.cookie))
- XMLDocument.documentElement.appendChild(nodeCookie)
-
- return XMLDocument
-}
-
-Client.prototype.getXMLEnregistrement = function(login, password)
-{
- var XMLDocument = this.util.creerDocumentXMLAction()
- XMLDocument.documentElement.setAttribute("name", "register")
-
- var nodeLogin = XMLDocument.createElement("login")
- nodeLogin.appendChild(XMLDocument.createTextNode(login))
- XMLDocument.documentElement.appendChild(nodeLogin)
-
- var nodePassword = XMLDocument.createElement("password")
- nodePassword.appendChild(XMLDocument.createTextNode(password))
- XMLDocument.documentElement.appendChild(nodePassword)
-
- return XMLDocument
-}
-
-/**
- * Sérialize le profile en XML.
- * TODO : méthode assez lourde, 3.25ms de moyenne
- */
-Client.prototype.getXMLProfile = function()
-{
- var XMLDocument = this.util.creerDocumentXMLAction()
- XMLDocument.documentElement.setAttribute("name", "profile")
-
- var nodeCookie = XMLDocument.createElement("cookie")
- nodeCookie.appendChild(XMLDocument.createTextNode(this.cookie))
- XMLDocument.documentElement.appendChild(nodeCookie)
-
- var nodeLogin = XMLDocument.createElement("login")
- nodeLogin.appendChild(XMLDocument.createTextNode(this.login))
- XMLDocument.documentElement.appendChild(nodeLogin)
-
- var nodePassword = XMLDocument.createElement("password")
- nodePassword.appendChild(XMLDocument.createTextNode(this.password))
- XMLDocument.documentElement.appendChild(nodePassword)
-
- var nodePseudo = XMLDocument.createElement("pseudo")
- nodePseudo.appendChild(XMLDocument.createTextNode(this.pseudo))
- XMLDocument.documentElement.appendChild(nodePseudo)
-
- var nodeEmail = XMLDocument.createElement("email")
- nodeEmail.appendChild(XMLDocument.createTextNode(this.email))
- XMLDocument.documentElement.appendChild(nodeEmail)
-
- var nodeCSS = XMLDocument.createElement("css")
- nodeCSS.appendChild(XMLDocument.createTextNode(this.css))
- XMLDocument.documentElement.appendChild(nodeCSS)
-
- var nodePagePrincipale = XMLDocument.createElement("pagePrincipale")
- nodePagePrincipale.appendChild(XMLDocument.createTextNode(this.pagePrincipale < 1 ? 1 : this.pagePrincipale))
- XMLDocument.documentElement.appendChild(nodePagePrincipale)
-
- // mémorise les conversations affichées
- for (var i = 0; i < this.conversations.length; i++)
- {
- var nodeConv = XMLDocument.createElement("conversation")
- XMLDocument.documentElement.appendChild(nodeConv)
-
- var nodeRacine = XMLDocument.createElement("racine")
- nodeRacine.appendChild(XMLDocument.createTextNode(this.conversations[i].racine))
- nodeConv.appendChild(nodeRacine)
-
- var nodePage = XMLDocument.createElement("page")
- nodePage.appendChild(XMLDocument.createTextNode(this.conversations[i].page))
- nodeConv.appendChild(nodePage)
- }
-
- return XMLDocument
-}
-
-/**
- * Renvoie null si pas définit.
- */
-Client.prototype.getCookie = function()
-{
- var cookie = this.regexCookie.exec(document.cookie)
- if (cookie == null) this.cookie = null
- else this.cookie = cookie[1]