Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je voudrais intégrer un agenda dans mon site, j'ai trouvé un code PHP mais je n'arrive pas à le faire fonctionner ?
Si quelqu’un et preneur pour se pencher sur le problème,
merci d'avance
<?php
/**
* Wikazzle 0.1 beta, Copyleft (C) 2007 BohwaZ, Under GNU/GPL License
* http://bohwaz.net/ - http://dev.kd2.org/
*/
// Titre du calendrier
define('TITLE', 'Wikazzle');
// Mot de passe d'accès au calendrier
define('PASSWORD', 'waza');
// Limite d'accès
// none = Aucune limite
// write = Demande le mot de passe pour modifier le calendrier
// read = demande le mot de passe aussi pour pouvoir voir le calendrier
define('ACCESS_LIMIT', 'write');
// Le fichier où seront stockées les données
define('STORAGE_FILE', dirname(__FILE__) . '/wikazzle.datas.php');
function strip_slashes_from_user_data(&$array)
{
foreach ($array as $k => $v)
{
if (is_array($v))
{
strip_slashes_from_user_data($array[$k]);
continue;
}
$array[$k] = stripslashes($v);
}
}
if (get_magic_quotes_gpc())
{
strip_slashes_from_user_data($_GET);
strip_slashes_from_user_data($_POST);
strip_slashes_from_user_data($_COOKIE);
}
function redirect($path='')
{
$url = 'http' . (!empty($_SERVER['HTTPS']) ? 's' : '') . '://' .
$_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . $path;
header('Location: '.$url);
exit;
}
class Wikazzle
{
protected $datas = array();
private $needSave = false;
public function __construct()
{
if (file_exists(STORAGE_FILE))
{
$this->datas = unserialize(file_get_contents(STORAGE_FILE));
}
@session_start();
}
public function __destruct()
{
if ($this->needSave)
{
$datas = serialize($this->datas);
file_put_contents(STORAGE_FILE, $datas);
}
}
private function needSave()
{
$this->needSave = true;
}
public function getOccupationForDay($day)
{
if (isset($this->datas[$day]))
{
return $this->datas[$day];
}
return false;
}
public function freeOccupationForDay($day)
{
unset($this->datas[$day]);
$this->needSave();
}
public function setOccupationForDay($day, $people, $notes='')
{
$this->datas[$day] = array('people' => $people, 'notes' => $notes);
$this->needSave();
}
public function authLogin($login, $password)
{
if ($password != PASSWORD)
{
return false;
}
$_SESSION['auth'] = $login;
return true;
}
public function authLogout()
{
$_SESSION = array();
}
public function authCheck()
{
if (!empty($_SESSION['auth']))
return $_SESSION['auth'];
return false;
}
}
class Render
{
private $wk = false;
private $months = array(1 => "Janvier", "Février", "Mars", "Avril", "Mai",
"Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
private $days = array(1 => "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi",
"Samedi", "Dimanche");
private $colors = array("ffdbfc", "eedbff", "e2dbff", "dbffe4", "dbe9ff", "dbfcff",
"e9ffb3", "eeffdb", "fdffdb", "ffd085", "b5ffa7", "e3d4ae", "ffdbdb", "fff1db");
public function __construct($wk)
{
$this->wk =& $wk;
}
private function getColor($string)
{
$string = strtolower($string);
while ($string[$n])
{
$txt_sum += ord($string[$n++]);
}
$txt_sum %= count($this->colors);
return $this->colors[$txt_sum];
}
private function head()
{
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>'.TITLE.'</title>
<style type="text/css">
* { margin: 0; padding: 0; }
body { font-family: Arial, sans-serif; padding: 1em; max-width: 80em; background: #fff no-repeat 1em 1em
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPkAAABECAMAAAB0xWMJAAAAwFBMVEX8B4T9Eov%2BGZL8KZP%2BMJwvmcv%2BPJ85n9H%2BSahKpNL%2BU6xRqtf%2FXLBerdX%2BZLNisNj%2Fbbdmtd39c7pxuNr9fr9%2BwN79i8aExeKPxuX9ls2XyuP9ndH%2Fos%2Be0Or%2BrNWo1en%2Fsdmz1%2B262%2Bv9vN%2FA4PH%2BxOH%2ByuPI5O%2F%2B0ujT6PT92Ozd7vT93%2FH%2F4e7i8%2Fn%2F5%2FLr8%2Fr96%2FT%2F7vbx9vn88fj49vrz%2Bfv%2F9fv99%2Fb4%2B%2Ff7%2Bf32%2FP77%2Ffr4%2Fv%2F%2F%2FPr%2B%2F%2FxQBZi9AAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9cJDAsAEwzC9cEAAAqLSURBVHja7ZoLV%2BI4FICLU3molcGKKMqgUMVSl4fQ0keg%2F%2F9fbZ5tni1zZh1298zdc2ZpbpLmy725uUm18v%2BhvKdHVLL%2B8ddG4%2B7wlNjzO9ua%2Fn7yzcQ9Pz8%2FEXn6Mb27OrOgvH09eVb%2BXHjj%2FuU5ltOQ31mFzL%2BafNI577ywh%2FvzQkYnIb8tyZdfTD7BmBOVfHyqNb57JOS7LyYnvn3J%2Bf7CPS055MGSfzE5tTBf5OGSl9ORN34LObF5hy%2FyhQVwKvLGV5OPVdcOTk1%2B9lvI83HrvCXG8dW%2Fgvzsy8lh5iI%2FY3LvdOTfEPm330CupK7%2FCnL7BOTZH%2FJTiY3ImycgJ3v87A%2F5%2F5t8818lX028mR8EwSIIfH%2FmcVvxkE9SfFjLJ7X4OsGw08pqyDc%2BFqFa5vUdmAx0esOAL359fXt7f59%2FfCyXyzUU%2BL%2Flx%2Fz9bXqkvoJ8ftuGe%2F2Z%2Ff2ZXthY3rko5eBa592y4b1aZ%2BHd4%2Fw1qiYPOqTRgtv7hq2ys27JnlomOU5vJn%2B2y7pnD2k1%2BUQYrUw%2BcorBbyrJfVav6CsbtcRXTqSTFk5AG40zKA062CP1BvI3WHp28zSd3jVx9eaarPNoRq9S%2BgHvkV3pcgWshqhSy8uYlsqqitzDlJeTcnom8G2dwYs3mwwd2oNXkn97fJ0vi%2BN1SEzV%2BDhSryVPb2DRbVpOApyGNY1wm5bsj%2FTs0QFCH6iaT9W%2B77n1NseXF62xdMwZs249shJaUUH2LLzwmpj0LT9SryPfIjs%2Flo%2B4RjulsX2oJiB9tQilKa6SqlaR49NcV5jREfQt7oRzyZ%2F34Dpe83XpDcsPLg5U6nXkKQK%2F5kMdbvNAyX3l4pAcPQRQXEsIxcRiQoRrIfEZeKfTuZSuKbzLS36qVg4S%2BubUbvNVlzZaymcP5WVTQziFEQbrtnJXQ64uzlcb%2B3tqcQyOaBplEQ8Fc0FxLy%2FhsIUVgUGIkfdj%2BNNdSdHGc8Q%2B7lEDOsFr%2B4bTHC5sJBxYnR4KDmHc%2FH2g54tc9ZSpxYfu0hgATgU2H79EXccR7Jv3MedeTw6G8Nd9Ju8vq5EvPPu4BR2m%2FcDfpWKwiwOHUaOHcoXKvpfPd2dwF%2FghVMGTYd1YzJER5owfz9jlrIEXQOGVTAbcqGXyCE3LEVcUG9wCqIopBmt%2Bmhrq9RL5oYmepUtoNBmNplXa03FGvDUjj%2FNcJC%2F8Qx150HOcbnDM6Q63UFwj%2FwuD2cZvBga9RD7HlUS3yNuorM3Ix4KBA2hyOqZiNvauM8g15F0N%2BX4C%2F%2B1Hx1xlEG9XqoZ4ePYPUzuTXiJ%2FwrWkOjg%2BFDZf4AGsyrAToTyNNwecDf9Icm%2FAd2aQ%2FcYf33cdIvKt1uFaE72O0UvkOBY0l%2BvtLkzjA5J0tySTZuW8u0%2BKtTcqZoNt6UPH3UuvwXG5p5ITcTdGarCYDDC0O5ppyR%2Fw4K4Opg6MeomchH%2BtFOTY3emGM6Lu1%2BeWQFbOgWhzVyWfuJXowRBT90Y%2BfAtwNP7xSqLX1gRu1kvkbT11%2B%2FpuanFLm623iAXxGRfjPKcLjiVfRBXoEVkj4wXxICDFUZzC4Ihsv5vAK%2FQSOeH8iwk63H7u0oNwMwGwHWbU%2FBuubERXw1h5zb2JPM%2F6JvQF7nNcBHMNeUos9WQCr9JL5HiK2jV3Mjie3SO%2F7hb7Nl4C3YyseTVUG20OgQZ69AiDc6FSJT98x2A3xuhWpdd6%2B6GaPGApxaQcyKaIcSNH8%2BcAFeQMvbfRuAn%2FXYaQB0r0aqfV0c2gl8jxo%2F1ZTU5cO8hBj8usGRtUBj9HTrJX6DGCIy%2BUeKaQ0%2Bi1rIluBr1uV7OnNTeQQ2KOGe%2BMPh3pTALk8nZBsed8F9yT3Y3PAsZK1reXyGluJgz2sEuP1eNt7Jq7hTKmBZZ0dugCl9%2B3oQOgeAQZvaPIBQsydK%2B%2BRTE7O7Iy78QzRvlcp5fIl8RB0mpykq2OxX2bxLiFLrOm2U%2FXSF6gl0f0rtxiPxTID1e6FGVaxPE6PQlpV%2FJJ9qnmvp2OU9i3IxKiHe2fO7mK72aiBRn6CAgpXiS7f9HiVpui3BXOXacn5Bfyic5eVpOTw5m0bw%2FUxVpITzlhkokqT7sMfZDxc1W8AUbBe74FOWAoKcoVK6nTqxv4gayOC9nfDwJ55GjOTSTG9YCOXK1PtkHuWM7Q3aiMosU8Bq7zsudCATXQo5y5MJvV6SEQ8QkhBpBNUNjZDs%2Ftg6V4r%2BTXLMYZj9bCduc7chd0c3O6fpkPw4zJD4JJH5%2FgSy8gh2n7Wk48Hm17d4weyqetpC4kvNvNp8Ls6XMbhnuBfKLz67GaV2OiaDGi5gyIQywWC8%2Bl69pfLFYSuuNCwwLXkU9zZF5mC5aN22%2Fo2xH5avQ6fXq4Rf4al9m6UZ8u359JALQfPjn2J3ZOuXl%2B%2B5i%2FPX0nNxoC%2BUqOb8yB1c18yBM4vYF4QBUi%2BJ7OEHbpiEMfAv5ce2ibT5TIiHX6%2FId0HCtzn6Zc%2FXouf0t1dX7dd%2FSHlW7PxdLrkgBPeHFhV9y7kNsMyLeZPGPz0PVYsOiiThx8ZdZstpFcoH%2BaSHDZxTW7UqvQY3KqbzeFm5j0gWdv3s1%2F5StyJMTBCLntJsrkogKd%2B7qUr8YDiDpiC6jo6LPmbzbr9LstH8BTIaRtn67thmU1vrVvp%2BE%2F9f38vyp%2FyH9WEiEQggQVCWW4qIiSG%2B4p2WBhJYUmSWpeWas3vj9Pwu16if7gYL0NgY4cjUj9FmAq5EVfxFemA08KfSL2BPBeteZluaRlKFut0%2Bchr4c%2Fee4lJ%2BttrJDjUcm7WvKr5IAvSfgaCd9Tsl7qBYHAQSXrCkGDDsWiMrePleqI3VJwEh2j6mggKSAias2kLEK%2FBfAoilAnAP0oBHe7Ib%2BSPF1%2FIlnHSZymcZyEcRjHYbhFhXg11enhE374%2FAxTzn4hKfuEjg6rwzqon1Aix4OQCHWF1BsogFK0UdpTyrxkhjU38D9atOGGuJW9LiRkeVKjL6uAXAUPy4ASbyVySpJIGzceGdBv6nL9RJ4LETzfCJOVwEfAFcR0jPIMM7I6PXwdqcEpaZutQAXiLbAUEDFHYYWJmRxUkINIbC%2B9oVBHgn1i6T1bVlKnRz8RJse41YCj8lxHrkGJIjO5ugAShQyYvESaWIqWyO7MyMItFlm%2FLcmxcCbXNpBiexJp7EtL9EZXyYHQAVA6VFoAsQYzkbi44oIMEBCjHqawUMo0F%2BDnbVydyVDrCEZnq1Bv9BpyoPpL3VzlCRmquJTTXVjqsRj1kpZWT44hzwX7Mu9N9OQZFJEDlWQJZcIPogtVtuDGmoo76KFGnxrIY808qV8a6BDggCNlpIAfXAVHXnLowPNE4lTJ6WB3xlS1Wi%2BRhvg5riYngwL4R6IMNMminyOn4PKEKU0UcoYGjB8Uq%2FShjjypJi%2FGBMqhRWw2%2BOmQMDItuQFcNbpKDlLVn%2FNj9aGoqpgkSzOCgpKURRRJJc%2BM5KSlrg1FB2ZyhhbXoMdGh0hNj1rywtk5ct5ACVUeRW4GZ50W8BryPKmxepIS0ZGLCvKYCAIAEMh5CobOlwGZsYK8EMPAs2wPhcAD9HOf6Mafmpe6Ua8l10gc%2Fw1vsI6JnS%2BgIQAAAABJRU5ErkJggg%3D%3D);}
a { color: #009; }
a:hover { color: red; }
h1,#logged,#anonymous { margin-left: 280px; }
#logged { color: darkblue; } #anonymous { color: darkred; }
#logged,#anonymous { margin-bottom: 1em; }
table.calendar { border-collapse: collapse; width: 100%; }
.calendar caption { font-size: 1.3em; font-weight: bold; border-bottom: 2px solid #000; text-align: center; }
.calendar thead .links { height: 1em; line-height: 1em; font-family: Arial, sans-serif; }
.calendar thead .links a { color: #900; font-weight: bold; font-size: 4em; text-decoration: none; }
.calendar thead .links a:hover { color: blue; }
.calendar thead .links .prev { text-align: left; }
.calendar thead .links .next { text-align: right; }
.calendar thead .days th { text-align: center; border: 1px solid #999; width: 14%; padding: 0.2em; }
.calendar tbody td.free, .calendar tbody td.taken { border: 1px solid #ccc; padding: 0.3em; padding-top: 0;
vertical-align: top; }
.calendar tbody td h3 { font-family: Georgia, serif; font-size: 1.5em; color: #999;
font-weight: normal; text-align: center; border-bottom: 2px dashed #eee; margin-bottom: 0.4em; }
.calendar tbody td p { text-align: center; margin-bottom: 0.2em; }
.calendar tbody td.lastday { border-color: #666; background: repeat-y -10px
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1wkMDhYR%2BJ%2Fj0QAAAB10RVh0Q29tbWVudABDcmVhdGVkIHdpdGggVGhlIEdJTVDvZCVuAAAAHElEQVQI12OcMWPGfwYGhs9I%2BAsUo4vhYqOoBQB2YRTYJKiD%2BwAAAABJRU5ErkJggg%3D%3D); }
.calendar tbody td.today { border: 2px solid #000; }
.calendar tbody td.free p.occupation { color: #060; }
.calendar tbody td.taken p.occupation { color: #600; font-weight: bold; }
.calendar tbody td.taken { background-color: #fee; border-color: #000; }
.calendar tbody td .notes { font-size: 0.9em; }
.calendar tbody td.taken h3 { border-color: #999; color: #000; }
.calendar tbody td p.adm { font-size: 0.8em; margin: 0; }
fieldset { border: 1px solid #ccc; padding: 0.5em; }
fieldset legend { font-weight: bold; padding: 0.5em; }
fieldset dl dt label { font-weight: bold; cursor: pointer; }
fieldset dl dd { margin: 0.5em; }
input[type=text], input[type=password], input[type=submit] { padding: 0.2em; font-size: 1.2em; }
input[type=submit] { font-size: 1.3em; font-weight: bold; }
form p.submit { padding: 0.5em; }
p.error { margin: 1em; padding: 0.5em; border: 1px solid red; background: #fee; }
</style>
</head>
<body>
<h1>'.TITLE.'</h1>
';
if ($this->wk->authCheck())
{
echo '
<div id="logged">
<p>Connecté en tant que <strong>'.$this->escape($this->wk->authCheck()).'</strong>.</p>
<p><a href="?logout">Déconnexion</a></p>
</div>';
}
else
{
echo '
<div id="anonymous">
<p>Vous n\'êtes pas connecté. ';
if (ACCESS_LIMIT == 'write')
echo 'Vous devez vous connecter pour modifier le calendrier.';
else if (ACCESS_LIMIT == 'none')
echo 'Vous pouvez vous connecter pour faciliter les modifications du calendrier.';
echo '</p>
<p><a href="?login">Connexion</a></p>
</div>';
}
}
private function foot()
{
echo '
</body>
</html>';
}
private function escape($str)
{
return htmlspecialchars($str);
}
public function login($msg='')
{
$this->head();
if (!empty($msg))
{
echo '<p class="error">'.$this->escape($msg).'</p>';
}
echo '<form method="post" action="?" id="loginForm">
<fieldset>
<legend>Connexion</legend>
<dl>
<dt><label for="f_login">Pseudo/Nom</label></dt>
<dd><input type="text" name="login" value="" id="f_login" /></dd>
<dt><label for="f_password">Mot de passe</label></dt>
<dd><input type="password" name="password" value="" id="f_password" /></dd>
</dl>
<p class="submit">
<input type="submit" value="Connexion" />
</p>
</fieldset>
</form>
';
$this->foot();
}
public function calendar()
{
$this->head();
if (!empty($_GET['y']))
$year = (int) $_GET['y'];
else
$year = date('Y');
if (!empty($_GET['m']))
$month = (int) $_GET['m'];
else
$month = date('m');
$month = sprintf("%02d", $month);
$year = sprintf("%04d", $year);
$ts_first = mktime(0, 0, 0, $month, 1, $year);
$today = date('Ymd');
list($month, $year, $weekday) = explode(',', strftime('%m,%Y,%w', $ts_first));
$weekday = ($weekday + 7 - 1) % 7; #adjust for $first_day
$days_in_month = date('t', $ts_first);
if ($month == 12)
$next = '?y=' . ($year+1) . '&m=01';
else
$next = '?y=' . $year . '&m=' . ($month+1);
if ($month == 1)
$prev = '?y=' . ($year-1) . '&m=12';
else
$prev = '?y=' . $year . '&m=' . ($month-1);
echo '
<script type="text/javascript">
function freeOccupation(Id)
{
if (confirm("Libérer vraiment ?"))
{
var form = document.createElement("form");
form.action = "?"
form.method = "post";
var input = document.createElement("input");
input.type = "hidden";
input.name = "free";
input.value = Id;
form.appendChild(input);
document.getElementsByTagName("body")[0].appendChild(form);
form.submit();
}
}
</script>
<table class="calendar">
<caption>'.$this->months[(int)$month].' '.$year.'</caption>
<thead>
<tr class="links">
<th class="prev" colspan="3"><a href="'.$prev.'" title="Mois précédent">←</a></th>
<th class="next" colspan="4"><a href="'.$next.'" title="Mois suivant">→</a></th>
</tr>
<tr class="days">
';
for ($i=1; $i<=7; $i++)
{
echo '<th>'.$this->days[$i].'</th>';
}
echo '
</tr>
</thead>
<tbody>
<tr>
';
for ($i=1; $i <= $weekday; $i++)
{
echo '
<td class="empty"></td>';
}
for ($day=1; $day <= $days_in_month; $day++, $weekday++)
{
$day = sprintf("%02d", $day);
$id = $year.$month.$day;
if ($weekday == 7)
{
$weekday = 0;
echo '
</tr>
<tr>';
}
$class = '';
if ($weekday == 6)
$class .= 'lastday';
if ($id == $today)
$class .= ' today';
if ($d = $this->wk->getOccupationForDay($id))
{
echo '
<td class="taken '.$class.'" style="background-color: #'.$this->getColor($d['people']).';"><h3>'.(int)$day.'</h3>
<p class="occupation">'.$this->escape($d['people']).'</p>';
if (!empty($d['notes']))
echo '<p class="notes">'.nl2br($this->escape($d['notes'])).'</p>';
if ($this->wk->authCheck())
echo '<p class="adm"><a href="?setOccupation='.$id.'">Modifier</a> |
<a href="#" onclick="freeOccupation('.$id.'); return false;">Libérer</a></p>';
echo '
</td>';
}
else
{
echo '
<td class="free '.$class.'"><h3>'.(int)$day.'</h3>
<p class="occupation">Libre</p>';
if ($this->wk->authCheck())
echo '<p class="adm"><a href="?setOccupation='.$id.'">Occuper</a></p>';
echo '
</td>';
}
}
for ($i=$weekday; $i <= 7; $i++)
{
echo '
<td class="empty"></td>';
}
echo '
</tr>
</tbody>
</table>';
$this->foot();
}
public function setOccupation($day)
{
$this->head();
if ($occ = $this->wk->getOccupationForDay($day))
{
$people = $occ['people'];
$notes = $occ['notes'];
echo '<p class="error">Attention ce jour est déjà occupé.</p>';
}
else
{
$people = $this->wk->authCheck();
$notes = '';
}
$jour = substr($day, -2) . '/' . substr($day, 4, 2) . '/' . substr($day, 0, 4);
echo '<form method="post" action="?" id="occupationForm">
<fieldset>
<legend>Occuper le '.$jour.'</legend>
<dl>
<dt><label for="f_people">Personne(s)</label> (obligatoire)</dt>
<dd><input type="text" name="people" size="50" id="f_people" value="'.$this->escape($people).'" /></dd>
<dt><label for="f_notes">Notes</label></dt>
<dd><textarea name="notes" id="f_notes" cols="50" rows="5">'.$this->escape($notes).'</textarea></dd>
</dl>
<p class="submit">
<input type="hidden" name="day" value="'.$day.'" />
<input type="submit" name="setOccupation" value="Enregistrer" />
</p>
</fieldset>
</form>';
$this->foot();
}
}
$wk = new Wikazzle;
$render = new Render(&$wk);
$error = '';
if ($wk->authCheck() || ACCESS_LIMIT == 'none')
{
if (!empty($_POST['setOccupation']))
{
if (empty($_POST['people']) || empty($_POST['day']))
$error = 'EMPTY';
else
{
if (empty($_POST['notes']))
$_POST['notes'] = '';
$wk->setOccupationForDay($_POST['day'], $_POST['people'], $_POST['notes']);
$error = 'OK';
}
redirect();
}
else if (!empty($_POST['free']))
{
$wk->freeOccupationForDay($_POST['free']);
redirect();
}
}
else
{
if (!empty($_POST['login']) && !empty($_POST['password']))
{
if (!$wk->authLogin($_POST['login'], $_POST['password']))
{
$error = 'MISMATCH';
}
else
{
redirect('?success');
}
}
}
if ((!$wk->authCheck() && ACCESS_LIMIT == 'read') || isset($_REQUEST['login']))
{
if (empty($error) && ACCESS_LIMIT == 'read')
$msg = 'Vous avez besoin de vous connecter pour accéder à cette page.';
if ($error == 'MISMATCH')
$msg = 'Mauvais mot de passe.';
$render->login($msg);
}
elseif ($wk->authCheck() && isset($_GET['setOccupation']))
{
$render->setOccupation($_GET['setOccupation']);
}
elseif (isset($_GET['logout']))
{
$wk->authLogout();
redirect();
}
else
{
$render->calendar();
}
?>
dedega
Hors ligne
Salut dedega,
j'avais testé et installé ce script, sans trop de soucis...
En fonction ici sur ZitePlus : http://www.c-too.com/planning/index.php?perma=planning
Plus d'explications ici : https://ziteplus.giausserand.fr/forum/v … hp?id=1383
Stéphane
Webdesign AvantageWeb
Hors ligne
Merci pour la réponse
c'est tout à fait ce que je cherche.
mais je ne sais pas comment le faire fonctionner ?
page blanche quand je clique sur le lien de la page ou est le code php. ??
j'ai validé la page (Agenda) temporairement sur mon site www.cabrive-volley.com
Je n'ai pas réussi de le faire fonctionner, j'ai intégré celui de Google.
Dernière modification par dedega (26/10/2016 10:39:35)
Hors ligne
Pages : 1