#page.minichat form .return {
height: 16px;
width: 32px;
- background-image: url(../../img/css2/return.png);
+ background-image: url(../../img/css1/return.png);
background-repeat: no-repeat;
background-position: 5px 2px;
vertical-align: top;
* Jamais reproduit avec Opera\r
* Peut être un bug lié à jQuery\r
* Reproduit sur Firefox 2 et 3 !\r
-[2] Lors du click sur le bouton slap/kick/ban il faut fermer la mini fenêtre\r
[2] Après l'ajout d'une image il n'est pas possible de naviger depuis celle ci vers les autres images en utilisant Next et Prev de lightbox après l'avoir affiché\r
[2] cliquer sur les smiles ne marche pas sous IE
[2] Lors d'un logout il faut faire un full refresh (pour mettre à jour les messages auquel on répond par exemple)
[ok] Les processus en attente ne se termine pas lorsque le socket est fermé (pour l'instant un timeout de 1heure est appliqué)
[ok] Possibilité d'enregistrer plusieurs users avec le même login\r
[ok] le return ne marche pas sous IE
+[ok] Lors du click sur le bouton slap/kick/ban il faut fermer la mini fenêtre
=== Idées ===\r
Une fois l'idée validée elle est déplacée dans une version à venir.\r
var conf = {\r
nbMessageAffiche : 40, // (par page)
pseudoDefaut : "<nick>",\r
- tempsAffichageMessageDialogue : 4000, // en ms\r
+ tempsAffichageMessageDialogue : 4000, // en ms
+ tempsKick : 15, // en minute
+ tempsBan : 60 * 24 * 3, // en minutes (3jours)\r
smiles : { \r
"smile" : [/:\)/g, /:-\)/g], \r
"bigsmile" : [/:D/g, /:-D/g],\r
// par défaut un ban correspond à 3 jours
if (typeof(minutes) == "undefined")
- minutes = 60 * 24 * 3
+ minutes = conf.tempsBan;
jQuery.ajax({
type: "POST",
Client.prototype.kick = function(userId, raison)
{
- this.ban(userId, raison, 15)
+ this.ban(userId, raison, conf.tempsKick)
}
///////////////////////////////////////////////////////////////////////////////////////////////////
).appendTo("body")
this.util.infoBulle("Slap", $("#outilsBan #slap"))
- this.util.infoBulle("Kick", $("#outilsBan #kick"))
- this.util.infoBulle("Ban", $("#outilsBan #ban"))
+ this.util.infoBulle("Kick (" + conf.tempsKick + "min)", $("#outilsBan #kick"))
+ this.util.infoBulle("Ban (" + conf.tempsBan / 24 / 60 + " jours)", $("#outilsBan #ban"))
+ this.util.infoBulle("La raison", $("#outilsBan input"))
}
this.util.infoBulle("Ouvrir la conversation liée au troll de la semaine", $("#trollCourant .troll"))
{
thisConversation.client.slap(userId, $("#outilsBan input").val())
$("#outilsBan input").val("")
+ $("#outilsBan").hide()
}
)
$("#kick", outils).click(
{
thisConversation.client.kick(userId, $("#outilsBan input").val())
$("#outilsBan input").val("")
+ $("#outilsBan").hide()
}
)
$("#ban", outils).click(
{
thisConversation.client.ban(userId, $("#outilsBan input").val())
$("#outilsBan input").val("")
+ $("#outilsBan").hide()
}
)
},
connect/0,
connect/1,
reset/0,
+ update/0,
% users :
nouveau_user/2,
end).
+% Met à jour la bd, compare ?VERSION_BD avec la version dans la table 'proprietes'
+% et exécute les patchs nécessaires.
+update() ->
+ mnesia:transaction(
+ fun() ->
+ case mnesia:read({proprietes, version}) of
+ [#proprietes{nom = Version}] ->
+ update(Version);
+ _ ->
+ erreur
+ end
+ end
+ ).
+
+
+% Mise à jour de la BD.
+% attention : il est nécessaire de se trouver dans une transaction.
+update(?VERSION_BD) -> fini;
+update(Version) ->
+ patch(Version),
+ update(Version + 1).
+
+
+% Applique une modification de la BD pour passer d'une version à la suivante.
+% 1 -> 2
+patch(1) ->
+ ok.
+% 2 -> 3
+%patch(2) ->
+
+
% Ajoute un nouveau user et le renvoie
nouveau_user(Pseudo, Cookie) ->
F = fun() ->
\r
\r
-module(euphorik_daemon).
--export([start/1]).
+-export([start/1, reload_euphorik/0]).
-include("../include/euphorik_defines.hrl").
timer:sleep(1000 * trunc(temps_prochaine_election() + 60)),
euphorik_bd:elire_troll(),\r
loop().
-
+
% Renvoie le nombre de seconde qu'il reste jusque au prochain lundi à l'heure donnée (l'heure est sur 24heures)
% 86400 est le nombre de seconde dans un jour
-((calendar:day_of_the_week(Date) - 1) * 86400 + H * 60 * 60 + M * 60 + S),
% attention au cas où deux dates (maintenant et la date d'éction) ne se trouvent pas dans la même semaine.
if Delta =< 0 -> Delta + 7 * 86400; true -> Delta end.
+
+
+% Recharge tous les modules euphorik.
+% Appelé lors d'une mise en prod.
+% TODO : récupérer les noms à partir des .beam dans /modules/ebin
+reload_euphorik() ->
+ lists:foreach(
+ fun(M) ->
+ code:purge(M),
+ code:load_file(M)
+ end,
+ [euphorik_minichat_conversation, euphorik_protocole, euphorik_requests, euphorik_bd, euphorik_daemon]
+ ).
+
+
% @author GBurri\r
+% Version de la BD
+-define(VERSION_BD, 1).
+
+
% Pour générer des id\r
-record(counter,\r
{\r
% You should have received a copy of the GNU General Public License\r
% along with Euphorik. If not, see <http://www.gnu.org/licenses/>.\r
-% Version de la BD
--define(VERSION_BD, 1).
\r
% Le temps d'attente après une erreur de login (mauvais login/pass) : une demie seconde\r
% Permet d'éviter (limiter) les attaques par dictionnaire\r
--- /dev/null
+#!/usr/bin/env escript
+% coding: utf-8
+
+% Executé sur le serveur après la copie des fichiers lors de la mise en production.
+% Recharge les modules de euphorik et met à jour la BD.
+
+main(_) ->
+ net_kernel:start([flynux, shortnames]),
+ io:format("recharchement des modules..~n"),
+ _Pid = spawn_link(yaws@flynux, euphorik_daemon, reload_euphorik, []),
+ receive
+ {'EXIT', _, _} ->
+ io:format("mise à jour de la BD..~n"),
+ spawn(yaws@flynux, euphorik_bd, update, [])
+ end.
+
puts `make`
### COPIE
-$rep_remote = '/tmp/euphorik' #'/var/www/euphorik'
-$host = 'localhost' #"gburri@euphorik.ch:#{rep_remote}"
+$rep_remote = '/var/www/euphorik'
+$host = 'euphorik.ch'
$opt_rsync = ''
def creer_remote_rep(rep)
creer_remote_rep('BD')
Dir.chdir('..')
-print `rsync #{$opt_rsync} index.html #{$host}:#{$rep_remote}`
+print `rsync #{$opt_rsync} index.yaws #{$host}:#{$rep_remote}`
print `rsync #{$opt_rsync} favicon.ico #{$host}:#{$rep_remote}`
print `rsync #{$opt_rsync} -r css #{$host}:#{$rep_remote}`
print `rsync #{$opt_rsync} -r --exclude 'autres' img #{$host}:#{$rep_remote}`
creer_remote_rep('modules')
`rsync #{$opt_rsync} -r modules/ebin #{$host}:#{$rep_remote}/modules`
`rsync #{$opt_rsync} -r pages #{$host}:#{$rep_remote}`
+
+