Module documentation

Formuláře

Formuláře jsou v každém digitálním provozu základní cestou, jak od návštěvníka dostat strukturovanou informaci — ať už jde o obyčejný kontaktní dotaz, přihlášku na akci, dotazník spokojenosti nebo reklamační žádost. Modul `/form` proto slouží jako univerzální nástroj pro návrh, zveřejňování a správu takových formulářů. Administrátor si v něm vytváří vlastní formuláře podle potřeby, definuje jejich pole a v tomtéž rozhraní prohlíží odeslané odpovědi. Celá filozofie modulu stojí na tom, že formulář není rigidní šablona, ale živý objekt, který lze v průběhu času upravovat, deaktivovat, kopírov...

Last updated 24 April 2026

Formuláře jsou v každém digitálním provozu základní cestou, jak od návštěvníka dostat strukturovanou informaci — ať už jde o obyčejný kontaktní dotaz, přihlášku na akci, dotazník spokojenosti nebo reklamační žádost. Modul /form proto slouží jako univerzální nástroj pro návrh, zveřejňování a správu takových formulářů. Administrátor si v něm vytváří vlastní formuláře podle potřeby, definuje jejich pole a v tomtéž rozhraní prohlíží odeslané odpovědi. Celá filozofie modulu stojí na tom, že formulář není rigidní šablona, ale živý objekt, který lze v průběhu času upravovat, deaktivovat, kopírovat a dále vyvíjet — a historie už přijatých dat přitom zůstává konzistentní, i když se struktura pod ní mění.

Přehled formulářů

Hlavní stránka modulu zobrazuje seznam všech formulářů aktuální organizace. Přehled je laděný tak, aby administrátor na první pohled viděl, co právě aktivně sbírá data a kam přibývají nové odpovědi. Řádky jsou proto řazené podle data poslední úpravy — nejdříve se zobrazí ten, na čem se v poslední době pracovalo. Tabulka se sama obnovuje každých 20 sekund, takže nové odpovědi okamžitě zvýší počítadlo záznamů.

V každém řádku uživatel najde název formuláře (sloužící zároveň jako odkaz do detailu), doplňkový popis, příznak aktivní, který prozrazuje, jestli je formulář momentálně zveřejněn na webu, počet záznamů odeslaných návštěvníky a dvojici dat vytvoření a poslední změny.

Vytvoření nového formuláře

Nový formulář se zakládá tlačítkem Add v pravém horním rohu. Formulář vyžaduje pouze název, případně volitelný kód (slug) a popis. Kód je URL-friendly identifikátor, pod kterým se formulář zveřejní na webu; pokud ho administrátor nezadá, systém ho automaticky odvodí z názvu a v případě kolize s existujícím formulářem připojí číselný sufix (typicky kontakt-2). Nový formulář vzniká v aktivním stavu a bez jediného pole — samotná pole se přidávají až v detailu, kde má administrátor pro návrh struktury více prostoru.

ℹ️ Kód slouží jako URL-friendly identifikátor a používá se při vkládání formuláře do veřejných stránek.

Detail formuláře

Po kliknutí na konkrétní formulář se otevře detail, který rozděluje práci do dvou hlavních oblastí: Záznamy ukazují odpovědi od návštěvníků, Struktura pak slouží k návrhu polí. Toto oddělení reflektuje dva typické provozní módy — buď formulář teprve stavíte, nebo z něj už sbíráte data a kontrolujete, co přichází. Kliknutí na konkrétní odpověď v záložce Záznamy otevře detail jednotlivého odeslání se všemi zadanými hodnotami a přesným časem.

Typy polí

Formulář se skládá z polí, která pokrývají běžné kategorie uživatelského vstupu. K dispozici je nadpis (pouze vizuální prvek pro rozdělení delšího formuláře do sekcí), jednořádkový text pro krátké údaje typu jména nebo e-mailu, víceřádková textarea pro delší zprávy, pole pro výběr data z kalendáře, numerické pole číslo, zaškrtávací ano/ne a konečně výběr (select) v podobě rozbalovací nabídky s předdefinovanými možnostmi. Tento repertoár pokrývá naprostou většinu běžných scénářů sběru dat a zároveň zůstává dost jednoduchý na to, aby návštěvníka nezahltil.

Správa polí

V detailu formuláře má administrátor nad každým polem plnou kontrolu. Přidáním vznikne nové prázdné textové pole na konci formuláře s automaticky vygenerovaným klíčem, který lze kdykoli přejmenovat. Duplikace vytvoří vedle originálu jeho přesnou kopii — včetně typu, popisku a možností — a dostane nový jedinečný klíč. Odstranění pole je trvalé, avšak hodnoty z již odeslaných záznamů zůstávají v historii zachovány díky tomu, že si systém ukládá popisek pole platný v době odeslání (viz dále). Přejmenování klíče mění programový identifikátor pole a při kolizi s jiným klíčem v rámci formuláře se automaticky doplní číselný sufix. Pořadí polí se mění přetažením v editoru (drag & drop) a ukládá se jako celkové přenastavení všech indexů, takže nehrozí částečně uložený stav.

Konfigurace jednotlivého pole

Ke každému poli lze připojit popisek (text zobrazený návštěvníkovi), doplňkovou nápovědu pod polem, zaškrtávací povinnost (povinná pole jsou na webu označena hvězdičkou a jejich prázdná hodnota blokuje odeslání), výchozí hodnotu, kterou návštěvník vidí při prvním zobrazení, možnosti (relevantní pro typ výběr, páry klíč → popisek) a příznak aktivní pro dočasnou deaktivaci pole bez jeho smazání.

Životní cyklus formuláře

Formulář má pouze dva stavy, které se liší tím, jak se chová vůči veřejnému webu. Aktivní formulář je zveřejněn a návštěvníci do něj mohou odesílat odpovědi. Neaktivní formulář je dočasně skrytý — odesílání se zastaví, ale všechny už přijaté záznamy zůstávají v administraci k dispozici. Deaktivace se hodí pro sezónní formuláře (registrace na letní akci), pro formuláře v přípravě, které ještě čekají na dokončení, i pro dočasně pozastavené formuláře vyžadující úpravy.

Validace odpovědí

Při odesílání formuláře z veřejného webu systém ověřuje, že přicházející data dávají smysl a odpovídají nastavení jednotlivých polí. Povinná pole musí být vyplněná, číselná pole musí obsahovat platné číslo, datová pole platné datum, pole typu výběr smí obsahovat jen předdefinované hodnoty a u textových polí se kontroluje minimální a maximální délka. Při chybě se formulář neodesílá a návštěvníkovi se u problematického pole zobrazí konkrétní chybové hlášení v češtině (například „Pole musí být typu číslo" nebo „Hodnota musí být alespoň 3 znaků"), takže opravu zvládne bez technické znalosti.

Kopírování formuláře

Kontextové menu nad formulářem nabízí akci Kopírovat formulář, která je užitečná všude tam, kde potřebujete vytvořit variantu existujícího formuláře, aniž byste zasáhli do originálu. Kopie přebere celou strukturu polí, dostane nový jedinečný kód (opět s případným číselným sufixem při kolizi) a záměrně vzniká jako neaktivní — tím se předchází situacím, kdy by kopie nečekaně zveřejnila nedotaženou verzi. Záznamů má logicky nula, takže kopie začíná s čistým štítem.

Zobrazení a mazání záznamů

V detailu formuláře administrátor prochází všechny odeslané záznamy. Každý řádek odpovídá jednomu odeslání a sloupce zachycují jednotlivá pole — kliknutí na řádek otevře detail se všemi hodnotami včetně původních popisků polí, které platily v okamžiku odeslání. Záznamy lze mazat jednotlivě přes kontextové menu, přičemž mazání je v tomto modulu trvalé — na rozdíl od příspěvků nebo kategorií se zde neuplatňuje soft-delete.

⚠️ Smazání celého formuláře odstraní spolu s ním i všechna jeho pole a přijaté záznamy. Akce je nevratná, a pokud si nejste jisti, že formulář už nikdy nebudete potřebovat, použijte raději deaktivaci.

Historie popisků polí

Jednou z nenápadných, ale důležitých vlastností modulu je to, že si u každého odeslaného záznamu pamatuje popisek pole platný v okamžiku odeslání. Pokud tedy později pole přejmenujete nebo dokonce smažete, starší záznamy si svůj původní kontext zachovají a zůstávají čitelné. Redakce tak může v klidu vyvíjet strukturu formuláře, aniž by jí zpětné kontroly historických odpovědí dávaly nesrozumitelné výsledky. U polí typu výběr se analogicky ukládají i možnosti platné v době odeslání.

Rozšířené použití

Díky obecnosti návrhu pokrývá modul široké spektrum scénářů. Nejčastěji jde o kontaktní formuláře (jméno, e-mail, zpráva), dotazníky spokojenosti kombinující textová pole s výběry, registrace na akce s datumem účasti a počtem osob, strukturované přihlášky a také reklamační formuláře, jejichž obsah typicky pokračuje dál do modulu Reklamace. Odeslaná data se ukládají do interní tabulky a jsou kdykoliv dostupná pro zpětnou analýzu; integrace s e-mailovými notifikacemi nebo dalšími workflow akcemi probíhají mimo tuto stránku.

Kontextové menu

Nad řádkem formuláře nabízí kontextové menu trojici akcí, které pokrývají běžné operace: Kopírovat formulář vytvoří novou kopii se stejnou strukturou, Smazat odstraní celý formulář včetně polí a záznamů (s potvrzovacím dialogem) a přímo v detailu je k dispozici Smazat záznam pro trvalé odstranění jednotlivé odpovědi.

Doporučené postupy

Při návrhu formulářů se osvědčuje několik pravidel, která zvyšují pravděpodobnost, že návštěvník formulář skutečně dokončí. Začínejte pouze s nezbytnými poli — každé další pole snižuje míru dokončení. Povinná pole minimalizujte a zachovejte je jen tam, kde opravdu nemáte bez hodnoty co s odpovědí dělat. Popisky pište v první osobě („Vaše jméno", „Vaše e-mailová adresa") — působí lidštěji než strohé štítky. Používejte nápovědu u polí s nejasným formátem (například „Uveďte telefonní číslo ve formátu +420 XXX XXX XXX"). A konečně před zveřejněním formulář otestujte — vytvořte si kopii, odešlete několik testovacích odpovědí a zkontrolujte, jak vypadají v detailu.

Struktura záznamu

Každý odeslaný záznam obsahuje ID záznamu (jedinečný identifikátor v rámci formuláře), datum odeslání a seznam položek, kde je pro každé pole uložen jeho původní klíč, popisek, typ a hodnota zadaná návštěvníkem. Kombinace popisku a typu zaručuje, že se záznam dá spolehlivě zobrazit i po pozdějších úpravách struktury formuláře.

Geolokace odesílatele

Při každém odeslání formuláře si systém ukládá také technickou stopu odesílatele, typicky lokalitu odvozenou z IP adresy. Tato informace slouží pouze pro interní statistiky a detekci podezřelých odeslání; v detailu záznamu se standardně nezobrazuje.

ℹ️ Geolokace není spolehlivá u uživatelů používajících VPN nebo proxy server. Nesmí tedy sloužit jako forma ověření identity.

Omezení a limity

Při práci s formuláři platí několik technických pravidel. Název pole nemá pevný limit, ale z hlediska čitelnosti doporučujeme zůstat pod 60 znaky. Klíč pole musí být jedinečný v rámci formuláře a při kolizi systém automaticky doplní číselný sufix. Výběrová pole nemají pevný strop na počet možností, ale u více než deseti položek bývá vhodnější místo selectu použít jiný vstup (například autocomplete textové pole). Kód formuláře musí být jedinečný napříč celou organizací.

Integrace s veřejným webem

Formulář se na veřejném webu zobrazuje podle svého kódu. Pokud je formulář deaktivován, stránka místo něj zobrazí informační hlášku o tom, že formulář momentálně není dostupný — a administrace zůstává přístupná k dosud přijatým záznamům, takže deaktivace neznamená ztrátu historických dat ani její dočasné skrytí.

Build with the API

Every module shipped here is also exposed via the REST API.