Kompletní řešení: ZIP
<?php
include ("autoload.php");
// vyrobime si Smarty objekt
$smarty = new MySmarty();
$error = null;
$name = "";
$month = $day = $year = null;
if (isset($_GET['submit'])) {
$month = $_GET['month'];
$day = $_GET['day'];
$year = $_GET['year'];
if (!Calendar::dateExists($day, $month, $year)) {
$error = "Chybné datum, prosím opravte ho.";
} else {
// volame model jak je treba
// zjistime poradove cislo dnu v roce
$dayKey = intval($day).'.'.intval($month).'.';
// kalendar ve forme pole, kde klic je den.mesic.
$names = DataFactory::getNames();
// konkretni svatek pro dany den
$name = $names[$dayKey];
}
} else {
// formular nebyl odeslan, zobraz jen text
}
$smarty->assign("error", $error);
$smarty->assign("name", $name);
$smarty->assign("formattedDate",
Calendar::getFormattedDate($day, $month, $year,'d.m.Y'));
// pro znovuzobrazeni poli ve formulari
$smarty->assign("day", $day);
$smarty->assign("year", $year);
$smarty->assign("month", $month);
$smarty->display("svatky.xhtml");
?>
<?xml version="1.0" encoding="UTF-8"?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Smarty svátky</title>
</head>
<body>
<h1>Svátky</h1>
{if $name != ""}
Svátek {$formattedDate} má {$name}
{/if}
{if $error != null}
{$error|escape:html}
{/if}
<form action="{$smarty.server.PHP_SELF}" method="get">
<label for="day">Den</label>
<input type="text" id="day" name="day" value="{$day|escape:html}" /><br/>
<label for="month">Měsíc</label>
<input type="text" id="month" name="month" value="{$month|escape:html}"/><br/>
<label for="year">Rok</label>
<input type="text" id="year" name="year" value="{$year|escape:html}"/><br/>
<input type="submit" name="submit" value="Odeslat"/>
</form>
</body>
</html>
<?php
include ("autoload.php");
define("TEMPLATE_NAME","clanky.xhtml");
// zjistime, zda jsme admini
$isadmin = false;
if (isset($_GET['isadmin']) && $_GET['isadmin'] == 1) {
$isadmin = true;
}
// vyrobime si Smarty objekt
$smarty = new MySmarty();
// zapneme podporu cache
$smarty->caching = 1;
// nastavime delku platnosti cache
if ($isadmin) {
$smarty->cache_lifetime = 0;
} else {
$smarty->cache_lifetime = 60;
}
// v pripade, ze je cachovano, tak nevolame model
if (!$smarty->is_cached(TEMPLATE_NAME, $isadmin)) {
$articles = DataFactory::getArticles();
$smarty->assign_by_ref("articles", $articles);
}
$smarty->display(TEMPLATE_NAME, $isadmin);
?>
<?xml version="1.0" encoding="UTF-8"?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Smarty články</title>
{literal}
<style type="text/css">
table, th, td {border-collapse:collapse; border: 2px solid black;}
th {background-color: silver;}
.even {background-color: Lavender;}
.odd {background-color: transparent;}
</style>
{/literal}
{debug}
</head>
<body>
<h1>Zde je seznam aktuálních článků</h1>
<table>
<thead>
<tr>
<th>Autor</th>
<th>Titulek</th>
<th>Náhled</th>
</tr>
</thead>
<tbody>
{section name="article" loop=$articles}
<tr class="{cycle values='even,odd'}">
<td>{$articles[article].Author|escape:"html"}</td>
<td>{$articles[article].Title|escape:"html"}</td>
<td>{$articles[article].Text|truncate:100:"...":false|escape:"html"}</td>
</tr>
{/section}
</tbody>
</table>
</body>
</html>