Dans quel langage ??
J'ai un vieux exemple en php , mais faut également le modifier . Il est fait en pseudo objet ( c'était à mes débuts ^^ ) et il utilise un template.
<?php
class Calendrier
{
public function __construct() {}
public function showCalendar($periode)
{
// Tableau des valeurs possibles pour un numéro de jour dans la semaine
$tableau = array('0', '1', '2', '3', '4', '5', '6', '0');
$tabJour = array('L','M','M','J','V','S','D');
$nb_jour = Date("t", mktime(0, 0, 0, $this->getMonth($periode), 1, $this->getYear($periode)));
$pas = 0;
$indexe = 1;
$calendrierTemplate = new Template('./');
$calendrierTemplate->set_filenames(array('body' => './templates/calendrier/calendrier.tpl'));
$calendrierTemplate->assign_var('MOIS' ,$this->monthNumToName($this->getMonth($periode)));
$calendrierTemplate->assign_var('ANNEE',$this->getYear($periode));
for ($i=0;$i<sizeof($tabJour);$i++)
{
$calendrierTemplate->assign_block_vars('entete',array('LIBELLE' => $tabJour[$i]));
}
while ($pas < $nb_jour)
{
$class='';
if($indexe==1) $calendrierTemplate->assign_block_vars('semaine' ,array());
if (date("w", mktime(0, 0, 0, $this->getMonth($periode), 1 + $pas, $this->getYear($periode))) == $tableau[$indexe])
{
// Si jour calendrier == aujourd'hui
$afficheJour = date("j", mktime(0, 0, 0, $this->getMonth($periode), 1 + $pas, $this->getYear($periode)));
if (date("Y-m-d", mktime(0, 0, 0, $this->getMonth($periode), 1 + $pas, $this->getYear($periode))) == Date("Y-m-d"))
{
$class = 'class="border"'; // Mettre en evidence la date actuelle
}
// Si jour calendrier == date d'event ou d'anniversaire
$calendrierTemplate->assign_block_vars('semaine.joursemaine',array(
'JOUR' => Date("j", mktime(0, 0, 0, $this->getMonth($periode), 1 + $pas, $this->getYear($periode))),
'CLASS'=> $class
));
$pas++;
}
//
else {
$calendrierTemplate->assign_block_vars('semaine.joursemaine',array(
'JOUR' => ' ',
'CLASS'=> ' '
));
}
if ($indexe == 7 && $pas < $nb_jour) { $indexe = 1;} else {$indexe++;}
}
// Ajustement du tableau
for ($i=$indexe ;$i<7;$i++)
{
$calendrierTemplate->assign_block_vars('semaine.joursemaine',array(
'JOUR' => ' ',
'CLASS'=> ' '
));
}
$calendrierTemplate->pparse('body');
}
private function getSecond($valeur)
{
return substr($valeur, 17, 2);
}
private function getMinute($valeur)
{
return substr($valeur, 14, 2);
}
private function getHour($valeur)
{
return substr($valeur, 11, 2);
}
private function getDay($valeur)
{
return substr($valeur, 8, 2);
}
private function getMonth($valeur)
{
return substr($valeur, 5, 2);
}
private function getYear($valeur)
{
return substr($valeur, 0, 4);
}
private function monthNumToName($mois)
{
$tableau = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aôut", "Septembre", "Octobre", "Novembre", "Décembre");
return (intval($mois) > 0 && intval($mois) < 13) ? $tableau[intval($mois)] : "Indéfini";
}
public function __destruct() {}
}
<div class="titreToolbar">Calendrier</div>
<div class="fondToolbar">
<p>{MOIS} {ANNEE}</p>
<table>
<tr>
<!-- BEGIN entete -->
<td>{entete.LIBELLE}</td>
<!-- END entete -->
</tr>
<!-- BEGIN semaine -->
<tr>
<!-- BEGIN joursemaine -->
<td {semaine.joursemaine.CLASS}>{semaine.joursemaine.JOUR}</td>
<!-- END joursemaine -->
</tr>
<!-- END semaine -->
</table>
</div>
<div class="footerToolbar"></div>
Pour l'utiliser il te faut copier également la class template fournie par phpbb ( pourquoi réinventer la roue ^^ ) .