X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageAdmin.js;h=6b1819d664d1f5d063606449689aa9bb5b9766d3;hp=db50c4ba136a70fe024818abb16172192fa6e218;hb=4a6c575807a90370c0069b688026b10102e1ce10;hpb=5790c374341c5e542ff17a8f245bb5aa43af1d58 diff --git a/js/pageAdmin.js b/js/pageAdmin.js index db50c4b..6b1819d 100644 --- a/js/pageAdmin.js +++ b/js/pageAdmin.js @@ -15,457 +15,137 @@ // // You should have received a copy of the GNU General Public License // along with Euphorik. If not, see . -// +// // La page d'administation, ne peut être accédée que par les ekMaster (admins) -function PageAdmin(client, formateur, util) -{ - this.nom = "admin" - - this.client = client - this.formateur = formateur - this.util = util - - this.pageEvent = new PageEvent("admin", this.util) - - // le timer qui rappelle periodiquement le rafraichissement des IP bannies - this.timeoutIDmajIPs = null -} +/*jslint laxbreak:true */ + + +euphorik.PageAdmin = function(client, formatter, util, communication) { + this.name = "admin"; + + this.client = client; + this.formatter = formatter; + this.util = util; + this.communication = communication; + + this.comet = this.communication.createCometConnection("admin"); + + // a timer which will periodically refresh the banned IP list + this.timeoutIDmajIPs = null; +}; /** * Interface des pages. */ -PageAdmin.prototype.contenu = function() -{ - return '\ -

Trolls

\ -

Un troll est un sujet à débat, en général une question, affiché sur la page principale.

\ -

Chaque semaine un troll est choisi au hasard parmis les trolls proposés et devient le troll de la semaine.

\ -
\ -

\ - \ - \ -

\ -
\ -
\ -

IPs bannies

\ -
' -} +euphorik.PageAdmin.prototype.contenu = function() { + return '

IPs bannies

'; +}; /** * Interface des pages. */ -PageAdmin.prototype.charger = function() -{ - $("#page form#nouveauTroll").submit(function(){return false}) - - var thisPage = this - - // la liste des trolls proposés par les ekMasters - this.trolls = new Trolls(this.client, this.util, this.formateur) - - this.waitEvent() - - this.majIPs() - - $("#page form#nouveauTroll input.troll").focus() - - $("#page form#nouveauTroll button.return").click( - function() - { - thisPage.posterTroll() - } - ) -} +euphorik.PageAdmin.prototype.charger = function() { + var thisPage = this; + + this.waitEvent(); + + this.majIPs(); +}; /** * Interface des pages. */ -PageAdmin.prototype.decharger = function() -{ - this.pageEvent.stopAttenteCourante() - - // supprime le rafraichissement période des ips - if (this.timeoutIDmajIPs) - clearTimeout(this.timeoutIDmajIPs) -} +euphorik.PageAdmin.prototype.decharger = function() { + this.comet.stopAttenteCourante(); -/** - * Post un troll, le contenu est lu à partir de "input.troll". - */ -PageAdmin.prototype.posterTroll = function() -{ - var thisPageAdmin = this - - var content = $("#page form#nouveauTroll input.troll").val() - - content = content.trim() - if (content == "") - { - this.util.messageDialogue("Le troll est vide") - return + // supprime le rafraichissement période des ips + if (this.timeoutIDmajIPs) { + clearTimeout(this.timeoutIDmajIPs); } - - var dataToSend = - { - "action" : "put_troll", - "cookie" : this.client.cookie, - "content" : content - } - - ;; dumpObj(dataToSend) - jQuery.ajax( - { - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(data) - { - ;; dumpObj(data) - - if (data["reply"] == "ok") - { - $("#page form#nouveauTroll input.troll").val("") - } - else if (data["reply"] == "error") - { - thisPageAdmin.util.messageDialogue(data["error_message"]) - } - } - } - ) -} +}; /** * Met à jour la liste des IP bannies. */ -PageAdmin.prototype.majIPs = function() -{ - if (this.timeoutIDmajIPs) - clearTimeout(this.timeoutIDmajIPs) - - var thisPageAdmin = this - - var dataToSend = - { - "action" : "list_banned_ips", - "cookie" : this.client.cookie - } +euphorik.PageAdmin.prototype.majIPs = function() { + if (this.timeoutIDmajIPs) { + clearTimeout(this.timeoutIDmajIPs); + } - ;; dumpObj(dataToSend) - jQuery.ajax( - { - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(data) - { - ;; dumpObj(data) - - if (data["reply"] == "list_banned_ips") - { - var XHTML = "" - for(var i = 0; i < data["list"].length; i++) - { - var ip = data["list"][i] - XHTML += '
' + ip["ip"] + '|' + - '' + - ip["remaining_time"] + - '|' - for(var j = 0; j < ip["users"].length; j++) - { - var user = ip["users"][j] - XHTML += (j > 0 ? ", " : "") + - '' + thisPageAdmin.formateur.traitementComplet(user["nick"]) + '' + - (user["login"] == "" ? "" : '') - } - XHTML += 'débannir
' - } - - if (data["list"].length == 0) - XHTML += '

Aucune IP bannie

' - - $("#ips").html(XHTML) - - $(".ban").each( - function() - { - var ip = $(".ip", this).html() - $(".deban", this).click( - function() - { - thisPageAdmin.util.messageDialogue("Êtes-vous sur de vouloir débannir l'IP ''" + ip + "'' ?", messageType.question, - {"Oui" : function() - { - thisPageAdmin.deban(ip) - }, - "Non" : function(){} - } - ) - } - ) + var thisPageAdmin = this; + + this.communication.requete( + "list_banned_ips", + {"cookie" : this.client.cookie}, + function(data) { + var XHTML = ""; + data.list.each(function(i, ip) { + XHTML += '
' + ip.ip + '|' + + '' + + ip.remaining_time + + '|'; + ip.users.each(function(j, user) { + XHTML += (j > 0 ? ", " : "") + + '' + thisPageAdmin.formatter.completeProcessing(user.nick) + '' + + (user.login === "" ? "" : ''); + }); + XHTML += 'débannir
'; + }); + + if (data.list.length === 0) { + XHTML += '

Aucune IP bannie

'; + } + + $("#ips").html(XHTML); + + $(".ban").each(function() { + var ip = $(".ip", this).html(); + $(".deban", this).click( + function() { + thisPageAdmin.util.messageDialog("Êtes-vous sur de vouloir débannir l'IP ''" + ip + "'' ?", euphorik.Util.messageType.question, + {"Oui" : function() { + thisPageAdmin.deban(ip); + }, + "Non" : function(){} } - ) - } - else if (data["reply"] == "error") - { - thisPageAdmin.util.messageDialogue(data["error_message"]) + ); } - - // rafraichissement toutes les minutes (je sais c'est mal) - // le problème est le rafraichissement des temps restant de bannissement qui doit être fait du coté client - thisPageAdmin.timeoutIDmajIPs = setTimeout(function(){ thisPageAdmin.majIPs() }, 60 * 1000) - } + ); + }); + + // rafraichissement toutes les minutes (je sais c'est mal) + // le problème est le rafraichissement des temps restant de bannissement qui doit être fait du coté client + thisPageAdmin.timeoutIDmajIPs = setTimeout(function(){ thisPageAdmin.majIPs(); }, 60 * 1000); } - ) -} + ); +}; /** * Débannie une ip donnée. */ -PageAdmin.prototype.deban = function(ip) -{ - var thisPageAdmin = this - - var dataToSend = - { - "action" : "unban", - "cookie" : this.client.cookie, - "ip" : ip - } +euphorik.PageAdmin.prototype.deban = function(ip) { + var thisPageAdmin = this; - ;; dumpObj(dataToSend) - jQuery.ajax( - { - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(data) - { - ;; dumpObj(data) - if(data["reply"] == "error") - { - thisPageAdmin.util.messageDialogue(data["error_message"]) - } - } - } - ) -} + this.communication.requete( + "unban", + {"cookie" : this.client.cookie, "ip" : ip} + ); +}; /** * Attente d'événement de la part du serveur. */ -PageAdmin.prototype.waitEvent = function() -{ - var thisPageAdmin = this - - this.pageEvent.waitEvent( - function() { return { "last_troll" : thisPageAdmin.trolls.dernierTroll }}, - { - "troll_added" : function(data){ thisPageAdmin.trolls.ajouterTrollEvent(data) }, - "troll_modified" : function(data){ thisPageAdmin.trolls.modifierTrollEvent }, - "troll_deleted" : function(data){ thisPageAdmin.trolls.supprimerTrollEvent }, - "banned_ips_refresh" : function(data){ thisPageAdmin.majIPs() }, - "error" : - function(data) - { - thisTrolls.util.messageDialogue(data["error_message"]) - } - } - ) -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/** - * Représente un troll, pas grand chose finalement. - */ -function Troll(content, author) -{ - this.content = content - this.author = author -} - - -/////////////////////////////////////////////////////////////////////////////////////////////////// - - -function Trolls(client, util, formateur) -{ - this.client = client - this.util = util - this.formateur = formateur - this.dernierTroll = 0 - - this.trolls = {} -} - -Trolls.prototype.ajouterTrollEvent = function(data) -{ - var thisTrolls = this - - var XHTML = "" - for (var i = 0; i < data["trolls"].length; i++) - { - var troll = new Troll(data["trolls"][i]["content"], data["trolls"][i]["author"]) - var trollId = data["trolls"][i]["troll_id"] - thisTrolls.trolls[trollId] = troll - - XHTML += - '
' + - '' + thisTrolls.formateur.traitementComplet(troll.content, troll.author) + '' + - ' - ' + thisTrolls.formateur.traitementComplet(troll.author) + '' + - (data["trolls"][i]["author_id"] == thisTrolls.client.id ? 'éditerSupprimer' : '') + - '
' - } - $("#trolls").append(XHTML) - $("#trolls .troll").filter(function(){return parseInt($(this).attr("id").substr(5)) > thisTrolls.dernierTroll}).each( - function() - { - var troll = this - var id = parseInt($(this).attr("id").substr(5)) - - $("a[@rel*=lightbox]", this).lightBox() - - $(this).keypress( - function(e) - { - if (e.which == 13) // return - $(".modifier", this).click() - } - ) - $(".delTroll", this).click( - function() - { - thisTrolls.util.messageDialogue( - "Êtes-vous sur de vouloir supprimer le troll \"" + thisTrolls.trolls[id].content + "\" ?", - messageType.question, - { - "oui" : function() - { - thisTrolls.supprimer(id) - }, - "non" : function(){} - } - ) - } - ) - $(".editTroll", this).click( - function() - { - $("span", troll).css("display", "none") - $(troll).append( - '

modifierannuler

' - ) - $("form input.content").focus() - - var virerLeFormulaire = function() - { - $('form', troll).remove() - $('span', troll).css("display", "inline") - } - $("span.modifier", troll).click( - function() - { - var content = $("form input.content", troll).val() - virerLeFormulaire() - thisTrolls.modifier(id, content) - } - ) - $("span.annuler", troll).click( virerLeFormulaire ) - $("form", troll).submit(function(){ return false}) - } - ) - } - ) - - if (data["trolls"].length > 0) - thisTrolls.dernierTroll = data["trolls"][data["trolls"].length - 1]["troll_id"] -} - -Trolls.prototype.modifierTrollEvent = function(data) -{ - var thisTrolls = this - $("#trolls #troll" + data["troll_id"] + " .content").html(thisTrolls.formateur.traitementComplet(data["content"], thisTrolls.trolls[data["troll_id"]].author)) - $("#trolls #troll" + data["troll_id"] + " a[@rel*=lightbox]").lightBox() - thisTrolls.trolls[data["troll_id"]].content = data["content"] -} - -Trolls.prototype.supprimerTrollEvent = function(data) -{ - $("#trolls #troll"+data["troll_id"]).remove() -} - -Trolls.prototype.modifier = function(id, content) -{ - var thisTrolls = this - - var dataToSend = - { - "action" : "mod_troll", - "cookie" : this.client.cookie, - "troll_id" : id, - "content" : content - } - - ;; dumpObj(dataToSend) - jQuery.ajax( - { - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(data) - { - ;; dumpObj(data) - if (data["reply"] == "error") - { - thisTrolls.util.messageDialogue(data["error_message"]) - } - } - } - ) -} - -/** - * Supprime un troll en fonction de son id. - */ -Trolls.prototype.supprimer = function(id) -{ - var thisTrolls = this +euphorik.PageAdmin.prototype.waitEvent = function() { + var thisPageAdmin = this; - var dataToSend = + this.comet.waitEvent( { - "action" : "del_troll", - "cookie" : this.client.cookie, - "troll_id" : id - } - - ;; dumpObj(dataToSend) - jQuery.ajax( - { - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(data) - { - ;; dumpObj(data) - if (data["reply"] == "error") - { - thisTrolls.util.messageDialogue(data["error_message"]) - } + "banned_ips_refresh" : function(data){ thisPageAdmin.majIPs(); }, + "error" : + function(data) { + thisPage.util.messageDialog(data.error_message); } } - ) -} + ); +}; \ No newline at end of file