Kalendář - výpis
Metoda pro výpis kalendáře
php
public function renderCalendar($month = null, $year = null)
{
// kontrola platnosti data
if (!checkdate($month, 1, $year))
{
$month = null;
$year = null;
echo('Neexistující datum. Vypisuji současný měsíc.');
}
// pokud datum není zadané
if (empty($year))
$year = idate("Y");
if (empty($month))
$month = idate('m');
// hlavička kalendáře
echo('
<table id="calendar">
<tr>
<th colspan="7">' .
// měsíc slovně -> první písmeno velké - bere i s diakritikou
mb_convert_case($this->monthNames[$month], MB_CASE_TITLE, 'UTF-8') . ' ' . $year
. '</th>
</tr>
<tr id="calendar-dayrow">
<td>Po</td><td>Út</td><td>St</td><td>Čt</td><td>Pá</td><td>So</td><td>Ne</td>
</tr>
<tr>');
$date = date_create_from_format('Y-n-j', $year . '-' . $month . '-1');
// předchozí měsíc
$dateSub = date_create_from_format('Y-n-j', $year . '-' . $month . '-1')->sub(new DateInterval('P1M'));
// zjištění začátku týdne
$weekDay = $date->format('w');
if ($weekDay == 0) // začíná nedělí, ta je u nás však 7., 0. pozici vynecháme
$weekDay = 7;
// vynecháme místo
for ($i = $weekDay; $i > 1; $i--)
echo('<td> </td>');
// vypsání jednotlivých dnů
while ($date->format('n') == $month)
{
echo('<td');
// pokud je aktuální měsíc a rok, označí se den -> lze pak zvýraznit pomocí css
if (date('Ymd', $date->getTimestamp()) == date('Ymd'))
echo(' id="calendar-today" ');
echo('>');
echo('<a href="?show=' . $date->format('Y-n-j') . '">' . $date->format('j') . '</a>');
// řádkování podle týdnů
if (($weekDay % 7) == 0)
echo('</tr><tr>');
$weekDay++;
if ($weekDay > 7)
$weekDay = 1;
$date->add(new DateInterval('P1D'));
}
$previousMonth = $dateSub->format('n');
$nextMonth = $date->format('n');
$previousYear = $dateSub->format('Y');
$nextYear = $date->format('Y');
// navigace
echo('
</tr>
<tr>
<td colspan="4">
<a href="?date=' . $previousYear . '-' . $previousMonth . '">
' . $this->monthNames[$previousMonth] . '
</a>
</td>
<td colspan="4" align="right">
<a href="?date=' . $nextYear . '-' . $nextMonth . '">
' . $this->monthNames[$nextMonth] . '
</a>
</td>
</tr>
</table>
');
}
Neformátovaný
Přidáno: 3.12.2012
Expirace: Neuvedeno