WebToDate/Formuláře a katalogy/Reference: Porovnání verzí

Z WebToDate
Skočit na navigaciSkočit na vyhledávání
Bajkvl (diskuse | příspěvky)
Bajkvl (diskuse | příspěvky)
Řádek 475: Řádek 475:
{| class="prettytable"
{| class="prettytable"
| DBF
| DBF
 
| PHP funkce pro manipulaci s DBF soubory nepodporují datový typ MEMO, neboli dlouhé texty. To znamená, že maximální délka textu v jednom poli je omezena na 255 znaků, místo pole typu MEMO se zakládá pole typu CHARACTER (řetězec) a pokud je text v daném poli v SQL databázi delší, ořízne se při exportu na uvedenou hodnotu.
| PHP funkce pro manipulaci s DBF soubory nepodporují datový typ MEMO, neboli dlouhé texty. To znamená, že maximální délka textu v jednom poli je omezena na 255 znaků, místo pole typu MEMO se zakládá pole typu CHARACTER (řetězec) a pokud je text v daném poli v SQL databázi delší, ořízne se při exportu na uvedenou hodnotu.


Řádek 487: Řádek 486:
|-
|-
| XML
| XML
 
| Konvence ohledně pojmenování XML elementů v exportovaném souboru je následující:
| Konvence ohledně pojmenování XML elementů v exportovaném souboru je následující:
Název kořenového elementu je stejný jako název exportované datové tabulky
Název kořenového elementu je stejný jako název exportované datové tabulky
Řádek 498: Řádek 497:
|-
|-
| CSV
| CSV
 
| Lze zvolit jako oddělovač polí čárku nebo středník, záznamy jsou vždy odděleny znakem pro konec řádky.
| Lze zvolit jako oddělovač polí čárku nebo středník, záznamy jsou vždy odděleny znakem pro konec řádky.



Verze z 30. 7. 2009, 11:16

Administrační rozhraní

Nabídka modulu

Kompletní nabídka modulu vypadá následovně:


Nástroje

Položka
Vyhledávací formulář
Styly
Vstupní formulář
Potvrzovací formulář

Nastavení

Seznam předpisů
Globální
Seznam katalogů
Navigační lišta
Předpisy
název předpisu
Seznam položek
Jedna položka
Vyhledávání
Vkládání

Administrace

Práva
Nový katalog
název katalogu
Pole
Třídění

Data

Seznam tabulek
Katalogy
název katalogu
Import
Export
Soubory

Nápověda


Nástroje

Funkce v této nabídce slouží k usnadnění práce při vývoji grafické prezentace katalogu, tj. stránek zobrazujících data katalogu i stránek se vstupními formuláři. Tyto funkce generují WebToDate fragmenty nebo WebToDate styly, které jsou v rámci vytváření definic těchto stránek využitelné. Princip fungování je v zásadě ten, že vždy vybereme, ke kterému katalogu chceme ten který element vygenerovat, funkce podle aktuální definice katalogu vygeneruje příslušný fragment (resp. styl). Tento objekt lze pak po stránce HTML kódu dále upravit a použít na příslušné předloze.

Položka

Funkce Položka generuje fragment, který můžeme použít jako část těla předlohy pro detailní zobrazení jedné položky katalogu.

Soubor:Image022.jpg

V prvé řadě vyberte katalog, pro který chcete příslušný fragment vygenerovat. Dále vyberte jeho zařazení (kategorie apod.) a případně změňte název. Pomocí tlačítka Přidat HTML fragment se v databázi založí nový fragment, okamžitě se zobrazí tlačítko Vyhledat, pomocí kterého lze přejít do režimu editace tohoto fragmentu.

V těle fragmentu se vygeneruje HTML tabulka se zhruba následujícím kódem.


<table>
<tr valign="top"><td>Katalogové číslo</td><td><!--WTD_FC(CATNUMBE)--></td></tr>
<tr valign="top"><td>Skladatel</td><td><!--WTD_FC(COMPOSER)--></td></tr>
<tr valign="top"><td>Interpret</td><td><!--WTD_FC(ARTINAME)--></td></tr>
<tr valign="top"><td>Titul</td><td><!--WTD_FC(PRODTITL)--></td></tr>
<tr valign="top"><td>Nosičů</td><td><!--WTD_FC(NUMINSET)--></td></tr>
<tr valign="top"><td>Nosič</td><td><!--WTD_FC(MAJCONFC)--></td></tr>
<tr valign="top"><td>Čárový kód</td><td><!--WTD_FC(CATBARCO)--></td></tr>
<tr valign="top"><td>Na skladě</td><td><!--WTD_FC(STOCKSTS)--></td></tr>
</table>


Klíčová slova typu WTD_FC reprezentují jednotlivá pole datové tabulky katalogu, jejich názvy se samozřejmě pro každý katalog liší. Generují se ta pole, která mají ve vlastnostech nastaveno Zobrazovat na detailní stránce.

Fragment lze přiřadit na příslušnou předlohu pod vhodným stylem – tento styl typicky vkládá jen tělo fragmentu, jeho definice tedy vypadá většinou tak, jak je znázorněno na následujícím otisku obrazovky (platí i pro všechny ostatní fragmenty v této kapitole).
Soubor:Image023.jpg


Vyhledávací formulář

Funkce Vyhledávací formulář generuje fragment s vyhledávacím formulářem použitelným pro daný katalog. Vygenerovaný kód vypadá zhruba následovně:

<form action="<!--WTD_CATALOGUE(LISTURL)-->" method="post">
<label for="PRIJMENI">Příjmení</label>
<input type="text" id="PRIJMENI" name="PRIJMENI" value=""/>
<input type="submit" name="catalogue_search_button" value="Hledej!" />
</form>

Generují se ta pole, která mají ve vlastnostech nastaveno Použít při prohledávání. Takto vygenerovaný formulář je použitelný pouze v předlohách ke stránkám daného katalogu. Vyhledávací formulář lze vložit i na každou jinou stránku (např. úvodní stránku serveru), v tom případě je ale třeba předem nahradit klíčové slovo <!--WTD_CATALOGUE(LISTURL)--> za URL stránky pro zobrazování seznamu položek daného katalogu, tedy např. /scripts/modules/catalogue/list.php?catalogueid=2 (včetně id katalogu).


Funkce Styly slouží k vygenerování WebToDate stylu formátujícího seznam položek katalogu. Tento styl se pak nastavuje v předpisu katalogu (Nastavení / Předpisy / název předpisu / Seznam položek). Vygenerovaný kód stylu je závislý na zvoleném katalogu, generuje se formou HTML tabulky, jeho tělo vypadá např. takto:

<tr>
<td><!--WTD_FC(CATNUMBE)--></td>
<td><!--WTD_FC(ARTINAME)--></td>
<td><a href="<!--WTD_CATALOGUE(DETAILURL)-->"><!--WTD_FC(PRODTITL)--></a></td>
<td><!--WTD_FC(MAJCONFC)--></td>
</tr>


Klíčová slova typu WTD_FC opět reprezentují jednotlivá pole datové tabulky katalogu, klíčové slovo <!--WTD_CATALOGUE(DETAILURL)--> reprezentuje URL pro zobrazení detailního pohledu na jednu položku. Generují se ta pole, která mají ve vlastnostech nastaveno Zobrazovat v seznamu, odkaz se generuje na pole, které má nastavenou vlastnost Odkaz na detail (pokud takové existuje).


Vstupní formulář

Funkce Vstupní formulář slouží k vygenerování fragmentu s kódem pro formulář použitelný pro daný katalog na veřejné části. Do formuláře se generuje:

  • Adresa skriptu pro uložení dat
  • Chybová hlášení typu WTD_IF, která se zobrazují ve chvíli, kdy nastala některá z možností podle typu chybového hlášení
  • Pole formuláře typu WTD_FCI
  • Označení povinných polí s popiskem

Generují se ta pole katalogu, která mají ve vlastnostech nastaveno Data lze vkládat z veřejné části. Pole, která mají vlastnost Povinně vyplnit, jsou ve vygenerovaném kódu označena. Definice polí katalogu obsahuje rovněž možnost zadat výchozí hodnotu. Tato výchozí hodnota se do kódu formuláře negeneruje, ale je vkládána až ve chvíli zobrazení stránky s formulářem záměnou za příslušné klíčové slovo typu WTD_FCI.


Potvrzovací formulář

Funkce Potvrzovací formulář slouží k vytvoření fragmentu, který lze použít pro zobrazení potvrzovací stránky před vlastním uložením dat do databáze. Výsledný kód je velmi podobný předchozímu případu, pouze pole typu WTD_FCI jsou ve formuláři vždy dvakrát – jednou v kódu stránky pro zobrazení, podruhé jako hidden pole formuláře za účelem vložení dat do databáze.

Nastavení

Tato část nabídky slouží k definování grafické podoby katalogů na veřejné části webu. Oddělují se dvě části – Globální a Předpisy. Globální nastavení je takové, které je společné pro celý modul, nastavení v předpisech jsou zpravidla jedinečná pro daný katalog (v některých případech je lze využít pro více katalogů se stejnou strukturou). Předpisem se rozumí souhrn nastavení pro více stránek – pohledů na data (seznam položek, jedna položka atd.)

Seznam předpisů

Pomocí funkce Seznam předpisů se zakládají nové předpisy, jedinou volbou při zakládání předpisu je jeho název. Po založení se předpis zobrazí v nabídce v této sekci Nastavení, pod názvem předpisu jsou pak jednotlivé položky pro nastavení předpisu.


Globální nastavení

Funkce Globální / Seznam katalogů definuje stránku zobrazující seznam katalogů na veřejné části. Tuto stránku (na URL /scripts/modules/catalogue/default.php) lze využít v případě, že na serveru je definováno více katalogů určených pro zobrazování dat a chceme jednoduše zobrazit jejich seznam. Stránka je definovaná předlohou a stylem seznamu katalogů.

Soubor:Image024.jpg

URL s odkazem na daný katalog ve stylu seznamu katalogů se pak vždy generuje jako odkaz na stránku se seznamem položek katalogu, tedy /scripts/modules/catalogue/list.php?catalogueid=číslo_katalogu.


Navigační lišta

Ve formuláři Navigační lišta je definován vzhled lišty, která je používána pro stránkování seznamů položek.

Soubor:Image025.jpg

Grafický vzhled jednotlivých prvků navigační lišty se definuje pomocí následujících polí:

  1. Předchozí – HTML kód určující formátování odkazu pro přechod na předcházející stránku
  2. Následující – HTML kód určující formátování odkazu pro přechod na další stránku
  3. Hlavička – HTML kód který je umístěn na počátku výsledného kódu navigační lišty
  4. Patička – HTML kód který je umístěn na konci výsledného kódu navigační lišty
  5. Číslo stránky – formátování jednotlivých čísel stránky, které umožní odkliknutí na zvolenou stránku
  6. Aktivní stránka – formátování údaje o čísle aktuální stránky
  7. Separátor – oddělovač mezi jednotlivými čísly stránek.
  8. Počet stránek určuje maximální počet čísel stránek v navigační liště a tím nepřímo ovlivňuje i její šířku.

Pro správnou funkci navigační lišty je nutné do výše popsaných polí zadávat i klíčová slova<!--WTD_NAVIG(URL)--> a <!--WTD_NAVIG(NUMBER)-->.

Jejich použití je zřejmé z následujícího jednoduchého příkladu:

Soubor:Image026.jpg
Definici navigační lišty je třeba po instalaci každého modulu v instalovaném modulu uložit – výchozí hodnoty se po instalaci v databázi nenacházejí a bez uložení se pak navigační lišta na žádné stránce nezobrazí.


Nastavení předpisů

Dále se v nabídce Nastavení nacházejí jednotlivé předpisy a jejich nastavovací formuláře (za předpokladu, že je alespoň jeden předpis založen). Každý předpis se skládá z nastavení Seznam položek, Jedna položka, Vyhledávání a Vkládání. V následující tabulce jsou uvedena URL stránek, ke kterým se tato nastavení vztahují:

Seznam položek /scripts/modules/catalogue/list.php?catalogueid=číslo_katalogu
Jedna položka /scripts/modules/catalogue/detail.php?.....
Vyhledávání /scripts/modules/catalogue/search.php?catalogueid=číslo_katalogu
Vkládání /scripts/modules/catalogue/iform.php?catalogueid=číslo_katalogu

Před uložením kteréhokoliv z těchto formulářů je třeba předem založit příslušnou předlohu resp. předlohy, doporučený postup je založit stránku typu předloha v kategorii Formuláře a katalogy, jako šablonu zvolit předpřipravenou šablonu stránek, která obsahuje vhodnou definici oblasti. Kódy specifické pro danou předlohu je vhodné umístit do separátních fragmentů a ty pak přiřadit na oblast na dané předloze (a předlohu vygenerovat). V rámci jednoho předpisu není povinné volit předlohy a nastavení ve všech čtyřech formulářích – pokud se např. daný katalog používá pouze pro sběr dat pomocí formuláře, není třeba nastavovat vlastnosti zobrazení všech položek či jedné položky apod., ale pouze nastavení pro vkládání dat.

Obecné schéma popisující kroky od použité šablony po výslednou dynamickou HTML stránku je na následujícím obrázku (platí pro všechny moduly WebToDate).

Soubor:Image027.jpg


Formulář Seznam položek definuje předlohu stránky, styl seznamu položek a počet položek na jednu stránku v rámci stránkování. Všechna tato nastavení je nutno při uložení povinně vyplnit.

Formulář Jedna položka definuje předlohu pro detailní zobrazení jednoho záznamu, jedinou možností v tomto formuláři je právě nastavení této předlohy.

Formulář Vyhledávání definuje vlastnosti samostatné vyhledávací stránky, jedinou volbou je zde předloha stránky. Výsledky hledání prezentuje stránka Seznam položek, nikoliv tato stránka. Proto je tato stránka použitelná pouze v případě, kdy chceme mít na jedné stránce vyhledávací formulář a na druhé výsledek hledání. V opačném případě je možné vyhledávací formulář (tedy typicky tělo samostatného fragmentu) použít i na předloze stránky Seznam položek, výsledek bude z hlediska funkčnosti identický.

Posledním formulářem v předpisu je Vkládání. Charakterizuje všechny stránky, které se mohou týkat vkládání dat do daného katalogu z veřejně přístupného adresáře. Jedná se o tyto předlohy:

  • Předloha pro vstupní stránku – použije se pro stránku, ve které je formulář pro vložení dat. Tato volba je ve formuláři povinná, ostatní jsou nepovinné.
  • Předloha pro potvrzovací stránku – použije se volitelně pro stránku, která zobrazuje formulář pro potvrzení vložení dat, data jsou v hidden polích formuláře. Stránka je potřebná pouze pokud se tato funkce používá, neboli ve vlastnostech katalogu je zvoleno Potvrzovací stránka : Ano.
  • Odmítnutí přístupu – používá se v případě, že ve vlastnostech katalogu je nastaveno čtení nebo zápis s omezením na skupinu vybraných uživatelů�. Stránka se vyvolá v případě, že uživatel se úspěšně přihlásí k modulu Registrace a personalizace, ale patří do skupiny, která nemá k dané funkci přístup. Pokud je čtení nebo vkládání dat omezeno na všechny registrované uživatele (ne vybranou skupinu), stránka se nikdy nepoužije a není proto třeba ji nastavovat.
  • Předloha pro e-mail – používá se jako předloha pro e-mail s obsahem formuláře zasílaný na adresu definovanou ve vlastnostech katalogu, je potřebná v případě, že je v těchto vlastnostech nastaveno Veřejný formulář vyvolává: Odeslání e-mailu nebo Obojí.
Soubor:Image028.jpg

V případě využívání této funkce pro vkládání dat z formuláře je v zásadě třeba si připravit ještě jednu stránku, a to tu, která se má uživateli zobrazit po úspěšném vložení dat. URL této stránky se ale nedefinuje v tomto nastavení, ale přímo v kódu formuláře v poli returnurl.

Administrace

Tato část nabídky slouží k zakládání nových katalogů, k definování jejich vlastností a k definování seznamu a vlastností polí katalogů.

Práva

První položkou nabídky jsou Práva. V tomto formuláři se způsobem obvyklým ve všech modulech nastavují práva pro editaci dat jednotlivých katalogů. Po založení katalogu mají právo na editaci dat pouze administrátoři. V tomto formuláři lze tato práva nastavit i pro členy vybraných týmů. V levé části vyberte příslušný katalog, v pravé části vyberte tým a pomocí příslušného tlačítka jej přeřaďte do seznamu Autorizované týmy.

Nový katalog

Pomocí další položky nabídky Nový katalog se zakládají katalogy.

Soubor:Image029.jpg

Povinně se zde vyplňuje název katalogu, volí datová tabulka, nad kterou se katalog vytváří a pole pro jednoznačnou identifikaci záznamů v rámci dané datové tabulky (sloupec datové tabulky, který obsahuje vhodné jedinečné hodnoty, tyto hodnoty musí být použitelné v URL). Ostatní položky jsou nepovinné.

V nabídce Datová tabulka se ve výchozím stavu zobrazují názvy tabulek spravovaných modulem, tj. těch, jejichž názvy začínají na písmena KATD. Pokud je třeba založit katalog nad tabulkou s jiným názvem, existuje tato možnost – je toto třeba povolit v souboru global.php v konstantě CATALOGUE_TABLES (viz kapitola Konfigurace v global.php). Tato volba ovšem pak umožňuje manipulaci s daty této tabulky i s její strukturou (včetně smazání), takže tuto možnost je třeba používat s opatrností. Po založení katalogu již volbu datové tabulky nelze změnit.

V tomto formuláři lze dále volit:

  • Předpis – změnou předpisu dojde ke změně grafických nastavení všech veřejně přístupných stránek patřících k danému katalogu. Jak je vysvětleno v kapitole Pracovní postupy, při zakládání nového katalogu zpravidla ještě definice předpisu není vytvořená, výjimkou může být pouze opakované použití předpisu pro více katalogů s totožnou strukturou.
  • Data jsou přístupná pro čtení – tato volba definuje, kdo může zobrazovat data katalogu pomocí veřejně přístupných skriptů modulu. Pokud je zvoleno Nikomu, stránky pro zobrazení dat katalogu vypíší pro dané ID katalogu chybové hlášení typu "Katalog nebyl nalezen" i v případě, že všechna ostatní nastavení (předpis apod.) jsou v pořádku a funkční. Další možnosti jsou Všem (tj. všem anonymním uživatelům) a Registrovaným s možností nepovinně ještě přístup omezit na vybranou skupinu uživatelů z modulu Registrace a personalizace. V případě, že je použita poslední volba, probíhá před zobrazením stránky s daty katalogu zjišťování, zda je uživatel k modulu Registrace a personalizace přihlášen, pokud tomu tak není, je přesměrován na přihlašovací stránku modulu Registrace a personalizace.
  • Vkládat data mohou – tato volba je analogická předchozí volbě, pouze se vztahuje na možnost vkládání dat pomocí skriptu iform.php.
  • Přihlašovací režim – význam volby je stejný jako v ostatních modulech spolupracujících s modulem Registrace a personalizace. Možnost Vyžadovat přihlášení vždy vyvolá přihlašovací formulář vždy, když v rámci session není uživatel přihlášen, možnost Rozpoznávat registrované uživatele se pokouší identifikovat registrovaného uživatele pomocí cookies, které modul Registrace a personalizace vytváří. Pokud je uživatel pomocí tohoto cookie jednoznačně identifikován, je přihlášen automaticky, v opačném případě opět dojde na přihlášení přes formulář.
  • Veřejný formulář vyvolává – pokud je daný katalog určen k tomu, aby pracoval se vstupním formulářem z veřejné části, v této volbě je třeba nadefinovat, zda se data z formuláře zapisují do datové tabulky, nebo odesílají e-mailem nebo oboje. Pokud je použito odesílání e-mailem, je třeba zadat e-mailovou adresu, na kterou se pošta odesílá a předmět těchto e-mailů.
  • Potvrzovací stránka – v této volbě lze určit, zda po odeslání formuláře s daty dochází rovnou k zápisu dat nebo se má ještě zobrazit potvrzovací stránka a teprve po schválení v této potvrzovací stránce dojde k zápisu dat z formuláře.


Dále se v nabídce Administrace zobrazují jednotlivé katalogy. Klepnutím na název katalogu se zobrazují vlastnosti katalogu. Tento formulář je identický s formulářem pro založení nového katalogu, jedinou změnou je, že nelze změnit výběr datové tabulky.

Pole a Třídění

V nabídce se pod názvem katalogu zobrazují možnosti Pole a Třídění. Pomocí funkce Pole se zakládají pole katalogu, zpravidla platí, že co sloupec datové tabulky to jedno pole katalogu. Formulář pro vlastnosti polí je zobrazen na následujícím otisku obrazovky, každé pole je třeba explicitně do katalogu přidat (např. odkazem Přidat vpravo nahoře).

Soubor:Image030.jpg

Význam jednotlivých políček tohoto formuláře je následující:

  • Pořadové číslo – je třeba povinně explicitně zadat celé číslo, podle kterého se pole řadí. Podle tohoto čísla se řadí pole ve všech případech, kdy se generují fragmenty či styly v sekci Nástroje�, podle tohoto čísla jsou rovněž seřazena editační pole v automaticky sestavovaném editačním formuláři dat katalogu v administračním rozhraní v sekci Data.
  • Jméno pole v databázi – volí se z nabídky názvů polí tak jak jsou definována v datové tabulce katalogu.
  • Zobrazování pole – zadává se povinně popisek. Tento popisek se používá jednak při zobrazování v administrační části (např. ve formuláři při editaci dat), dále jej používají funkce v sekci Nástroje při vytváření fragmentů či stylů – po vygenerování takového objektu lze ovšem opět tyto popisky v HTML kódu jakkoliv měnit či dokonce odstranit. Maximální délka popisku je 50 znaků.
  • Zobrazovat v seznamu – udává, zda chceme zobrazovat pole ve stránce pro zobrazení seznamu položek katalogu. Pokud je zvoleno, nástroj pro generování stylu zahrne toto pole do zobrazení. Pokud klíčové slovo pro dané pole ze stylu pro zobrazení seznamu dodatečně odstraníme, pole nebude v seznamu zobrazováno. Pokud naopak dodatečně zrušíme tuto volbu v tomto formuláři, pole opět nebude zobrazováno, přestože odpovídající klíčové slovo ve stylu pro seznam položek zůstane.
  • Odkaz na detail – toto pole má dvojí význam. Při generování stylu pro seznam položek se na toto pole umístit odkaz na detailní zobrazení (neboli HTML značka <a>), nástroj pro editaci dat katalogu v administrační části na toto pole umístí odkaz na otevření editačního formuláře pro editaci záznamu v seznamu záznamů.
  • Zobrazovat na detailní stránce – pokud je tato volba zvolena, fragment vygenerovaný pomocí funkce Položka obsahuje klíčové slovo pro toto pole. Pokud klíčové slovo z fragmentu manuálně odstraníme, obsah pole se v detailním pohledu na jeden záznam nezobrazuje stejně tak jako v případě, kdy klíčové slovo ve fragmentu ponecháme ale dodatečně zrušíme tuto volbu v tomto formuláři.
  • Používat při prohledávání – Tato volba má dvojí význam. Jednak specifikuje, že podle daného pole je možné prohledávání v administračním rozhraní při editaci dat, jednak toto pole generuje funkce Vyhledávací formulář v sekci Nástroje do příslušného fragmentu. Podporována je možnost hledání pouze u některých datových typů (podle definice typu v datové tabulce) – konkrétně pro textové datové typy a pro celočíselné datové typy. Pokud je tedy např. v datové tabulce sloupec typu datum, nelze v tomto formuláři zvolit jeho prohledávání.
  • Zobrazovat v seznamu při úpravách – pomocí této volby se specifikuje, která pole se zobrazují v seznamu položek v nástroji pro editaci dat v administračním rozhraní. Pokud potřebujete data katalogu v administračním rozhraní editovat, je třeba aspoň jedno pole katalogu označit touto volbou.
  • Data lze vkládat z veřejné části – tato volba vyznačuje, že do tohoto pole je možné vkládat data pomocí vstupního formuláře veřejné části. Takto označená pole generuje funkce Vstupní formulář v sekci Nástroje do HTML kódu fragmentu. Pokud je dodatečně tato volba zrušena, je potřeba i příslušné klíčové slovo typu WTD_FCI odstranit z fragmentu – skript pro vkládání dat s klíčovým slovem příslušným k danému poli přestane pracovat a výsledkem je chyba typu FIELDSNOACCESS (viz chybové stavy v kapitole Veřejné skripty).
  • Výchozí hodnota – v tomto poli lze definovat výchozí hodnotu, která se předvyplní jak v administračním rozhraní ve formuláři pro editaci dat, tak ve veřejném formuláři dosazením hodnoty za příslušné klíčové slovo typu WTD_FCI.
  • Povinně vyplnit – volba vyznačuje, že pole musí povinně obsahovat nějakou hodnotu. Povinné vyplnění se kontroluje jak při vkládání dat formulářem z veřejné části tak při editaci dat v administračním rozhraní.
  • Jedinečná hodnota - volba vyznačuje, že pole musí obsahovat jedinečnou hodnotu v rámci daného sloupce datové tabulky. Hodnota se kontroluje jak při vkládání dat formulářem z veřejné části tak při editaci dat v administračním rozhraní.

Je-li nějaké pole označené jako Jedinečná hodnota, Povinně vyplnit a zároveň je použito jako pole pro jednoznačnou identifikaci ve vlastnostech katalogu a jeho typ je celočíselný, modul jej při vkládání dat z veřejně přístupného formuláře autoinkrementuje, počáteční hodnota je 1.


Druhou funkcí je Třídění. Pomocí definic třídění se specifikuje, v jakém pořadí se budou zobrazovat položky katalogu v zobrazení seznamu položek, týká se to jak zobrazení na veřejné části webu tak v administračním rozhraní pro editaci dat. Pravidel pro třídění pro vybraný katalog lze zadat více, pořadí v jakém se třídící kritéria uplatní se definují ve formuláři pro editaci způsobu třídění.

Soubor:Image031.jpg

Zadává se pole, podle kterého se třídí (výběrem z polí datové tabulky), pořadí v pravidlech třídění a způsob třídění (vzestupně, sestupně).

Data

Nabídka modulu v této části umožňuje:

  • Zakládat nové datové tabulky, měnit jejich strukturu či je mazat
  • Exportovat z datových tabulek data a naopak je do nich importovat
  • Spravovat soubory k importu a exportované soubory
  • Editovat data jednotlivých katalogů


Seznam tabulek

První položkou nabídky je Seznam tabulek. V pravé horní části se zobrazí seznam datových tabulek katalogu, u každé tabulky jsou tlačítka Náhled, Export a Editovat.

Funkce Náhled je nejrychlejší způsob, jak zkontrolovat obsah tabulky – zobrazí v režimu pouze pro čtení prvních několik desítek záznamů v datové tabulce.

Společný formulář se používá pro zakládání nové tabulky (odkaz Přidat vpravo nahoře) a editaci struktury existující tabulky (tlačítko Editovat).

Soubor:Image032.jpg

Formulář má dvě záložky – v záložce Tabulka se zadává pouze jméno tabulky (automaticky se ke jménu předřazují písmena KATD), v záložce Sloupce lze měnit strukturu tabulky.

Editor struktury tabulek mění strukturu okamžitě po potvrzení editace daného řádku, nelze tedy např. přidat několik sloupců na straně prohlížeče a pak změnu dávkově odeslat na server. Tlačítko Odebrat sloupec funguje bez potvrzování, změna se okamžitě provede. Pokud klepneme do kteréhokoliv pole v editačním řádku, ostatní řádky se uzamknou a formulář je v režimu změny vybraného sloupce tabulky.

Názvy sloupců lze volit libovolně s těmito omezeními:

  • Tabulka nesmí obsahovat dva sloupce stejného názvu
  • Maximální délka názvu je 50 znaků
  • Doporučujeme v názvech sloupců používat pouze písmena bez diakritiky a čísla, nikoliv např. mezery apod.

Datové typy se specifikují výběrem v poli Typ sloupce. Možné hodnoty jsou:

  • Celé číslo
  • Znak
  • Řetězec
  • Text
  • Reálné číslo
  • Datum

Typ Znak volte v případě, že pole má obsahovat menší a vždy stejný počet znaků. Typ Řetězec volte v případě, že pole obsahuje pokaždé jiný omezený (typicky do 255) počet znaků. Typ Text volte pro delší texty.


Délky polí lze volit pouze u typů Řetězec a Znak�, u ostatních polí se délky nastavují automaticky a nelze je měnit.

Pole lze rovněž opatřit databázovým indexem. Index je struktura databáze, která zrychluje přístup k datům podle daného sloupce. Použijte tuto možnost v případě, že se podle tohoto pole má třídit nebo vyhledávat. Pole typu Text nelze indexovat.

Strukturu datových tabulek lze měnit i v případě, že tabulka již obsahuje data. Je proto vhodné postupovat velmi obezřetně, data z odstraněného sloupce již rozhodně nelze obnovit.


Katalogy

Další funkcí je editace dat katalogů. Pod nabídkou Data / Katalogy se zobrazují názvy existujících katalogů, klepnutím na název se přechází do nástroje pro editaci dat katalogu. Obrazovka může vypadat např. tak, jak je znázorněno na následujícím otisku.

Soubor:Image033.jpg

V horní části se zobrazuje stránkovaný seznam položek, vpravo nahoře jsou odkazy pro stránkování, přidání nového záznamu a přechod na vyhledávání. V seznamu se zobrazují ty sloupce, které mají v definici katalogu zvoleno Zobrazovat v seznamu při úpravách. Klepnutím na položku se ve spodní části otevírá editační formulář. Odkaz na otevření tohoto formuláře se umístí na to pole, které má v definici katalogu zvoleno Odkaz na detail.

Pomocí editačního formuláře lze záznamy měnit, mazat i přidávat. Formulář nemusí obsahovat všechny sloupce datové tabulky – obsahuje jen ty sloupce, pro které je definováno pole katalogu. Pořadí polí ve formuláři je dáno vlastností Pořadové číslo v definici pole katalogu. Formulář používá i další vlastnosti polí katalogu jako výchozí hodnoty a jedinečnost údaje ve sloupci tabulky.

Vyhledávání používá ta pole, která mají v definici katalogu nastaveno Používat při prohledávání. Pokud je vyplněno více polí vyhledávacího formuláře, spojují se ve vyhledávací podmínce logickou spojkou "a zároveň".

Soubor:Image034.jpg

Je-li nastaveno prohledávání podle aspoň jednoho textového pole, obsahuje formulář zaškrtávací okénko z volbou, zda prohledávat jen začátky textových polí. Pokud je toto zvoleno, musí obsah pole začínat na zadaný text, v opačném případě musí pole obsahovat (kdekoliv) zadaný text. Žádné složitější vyhledávací výrazy nejsou podporovány.


Jako poslední jsou v v nabídce Data funkce pro export a import dat. Pro manipulaci se soubory, které se mají importovat, resp. s exportovanými soubory slouží funkce Soubory. Grafické rozhraní této funkce zpřístupňuje obsah adresáře wwwroot/data a jeho podadresářů. Výchozí složky jsou

/data/katalogy/export/

pro export dat, resp.

/data/katalogy/import/

pro import dat. Adresář pro import lze změnit tak jak je popsáno v kapitole Konfigurace v global.php. Je nutné ručně zajistit, aby exportní i importní adresář existovaly, v opačném případě funkce pro export resp. import nejsou funkční.

V levé části okna pro soubory se přechází mezi složkami. V pravé části se zobrazuje obsah složky, klepnutím na název souboru se zobrazí jeho náhled, tak jak je vidět na následujícím otisku obrazovky.

Soubor:Image035.jpg

Tlačítko Přidat soubor použijte v případě, že chcete do adresáře na serveru kopírovat soubor připravený k importu a umístěný na lokálním disku počítače. Naopak tlačítko Stáhnout soubor použijte v případě, že chcete na lokální disk stáhnout exportovaný soubor�.

Import

Funkce Import nejprve v pravé horní části okna zobrazí seznam souborů v importním adresáři. Klepnutím na název souboru se otevírá ve spodní části formulář pro spuštění importu.

Soubor:Image036.jpg

V záložce Soubor se nachází pouze informace o tom, který soubor bude importován. V záložce Tabulka se nacházejí důležitá nastavení importu. V prvé řadě se zde volí, zda se importuje do existující tabulky nebo má import založit novou tabulku. Pokud se importuje do existující tabulky, lze zvolit, zda nová importovaná data pouze přidat a stávající ponechat nebo původní data nejprve smazat. Tlačítko Náhled zobrazí v novém okně náhled na importovaná data (prvních několik desítek záznamů), tlačítko Import spouští vlastní import dat.

Importovat lze z jednoho z podporovaných formátů dat, poznámky k jednotlivým formátům jsou v následující tabulce.

DBF PHP funkce pro manipulaci s DBF soubory nepodporují datový typ MEMO, neboli dlouhé texty. Sloupce typu MEMO v importovaném DBF souboru se při importu ignorují.
Je-li SQL tabulka při importu zakládána automaticky, převezmou se názvy sloupců z DBF souboru a přiřadí se jim nejpodobnější datové typy SQL databáze.
Při importu do existující tabulky se porovnávají názvy sloupců v SQL tabulce a v importované tabulce a importuje se vyhledáváním sloupců se stejným názvem. To znamená, že struktura SQL tabulky nemusí být identická se strukturou importovaného DBF souboru – pokud jsou v DBF souboru nějaké sloupce navíc, ignorují se, pokud jsou naopak navíc nějaké sloupce v SQL tabulce, dosadí se do nich při importu hodnota null.
DBF formát obsahuje standardně nezobrazovaný sloupec nazvaný deleted, pomocí kterého se v tomto formátu označují odstraněné řádky. Import s tímto sloupcem pracuje – pokud import automaticky zakládá novou tabulku, vytvoří se i sloupce nazvaný deleted. Tento sloupec lze ale z SQL tabulky odstranit a bez problémů z DBF souboru importovat (viz předchozí poznámka).
Texty musí být v DBF souboru v takové kódové stránce v jaké mají být uloženy v SQL databázi, při importu nedochází k překódování.
XML Konvence ohledně pojmenování XML elementů v importovaném souboru je následující:

Název kořenového elementu může být libovolný Elementy oddělující jednotlivé řádky (původní záznamy v SQL tabulce) se vždy musí jmenovat <row> Elementy pro jednotlivá pole jsou pojmenovány stejně jako názvy sloupců v datové tabulce, tedy např. <NAZEV> apod.

Je-li SQL tabulka při importu zakládána automaticky, převezmou se názvy sloupců podle XML struktury. Všechny automaticky založené sloupce datové tabulky v SQL databázi budou mít typ řetězec o délce 255 znaků. Pokud se tedy používá automatické zakládání tabulky při importu, je vhodné následně nastavit správné datové typy pro sloupce tabulky. Další vlastnost, která z tohoto chování vyplývá je ta, že v tomto případě budou všechny texty oříznuty na délku max. 255 znaků. Pokud tedy XML elementy obsahují texty delší než 255 znaků, je třeba buď nejprve strukturu tabulky založit ručně nebo po importu strukturu odpovídajících sloupců změnit (na typ dlouhý text) a import spustit ještě jednou.
Datumy by v importovaném souboru měly být v XML formátu 2005-05-04 11:41:00.
Nejvhodnější kódová stránka pro import je utf-8, importovat lze ale i XML soubory v jiných kódových stránkách.
CSV Zatímco u ostatních formátů se nastavuje pouze tabulka do které se importuje a možnost ponechat či odstranit původní data v datové SQL tabulce, u CSV formátu se ve formuláři vyskytuje důležitá volba Data obsahují názvy sloupců – tuto volbu je třeba vždy správně nastavit.

Oddělovač sloupců může být čárka nebo středník, což je při importu detekováno automaticky.

Při automatickém zakládání SQL tabulky při importu budou mít všechny sloupce typ řetězec o délce 255 znaků – chování je stejné jako u XML formátu včetně možného nežádoucího oříznutí delších textů, je tedy vhodné nejprve strukturu tabulky připravit ručně.

Pokud CSV soubor neobsahuje v prvním řádku názvy sloupců, založí se názvy automaticky podle jmenné konvence sloupec_1, sloupec_2 atd., v opačném případě se sloupce v SQL tabulce pojmenují podle prvního řádku CSV souboru.

Pokud CSV soubor obsahuje v prvním řádku názvy sloupců, při importu do existující tabulky se importuje metodou vyhledávání stejných názvů sloupců v SQL tabulce – záleží tedy na těchto názvech a pokud se název sloupce liší nebude takový sloupec importován. Pokud naopak v prvním řádku názvy sloupců nejsou, importuje se podle pořadí, v jakém jsou sloupce definovány.
Texty musí být v  CSV souboru v takovém kódování, v jakém mají být uloženy v SQL databázi.
Formát datumů se očekává stejný jako u XML formátu.


Při používání importu doporučujeme používat obvyklé konvence pro názvy sloupců tabulek apod., tj. spíše kratší jména, bez diakritiky, pouze písmena a číslice. Funkčnost importu je do značné míry daná tím, jak pracují příslušné funkce PHP – např. PHP funkce zjišťující název sloupce tabulky vrací pro databázi MS SQL Server maximálně 30 znaků, je-li název sloupce delší, import nemůže proběhnout.

Export

Pomocí funkce Export lze exportovat data nejen z tabulek, které spravuje modul Formuláře a katalogy, ale ze všech tabulek databáze, kterou instalace WebToDate používá. V pravé horní části se zobrazuje seznam těchto SQL tabulek, v každém řádku je tlačítko Náhled, které ve spodním rámci zobrazí prvních několik záznamů v tabulce, a dále tlačítko Export, které vyvolá ve spodním rámci formulář pro export dat.

Soubor:Image037.jpg

První záložka exportního formuláře se nazývá Tabulka. Lze v ní specifikovat:

  • Které sloupce vybrané SQL tabulky se exportují
  • Které záznamy tabulky se exportují
  • V jakém pořadí se exportují

V prvé řadě se ve sloupci Vybrat pomocí zaškrtávacích políček vyznačí sloupce, které se mají exportovat.

Výchozí stav formuláře je takový, že není vybrán žádný sloupec. Přinejmenším je proto třeba použít tlačítko Vše a tím vybrat všechny sloupce tabulky.

Dále lze specifikovat kritéria pro export, v podstatě vyhledávací podmínku, která vybere určitou množinu záznamů tabulky. V příslušném řádku formuláře se ve sloupci Splňující podmínku vybere operátor (tj. např. =, >, < apod.) a ve stejném řádku ve sloupci Vzhledem k se zadá příslušná hodnota. Těchto omezujících podmínek lze zadat několik, ve spodní části formuláře je radiopřepínač specifikující, zda se více zadaných podmínek spojuje logickou spojkou "a zároveň" nebo logickou spojkou "nebo". Operátor LIKE znamená, že zadaný řetězec se vyskytuje kdekoliv v textu. Pokud není zadaná žádná omezující podmínka, exportují se všechny záznamy.

Další možností je specifikovat řazení záznamů do exportovaného souboru. Lze vybrat dva sloupečky, podle kterých se řadí (ve formuláři sloupce Primárně a Sekundárně), v posledním sloupci formuláře lze pak specifikovat, zda se jedná o vzestupné nebo sestupné řazení. Není-li žádné řazení vybráno, záznamy se exportují v pořadí, v jakém se nacházejí v SQL tabulce.

Ve druhé záložce Soubor se specifikuje formát exportovaného souboru, jeho název a volba, zda soubor v případě jeho existence kompletně přepsat nebo připojit data na konec souboru.

Soubor:Image038.jpg

Název výstupního souboru zadávejte včetně přípony, vytváří se soubor podle přesně zadaného jména. Pomocí tlačítka Test lze ověřit, zda soubor se zadaným jménem již existuje a export se jej pokusí přepsat nebo takový soubor neexistuje a bude se zakládat nový.

Soubory

Exportovaný soubor je exportní funkcí uložen do adresáře pro export, ze kterého je možné jej stáhnout pomocí funkce Soubory.

Zvolit lze jeden z podporovaných formátů exportovaného souboru, poznámky k jednotlivým formátům jsou v následující tabulce.

DBF PHP funkce pro manipulaci s DBF soubory nepodporují datový typ MEMO, neboli dlouhé texty. To znamená, že maximální délka textu v jednom poli je omezena na 255 znaků, místo pole typu MEMO se zakládá pole typu CHARACTER (řetězec) a pokud je text v daném poli v SQL databázi delší, ořízne se při exportu na uvedenou hodnotu.
Maximální délka názvu sloupce je 10 znaků. Pokud má v SQL databázi daný sloupec název s větší délkou, je název v exportovaném souboru oříznut na 10 znaků. To může znamenat, že exportovaný soubor není možné zpětně do stejné tabulky naimportovat, v takovém případě je třeba v datové tabulce volit názvy sloupců splňující tento limit.
Texty jsou v exportovaném DBF souboru v takovém kódování, v jakém jsou uloženy v SQL databázi.
XML Konvence ohledně pojmenování XML elementů v exportovaném souboru je následující:

Název kořenového elementu je stejný jako název exportované datové tabulky Elementy oddělující jednotlivé řádky (původní záznamy v SQL tabulce) se vždy jmenují <row> Elementy pro jednotlivá pole jsou pojmenována stejně jako názvy sloupců v datové tabulce, tedy např. <NAZEV> apod., názvy nemají délkový limit jak je tomu u DBF souborů.

Výstupní kódování je vždy utf-8.
CSV Lze zvolit jako oddělovač polí čárku nebo středník, záznamy jsou vždy odděleny znakem pro konec řádky.
Do exportovaného CSV souboru se ve výchozím nastavení negenerují názvy sloupců, ale pouze vlastní data. V exportním formuláři je ale k dispozici volba umožňující zahrnout názvy sloupců do exportovaného souboru.
Texty jsou v CSV souboru v takovém kódování, v jakém jsou uloženy v SQL databázi.
Lze exportovat i dlouhé texty, nedochází k jejich ořezávání.
Datumy se exportují ve formátu 2005-05-04 11:41:00 (stejně jako v XML formátu).

Veřejné skripty

Zobrazování dat

Prezentační skripty modulu se nacházejí v adresáři /scripts/modules/catalogue/. Pro zobrazování dat lze použít skripty:

  • default.php – zobrazuje seznam katalogů
  • list.php – zobrazuje seznam položek katalogu
  • detail.php – zobrazuje jednu položku katalogu
  • search.php – zobrazuje vyhledávací stránku pro katalog

Skript default.php zobrazující seznam katalogů zobrazuje názvy existujících katalogů a odkazy na stránky zobrazující seznam položek katalogu. Skript zobrazuje jen ty katalogy, u kterých je nastaveno Data jsou přístupná pro čtení : Všem. Využití této stránky je nepovinné, odkazy na jednotlivé katalogy lze používat v jiných stránkách libovolně a stránka zobrazující seznam všech veřejně přístupných katalogů nemusí mít na daném webu využití.

Seznam katalogů je reprezentován v předloze stránky klíčovým slovem <!--WTD_CATALOGUE(LIST)-->. Žádné jiné klíčové slovo nelze v předloze použít, pouze lze v předloze použít podmíněné zobrazení chybového hlášení <!--WTD_IF(NOTFOUND,"Žádný katalog není k dispozici.")-->. Seznam katalogů se formátuje zvoleným WebToDate stylem. Nejjednodušší styl lze pro tyto účely vytvořit tak, že do jeho těla zadáme kód

<a href="<!--WTD_CATALOGUE(LISTURL)-->"><!--WTD_CATALOGUE(NAME)--></a><br/>

Tento příklad obsahuje klíčová slova pro název katalogu a pro odkaz na stránku se seznamem položek. Kromě toho lze v tomto stylu použít i klíčové slovo <!--WTD_CATALOGUE(SEARCHURL)-->, za které se dosazuje pro daný katalog URL vyhledávací stránky.


Důležitějším skriptem je skript list.php zobrazující seznam položek daného katalogu. Základní objekty, které se mohou v předloze vyskytovat, jsou seznam záznamů (reprezentovaný klíčovým slovem <!--WTD_CATALOGUE(LIST)-->) a stránkovací navigační lišta (reprezentovaná klíčovým slovem <!--WTD_CATALOGUE(NAVIG)-->). Dále lze do předlohy této stránky umístit:

  • název zobrazovaného katalogu (<!--WTD_CATALOGUE(NAME)-->)
  • ID zobrazovaného katalogu (<!--WTD_CATALOGUE(ID)-->)
  • Odkaz na první stránku se seznamem položek (<!--WTD_CATALOGUE(LISTURL)-->)
  • Odkaz na vyhledávací stránku (<!--WTD_CATALOGUE(SEARCHURL)-->)
  • Hlášení o tom, že katalog neobsahuje žádné položky (<!--WTD_IF(NOTFOUND,"…")-->.)

Ve stránce se může navíc vyskytovat vyhledávací formulář – z tohoto hlediska jsou možnosti práce s předlohou stejné jako na stránce pro Vyhledávání (z klíčových slov tedy ve stránce fungují klíčová slova typu <!--WTD_FCDISTINCT(''neco'')-->).

Stránkovací lišta se vždy formátuje jednotně podle nastavení pro navigační lištu v nastaveních modulu. Seznam položek katalogu se formátuje zvoleným WebToDate stylem. Jednoduchý příklad těla tohoto stylu vypadá následovně:

<tr>
<td><!--WTD_FC(PRIJMENI)--></td>
<td><!--WTD_FC(CETN)--></td>
</tr>

Klíčová slova typu <!--WTD_FC(''neco'')--> zde reprezentují pole katalogu, přičemž neco je název sloupce datové tabulky. Dále lze ve stylu použít tyto klíčová slova:

  • <!--WTD_IF_NULL(neco, "…")--> - kód se vkládá pouze pokud pole neco je prázdné
  • <!--WTD_IF_NOTNULL(neco, "…")--> - kód se vkládá pouze pokud pole neco není prázdné
  • <!--WTD_F(NUMBER)--> - číslování záznamů v seznamu
  • <!--WTD_CATALOGUE(DETAILURL)--> - odkaz na detailní stránku

Podmíněné vkládání obsahu polí lze použít např. v případech, kdy chceme odkaz (obrázek či e-mailovou adresu apod.) vložit pouze v případě, kdy je v záznamu nějaká hodnota, např. takto:

<!--WTD_IF_NOTNULL(EMAIL, "<a href='mailto:<!--WTD_FC(EMAIL)-->'><!--WTD_FC(EMAIL)--></a>")-->

Číslování pomocí <!--WTD_F(NUMBER)--> zobrazuje pro větší přehlednost pro každý záznam katalogu číslo dané vypisovaným pořadím na stránce se započtením stránkování záznamů, toto číslování tedy nemá žádnou souvislost s daty katalogu.

Důležité je klíčové slovo <!--WTD_CATALOGUE(DETAILURL)-->, za které se dosazuje odkaz na zobrazení detailní stránky s jednou položkou katalogu. Toto URL se generuje ve tvaru

detail.php?catalogueID=číslo_katalogu&linkvalue=hodnota_pole_pro_jednoznačnou_identifikaci

V parametrech skriptu pro zobrazení detailu jedné položky se tedy musí vyskytovat jak ID katalogu, tak identifikátor záznamu (v parametru linkvalue).


Skript pro zobrazení jedné položky detail.php je určen k zobrazení jednoho záznamu datové tabulky katalogu. Všechna klíčová slova se zde umísťují do předlohy, stránka nepoužívá žádný WebToDate styl. Nejdůležitější klíčová slova v předloze jsou:

  • <!--WTD_FC(''neco'')--> - klíčové slovo zastupující pole datové tabulky (neco = název sloupce datové tabulky)
  • <!--WTD_IF_NULL(''neco'', "…")--> - kód se vkládá pouze pokud pole neco je prázdné
  • <!--WTD_IF_NOTNULL(''neco'', "…")--> - kód se vkládá pouze pokud pole neco není prázdné

Jednoduchý příklad HTML kódu části předlohy zobrazující vybraná data z jedné položky katalogu vypadá následovně:

<!--WTD_IF(NOTFOUND,"<strong>Požadovaná položka katalogu nebyla nalezena.</strong >")-->

<table>

<tr><td>Katalogové číslo</td><td><!--WTD_FC(CATNUMBE)--></td></tr>

<tr><td>Interpret</td><td><strong><!--WTD_FC(ARTINAME)--></strong></td></tr>

<tr><td>Titul</td><td><!--WTD_FC(PRODTITL)--></td></tr>

<tr><td>Počet nosičů</td><td><!--WTD_FC(NUMINSET)--></td></tr>

<tr><td>Nosič</td><td><!--WTD_FC(MAJCONFC)--></td></tr>

</table>

I v této stránce lze použít klíčová slova jako název katalogu apod. a vytvořit vyhledávací formulář (jsou tedy zde aktivní klíčová slova <!--WTD_FCDISTINCT(''neco'')-->), více viz kapitola Klíčová slova modulu.


Stránku s vyhledávacím formulářem lze vytvořit pomocí zobrazení skriptu search.php. Skript vyžaduje jako povinný parametr ID katalogu, zobrazuje se tedy např. jako /scripts/modules/catalogue/search.php?catalogueID=1. Možnosti vyhledávacího formuláře v této stránce platí i pro stránky zobrazující seznam položek katalogu a detail jedné položky.

Příklad vyhledávacího formuláře je následující:

<form action="<!--WTD_CATALOGUE(LISTURL)-->" method="post">

<table>

<tr valign="top">

<td>

<label for="ARTINAME">Interpret</label>

</td>

<td> <input type="text" id="ARTINAME" name="ARTINAME" value=""/> </td>

</tr>


<tr valign="top">

<td>

<label for="PRODTITL">Titul</label>

</td>

<td> <input type="text" id="PRODTITL" name="PRODTITL" value=""/> </td>

</tr>


<tr valign="top">

<td>

<label for="MAJCONFC">Nosič</label>

</td>

<td>

<select name="MAJCONFC">

<option value="" selected>--nerozlišovat--</option>

<!--WTD_FCDISTINCT(MAJCONFC)-->

</select>

</td>

</tr>

</table>


<input type="submit" name="catalogue_search_button" value="Hledat" />

</form>

Za klíčové slovo <!--WTD_CATALOGUE(LISTURL)--> se v tomto příkladu dosadí URL pro zobrazení seznamu položek daného katalogu. Textová pole formuláře pro hledání musí mít atribut name odpovídající názvům polí (sloupců datové tabulky) katalogu.

Pro prohledávání platí:

  • Prohledávat lze v katalogu jen pole textových a celočíselných typů, prohledávání jiných typů polí není podporováno.
  • Prohledává se pouze s testem na rovnost nebo u textových polí na výskyt uvnitř textu (tj. podmínka LIKE). Není podporována možnost prohledávat na podmínku danou intervalem hodnot (tedy např. že daná hodnota musí být větší než nějaké číslo a menší než nějaké číslo).
  • Tato pole musí být v katalogu označena jako Používat při prohledávání.

Pokud má formulář více vyplněných polí, spojuje se vždy vyhledávací podmínka logickou spojkou "a zároveň". Pokud se prohledává podle celočíselného pole, hledá se vždy podle testu na rovnost. Pokud se prohledává podle textového pole, hledá se výskyt řetězce kdekoliv uvnitř textového pole. Existuje zde ovšem možnost, jak hledání v textech omezit na hledání výskytu textového řetězce na začátku textových polí. Z vyhledávacího formuláře je třeba v tom případě předat parametr searchin s hodnotou begin, např. pomocí následujícího kódu umístěného dovnitř formuláře:

<input type="hidden" name="searchin" value="begin">

V tom případě se hledaný text nemá vyskytovat kdekoliv uvnitř textového pole, ale na jeho začátku.

Jednoduchý vyhledávací formulář tedy obsahuje pouze textová pole pojmenovaná odpovídajícím způsobem. Je ovšem podporována i složitější možnost – totiž vytváření pop-up menu, která nabízejí jedinečné hodnoty z daného sloupce databáze. Výše uvedený příklad prohledává katalog hudebních titulů, kde chceme kromě textových polí typu "interpret" prohledávat i podle typu nosiče (CD, MC apod.). Typ nosiče je v datové tabulce uveden jako text, pomocí klíčového slova <!--WTD_FCDISTINCT(''neco'')-->) vložíme do formuláře všechny unikátní hodnoty daného sloupce s typem nosiče včetně příslušných HTML <option> značek:

<select name="MAJCONFC">

<option value="" selected>--nerozlišovat--</option>

<!--WTD_FCDISTINCT(MAJCONFC)-->

</select>

Výsledný formulář pak vypadá v HTML stránce zhruba takto:

Soubor:Image039.jpg


Výpis položek je standardně setříděn podle nastavení Administrace / název katalogu / Třídění v administračním rozhraní modulu. Toto třídění lze změnit přes parametr sort z vyhledávacího formuláře nebo z URL. Jako hodnota parametru sort se vkládá název sloupce, podle kterého se má třídit. Třídění je pak vždy podle tohoto jednoho vybraného sloupce vzestupně.

Příklad HTML kódu pro volbu třídění je pak následující:

<label for="sort">Třídit podle</label><br />

<input type="radio" name="sort" value="nazev" checked="checked" /> Názvu

<input type="radio" name="sort" value="autor" /> Jména autora

Poznámka: pokud se používá možnost volby třídění a v dané datové tabulce katalogu je větší množství záznamů, je doporučeno opatřit sloupce, podle kterých se třídí indexem (viz kapitola Data), jinak hrozí zpomalení sestavování stránek se seznamem položek a vyšší zátěž serveru.


Další možností rozšíření možností vyhledávání je hledání dle intervalu hodnot. Uvedeme-li ve vyhledávacím formuláři např. pole

Počet kusů: <input type="text" name="pockusu" value="" />

a je-li toto pole vyplněno, testuje se v prohledávaném sloupci na výskyt zadané hodnoty (pokud se jedná o textový sloupec) nebo na rovnost (pokud se jedná o jiné datové typy). Pokud ale uvedeme ve formuláři pole

Min. počet kusů: <input type="text" name="pockusu[min]" value="" />

Max. počet kusů: <input type="text" name="pockusu[max]" value="" />

můžeme prohledávat na rozsah hodnot, tj. hledat záznamy, kde v daném sloupci se vyskytuje jako minimální číslo hodnota zadaná do pole pockusu[min] a jako maximální číslo hodnota zadaná do pole pockusu[max]. Pro tuto volbu se tedy postupuje tak, že jako jméno pole formuláře nebo parametr URL se použije název sloupec datové tabulky s příponou [min] resp. [max]. Pro možnost prohledávání dle intervalu hodnot jsou podporovány celočíselné datové typy datové tabulky katalogu.


Vyhledávací formulář nepodporuje žádná další "aktivní" klíčová slova, nelze tedy např. zajistit, že stránka s výsledky hledání zobrazí formulář, který bude obsahovat údaje již uživatelem zadané v předchozí stránce apod.


Vkládání dat

Pro vkládání dat se používá skript /scripts/modules/catalogue/iform.php. Hlavní možnosti tohoto skriptu jsou:

  • Zobrazení formuláře pro vkládání dat
  • Zobrazení potvrzovací stránky
  • Zobrazování chybových hlášení aktivovaných kontrolou zadaných dat
  • Odeslání e-mailu s daty vloženými do formuláře
  • Přesměrování na vybranou stránku po úspěšném vložení dat z formuláře do katalogu.

Logika fungování tohoto skriptu je zhruba popsána následujícím vývojovým diagramem:


Soubor:Image040.jpg


Hlavním povinným parametrem skriptu je ID katalogu, do kterého se vkládají data catalogueid.

Příklad jednoduchého kódu pro vstupní formulář je následující:

<form action="/scripts/modules/catalogue/iform.php?catalogueid=<!--WTD_CATALOGUE(ID)-->" method="post">

<input type="hidden" name="returnurl" value="/"/>

 <!--WTD_IF(DATATYPEERROR,"Datový typ některého pole není možné zpracovat.")-->
 <!--WTD_IF(MANDATORYERROR,"Některé povinné pole není vyplněno.")-->
 <!--WTD_IF(FIELDSCONFLICT,"Obsah formuláře nelze zapsat")-->
 <!--WTD_IF(FIELDSNOACCESS,"Obsah formuláře nelze zapsat")-->
 <!--WTD_IF(GENERALERROR,"Obsah formuláře nelze zapsat")-->


<label for="JMENO">Jméno a příjmení</label><br/>

<input type="text" id="JMENO" name="JMENO" value="<!--WTD_FCI(JMENO)-->"/> *

<br/>

<label for="EMAIL">E-mailová adresa</label><br/>

<input type="text" id="EMAIL" name="EMAIL" value="<!--WTD_FCI(EMAIL)-->"/> *

<br/>

<label for="VZKAZ">Další požadavky a komentáře</label><br/>

<textarea rows="10" rows="" name="VZKAZ" id="VZKAZ"><!--WTD_FCI(VZKAZ)--></textarea>

<br/>

<input type="submit" name="catalogue_insert_button" value="Odeslat" />

<p> Pole označená * jsou povinná. </p>

</form>

Hlavní "aktivní" klíčová slova jsou <!--WTD_FCI(''neco'')--> zastupující hodnoty vkládaných polí. Názvy polí katalogu, do kterých se vkládá, se musí shodovat s atributem ''name'' vstupního formuláře. Klíčová slova <!--WTD_FCI(''neco'')--> jsou zde proto, aby v případě, že data neprojdou vstupní kontrolu se mohl zobrazit formulář včetně zadaných hodnot a vedle toho případná chybová hlášení reprezentovaná klíčovými slovy typu WTD_IF.

Na stejném principu pracuje i případná potvrzovací stránka, i zde se používají klíčová slova typu <!--WTD_FCI(''neco'')-->, jednou se použijí pro zobrazení a podruhé jako hodnota hidden pole, která se po potvrzení přenáší jako hodnota, která bude uložena. Jedna položka formuláře na potvrzovací stránce pak vypadá např. takto:

<tr>

<td> <label for="email">E-mail</label> </td>

<td>

<!--WTD_FCI(email)-->

<input type="hidden" id="email" name="email" value="<!--WTD_FCI(email)-->"/>

</td>

</tr>

Jako u všech ostatních typů stránek, i zde je vhodné tyto kódy formulářů primárně vygenerovat jako fragmenty pomocí nabídky Nástroje a následně je upravit podle potřeb.

Vstupní skript provádí řadu kontrol a to i několikrát (pokud je použita potvrzovací stránka, tak i před uložením z potvrzovací stránky). Jedná se zejména o:

  • Datové typy polí (tj. zda se např. někdo nepokouší do celočíselného pole zadat text apod.)
  • Povinné vyplnění polí a unikátní hodnoty
  • Názvy polí formulářů a názvy polí datové tabulky musí odpovídat
  • Zda nejde o pokus zapsat hodnotu pole, které v definice katalogu není určeno k zápisům z veřejné části serveru.

Těmto kontrolám odpovídají možná chybová hlášení uvedená v kapitole Klíčová slova modulu.

Pokud se k vygenerování vstupního formuláře použije funkce z nabídky Nástroje, vygenerují se všechna vstupní pole jako textová. Následně je možné změnit vstupní formulář tak, že místo některých textových polí se vytvoří nabídky formou pop-up menu, radiopřepínačů apod. Platí to, že důležité jsou pro daný element formuláře atributy name a value, na typu pole nezáleží. Je třeba si ovšem uvědomit, že pokud dojde k chybě, zobrazí skript pro vkládání dat tu samou stránku se vstupním formulářem, kde klíčová slova typu WTD_FCI nahradí údaji, které zadal uživatel – pro jiná pole než textová pak dost dobře nelze nastavit správnou volbu, kterou uživatel v předchozím kroku zadal (atribut selected daného formulářového pole).


Možnosti omezení přístupu k zobrazení nebo vkládání dat

Jak je uvedeno v kapitole Administrace, lze na úrovni katalogu nadefinovat, kdo (z hlediska veřejné části webu) může zobrazovat data katalogu a kdo do katalogu může vkládat.

Pokud je pro zobrazování zvoleno Nikomu, je chování následující:

  • Katalog se nezobrazuje v seznamu katalogů
  • Pokud se pokusíme zobrazit seznam položek katalogu přímo přes skript list.php, dostáváme chybové hlášení typu "Katalog nebyl nalezen"
  • Stejné hlášení dostáváme u daného katalogu i pro skripty zobrazující jeden záznam a vyhledávací stránku.

Pokud vyvoláme skript pro vkládání dat iform.php pro katalog, který má nastaveno pro vkládání dat Nikdo, dostáváme chybové hlášení typu "Předloha není definována".


Je-li na serveru instalován navíc modul Registrace a personalizace, lze kromě přístupů Všichni / Nikdo nastavit ve vlastnostech katalogu ještě přístup registrovaným uživatelům, a to odděleně pro prohlížení dat katalogu a pro vkládání dat do katalogu. V obou případech lze zvolit, že přístup mají buď všichni registrovaní nebo jen jedna vybraná skupina. Chování veřejných skriptů je pak následující:

  • Pokud uživatel není přihlášen a pokusí se zobrazit nějakou stránku související s daným katalogem (zobrazení dat nebo vstupní formulář), je přesměrován na přihlašovací stránku (/scripts/modules/registration/login.php). Po úspěšném přihlášení je přesměrován zpět na původní stránku.
  • Pokud uživatel je přihlášen a je nastaven přístup všem registrovaným, požadovaná stránka se ihned zobrazí.
  • Pokud je uživatel přihlášen a je nastaven přístup pouze určité skupině uživatelů, je při pokusu o zobrazení stránky nejprve vyhodnoceno, zda přihlášený uživatel patří do nastavené skupiny. Pokud tomu tak je, stránka se zobrazí, pokud tomu tak není, je uživatel přesměrován na stránku Odmítnutí přístupu v případě vkládání dat a na přihlašovací formulář v případě zobrazování dat.


Klíčová slova modulu

Tato kapitola obsahuje souhrn všech klíčových slov modulu, která se používají v předlohách a WebToDate stylech.

Klíčová slova použitelná v předloze – všechny stránky kromě seznamu katalogů a e-mailů
Klíčové slovo Význam Poznámka
<!--WTD_CATALOGUE(ID)--> ID katalogu
<!--WTD_CATALOGUE(NAME)--> Název katalogu
<!--WTD_CATALOGUE(LISTURL)--> URL zobrazující stránku se seznamem položek katalogu
<!--WTD_CATALOGUE(SEARCHURL)--> URL zobrazující vyhledávací stránku pro daný katalog


Klíčová slova použitelná v předloze – seznam katalogů
Klíčové slovo Význam Poznámka
<!--WTD_CATALOGUE(LIST)--> Seznam katalogů
<!--WTD_IF(NOTFOUND,"…")--> Hlášení v případě, že nebyl nalezen žádný katalog


Klíčová slova použitelná ve stylu seznamu katalogů
Klíčové slovo Význam Poznámka
<!--WTD_CATALOGUE(NAME)--> Název katalogu
<!--WTD_CATALOGUE(ID)--> ID katalogu
<!--WTD_CATALOGUE(LISTURL)--> URL zobrazující stránku se seznamem položek katalogu
<!--WTD_CATALOGUE(SEARCHURL)--> URL zobrazující vyhledávací stránku pro daný katalog


Klíčová slova použitelná v předloze – seznam položek katalogu
Klíčové slovo Význam Poznámka
<!--WTD_CATALOGUE(LIST)--> Seznam položek (záznamů)
<!--WTD_CATALOGUE(NAVIG)--> Navigační lišta
<!--WTD_IF(NOTFOUND,"…")--> Hlášení v případě, že nebyl nalezen žádný záznam
<!--WTD_FCDISTINCT(''neco'')--> Zobrazení jedinečných hodnot daného sloupce Pro účely vyhledávacího formuláře, vytváří se včetně HTML <option> značek


Klíčová slova použitelná ve stylu seznamu položek katalogu
Klíčové slovo Význam Poznámka
<!--WTD_FC(''neco'')--> klíčové slovo zastupující hodnotu pole datové tabulky (neco = název sloupce datové tabulky)
<!--WTD_IF_NULL(''neco'', "…")--> kód se vkládá pouze pokud pole neco je prázdné (neco = název sloupce datové tabulky)
<!--WTD_IF_NOTNULL(''neco'', "…")--> kód se vkládá pouze pokud pole neco není prázdné (neco = název sloupce datové tabulky)
<!--WTD_F(NUMBER)--> Číslování položek v zobrazeném seznamu
<!--WTD_CATALOGUE(DETAILURL)--> Odkaz na zobrazení detailní stránky zobrazující jeden záznam


Klíčová slova použitelná v předloze - zobrazení jedné položky katalogu
Klíčové slovo Význam Poznámka
<!--WTD_FC(''neco'')--> klíčové slovo zastupující hodnotu pole datové tabulky (neco = název sloupce datové tabulky)
<!--WTD_IF_NULL(''neco'', "…")--> kód se vkládá pouze pokud pole neco je prázdné (neco = název sloupce datové tabulky)
<!--WTD_IF_NOTNULL(''neco'', "…")--> kód se vkládá pouze pokud pole neco není prázdné (neco = název sloupce datové tabulky)
<!--WTD_FCDISTINCT(''neco'')--> Zobrazení jedinečných hodnot daného sloupce Pro účely vyhledávacího formuláře, vytváří se včetně HTML <option> značek


Klíčová slova použitelná v předloze - vyhledávací stránka katalogu
Klíčové slovo Význam Poznámka
<!--WTD_FCDISTINCT(''neco'')--> Zobrazení jedinečných hodnot daného sloupce Pro účely vyhledávacího formuláře, vytváří se včetně HTML <option> značek


Klíčová slova použitelná v předloze – stránky pro vkládání dat přes formulář
Klíčové slovo Význam Poznámka
<!--WTD_FCI(''neco'')--> klíčové slovo zastupující hodnotu atributu value vstupního formuláře (neco = název sloupce datové tabulky)
<!--WTD_IF(DATATYPEERROR,"Datový typ některého pole není možné zpracovat.")--> bylo zjištěno, že datový typ některého pole neodpovídá datové tabulce
<!--WTD_IF(MANDATORYERROR,"Některé povinné pole není vyplněno.")--> některé povinné pole není vyplněno
<!--WTD_IF(UNIQUEERROR,"Pole musí obsahovat unikátní hodnotu.")--> některé pole, které má obsahovat unikátní hodnoty není správně vyplněno
<!--WTD_IF(FIELDSCONFLICT,"Obsah formuláře nelze zapsat.")--> některé pole v kolekci formuláře v datové tabulce neexistuje
<!--WTD_IF(FIELDSNOACCESS,"Obsah formuláře nelze zapsat.")--> některé pole v kolekci formuláře v datové tabulce nemá povolen zápis z veřejné části
<!--WTD_IF(GENERALERROR,"Obsah formuláře nelze zapsat.")--> jiná chyba, např. nelze naplnit pole pro jednoznačnou identifikaci, SQL databáze vrátila při pokusu o zápis chybu apod.


Klíčová slova použitelná v předloze – e-mail s obsahem vstupního formuláře
Klíčové slovo Význam Poznámka
<!--WTD_FC(''neco'')--> klíčové slovo zastupující vloženou hodnotu pole datové tabulky (neco = název sloupce datové tabulky)
<!--WTD_CATALOGUE(NAME)--> Název katalogu <!--WTD_CATALOGUE(NAME)-->
<!--WTD_CATALOGUE(ID)--> ID katalogu <!--WTD_CATALOGUE(ID)-->


Speciální názvy parametrů

Skripty používají následující speciální parametry (v URL nebo ve vyhledávacích formulářích). Vzhledem k vyhrazenému významu těchto parametrů to znamená, že názvy sloupců datových tabulek se nesmí shodovat s názvy těchto parametrů:

  • catalogueid – ID katalogu
  • linkvalue – hodnota pole pro jednoznačnou identifikaci (používá skript pro zobrazení detailní stránky jedné položky katalogu)
  • pg – používá stránkovací lišta pro stránkování
  • searchin – udává způsob prohledávání textových polí (používá skript pro zobrazení seznamu položek katalogu)
  • sort – může být použit pro výběr sloupce, podle kterého se třídí seznam položek
  • returnurl – využívá skript pro vkládání dat z veřejných formulářů jako URL stránky zobrazené po úspěšném vložení záznamu
  • tmplid – parametrem lze vynutit pro stránku jinou předlohu, hodnotou je ID této předlohy
  • lid, locale, dlid, dlocale – využívají všechny moduly jako identifikátory pro jazyky


Rozhraní pro napojení jiných aplikací

Modul obsahuje rozhraní pro napojení jiných aplikací, které umožňuje těmto aplikacím aktualizaci obsahu jednotlivých katalogů, tj. vkládání, aktualizaci a mazání záznamů v datových tabulkách katalogů.

Princip řešení

Na serveru je umístěn skript /gate/catupdate/default.php. Adresář gate je virtuální adresář www serveru fyzicky umístěný na stejné úrovni jako např. adresář wwwroot. Z bezpečnostních důvodů je velmi vhodné přístup na tento virtuální adresář omezit pouze na IP adresu serveru, na kterém běží aplikace, která má měnit data modulu.

Tento skript přijímá přes protokol http POST příkazy ve formátu XML, provádí je a zpět zasílá (opět v XML) potvrzení. Příkazem může být buď pokyn ke smazání jedné položky daného katalogu nebo pokyn k vložení nebo aktualizaci záznamu jednoho katalogu.

Vkládání / aktualizace se synchronizuje na úrovni ID záznamů, externí aplikace tedy musí znát a používat identifikátory používané v dané datové tabulce. Při mazání se načítá jen ID záznamu, který se má mazat, při vkládání nebo aktualizaci celý záznam, tj. jeden řádek tabulky.

Skript zachycuje všechny potencionální chybové stavy a podává o nich hlášení prostřednictvím vraceného XML kódu – jedná se například o žádost o smazání neexistujícího záznamu, chybu při zápisu do databáze apod. Všechny události se protokolují do speciálního logu, kde se dá kontrolovat, zda komunikace probíhá v pořádku.

XML formáty přenosů

Každá žádost o aktualizaci obsahuje název datové tabulky, se kterou se manipuluje. Následuje příkaz (smazat / přidat nebo aktualizovat). Pak následují vlastní data – buď je uveden pouze unikátní identifikátor (v případě mazání) nebo celý řádek tabulky (v případě vložení či aktualizace).

Kořenový element žádosti o aktualizaci je vždy <catupdaterequest''>,'' následuje kód ''<dbtable name="název_tabulky" idcolumn="název_sloupec_pro_jednoznačnou_identifikaci''"/>,'' který specifikuje, která datová tabulka se má aktualizovat a jaký sloupec se používá pro vyhledávání záznamů (jednoznačnou identifikaci). Dále je povinné uvést element ''<command''>, který má v atributu type uveden typ operace, možné hodnoty jsou delete / update.

Smazání záznamu

Následující XML kód slouží jako příkaz ke smazání jednoho záznamu s daným ID. per_id je název sloupce datové tabulky použitého v katalogu jako sloupec pro identifikaci záznamů.

<?xml version="1.0" encoding="UTF-8"?>

<catupdaterequest>

<dbtable name="KATDTBL" idcolumn="per_id"/>

<command type="delete">

<per_id>2506</per_id>

</command>

</catupdaterequest>


Potvrzení smazání

Následující kód dostává zpět externí aplikace jako odpověď na příkaz smazání položky.

<?xml version="1.0" encoding="UTF-8"?>

<catupdateresponse>

<status>error</status>

<description>Záznam s ID=2506 v tabulce KATDTBL se nepodařilo smazat.</description>

</catupdateresponse>

Element status může nabývat hodnot ok / error, v případě chyby obsahuje element description textový popis chyby.

Vložení nebo aktualizace záznamu

Následující kód reprezentuje příkaz na vložení nebo aktualizaci jednoho záznamu.

<?xml version="1.0" encoding="UTF-8"?>

<catupdaterequest>

<dbtable name=" KATDTBL" idcolumn="per_id"/>

<command type="update">

<per_id>2507</per_id>

<vydavatel>Vydavatel s.r.o.</vydavatel>

<okres>Praha</okres>

<nazev>Křížovky a rébusy</nazev>

<zamereni>Časopisy pro luštitele</zamereni>

<regionalni>Ne</regionalni>

<per>6</per>

</command>

</catupdaterequest>

Nejprve je uvedena informace o tom, které tabulky se příkaz týká, atribut idcolumn zde musí obsahovat jako hodnotu název sloupce datové tabulky, který se používá pro identifikaci záznamů a pomocí kterého se provádí příkazy pro aktualizaci či mazání těchto záznamů. Pak je uveden vlastní příkaz a seznam hodnot jednotlivých polí. Tento seznam není pevně dán, ale liší se dle struktury katalogu, jména elementů odpovídají názvům sloupců datové tabulky modulu Formuláře a katalogy.