X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageAdmin.js;h=6b1819d664d1f5d063606449689aa9bb5b9766d3;hp=9ed847e64530e2e43129a029051e171793342d6a;hb=4a6c575807a90370c0069b688026b10102e1ce10;hpb=85dc0facbc2b2de826978fac3768db7949a6b92f diff --git a/js/pageAdmin.js b/js/pageAdmin.js index 9ed847e..6b1819d 100644 --- a/js/pageAdmin.js +++ b/js/pageAdmin.js @@ -15,23 +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, communication) { - 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.communication = communication; - - this.comet = new Comet("admin", euphorik.conf.versionProtocole); - - // le timer qui rappelle periodiquement le rafraichissement des IP bannies + + this.comet = this.communication.createCometConnection("admin"); + + // a timer which will periodically refresh the banned IP list this.timeoutIDmajIPs = null; }; @@ -39,42 +39,18 @@ euphorik.PageAdmin = function(client, formateur, util, communication) { * 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.communication); - + this.waitEvent(); - + this.majIPs(); - - $("#page form#nouveauTroll input.troll").focus(); - - $("#page form#nouveauTroll button.return").click( - function() { - thisPage.posterTroll(); - } - ); }; /** @@ -82,36 +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; - } - - this.communication.requete( - "put_troll", - {"cookie" : this.client.cookie, "content" : content}, - function(data) { - $("#page form#nouveauTroll input.troll").val(""); - } - ); -}; - /** * Met à jour la liste des IP bannies. */ @@ -121,11 +74,11 @@ euphorik.PageAdmin.prototype.majIPs = function() { } var thisPageAdmin = this; - + this.communication.requete( "list_banned_ips", {"cookie" : this.client.cookie}, - function(data) { + function(data) { var XHTML = ""; data.list.each(function(i, ip) { XHTML += '
' + ip.ip + '|' + @@ -134,23 +87,23 @@ euphorik.PageAdmin.prototype.majIPs = function() { '|'; ip.users.each(function(j, user) { XHTML += (j > 0 ? ", " : "") + - '' + thisPageAdmin.formateur.traitementComplet(user.nick) + '' + - (user.login === "" ? "" : ''); + '' + 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.messageDialogue("Êtes-vous sur de vouloir débannir l'IP ''" + ip + "'' ?", euphorik.Util.messageType.question, + thisPageAdmin.util.messageDialog("Êtes-vous sur de vouloir débannir l'IP ''" + ip + "'' ?", euphorik.Util.messageType.question, {"Oui" : function() { thisPageAdmin.deban(ip); }, @@ -160,7 +113,7 @@ euphorik.PageAdmin.prototype.majIPs = function() { } ); }); - + // 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); @@ -173,9 +126,9 @@ euphorik.PageAdmin.prototype.majIPs = function() { */ euphorik.PageAdmin.prototype.deban = function(ip) { var thisPageAdmin = this; - + this.communication.requete( - "unban", + "unban", {"cookie" : this.client.cookie, "ip" : ip} ); }; @@ -185,148 +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, communication) { - this.client = client; - this.util = util; - this.formateur = formateur; - this.communication = communication; - this.dernierTroll = 0; - - this.trolls = {}; -}; - -euphorik.Trolls.prototype.ajouterTrollEvent = function(data) { - var thisTrolls = this; - - var XHTML = ""; - data.trolls.each(function(i, 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) { - this.communication.requete( - "mod_troll", - {"cookie" : this.client.cookie, "troll_id" : id, "content" : content} - ); -}; - -/** - * Supprime un troll en fonction de son id. - */ -euphorik.Trolls.prototype.supprimer = function(id) { - this.communication.requete( - "del_troll", - {"cookie" : this.client.cookie, "troll_id" : id} - ); -}; +}; \ No newline at end of file