7. Cvičení - Řešení

Kompletní řešení: ZIP

Svátky

<?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>

Články

<?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>

courses/b6b39zwa/tutorials/solutions/07/start.txt · Last modified: 2018/10/01 15:02 (external edit)