Darathor
Citation :
But : Ajoute des flocons défilant sur le forum. Ces flocons sont activables pour tout le monde ou seulement les membres. De plus, un champ du profil peut être selectionné pour permettre aux membres de changer leur image ou de les désactiver.
Inspiration : Le javascript présenté là.
Prérequis :
- [Sous-MOD] Get table fields (DEV - B)
- (faultatif) [MOD] Extended profile (DEV - K)
Auteur : Darathor (darathor@free.fr)
Version : 1.0 TEST - D (19/12/2005)
Compatibilité phpBB : 2.0.18
SQL (mise à jour depuis TEST - C uniquement) :
Code :
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocons_taille_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocons_nombre_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocons_vitesse_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocons_angle_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocon_img_taille', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocon_vitesse', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocon_angle', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocon_nombre', '' );
SQL (nouvelle installation uniquement) :
Code :
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_desactive_flocons_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocons_img_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocons_taille_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocons_nombre_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocons_vitesse_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocons_angle_field', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_desactive_flocons_visiteurs', '1' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocon_img_address', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocon_img_taille', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocon_vitesse', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocon_angle', '' );
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ( 'FlDe_flocon_nombre', '' );
Dans "admin/admin_board.php" :
Code :
#
# Trouver
#
"L_RESET" => $lang['Reset'],
#
# Ajouter après
#
// FIN MOD Flocons défilants
"L_RUBRIQUE_FLOCONS" => $lang['FlDe_rubrique_flocons'],
"L_DESACTIVE_FLOCONS_VISITEURS" => $lang['FlDe_desactive_flocons_visiteurs'],
"L_DESACTIVE_FLOCONS_VISITEURS_EXPLAIN" => $lang['FlDe_desactive_flocons_visiteurs_explain'],
"L_DESACTIVE_FLOCONS_FIELD" => $lang['FlDe_choose_field'],
"L_DESACTIVE_FLOCONS_FIELD_EXPLAIN" => $lang['FlDe_choose_field_explain'],
"L_FLOCONS_IMG_ADDRESS" => $lang['FlDe_flocon_img_address'],
"L_FLOCONS_IMG_ADDRESS_EXPLAIN" => $lang['FlDe_flocon_img_address_explain'],
"L_FLOCONS_IMG_FIELD" => $lang['FlDe_choose_field_img'],
"L_FLOCONS_IMG_FIELD_EXPLAIN" => $lang['FlDe_choose_field_img_explain'],
"L_FLOCONS_IMG_TAILLE" => $lang['FlDe_flocon_img_taille'],
"L_FLOCONS_IMG_TAILLE_EXPLAIN" => $lang['FlDe_flocon_img_taille_explain'],
"L_FLOCONS_IMG_TAILLE_FIELD" => $lang['FlDe_choose_field_taille'],
"L_FLOCONS_IMG_TAILLE_FIELD_EXPLAIN" => $lang['FlDe_choose_field_taille_explain'],
"L_FLOCONS_NOMBRE" => $lang['FlDe_flocon_nombre'],
"L_FLOCONS_NOMBRE_EXPLAIN" => $lang['FlDe_flocon_nombre_explain'],
"L_FLOCONS_NOMBRE_FIELD" => $lang['FlDe_choose_field_nombre'],
"L_FLOCONS_NOMBRE_FIELD_EXPLAIN" => $lang['FlDe_choose_field_nombre_explain'],
"L_FLOCONS_VITESSE" => $lang['FlDe_flocon_vitesse'],
"L_FLOCONS_VITESSE_EXPLAIN" => $lang['FlDe_flocon_vitesse_explain'],
"L_FLOCONS_VITESSE_FIELD" => $lang['FlDe_choose_field_vitesse'],
"L_FLOCONS_VITESSE_FIELD_EXPLAIN" => $lang['FlDe_choose_field_vitesse_explain'],
"L_FLOCONS_ANGLE" => $lang['FlDe_flocon_angle'],
"L_FLOCONS_ANGLE_EXPLAIN" => $lang['FlDe_flocon_angle_explain'],
"L_FLOCONS_ANGLE_FIELD" => $lang['FlDe_choose_field_angle'],
"L_FLOCONS_ANGLE_FIELD_EXPLAIN" => $lang['FlDe_choose_field_angle_explain'],
// FIN MOD Flocons défilants
#
# Trouver
#
"COPPA_MAIL" => $new['coppa_mail'],
#
# Ajouter après
#
// FIN MOD Flocons défilants
"DESACTIVE_FLOCONS_FIELD" => get_table_fields(USERS_TABLE, 'FlDe_desactive_flocons_field', $new['FlDe_desactive_flocons_field'], TRUE),
"FLOCONS_IMG_FIELD" => get_table_fields(USERS_TABLE, 'FlDe_flocons_img_field', $new['FlDe_flocons_img_field'], TRUE),
"FLOCONS_IMG_TAILLE_FIELD" => get_table_fields(USERS_TABLE, 'FlDe_flocons_taille_field', $new['FlDe_flocons_taille_field'], TRUE),
"FLOCONS_NOMBRE_FIELD" => get_table_fields(USERS_TABLE, 'FlDe_flocons_nombre_field', $new['FlDe_flocons_nombre_field'], TRUE),
"FLOCONS_VITESSE_FIELD" => get_table_fields(USERS_TABLE, 'FlDe_flocons_vitesse_field', $new['FlDe_flocons_vitesse_field'], TRUE),
"FLOCONS_ANGLE_FIELD" => get_table_fields(USERS_TABLE, 'FlDe_flocons_angle_field', $new['FlDe_flocons_angle_field'], TRUE),
"DESACTIVE_FLOCONS_VISITEURS_YES" => ($new['FlDe_desactive_flocons_visiteurs']) ? "checked=\"checked\"" : "",
"DESACTIVE_FLOCONS_VISITEURS_NO" => (!$new['FlDe_desactive_flocons_visiteurs']) ? "checked=\"checked\"" : "",
"FLOCONS_IMG_ADDRESS" => $new['FlDe_flocon_img_address'],
"FLOCONS_IMG_TAILLE" => $new['FlDe_flocon_img_taille'],
"FLOCONS_NOMBRE" => $new['FlDe_flocon_nombre'],
"FLOCONS_VITESSE" => $new['FlDe_flocon_vitesse'],
"FLOCONS_ANGLE" => $new['FlDe_flocon_angle'],
// FIN MOD Flocons défilants
Dans "include/page_header.php" :
Code :
#
# Trouver
#
//
// Login box?
#
# Ajouter avant
#
// DEBUT MOD Flocons défilants
$active_flocons = true;
$image_flocons = trim($board_config['FlDe_flocon_img_address']);
$taille_flocons = (intval($board_config['FlDe_flocon_img_taille']) > 0) ? intval($board_config['FlDe_flocon_img_taille']) : '45';
$nombre_flocons = (intval($board_config['FlDe_flocon_nombre']) > 0) ? intval($board_config['FlDe_flocon_nombre']) : '10';
$vitesse_flocons = (intval($board_config['FlDe_flocon_vitesse']) > 0) ? intval($board_config['FlDe_flocon_vitesse']) : '3';
$angle_flocons = (intval($board_config['FlDe_flocon_angle']) >= 0) ? intval($board_config['FlDe_flocon_angle']) : '5';
if($board_config['FlDe_flocon_img_address'] != '')
{
if($userdata['session_logged_in'] && ($board_config['FlDe_desactive_flocons_field'] != ''))
{
if($userdata[$board_config['FlDe_desactive_flocons_field']] == 1) { $active_flocons = false; }
else
{
$image_flocons = (trim($userdata[$board_config['FlDe_flocons_img_field']]) != '') ? trim($userdata[$board_config['FlDe_flocons_img_field']]) : $image_flocons;
$taille_flocons = (intval($userdata[$board_config['FlDe_flocon_taille_field']]) > 0) ? intval($userdata[$board_config['FlDe_flocon_taille_field']]) : $taille_flocons;
$nombre_flocons = (intval($userdata[$board_config['FlDe_flocon_nombre_field']]) > 0) ? intval($userdata[$board_config['FlDe_flocon_nombre_field']]) : $nombre_flocons;
$vitesse_flocons = (intval($userdata[$board_config['FlDe_flocon_vitesse_field']]) > 0) ? intval($userdata[$board_config['FlDe_flocon_vitesse_field']]) : $vitesse_flocons;
$angle_flocons = (intval($userdata[$board_config['FlDe_flocon_angle_field']]) > 0) ? intval($userdata[$board_config['FlDe_flocon_angle_field']]) : $angle_flocons;
}
}
elseif($board_config['FlDe_desactive_flocons_visiteurs'] == 0) { $active_flocons = false; }
}
else { $active_flocons = false; }
if($active_flocons)
{
$template->assign_block_vars('switch_flocons', array(
'U_FLOCON_IMG' => $image_flocons,
'TAILLE_FLOCONS' => $taille_flocons,
'NOMBRE_FLOCONS' => $nombre_flocons,
'VITESSE_FLOCONS' => $vitesse_flocons,
'ANGLE_FLOCONS' => $angle_flocons)
);
}
// FIN MOD Flocons défilants
Dans "templates/subSilver/admin/board_config_body.tpl" :
Code :
#
# Trouver
#
<tr>
<th class="thHead" colspan="2">{L_COPPA_SETTINGS}</th>
</tr>
#
# Ajouter avant
#
<!-- DEBUT MOD Flocons défilants -->
<tr>
<th class="thHead" colspan="2">{L_RUBRIQUE_FLOCONS}</th>
</tr>
<tr>
<td class="row1">{L_DESACTIVE_FLOCONS_VISITEURS}<br /><span class="gensmall">{L_DESACTIVE_FLOCONS_VISITEURS_EXPLAIN}</span></td>
<td class="row2"><input type="radio" name="FlDe_desactive_flocons_visiteurs" value="1" {DESACTIVE_FLOCONS_VISITEURS_YES} /> {L_YES} <input type="radio" name="FlDe_desactive_flocons_visiteurs" value="0" {DESACTIVE_FLOCONS_VISITEURS_NO} /> {L_NO}</td>
</tr>
<tr>
<td class="row1">{L_DESACTIVE_FLOCONS_FIELD}<br /><span class="gensmall">{L_DESACTIVE_FLOCONS_FIELD_EXPLAIN}</span></td>
<td class="row2">{DESACTIVE_FLOCONS_FIELD}</td>
</tr>
<tr>
<td class="row1">{L_FLOCONS_IMG_ADDRESS}<br /><span class="gensmall">{L_FLOCONS_IMG_ADDRESS_EXPLAIN}</span></td>
<td class="row2"><input class="post" type="text" size="40" maxlength="250" name="FlDe_flocon_img_address" value="{FLOCONS_IMG_ADDRESS}" /></td>
</tr>
<tr>
<td class="row1">{L_FLOCONS_IMG_FIELD}<br /><span class="gensmall">{L_FLOCONS_IMG_FIELD_EXPLAIN}</span></td>
<td class="row2">{FLOCONS_IMG_FIELD}</td>
</tr>
<tr>
<td class="row1">{L_FLOCONS_IMG_TAILLE}<br /><span class="gensmall">{L_FLOCONS_IMG_TAILLE_EXPLAIN}</span></td>
<td class="row2"><input class="post" type="text" size="40" maxlength="250" name="FlDe_flocon_img_taille" value="{FLOCONS_IMG_TAILLE}" /></td>
</tr>
<tr>
<td class="row1">{L_FLOCONS_IMG_TAILLE_FIELD}<br /><span class="gensmall">{L_FLOCONS_IMG_TAILLE_FIELD_EXPLAIN}</span></td>
<td class="row2">{FLOCONS_IMG_TAILLE_FIELD}</td>
</tr>
<tr>
<td class="row1">{L_FLOCONS_NOMBRE}<br /><span class="gensmall">{L_FLOCONS_NOMBRE_EXPLAIN}</span></td>
<td class="row2"><input class="post" type="text" size="40" maxlength="250" name="FlDe_flocon_nombre" value="{FLOCONS_NOMBRE}" /></td>
</tr>
<tr>
<td class="row1">{L_FLOCONS_NOMBRE_FIELD}<br /><span class="gensmall">{L_FLOCONS_NOMBRE_FIELD_EXPLAIN}</span></td>
<td class="row2">{FLOCONS_NOMBRE_FIELD}</td>
</tr>
</tr>
<tr>
<td class="row1">{L_FLOCONS_VITESSE}<br /><span class="gensmall">{L_FLOCONS_VITESSE_EXPLAIN}</span></td>
<td class="row2"><input class="post" type="text" size="40" maxlength="250" name="FlDe_flocon_vitesse" value="{FLOCONS_VITESSE}" /></td>
</tr>
<tr>
<td class="row1">{L_FLOCONS_VITESSE_FIELD}<br /><span class="gensmall">{L_FLOCONS_VITESSE_FIELD_EXPLAIN}</span></td>
<td class="row2">{FLOCONS_VITESSE_FIELD}</td>
</tr>
</tr>
<tr>
<td class="row1">{L_FLOCONS_ANGLE}<br /><span class="gensmall">{L_FLOCONS_ANGLE_EXPLAIN}</span></td>
<td class="row2"><input class="post" type="text" size="40" maxlength="250" name="FlDe_flocon_angle" value="{FLOCONS_ANGLE}" /></td>
</tr>
<tr>
<td class="row1">{L_FLOCONS_ANGLE_FIELD}<br /><span class="gensmall">{L_FLOCONS_ANGLE_FIELD_EXPLAIN}</span></td>
<td class="row2">{FLOCONS_ANGLE_FIELD}</td>
</tr>
<!-- FIN MOD Flocons défilants -->
Dans "templates/subSilver/overall_header.tpl" :
Code :
#
# Trouver
#
</head>
#
# Ajouter avant
#
<!-- BEGIN switch_flocons -->
<script language="Javascript" type="text/javascript">
<!--
var sym = "{switch_flocons.U_FLOCON_IMG}"; // Adresse du flocon.
var intensite = {switch_flocons.NOMBRE_FLOCONS}; // Nombre de flocons.
var imgTaille = {switch_flocons.TAILLE_FLOCONS}; // Taille d'un flocon.
var speed = {switch_flocons.VITESSE_FLOCONS}; // Vitesse des flocons.
var angle = ({switch_flocons.ANGLE_FLOCONS}*Math.PI)/180; // Angle de chute en radians.
var drops = intensite;
var movex = Math.sin(angle)*speed;
var movey = Math.cos(angle)*speed;
var count = 0;
var drop = new Array();
var xx = new Array();
var yy = new Array();
var mvx = new Array();
var mvy = new Array();
var zoneflocons;
//-->
</script>
<script language="Javascript" type="text/javascript" src="templates/flocons.js"></script>
<!-- END switch_flocons -->
#
# Trouver
#
<td class="bodyline"><table width="100%" cellspacing="0" cellpadding="0" border="0">
#
# Remplacer par
#
<td class="bodyline" id="zoneflocons">
<!-- BEGIN switch_flocons -->
<script language="Javascript" type="text/javascript"><!-- initPrecipitation(); --></script>
<!-- END switch_flocons -->
<table width="100%" cellspacing="0" cellpadding="0" border="0">
Dans "language/lang_french/lang_admin.php" :
Code :
#
# Trouver
#
?>
#
# Ajouter avant
#
// DEBUT MOD Flocons défilants
$lang['FlDe_rubrique_flocons'] = 'Configuration des flocons défilants';
$lang['FlDe_choose_field'] = 'Champ utilisateur déterminant l\'affichage des flocons';
$lang['FlDe_choose_field_explain'] = 'Choisissez ici le champ de la table des utilisateur qui détermine pour chaque membre si l\'on doit ou non afficher les flocons. Ce champ doit avoir été ajouté préalablement par un autre MOD (ses valeurs doivent être 0 ou 1). Si vous ne selectionnez pas de champ, les utilisateurs ne pourront pas choisir s\'il veulent voir ou non les flocons.';
$lang['FlDe_choose_field_img'] = 'Champ utilisateur déterminant l\'image des flocons';
$lang['FlDe_choose_field_img_explain'] = 'Choisissez ici le champ de la table des utilisateur qui détermine pour chaque membre l\'adresse de l\'image du flocon. Ce champ doit avoir été ajouté préalablement par un autre MOD (champ texte). Si vous ne selectionnez pas de champ, les utilisateurs ne pourront pas choisir l\'image du flocon qu\'ils voudrons afficher et la valeur par défaut sera imposée.';
$lang['FlDe_choose_field_taille'] = 'Champ utilisateur déterminant l\'a taille de l\'image des flocons';
$lang['FlDe_choose_field_taille_explain'] = 'Choisissez ici le champ de la table des utilisateur qui détermine pour chaque membre l\'a taille de l\'image du flocon. Ce champ doit avoir été ajouté préalablement par un autre MOD (champ entier). Si vous ne selectionnez pas de champ, les utilisateurs ne pourront pas choisir la taille de l\'image du flocon et la valeur par défaut sera imposée.';
$lang['FlDe_choose_field_nombre'] = 'Champ utilisateur déterminant le nombre de flocons';
$lang['FlDe_choose_field_nombre_explain'] = 'Choisissez ici le champ de la table des utilisateur qui détermine pour chaque membre le nombre de flocons. Ce champ doit avoir été ajouté préalablement par un autre MOD (champ entier, idéalement borné entre 0 et 50). Si vous ne selectionnez pas de champ, les utilisateurs ne pourront pas choisir le nombre de flocons et la valeur par défaut sera imposée.';
$lang['FlDe_choose_field_vitesse'] = 'Champ utilisateur déterminant la vitesse des flocons';
$lang['FlDe_choose_field_vitesse_explain'] = 'Choisissez ici le champ de la table des utilisateur qui détermine pour chaque membre l\'adresse de la vitesse des flocons. Ce champ doit avoir été ajouté préalablement par un autre MOD (champ entier, idéalement borné entre 0 et 10). Si vous ne selectionnez pas de champ, les utilisateurs ne pourront pas choisir la vitesse des flocons et la valeur par défaut sera imposée.';
$lang['FlDe_choose_field_angle'] = 'Champ utilisateur déterminant l\'angle de chute des flocons';
$lang['FlDe_choose_field_angle_explain'] = 'Choisissez ici le champ de la table des utilisateur qui détermine pour chaque membre l\'angle de chute des flocons. Ce champ doit avoir été ajouté préalablement par un autre MOD (champ entier). Si vous ne selectionnez pas de champ, les utilisateurs ne pourront pas choisir l\'angle de chute des flocons et la valeur par défaut sera imposée.';
$lang['FlDe_desactive_flocons_visiteurs'] = 'Afficher les flocons aux visiteurs ?';
$lang['FlDe_desactive_flocons_visiteurs_explain'] = 'Choisissez ici si les visiteurs non-enregistrés voient ou non les flosons. Si aucun champ n\'a été sélectionné ci-dessus, ceci concernera tous les visiteurs, y compris les membres inscrits.';
$lang['FlDe_flocon_img_address'] = 'Adresse de l\'image des flocons';
$lang['FlDe_flocon_img_address_explain'] = 'L\'adresse peut être absolue (Ex : <em>www.monsite.com/images/flocon.jpg</em>) ou relative au à la racine du forum (Ex : <em>templates/subSilver/images/flocon.jpg</em>). Si aucune image n\'est définie, le module n\'a pas d\'effet.';
$lang['FlDe_flocon_img_taille'] = 'Taille de l\'image des flocons';
$lang['FlDe_flocon_img_taille_explain'] = 'Maximun entre la largeur et la hauteur des flocons. Si vous définissez un valeur inférieure à la taille réèle de l\'image, les visiteurs auront des bugs d\'affichage.';
$lang['FlDe_flocon_nombre'] = 'Nombre de flocons défilant à l\'écran';
$lang['FlDe_flocon_nombre_explain'] = 'Il est conseillé de ne pas trop dépasser une dizaine car cela pourrait entrainer de trop gros ralentissement chez certains visiteurs.';
$lang['FlDe_flocon_vitesse'] = 'Vitesse de défilement des flocons';
$lang['FlDe_flocon_vitesse_explain'] = 'Idéalement, cette vitesse se titue entre 1 (très lent) et 10 (très rapide).';
$lang['FlDe_flocon_angle'] = 'Angle de chute des flocons';
$lang['FlDe_flocon_angle_explain'] = 'Angle en degré par rapport à une chute verticale vers le bas.';
// FIN MOD Flocons défilants
Uploader à l'emplacement suivant le fichier contenus dans ce zip :
- templates/flocons.js