O produktu | Technická podpora | Verze | Videoukázky | Manuály | Nabídka práce | Kontakt
Česky   menu-arrow-gray-horizontal.gif
Domů > Návody > Jak na to ? Postupy, návody, rady > Komponenta Table Calendar - procházení měsíců pomocí AJAX
Další informace
Hledat


Video ukázky
Drag&drop v prostředí Visual PHP™

Nejnovější video ukázky:
Nabídka práce
Společnost
E-VISION International s.r.o.

příjme na dlouhodobou spolupráci PHP5 a JavaScript programátory
pro vývoj produktu Visual PHP™




Více informací ...
Napsali o Visual PHP™
Novinky na e-mail
Váš e-mail

Visual PHP™ Doporučuje!
Pro práci jak v developerském, tak v administrátorském rozhraní doporučujeme používat internetový prohlížeč Mozilla Firefox, na jehož základě je vzhledem ke stabilitě, dodržování standardů konzorcia W3C a ochranným prvkům prohlížeče celý software vyvíjen.

Komponenta Table Calendar - procházení měsíců pomocí AJAX

V předchozím článku jsme si ukázali, jak zobrazit data ve formě kalendáře pomocí komponenty  Table Calendar. Nyní si ukážeme, jak vytvořit kalendář, ve kterém půjde listovat i jednotlivými měsíci. Bude zde použita technologie AJAX (Asynchronous JavaScript and XML, která umožňuje načíst část stránky bez toho, aby bylo nutné celou stránku znovu celou generovat.

Příprava layoutu

Představme si, že kalendář, který jsme si vytvořili pomocí předchozího článku, zobrazujeme v nějakém panelu, tedy, že jej máme vložen v global layoutu. To znamená, že v global layoutu máme přímo umístěnou komponentu Table Calendar.

Abychom mohli dynamicky načítat kalendář, musíme tuto komponentu přesunout do samostatného layoutu (tento a pouze tento layout pak budeme načítat pomocí AJAX). Vytvoříme tedy nový layout například s názvem calendar a do něj umístíme původní komponentu Table Calendar. V global layoutu tuto původní komponentu nahradíme komponentou Include Layout s nastavením názvu layoutu calendar, čímž bude docíleno to, že při načtení stránky se kalendář z layoutu calendar vloží.

Abychom mohli pomocí JavaScriptu a AJAX zaměnit obsah tohoto kalendáře, je nutné ještě "obalit" komponentu Include Layout v global layoutu divem, kterému musíme nastavit nějaké id - např. calendarDiv, abychom tento div mohli pomocí JavaScript najít a nahradit jeho obsah novým kalendářem po kliknutí na tlačítka následující nebo předchozí měsíc. Tyto tlačítka vytvoříme později.

Na konci tohoto kroku tedy máme v global layoutu div s id=calendarDiv, v něm komponentu Include Layout a samostatný layout s nazvem calendar, který již bude generovat samotný kalendář.

Zobrazení aktuálního měsíce a tlačítek pro posun mezi měsíci

Nyní upravíme layout s názvem calendar. Do tohoto layoutu vložíme na začátek tento PHP skript:
if ($month == "")
	$month = (int)date("m", time());
if ($year == "")
	$year = (int)date("Y", time());

$prevMonth = ($month-1 < 1 ? 12 : $month-1);
$prevYear = ($month-1 < 1 ? $year-1 : $year);
$nextMonth = ($month+1 > 12 ? 1 : $month+1);
$nextYear = ($month+1 > 12 ? $year+1 : $year);

$months = array("leden", "únor", "březen", "duben", "květen", "červen", "červenec", "srpen", "září", "říjen", "listopad", "prosinec");

$bom = TDateTime::BOM(mktime(0, 0, 0, $month, 1, $year))->asString();
$eom = TDateTime::EOM(mktime(0, 0, 0, $month, 1, $year))->asString();
Pomocí AJAX totiž budeme předávat parametry $month a $year, které budou určovat, který měsíc a rok se má zobrazit. Proměnné $bom a $eom určují datum prvního a posledního dne v daném měsíci v SQL formátu a využijeme je v samotné komponentě Table Calendar. Proměnné $prevMonth, $prevYear, $nextMonth a $nextYear pak využijeme u tlačítek pro posun mezi měsíci.

Nyní tedy upravíme samotnou komponentu Table Calendar tak, že nastavíme tyto vlastnosti, díky čemuž máme dynamické zobrazování určitého měsíce:
Datum od: {php: $bom}
Datum do: {php: $eom}
Teď už zbývá pouze do tohoto layoutu doplnit zobrazení měsíce a roku a tlačítek pro posun mezi měsíci. Pro zobrazení aktuálního měsíce a roku vložte tento PHP skript:
echo $months[$month-1]."/".$year;
A pak už jenom stačí vytvořit 2 odkazy pro posun mezi měsíci:
<a onclick="loadCalendar({php:$prevMonth},{php:$prevYear});return false;">Předchozí měsíc</a>
<a onclick="loadCalendar({php:$nextMonth},{php:$nextYear});return false;">Další měsíc</a>
Jak je vidět, není to klasický odkaz, ale po kliknutí se volá JavaScript, na který se teď podíváme.

JavaScript pro načtení a zobrazení kalendáře pomocí AJAX

Nyní už zbývá poslední krok, deklarace funkce obsluhující načítání kalendáře. Do global layoutu tedy vložíme JavaScript s tímto obsahem:
function loadCalendar(month, year)
{
        // najdeme div, který obsahuje původní kalendář a jehož obsah chceme nahradit
	var container = document.getElementById("calendarDiv");

        // načteme pomocí AJAX layout s názvem calendar, předáváme parametry month a year
	var content = AJAX.getLayout("calendar", {'month':month,'year':year});

        // nahradíme obsah divu načteným novým kalendářem
	container.innerHTML = content;
}
... kalendář, kterým lze procházet je hotový





UPOZORNĚNÍ

Některé vlastnosti publikované v tomto článku mohou být funkční pouze s nejnovější verzí jádra. Pokud máte starší verzi jádra, doporučujeme provést aktualizaci na nejnovější verzi.

Přihlášení
Vyzkoušejte zdarma

na dobu 30 dní
Aktuální verze jádra
Single Developer 1.7.9.680
20.leden 2012

Professional 1.7.9.680
20.leden 2012

Enterprise 1.7.9.680
20.leden 2012


Příručka pro vývojáře
Developer Guide 1.0.5
10.červenec 2009 09:36:42

Příručka pro administrátory
Administrator Guide 1.0.24
27.srpen 2010 11:58:08

Instalační skript
install.php 1.9.22
12.duben 2012 18:02:40

Novinky v příští verzi
nová událost onGetFilterSQL() pro pole tabulky umožňující nastavit vlastní SQL filtrace
Více ...

rss.gif
Podpora

Fotogalerie 10.5.2012
Sekce: Tvorba prezentací
Chyba v hromadné korespondenci, nelze odeslat příloha (nová verze 6.4.2012
Sekce: Bug reporty
AntiSpam obrázek 6.4.2012
Sekce: Programování
Chyba při opravách textů 4.4.2012
Sekce: Bug reporty
Admin může smazat Developera, je to ok? 27.3.2012
Sekce: Bug reporty
Mapa webu 19.3.2012
Sekce: Tvorba prezentací


rss.gif
Aktuality

Update komponenty Weather
18.listopad 2011
Server weather.com se rozhodl ukončit poskytování informací o počasí zdarma a přešel na placenou variantu (cca 60$ měsíčně). Z tohoto důvodu jsme byli nuceni upravit komponentu Weather tak, aby stahovala informace o počasí z jiného zdroje dat a to konkrétně ze serveru www.worldweatheronline.com. Tento server také poskytuje informace o počasí z celého světa, nicméně množství informací je oproti původnímu zdroji menší.

Ke správné funkčnosti komponenty počasí aktualizujte jádro na verzi 1.7.9.638.
Přidány nové návody
4.říjen 2011
Byl přidán nový návod "Použití jiného HTML editoru"
Powered by Visual PHP ™
© 2008 - 2010 E-VISION International, s.r.o.
O produktu | Technická podpora | Verze | Videoukázky | Manuály | Nabídka práce | Kontakt