X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2Feuphorik.js;h=c796e414768f5727b90b335fb38b0c8406eecd1c;hp=b44f04298b8b136542e66f9340cf265bac870609;hb=64ef87442b933d47f4dbc9dfec9a5a16e522c375;hpb=ec0132f1c1f3599d7818a566b08129c994e6647b diff --git a/js/euphorik.js b/js/euphorik.js index b44f042..c796e41 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -31,7 +31,9 @@ var conf = { nbMessageAffiche : 40, // (par page) pseudoDefaut : "", - tempsAffichageMessageDialogue : 4000, // en ms + tempsAffichageMessageDialogue : 4000, // en ms + tempsKick : 15, // en minute + tempsBan : 60 * 24 * 3, // en minutes (3jours) smiles : { "smile" : [/:\)/g, /:-\)/g], "bigsmile" : [/:D/g, /:-D/g], @@ -90,7 +92,10 @@ function Util(formateur) $("#info").slideUp(50) }) + $("body").append('
').append('

') + this.formateur = formateur + this.bulleActive = true } var messageType = {informatif: 0, question: 1, erreur: 2} @@ -134,6 +139,55 @@ Util.prototype.messageDialogue = function(message, type, boutons, formate) this.timeoutMessageDialogue = setTimeout(fermer, conf.tempsAffichageMessageDialogue) } +/** + * Affiche un info bulle lorsque le curseur survole l'élément donné. + * FIXME : le width de element ne tient pas compte du padding !? + */ +Util.prototype.infoBulle = function(message, element) +{ + var thisUtil = this + + var cacherBulle = function() + { + $("#flecheBulle").hide() + $("#messageBulle").hide() + } + + element.hover( + function(e) + { + if (!thisUtil.bulleActive) + return + + var m = $("#messageBulle") + var f = $("#flecheBulle") + + $("p", m).html(message) + + var positionFleche = { + left : element.offset().left + element.width() / 2 - f.width() / 2, + top : element.offset().top - f.height() + } + var positionMessage = { + left : element.offset().left + element.width() / 2 - m.width() / 2, + top : element.offset().top - f.height() - m.height() + } + var depassementDroit = (positionMessage.left + m.width()) - $("body").width() + if (depassementDroit > 0) + positionMessage.left -= depassementDroit + else + { + if (positionMessage.left < 0) + positionMessage.left = 0 + } + + m.css("top", positionMessage.top).css("left", positionMessage.left).show() + f.css("top", positionFleche.top).css("left", positionFleche.left).show() + }, + cacherBulle + ).click(cacherBulle) +} + /** * Utilisé pour l'envoie de donnée avec la méthode ajax de jQuery. */ @@ -479,6 +533,8 @@ Client.prototype.resetDonneesPersonnelles = function() this.email = "" this.css = $("link#cssPrincipale").attr("href") this.nickFormat = "nick" + this.viewTimes = true + this.viewTooltips = true this.cookie = undefined this.pagePrincipale = 1 @@ -624,6 +680,8 @@ Client.prototype.getJSONProfile = function() "email" : this.email, "css" : this.css, "nick_format" : this.nickFormat, + "view_times" : this.viewTimes, + "view_tooltips" : this.viewTooltips, "main_page" : this.pagePrincipale < 1 ? 1 : this.pagePrincipale, "conversations" : this.getJSONConversations() } @@ -715,7 +773,7 @@ Client.prototype.enregistrement = function(login, password) Client.prototype.connexion = function(messageJson) { - ;;; dumpObj(messageJson) + ;; dumpObj(messageJson) thisClient = this jQuery.ajax( { @@ -727,7 +785,7 @@ Client.prototype.connexion = function(messageJson) success: function(data) { - ;;; dumpObj(data) + ;; dumpObj(data) if (data["reply"] == "error") thisClient.util.messageDialogue(data["error_message"]) else @@ -765,12 +823,16 @@ Client.prototype.chargerDonnees = function(data) this.email = data["email"] this.setCss(data["css"]) this.nickFormat = data["nick_format"] + this.viewTimes = data["view_times"] + this.viewTooltips = data["view_tooltips"] // la page de la conversation principale this.pagePrincipale = data["main_page"] == undefined ? 1 : data["main_page"] // les conversations this.conversations = data["conversations"] + + this.majBulle() } } @@ -790,7 +852,7 @@ Client.prototype.flush = function(async) var thisClient = this var ok = true - ;;; dumpObj(this.getJSONProfile()) + ;; dumpObj(this.getJSONProfile()) jQuery.ajax( { async: async, @@ -801,12 +863,16 @@ Client.prototype.flush = function(async) success: function(data) { - ;;; dumpObj(data) + ;; dumpObj(data) if (data["reply"] == "error") { thisClient.util.messageDialogue(data["error_message"]) ok = false } + else + { + thisClient.majBulle() + } } } ) @@ -843,6 +909,14 @@ Client.prototype.majMenu = function() } } +/** + * Met à jour l'affichage des infos bulles en fonction du profile. + */ +Client.prototype.majBulle = function() +{ + this.util.bulleActive = this.viewTooltips +} + Client.prototype.slap = function(userId, raison) { var thisClient = this @@ -873,7 +947,7 @@ Client.prototype.ban = function(userId, raison, minutes) // par défaut un ban correspond à 3 jours if (typeof(minutes) == "undefined") - minutes = 60 * 24 * 3 + minutes = conf.tempsBan; jQuery.ajax({ type: "POST", @@ -898,7 +972,7 @@ Client.prototype.ban = function(userId, raison, minutes) Client.prototype.kick = function(userId, raison) { - this.ban(userId, raison, 15) + this.ban(userId, raison, conf.tempsKick) } /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -956,7 +1030,7 @@ PageEvent.prototype.waitEvent = function(funSend, funReceive) for (v in poulpe) dataToSend[v] = poulpe[v] - ;;; dumpObj(dataToSend) + ;; dumpObj(dataToSend) this.attenteCourante = jQuery.ajax({ type: "POST", @@ -966,7 +1040,7 @@ PageEvent.prototype.waitEvent = function(funSend, funReceive) success: function(data) { - ;;; dumpObj(data) + ;; dumpObj(data) funReceive(data) @@ -1004,7 +1078,7 @@ function initialiserListeStyles(client) } // 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"}) // le main $(document).ready(