From ff1b8889e37bdecb354caa1f330a3ce2cfa82519 Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Fri, 18 Jul 2008 07:06:09 +0000 Subject: [PATCH] MOD avancement dans la Grande Restructuration --- js/client.js | 553 +++++++++++++++++++++++-------------------------- js/euphorik.js | 14 +- 2 files changed, 271 insertions(+), 296 deletions(-) diff --git a/js/client.js b/js/client.js index a09819b..ea96902 100644 --- a/js/client.js +++ b/js/client.js @@ -26,12 +26,12 @@ euphorik.Client.statutType = { auth_not_registered : 1, // mode déconnecté, ne peut pas poster de message deconnected : 2 -} +}; /** * Représente l'utilisateur du site. */ -function Client(util) { +euphorik.Client = function(util) { this.util = util; this.cookie = null; @@ -43,10 +43,10 @@ function Client(util) { this.setStatut(euphorik.Client.statutType.deconnected); // si true alors chaque modification du client est mémorisé sur le serveur - this.autoflush = $.browser["opera"]; -} + this.autoflush = $.browser.opera; +}; -Client.prototype.resetDonneesPersonnelles = function() { +euphorik.Client.prototype.resetDonneesPersonnelles = function() { this.id = 0; this.pseudo = euphorik.conf.pseudoDefaut; this.login = ""; @@ -68,10 +68,10 @@ Client.prototype.resetDonneesPersonnelles = function() { // - page (entier) // - reduit (bool) this.conversations = []; -} +}; -Client.prototype.setCss = function(css) { - if (this.css == css || css == "") { +euphorik.Client.prototype.setCss = function(css) { + if (this.css === css || !css) { return; } @@ -80,30 +80,29 @@ Client.prototype.setCss = function(css) { if (this.autoflush) { this.flush(true); } -} +}; -Client.prototype.pageSuivante = function(numConv) { +euphorik.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; } -} +}; -Client.prototype.pagePrecedente = function(numConv) { +euphorik.Client.prototype.pagePrecedente = function(numConv) { if (numConv < 0) { this.pagePrincipale += 1; - } - else { + } else { this.conversations[numConv].page += 1; } -} +}; /** * 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) +euphorik.Client.prototype.goPremierePage = function(numConv) { if (numConv < 0) { if (this.pagePrincipale == 1) { @@ -117,7 +116,7 @@ Client.prototype.goPremierePage = function(numConv) this.conversations[numConv].page = 1; } return true; -} +}; /** * Ajoute une conversation à la vue de l'utilisateur. @@ -125,74 +124,77 @@ Client.prototype.goPremierePage = function(numConv) * @param racines la racine de la conversation (integer) * @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].root == racine) - return false +euphorik.Client.prototype.ajouterConversation = function(racine) { + // vérification s'il elle n'existe pas déjà + this.conversations.each(function(i, conv) { + if (conv.root === racine) { + return false; + } + }); - this.conversations.push({root : racine, page : 1, reduit : false}) - if (this.autoflush) this.flush(true) + this.conversations.push({root : racine, page : 1, reduit : false}); + if (this.autoflush) { + this.flush(true); + } - return true -} + return true; +}; -Client.prototype.supprimerConversation = function(num) -{ - if (num < 0 || num >= this.conversations.length) return +euphorik.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() + for (var i = num; i < this.conversations.length - 1; i++) { + this.conversations[i] = this.conversations[i+1]; + } + this.conversations.pop(); - if (this.autoflush) this.flush(true) -} + if (this.autoflush) { + this.flush(true); + } +}; -Client.prototype.getJSONLogin = function(login, password) -{ +euphorik.Client.prototype.getJSONLogin = function(login, password) { return { "header" : { "action" : "authentification", "version" : euphorik.conf.versionProtocole }, "login" : login, "password" : password - } -} + }; +}; -Client.prototype.getJSONLoginCookie = function() -{ +euphorik.Client.prototype.getJSONLoginCookie = function() { return { "header" : { "action" : "authentification", "version" : euphorik.conf.versionProtocole }, "cookie" : this.cookie - } -} + }; +}; /** * le couple (login, password) est facultatif. S'il n'est pas fournit alors il ne sera pas possible * de s'autentifier avec (login, password). */ -Client.prototype.getJSONEnregistrement = function(login, password) -{ - var mess = { "header" : { "action" : "register", "version" : euphorik.conf.versionProtocole }} +euphorik.Client.prototype.getJSONEnregistrement = function(login, password) { + var mess = { "header" : { "action" : "register", "version" : euphorik.conf.versionProtocole } }; - if (login != undefined && password != undefined) - { - mess["login"] = login - mess["password"] = password + if (login && password) { + mess.login = login; + mess.password = password; } return mess; -} +}; -Client.prototype.getJSONConversations = function() -{ - var conversations = new Array() - for (var i = 0; i < this.conversations.length; i++) - conversations.push({root : this.conversations[i].root, minimized : this.conversations[i].reduit}) - return conversations -} +euphorik.Client.prototype.getJSONConversations = function() { + var conversations = []; + this.conversations.each(function(i, conv) { + conversations.push({ "root" : conv.root, "minimized" : conv.reduit }); + }); + return conversations; +}; -Client.prototype.getJSONProfile = function() -{ +euphorik.Client.prototype.getJSONProfile = function() { return { "header" : { "action" : "set_profile", "version" : euphorik.conf.versionProtocole }, "cookie" : this.cookie, @@ -207,58 +209,60 @@ Client.prototype.getJSONProfile = function() "view_tooltips" : this.viewTooltips, "conversations" : this.getJSONConversations(), "ostentatious_master" : this.ostentatiousMaster - } -} + }; +}; /** - * 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] -} +euphorik.Client.prototype.getCookie = function() { + var cookie = this.regexCookie.exec(document.cookie); + if (cookie) { + this.cookie = cookie[1]; + } else { + this.cookie = undefined; + } +}; -Client.prototype.delCookie = function() -{ - document.cookie = "cookie=; max-age=0" -} +euphorik.Client.prototype.delCookie = function() { + document.cookie = "cookie=; max-age=0"; + this.cookie = undefined; +}; -Client.prototype.setCookie = function() -{ - if (this.cookie == null || this.cookie == undefined) - return +euphorik.Client.prototype.setCookie = function() { + if (!this.cookie) { + return; + } // 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() -} + "cookie="+this.cookie+"; expires=" + new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365).toUTCString(); +}; -Client.prototype.authentifie = function() -{ - return this.statut == euphorik.Client.statutType.auth_registered || this.statut == euphorik.Client.statutType.auth_not_registered -} +euphorik.Client.prototype.authentifie = function() { + return this.statut === euphorik.Client.statutType.auth_registered || this.statut === euphorik.Client.statutType.auth_not_registered; +}; -Client.prototype.setStatut = function(statut) +euphorik.Client.prototype.setStatut = function(statut) { // conversation en "enum" si en "string" - if (typeof(statut) == "string") - { + if (typeof(statut) === "string") { statut = - statut == "auth_registered" ? + statut === "auth_registered" ? euphorik.Client.statutType.auth_registered : - (statut == "auth_not_registered" ? euphorik.Client.statutType.auth_not_registered : euphorik.Client.statutType.deconnected) - } + (statut === "auth_not_registered" ? euphorik.Client.statutType.auth_not_registered : euphorik.Client.statutType.deconnected); + } - if (statut == this.statut) return + if (statut === this.statut) { + return; + } - this.statut = statut - this.majMenu() - this.majLogo() -} + this.statut = statut; + this.majMenu(); + this.majLogo(); +}; /** * Effectue la connexion vers le serveur. @@ -266,269 +270,234 @@ Client.prototype.setStatut = function(statut) * S'il existe un cookie en local on s'authentifie directement avec lui. * Si il n'est pas possible de s'authentifier alors on affiche un captcha anti-bot. */ -Client.prototype.connexionCookie = function() -{ - this.getCookie() - if (this.cookie == null) return false; - return this.connexion(this.getJSONLoginCookie()) -} - -Client.prototype.connexionLogin = function(login, password) -{ - return this.connexion(this.getJSONLogin(login, password)) -} - -Client.prototype.enregistrement = function(login, password) -{ - if (this.authentifie()) - { - this.login = login - this.password = password - if(this.flush()) - { - this.setStatut(euphorik.Client.statutType.auth_registered) - return true - } - return false +euphorik.Client.prototype.connexionCookie = function() { + this.getCookie(); + if (!this.cookie) { + return false; } - else - { - return this.connexion(this.getJSONEnregistrement(login, password)) + return this.connexion(this.getJSONLoginCookie()); +}; + +euphorik.Client.prototype.connexionLogin = function(login, password) { + return this.connexion(this.getJSONLogin(login, password)); +}; + +euphorik.Client.prototype.enregistrement = function(login, password) { + if (this.authentifie()) { + this.login = login; + this.password = password; + if(this.flush()) { + this.setStatut(euphorik.Client.statutType.auth_registered); + return true; + } + return false; + } else { + return this.connexion(this.getJSONEnregistrement(login, password)); } -} +}; /** * Connexion. Réalisé de manière synchrone. */ -Client.prototype.connexion = function(messageJson) -{ - var thisClient = this - jQuery.ajax( - { - async: false, - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(messageJson), - success: - function(data) - { - if (data["reply"] == "error") - { - thisClient.util.messageDialogue(data["error_message"]) - // suppression du cookie actuel, cas où le cookie du client ne permet pas une authentification - thisClient.delCookie() - } - else - thisClient.chargerDonnees(data) +euphorik.Client.prototype.connexion = function(messageJson) { + var thisClient = this; + jQuery.ajax({ + async: false, + type: "POST", + url: "request", + dataType: "json", + data: this.util.jsonVersAction(messageJson), + success: + function(data){ + if (data.reply === "error") { + thisClient.util.messageDialogue(data.error_message); + // suppression du cookie actuel, cas où le cookie du client ne permet pas une authentification + thisClient.delCookie(); + } else { + thisClient.chargerDonnees(data); } - } - ) - return this.authentifie() -} + } + }); + return this.authentifie(); +}; -Client.prototype.deconnexion = function() -{ - this.flush(true) - this.delCookie() - this.resetDonneesPersonnelles() - this.setStatut(euphorik.Client.statutType.deconnected) // deconnexion -} +euphorik.Client.prototype.deconnexion = function() { + this.flush(true); + this.delCookie(); + this.resetDonneesPersonnelles(); + this.setStatut(euphorik.Client.statutType.deconnected); // deconnexion +}; -Client.prototype.chargerDonnees = function(data) -{ +euphorik.Client.prototype.chargerDonnees = function(data) { // la modification du statut qui suit met à jour le menu, le menu dépend (page admin) // de l'état ekMaster - this.ekMaster = data["ek_master"] != undefined ? data["ek_master"] : false + this.ekMaster = data.ek_master ? data.ek_master : false; - this.setStatut(data["status"]) + this.setStatut(data.status); - if (this.authentifie()) - { - this.cookie = data["cookie"] - this.setCookie() + if (this.authentifie()) { + this.cookie = data.cookie; + this.setCookie(); - this.id = data["id"] - this.login = data["login"] - this.pseudo = data["nick"] - this.email = data["email"] - this.setCss(data["css"]) - this.chatOrder = data["chat_order"] - this.nickFormat = data["nick_format"] - this.viewTimes = data["view_times"] - this.viewTooltips = data["view_tooltips"] - this.ostentatiousMaster = data["ostentatious_master"] + this.id = data.id; + this.login = data.login; + this.pseudo = data.nick; + this.email = data.email; + this.setCss(data.css); + this.chatOrder = data.chat_order; + this.nickFormat = data.nick_format; + this.viewTimes = data.view_times; + this.viewTooltips = data.view_tooltips; + this.ostentatiousMaster = data.ostentatious_master; // la page de la conversation principale - this.pagePrincipale = 1 + this.pagePrincipale = 1; // les conversations - this.conversations = data["conversations"] - for (var i = 0; i < this.conversations.length; i++) - this.conversations[i] = {root : this.conversations[i].root, page : 1, reduit : this.conversations[i].minimized} + this.conversations = data.conversations; + this.conversations.map(function(conv) { + return { root : conv.root, page : 1, reduit : conv.minimized }; + }); - this.majBulle() - this.majCssSelectionee() - //this.majLogo() + this.majBulle(); + this.majCssSelectionee(); } -} +}; /** * Met à jour les données personne sur serveur. * @param async de manière asynchrone ? défaut = true * @return false si le flush n'a pas pû se faire sinon true */ -Client.prototype.flush = function(async) -{ - if (async == undefined) - async = false +euphorik.Client.prototype.flush = function(async) { + async = async || false; - if (!this.authentifie()) - return false - - var thisClient = this - var ok = true - jQuery.ajax( - { - async: async, - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(this.getJSONProfile()), - success: - function(data) - { - if (data["reply"] == "error") - { - thisClient.util.messageDialogue(data["error_message"]) - ok = false - } - else - { - thisClient.majBulle() - } + if (!this.authentifie()) { + return false; + } + + var thisClient = this; + var ok = true; + jQuery.ajax({ + async: async, + type: "POST", + url: "request", + dataType: "json", + data: this.util.jsonVersAction(this.getJSONProfile()), + success: + function(data) { + if (data.reply === "error") { + thisClient.util.messageDialogue(data.error_message); + ok = false; + } else { + thisClient.majBulle(); } - } - ) + } + }); - return ok -} + return ok; +}; -Client.prototype.majMenu = function() -{ - var displayType = "block" +euphorik.Client.prototype.majMenu = function() { + var displayType = "block"; - $("#menu .admin").css("display", this.ekMaster ? displayType : "none") + $("#menu .admin").css("display", this.ekMaster ? displayType : "none"); // met à jour le menu - if (this.statut == euphorik.Client.statutType.auth_registered) - { - $("#menu .profile").css("display", displayType).text("profile") - $("#menu .logout").css("display", displayType) - $("#menu .register").css("display", "none") - } - else if (this.statut == euphorik.Client.statutType.auth_not_registered) - { - $("#menu .profile").css("display", "none") - $("#menu .logout").css("display", displayType) - $("#menu .register").css("display", displayType) - } - else - { - $("#menu .profile").css("display", displayType).text("login") - $("#menu .logout").css("display", "none") - $("#menu .register").css("display", displayType) + if (this.statut == euphorik.Client.statutType.auth_registered) { + $("#menu .profile").css("display", displayType).text("profile"); + $("#menu .logout").css("display", displayType); + $("#menu .register").css("display", "none"); + } else if (this.statut == euphorik.Client.statutType.auth_not_registered) { + $("#menu .profile").css("display", "none"); + $("#menu .logout").css("display", displayType); + $("#menu .register").css("display", displayType); + } else { + $("#menu .profile").css("display", displayType).text("login"); + $("#menu .logout").css("display", "none"); + $("#menu .register").css("display", displayType); } -} +}; /** - * Met à jour l'affichage des infos bulles en fonction du profile. + * Met à jour l'affichage ou non des infos bulles en fonction du profile. */ -Client.prototype.majBulle = function() -{ - this.util.bulleActive = this.viewTooltips -} +euphorik.Client.prototype.majBulle = function() { + this.util.bulleActive = this.viewTooltips; +}; /** * Met à jour la css sélectionnée, lors du chargement des données. */ -Client.prototype.majCssSelectionee = function() -{ +euphorik.Client.prototype.majCssSelectionee = function() { // extraction du numéro de la css courante - var numCssCourante = this.css.match(/^.*?\/(\d)\/.*$/) - if (numCssCourante != null && numCssCourante[1] != undefined) - { - $("#menuCss option").removeAttr("selected") - $("#menuCss option[value=" + numCssCourante[1]+ "]").attr("selected", "selected") + var numCssCourante = this.css.match(/^.*?\/(\d)\/.*$/); + if (numCssCourante && numCssCourante[1]) { + $("#menuCss option").removeAttr("selected"); + $("#menuCss option[value=" + numCssCourante[1]+ "]").attr("selected", "selected"); } -} +}; /** * Change la "class" du logo en fonction du statut de ekMaster. */ -Client.prototype.majLogo = function() -{ - if (this.ekMaster) - $("#logo").addClass("ekMaster") - else - $("#logo").removeClass("ekMaster") -} - +euphorik.Client.prototype.majLogo = function() { + if (this.ekMaster) { + $("#logo").addClass("ekMaster"); + } else { + $("#logo").removeClass("ekMaster"); + } +}; -Client.prototype.slap = function(userId, raison) -{ - var thisClient = this +euphorik.Client.prototype.slap = function(userId, raison) { + var thisClient = this; jQuery.ajax({ type: "POST", url: "request", dataType: "json", - data: this.util.jsonVersAction( - { - "header" : { "action" : "slap", "version" : euphorik.conf.versionProtocole }, - "cookie" : thisClient.cookie, - "user_id" : userId, - "reason" : raison - }), + data: this.util.jsonVersAction({ + "header" : { "action" : "slap", "version" : euphorik.conf.versionProtocole }, + "cookie" : thisClient.cookie, + "user_id" : userId, + "reason" : raison + }), success: - function(data) - { - if (data["reply"] == "error") - thisClient.util.messageDialogue(data["error_message"]) + function(data) { + if (data.reply === "error") { + thisClient.util.messageDialogue(data.error_message); + } } - }) -} + }); +}; -Client.prototype.ban = function(userId, raison, minutes) +euphorik.Client.prototype.ban = function(userId, raison, minutes) { - var thisClient = this + var thisClient = this; // par défaut un ban correspond à 3 jours - if (typeof(minutes) == "undefined") - minutes = euphorik.conf.tempsBan; + minutes = minutes || euphorik.conf.tempsBan; jQuery.ajax({ type: "POST", url: "request", dataType: "json", - data: this.util.jsonVersAction( - { - "header" : { "action" : "ban", "version" : euphorik.conf.versionProtocole }, - "cookie" : thisClient.cookie, - "duration" : minutes, - "user_id" : userId, - "reason" : raison - }), + data: this.util.jsonVersAction({ + "header" : { "action" : "ban", "version" : euphorik.conf.versionProtocole }, + "cookie" : thisClient.cookie, + "duration" : minutes, + "user_id" : userId, + "reason" : raison + }), success: - function(data) - { - if (data["reply"] == "error") - thisClient.util.messageDialogue(data["error_message"]) + function(data) { + if (data.reply === "error") { + thisClient.util.messageDialogue(data.error_message); + } } - }) -} + }); +}; -Client.prototype.kick = function(userId, raison) -{ - this.ban(userId, raison, euphorik.conf.tempsKick) -} +euphorik.Client.prototype.kick = function(userId, raison) { + this.ban(userId, raison, euphorik.conf.tempsKick); +}; diff --git a/js/euphorik.js b/js/euphorik.js index 28cba42..8c13841 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -67,16 +67,22 @@ var euphorik = {} Object.prototype.each = function(f) { for (var k in this) { if (this.hasOwnProperty(k)) { - f(k, this[k]) + f(k, this[k]); } } -} +}; Array.prototype.each = function(f) { for (var i = 0; i < this.length; i++) { - f(i, this[i]) + f(i, this[i]); } -} +}; + +Array.prototype.map = function(f) { + for (var i = 0; i < this.length; i++) { + this[i] = f(this[i]) + } +}; String.prototype.trim = function() { return jQuery.trim(this) // anciennement : this.replace(/^\s+|\s+$/g, ""); -- 2.43.0