1. Základní informace
- Editační formulář je grafické rozhraní určené k práci s jedním databázovým záznamem. Slouží buď k vytvoření nového záznamu v databázi, nebo k editaci již existujícího záznamu.
- Každý editační formulář má právě jednu přidruženou databázovou tabulku, do které se ukládají uživatelská data vyplňovaná ve formuláři. Její skutečný název určuje identifikátor formuláře. Identifikátory uživatelských formulářů standardně začínají prefixem „ng_“, systémové formuláře tento prefix nepoužívají.
- Vytváření i následné úpravy struktury standardní přidružené databázové tabulky probíhají automaticky na základě konfigurace editačního formuláře a jeho ovládacích prvků. Výjimkou jsou ručně spravované databázové struktury, například In-Memory tabulky a databázové pohledy popsané níže.
- Každá přidružená databázová tabulka obsahuje sadu systémových databázových sloupců, které tvoří základ aplikační logiky:
- „id“ – primární klíč databázového záznamu, s datovým typem „int NOT NULL“ nebo „long NOT NULL“ podle nastavení editačního formuláře.
- „system“ – příznak systémového záznamu. Hodnota „True“ označuje záznam, který není možné smazat (např. systémové záznamy uživatelů NET Genia).
- „pid“ – identifikátor rodičovského databázového záznamu, používaný pro hierarchické vazby.
- „pform“ – identifikátor editačního formuláře, ve kterém se nachází rodičovský záznam.
- „userid“ – identifikátor uživatele, který databázový záznam vytvořil a je jeho vlastníkem.
1.1. Ovládací prvky editačního formuláře
- Editační formulář se skládá z databázových a vizuálních ovládacích prvků.
- Databázový ovládací prvek má vždy přiřazen jeden databázový sloupec v přidružené tabulce, do kterého se ukládají hodnoty zadané uživatelem. Aby měl editační formulář smysl, musí obsahovat alespoň jeden databázový ovládací prvek.
- Vizuální ovládací prvky nemají vlastní databázový sloupec. Slouží k prezentaci, navigaci nebo ovládání aplikace a mohou spouštět skripty či operace, které vytvářejí, mění nebo mažou jiné databázové záznamy. Patří sem například nadpisy, nahlížecí tabulky, tlačítka, grafické oddělovače nebo dekorativní prvky.
- Součástí každého editačního formuláře je automaticky ovládací prvek „ActionButtons“, který obsahuje tři základní tlačítka: „Uložit“, „Smazat“ a „Zpět“. Detailní popis tohoto prvku je uveden v samostatné příručce Editační formulář – ActionButtons.
- Ovládací prvky jsou ve formuláři standardně řazeny pod sebou, případně mohou být opticky seskupeny do více sloupců pomocí přichytávání k předchozím prvkům. Mezi databázovými ovládacími prvky lze přecházet klávesou „TAB“ směrem dolů a kombinací „SHIFT+TAB“ směrem nahoru.
- K ovládacím prvkům editačního formuláře je možné přistupovat pomocí JavaScriptu a dynamicky tak měnit jejich vlastnosti, chování nebo hodnoty. U databázových ovládacích prvků je možné číst i nastavovat hodnoty textových polí, rozbalovacích seznamů a dalších prvků, pokud je znám jejich identifikátor v objektovém modelu HTML dokumentu.
1.2. Oprávnění ke vstupu do editačního formuláře
- Editační formulář se obvykle otevírá prostřednictvím navigačních prvků umístěných na nahlížecích stránkách nebo v jiných editačních formulářích. Uživatele na něj může přesměrovat také serverová funkce „SCHEDULEFORM“ nebo externí funkce. Formulář lze otevřít i přímou adresou „Form.aspx?form=<ID formuláře>&id=<ID záznamu>“, proto zabezpečení nesmí spoléhat na skrytí URL; zobrazení a možnost editace se vždy řídí oprávněními, vlastnictvím a případným zamknutím záznamu.
- Pro vytvoření nového databázového záznamu může uživatel otevřít editační formulář několika způsoby:
- Tlačítkem umístěným na nahlížecí stránce nebo v jiném editačním formuláři, které přesměruje uživatele do konkrétního formuláře. Tento způsob se nastavuje ve vlastnostech ovládacího prvku „Button“ nebo v jeho skriptu pomocí funkce „SCHEDULEFORM“.
- Prostřednictvím nahlížecí tabulky, která zobrazuje data daného editačního formuláře. Tato možnost je dostupná povolením ikony „Nový záznam...“ ve vlastnostech nahlížecí tabulky.
- Pomocí dalších vizuálních ovládacích prvků, jako je kalendář, plánovací vícezdrojový kalendář, rozvrh hodin, ganttův diagram nebo stromová struktura, pokud je v jejich nastavení povoleno vytváření nových záznamů.
- Přímým vstupem z nahlížecí stránky, která je nastavena tak, aby uživatele přesměrovala do konkrétního editačního formuláře.
- Pro editaci již existujícího databázového záznamu může uživatel otevřít editační formulář:
- Kliknutím na ikonu tužky v nahlížecí tabulce.
- Prostřednictvím vizuálních ovládacích prvků, které umožňují otevření detailu záznamu (např. kliknutím na položku v kalendáři, mapě, ganttově diagramu nebo stromové struktuře).
- Tlačítkem s definovaným skriptem „SCHEDULEFORM“, které otevře konkrétní databázový záznam.
- Pomocí nahlížecí stránky nastavené tak, aby vždy otevřela první záznam daného editačního formuláře.
1.3. Oprávnění k zobrazení obsahu editačního formuláře
- Samotný editační formulář nemá samostatné oprávnění na zobrazení. Viditelnost formuláře je odvozena od oprávnění k jeho vnitřním ovládacím prvkům.
- Editační formulář zobrazí pouze ty ovládací prvky, ke kterým má aktuálně přihlášený uživatel oprávnění. Nemá-li anonymní uživatel oprávnění k žádnému ovládacímu prvku, zobrazí se mu místo formuláře přihlašovací obrazovka; přihlášenému uživateli se v takovém případě zobrazí prázdný formulář.
- Každý ovládací prvek může mít nastaveny konkrétní uživatelské skupiny nebo jednotlivé uživatele, kteří jej mohou vidět a používat. Ostatní uživatelé ovládací prvek neuvidí a nemohou s ním pracovat.
- Ovládací prvek bez nastavených oprávnění vidí pouze uživatel s administrátorským oprávněním – oprávnění editačního formuláře ani aplikace se na něj nepřenášejí.
- Pokud uživatel vytvoří nový databázový záznam a nemá oprávnění k některým databázovým ovládacím prvkům, budou odpovídající databázové sloupce uloženy s hodnotou „null“.
- Při uložení existujícího záznamu se hodnoty databázových ovládacích prvků, ke kterým uživatel nemá oprávnění, nepřepisují a zůstávají zachovány.
1.4. Vlastnictví záznamů
- Každá databázová tabulka obsahuje sloupec „userid“, který uchovává identifikátor uživatele, jenž databázový záznam vytvořil a je jeho vlastníkem.
- Vlastníkem nového záznamu se ve výchozím stavu stane přihlášený uživatel, který záznam v editačním formuláři uloží. JavaScript editačního formuláře může vlastníka nového záznamu před uložením změnit – proměnná „#owner#“ vrací odkaz na skryté pole s ID vlastníka záznamu. U existujícího záznamu se vlastník vždy čte z databáze a změna tohoto pole se neuplatní.
- Databázové záznamy, které byly importovány nebo vytvořeny externí aplikací, nemusí mít hodnotu sloupce „userid“ vyplněnou. Takové záznamy se považují za záznamy bez vlastníka.
- Vlastníkem záznamu bez vyplněného vlastníka se stane ten uživatel, který daný záznam poprvé otevře v editačním formuláři a uloží jej.
- Záznam bez vlastníka se při otevření považuje za záznam aktuálně přihlášeného uživatele. Je-li „Práva na editaci“ nastaveno na „Vlastník nebo spoluvlastník záznamu“, může takový záznam upravit a uložit každý uživatel s oprávněním k ovládacím prvkům formuláře.
- Vlastníka záznamu doplní pouze uložení v editačním formuláři. Hromadné změny a hromadné mazání v nahlížecí tabulce považují záznam bez vlastníka za cizí; úprava hodnoty přímo v buňce nahlížecí tabulky se u něj chová stejně jako v editačním formuláři.
- Anonymní uživatel má v NET Geniu jediný uživatelský účet „Anonymous“, takže záznam vytvořený anonymním uživatelem má za vlastníka tento účet a z pohledu vlastnictví patří všem anonymním návštěvníkům. U veřejných formulářů je proto vhodné ponechat „Práva na editaci“ na hodnotě „Pouze spoluvlastník záznamu“ a uživatele, kteří záznamy zpracovávají, zařadit mezi spoluvlastníky.
1.5. Spoluvlastnictví záznamů
- Databázové záznamy mohou mít kromě jednoho vlastníka také jednoho nebo více spoluvlastníků.
- Spoluvlastníky mohou být jednotliví uživatelé i celé uživatelské skupiny.
- Informace o spoluvlastnictví se nenastavuje na úrovni jednotlivých databázových záznamů, ale na úrovni databázové tabulky, resp. editačního formuláře jako celku.
- Pro editaci existujícího databázového záznamu a jeho uložení je vyžadováno vlastnictví nebo alespoň spoluvlastnictví daného záznamu; konkrétní chování určuje nastavení „Práva na editaci“.
- Není-li uživatel vlastníkem ani spoluvlastníkem záznamu, nemá oprávnění provádět změny tohoto záznamu. Výjimkou je uživatel s administrátorským oprávněním.
- Spoluvlastnictví nemá vliv na vytváření nových databázových záznamů. Vlastníkem nového záznamu se stává uživatel, který záznam v editačním formuláři uloží, nezmění-li ho JavaScript formuláře (viz „Vlastnictví záznamů“).
1.6. Oprávnění k zobrazení hodnoty ovládacího prvku
- Viditelnost hodnot databázového ovládacího prvku může být řízena vlastnictvím nebo spoluvlastnictvím databázového záznamu.
- Právo na zobrazení hodnoty databázového ovládacího prvku se nastavuje přímo ve vlastnostech daného ovládacího prvku.
- Ovládací prvek může být nastaven jedním z následujících způsobů:
- hodnota je zobrazena všem uživatelům (výchozí stav),
- hodnota je zobrazena pouze vlastníkovi nebo spoluvlastníkovi záznamu.
- V editačním formuláři se ovládací prvek s hodnotou zobrazenou pouze vlastníkovi nebo spoluvlastníkovi zobrazí tomu, kdo smí záznam upravit – uživateli s administrátorským oprávněním, spoluvlastníkovi a vlastníkovi, je-li „Práva na editaci“ nastaveno na „Vlastník nebo spoluvlastník záznamu“. Ostatním se ovládací prvek nezobrazí a nemohou jeho hodnotu zobrazit ani vyplnit.
- Takový ovládací prvek nelze zobrazit jako sloupec nahlížecí tabulky ani exportovat z nahlížecí tabulky. V detailech nahlížecí tabulky, ve stromu a v kanbanu se jeho hodnota zobrazí vlastníkovi a spoluvlastníkovi záznamu, u záznamu bez vlastníka všem uživatelům. Tisková šablona hodnotu vytiskne vždy.
- Nastavení chrání zobrazení ovládacího prvku, nikoli hodnotu použitou v kódu stránky: identifikátor ovládacího prvku použitý v JavaScriptu nebo v ovládacím prvku „HTML“ se u uživatele, který ovládací prvek nevidí, nahradí hodnotou z databáze.
1.7. Oprávnění k uložení záznamu
- Oprávnění k uložení databázového záznamu je podmíněno právem alespoň na jeden databázový ovládací prvek a současně vlastnickým oprávněním podle nastavení „Práva na editaci“. Administrátor může záznam uložit i mimo toto vlastnické omezení.
- Právo na editaci se nastavuje přímo ve vlastnostech editačního formuláře.
- Editační formulář může být nastaven jedním z následujících režimů:
- oprávnění k editaci má vlastník i spoluvlastník záznamu,
- oprávnění k editaci má pouze spoluvlastník záznamu (výchozí nastavení).
- Skripty tlačítek a událostí editačního formuláře zapisují do databáze bez ohledu na oprávnění uživatele, který je spustil – kdo smí akci provést, určují oprávnění k tlačítku.
1.8. Oprávnění ke smazání záznamu
- Smazat lze pouze existující nesystémový záznam ve formuláři, který má uživatel oprávnění editovat a ve kterém má přístup alespoň k jednomu databázovému ovládacímu prvku.
- Ve výchozím nastavení musí mít uživatel právo ke všem databázovým ovládacím prvkům editačního formuláře.
- Pokud je ve vlastnostech ovládacího prvku „ActionButtons“ zapnuta možnost „Vždy povolit mazání vlastníkovi nebo spoluvlastníkovi záznamu“, může oprávněný vlastník nebo spoluvlastník záznam smazat i bez práva k některým databázovým ovládacím prvkům.
- Záznam s příznakem „system“ nelze smazat ani při zapnutí této možnosti.
- Nemá-li uživatel oprávnění záznam smazat, je tlačítko „Smazat“ neaktivní. U nového, dosud neuloženého záznamu je tlačítko „Smazat“ neaktivní vždy.
- Smazáním záznamu se nesmažou jeho vnořené záznamy ani soubory příloh.
1.9. Identifikátory ovládacích prvků
- Identifikátor ovládacího prvku představuje odkaz na databázový ovládací prvek v objektovém modelu HTML dokumentu a současně určuje název databázového sloupce, do kterého jsou ukládány hodnoty zadané ve formuláři.
- Identifikátor je odvozen z názvu ovládacího prvku a začíná prefixem „ng_“. Systémové ovládací prvky prefix „ng_“ nepoužívají.
- Identifikátor ovládacího prvku je dostupný na záložce „Administrace“ ve vlastnostech ovládacího prvku.
- Identifikátory lze používat:
- v JavaScriptu ve webovém prohlížeči,
- ve skriptech na straně serveru,
- v databázových podmínkách a join ech,
- v ovládacím prvku „HTML“,
- v tiskových šablonách.
1.10. Zamykání záznamů
- Databázové záznamy otevřené v editačním formuláři mohou být zamykány tak, aby je mohl v jeden okamžik editovat pouze jeden uživatel.
- Uživatel, který záznam otevře jako první a smí ho měnit, jej automaticky uzamkne.
- Zámek se po dobu práce v editačním formuláři automaticky prodlužuje. Při řízeném opuštění formuláře tlačítkem „Zpět“ nebo přesměrováním se uvolní ihned; při zavření záložky, pádu prohlížeče nebo ztrátě spojení zanikne až po nastavené době od posledního prodloužení.
- Délka platnosti zámku se nastavuje v minutách ve vlastnostech editačního formuláře a hraje roli zejména při technických problémech (zavření záložky, ztráta připojení apod.).
- Zamčené záznamy jsou v nahlížecích tabulkách označeny ikonou zámku s informací o uživateli, který záznam uzamkl, a o době platnosti zámku.
- Zamčený záznam lze otevřít i jiným uživatelem, avšak editační formulář je v takovém případě dostupný pouze pro čtení.
- Uživatel s administrátorským oprávněním zámek jiného uživatele nerespektuje – zamčený záznam může upravit i uložit.
- Anonymní uživatel záznam nezamyká, ale zámek jiného uživatele se na něj vztahuje.
- Záznam se zamkne pouze tehdy, má-li uživatel oprávnění alespoň k jednomu ovládacímu prvku formuláře a smí-li záznam měnit. Uživatel, kterému se formulář otevře pouze pro čtení (nemá oprávnění záznam měnit nebo k žádnému databázovému ovládacímu prvku, případně je záznam zamčený jiným uživatelem), záznam nezamkne; zámek jiného uživatele se mu ale ohlásí. Zablokuje-li formulář až skript události „OnAfterOpen“ funkcí „DISABLEFORM“, záznam se zamkne stejně jako u formuláře, který lze měnit.
- Zámek se uplatní pouze v editačním formuláři. Úprava hodnoty přímo v nahlížecí tabulce, hromadné změny, import dat, skripty i funkce „form_Save“ a „control_Save“ zapíší i do záznamu, který má zamčený jiný uživatel.
1.11. Historie a sledování změn
- Ke každému editačnímu formuláři existuje automaticky generovaná databázová tabulka historie s názvem ve tvaru „<identifikátor formuláře>_history“.
- Tabulka historie obsahuje kopie uživatelských databázových sloupců formuláře a vlastní systémové sloupce:
- „id“ – ID záznamu historie,
- „date“ – datum změny,
- „userid“ – přihlašovací jméno uživatele, který změnu provedl,
- „action“ – identifikátor zdroje změny, například skriptu, tlačítka nebo služby; změny zapsané importem dat do nahlížecí tabulky, synchronizací nebo obnovou z historie ho nemají vyplněný; u změn, které neprošly odesláním editačního formuláře, nese hodnotu:
- „ngef.aspx“ – změna provedená externí funkcí volanou z JavaScriptu,
- „Save.aspx“ – změna uložená bez odeslání editačního formuláře: úpravou hodnoty přímo v nahlížecí tabulce, javascriptovými funkcemi „form_Save“ a „control_Save“ nebo z matice,
- „changedid“ – ID změněného záznamu,
- „pform“ a „pid“ – vazba změněného záznamu na rodičovský záznam (součást snímku pro obnovu smazaného záznamu),
- „userid2“ – vlastník změněného záznamu uložený odděleně od autora změny v „userid“ (slouží k obnově smazaného záznamu),
- „created“ – příznak vytvoření záznamu („x“ = vytvořeno formulářem, skriptem, externí funkcí, MCP serverem nebo synchronizací, „i“ = importem dat do nahlížecí tabulky, „r“ = obnoveno z historie),
- „deleted“ – příznak smazání záznamu („x“ = smazáno, „r“ = smazání vráceno obnovením).
- Při vytvoření záznamu se do historie uloží hodnoty uživatelských sloupců stejně jako do hlavní databázové tabulky.
- Při úpravě existujícího záznamu se do historie ukládají pouze změněné uživatelské sloupce. Sloupce, které se v dané změně neměnily, zůstávají v řádku historie bez uložené hodnoty (databázová hodnota „null“).
- Pokud se hodnota pole změní na databázovou hodnotu NULL, NET Genium ji v historii ukládá interní zástupnou hodnotou podle datového typu sloupce, aby ji bylo možné odlišit od sloupce, který se vůbec neměnil.
- Při smazání záznamu se do historie uloží poslední hodnoty uživatelských sloupců — tento úplný snímek umožňuje pozdější obnovu smazaného záznamu.
- Při zobrazení historie se některé zvláštní uložené hodnoty zobrazují jako tři tečky „...“ s tooltipem, který určuje jejich význam: „Prázdný řetězec“ znamená změnu textového pole na prázdný textový řetězec, „Databázová hodnota NULL“ znamená změnu pole na databázovou hodnotu NULL a „ID 0“ nebo tooltip „0“ znamená uloženou nulovou hodnotu, typicky žádný vybraný záznam u cizího klíče nebo žádný soubor/obrázek u příslušných ovládacích prvků. Samotné tři tečky „...“ tedy neznamenají „beze změny“.
- Je-li protokolování historie zapnuto, vytvoření, úprava i smazání databázového záznamu generuje odpovídající záznam v historii. Úprava, která nezmění žádnou hodnotu, záznam v historii nevytvoří.
- Do historie se nezapisují změny provedené serverovou funkcí „DELETEDATA“, příkazy „TRUNCATE TABLE“ v nastavení editačního formuláře, mazání záznamů přes MCP server, zápis přes MCP server bez zapnuté historie ani přímé změny v databázi.
- Obnovením smazaného záznamu z historie vznikne v historii nový záznam s příznakem „created“ = „r“ a původní záznam o smazání dostane příznak „deleted“ = „r“. Obnovení se do historie zapíše i u editačního formuláře se zakázaným protokolováním historie. Existuje-li v databázové tabulce záznam se stejným ID, obnovení se neprovede.
- Protokolování historie je ve výchozím stavu zapnuto a lze jej vypnout v nastavení editačního formuláře.
1.12. Synchronizace databázových tabulek
- Synchronizace slouží k udržování konzistentní kopie databázových tabulek mezi více instalacemi NET Genia.
- Podporována je jednosměrná i obousměrná (multiple master) synchronizace.
- Při obousměrné synchronizaci jsou změny prováděny ve stejném pořadí, v jakém byly iniciovány na zdrojovém serveru.
- Synchronizace není dostupná v cloudové variantě NET Genium Online — odkaz na její nastavení se v nabídce editačního formuláře nezobrazuje.
- Změny se nepřeposílají dál: změna přijatá z jiné instalace se už nikam neodesílá. Má-li se záznam dostat ze serveru A přes server B na server C, musí mít server A propojení přímo i na server C.
- Změny čekají ve společné frontě všech formulářů a všech propojených serverů a odesílají se přísně v pořadí, v jakém vznikly. Nepodaří-li se některou změnu odeslat (nedostupný server, chybějící formulář na protistraně, chyba databáze), zastaví se přenos všech dalších změn, dokud se příčina neodstraní nebo dokud se změna nesmaže z fronty v reportu synchronizace. Další pokus proběhne nejdříve za 2 minuty.
- Záznam má ve všech synchronizovaných instalacích stejné ID. Nový záznam proto před odesláním dostane ID dohodnuté se všemi protistranami a lokálně se případně přečísluje.
- Cizí klíče, vazba na rodičovský záznam („pid“) a vlastník záznamu se přenášejí jako čísla, takže odkazované záznamy musí mít ve všech instalacích stejné ID. Vlastník záznamu se přenáší, jen když se na tentýž server synchronizují i uživatelé (formulář „Uživatel“). Rodičovský formulář vnořených záznamů musí být propojený na tentýž server.
- Soubory příloh se přenášejí spolu se záznamem a na protistraně vzniká vždy nová příloha. Chybí-li soubor přílohy na disku odesílatele, ponechá si protistrana původní hodnotu.
- E-maily odesílané skripty „OnBeforeSave“ a „OnAfterSave“ synchronizovaného záznamu se odešlou až po úspěšném přenosu záznamu na všechny protistrany.
- Smazání záznamu se na protistranu přenese, smaže se ale jen samotný záznam — vnořené záznamy ani soubory příloh ne. Nový záznam smazaný dřív, než se odeslal, se na protistranu nepřenese vůbec.
- Do fronty se nezařazují změny provedené importem dat do nahlížecí tabulky, obnovením záznamu z historie, serverovou funkcí „DELETEDATA“, příkazy „TRUNCATE TABLE“, mazáním přes MCP server a zápisem přes MCP server bez zapnuté historie.
- V administrátorském režimu nabízí editační formulář synchronizovaného záznamu tlačítko „Synchronizovat“, které odešle všechny synchronizované sloupce aktuálního záznamu.
2. Seznam záložek v dialogu nastavení editačního formuláře
- Obecné – Nastavení obecných vlastností
- Ostatní – Nastavení primárního klíče, zámků, sledování změn a javascriptu
- Nápověda – Nastavení textu plovoucí nápovědy a seskupování ovládacích prvků
- Práva na editaci – Nastavení práv
- Práva podřízených objektů – Nastavení práv podřízených ovládacích prvků
- Administrace – Nastavení ostatních vlastností
2.1. Záložka „Obecné“
2.1.1. Název
- Název editačního formuláře určuje ideálně v jednotném čísle vyjádřené pojmenování jednoho databázového záznamu, který je uložen v databázové tabulce přidružené k formuláři.
- Název editačního formuláře se zobrazuje v titulku záložky webového prohlížeče.
2.1.2. Slovník
- Slovník zobrazuje seznam názvů aplikačních skupin, aplikací, kategorií, nahlížecích stránek, editačních formulářů a ovládacích prvků použitých napříč celou aplikací.
- Vyhledávání ve slovníku slouží k navržení správného názvu editačního formuláře a k udržení konzistence názvosloví v celé aplikaci.
2.1.3. Možnosti
- Tab Obecné + Ostatní
- Zaškrtnutí tohoto pole určuje, zda mají být při vytvoření nového editačního formuláře vytvořeny také ovládací prvky záložek „Tab“ a „Ostatní“.
- Sledování změn + Watcher
- Zaškrtnutí tohoto pole určuje, zda mají být při vytvoření nového editačního formuláře vytvořeny také ovládací prvky pro sledování změn:
- Ovládací prvek „History“
- Ovládací prvek „Watcher“
- Zadáno kým
- Zadáno kdy
- Změněno kým
- Změněno kdy
2.1.4. Zadejte sloupce vaší nové tabulky
- Pole „Zadejte sloupce vaší nové tabulky“ umožňuje vytvoření nových ovládacích prvků v editačním formuláři.
- Jednotlivé názvy sloupců jsou zapisovány po řádcích, oddělené enterem, přičemž každý řádek představuje jeden sloupec tabulky.
- Za název sloupce je možné uvést také datový typ, který je zapsán za dvojtečku a mezeru hned po názvu sloupce:
- string
- Tlačítko v průvodci pro rychlé zvolení tohoto typu: Textový řetězec
- Cílový ovládací prvek: TextBox
- Datový typ: Textový řetězec
- Šířka: 150 px
- Maximální délka: 100 znaků
- integer
- Tlačítko v průvodci pro rychlé zvolení tohoto typu: Celé číslo
- Cílový ovládací prvek: TextBox
- Datový typ: Celé číslo
- Šířka: 150 px
- Maximální délka: 100 znaků
- Zarovnání: Vlevo
- double
- Tlačítko v průvodci pro rychlé zvolení tohoto typu: Desetinné číslo
- Cílový ovládací prvek: TextBox
- Datový typ: Desetinné číslo
- Šířka: 150 px
- Maximální délka: 100 znaků
- Zarovnání: Vlevo
- date
- Tlačítko v průvodci pro rychlé zvolení tohoto typu: Datum
- Cílový ovládací prvek: TextBox
- Datový typ: Datum
- Šířka: 150 px
- Maximální délka: 50 znaků
- file
- Tlačítko v průvodci pro rychlé zvolení tohoto typu: Soubor
- Cílový ovládací prvek: File
- image
- Tlačítko v průvodci pro rychlé zvolení tohoto typu: Obrázek
- Cílový ovládací prvek: Image
- Datový typ je volitelná informace, při neuvedení datového typu je automaticky zvolen textový řetězec.
2.1.5. Přidat nové sloupce
- Do již vytvořeného a uloženého editačního formuláře lze přidat nové sloupce po zaškrtnutí možnosti „Přidat nové sloupce“.
- Názvy nových sloupců se zadávají do pole „Zadejte nové sloupce“, přičemž každý řádek představuje jeden sloupec.
- Umístění vložených ovládacích prvků do formuláře se řídí tím, zda je před úpravou editačního formuláře, resp. před stisknutím ikony ozubeného kolečka, označena konkrétní pozice:
- Bez označení – vložení ovládacích prvků na konec editačního formuláře; je-li posledním ovládacím prvkem formuláře grafický oddělovač „Space“, vloží se ovládací prvky před něj
- S označením místa pomocí horizontální linie – vložení ovládacích prvků na předem určenou pozici
2.2. Záložka „Ostatní“
2.2.1. Primární klíč
- Primární klíč určuje datový typ primárního klíče – databázového sloupce "id", který je součástí každé databázové tabulky v NET Geniu.
- Datový typ primárního klíče může být kdykoliv změněn z Integeru na Long.
- Zpětná změna z Long na Integer se provede pouze tehdy, když všechny hodnoty primárního klíče v databázové tabulce i v tabulce historie spadají do rozsahu datového typu Integer; jinak primární klíč zůstane Long. Před provedením změny se zobrazí dotaz na potvrzení, protože konverze dat může být časově náročná.
- Před změnou primárního klíče na Long je důležité zajistit správnou funkcionalitu externích funkcí, služeb nebo ostatních aplikací, které s databázovou tabulkou pracují. Především jde o objekty DataSaver nebo DataSaverSynchro, které musí být změněny na DataSaver2 a DataSaverSynchro2.
2.2.2. Zamykání záznamů
- Databázové záznamy otevřené v editačním formuláři mohou být nastaveny tak, aby je v jednu chvíli mohl editovat pouze jeden uživatel.
- Uživatel, který databázový záznam otevře jako první a smí ho měnit, záznam automaticky zamyká. Během práce v editačním formuláři se zámek automaticky prodlužuje. Při řízeném opuštění formuláře tlačítkem „Zpět“ nebo přesměrováním se zámek ihned uvolní; při zavření záložky, pádu prohlížeče nebo ztrátě spojení zanikne až po uplynutí nastaveného intervalu od posledního prodloužení.
- Zámek patří oknu webového prohlížeče, ve kterém byl záznam otevřen. Otevře-li tentýž uživatel záznam i v jiném prohlížeči, zobrazí se mu tam editační formulář stejně jako ostatním uživatelům pouze ke čtení. Otevře-li ho v jiném okně téhož prohlížeče, formulář se hned po otevření zablokuje stejně jako při převzetí zámku popsaném níže a upozorní na to hlášením. V obou případech ho tooltip ikony zámku v nahlížecí tabulce upozorní, že má záznam otevřený jinde. Zámek, který po zavření okna zůstal, se i pro ostatní okna téhož přihlášení uvolní až po uplynutí nastaveného časového intervalu.
- Převezme-li zámek mezitím jiné okno nebo jiný uživatel, typicky poté, co zámek během spánku počítače vypršel, původní okno to zjistí při nejbližším automatickém prodloužení zámku, upozorní na to hlášením a další editaci záznamu v něm zablokuje: vypne tlačítka pro uložení a smazání záznamu i všechna tlačítka ovládacích prvků editačního formuláře, zakáže hromadnou editaci v nahlížecích tabulkách formuláře a vypne automatické ukládání. Tlačítko „Zpět“ zůstává funkční. Uložení i smazání záznamu ověřuje zámek i server, takže z takového okna neprojde ani tehdy, když se o ně uživatel pokusí dřív, než okno převzetí zámku zjistí; místo toho se zobrazí hlášení o uzamčení záznamu.
- Zamykání záznamů se definuje v nastavení editačního formuláře zadáním časového intervalu v minutách, během kterého má být zámek aktivní. Délka časového intervalu hraje roli pouze při technických problémech uživatele, díky kterým nemůže docházet k automatickému prodlužování zámku během celé doby práce uživatele s daným databázovým záznamem v editačním formuláři. Typicky jde o otevření jiné záložky webového prohlížeče, zavření aktuální záložky křížkem, spuštění jiné aplikace na mobilním telefonu, nebo o výpadky internetu. V případě technických problémů tedy dojde k automatickému uvolnění zámku až po uplynutí zvoleného časového intervalu od posledního automatického prodloužení zámku. Délka časového intervalu tedy určuje dobu, po kterou bude zámek aktivní i v případě výpadku spojení mezi klientem a serverem.
- Restart webové aplikace uvolní všechny zámky (u více instancí nad jednou databází jen restart hlavní instance; ostatní instance je uvolní nejdříve 6 hodin po předchozím restartu). Odhlášení relace administrátorem nebo správcem uživatelských účtů uvolní zámky této relace ihned; běžné odhlášení ani vypršení session zámky neuvolní – zaniknou až po uplynutí nastaveného časového intervalu.
- Zamčené záznamy mají v nahlížecí tabulce místo ikony tužky, která slouží k otevření databázového záznamu, ikonu zámku. Ikona zámku obsahuje tooltip s informací, kdo záznam uzamknul, a do kdy je zámek aktivní. I tak je však možné databázový záznam pomocí ikony zámku otevřít, ostatním uživatelům se editační formulář se zamčeným záznamem zobrazuje pouze ke čtení bez možnosti editace.
2.2.3. Možnosti
- Protokolovat otevírání záznamů
- Zaškrtnutí tohoto pole určuje, zda má být každé otevření databázového záznamu v editačním formuláři zaznamenáno do historie sledování změn.
- Záznam do historie vznikne při každém otevření existujícího záznamu, a to i tehdy, když uživatel záznam neuloží.
- Otevření se protokoluje jen tehdy, když není zakázané protokolování historie záznamů a uživatel má právo alespoň na jeden ovládací prvek editačního formuláře.
- Zakázat protokolování historie záznamů
- Zaškrtnutí tohoto pole určuje, zda má být zakázáno protokolování historie databázových záznamů.
- Úplné, nebo třeba jen dočasné vypnutí protokolování, se doporučuje před hromadnou úpravou nebo mazáním databázových záznamů, kdy každá změna nebo smazání databázového záznamu vytvoří jeden záznam v historii sledování změn.
- Vypnutí protokolování se týká jen nových změn; dříve zapsané záznamy historie zůstávají zachovány.
- Zakázat JavaScript
- Zaškrtnutí tohoto pole určuje, zda má být zakázáno generování obsahu ovládacích prvků „JavaScript“. Zároveň se při otevření formuláře nespustí kód události ovládacích prvků „CheckBox“, který volá funkci „chb_Display“, a tlačítko pro vymazání hodnoty ovládacích prvků „TextBox“ a „ForeignKey“ se zobrazí jako tlačítko místo ikony.
- JavaScript v událostech ovládacích prvků a v poli „Klient“ tlačítek se tímto nastavením nevypíná.
- JavaScript tlačítek ovládacího prvku „ActionButtons“ („Uložit“, „Smazat“, „Zpět“) se tímto nastavením nevypíná.
- Této možnosti se využívá v situacích, kdy dojde k zacyklení editačního formuláře nevhodným javascriptem. V některých případech dokonce není možné nastavení editačního formuláře otevřít běžným způsobem, a je nutné k tomu použít reporty. Detailní popis reportů je uveden v samostatné příručce Reporty.
2.3. Záložka „Nápověda“
2.3.1. Šířka plovoucí nápovědy
- Šířka plovoucí nápovědy určuje šířku boxu s nápovědou k editačnímu formuláři umístěného v pravém horním rohu formuláře. Tento box se zobrazuje nezávisle na vertikálním skrolování v editačním formuláři.
- Součástí plovoucího boxu je také obsah všech ovládacích prvků „RichText“ a „HTML“ se zaškrtnutým polem „Plovoucí nápověda v editačním formuláři“. Tento obsah je umístěný za nápovědu editačního formuláře v pořadí, které mají tyto ovládací prvky v editačním formuláři.
- Není-li šířka vyplněna, použije se výchozí šířka plovoucího boxu 200 pixelů.
2.3.2. Možnosti
- Automatické seskupování nápovědy přichycených ovládacích prvků
- Je-li zaškrtnuto „Automatické seskupování nápovědy přichycených ovládacích prvků“, bude ve sloupci s nápovědou jednotlivých ovládacích prvků editačního formuláře automaticky vygenerován odrážkový seznam všech ovládacích prvků s nápovědou umístěných ve stejné řádce, s možností rozkliknout položku odrážkového seznamu a zobrazit text nápovědy.
- Není-li zaškrtnuto „Automatické seskupování nápovědy přichycených ovládacích prvků“, nápovědy ovládacích prvků umístěných nalevo od přichycených ovládacích prvků se nezobrazují.
- Seskupování nápověď se používá u ovládacích prvků, které mají zaškrtnuté pole „Přichytit k předchozímu ovládacímu prvku“.
2.3.3. Nápověda
- Nápověda je text zobrazovaný v pravém horním rohu editačního formuláře uvnitř plovoucího boxu.
- Součástí plovoucího boxu je také obsah všech ovládacích prvků „RichText“ a „HTML“ se zaškrtnutým polem „Plovoucí nápověda v editačním formuláři“. Tento obsah je umístěný za nápovědu editačního formuláře v pořadí, které mají tyto ovládací prvky v editačním formuláři.
2.3.4. Poznámky
- Poznámky slouží pro zadání libovolného textu určeného pro správce aplikace.
- Do poznámek se umísťuje volání serverových funkcí, které řídí chování editačního formuláře:
- CENTER() – vystředí editační formulář
- DISABLEAUTOFILL() – zabrání webovému prohlížeči v automatickém vyplňování textových polí
- DISABLEPAGETOOLS() – skryje ikony v pravém horním rohu formuláře
- FULLAJAXMODE() – místo odeslání formuláře používá formulář ajaxové požadavky
- LABELSINSIDE() – ovládací prvky zobrazují popisek uvnitř prvku
- LAYOUT(id) – použije pro formulář jiný vzhled
- LEFTALIGNMENT() – zarovná názvy ovládacích prvků v levém sloupci doleva
- LOWRESOLUTION() – zobrazí formulář na mobilním zařízení pro malý displej
- MARGINS(top, right, bottom, left) – nastaví okraje formuláře
- NOBACKGROUND() – ovládací prvky nepoužívají barevné pozadí levého sloupce s názvy
- WEBFORM() – ovládací prvky používají reverzní design webového formuláře bez barevného pozadí levého sloupce
- Z poznámek se při otevření formuláře vyhodnocují pouze uvedené funkce; ostatní text poznámek včetně jiných serverových funkcí se nevyhodnocuje. Detailní popis serverových funkcí je uveden v samostatné příručce Serverové funkce.
- Text „DEBUGPICKER“ v poznámkách zapne výpis průběhu převzetí hodnot z pickeru do konzole prohlížeče. Detailní popis pickeru je uveden v samostatné příručce Picker.
- Do poznámek se umísťuje definice databázového pohledu, je-li editační formulář nastaven pro čtení dat z databázového pohledu.
2.4. Záložka „Práva na editaci“
2.4.1. Spoluvlastníci záznamů
- Spoluvlastníci záznamů definují seznam uživatelských skupin a uživatelů, kteří rozšiřují vlastnictví databázových záznamů. Vedle vlastníka záznamu, tedy uživatele, který databázový záznam vytvořil, rozšiřují vlastnictví o další uživatele, kteří se automaticky stávají spoluvlastníky všech záznamů v dané databázové tabulce.
2.4.2. Práva na editaci – možnosti
- Vlastník nebo spoluvlastník záznamu – databázové záznamy v editačním formuláři může editovat vlastník nebo spoluvlastník záznamu.
- Pouze spoluvlastník záznamu – databázové záznamy v editačním formuláři může editovat pouze spoluvlastník záznamu.
- Uživatel s administrátorským oprávněním může záznam editovat bez ohledu na volbu „Práva na editaci“.
2.5. Záložka „Práva podřízených objektů“
- Práva definují seznam uživatelských skupin a uživatelů, kteří mají oprávnění na zobrazení ovládacích prvků v editačním formuláři, a na zobrazování hodnot těchto ovládacích prvků všude jinde v aplikaci.
- Editační formulář nemá samostatné právo na zobrazení. Otevře se uživateli, který má právo alespoň na jeden jeho ovládací prvek; ovládací prvky bez práva se ve formuláři nezobrazí.
2.5.1. Možnosti
- Nahradit práva ve všech podřízených objektech – Zaškrtnutí tohoto pole určuje, zda má být při uložení editačního formuláře přepsáno nastavení práv ve všech podřízených ovládacích prvcích na stejná oprávnění, jako jsou nastavena v samotném editačním formuláři.
- Přidat zvolená práva všem podřízeným objektům – Zaškrtnutí tohoto pole určuje, zda mají být při uložení editačního formuláře přidány všechny zvolené uživatelské skupiny a uživatelé všem podřízeným ovládacím prvkům.
- Odebrat práva zvolená všem podřízeným objektům – Zaškrtnutí tohoto pole určuje, zda mají být při uložení editačního formuláře odebrány všechny zvolené uživatelské skupiny a uživatelé všem podřízeným ovládacím prvkům.
2.6. Záložka „Administrace“
2.6.1. Umístění
- Výběr aplikace, ve které je editační formulář umístěn.
- Rozbalovací seznam obsahuje všechny aplikace.
- Editační formuláře umístěné v systémové aplikaci „Nastavení“ nesmí být nikam jinam přesunuty, ani smazány.
2.6.2. Identifikátor
- Identifikátor určuje název databázové tabulky v databázi, do které se ukládají samotná uživatelská data vyplňovaná uživatelem v editačním formuláři.
- Identifikátor je odvozen od názvu editačního formuláře. Začíná prefixem „ng_“, a dále obsahuje alfanumerické znaky použité v názvu editačního formuláře (systémové editační formuláře „ng_“ neobsahují). Při změně názvu editačního formuláře je k dispozici tlačítko „Opravit“, které slouží k opravě identifikátoru, a tedy i přejmenování databázové tabulky v databázi. Pro přehlednost a eliminaci případných nedorozumění se doporučuje udržovat identifikátor v souladu s názvem editačního formuláře. Pokud do databáze přistupují i externí aplikace a například čtou nebo zapisují data do databázové tabulky tohoto editačního formuláře, je nutné změnu identifikátoru naplánovat až na vhodnou dobu.
- Pro automatickou opravu identifikátorů všech databázových ovládacích prvků editačního formuláře je k dispozici tlačítko „Opravit vše“.
- Při změně identifikátoru se automaticky opraví jeho výskyty v serverových funkcích SQL, SQLARRAY, COLORLEGEND a EXPORTDATA. Výskyty v ovládacích prvcích HTML a JavaScript, v tiskových šablonách a v externích funkcích se neopravují a je nutné je upravit ručně.
- Data z databázové tabulky číst/zapisovat pomocí In-Memory tabulky
- Pouze pro SQL Server
- In-Memory tabulky jsou databázové tabulky umístěné v operační paměti, které se hodí pro časté zapisování dat – především pro vytváření nových záznamů (INSERT) nebo aktualizaci stávajících (UPDATE).
- In-Memory tabulky se nehodí pro řešení potíží s rychlostí zpracování databázových dotazů během čtení dat (SELECT). Řešením těchto potíží je vždy správné nastavení indexů.
- Zaškrtnutí tohoto pole určuje, zda má být pro čtení a zápis dat použita databázová tabulka se stejným identifikátorem jako má editační formulář, jen se slovem „_memory“ na konci názvu.
- In-Memory tabulky se musí vytvářet ručně. K tomuto účelu je možné využít příkaz „CREATE ng_kniha_memory“ z rozbalovacího seznamu umístěného pod zaškrtávacím polem. Tento příkaz zobrazí databázový dotaz na vytvoření nové In-Memory tabulky se stejnou strukturou jako má editační formulář, a databázovou tabulku se pokusí rovnou vytvořit.
- In-Memory tabulky neumožňují dodatečnou změnu databázové struktury. Nejdříve je nutné smazat starou tabulku, a následně vytvořit novou s aktualizovanou strukturou. K tomuto účelu je možné využít příkaz „DROP ng_kniha_memory“ z rozbalovacího seznamu umístěného pod zaškrtávacím polem. Tento příkaz zobrazí databázový dotaz na smazání In-Memory tabulky, a databázovou tabulku se pokusí rovnou smazat.
- Před smazáním In-Memory tabulek je důležité zazálohovat data uložená v těchto tabulkách, a tato data následně obnovit. K tomuto účelu je možné využít příkaz „EXPORT DATA FROM ng_kniha_memory TO 'Backup\ng_kniha_memory.xml'“ z rozbalovacího seznamu umístěného pod zaškrtávacím polem, a následně „IMPORT DATA TO ng_kniha_memory FROM 'Backup\ng_kniha_memory.xml'“ nebo „IMPORT DATA TO ng_kniha_memory FROM ng_kniha“.
- Data z databázové tabulky číst pomocí pohledu
- Zaškrtnutí tohoto pole určuje, zda má být pro čtení dat použitý databázový pohled se stejným identifikátorem jako má editační formulář, jen se slovem „_view“ na konci názvu. Zápis dat do pohledů není možný, proto je doporučeno v těchto editačních formulářích skrýt tlačítko „Uložit“. Při pokusu o uložení dat do pohledu dojde k chybě.
- Pohledy se musí vytvářet ručně. K tomuto účelu je možné využít příkaz „CREATE ng_kniha_view“ z rozbalovacího seznamu umístěného pod zaškrtávacím polem.
- Tento příkaz zobrazí databázový dotaz na vytvoření nového pohledu se stejnou strukturou jako má editační formulář, a databázový pohled se pokusí rovnou vytvořit.
- Pohled vytvořený tímto příkazem má stejnou strukturu jako editační formulář, a proto je nutné jeho definici (CREATE VIEW) dodatečně upravit.
- Výslednou definici je vhodné uložit do poznámky editačního formuláře, kde si ho NET Genium při příštím spuštění příkazu „CREATE ng_kniha_view“ vyhledá, a spustí ho v tomto znění.
- Pohledy neumožňují dodatečnou změnu databázové struktury. Nejdříve je nutné smazat starý pohled, a následně vytvořit nový s aktualizovanou strukturou. K tomuto účelu je možné využít příkaz „DROP ng_kniha_view“ z rozbalovacího seznamu umístěného pod zaškrtávacím polem. Tento příkaz zobrazí databázový dotaz na smazání pohledu, a databázový pohled se pokusí rovnou smazat.
- V cloudové variantě NET Genium Online se pole „Data z databázové tabulky číst/zapisovat pomocí In-Memory tabulky“ ani „Data z databázové tabulky číst pomocí pohledu“ nezobrazují — In-Memory tabulky ani databázové pohledy nejsou v cloudu k dispozici.
2.6.3. Příkazy
- CREATE REPORT FROM ng_kniha – Vytvoření reportu délky stringů uložených v editačním formuláři
- CREATE ng_kniha_memory – Vytvoření In-Memory tabulky
- IMPORT DATA TO ng_kniha_memory FROM 'Backup\ng_kniha_memory.xml' – Import dat do In-Memory tabulky z XML souboru umístěného v adresáři „Backup“
- IMPORT DATA TO ng_kniha_memory FROM ng_kniha – Import dat do In-Memory tabulky z hlavní databázové tabulky editačního formuláře
- EXPORT DATA FROM ng_kniha_memory TO 'Backup\ng_kniha_memory.xml' – Export dat z In-Memory tabulky do XML souboru umístěného v adresáři „Backup“
- DROP ng_kniha_memory – Smazání In-Memory tabulky
- CREATE ng_kniha_view – Vytvoření pohledu
- DROP ng_kniha_view – Smazání pohledu
- TRUNCATE TABLE ng_kniha + ng_kniha_history – Smazání všech dat v databázové tabulce včetně záznamů historie, a nastavení čítače primárního klíče na počáteční hodnotu 1
- TRUNCATE TABLE ng_kniha_history – Smazání všech záznamů historie, a nastavení čítače primárního klíče na počáteční hodnotu 1
- RECREATE TABLE ng_kniha + ng_kniha_history – Zazálohování dat a opětovné vytvoření databázových tabulek včetně následného importu dat
- V cloudové variantě NET Genium Online se rozbalovací seznam příkazů nezobrazuje — žádný z uvedených příkazů není v cloudu k dispozici.
2.6.4. Index 1
- Nastavení indexu na databázový sloupec „pid“ nebo sdruženého indexu na databázový sloupec „pform“ spolu se sloupcem „pid“.
2.6.5. Index 2
- Nastavení indexu na libovolný seznam databázových sloupců editačního formuláře.
- Do textového pole umístěného pod zaškrtávací položkou je možné definovat názvy (identifikátory) všech sloupců, které mají být ve sdruženém indexu – mají být součástí klíče indexu.
2.6.6. Smazat historii starší než
- Nastavení počtu měsíců, během kterých je nutné uchovávat historii databázových záznamů tohoto editačního formuláře.
- Není-li počet měsíců vyplněn, použije se výchozí nastavení 6 měsíců.
- Nastavení samo o sobě historii automaticky nemaže – starší záznamy historie se smažou až jedním z níže uvedených způsobů.
- Napravo vedle textového pole jsou umístěna dvě tlačítka:
- Tlačítko „Smazat historii“ trvale smaže celou historii editačního formuláře bez ohledu na nastavený počet měsíců.
- Tlačítko „starší než“ smaže záznamy historie starší, než je počet měsíců zadaný v textovém poli (bez zadání 6 měsíců).
- Záznamy historie starší, než takto nastavené časové období je dále možné jednorázově smazat pomocí:
- Menší ikony pro smazání historie záznamů z reportů. Detailní popis reportů je uveden v samostatné příručce Reporty.
- Serverové funkce „DELETEHISTORY“.
2.6.7. C#/JavaScript
- Pomocí tlačítka „C#/JavaScript“ se zobrazí textový report s příkladem v C# pro uložení záznamu do databázové tabulky přidružené k tomuto editačnímu formuláři.
- Součástí reportu je seznam všech databázových ovládacích prvků v editačním formuláři.
2.6.8. Statistika
- Statistika zobrazuje agregovanou informaci o využívání editačního formuláře napříč celou aplikací.
- Pomocí tlačítka „Statistika“ se zobrazí detailní report všech míst, kde je editační formulář použitý nebo referencovaný, včetně možnosti otevření nastavení takového místa či ovládacího prvku.
- Před každým smazáním editačního formuláře se doporučuje důkladně projít statistku editačního prvku, a eliminovat případná nedorozumění.
- Před každým smazáním editačního formuláře se automaticky spustí vyhodnocení statistiky. Pokud je editační formulář někde v aplikaci používán nebo referencován, je nutné smazání editačního formuláře znovu potvrdit.
2.6.9. Logování
- Pomocí tlačítka „Logování“ se zobrazí detailní report se záznamy o zobrazení editačního formuláře. Report obsahuje informace o:
- datu a času zobrazení editačního formuláře,
- uživateli, který editační formulář zobrazil,
- době zpracování editačního formuláře,
- datu a času zahájení zpracování,
- datu a času dokončení zpracování,
- velikosti výsledného HTML kódu vygenerovaného editačního formuláře,
- informaci, zda se jedná o první načtení formuláře, nebo o jeho aktualizaci (postback).
- Pro správné fungování logování je nutné mít v nastavení NET Genia na záložce „Ostatní“ aktivováno logování buď „Do databáze“, nebo „Do databáze a na disk“. Detailní popis je uveden v samostatné příručce Nastavení NET Genia.
- Minimální zobrazovaný čas zpracování editačního formuláře je ve výchozím nastavení stanoven na 0 milisekund, zobrazují se tedy všechny záznamy zobrazení editačních formulářů včetně těch, jejichž zpracování trvalo 0 milisekund. Tento minimální čas je možné zvýšit nebo snížit změnou parametru „mintime“ v URL reportu.
- Počet záznamů je ve výchozím nastavení omezen na 100 záznamů. Tento počet je možné ručně zvýšit nebo snížit změnou parametru „maxrows“ v URL reportu.
2.6.10. Historie
- Pomocí tlačítka „Historie“ se zobrazí detailní report s jednotlivými záznamy sledování změn.
2.7. Tlačítka „Uložit“, „Smazat“ a „Zavřít“
- Tlačítko „Uložit“ – Uložení změn v nastavení editačního formuláře.
- Tlačítko „Smazat“ – Trvalé odstranění editačního formuláře. Smaže se editační formulář se všemi svými ovládacími prvky, jejich databázovými dotazy a skripty, databázová tabulka i tabulka historie. Soubory příloh uložených ve formuláři se nemažou. Systémový editační formulář smazat nelze.
- Tlačítko „Zavřít“ – Zavření dialogu s nastavením editačního formuláře bez uložení změn.
3. Nastavení synchronizace
3.1. Nastavení serveru
3.1.1. Název
- Název vzdáleného serveru, resp. NET Genia.
3.1.2. URL
- Internetová adresa vzdáleného NET Genia (možno použít SSL komunikaci přes protokol „https“).
3.1.3. Heslo pro synchronizaci
- Heslo pro synchronizaci nastavené na vzdáleném NET Geniu v nastavení NET Genia.
3.1.4. Intranet URL
- Intranetová adresa vzdáleného NET Genia, na jehož záznamy budou uživatelé směrováni z e-mailových zpráv rozesílaných skriptem.
3.1.5. Jazyk
- Jazyk, ve kterém budou vytvořeny odkazy v e-mailových zprávách, směrující uživatele na záznamy do NET Genia.
3.1.6. Možnosti
- Ignorovat chyby SSL
- Zaškrtnutí tohoto pole určuje, zda budou při komunikaci se vzdáleným NET Geniem přes protokol „https“ ignorovány chyby v SSL certifikátech.
- Proxy Server
- Zaškrtnutí tohoto pole určuje, zda bude pro komunikaci se vzdáleným NET Geniem používán Proxy Server.
- Proxy URL
- Přihlašovací jméno
- Přihlašovací jméno pro komunikaci s Proxy Serverem.
- Heslo
- Heslo pro komunikaci s Proxy Serverem.
3.2. Nastavení synchronizace
3.2.1. Server
- Název serveru, se kterým budou synchronizována data z databázové tabulky aktuálně otevřeného editačního formuláře.
3.2.2. Editační formulář
- Editační formulář ve vzdáleném NET Geniu, se kterým budou synchronizována data z databázové tabulky aktuálně otevřeného editačního formuláře.
3.2.3. Podmínka synchronizace
- Podmínka, která omezuje rozsah synchronizovaných dat pouze na určitou množinu.
- Podmínka se vyhodnocuje při každém uložení záznamu, včetně úpravy hodnoty v nahlížecí tabulce, hromadných změn a jednorázové synchronizace. Podmínka nad proměnnou skriptu se mimo skript (např. při úpravě hodnoty v nahlížecí tabulce) považuje za splněnou.
- Podmínka se nevztahuje na smazání záznamu. Záznam, který přestane podmínku splňovat, na protistraně zůstane.
3.2.4. Sloupce
- Nastavení sloupců určuje, jaký sloupec (nalevo) vzdáleného editačního formuláře bude synchronizován, a s jakým sloupcem (napravo) v aktuálně otevřeném editačním formuláři.
- Každý sloupec může obsahovat podmínku, pouze při jejímž splnění bude hodnota sloupce synchronizována.
3.3. Jednorázová synchronizace všech dat
- Jednorázová synchronizace odešle všechny záznamy databázové tabulky se všemi synchronizovanými sloupci pod jejich ID; záznam se stejným ID na protistraně přepíše a záznamy, které na zdroji nejsou, na protistraně nemaže.
- Pro jednorázovou synchronizaci je nastaven maximální limit 10 000 záznamů. Při jeho překročení se neodešle nic. Limit lze navýšit pomocí konfiguračního souboru „MaxSyncCount.txt“. Detailní popis konfiguračních souborů je uveden v samostatné příručce Nastavení NET Genia.
4. Chování editačního formuláře
4.1. Otevření záznamu
- Při otevření nového záznamu se ovládacím prvkům vyplní výchozí hodnoty. U existujícího záznamu se vyplní pouze výchozí hodnoty ovládacích prvků s volbou „Vyplnit výchozí hodnotu při každém otevření editačního formuláře“ a hodnoty prvků „AutoSum“.
- Povinný rozbalovací seznam a povinný cizí klíč bez vyplněné hodnoty dostanou při otevření první položku své nabídky, a to i u existujícího záznamu.
- Po otevření se spustí skript „OnAfterOpen“. Hodnoty, které skript uloží serverovou funkcí SCHEDULESAVE, a přepočtené hodnoty prvků „AutoSum“ se do databáze zapíší již při otevření záznamu, bez jeho uložení uživatelem.
- Otevřením smazaného nebo neexistujícího záznamu se uživatel přesměruje na stránku s informací o smazaném záznamu.
4.2. Uložení záznamu
- Uložení záznamu probíhá v tomto pořadí: *# validace ovládacích prvků, včetně skrytých ovládacích prvků a ovládacích prvků jen ke čtení, *# vyplnění výchozích hodnot s volbou „Vyplnit výchozí hodnotu před každým uložením záznamu do databáze“, *# skript „OnBeforeSave“, *# uložení záznamu do databáze, *# skript „OnAfterSave“, *# odeslání e-mailů naplánovaných ve skriptech a přesměrování naplánované ve skriptu „OnAfterSave“.
- Do databáze se ukládají pouze ovládací prvky, jejichž hodnota se od otevření formuláře změnila. Změnil-li mezitím jiný uživatel stejný ovládací prvek, přepíše ho hodnota z formuláře; před souběžnými úpravami chrání pouze zamykání záznamů.
- Tlačítko „Uložit“ uloží záznam a vrátí uživatele zpět. Tlačítko „Uložit a nový“ uloží záznam, spustí skript „OnBeforeOpen“ a otevře nový záznam se stejnou vazbou na rodičovský záznam. Tlačítko „Uložit a pokračovat v editaci“ uloží záznam a znovu ho otevře se zachovanou pozicí posunutí a vybranou záložkou.
- Chyba ve skriptu „OnBeforeSave“ záznam neuloží a uživatel zůstane ve formuláři s vyplněnými hodnotami. Chyba ve skriptu „OnAfterSave“ se zobrazí až po přesměrování; záznam už zůstane uložený.
4.3. Formulář pouze pro čtení
- Editační formulář se zobrazí pouze pro čtení, nemá-li uživatel oprávnění záznam měnit (viz „Práva na editaci“), je-li záznam zamčený jiným uživatelem, nebo neobsahuje-li formulář žádný databázový ovládací prvek, ke kterému má uživatel oprávnění.
- Hodnoty ovládacích prvků odeslané z formuláře pouze pro čtení se nepoužijí. Není-li důvodem zámek jiného uživatele, pracují tlačítka se skriptem, která záznam ukládají, s hodnotami uloženými v databázi a s hodnotami, které nastaví samotný skript.
- Je-li záznam zamčený jiným uživatelem, zobrazí se po otevření formuláře hlášení o uzamčení záznamu, tlačítka ovládacích prvků i hromadná editace v nahlížecích tabulkách formuláře se zakážou a server uložení i smazání záznamu, včetně uložení skriptem tlačítka, odmítne hlášením o uzamčení záznamu.
- Funkce „form_Save“, „control_Save“ a „controls_Save“ z JavaScriptu ve formuláři pouze pro čtení záznam neuloží.
4.4. Tlačítko „Zpět“
- Tlačítko „Zpět“ i uložení záznamu vrací uživatele tam, odkud byl editační formulář otevřen, v tomto pořadí: *# do rodičovského editačního formuláře se zachovanou pozicí posunutí a vybranou záložkou, byl-li záznam otevřen z jiného editačního formuláře, *# do výběrového dialogu, byl-li záznam otevřen z něj, *# na hlavní stránku s portlety, byl-li záznam otevřen z portletu, *# na nahlížecí stránku, ze které byl záznam otevřen, *# v administrátorském režimu na nový záznam téhož editačního formuláře, *# jinak na hlavní stránku.
4.5. Chyby, externí funkce a limity
- Při každém požadavku na editační formulář se spustí externí funkce NETGenium.OpenForm. Její chyba ukončí načítání celého formuláře. Detailní popis je uveden v samostatné příručce Externí funkce.
- Skript, jehož zpracování trvá 60 vteřin a déle, se zaznamená do logu „Scripts60sec“.
- V cloudové variantě NET Genium Online je doba zpracování jednoho skriptu omezena na 10 vteřin; po jejím překročení se skript přeruší chybou.
4.6. Kopírování editačního formuláře
- Kopii editačního formuláře vytvoří ikona pro kopírování v navigační oblasti administrátorského režimu. Zkopíruje se struktura formuláře, ovládací prvky, skripty, databázové dotazy, práva a spoluvlastníci. Data ani nastavení synchronizace se nekopírují.
- Systémový editační formulář zkopírovat nelze.