WebToDate/Kalendář akcí/Tipy a návody: Porovnání verzí

Z WebToDate
Skočit na navigaciSkočit na vyhledávání
 
Řádek 61: Řádek 61:
<div class="note">
<div class="note">
Nejjednodušší postup začlenění měsíčního kalendáře do prezentace je vygenerování výchozího WebToDate stylu pomocí funkce '''Nástroje''' – '''Měsíční kalendář''', vložení klíčového slova na vhodné místo v&nbsp;předloze a výběr tohoto stylu ve formuláři '''Nastavení''' – '''Seznam akcí''' resp'''. Jedna akce'''. Pak lze ve stránce se seznamem akcí zobrazit tento kalendář a pomocí úprav zmíněného WebToDate stylu docílit žádoucí grafiky.</div>
Nejjednodušší postup začlenění měsíčního kalendáře do prezentace je vygenerování výchozího WebToDate stylu pomocí funkce '''Nástroje''' – '''Měsíční kalendář''', vložení klíčového slova na vhodné místo v&nbsp;předloze a výběr tohoto stylu ve formuláři '''Nastavení''' – '''Seznam akcí''' resp'''. Jedna akce'''. Pak lze ve stránce se seznamem akcí zobrazit tento kalendář a pomocí úprav zmíněného WebToDate stylu docílit žádoucí grafiky.</div>
Pro ilustraci uveďme složitější definici stylu měsíčního kalendáře, který při listování měsíci zároveň mění výpis seznamu akcí tak, aby se zobrazovaly vždy akce na stejný měsíc jako se zobrazuje v měsíčním kalendáři.
'''Hlavička'''
<code>
<nowiki><div class="monthSelector"></nowiki>
  <nowiki><div class="prev"><a href="<!--WTD_CALENDAR(PREVMONTHLINK)-->&amp;cmonthfrom=<!--WTD_CALENDAR(PREVMONTHOFFSET)-->&amp;cmonthto=<!--WTD_CALENDAR(PREVMONTHOFFSET)-->" </nowiki>
<nowiki>title="Předchozí měsíc">Předchozí měsíc<span>&nbsp;</span></a></div></nowiki>
  <nowiki><div class="current"><strong><!--WTD_CALENDAR(CURRENTMONTHNAME)--> <!--WTD_CALENDAR(CURRENTYEARNAME)--></strong></div></nowiki>
  <nowiki><div class="next"><a href="<!--WTD_CALENDAR(NEXTMONTHLINK)-->&amp;cmonthfrom=<!--WTD_CALENDAR(NEXTMONTHOFFSET)-->&amp;cmonthto=<!--WTD_CALENDAR(NEXTMONTHOFFSET)-->" </nowiki>
<nowiki>title="Nadcházející měsíc">Nadcházející měsíc<span>&nbsp;</span></a></div></nowiki>
<nowiki></div></nowiki>
<nowiki><table summary="Tabulkové zobrazení kalendáře vybraného měsíce | sloupce: pondělí, úterý, středa, čtvrtek, pátek, sobota, neděle"></nowiki>
  <nowiki><tr></nowiki>
    <nowiki><th>Po</th></nowiki>
    <nowiki><th>Út</th></nowiki>
    <nowiki><th>St</th></nowiki>
    <nowiki><th>Čt</th></nowiki>
    <nowiki><th>Pá</th></nowiki>
    <nowiki><th>So</th></nowiki>
    <nowiki><th>Ne</th></nowiki>
  <nowiki></tr></nowiki>
</code>
'''Tělo'''
<code>
<nowiki><!--WTD_IF(CALCELLEMPTY,"<td> </td>")--></nowiki>
<nowiki><!--WTD_IF(CALCELLDAYONLY,"<td><span><!--WTD_CALENDAR(DAYNUMBER)--></span></td>")--></nowiki>
<nowiki><!--WTD_IF(CALCELLDAYLINK,"<td class="action"><a href="<!--WTD_CALENDAR(DAYLINK)-->&amp;dayfrom=0" </nowiki>
<nowiki>title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")--></nowiki>
<nowiki><!--WTD_IF(CALCELLCURRENTDAYONLY,"<td class="today"><span><!--WTD_CALENDAR(DAYNUMBER)--></span></td>")--></nowiki>
<nowiki><!--WTD_IF(CALCELLCURRENTDAYLINK,"<td class="today action"><a href="<!--WTD_CALENDAR(DAYLINK)-->&amp;dayfrom=0" </nowiki>
<nowiki>title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")--></nowiki>
<nowiki><!--WTD_IF(CALCELLSELECTEDDAYLINK,"<td class="isToday"><a href="<!--WTD_CALENDAR(DAYLINK)-->&amp;dayfrom=0" </nowiki>
<nowiki>title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")--></nowiki>
<nowiki><!--WTD_IF(CALCELLWEEKENDONLY,"<td class="weekend"><span><!--WTD_CALENDAR(DAYNUMBER)--></span></td>")--></nowiki>
<nowiki><!--WTD_IF(CALCELLWEEKENDLINK,"<td class="weekend action"><a href="<!--WTD_CALENDAR(DAYLINK)-->&amp;dayfrom=0" </nowiki>
<nowiki>title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")--></nowiki>
<nowiki><!--WTD_IF(CALCELLHOLIDAYONLY,"<td class="weekend"><span><!--WTD_CALENDAR(DAYNUMBER)--></span></td>")--></nowiki>
<nowiki><!--WTD_IF(CALCELLHOLIDAYLINK,"<td class="weekend action"><a href="<!--WTD_CALENDAR(DAYLINK)-->&amp;dayfrom=0" </nowiki>
<nowiki>title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")--></nowiki>
</code>
'''Patička'''
<code>
<nowiki></table></nowiki>
</code>
'''Začátek sekce'''
<code>
<nowiki><tr></nowiki>
</code>
'''Konec sekce'''
<code>
<nowiki></tr></nowiki>
</code>


== Zobrazení akcí mimo prezentační skripty modulu pomocí SQL seznamů ==
== Zobrazení akcí mimo prezentační skripty modulu pomocí SQL seznamů ==

Aktuální verze z 31. 5. 2011, 14:49

Měsíční kalendář

Funkce umožňuje do stránek se seznamem akcí vložit zobrazování měsíčního kalendáře, pomocí kterého lze přecházet z jednoho měsíce na druhý a klepnutím na konkrétní datum vybrat akce k tomuto datu. Po klepnutí se zobrazuje stránka se seznamem akcí, seznam začíná na vybraném datu stejně, jako kdyby bylo datum vyhledáno pomocí vyhledávacího formuláře.

Možnosti zobrazení kalendáře jsou následující:

  • Zobrazit měsíční přehled s možností přechodu na jiné měsíce či roky
  • Přizpůsobitelná grafika (formátování) celého prvku i výpisy na úrovni lokalizace (názvy či zkratky měsíců a dnů v týdnu)
  • Možnost vyznačit ve zobrazení aktuální datum a vyznačit vybrané datum
  • Možnost rychlého přechodu na dnešní datum
  • Možnost ovlivnit generování odkazu na konkrétní dny – chceme např. aby odkazy na zobrazení seznamu akcí byly umístěny jen na dny, pro které skutečně nějaké akce existují

Celý měsíční kalendář, který je typicky vykreslován jako HTML tabulka, lze charakterizovat jedním WebToDate stylem. Tento styl se používá následovně:

  • Hlavička definuje začátek tabulky, patička konec
  • Hlavička či patička může obsahovat odkazy na předchozí a následující měsíc, eventuálně předchozí či následující rok
  • Zkratky dnů v týdnu mohou být součásti hlavičky či patičky staticky, není pro ně třeba zvláštní dynamický aparát.
  • Začátek a konce sekce definuje jeden řádek s čísly dnů, vždy po sedmi položkách se vkládá nový začátek a konec sekce; celkový počet buněk musí být vždy násobkem sedmi
  • Tělo formátuje jednu buňku. V této buňce se vždy vkládá číslo dne, případně hypertextový odkaz, který je na číslo umístěn.

V těle stylu je vhodné kódy vkládat podmíněně s možností následujících podmínek:

  • Něco jiného vložit pro prázdnou buňku (tedy prvních x buněk a posledních x buněk, které celou tabulku zarovnávají do násobků sedmi), něco jiného do buněk, ve kterých mají být čísla dnů.
  • Podmíněně vložit kódy pro aktuální den
  • Podmíněně vložit kódy pro vybraný den
  • Podmíněně vložit odkaz, pokud na dané číslo dne nějaký hypertextový odkaz má být

Z těchto podmínek plynou následující varianty buněk kalendáře formátované tělem stylu:

  1. Prázdná buňka
  2. Buňka pouze s číslem dne
  3. Buňka s číslem dne a odkazem
  4. Buňka s aktuálním (dnešním) dnem bez odkazu
  5. Buňka s aktuálním (dnešním) dnem s odkazem
  6. Buňka s vybraným dnem s odkazem

Výčet všech klíčových slov a uvedených podmínek je v kapitole Klíčová slova pro zobrazení měsíčního kalendáře, jedná se o konstrukce typu <!--WTD_IF(CALCELLEMPTY,"")--> apod. Zobrazení kalendáře dle stylu uvedeného v této kapitole jako příklad pak vypadá zhruba následovně.

Odkazy generované na čísla dnů mají tvar

default.php?calyear=2004&calmonth=10&calday=13

Zobrazení tohoto URL znamená, že:

  • se zobrazí výpis položek kalendáře od 13.10.2004 včetně
  • se zobrazí kalendář na říjen 2004 s vybraným 13. dnem
  • se nastaví proměnná odpovídající parametru datefrom na 13.10.2004, což např. znamená, že pokud je v předloze vyhledávací formulář, má vyplněné pole datum od tímto datem.

Odkazy na předchozí či následující měsíce a roky mají stejný tvar, ale bez parametrů calday. Pokud tento parametr není specifikován, znamená to, že zbylé dva parametry mají vliv pouze na zobrazení kalendáře, neboli seznam akcí se zobrazí ve výchozím tvaru, jako kdyby byl skript volaný bez parametrů.

Tip: pokud chcete změnit toto výchozí chování tak, aby změna měsíce v měsíčním kalendáři rovnou změnila výpis akcí tak, aby byly vypsány akce na měsíc zvolený v kalendáři, doplňte do odkazů pro listování měsíci parametr calday s hodnotou 1 (první den v měsíci), tedy např.

<a href="<!--WTD_CALENDAR(PREVMONTHLINK)-->&calday=1">&laquo;</a>

Nejjednodušší postup začlenění měsíčního kalendáře do prezentace je vygenerování výchozího WebToDate stylu pomocí funkce NástrojeMěsíční kalendář, vložení klíčového slova na vhodné místo v předloze a výběr tohoto stylu ve formuláři NastaveníSeznam akcí resp. Jedna akce. Pak lze ve stránce se seznamem akcí zobrazit tento kalendář a pomocí úprav zmíněného WebToDate stylu docílit žádoucí grafiky.

Pro ilustraci uveďme složitější definici stylu měsíčního kalendáře, který při listování měsíci zároveň mění výpis seznamu akcí tak, aby se zobrazovaly vždy akce na stejný měsíc jako se zobrazuje v měsíčním kalendáři.

Hlavička

<div class="monthSelector">
 <div class="prev"><a href="<!--WTD_CALENDAR(PREVMONTHLINK)-->&cmonthfrom=<!--WTD_CALENDAR(PREVMONTHOFFSET)-->&cmonthto=<!--WTD_CALENDAR(PREVMONTHOFFSET)-->" 
title="Předchozí měsíc">Předchozí měsíc<span> </span></a></div>
 <div class="current"><strong><!--WTD_CALENDAR(CURRENTMONTHNAME)--> <!--WTD_CALENDAR(CURRENTYEARNAME)--></strong></div>
 <div class="next"><a href="<!--WTD_CALENDAR(NEXTMONTHLINK)-->&cmonthfrom=<!--WTD_CALENDAR(NEXTMONTHOFFSET)-->&cmonthto=<!--WTD_CALENDAR(NEXTMONTHOFFSET)-->" 
title="Nadcházející měsíc">Nadcházející měsíc<span> </span></a></div>
</div>
<table summary="Tabulkové zobrazení kalendáře vybraného měsíce | sloupce: pondělí, úterý, středa, čtvrtek, pátek, sobota, neděle">
 <tr>
   <th>Po</th>
   <th>Út</th>
   <th>St</th>
   <th>Čt</th>
   <th>Pá</th>
   <th>So</th>
   <th>Ne</th>
 </tr>

Tělo

<!--WTD_IF(CALCELLEMPTY,"<td> </td>")-->
<!--WTD_IF(CALCELLDAYONLY,"<td><span><!--WTD_CALENDAR(DAYNUMBER)--></span></td>")-->
<!--WTD_IF(CALCELLDAYLINK,"<td class="action"><a href="<!--WTD_CALENDAR(DAYLINK)-->&dayfrom=0" 
title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")-->
<!--WTD_IF(CALCELLCURRENTDAYONLY,"<td class="today"><span><!--WTD_CALENDAR(DAYNUMBER)--></span></td>")-->
<!--WTD_IF(CALCELLCURRENTDAYLINK,"<td class="today action"><a href="<!--WTD_CALENDAR(DAYLINK)-->&dayfrom=0" 
title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")-->
<!--WTD_IF(CALCELLSELECTEDDAYLINK,"<td class="isToday"><a href="<!--WTD_CALENDAR(DAYLINK)-->&dayfrom=0" 
title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")-->
<!--WTD_IF(CALCELLWEEKENDONLY,"<td class="weekend"><span><!--WTD_CALENDAR(DAYNUMBER)--></span></td>")-->
<!--WTD_IF(CALCELLWEEKENDLINK,"<td class="weekend action"><a href="<!--WTD_CALENDAR(DAYLINK)-->&dayfrom=0" 
title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")-->
<!--WTD_IF(CALCELLHOLIDAYONLY,"<td class="weekend"><span><!--WTD_CALENDAR(DAYNUMBER)--></span></td>")-->
<!--WTD_IF(CALCELLHOLIDAYLINK,"<td class="weekend action"><a href="<!--WTD_CALENDAR(DAYLINK)-->&dayfrom=0" 
title="Akce na <!--WTD_CALENDAR(DAYNUMBER)-->.<!--WTD_CALENDAR(MONTHNUMBER)-->."><!--WTD_CALENDAR(DAYNUMBER)--></a></td>")-->

Patička

</table>

Začátek sekce

<tr>

Konec sekce

</tr>

Zobrazení akcí mimo prezentační skripty modulu pomocí SQL seznamů

Seznamy akcí z tohoto modulu lze prezentovat i na jiných stránkách www prezentace. Vhodným nástrojem toto umožňujícím jsou SQL seznamy, které lze ve WebToDate vytvářet.

Jednoduchá definice SQL seznamu zobrazujícího vybrané položky z databáze kalendáře akcí je na následujícím otisku obrazovky.

Např. dotaz

SELECT ID, NAZEV AS TITLE, DATUM AS DATE
FROM SERVIS JOIN SERVMCONN ON SERVIS.ID = SERVMCONN.ITEMID
WHERE SERVMCONN.MAINID=1 AND SERVIS.DATUM >= CURDATE()
ORDER BY DATUM, ID LIMIT 5

vybírá pět nejbližších akcí z databáze modulu z kalendáře s ID=1, v dotazu lze samozřejmě pomocí klauzule WHERE dále specifikovat jiné podmínky pro výběr.

SQL kódy v těchto typech seznamů jsou závislé na daném typu databáze. Uvedený příklad platí pro databázi MySQL, např. pro databázi MS SQL by bylo nutné uvést tento dotaz jako

SELECT TOP 5 ID, NAZEV AS TITLE, DATUM AS DATE FROM SERVIS JOIN SERVMCONN ON SERVIS.ID = SERVMCONN.ITEMID WHERE SERVMCONN.MAINID=1 AND SERVIS.DATUM >= GETDATE() ORDER BY DATUM, ID

apod.

Seznam lze pak vložit na kteroukoliv generovanou stránku stejným způsobem jako kterýkoliv jiný seznam. Příklad WebToDate stylu, kterým lze pak tento seznam formátovat je např. následující:

Hlavička

<div class="hlv_nadpis">Nejnovější akce</div>
<div class="obalka_seznamu">

Tělo

<div class="polozky_seznamu">
<a href="/scripts/modules/diary/action.php?id=<!--WTD_F(ID)-->">
<!--WTD_F(TITLE)--></a> (<!--WTD_F(DATE)-->)nowiki>
 <nowiki></div>

Patička

</div>

Seznam pak na stránce zobrazuje názvy akcí s datem, klepnutím na název akce se zobrazuje stránka s detailním zobrazením vybrané akce.

Vyhledávání v rámci jednoho resp. všech kalendářů

Samotný modul nemá funkci pro prohledávání více kalendářů najednou, vždy se prohledává pouze jeden vybraný kalendář.

Aby bylo vyhledávání funkční, je třeba vložit do HTML kódu vyhledávacího formuláře parametr calid, např. následujícím způsobem:

<input type="hidden" name="calid" value="<!--WTD_DIARY(CALID)-->" />

Klíčové slovo <!--WTD_DIARY(CALID)--> je při zobrazení stránky nahrazeno za ID aktuálně zobrazovaného kalendáře a tento parametr je pak přenesen do vyhledávacího skriptu.

Prohledávat všechny kalendáře najednou lze pomocí globálního hledání modulu Fulltext – více viz dokumentace k tomuto modulu.

Vypisování seznamu akcí pouze na zvolený den pomocí měsíčního kalendáře

Skript pro výpis seznamu akcí standardně vypisuje seznam akcí od zvoleného data dál, pokud není žádné datum zvoleno, tak od aktuálního data dál. Požadavkem ale může být implementovat možnost zobrazit pomocí kliků na dny v měsíčním kalendáři vždy jen výpis akcí na zvolený den (tj. akce, které ve zvolený den probíhají, datum začátku resp. konec může předcházet resp. následovat za zvoleným dnem).

Na úrovni implementace se toto řeší vložením parametru dayfrom=0 do stylu měsíčního kalendáře, čili tam, kde je standardně klíčové slovo <!--WTD_CALENDAR(DAYLINK)--> je nahrazen tento výraz výrazem <!--WTD_CALENDAR(DAYLINK)-->&dayfrom=0.

Přitom dayfrom=0 znamená, že se mají vypisovat pouze akce k danému dni, dayfrom=1 akce k danému dni plus jednomu následujícímu kalendářnímu dni atd.

Zvýrazňování hledaných slov

Pokud se v modulu vyhledává podle textu (je vyplněn parametr searchtext skriptu pro seznam položek), aplikuje se na popisy akce vypisované v rámci stylu pro seznam akcí (klíčová slova <!--WTD_DIARY(SHORTDESCRIPTION)--> a <!--WTD_DIARY(DESCRIPTION)-->) stejný aparát zvýrazňování klíčových slov jako v modulu Fulltext. To znamená, že slova z hledaného výrazu jsou ohraničena tagem <span class="keyword">…</span>.