X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageAdmin.js;h=6b1819d664d1f5d063606449689aa9bb5b9766d3;hp=06c2ca5315eb181caf84341f5fc178fcf1f7c688;hb=4a6c575807a90370c0069b688026b10102e1ce10;hpb=ed281cb4331777625994d23a6e424fb7c5b5d2c9 diff --git a/js/pageAdmin.js b/js/pageAdmin.js index 06c2ca5..6b1819d 100644 --- a/js/pageAdmin.js +++ b/js/pageAdmin.js @@ -15,22 +15,23 @@ // // 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) /*jslint laxbreak:true */ -euphorik.PageAdmin = function(client, formateur, util) { - this.nom = "admin"; - +euphorik.PageAdmin = function(client, formatter, util, communication) { + this.name = "admin"; + this.client = client; - this.formateur = formateur; + this.formatter = formatter; this.util = util; - - this.comet = new Comet("admin", euphorik.conf.versionProtocole); - - // le timer qui rappelle periodiquement le rafraichissement des IP bannies + this.communication = communication; + + this.comet = this.communication.createCometConnection("admin"); + + // a timer which will periodically refresh the banned IP list this.timeoutIDmajIPs = null; }; @@ -38,42 +39,18 @@ euphorik.PageAdmin = function(client, formateur, util) { * Interface des pages. */ euphorik.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

' + - '
'; + return '

IPs bannies

'; }; /** * Interface des pages. */ -euphorik.PageAdmin.prototype.charger = function() { - $("#page form#nouveauTroll").submit(function(){ return false; }); - +euphorik.PageAdmin.prototype.charger = function() { var thisPage = this; - - // la liste des trolls proposés par les ekMasters - this.trolls = new euphorik.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(); - } - ); }; /** @@ -81,49 +58,13 @@ euphorik.PageAdmin.prototype.charger = function() { */ euphorik.PageAdmin.prototype.decharger = function() { this.comet.stopAttenteCourante(); - + // supprime le rafraichissement période des ips if (this.timeoutIDmajIPs) { clearTimeout(this.timeoutIDmajIPs); } }; -/** - * Post un troll, le contenu est lu à partir de "input.troll". - */ -euphorik.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; - } - - var dataToSend = { - "header" : { "action" : "put_troll", "version" : euphorik.conf.versionProtocole }, - "cookie" : this.client.cookie, - "content" : content - }; - - jQuery.ajax({ - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(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. */ @@ -134,62 +75,50 @@ euphorik.PageAdmin.prototype.majIPs = function() { var thisPageAdmin = this; - var dataToSend = { - "header" : { "action" : "list_banned_ips", "version" : euphorik.conf.versionProtocole }, - "cookie" : this.client.cookie - }; + 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

'; + } - jQuery.ajax({ - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(data) { - if (data.reply === "list_banned_ips") { - var XHTML = ""; - data.list.each(function(ip) { - XHTML += '
' + ip.ip + '|' + - '' + - ip.remaining_time + - '|'; - ip.users.each(function(user) { - 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 + "'' ?", euphorik.Util.messageType.question, - {"Oui" : function() { - thisPageAdmin.deban(ip); - }, - "Non" : function(){} - } - ); + $("#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); + } + ); }; /** @@ -198,24 +127,10 @@ euphorik.PageAdmin.prototype.majIPs = function() { euphorik.PageAdmin.prototype.deban = function(ip) { var thisPageAdmin = this; - var dataToSend = { - "header" : { "action" : "unban", "version" : euphorik.conf.versionProtocole }, - "cookie" : this.client.cookie, - "ip" : ip - }; - - jQuery.ajax({ - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(data){ - if(data.reply === "error") { - thisPageAdmin.util.messageDialogue(data.error_message); - } - } - }); + this.communication.requete( + "unban", + {"cookie" : this.client.cookie, "ip" : ip} + ); }; /** @@ -223,180 +138,14 @@ euphorik.PageAdmin.prototype.deban = function(ip) { */ euphorik.PageAdmin.prototype.waitEvent = function() { var thisPageAdmin = this; - + this.comet.waitEvent( - function() { return { "last_troll" : thisPageAdmin.trolls.dernierTroll }; }, { - "troll_added" : function(data){ thisPageAdmin.trolls.ajouterTrollEvent(data); }, - "troll_modified" : function(data){ thisPageAdmin.trolls.modifierTrollEvent(data); }, - "troll_deleted" : function(data){ thisPageAdmin.trolls.supprimerTrollEvent(data); }, "banned_ips_refresh" : function(data){ thisPageAdmin.majIPs(); }, "error" : function(data) { - thisTrolls.util.messageDialogue(data.error_message); + thisPage.util.messageDialog(data.error_message); } } ); -}; - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/** - * Représente un troll, pas grand chose finalement. - */ -euphorik.Troll = function(content, author) { - this.content = content; - this.author = author; -}; - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -euphorik.Trolls = function(client, util, formateur) { - this.client = client; - this.util = util; - this.formateur = formateur; - this.dernierTroll = 0; - - this.trolls = {}; -}; - -euphorik.Trolls.prototype.ajouterTrollEvent = function(data) { - var thisTrolls = this; - - var XHTML = ""; - data.trolls.each(function(trollData) { - var troll = new euphorik.Troll(trollData.content, trollData.author); - var trollId = trollData.troll_id; - thisTrolls.trolls[trollId] = troll; - - XHTML += - '
' + - '' + thisTrolls.formateur.traitementComplet(troll.content, troll.author) + '' + - ' - ' + thisTrolls.formateur.traitementComplet(troll.author) + '' + - (trollData.author_id === thisTrolls.client.id ? 'éditerSupprimer' : '') + - '
'; - }); - $("#trolls").append(XHTML); - $("#trolls .troll").filter(function() { return parseInt($(this).attr("id").substr(5), 10) > thisTrolls.dernierTroll; }).each( - function() { - var troll = this; - var id = parseInt($(this).attr("id").substr(5), 10); - - $("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 + "\" ?", - euphorik.Util.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; - } -}; - -euphorik.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; -}; - -euphorik.Trolls.prototype.supprimerTrollEvent = function(data) { - $("#trolls #troll" + data.troll_id).remove(); -}; - -euphorik.Trolls.prototype.modifier = function(id, content) { - var thisTrolls = this; - - var dataToSend = { - "header" : { "action" : "mod_troll", "version" : euphorik.conf.versionProtocole }, - "cookie" : this.client.cookie, - "troll_id" : id, - "content" : content - }; - - jQuery.ajax({ - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(data) { - if (data.reply === "error") { - thisTrolls.util.messageDialogue(data.error_message); - } - } - }); -}; - -/** - * Supprime un troll en fonction de son id. - */ -euphorik.Trolls.prototype.supprimer = function(id) { - var thisTrolls = this; - - var dataToSend = { - "header" : { "action" : "del_troll", "version" : euphorik.conf.versionProtocole }, - "cookie" : this.client.cookie, - "troll_id" : id - }; - - jQuery.ajax({ - type: "POST", - url: "request", - dataType: "json", - data: this.util.jsonVersAction(dataToSend), - success: - function(data) { - if (data.reply === "error") { - thisTrolls.util.messageDialogue(data.error_message); - } - } - }); -}; +}; \ No newline at end of file