Obsah NET Genium .............................................................................................................................................5 Informační a komunikační portál ........................................................................................................5 Technické parametry .........................................................................................................................5 Systém uživatelských práv .................................................................................................................5 Přihlášení do NET Genia ....................................................................................................................6 Ovládací plocha .................................................................................................................................6 Terminologie a základní stavební jednotky .................................................................................................8 Aplikace............................................................................................................................................8 Editační formuláře .............................................................................................................................8 Ovládací prvky ................................................................................................................................ 13 Portlety .......................................................................................................................................... 19 Oblíbené položky ............................................................................................................................. 19 Picker ............................................................................................................................................. 19 Aplikace System .............................................................................................................................. 20 Objektový model ............................................................................................................................. 21 Databázový dotaz ................................................................................................................................... 22 Běžný databázový dotaz .................................................................................................................. 22 Agregační dotaz .............................................................................................................................. 23 Nástroje ......................................................................................................................................... 29 Vnořené záznamy ............................................................................................................................ 30 Proměnné a identifikátory ....................................................................................................................... 30 Proměnné ....................................................................................................................................... 30 Obecné proměnné ........................................................................................................................... 31 Identifikátory .................................................................................................................................. 34 Proměnné používané v javascriptu ................................................................................................... 35 Skriptové proměnné ........................................................................................................................ 37 Proměnné používané v tiskových šablonách ...................................................................................... 37 Funkce ................................................................................................................................................... 38 Funkce určené pro práci s textovými řetězci ...................................................................................... 38 Funkce určené pro práci s číselnými hodnotami ................................................................................. 41 Funkce určené pro práci s datumy .................................................................................................... 43 Skriptové funkce určené pro práci s polem hodnot ............................................................................ 45 Skriptové funkce, které nevracejí žádnou hodnotu ............................................................................. 46 Externí funkce ................................................................................................................................. 49 Skript ..................................................................................................................................................... 49 Návrhář skriptů ............................................................................................................................... 49 Skriptové proměnné ........................................................................................................................ 52 Konverze hodnot na jiný datový typ ................................................................................................. 53 Volání funkcí ................................................................................................................................... 54 3/91
Příkazy ........................................................................................................................................... 54 Javascript............................................................................................................................................... 57 Role javascriptu v NET Geniu ........................................................................................................... 57 Javascriptové funkce ....................................................................................................................... 57 Tisk ....................................................................................................................................................... 60 Tiskové šablony .............................................................................................................................. 60 Šablony aplikace MS Excel ............................................................................................................... 62 HTML šablony ................................................................................................................................. 63 Instalace ................................................................................................................................................ 64 Systémové požadavky ..................................................................................................................... 64 Spuštění instalace ........................................................................................................................... 64 Nastavení předvoleb instalace .......................................................................................................... 65 Závěrečná fáze instalace .................................................................................................................. 65 Důležitá nastavení serveru ............................................................................................................... 66 Důležitá nastavení Internet Exploreru na klientských stanicích ........................................................... 67 Používání navigačních tlačítek na klientských stanicích ....................................................................... 67 Žádost o licenční klíč ....................................................................................................................... 67 Adresářová struktura ....................................................................................................................... 68 Konfigurační soubory ....................................................................................................................... 70 Administrace ...................................................................................................................................... 71 Aktualizace ..................................................................................................................................... 71 Restart ........................................................................................................................................... 71 Export / Import aplikací ................................................................................................................... 71 Zálohování dat ................................................................................................................................ 72 Automatické přihlašování do NET Genia pomocí Active Directory ........................................................ 72 Datová komunikace ............................................................................................................................ 73 Synchronizace dat ........................................................................................................................... 73 Přímý export dat ............................................................................................................................. 74 Programování v jazyce C# nebo Visual Basic ........................................................................................ 75 NETGeniumConnection.dll ................................................................................................................ 75 Třídy a metody knihovny NETGeniumConnection............................................................................... 75 Čtení a zápis dat do databáze .......................................................................................................... 83 Externí funkce ................................................................................................................................. 84 Webové aplikace ............................................................................................................................. 90
4/91
NET Genium Informační a komunikační portál NET Genium je informační portál, který plní úlohu inteligentního úložiště dat veškerých firemních agend a slouží jako nástroj pro firemní komunikaci. Příjemné grafické prostředí NET Genia je ovládáno výhradně pomocí internetového prohlížeče z počítače umístěného uvnitř podnikové sítě nebo z libovolného místa v síti Internet, a dále také pomocí mobilního telefonu přes WAP. NET Genium se z pohledu svých uživatelů tváří jako běžná webová aplikace. Ve skutečnosti však jde o důmyslný modulární systém, složený ze sady navzájem propojených aplikací. Síla NET Genia spočívá v možnosti tvořit jednotlivé aplikace zcela samostatně s pomocí zabudovaného intuitivního návrháře.
Technické parametry NET Genium je webová aplikace naprogramovaná ve vývojářském nástroji MS Visual Studio .NET 2003 v jazyce C#. Ke své činnosti vyžaduje platformu .NET a webový server IIS (Internet Information Server) společnosti Microsoft současně s databázovým strojem používaným pro ukládání svých dat. Vedle MS SQL Serveru lze použít jeho bezplatnou verzi Express Edition / MSDE (MS SQL Server Desktop Engine) či zdarma dostupný databázový server Firebird od společnosti Firebird Foundation Incorporated. Již z použité technologie vyplývá, že musí být NET Genium nainstalováno na počítači s operačním systémem MS Windows, který se chová jako webový server. Podmínkou tedy není serverová verze operačního systému (např. MS Windows Server 2000), ale přítomnost IIS. NET Genium umožňuje fulltextové prohledávání souborových příloh formátu DOC, TXT a PDF. Z toho důvodu vyžaduje službu Indexing Service, která je součástí operačního systému MS Windows, a dále aplikaci Adobe PDF iFilter. Klientské stanice vyžadují pro přístup do NET Genia vedle platného připojení k webovému serveru NET Genia pouze internetový prohlížeč. Komunikace mezi klientskými stanicemi a serverem může být zabezpečena protokolem SSL.
Systém uživatelských práv NET Genium je založeno na systému uživatelských účtů a skupin. Každý uživatel má své osobní nastavení, které ho provází po celou dobu práce v systému a to se také odráží v rozsahu přístupných aplikací a dat. Po vyvolání NET Genia v okně internetového prohlížeče se musí každý uživatel přihlásit pod svým uživatelským jménem a heslem. Každé takové přihlášení vyžaduje jednu uživatelskou licenci. Systém však může být nakonfigurován i tak, aby zobrazoval informace také anonymním uživatelům, kteří se do systému nepřihlásili a pro práci v NET Geniu proto uživatelskou licenci nepotřebují. NET Genium automaticky monitoruje využívání jednotlivých částí informačního portálu jeho uživateli a protokoluje neplatné pokusy o přihlášení do systému. 5/91
NET Genium podporuje dva základní druhy uživatelských oprávnění. Běžné uživatelské, které využívá převážná většina jeho uživatelů a dále administrátorské, umožňující svým držitelům operace související se správou informačního portálu. Podle druhu oprávnění se informační portál zobrazuje buď v běžném uživatelském prostředí, nebo v administrátorském režimu, který mimo jiné dovoluje libovolné vytváření či modifikaci jednotlivých komponent systému – aplikací. V NET Geniu může existovat více uživatelů, kteří mají administrátorská práva, a tudíž mohou informační portál spravovat. Administrátorská práva může přidělit opět pouze administrátor tj. uživatel, který administrátorská práva již má. Ke správě uživatelů a uživatelských skupin není zcela nutně zapotřebí administrátorské oprávnění. Možnost správy uživatelů vychází z práva na zobrazení a editaci záznamů databázové tabulky uživatelů a uživatelských skupin. Tato práva však musí uživatelům nejprve přiřadit administrátor systému. Po instalaci NET Genia jsou k dispozici dvě uživatelské skupiny, které určují uživatelská oprávnění uživatelů – skupina „Administrators“ a „Users“. Již z názvu vyplývá, že skupina „Administrators“ je skupina uživatelů s právem na administraci systému. Skupina „Users“ stejně tak jako každá další nově vytvořená uživatelská skupina představuje běžné uživatele. Skupina „Users“ má však zvláštní postavení, neboť je při vytvoření libovolné elementární části NET Genia výchozím nastavením. Vytváříme-li tedy aplikace či její části, nemusíme se nutně starat o nastavování práv u každého prvku, neboť víme, že NET Genium automaticky zvolí uživatelskou skupinu „Users“.
Přihlášení do NET Genia Po spuštění NET Genia je uživatel vyzván k zadání svého uživatelského jména a hesla. Ihned po prvním přihlášení výrazně doporučujeme toto heslo změnit prostřednictvím dialogu, který mimo jiné slouží k odhlášení uživatele nebo opětovnému přihlášení pod jiným uživatelským jménem. Dialog lze otevřít klepnutím na odkaz „Odhlásit“ v pravém horním rohu ovládací plochy. Po ukončení práce v informačním portálu stačí zavřít okno internetového prohlížeče a NET Genium uživatele automaticky odhlásí.
Ovládací plocha Ovládací plocha se skládá ze tří základních částí:
Záhlaví je tvořeno volitelným logem, názvem informačního portálu, jménem aktuálně přihlášeného uživatele, aktuálním datem, odkazem na odhlášení uživatele nebo opětovné přihlášení pod jiným uživatelským jménem a dále seznamem přístupných aplikačních skupin
Navigační oblast je tvořena volitelným logem, seznamem dostupných aplikací a dále sekcí „Moje nastavení“, kde lze provádět nastavení portletů a oblíbených položek
Hlavní okno zobrazuje tři druhy stránek: o
Portlety neboli hlavní stránku informačního portálu
o
Nahlížecí stránky
o
Editační formuláře
6/91
Obrázek 1.1.: Ovládací plocha
7/91
Terminologie a základní stavební jednotky Aplikace NET Genium je důmyslný modulární systém složený ze sady navzájem propojených aplikací. Aplikace slouží k zadávání uživatelských dat, která jsou následně ukládána do databázových tabulek, a umožňují jejich zobrazování. Příkladem aplikace může být např. osobní adresář s databázovou tabulkou „Kontakt“ či plánovací kalendář s databázovou tabulkou „Termín“. Filosofie NET Genia vychází z předpokladu, že jakoukoliv aplikaci lze vytvořit ze dvou základních stavebních jednotek aplikací – editačních formulářů a nahlížecích stránek. Editační formuláře slouží k editaci jednoho datového záznamu. Nahlížecí stránky zobrazují více záznamů najednou a slouží k prohlížení, filtrování a prohledávání záznamů. Dále pak poskytují navigační a ovládací prvky pro otevírání editačních formulářů. Editační formuláře a nahlížecí stránky mohou obsahovat tlačítka, která slouží k vyvolávání událostí. Takovou událostí může být i otevření editačního formuláře či nahlížecí stránky. Aplikace, která obsahuje pouze editační formuláře postrádá rozhraní, pomocí něhož lze do editačních formulářů vstupovat. Proto musí nejmenší aplikace obsahovat alespoň jednu nahlížecí stránku. Najdou se však i aplikace, které jsou složené pouze z nahlížecích stránek, protože zobrazují statické informace nebo naopak informace generované dynamicky, např. graf. Aplikace může obsahovat libovolné množství editačních formulářů a nahlížecích stránek. Veškeré aplikace NET Genia lze tvořit pomocí zabudovaného intuitivního návrháře, který je přístupný v administrátorském režimu. Na vytváření a modifikaci aplikací mají tedy právo pouze uživatelé patřící do skupiny administrátorů. Výsledný portál vidí stejně jako běžní uživatelé, pouze s tím rozdílem, že se jim zobrazují navigační prvky a ovládací nástroje určené k modifikaci aplikací či jejich částí. Administrátor, který chce zobrazovat informační portál v běžném uživatelském režimu např. za účelem ladění či testování aplikací musí použít běžný uživatelský účet. Tvorba aplikací se skládá z vytváření editačních formulářů, nahlížecích stránek a jejich vnitřních ovládacích prvků.
Aplikační skupiny Aplikace jsou pro lepší logické členění uspořádány do aplikačních skupin. Ty obvykle obsahují aplikace se stejným či podobným zaměřením. Na obrázcích 2.1, 2.2, 2.3 a 2.4 jsou vyobrazeny ukázky informačního portálu, který obsahuje tři aplikační skupiny – „Obecné aplikace“, „Statistické nástroje“ a „Fakturace“.
Právo na zobrazení aplikace resp. aplikační skupiny Běžný uživatel vidí a smí používat pouze ty aplikace, na které má právo. Administrátor vidí všechny aplikace a může je libovolně upravovat. Nastavení práv se provádí v administrátorském režimu ve vlastnostech aplikace.
Editační formuláře Každá databázová tabulka musí mít určité rozhraní, ve kterém je možné nastavit její strukturu resp. seznam databázových sloupců, ze kterých se skládá. Toto rozhraní musí zároveň umožňovat nastavení 8/91
vzájemných závislostí s dalšími databázovými tabulkami. Tímto rozhraním je v NET Geniu editační formulář, který uchovává metadata o databázových tabulkách. Říká tedy, jaké databázové sloupce do databázové tabulky náleží. Editační formulář je současně i grafickým rozhraním, které uživatelé používají pro zápis informací do databáze resp. editaci záznamů v databázové tabulce. Každou databázovou tabulku tedy reprezentuje jeden editační formulář. Např. databázová tabulka „Kontakt“ může obsahovat sloupce „Jméno“, „Příjmení“ a „Telefon“. Její editační formulář pak obsahuje zadávací pole, která uživatel vyplní příslušnými hodnotami, chce-li záznam uložit do databáze. Např. zadávací pole „Jméno“ vyplní hodnotou „Jan“, zadávací pole „Příjmení“ hodnotou „Novák“ atd. NET Genium automaticky protokoluje historii záznamů všech databázových tabulek, tj. seznam všech změn, které kdy byly v záznamu provedeny. Je tedy snadno dohledatelné, kdo, kdy a jakou úpravu provedl. Dokonce je možné v historii dohledat již smazané záznamy. V některých případech však může být protokolování zbytečné a vzhledem k tomu, že se historie záznamů může ve velké míře podílet na výsledné velikosti databáze, je možné protokolování historie databázové tabulky zakázat.
Právo ke vstupu do editačního formuláře Do editačního formuláře lze vstoupit pouze pomocí příslušných navigačních prvků na nahlížecích stránkách. Otevřít existující záznam z nahlížecí stránky a tím pádem i vstoupit do editačního formuláře lze kliknutím na ikonu lupy, která se zobrazuje na začátku každého řádku nahlížecí tabulky jak je patrné z obrázku V případě zadávání nového záznamu může uživatel vstoupit do editačního formuláře pomocí tlačítka, které k tomuto úkonu slouží. V případě obrázku 2.2 jde o tlačítko „Nový kontakt“, které otevře prázdný editační formulář a tím umožní uživateli zadávat údaje nového záznamu. Výjimkou nejsou ani nahlížecí stránky, jejichž tabulky neobsahují ikony lupy u jednotlivých datových záznamů. Uživatel pak nemůže záznamy otevírat a tudíž do editačního formuláře vstupovat. Detaily jednotlivých záznamů lze v takovém případě zobrazovat přímo na nahlížecí stránce, viz obrázek 2.3. Právo ke vstupu do editačního formuláře je tedy podmíněno oprávněním vidět datové záznamy a jejich lupy na nahlížecí stránce, a dále možností používat tlačítko k zadávání nového záznamu. Otevření prázdného editačního formuláře lze též docílit pomocí ikony „Nový záznam“ umístěné v ovládací liště každé nahlížecí tabulky, je-li to ve vlastnostech nahlížecí tabulky povoleno.
Vlastnictví záznamů databázových tabulek Každý záznam obsahuje skrytý údaj o vlastníkovi záznamu tj. o uživateli, který záznam vytvořil. V databázi mohou existovat i záznamy, které vlastníka nemají, a v takovém případě se stane vlastníkem záznamu uživatel, který záznam otevře a jako první uloží, viz sekce 2.3.8 Skrytý databázový sloupec „userid“.
Spoluvlastnictví záznamů databázových tabulek Každý záznam může mít kromě svého vlastníka také několik spoluvlastníků. Těmi mohou být jak jednotliví uživatelé, tak i uživatelské skupiny. Informace o spoluvlastníku záznamu není nastavena pro každý záznam databázové tabulky zvlášť, ale pro příslušnou databázovou tabulku jako celek. Nastavení spoluvlastníků se provádí v administrátorském režimu ve vlastnostech editačního formuláře.
9/91
Vlastnictví nebo alespoň spoluvlastnictví záznamu je vyžadováno při modifikaci existujícího záznamu a pokusu o jeho uložení v editačním formuláři. Není-li tedy uživatel vlastníkem nebo alespoň spoluvlastníkem existujícího záznamu, nebude mít možnost takový záznam v databázi změnit. V databázové tabulce, která nemá nastavené spoluvlastnictví záznamů, mohou měnit existující záznamy pouze jejich vlastníci. Nastavení spoluvlastnictví záznamů nemá vliv na tvorbu nových záznamů. Vlastníkem nově zadaného záznamu se stane vždy uživatel, který záznam vytvořil.
Právo na uložení záznamu v editačním formuláři Právo na uložení záznamu je podmíněno buď vlastnictvím nebo alespoň spoluvlastnictvím záznamu. Uživatel tedy může uložit pouze záznam, který sám vytvořil nebo je jeho spoluvlastníkem.
Právo na smazání záznamu v editačním formuláři Právo na smazání záznamu je podmíněno právem na uložení záznamu a současně oprávněním ke všem databázovým ovládacím prvkům editačního formuláře. Uživatel tedy nemůže smazat záznam, nemá-li právo na uložení záznamu nebo vyskytuje-li se v editačním formuláři alespoň jeden databázový ovládací prvek, na který nemá oprávnění.
Obrázek 2.1: Editační formulář
Nahlížecí stránky Informace ukládané v databázových tabulkách jsou obvykle zobrazovány na nahlížecích stránkách ve formě nahlížecích tabulek. Nahlížecí stránka umožňuje: 10/91
Zobrazování záznamů a vizuálních ovládacích prvků
Otevírání záznamů v příslušném editačním formuláři za účelem jejich editace
Vyvolání události aktivací tlačítka
Právo na zobrazení nahlížecí stránky Běžný uživatel vidí a smí používat pouze ty nahlížecí stránky, na které má právo. Administrátor vidí všechny nahlížecí stránky a může je libovolně upravovat. Nastavení práv se provádí v administrátorském režimu ve vlastnostech nahlížecí stránky.
Obrázek 2.2: Nahlížecí stránka zobrazující záznamy z databázové tabulky
11/91
Obrázek 2.3: Nahlížecí stránka zobrazující záznamy z databázové tabulky včetně detailů
12/91
Obrázek 2.4: Nahlížecí stránka zobrazující graf
Ovládací prvky Tak jako se aplikace skládají z editačních formulářů a nahlížecích stránek, skládají se i editační formuláře a nahlížecí stránky z jednotlivých prvků. V případě editačního formuláře jsou to zadávací pole, rozbalovací seznamy, nadpisy, grafické oddělovače atd. Naopak u nahlížecích stránek jde o nahlížecí tabulky, kalendáře, grafy apod. Všechny tyto prvky obecně nazýváme ovládací prvky. Zaměříme-li se na editační formulář, je evidentní, že ovládací prvky, které slouží k zadávání informací od uživatele, reprezentují databázové sloupce. Takové ovládací prvky nazýváme databázové. Editační formulář je případ, kdy jsou pohromadě databázové ovládací prvky současně s běžnými vizuálními, které mají pouze informativní či estetický význam. Mohou sloužit např. pro grafické zpřehlednění editačního formuláře nebo mohou obsahovat důležité instrukce pro uživatele při jejich vyplňování. Nejsou výjimkou ani ovládací prvky zajišťující interaktivitu editačního formuláře tím, že v sobě obsahují programový kód se specifickými funkcemi. Editační formulář je tedy složen z ovládacích prvků, jejichž převážná většina je databázových. Naopak nahlížecí stránka obsahuje ovládací prvky, které obvykle slouží pro různé formy nahlížení na existující záznamy databázové tabulky. Aby měl editační formulář vůbec nějaký smysl, musí obsahovat alespoň jeden databázový ovládací prvek. Stejná situace je u nahlížecí stránky, která musí obsahovat alespoň jeden ovládací prvek, např.
13/91
nahlížecí tabulku, kalendář či graf. Editační formulář či nahlížecí stránka mohou obsahovat libovolné množství ovládacích prvků.
Právo na zobrazení ovládacího prvku Běžný uživatel vidí a smí používat pouze ty ovládací prvky, na které má právo. Administrátor vidí všechny ovládací prvky a může je libovolně upravovat. Nastavení práv se provádí v administrátorském režimu ve vlastnostech ovládacího prvku. Nemá-li uživatel právo na zobrazení databázového ovládacího prvku, znamená to, že ovládací prvek v editačním formuláři neuvidí a nebude mít tedy ani možnost vyplnit jeho hodnotu. Vytvoří-li pak nový záznam, bude v databázovém sloupci tohoto ovládacího prvku vyplněna databázová hodnota NULL. Tato hodnota však může být před uložením záznamu nastavena pomocí skriptu, viz kapitola 6 „Skript“.
Právo na zobrazení hodnoty databázového ovládacího prvku Právo na zobrazení hodnoty záznamu uložené v databázovém ovládacím prvku mají všichni uživatelé, kteří mají možnost záznam zobrazit v nahlížecí tabulce, kalendáři, grafu apod. Viditelnost hodnoty záznamu může být řízena vlastnictvím či spoluvlastnictvím záznamu, je-li ve vlastnostech ovládacího prvku u volby „Zobrazit hodnotu“ zvoleno „pouze vlastníkovi nebo spoluvlastníkovi záznamu“. V takovém případě má oprávnění na prohlížení hodnoty záznamu pouze jeho vlastník nebo spoluvlastník a ostatním uživatelům zůstane hodnota skryta. V editačním formuláři se to projeví tak, že není k dispozici celý databázový ovládací prvek. Výchozím nastavením všech databázových ovládacích prvků je u volby „Zobrazit hodnotu“ hodnota „všem uživatelům“.
Databázové ovládací prvky editačního formuláře Název
Popis
Datový typ (max. délka)
TextBox
Jednořádkové zadávací pole
Textový řetězec (max. 4000 znaků, Firebird pouze 250) / Celé číslo / Desetinné číslo / Datum
TextArea
Víceřádkové zadávací pole
Textový řetězec (neomezená délka)
RichTextBox
Víceřádkové zadávací pole s možností
Textový řetězec (neomezená délka)
formátování textu a vkládání obrázků ComboBox ListBox MultiListBox
Rozbalovací seznam s možností vepsání
Textový řetězec (max. 4000 znaků,
vlastní hodnoty
Firebird pouze 250)
Seznam
s možností
výběru
jedné
Textový řetězec (max. 4000 znaků,
hodnoty
Firebird pouze 250)
Seznam s možností výběru více hodnot
Textový řetězec (neomezená délka)
a nastavením jejich pořadí
14/91
Radio CheckBox
Zaškrtávací seznam s možností výběru
Textový řetězec (max. 4000 znaků,
jedné hodnoty
Firebird pouze 250)
Zaškrtávací tlačítko
Textový řetězec (max. 4000 znaků, Firebird pouze 250) resp. hodnota uložená do databáze, je-li tlačítko zaškrtnuto
ForeignKey
Rozbalovací seznam s možností výběru
Celé číslo
jedné hodnoty – cizího klíče File
Souborová příloha
Celé
číslo
resp.
reference
na
reference
na
souborovou přílohu Image
Obrázková příloha
Celé
číslo
resp.
obrázkovou přílohu DatePicker
Ovládací prvek určený pro zadávání
Datum
data a času Schedule
Termín „Od-Do“ neboli časový úsek –
Viz
ovládací
a DatePicker
prvek
složený
z jednoho
ovládací
prvek
CheckBox
CheckBoxu a dvou DatePickerů Watcher
Sada čtyř zadávacích polí určených pro
Viz ovládací prvek TextBox
evidenci kdo a kdy záznam vytvořil a kdo a kdy záznam naposledy uložil AutoSum
Suma vnořených záznamů
Desetinné číslo
Vizuální ovládací prvky editačního formuláře Název
Popis
Title
Nadpis
Tab
Záložka
RichText
Formátovaný text
DataGrid
Nahlížecí tabulka
LiteDataGrid
Nahlížecí tabulka bez možnosti personalizace obsahu, hledání a filtrování dat
Calendar
Kalendář
TimeTable
Týdenní rozvrh hodin / Ganttův diagram
Map
Mapa OpenStreet
Button
Tlačítko
HTML
Vlastní HTML kód
JavaScript
Vlastní javascriptový kód 15/91
Space
Grafický oddělovač
ActionButtons
Tlačítka „Uložit“, „Smazat“ a „Zpět“ – speciální ovládací prvek přítomný v každém editačním formuláři
Vizuální ovládací prvky nahlížecí stránky Název
Popis
TextBox
Informativní textové pole zobrazující hodnotu načtenou z libovolné aplikace informačního portálu
Title
Nadpis
Tab
Záložka
RichText
Formátovaný text
History
Nahlížecí tabulka zobrazující seznam změn provedených ve všech záznamech databázové tabulky
DataGrid
Nahlížecí tabulka
DataSet
Nahlížecí tabulka sloučená z více jednoduchých nahlížecích tabulek
Calendar
Kalendář
TimeTable
Týdenní rozvrh hodin / Ganttův diagram
Planner
Plánovací kalendář
Chart
Graf
Map
Mapa OpenStreet
RDF/RSS News
Novinky načítané pomocí kanálů RSS
Tree
Stromová struktura
E-Mail
Doručená pošta
Button
Tlačítko
HTML
Vlastní HTML kód
JavaScript
Vlastní javascriptový kód
Space
Grafický oddělovač
Pravidla pro vytváření a editaci ovládacích prvků Tak jako může uživatel patřící do skupiny administrátorů vytvářet a měnit aplikační skupiny, aplikace, editační formuláře nebo nahlížecí stránky, může zakládat nové či modifikovat existující ovládací prvky. Pro správu ovládacích prvků platí následující pravidla:
Vytváření, mazání a změnu vlastností ovládacích prvků může provádět pouze administrátor.
16/91
Pro vkládání ovládacích prvků do editačního formuláře či nahlížecí stránky se využívá sekce „Ovládací prvky“ umístěné v levé části editačního formuláře.
Ovládací prvky jsou v editačním formuláři nebo nahlížecí stránce řazeny vertikálně pod sebou v jednom sloupci.
V editačním formuláři lze mezi jednotlivými ovládacími prvky přeskakovat dopředu pomocí klávesy TAB a zpět pomocí kombinace kláves SHIFT+TAB.
Administrátor, který chce vložit do editačního formuláře nebo nahlížecí stránky nový ovládací prvek, zvolí stisknutím levého tlačítka myši v editačním formuláři nebo nahlížecí stránce pozici, na kterou má být nový ovládací prvek umístěn. NET Genium zvýrazní takto vybranou pozici šedou horizontální linií. Následně uživatel vybere z nabídky ovládacích prvků v navigační oblasti požadovaný ovládací prvek a kliknutím na jeho název otevře dialog, jenž mimo rozmanitých nastavení ovládacího prvku obsahuje také tlačítko na jeho uložení. Tím dojde k vložení ovládacího prvku na předem vybrané místo editačního formuláře nebo nahlížecí stránky.
U každého existujícího ovládacího prvku se po jeho levé straně v administrátorském režimu zobrazuje ikona lupy, která slouží pro změnu nastavení ovládacího prvku nebo pro jeho smazání.
Jednotlivé ovládací prvky mohou být vertikálně přesouvány metodou Drag&Drop.
Pozdější změna názvu databázového ovládacího prvku nemá vliv na jeho identifikátor, viz sekce 4.3 „Identifikátory“. Identifikátor je možné dodatečně změnit resp. opravit. Pro tyto účely slouží tlačítko „Opravit“ v záložce „Administrace“ každého databázového ovládacího prvku. Po opravě identifikátoru NET Genium přejmenuje název příslušného databázového sloupce reprezentovaného databázovým ovládacím prvkem a nahradí případné výskyty původního identifikátoru v událostech javascriptu u všech dalších ovládacích prvků editačního formuláře. Po této změně je obvykle nutné ručně změnit i tiskové šablony, které se odvolávají na původní identifikátor.
Smazání databázového ovládacího prvku má současně za následek nevratné smazání příslušného databázového sloupce a tudíž i smazání jeho hodnot ve všech záznamech databázové tabulky.
Skryté sloupce databázové tabulky Editační formulář obsahuje převážně databázové ovládací prvky. Každý z těchto ovládacích prvků koresponduje s jedním sloupcem v databázové tabulce, kterou editační formulář reprezentuje. Neobsahuje-li editační formulář žádný databázový ovládací prvek, mohlo by se na první pohled zdát, že ani jeho databázová tabulka neobsahuje žádné sloupce. Každá databázová tabulka však obsahuje sadu skrytých databázových sloupců, které není možné odstranit či měnit jejich vlastnosti.
Skrytý databázový sloupec „id“ Databázový sloupec „id“ je jednoznačný identifikátor každého záznamu v databázové tabulce. Hodnota tohoto sloupce je vyplňována automaticky v kontinuální číselné řadě. První záznam v databázové tabulce má „id“ rovno hodnotě „1“, druhý „2“, třetí „3“ atd. Smažeme-li např. záznam s „id“ rovno „2“, vznikne v databázi mezera v číslování. Avšak nikdy se nemůže stát, že jakýkoliv jiný nově vytvořený záznam tuto mezeru zaplní a převezme 17/91
„id“ s číslem „2“. Identifikátor „id“ je tedy unikátní pro každý záznam v rámci jedné databázové tabulky po celou dobu jejího života. V prázdném editačním formuláři, ve kterém uživatel vyplňuje nový záznam, je „id“ rovno hodnotě „0“ – nový záznam má tedy „id“ nulové, existující záznam nenulové. Tuto vlastnost lze využívat při psaní vlastního programového kódu, kdy je potřeba v editačním formuláři zjistit, zda uživatel vyplňuje nový záznam nebo edituje existující.
Skrytý databázový sloupec „system“ Databázový sloupec „system“ je nositelem logické hodnoty, je-li záznam databázové tabulky systémový či nikoliv. Ani administrátor, ani běžný uživatel však nemá možnost hodnotu tohoto sloupce nastavit, neboť je obsluhována pouze systémovým jádrem NET Genia. Využívá se v případech, kdy je potřeba zabránit uživatelům mazat určité záznamy. Typickým příkladem jsou záznamy „Administrator“ a „Anonymous“ v databázové tabulce uživatelů. Tyto dva záznamy mají zásadní charakter pro funkčnost celého NET Genia a proto nesmí být smazány. Mají tedy v databázovém sloupci „system“ nastavenu hodnotu „True“.
Skrytý databázový sloupec „pid“ a „pform“ Databázové sloupce „pid“ a „pform“ úzce souvisí s pojmem, který je velmi důležitý pro správné pochopení propojování databázových tabulek mezi sebou, a tím je vnořený záznam. Vysvětlení vnořených záznamů je předmětem sekce 3.4 „Vnořené záznamy“.
Skrytý databázový sloupec „userid“ Hodnota databázového sloupce „userid“ určuje vlastníka záznamu, tj. uživatele, který záznam vytvořil. „Userid“ je cizí klíč odkazující se na „id“ uživatele z databázové tabulky uživatelů umístěné v systémové aplikaci „System“. Dojde-li během práce v informačním portálu ke smazání uživatele, který je vlastníkem určitých záznamů databázových tabulek, je nutné dodatečně zajistit změnu vlastníka těchto záznamů. V opačném případě se bude sloupec „userid“ odkazovat na „id“ uživatele, který již neexistuje. Každý editační formulář obsahuje skryté pole, v němž je uložena hodnota vlastníka právě otevřeného záznamu. Tuto hodnotu je možné měnit a docílit tak změny vlastníka záznamu. Ke skrytému poli je možné přistupovat pouze pomocí javascriptu použitím proměnné „#owner#“, která vyjadřuje HTML objekt tohoto pole. Nastavíme-li hodnotu na „0“, dojde ke zrušení vlastnictví záznamu a novým vlastníkem se stane uživatel, který záznam otevře a jako první uloží. Pro tyto účely se hodí proměnná „#userid#“, která obsahuje „id“ aktuálně přihlášeného uživatele, viz sekce 4.1 „Proměnné“.
Skrytý databázový sloupec „id2“ a „pid2“ Poslední dva skryté databázové sloupce „id2“ a „pid2“ mají význam pouze v případě, že je u editačního formuláře nastaven přímý export dat, viz sekce 11.2 „Přímý export dat“. Ve sloupci „id2“ je evidováno „id“
18/91
záznamu v cílové databázi, do které je přímý export dat směrován. V databázovém sloupci „pid2“ pak „id“ jeho rodičovského záznamu.
Portlety Hlavní stránka informačního portálu je rozdělena do tří sloupců a zobrazuje vizuální komponenty neboli portlety. Portlety slouží k současnému náhledu na rozdílné informace, pro uživatele obvykle ty nejaktuálnější. Portlety jsou fakticky zjednodušené ovládací prvky zvolené podle potřeb svých uživatelů. Nastavením portletů uživatelé individuálně volí, jaké informace chtějí mít ve sloupcích zobrazené. Nastavení se provádí v navigační oblasti v sekci „Moje nastavení“ po aktivaci odkazu „Portlety“. Portlety se zobrazují v aplikační skupině „Hlavní stránka“, kterou nelze smazat, neboť je společně s aplikační skupinou „System“ systémovou aplikační skupinou. V portletech je možné zobrazovat nahlížecí tabulky (ovládací prvek DataGrid), grafy (ovládací prvek Chart), doručenou poštu (ovládací prvek E-Mail) a vlastní HTML kód (ovládací prvek HTML). Anonymní uživatel nemá právo měnit nastavení portletů, to je prováděno výhradně administrátorem. Ostatní uživatelé mohou provádět nastavení svých portletů zcela samostatně. Je-li vytvořen nový uživatel informačního portálu, automaticky přebírá nastavení portletů od uživatele s názvem „Administrator“, tedy od administrátora systému. Přebírá však pouze ty portlety, na které má právo.
Oblíbené položky Ke zjednodušení orientace v informačním portálu slouží oblíbené položky. Ty se odkazují na nejčastěji využívané aplikace resp. jejich nahlížecí stránky. Libovolnou nahlížecí stránku NET Genia lze kdykoliv přidat do oblíbených položek aktivací odkazu „Přidat do oblíbených položek“ v sekci „Moje nastavení“ či v nastavení oblíbených položek po aktivaci odkazu „Oblíbené položky“. Anonymní uživatel nemá právo měnit nastavení svých oblíbených položek, to je prováděno výhradně administrátorem. Ostatní uživatelé mohou provádět nastavení svých oblíbených položek zcela samostatně. Je-li vytvořen nový uživatel informačního portálu, automaticky přebírá nastavení oblíbených položek od uživatele s názvem „Administrator“, tedy od administrátora systému. Přebírá však pouze ty oblíbené položky resp. nahlížecí stránky, na které má právo.
Picker Picker je dialogové okno, které na příkaz uživatele vkládá do zadávacích polí editačního formuláře zkopírované hodnoty již existujících záznamů v informačním portálu. Konkrétní záznam, ze kterého budou hodnoty zkopírovány, vybírá uživatel z tabulky možných záznamů. Tato tabulka je vzhledem totožná s běžnou nahlížecí
19/91
tabulkou. Jaké hodnoty resp. jaké databázové sloupce se přenesou do jakých zadávacích polí závisí na nastavení pickeru. Picker se aktivuje klepnutím na ikonu umístěnou napravo vedle databázového ovládacího prvku v editačním formuláři. Picker může vyplňovat několik zadávacích polí najednou, nastavuje se však pouze u ovládacího prvku, vedle kterého chceme mít ikonu pickeru zobrazenou.
Obrázek 2.6: Vyplnění údajů o zákazníkovi v sekci „Odběratel“ editačního formuláře „Faktura“ pomocí pickeru, aniž by bylo nutné údaje o zákazníkovi zadávat ručně
Aplikace System NET Genium obsahuje sadu nahlížecích stránek a editačních formulářů, které jsou bezpodmínečně nutné pro správnou činnost celého systému. Jsou umístěny v nejzákladnější aplikaci NET Genia – v aplikaci „System“. Tuto aplikaci nelze exportovat, mazat ani přesunovat na jiné místo v informačním portálu. Aplikace „System“ je umístěna v aplikační skupině se stejným názvem, tedy v aplikační skupině „System“. Jak aplikační skupina „System“ tak i v ní umístěná aplikace „System“ je pro běžného uživatele skrytá, neboť na její používání nemá právo. Je čistě na administrátorovi systému, zda mu tato oprávnění přidělí. Aplikační skupina „System“ se nachází pouze ve výchozím portálu. Po prvním přihlášení administrátora do NET Genia se
20/91
nemusí zobrazovat, je-li aktivní demonstrační portál. Výchozí portál lze aktivovat v administrátorském režimu v navigační oblasti v sekci „Portály“. Aplikace „System“ obsahuje nahlížecí stránky a editační formuláře pro evidenci uživatelů, uživatelských skupin a barevných schémat grafického rozhraní NET Genia. Dále pro evidenci státních svátků, neplatných přihlášení do systému, statistiky využívání informačního portálu a jeho aplikací uživateli, a dále obsahuje protokol o chybách vzniklých během synchronizace dat.
Objektový model Objektovou hierarchii tvoří v NET Geniu portály, aplikační skupiny, aplikace, editační formuláře, nahlížecí stránky a ovládací prvky. Je důležité si uvědomit, že NET Genium je webová aplikace a veškeré grafické výstupy jsou ztvárněny HTML kódem, který respektuje objektový model HTML dokumentů („HTML DOM“ neboli „Document Object Model for HTML“). Každá viditelná část NET Genia je sestavena pomocí HTML tagů, které ve finále ztvárňují grafické objekty NET Genia. Objektový model grafického rozhraní NET Genia tedy úzce souvisí s objektovým modelem HTML dokumentů. Pod HTML dokumentem si můžeme představit editační formuláře a nahlížecí stránky.
Portál Aplikační skupina Aplikace
Kategorie Editační formulář
Nahlížecí stránka
Nahlížecí stránka
Ovládací prvek
Ovládací prvek
Ovládací prvek
HTML objekt (tag)
HTML objekt (tag)
HTML objekt (tag)
Obrázek 2.6: Objektový model
Samotné ovládací prvky NET Genia jsou tvořeny HTML objekty resp. tagy. K tagům lze přistupovat pomocí programového kódu javascriptu a např. měnit vlastnosti jednotlivých tagů. V případě databázových ovládacích prvků je možné měnit hodnoty zadávacích polí, rozbalovacích seznamů apod. za předpokladu, že známe jejich 21/91
názvy v objektovém modelu HTML dokumentu. Tyto názvy jsou nastaveny podle názvu identifikátoru (viz sekce 4.3 „Identifikátory“), takže k nim můžeme velice snadno přistupovat. Všechny ostatní objekty HTML dokumentu lze identifikovat také, např. postupným procházením celého objektového modelu. Tato problematika však již není předmětem této příručky. Podnětné informace a detailní popis objektového modelu HTML dokumentů včetně všech jeho objektů je k dispozici na internetových stránkách „http://msdn.microsoft.com/library“ společnosti Microsoft.
Portály Do verze 3.000 byly součástí instalace NET Genia dva portály. Demonstrační se sadou ukázkových aplikací a výchozí, ve kterém administrátor systému vytváří své aplikace. V demonstračním portálu je samozřejmě možné aplikace vytvářet také. Tato varianta ale není doporučována, neboť existují možnosti importu nové sady ukázkových aplikací, čímž dojde k nenávratnému smazání všech aplikací demonstračního portálu. Pro účely vytváření aplikací slouží tedy již zmíněný výchozí portál. Ve výchozím portálu se kromě administrátora pohybují také běžní uživatelé, kteří následně jeho aplikace používají pro svou každodenní práci. Mezi oběma portály se lze v administrátorském režimu libovolně přepínat. Od
verze
3.000
je
demonstrační
portál
přístupný
pouze
na
internetových
stránkách
www.netgenium.com/cs/demo, ze kterých mohou být ukázkové aplikace libovolně exportovány.
Databázový dotaz Běžný databázový dotaz Databázový dotaz je jedním z klíčových elementů celého NET Genia. Databázový dotaz říká, jaké záznamy budou zobrazeny v portletech, nahlížecích tabulkách, kalendářích, grafech, jaké hodnoty budou zobrazeny v rozbalovacích seznamech apod. NET Genium obsahuje vlastní grafický návrhář databázových dotazů. Proto nevyžaduje od administrátorů, kteří vytvářejí aplikace a tedy i databázové dotazy, větší než elementární znalosti jazyka SQL. Základním nastavením databázového dotazu je volba zdrojové databázové tabulky, ze které budou načítány záznamy, případně volba sloupce, jehož hodnoty budou ze zdrojové databázové tabulky načteny. Každý databázový dotaz musí mít též nastaven sloupec a způsob řazení, podle kterého budou načtené záznamy seřazeny. Databázový dotaz umožňuje stanovit podmínky omezující rozsah načítaných záznamů a vytvořit tak omezení např. podle aktuálně přihlášeného uživatele či aktuálního data. Dále umožňuje připojovat (join) další databázové tabulky, umístěné např. v jiných aplikacích informačního portálu. Počet omezujících podmínek či počet připojení není omezen. V omezujících podmínkách lze použít operátory „rovná se“, „nerovná se“, „obsahuje“, „neobsahuje“ , „začíná“, „nezačíná“, „větší“, „větší nebo rovno“, „menší“, „menší nebo rovno“, „je definováno“ 22/91
(testování databázové hodnoty NULL), „není definováno“, „je v dotazu“ (vnořený dotaz) a „není v dotazu“ (vnořený dotaz). Omezující podmínky lze sdružovat pomocí logických spojen „a“ a „nebo“ a též pomocí závorek. Databázový dotaz tedy načítá záznamy z vybrané databázové tabulky při zachování nastavených podmínek. Příslušný ovládací prvek, kterému je databázový dotaz přidružen, posléze načtené záznamy zobrazuje např. na nahlížecí stránce v podobě přehledné nahlížecí tabulky.
Barevné odlišení záznamů v nahlížecí tabulce Barevného odlišení záznamů v nahlížecí tabulce lze docílit zobrazením malého obdélníčku vyplněného barvou na začátku každého řádku resp. záznamu nahlížecí tabulky. V takovém je nutno v nastavení databázového dotazu zvolit sloupec „Barva dle“, který v sobě musí nést barevnou informaci ve formátu RGB. Pro ukládání hodnot ve formátu RGB do zadávacích polí slouží návrhář barev. Nechceme-li barevný obdélníček v nahlížecích tabulkách zobrazovat, sloupec „Barva dle“ nevyplňujeme.
Filtrování záznamů nacházejících se v určitém časovém úseku Užitečnou funkcí nahlížecích tabulek či grafů je možnost filtrování záznamů databázových tabulek, jejichž libovolný sloupec typu „Datum“ se nachází v určitém časovém úseku omezeném počátečním a koncovým datem. Sloupec „Časový úsek dle“ tedy určuje, podle kterého databázového sloupce bude možné filtrovat časové úseky. Je-li tento sloupec zvolen, zobrazí se uživatelům informačního portálu nad nahlížecí tabulkou či grafem speciální ovládací prvky „Od-Do“, pomocí kterých mohou načítat pouze záznamy, jejichž hodnota se ve zvoleném sloupci nachází ve vyfiltrovaném časovém rozmezí. NET Genium si při další návštěvě nahlížecí tabulky či grafu pamatuje poslední nastavení údaje „Od“. Aby si NET Genium pamatovalo i údaj „Do“, je nutné zapnout volbu databázového dotazu „Pamatovat“. V opačném případě bude údaj „Do“ přednastaven na aktuální datum.
Agregační dotaz Speciálním případem databázového dotazu je agregační dotaz, který nejprve načte záznamy z databáze, posléze je přetransformuje pomocí matematických funkcí do virtuální tabulky a výsledek zobrazí v tabulkové formě či grafu. V takovém případě je nutné kromě zdrojové databázové tabulky, eventuálních omezujících podmínek či připojení (join) nadefinovat také sloupce výsledné virtuální tabulky, jejíž obsah zobrazuje již zmíněná tabulka nebo graf. Tyto sloupce mohou nést informaci o počtu, sumě, průměru či maximální a minimální hodnotě libovolného databázového sloupce, vypočítané z hodnot načtených záznamů ze zdrojové databázové tabulky. Každý sloupec virtuální tabulky může provádět matematický výpočet pouze z hodnot záznamů, které vyhovují nastaveným omezujícím podmínkám. Následující příklad se vztahuje ke grafu zobrazeném na obrázku 2.4 a ukazuje transformaci načtených údajů z databázové tabulky „Kontakt“ do virtuální tabulky.
23/91
Příklad Databázová tabulka „Kontakt“ Jméno
Příjmení
Jan
Novák
Telefon
Typ kontaktu Osobní
Petr
Medřický
Osobní
Pavel
Dvořák
Pracovní
Definice sloupců virtuální tabulky Název sloupce
Typ
Podmínka
Osobní
Počet
Typ kontaktu = „Osobní“
Pracovní
Počet
Typ kontaktu = „Pracovní“
Výsledná podoba virtuální tabulky Osobní
Pracovní
2
1
Seskupování záznamů Z uvedeného příkladu je evidentní, že ať nadefinujeme jakékoliv množství sloupců, výsledná virtuální tabulka bude růst pouze do šířky tzn. bude se zvyšovat počet jejích sloupců. Výsledkem bude vždy pouze jeden záznam s vypočítanými hodnotami. Existuje však možnost seskupování záznamů podle určitého databázového sloupce. Tuto možnost si ukážeme na následujícím příkladu. Zdrojovou tabulku i data necháme stejné, jen změníme nastavení sloupců virtuální tabulky.
Příklad Definice sloupců virtuální tabulky Název sloupce
Typ
Podmínka
Typ
Seskupit podle – databázový sloupec „Typ kontaktu“
Počet
Počet
Výsledná podoba virtuální tabulky Typ
Počet
Osobní
2
Pracovní
1
24/91
Seskupování se tedy provádí nastavením klíčového sloupce. Jako klíčový sloupec můžeme zvolit libovolný databázový sloupec zdrojové databázové tabulky, ze které načítáme záznamy. Počet klíčových sloupců ve výsledné virtuální tabulce není omezen.
Seskupování záznamů podle údaje typu „Datum“ K dispozici je ještě druhý typ klíčového sloupce – sloupec typu „Datum“ s názvem „Den“, „Týden“, „Měsíc“ a „Rok“. Výsledná virtuální tabulka může obsahovat pouze jeden takový sloupec. Následující příklad vysvětluje jeho použití na aplikaci kalendáře.
Příklad Databázová tabulka „Kalendář“ Datum
Uživatel
Popis
1.6.2000
Novák
Nákup
Počet hodin kancelářských
2
potřeb 2.6.2000
Novák
Jednání
1,5
2.6.2000
Medřický
Zubař
2
4.6.2000
Medřický
Technická kontrola
5
Definice sloupců virtuální tabulky Název sloupce
Typ
Datum
Seskupit
Podmínka podle
dne
–
databázový sloupec „Datum“ Počet termínů
Počet
Hodin celkem
Součet – databázový sloupec „Počet hodin“
Výsledná podoba virtuální tabulky Datum
Počet termínů
Hodin celkem
1.6.2000
1
2
2.6.2000
2
3,5
3.6.2000
0
0
4.6.2000
1
5
25/91
NET Genium umožňuje zkombinovat běžný klíčový sloupec se sloupcem datumovým. Vysvětlení je v následujícím příkladě, který používá zdrojovou databázovou tabulku z předešlého příkladu.
Příklad Definice sloupců virtuální tabulky Název sloupce
Typ
Podmínka
Uživatel
Seskupit podle – databázový sloupec „Uživatel“
Datum
Seskupit
podle
dne
–
databázový sloupec „Datum“ Počet termínů
Počet
Hodin celkem
Součet – databázový sloupec „Počet hodin“
Výsledná podoba virtuální tabulky Uživatel
Datum
Počet termínů
Hodin celkem
Medřický
2.6.2000
1
2
3.6.2000
0
0
4.6.2000
1
5
1.6.2000
1
2
2.6.2000
1
1,5
Novák
Název sloupce virtuální tabulky Sloupce
virtuální
tabulky
mohou
být
pojmenovány
pomocí
speciální
syntaxe
„název_sloupce
@matematický_výraz@zobrazovaná_hodnota@podmínka“. Matematický výraz, zobrazovaná hodnota a podmínka jsou volitelné údaje. Matematický výraz je relevantní pouze u sloupce typu „Výraz“ a udává vzorec, podle něhož se vypočte hodnota sloupce ve všech řádkách virtuální tabulky. Zobrazovaná hodnota udává, jaká hodnota se bude zobrazovat v nahlížecí tabulce ve všech jejích řádkách. Ve virtuální tabulce tak může mít sloupec určitou číselnou hodnotu, která je vyžadována např. pro výpočet dalšího sloupce virtuální tabulky pomocí matematického výrazu, ale v nahlížecí tabulce můžeme její hodnotu „skrýt“ hodnotou jinou. Chceme-li skrýt celý sloupec, nazveme jej
„@@“, „@#c0# + #c1#@“ apod.
26/91
Příklady
Součet prvního a druhého sloupce @#c0# + #c1#
Součet prvního a druhého sloupce @#c0# + #c1#@ Skrytá hodnota
Součet s hodnotou na dalším řádku @+1
Součet s hodnotou na předchozím řádku @-1
Součet prvního a druhého sloupce a hodnoty na dalším řádku @+1#c0# + #c1#
Součet hodnot větších než 5@@@>5
Zobrazení součtu sloupce i ve chvíli, kdy se suma sloupce defaultně nezobrazuje @+sum
Skrytí sloupce, který je defaultně zobrazen se sumou sloupce @-sum
Sloupce určené k seskupování záznamů
Seskupit podle o
Volba databázového sloupce, podle kterého budou záznamy načtené ze zdrojové databázové tabulky seskupovány.
o
Implementace databázové operace „GROUP BY“.
o
Virtuální tabulka může obsahovat libovolné množství klíčových sloupců. Neobsahuje-li žádný, nedojde k seskupování dat a virtuální tabulka bude obsahovat pouze jeden záznam.
Seskupit podle dne
Seskupit podle týdne
Seskupit podle měsíce
Seskupit podle roku o
Volba databázového sloupce, podle kterého budou záznamy načtené ze zdrojové databázové tabulky seskupovány podle stejného dne, týdne, měsíce či roku.
o
Implementace databázové operace „GROUP BY“.
o
Virtuální tabulka může obsahovat pouze jeden datumový sloupec typu „Seskupit podle dne“, „Seskupit podle týdne“, „Seskupit podle měsíce“ či „Seskupit podle roku“.
Agregační sloupce
Počet o
Počet záznamů načtených ze zdrojové databázové tabulky odpovídajících zadaným podmínkám.
o
Implementace databázové operace „COUNT“.
o
Virtuální tabulka může obsahovat libovolné množství těchto sloupců.
Suma o
Součet hodnot databázového sloupce ze všech načtených záznamů zdrojové databázové tabulky odpovídajících zadaným podmínkám.
o
Implementace databázové operace „SUM“.
o
Virtuální tabulka může obsahovat libovolné množství těchto sloupců. 27/91
Průměr o
Průměr hodnot databázového sloupce ze všech načtených záznamů zdrojové databázové tabulky odpovídajících zadaným podmínkám.
o
Implementace databázové operace „AVG“.
o
Virtuální tabulka může obsahovat libovolné množství těchto sloupců.
MAX o
Maximální hodnota databázového sloupce vybraná ze všech načtených záznamů zdrojové databázové tabulky odpovídajících zadaným podmínkám.
o
Implementace databázové operace „MAX“.
o
Virtuální tabulka může obsahovat libovolné množství těchto sloupců.
MIN o
Minimální hodnota databázového sloupce vybraná ze všech načtených záznamů zdrojové databázové tabulky odpovídajících zadaným podmínkám.
o
Implementace databázové operace „MIN“.
o
Virtuální tabulka může obsahovat libovolné množství těchto sloupců.
Ostatní sloupce
Text o
U databázových sloupců nesoucích textovou informaci NET Genium zvolí první hodnotu ze seznamu načtených záznamů zdrojové databázové tabulky podle abecedního pořadí.
o
U databázových sloupců nesoucích číselnou informaci bude zvolena minimální hodnota ze všech načtených záznamů.
o
Virtuální tabulka může obsahovat libovolné množství těchto sloupců. Jsou však přístupné pouze u nahlížecích tabulek.
Výraz o
Sloupec vypočítaný dynamicky na základě matematického výrazu.
o
Matematický
výraz
se
zadává
do
názvu
sloupce
pomocí
již
známé
syntaxe
„název_sloupce@matematický_výraz“, např. tedy „Součet@#c0# + #c1#“, kde „#c0#“ je hodnota prvního sloupce virtuální tabulky a „#c1#“ hodnota druhého sloupce virtuální tabulky. Nelze se však odkazovat na sloupec (výraz), který je v seznamu sloupců virtuální tabulky definován až za tímto sloupcem.
o
Virtuální tabulka může obsahovat libovolné množství těchto sloupců.
o
Volba databázového sloupce, podle kterého budou záznamy zobrazené v nahlížecí tabulce či grafu
Filtr filtrovány. Sada ovládacích prvků pro filtrování záznamů takto zvolených sloupců bude umístěna nad příslušným ovládacím prvkem. o
Virtuální tabulka může obsahovat libovolné množství těchto sloupců. 28/91
Hlavičky Je-li agregační dotaz použit pro tvorbu nahlížecí tabulky, je výstupem přímo virtuální tabulka ztvárněná do grafické podoby. NET Genium umožňuje k takové tabulce připojit ještě záhlaví sloupců, tzv. hlavičky. Následující tabulka demonstruje možné použití.
Příklad X
Y
A
B
C
Sloupec 1
Sloupec 2
Sloupec 3
Sloupec 4
Sloupec 5
Sloupec 6
…
…
…
…
…
…
Syntaxe hlaviček vypadá následovně: 1. řádek: „5@X;1@Y“ 2. řádek: „2@A;3@B;1@C“ Poznámka: Před symbolem „@“ je definován počet sloučených buněk a za symbolem „@“ název sloupce resp.
text vyplněný ve sloučené buňce.
Barvy Je-li agregační dotaz podkladem pro tvorbu grafů, je možné v databázovém dotazu nadefinovat seznam barev, které budou následně pro vykreslování grafu použity. Není-li nadefinována žádná barva, zvolí NET Genium vlastní paletu barev.
Nástroje Celý obsah jednotlivých databázových tabulek informačního portálu může být zobrazen přehledně v tabulkové formě. Rozhraní na prohlížení obsahu databázových tabulek se po přihlášení do administrátorského režimu nachází pod odkazem „Nástroje“ umístěným v navigační oblasti v sekci „Portál“.
29/91
Vnořené záznamy Vnořený záznam je záznam logicky a významově přidružený ke svému nadřazenému záznamu – záznamu rodičovskému. Každý záznam informačního portálu se může odkazovat na svého rodiče pomocí cizích klíčů „pid“ a „pform“. „Pid“ neboli „parent id“ je unikátní „id“ rodičovského záznamu. „Pform“ neboli „parent form“ pak značí unikátní „id“ databázové tabulky, ve kterém se rodičovský záznam nachází. Obecně je možné se pomocí cizích klíčů „pid“ a „pform“ odkazovat na záznam ve stejné databázové tabulce nebo i na záznam v jakékoliv jiné databázové tabulce. V případě stejné databázové tabulky lze rekurzivní metodou sestavit např. stromovou strukturu. Druhý případ si lze představit např. na aplikaci faktur, která obsahuje dvě databázové tabulky. Databázovou tabulku „Faktura“ s obecnými informacemi o faktuře a databázovou tabulku „Položka faktury“ s počtem kusů, cenou a popisem jednotlivých fakturovaných položek. Je evidentní, že jeden záznam faktury může obsahovat více fakturovaných položek a proto jsou záznamy uložené v databázové tabulce „Položka faktury“ vnořenými záznamy databázové tabulky „Faktura“. Počet úrovní, do kterých lze vnořovat databázové tabulky, není omezen. Administrátorovi NET Genia je výrazně usnadněna práce tím, že se nemusí s nastavováním vzájemným závislostí pomocí databázových sloupců „pid“ a „pform“ příliš zatěžovat.
Zobrazení vnořených záznamů Zajištění vzájemné závislosti dvou databázových tabulek lze docílit umístěním nahlížecí tabulky se vnořenými záznamy do editačního formuláře, který koresponduje s rodičovskou databázovou tabulkou. Jelikož je možné v nastavení nahlížecích tabulek umístěných v editačních formulářích zapnout volbu „Zobrazit pouze vnořené záznamy“, vloží NET Genium automaticky do databázového dotazu příslušné nahlížecí tabulky i omezující podmínky tak, aby byly zobrazovány skutečně pouze vnořené záznamy daného rodičovského záznamu a nikoliv celý obsah vnořené databázové tabulky.
Otevírání vnořených záznamů Otevírání vnořených položek je možné přímo z nahlížecí tabulky zobrazující vnořené záznamy ikonou lupy. Aby bylo možné vytvářet nové vnořené položky, je nutné vložit do rodičovského editačního formuláře např. hned pod nahlížecí tabulku vnořených položek tlačítko. Tomuto tlačítku posléze nastavit událost na otevření prázdného editačního formuláře vnořené databázové tabulky.
Proměnné a identifikátory Proměnné Proměnné jsou znakové kódy využívané administrátorem při tvorbě aplikací. NET Genium rozpoznává jejich výskyt v textu a nahrazuje je adekvátním textovým řetězcem významově přiřazeným dané proměnné. 30/91
Syntaxe proměnných je následující – „#název_proměnné#“. Příkladem je proměnná „#loginname#“, která je nahrazena přihlašovacím jménem aktuálně přihlášeného uživatele. Kdekoliv se během tvorby aplikací resp. během nastavování vlastností editačních formulářů, nahlížecích stránek, ovládacích prvků, omezujících podmínek databázových dotazů či psaní skriptů vyžaduje od administrátora zadání textového řetězce, může administrátor proměnnou použít. Názvy proměnných s výjimkou skriptových je nutné zapisovat malými písmeny.
Příklad V nahlížecí tabulce chceme zobrazit seznam kontaktů, které patří aktuálně přihlášenému uživateli. Databázový dotaz přidružený této nahlížecí tabulce může vypadat např. následovně: Vyber všechny sloupce databázové tabulky „ng_kontakt“ za podmínky, že hodnota sloupce „ng_kontaktvytvoril“ je rovna hodnotě „#loginname#“. NET Genium před samotným provedením databázového dotazu analyzuje jeho podobu a nahradí výskyty všech proměnných odpovídajícími hodnotami. Výsledek pak bude vypadat např. následovně: Vyber všechny sloupce databázové tabulky „ng_kontakt“ za podmínky, že hodnota sloupce „ng_kontaktvytvoril“ je rovna hodnotě „Administrator“. Nahlížecí tabulka zobrazující načtené záznamy pomocí tohoto databázového dotazu pak bude zobrazovat údaje v závislosti na tom, který uživatel si ji prohlíží.
NET Genium obsahuje 5 základních typů proměnných
Obecné proměnné
Identifikátory
Proměnné používané v javascriptu
Skriptové proměnné
Proměnné používané v tiskových šablonách
Obecné proměnné #crlf# o
Přechod na nový řádek – „\r\n“ neboli ekvivalent stisku klávesy „Enter“.
#day# o
Číslo aktuálního dne v měsíci (1–31).
#dayrandom# o
Náhodně zvolené „id“ záznamu vybrané ze všech existujících záznamů databázové tabulky. Proměnnou lze použít pouze v podmínce databázového dotazu, je tedy nahrazena náhodně zvoleným „id“ ze zdrojové databázové tabulky nastavené v databázovém dotazu.
o
Proměnná je nahrazena při každém volání stejnou hodnotou v průběhu jednoho dne nezávisle na uživateli, který jí volá.
31/91
Příkladem může být aplikace, která zobrazuje uživatelům v portletech každý den nové náhodně vybrané anglické slovíčko. #form# o
„Id“ aktuálně otevřeného editačního formuláře.
o
Použití proměnné je možné pouze v editačním formuláři.
Hodnota naposledy uložená aktuálně přihlášeným uživatelem do zadávacího pole a rozbalovacího nebo zaškrtávacího seznamu v aktuálně otevřeném editačním formuláři se stejným PID a PFORM.
o
Použití proměnné je možné pouze ve výchozí hodnotě TextBoxu, TextArea, ComboBoxu, ListBoxu, Radia či MultiListBoxu.
o
Uživateli lze touto proměnnou předvyplnit hodnotu, kterou použil při editaci naposledy uloženého záznamu.
#lastvalue2# o
Hodnota naposledy uložená aktuálně přihlášeným uživatelem do zadávacího pole a rozbalovacího nebo zaškrtávacího seznamu v aktuálně otevřeném editačním formuláři nezávisle na PID a PFORM.
o
Použití proměnné je možné pouze ve výchozí hodnotě TextBoxu, TextArea, ComboBoxu, ListBoxu, Radia či MultiListBoxu.
o
Uživateli lze touto proměnnou předvyplnit hodnotu, kterou použil při editaci naposledy uloženého záznamu.
#loginname# o
Přihlašovací jméno aktuálně přihlášeného uživatele.
#loginname2# o
Přihlašovací jméno aktuálně přihlášeného uživatele.
o
V editačním formuláři „Uživatel“ aplikace „System“ je proměnná „#loginname#“ identifikátorem ovládacího prvku „Přihlašovací jméno“. Proměnná „#loginname2#“ je tedy alternativou proměnné „#loginname#“, která ve všech ostatních případech nese hodnotu přihlašovacího jména aktuálně přihlášeného uživatele.
#monday# o
Datum prvního dne aktuálního týdne.
#month# o
Číslo aktuálního měsíce (1–12).
#nid# 32/91
o
„Id“ záznamu, který byl naposledy vytvořen pomocí skriptu příkazem „Nový záznam“.
o
Proměnná je dostupná pouze ve skriptu „OnAfterSave“ nebo „OnAfterDelete“.
#noreply# o
E-mailová adresa „noreply@název_portálu.cz“.
#now# o
Aktuální datum a čas ve formátu „dd.MM.rrrr HH:mm“.
#now2# o
Aktuální datum a čas ve formátu „dd.MM.rrrr HH:mm:ss“.
#null# o
Databázová hodnota NULL.
o
Proměnná je dostupná pouze ve skriptu.
#pform# o
„Id“ editačního formuláře rodičovského záznamu, viz sekce 3.4 „Vnořené záznamy“.
#pid# o
„Id“ rodičovského záznamu, viz sekce 3.4 „Vnořené záznamy“.
#plannerresource# o
Název zdroje události plánovacího kalendáře.
#plannerresourcefrom# o
Název původního zdroje události plánovacího kalendáře v případě, že byla událost přesunuta na jiný zdroj.
#plannerresourceto# o
Název nového zdroje události plánovacího kalendáře v případě, že byla událost přesunuta na jiný zdroj.
#portal# o
Název portálu.
#random# o
Náhodně zvolené „id“ záznamu vybrané ze všech existujících záznamů databázové tabulky. Proměnnou lze použít pouze v podmínce databázového dotazu, je tedy nahrazena náhodně zvoleným „id“ ze zdrojové databázové tabulky nastavené v databázovém dotazu.
o
Proměnná je nahrazena při každém volání jinou hodnotu nezávisle na uživateli, který jí volá.
Tabulátor – „\t“ neboli ekvivalent stisku klávesy „Tab“.
#today# o
Aktuální datum ve formátu „dd.MM.rrrr“.
o
Na místech, kde se očekává zadání data, je možné použít syntaxi „#today# + 1“ (zítra), „#today# – 7“ (před sedmi dny), „#today# + 1m“ (za měsíc), „#today# + 1y“ (za rok) apod. Lze však použít pouze jeden operátor „+“ nebo „–“, není tedy možný zápis např. „#today# + 2y + 7m + 3“ či „#today# +2y7m3“.
#usergroupid# o
Seznam všech uživatelských skupin (id) oddělených středníkem, v nichž je aktuálně přihlášený uživatel členem.
#usergroupname#, #usergroup# o
Seznam všech uživatelských skupin (jmen) oddělených středníkem, v nichž je aktuálně přihlášený uživatel členem.
#usergroups# o
Seznam všech uživatelských skupin a uživatelů, kteří jsou do těchto skupin umístěni.
#userid# o
„Id“ aktuálně přihlášeného uživatele.
#username# o
Celé jméno aktuálně přihlášeného uživatele.
#usersonline# o
Seznam aktuálně přihlášených uživatelů.
#viewpage# o
„Id“ aktuálně otevřené nahlížecí stránky.
#weekend# o
Použití této proměnné je možné pouze v podmínkách databázového dotazu, např. „[Datum▼] = [#weekend#]“. Databázový dotaz pak načte pouze záznamy, jejichž datum je buď sobota nebo neděle.
#year# o
Číslo aktuálního roku (např. 2000).
Identifikátory Identifikátory se používají k označení názvu editačních formulářů a databázových ovládacích prvků. Vytvoříme-li v NET Geniu editační formulář, vytvoří NET Genium automaticky v databázi k tomuto formuláři příslušnou databázovou tabulku a pojmenuje ji podle názvu editačního formuláře. Aby byl název databázové 34/91
tabulky odlišen od eventuálních ostatních tabulek v databázi, přidá NET Genium před název prefix „ng_“. Např. k editačnímu formuláři s názvem „Kontakt“ vytvoří NET Genium databázovou tabulku s názvem „ng_kontakt“. V případě, že již tabulka s tímto názvem v databázi existuje, použije NET Genium číselnou řadu počínaje nulou a vytvoří tabulku s názvem „ng_kontakt0“, „ng_kontakt1“ atd. Podobně funguje i vytváření databázových ovládacích prvků v editačním formuláři. Vytvoříme-li v editačním formuláři databázový ovládací prvek, vytvoří NET Genium automaticky k tomuto ovládacího prvku příslušný databázový sloupec a pojmenuje ho podle názvu ovládacího prvku včetně prefixu „ng_“. Např. k ovládacímu prvku s názvem „Jméno“ vytvoří NET Genium databázový sloupec s názvem „ng_jmeno“. V případě, že již sloupec s tímto názvem v databázové tabulce existuje, použije NET Genium číselnou řadu počínaje nulou a vytvoří sloupec s názvem „ng_jmeno0“, „ng_jmeno1“ atd. Takto generované názvy databázových tabulek resp. databázových sloupců nazýváme identifikátory editačních formulářů resp. databázových ovládacích prvků. Každý editační formulář a současně každý databázový ovládací prvek v rámci jednoho editačního formuláře má svůj unikátní identifikátor. Není tedy možné, aby v jedné databázi existovaly dva editační formuláře se stejným identifikátorem a současně není možné, aby v jednom editačním formuláři existovaly dva databázové ovládací prvky se stejným identifikátorem.
Identifikátory databázových ovládacích prvků Identifikátory databázových ovládacích prvků v sobě nesou hodnotu vyplněnou uživatelem v ovládacím prvku. Tato hodnota může sloužit např. jako omezující podmínka při načítání záznamů z databáze pomocí databázového dotazu. Na hodnoty databázových ovládacích prvků se lze odkazovat také pomocí názvů jednotlivých ovládacích prvků. Příkladem je zadávací pole reprezentované ovládacím prvkem TextBox s názvem „Termín“. Identifikátor ovládacího prvku je tedy „ng_termin“. Na hodnotu uloženou v tomto ovládacím prvku se odkazujeme
pomocí
syntaxe
proměnných
–
„#identifikátor#“,
„#identifikátor:value#“
nebo
„#název_ovládacího_prvku#“. Lze tedy použít variantu „#ng_termin#“, „#ng_termin:value#“ nebo „#Termín#“. Použití těchto tří variant má stejný efekt.
Původní hodnota uložená v databázovém ovládacím prvku Upravujeme-li v editačním formuláři existující záznam, může pro nás být užitečná hodnota ovládacího prvku před tím, než jí uživatel v editačním formuláři změnil. K původní hodnotě přistupujeme pomocí drobné modifikace následujícím způsobem – „#identifikátor:history#“ nebo „#název_ovládacího_prvku:history#“. Např. tedy „#ng_termin:history#“ nebo „#Termín:history#“. Obě tyto varianty mají stejný efekt.
Proměnné používané v javascriptu Programovým kódem javascriptu můžeme v editačním formuláři pomocí identifikátorů přistupovat k jednotlivým databázovým ovládacím prvkům resp. HTML tagům. Programově lze např. změnit hodnotu vyplněnou
35/91
v zadávacím poli, změnit barvu jeho pozadí apod. Použijeme-li identifikátor databázového ovládacího prvku v editačním formuláři, nahradí NET Genium výskyt tohoto identifikátoru jedinečným názvem HTML tagu, který databázový ovládací prvek v objektové hierarchii HTML dokumentu zaujímá. Takto se však identifikátory chovají pouze v ovládacím prvku JavaScript, HTML nebo u javascriptových událostí jednotlivých databázových ovládacích prvků. Např. výsledkem zápisu proměnné „#ng_jmeno#“ databázového ovládacího prvku „Jméno“ z obrázku 2.1 může být textový řetězec „document.forms[0].C0“.
Poznámka: Pro samotnou práci s HTML objekty je vyžadována alespoň základní znalost programovacího jazyka
javascript.
Příklad vyplnění hodnoty „test“ do ovládacího prvku s názvem „Jméno“ control_SetValue(#ng_jmeno#, ‘test’);
Příklad výpočtu celkové ceny var cena = jsNumber(control_GetValue(#ng_cenazakus#)), ks = jsNumber(control_GetValue(#ng_pocetkusu#)); control_SetValue(#ng_cenacelkem#, jsFormatNumber(cena * ks));
Speciální funkce javascriptu V obou dvou příkladech nejsou použity pouze standardní funkce javascriptu, ale funkce speciálně připravené pro administrátory NET Genia. Seznam těchto funkcí je uveden v sekci 7.2 „Javascriptové funkce“. Podrobný popis všech HTML tagů a jejich vlastností, metod a událostí je k dispozici na internetových stránkách společnosti Microsoft „http://msdn.microsoft.com/library“.
HTML objekty ovládacích prvků Ovládací prvky jsou v editačním formuláři řazeny pod sebou a jsou umístěny v tabulkách (
…
). Každý databázový ovládací prvek má svoji tabulku, ke které lze přistupovat javascriptem pomocí rozšířené syntaxe identifikátorů – „#identifikátor:Table#“. Stejně tak je možné přistupovat k názvu resp. nadpisu každého databázového ovládacího prvku – „#identifikátor:Name#“. Následující příklad ukazuje skrývání ovládacích prvků a změnu jejich názvu resp. nadpisu v editačním formuláři:
Příklad nastavení vlastností ovládacího prvku TextBox s názvem „Jméno“ #ng_jmeno:Table#.style.display = ‘none’; 36/91
#ng_jmeno:Name#.innerText = ‘test’;
Skriptové proměnné #A#, #B#, #C#... o
Skriptové proměnné, do kterých je možné zapisovat vlastní hodnoty.
o
Proměnné jsou polem hodnot, načteme-li je pomocí databázového dotazu.
o
Použití proměnných je možné ve skriptu a v tiskových šablonách.
o
Detailní popis skriptových proměnných je předmětem kapitoly 6.2 „Skriptové proměnné“.
Proměnné používané v tiskových šablonách #c0#, #c1#, c2#... o
Proměnné nesoucí hodnoty sloupců nahlížecí tabulky, která zobrazuje záznamy pomocí agregačního dotazu.
o
Proměnná „#c0#“ značí první sloupec, proměnná „#c1#“ druhý atd.
o
NET Genium při tisku vyhledá řádek s výskytem těchto proměnných a ten posléze zkopíruje pod sebe tolikrát, kolik je v nahlížecí tabulce záznamů. Proměnné pak nahradí hodnotami z nahlížecí tabulky.
#date1# o
Počáteční datum časového úseku nahlížecí tabulky.
#date2# o
Koncové datum časového úseku nahlížecí tabulky.
#f0#, #f1#, f2#... o
Proměnné nesoucí hodnoty vybrané ve filtrech nahlížecí tabulky, kalendáře či grafu.
o
Proměnná „#f0#“ značí první filtr, proměnná „#f1#“ druhý atd.
#chartX# o
Zástupná proměnná pro obrázek grafu v nahlížecí stránce, který bude při tisku nakopírován do tiskové šablony – místo v tiskové šabloně, kam bude obrázek grafu umístěn.
o
„X“ značí pořadí grafu v nahlížecí stránce. Číslování začíná od jedničky, první graf má tedy identifikátor „chart1“, druhý „chart2“ atd.
o
Použití této proměnné je možné pouze při zakoupení nadstavby Office Chart z řady produktů NET Genium Office.
#identifiers# o
Seznam identifikátorů databázových ovládacích prvků, které je možné použít v tiskové šabloně.
37/91
o
Je-li tisková šablona přizpůsobena na výtisk více nahlížecích tabulek najednou, je možné použít plný tvar identifikátoru, např. „#datagrid1#.#identifiers#”.
#filters# o
Seznam proměnných nesoucích hodnoty vybrané ve filtrech nahlížecí tabulky, kalendáře či grafu.
o
Je-li tisková šablona přizpůsobena na výtisk více nahlížecích tabulek najednou, je možné použít plný tvar identifikátoru, např. „#datagrid1#.#filters#”.
Funkce Funkce mají velice podobné použití jako proměnné a jsou využívány administrátorem při tvorbě aplikací. NET Genium rozpoznává jejich výskyt v textu a nahrazuje je adekvátním textovým řetězcem významově přiřazeným dané funkci. Funkce mohou mít na rozdíl od proměnných parametry a jejich syntaxe nepoužívá znak „#“. Při volání funkcí není nutné dodržovat malá či velká písmena v názvech funkcí. Jednotlivé parametry funkcí jsou umístěny v kulatých závorkách a jsou odděleny čárkami. Parametry mohou být umístěny ve dvojitých uvozovkách např. v situaci, kdy jeden z parametrů obsahuje znak dělící čárky. Nemá-li funkce žádný parametr, je i tak nutné uvádět za názvem funkce kulaté závorky. Kdekoliv se během tvorby aplikací resp. během nastavování vlastností editačních formulářů, nahlížecích stránek, ovládacích prvků či psaní skriptů vyžaduje od administrátora zadání textového řetězce, může administrátor funkci použít.
Funkce určené pro práci s textovými řetězci
ATTACHMENTURL(n) o
Funkce vrací internetovou adresu souborové přílohy zadané parametrem „n“.
o
Např. „ATTACHMENTURL(#ng_soubor#)“.
CHARS(s) o
Funkce vrací seznam znaků oddělených středníkem z textového řetězce zadaného parametrem „s“.
o
COLORLEGEND() o
Funkce vrací text „LEGENDA“.
COLORLEGEND(s) o
Např. „CHARS(Administrator)“.
Funkce vrací text „LEGENDA (s)“.
COLORLEGEND(c, s) o
Funkce vrací obdélníček vyplněný barvou zadanou parametrem „c“ ve formátu „#ffffff“ s textovým popiskem zadaným parametrem „s“. 38/91
COLORLEGEND(R, G, B, s) o
Funkce vrací obdélníček vyplněný barvou zadanou parametry RGB v desítkové soustavě s textovým popiskem zadaným parametrem „s“.
COLORLINK(s, url, center) o
Funkce vrací text zadaný parametrem „s“ s odkazem zadaným parametrem „url“. Parametr „center“ je volitelný a říká, zda má být odkaz umístěný v portletech zarovnaný na střed.
COMPANYID(s) o
Funkce vrací název společnosti zadaný parametrem „s“ bez typu společnosti (např. „s.r.o.“, „a.s“ atd.), mezer, pomlček, čárek a teček a dále převedený na velká písmena.
o
Např. „COMPANYID(NetGenium s.r.o.)“ vrátí hodnotu „NETGENIUM“.
CONTACTEMAIL(s) o
Funkce vrací e-mailovou adresu kontaktu typu „e-mailová adresa“ podle specifikace RFC2822 zadaného parametrem „s“.
Funkce vrací jméno kontaktu typu „e-mailová adresa“ podle specifikace RFC2822 zadaného parametrem „s“.
o
Např. „CONTACTNAME ("NetGenium s.r.o." )“ vrátí hodnotu „NetGenium s.r.o.“.
CONTROL(name, html, help) o
Funkce generuje HTML kód vlastního ovládacího prvku v editačním formuláři. Funkce je obvykle volána z ovládacího prvku HTML.
o
Např. „CONTROL(Jméno, , Zadejte vaše jméno)“.
o
Použití funkce je možné pouze v editačním formuláři.
EMAIL(s) o
Funkce vrací e-mailovou adresu uživatele zadaného parametrem „s“.
o
Např. „EMAIL(Administrator)“ nebo „EMAIL(#loginname#)“.
EQUALS(compare1, compare2, yes, no) o
Funkce vrací hodnotu parametru „yes“, je-li hodnota parametru „compare1“ rovna hodnotě parametru „compare2“. V opačném případě vrací hodnotu parametru „no“.
o
Např. „EQUALS(#loginname#, Administrator, 0, -1)“.
FORMATCURRENCY(n [, symbol]) o
Funkce vrací číselnou hodnotu zadanou parametrem „n“, formátovanou jako měnu s volitelným symbolem měny zadaným parametrem „symbol“.
o
Např. „FORMATCURRENCY(1000.50, CZK)“.
FORMATDATAVIEW(query [, title]) 39/91
o
Funkce vrací výsledek dotazu zadaného parametrem „query“, formátovaný do tabulky s volitelným titulkem zadaným parametrem „title“.
o
Např. „FORMATDATAVIEW(SELECT * FROM susers ORDER BY id)“.
FORMATDOUBLE(n) o
Funkce vrací číselnou hodnotu zadanou parametrem „n“, formátovanou jako desetinné číslo.
o
Např. „FORMATDOUBLE(1000.50)“.
LANGUAGE(s) o
Funkce vrací jazykové nastavení uživatele zadaného parametrem „s“. Funkce nabývá hodnoty „ar“, „cs“, „de“, „en“ nebo „fr“.
o
Např. „LANGUAGE(Administrator)“ nebo „LANGUAGE(#loginname#)“.
LOWER(s) o
Funkce vrací řetězec zadaný parametrem „s“, ve kterém byly všechny znaky převedeny na malá písmena.
o
Např. „LOWER(ABC)“ vrátí hodnotu „abc“.
PADLEFT(s, totalWidth, pad) o
Funkce doplní řetězec zadaný parametrem „s“ zleva znakem zadaným parametrem „pad“ na délku zadanou parametrem „totalWidth“.
o
Např. „PADLEFT(x, 5, 0)“ vrátí hodnotu „0000x“.
PADRIGHT(s, totalWidth, pad) o
Funkce doplní řetězec zadaný parametrem „s“ zprava znakem zadaným parametrem „pad“ na délku zadanou parametrem „totalWidth“.
o
Např. „PADRIGHT(x, 5, 0)“ vrátí hodnotu „x0000“.
PAGEIDENTIFIER(s) o
Funkce vrací identifikátor webové stránky zadané parametrem „s“.
o
Např. „PAGEIDENTIFIER(Kalendář akcí)“ vrátí hodnotu „kalendar-akci“.
PAGEIDENTIFIER2(s) o
Funkce vrací identifikátor webové stránky zadané parametrem „s“.
o
Např. „PAGEIDENTIFIER2(Kalendář akcí)“ vrátí hodnotu „KalendarAkci“.
PLACESONMAP(id) o
Funkce vrací HTML kód mapy zadané parametrem „id“ včetně všech míst na mapě definovaných v aplikaci „Mapy“.
o
Např. „PLACESONMAP(1)“.
REPLACE(s, oldvalue, newvalue) o
Funkce vrací řetězec zadaný parametrem „s“, ve kterém byly nahrazeny všechny výskyty řetězce uloženého v parametru „oldvalue“ (vzor) řetězcem uloženým v parametru „newvalue“ (náhrada).
o
Např. „REPLACE(Dobrý den, den, večer)“ vrátí hodnotu „Dobrý večer“.
SQL(query) 40/91
o
Funkce vrací výsledek dotazu zadaného parametrem „query“.
o
Např. „SQL(SELECT COUNT(*) FROM susers)“.
SUBSTRING(s, startindex, length) o
Funkce vrací podřetězec z řetězce zadaného parametrem „s“ počínaje znakem na pozici uložené v parametru „startindex“ o délce uložené v parametru „length“. Je-li hodnota parametru „length“ rovna „-1“, vrací podřetězec počínaje znakem na pozici uložené v parametru „startindex“ až na konec řetězce.
o
Např. „SUBSTRING(Vážený pane Nováku, 12, 5)“ vrátí hodnotu „Novák“.
o
Např. „SUBSTRING(Vážený pane Nováku, 12, -1)“ vrátí hodnotu „Nováku“.
TRIM(s) o
Funkce vrací řetězec zadaný parametrem „s“, ve kterém byly na začátku a na konci odstraněny mezery.
o
Např. „TRIM( Dobrý den )“ vrátí hodnotu „Dobrý den“.
UPPER(s) o
Funkce vrací řetězec zadaný parametrem „s“, ve kterém byly všechny znaky převedeny na velká písmena.
o
Např. „UPPER(abc)“ vrátí hodnotu „ABC“.
USERDETAILS(columnName) o
Funkce vrací hodnotu uloženou v databázové tabulce uživatelů ve sloupci „columnName“ na řádku, který se vztahuje k aktuálně přihlášenému uživateli.
o
Např. „USERDETAILS(id)“.
USERGROUP(s) o
Funkce vrací seznam všech uživatelských skupin oddělených středníkem, v nichž je uživatel zadaný parametrem „s“ členem.
USERSINGROUP(group) o
Funkce vrací seznam všech uživatelů oddělených středníkem, kteří jsou členem uživatelské skupiny zadané parametrem „group“.
Funkce určené pro práci s číselnými hodnotami
BS(n) o
Funkce vrací absolutní hodnotu z hodnoty parametru „n“.
o
Např. „ABS(–1.23)“ nebo „ABS(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
ARCCOS(n) o
Funkce vrací arcus cosinus hodnoty parametru „n“. 41/91
o
Např. „ARCCOS(1.23)“ nebo „ARCCOS(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
ARCSIN(n) o
Funkce vrací arcus sinus hodnoty parametru „n“.
o
Např. „ARCSIN(1.23)“ nebo „ARCSIN(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
ARCTAN(n) o
Funkce vrací arcus tangens hodnoty parametru „n“.
o
Např. „ARCTAN(1.23)“ nebo „ARCTAN(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
CEILING(n) o
Funkce vrací nejmenší celé číslo, které je větší nebo rovno hodnotě parametru „n“.
o
Např. „CEILING(-1.23)“ vrátí hodnotu „-1“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
COPYATTACHMENT(n) o
Funkce vytvoří kopii souborové přílohy zadané parametrem „n“ a vrací její „id“. Parametr „n“ značí unikátní „id“ souborové přílohy, ze které bude kopie vytvořena.
o
Např. „COPYATTACHMENT(#ng_soubor#)“.
o
Použití funkce je možné pouze ve skriptu.
COPYATTACHMENT(n, dir) o
Funkce vytvoří kopii souborové přílohy zadané parametrem „n“ a uloží jí do adresáře zadaného parametrem „dir“. Parametr „n“ značí unikátní „id“ souborové přílohy, ze které bude kopie vytvořena. Funkce vrací hodnotu „0“.
o
Např. „COPYATTACHMENT(#ng_soubor#, C:\Adresář)“.
o
Použití funkce je možné pouze ve skriptu.
COS(n) o
Funkce vrací cosinus hodnoty parametru „n“.
o
Např. „COS(1.23)“ nebo „COS(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
EXP(n) o
Funkce vrací hodnotu „e“ umocněnou na hodnotu parametru „n“.
o
Např. „EXP(1.23)“ nebo „EXP(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
FLOOR(n) o
Funkce vrací nejvyšší celé číslo, které je menší nebo rovno hodnotě parametru „n“.
o
Např. „FLOOR(-1.23)“ vrátí hodnotu „-2“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty. 42/91
INDEXOF(s, value) o
Funkce vrací pozici podřetězce zadaného parametrem „value“ v řetězci zadaném parametrem „s“ počínaje indexem „0“. Není-li takový výskyt nalezen, vrací hodnotu „-1“.
o
Např. „INDEXOF(Dobrý den, den)“ vrátí hodnotu „6“.
LENGTH(s) o
Funkce vrací délku (počet znaků) řetězce zadaného parametrem „s“.
o
Např. „LENGTH(#loginname#)“ nebo „LENGTH(#A#)“.
LOG10(n) o
Funkce vrací logaritmus o základu 10 z hodnoty parametru „n“.
o
Např. „LOG10(10)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
POWER(n) o
Funkce vrací druhou mocninu čísla zadaného parametrem „n“.
o
Např. „POWER(1.23)“ nebo „POWER(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
ROUND(n) o
Funkce vrací zaokrouhlenou hodnotu parametru „n“.
o
Např. „ROUND(-1.23)“ vrátí hodnotu „-1“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
SIN(n) o
Funkce vrací sinus hodnoty parametru „n“.
o
Např. „SIN(1.23)“ nebo „SIN(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
SQUARE(n) o
Funkce vrací druhou odmocninu kladného čísla zadaného parametrem „n“.
o
Např. „SQUARE(1.23)“ nebo „SQUARE(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
TAN(n) o
Funkce vrací tangens hodnoty parametru „n“.
o
Např. „TAN(1.23)“ nebo „TAN(#A#)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání číselné hodnoty.
Funkce určené pro práci s datumy
ADDDAYS(d, n) o
Funkce přičte počet dnů uložených v parametru „n“ k datu zadaném parametrem „d“.
o
Např. „ADDDAYS(1.1.2000, 2)“ nebo „ADDDAYS(#today#, 2)“. 43/91
ADDHOURS(d, n) o
Funkce přičte počet hodin uložených v parametru „n“ k datu zadaném parametrem „d“.
o
Např. „ADDHOURS(1.1.2000, 2)“ nebo „ADDHOURS(#today#, 2)“.
ADDMINUTES(d, n) o
Funkce přičte počet minut uložených v parametru „n“ k datu zadaném parametrem „d“.
o
Např. „ADDMINUTES(1.1.2000, 2)“ nebo „ADDMINUTES(#today#, 2)“.
ADDMONTHS(d, n) o
Funkce přičte počet měsíců uložených v parametru „n“ k datu zadaném parametrem „d“.
o
Např. „ADDMONTHS(1.1.2000, 2)“ nebo „ADDMONTHS(#today#, 2)“.
ADDWORKDAYS(d, n) o
Funkce přičte počet pracovních dnů uložených v parametru „n“ k datu zadaném parametrem „d“.
o
Např. „ADDWORKDAYS(1.1.2000, 2)“ nebo „ADDWORKDAYS(#today#, 2)“.
ADDYEARS(d, n) o
Funkce přičte počet roků uložených v parametru „n“ k datu zadaném parametrem „d“.
o
Např. ADDYEARS(1.1.2000, 2)“ nebo „ADDYEARS(#today#, 2)“.
FIRSTDAYINMONTH(d) o
Funkce vrací datum prvního dne v měsíci z data zadaného parametrem „d“.
o
Např. „FIRSTDAYINMONTH(#today#)“.
FIRSTDAYINYEAR(d) o
Funkce vrací datum prvního dne v roce z data zadaného parametrem „d“.
o
Např. „FIRSTDAYINYEAR(#today#)“.
FORMATDATE(d, s) o
Funkce vrací datum zadané parametrem „d“ formátované ve tvaru šablony uložené v parametru „s“. Parametr „s“ není povinný. Není-li parametr „s“ uveden, je automaticky zvolena šablona „D“.
o
Formát šablony lze zvolit podle vlastních potřeb či využít předdefinovaných šablon:
„d“: 29.2.2000
„D“: 29. února 2000
„f“: 29. února 2000 12:34
„F“: 29. února 2000 12:34:00
„g“: 29.2.2000 12:34
„G“: 29.2.2000 12:34:00
„r“: Tue, 29 Feb 2000 12:34:00 GMT
„s“: 2000-02-29T12:34:00
„t“: 12:34
„T“: 12:34:00
„y“: únor 2000
„dddd, MMMM dd yyyy“: úterý, února 29 2000 44/91
„dd-MM-yy“: 29-02-00
„w“: 9
„ww“: 09
„www“: 2000 / 09
LASTDAYINMONTH(d) o
Funkce vrací datum posledního dne v měsíci z data zadaného parametrem „d“.
o
Např. „LASTDAYINMONTH(15.2.2000)“ vrátí hodnotu „29.02.2000“.
LASTDAYINYEAR(d) o
Funkce vrací datum posledního dne v roce z data zadaného parametrem „d“.
o
Např. „LASTDAYINYEAR(#today#)“.
MEASUREWORKDAYS(startdate, enddate) o
Funkce vrací počet pracovních dnů z časového úseku zadaného parametry „startdate“ a „enddate“.
o
Funkce zohledňuje státní svátky evidované v aplikaci „System“.
o
Např. „MEASUREWORKDAYS(1.1.2000, 1.2.2000)“.
Skriptové funkce určené pro práci s polem hodnot
AVERAGE(v) o
Funkce vrací průměr hodnot skriptové proměnné zadané parametrem „v“, je-li proměnná polem hodnot. V opačném případě vrací hodnotu proměnné.
o
Např. „AVERAGE(#A#)“
o
Použití funkce je možné pouze ve skriptu.
COUNT(v) o
Funkce vrací počet hodnot skriptové proměnné zadané parametrem „v“, je-li proměnná polem hodnot. V opačném případě vrací hodnotu „1“.
o
Použití funkce je možné pouze ve skriptu.
FIRST(v) o
Funkce vrací první hodnotu skriptové proměnné zadané parametrem „v“, je-li proměnná polem hodnot. V opačném případě vrací hodnotu proměnné. Neobsahuje-li pole hodnot žádný prvek, funkce vrací prázdný řetězec.
o
Např. „FIRST(#A#)“.
o
Použití funkce je možné pouze ve skriptu.
GROUP(v)
45/91
o
Funkce odstraní duplicity a vrací takto upravené pole hodnot skriptové proměnné zadané parametrem „v“, je-li proměnná polem hodnot. V opačném případě vrací hodnotu proměnné. U jednotlivých prvků pole jsou rozlišována malá a velká písmena.
o
Např. výsledkem pole hodnot {„Alena“, „Petra“, „Alena“, „petra“, „Martin“, „Michal“} je pole hodnot {„Alena“, „Petra“, „petra“, „Martin“, „Michal“}.
o
Např. „GROUP(#A#)“.
o
Použití funkce je možné pouze ve skriptu.
LAST(v) o
Funkce vrací poslední hodnotu skriptové proměnné zadané parametrem „v“, je-li proměnná polem hodnot. V opačném případě vrací hodnotu proměnné. Neobsahuje-li pole hodnot žádný prvek, funkce vrací prázdný řetězec.
o
Např. „LAST(#A#)“.
o
Použití funkce je možné pouze ve skriptu.
SUM(v) o
Funkce vrací součet hodnot skriptové proměnné zadané parametrem „v“, je-li proměnná polem hodnot. V opačném případě vrací hodnotu proměnné.
o
Např. „SUM(#A#)“.
o
Použití funkce je možné pouze ve skriptu.
Skriptové funkce, které nevracejí žádnou hodnotu
CREATETEXTFILE(s, path) o
Funkce vytvoří na disku textový soubor zadaný parametrem „path“ a zapíše do něj text uložený v parametru „s“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
PROTECTSCRIPT(form, n, s) o
Funkce ověří, zda je spuštěn skript zadaný parametrem „form“ a „n“. Pokud ano, vyvolá přerušení zadané parametrem „s“.
o
Parametry „form“ a „n“ je možné zjistit v administrátorském režimu v tooltipu, který se zobrazí po zastavení ukazatele myši nad odkazem „Upravit skript“.
o
Např. „PROTECTSCRIPT(1, 10, Není dovoleno spuštění skriptu ABC. Vyčkejte prosím na jeho dokončení.)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
RENAMEATTACHMENT(n, s) o
Funkce přejmenuje souborovou přílohu zadanou parametrem „n“ na jméno bez přípony zadané parametrem „s“. Parametr „n“ značí unikátní „id“ souborové přílohy.
o
Např. „RENAMEATTACHMENT(#ng_soubor#, Nové jméno souboru)“. 46/91
o
Použití funkce je možné pouze ve skriptu.
SCHEDULEBACK() o
Funkce naplánuje otevření předchozí stránky ihned po úspěšném provedení skriptu.
o
Např. „SCHEDULEBACK()“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
SCHEDULEDEFAULTVALUE(dbname [, dbtype], v) o
Funkce naplánuje vyplnění hodnoty zadané parametrem „v“ do ovládacího prvku s identifikátorem „dbname“ při otevření prvního editačního formuláře ihned po úspěšném provedení skriptu.
o
Parametr „dbtype“ není povinný a určuje databázový typ hodnoty zadané parametrem „v“. Databázový typ je nutné uvádět u hodnot, které jsou typu Integer, Double nebo Date. V případě, že není zadán, bude použit databázový typ String.
o
Např. „SCHEDULEDEFAULTVALUE(ng_text, Výchozí hodnota)“ nebo „SCHEDULEDEFAULTVALUE(ng_datum, Date, #today# - 20)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
SCHEDULEFORM(n [, id]) o
Funkce naplánuje otevření editačního formuláře zadaného parametrem „n“ a případné otevření záznamu zadaného parametrem „id“ ihned po úspěšném provedení skriptu.
o
Parametr „n“ je možné zjistit v administrátorském režimu v tooltipu, který se zobrazí po zastavení ukazatele myši nad odkazem „Upravit editační formulář“.
o
Parametr „id“ není povinný. V případě, že není zadán, bude otevřen prázdný editační formulář určený k zadávání nového záznamu.
o
Např. „SCHEDULEFORM(#form#, 1)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
SCHEDULEMAILMESSAGE(to, cc, bcc, subject, body, attachment, save [, c0, v0 [, c1, v1…]]) o
Funkce naplánuje otevření stránky pro zadávání nové e-mailové zprávy ihned po úspěšném provedení skriptu.
o
Funkce na stránce nové e-mailové zprávy vyplní zadávací pole „Komu“ parametrem „to“, zadávací pole „Kopie“ parametrem „cc“, zadávací pole „Skrytá“ parametrem „bcc“, zadávací pole „Předmět“ parametrem „subject“ a zadávací pole „Zpráva“ parametrem „body“. Dále ke zprávě přiloží souborovou přílohu zadanou parametrem „attachment“ a zapne zaškrtávací tlačítko „Uložit“, pokud je hodnota parametru „save“ rovna hodnotě „True“.
o
Parametry „c0“ resp. „v0“ značí identifikátor databázového ovládacího prvku resp. hodnotu, která bude do databázového ovládacího prvku vložena, pokud uživatel před odesláním e-mailové zprávy zatrhne volbu „Uložit“. Tím zajistí uložení odeslané zprávy do databázové tabulky, která může tyto ovládací prvky obsahovat. Nastavení databázové tabulky, do které se odeslaná pošta ukládá, se provádí u ovládacího prvku E-Mail.
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře. Funkce je dostupná pouze při zakoupení nadstavby Office Mail z řady produktů NET Genium Office.
SCHEDULESAVE() o
Funkce naplánuje uložení právě otevřeného záznamu v editačním formuláři ihned po úspěšném provedení skriptu.
o
Např. „SCHEDULESAVE()“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
SCHEDULESCRIPT(n) o
Funkce naplánuje spuštění skriptu přiřazeného tlačítku v nahlížecí stránce zadaného parametrem „n“ ihned po úspěšném provedení skriptu.
o
Parametr „n“ je možné zjistit v administrátorském režimu v tooltipu, který se zobrazí po zastavení ukazatele myši nad odkazem „Upravit skript“.
o
Např. „SCHEDULESCRIPT(100)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
SCHEDULEVIEWPAGE(n) o
Funkce naplánuje otevření nahlížecí stránky zadané parametrem „n“ ihned po úspěšném provedení skriptu.
o
Parametr „n“ je možné zjistit v administrátorském režimu v tooltipu, který se zobrazí po zastavení ukazatele myši nad odkazem „Upravit nahlížecí stránku“.
o
Např. „SCHEDULEVIEWPAGE(100)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
SENDMAILMESSAGE(from, replyto, to, cc, bcc, subject, body, attachment, save [, c0, v0 [, c1, v1…]]) o
Funkce odešle e-mailovou zprávu z e-mailové adresy zadané parametrem „from“ na e-mailovou adresu zadanou parametrem „to“.
o
Parametry „cc“, „bcc“, „subject“, „body“, „attachment“, „save“, „c0“, „v0“ atd. jsou vysvětleny u funkce „SCHEDULEMAILMESSAGE()“.
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře. Funkce je dostupná pouze při zakoupení nadstavby Office Mail z řady produktů NET Genium Office.
SKIPDELETE() o
Funkce zabrání smazání právě otevřeného záznamu v editačním formuláři.
o
Např. „SKIPDELETE()“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
SKIPSAVE() o
Funkce zabrání uložení právě otevřeného záznamu v editačním formuláři.
o
Např. „SKIPSAVE()“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře. 48/91
SLEEP(n) o
Funkce pozastaví běh skriptu na „n“ milisekund.
o
Např. „SLEEP(1000)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
UPDATEAUTOSUM(id, form) o
Funkce aktualizuje všechny sumy vnořených záznamů, které jsou součástí záznamu zadaného parametrem „id“ ve formuláři zadaném parametrem „form“.
o
Např. „UPDATEAUTOSUM(#id#, #form#)“.
o
Parametr „form“ může být buď ID formuláře nebo jeho identifikátor.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
WRITEMESSAGE(message [, showDialog]) o
Funkce vypíše zprávu zadanou parametrem „message“ ihned po úspěšném provedení skriptu, případně ji zobrazí také v dialogovém okně.
o
Např. „WRITEMESSAGE(Provádění skriptu bylo úspěšně dokončeno, true)“.
o
Použití funkce je možné pouze ve skriptu na místě, kde se očekává zadání komentáře.
Externí funkce
NGEF(id, s1, s2, s3…) o
Funkce vrací hodnotu externí funkce definované v knihovně „ngef.dll“, viz
sekce 12.4 „Externí
funkce“. o
Např. „NGEF(MyFirstFunction, A, B, C, 1, 2, 3, 1.1.2000)“.¨
Skript Návrhář skriptů Skript je programový kód, který se spouští stisknutím tlačítka umístěného v editačním formuláři nebo nahlížecí stránce. Jeho spuštění závisí na rozhodnutí uživatele informačního portálu. Za syntaktickou a logickou správnost skriptu a současně operací, které skript provádí, ručí administrátor. Skript obvykle načítá záznamy či hodnoty z databázových tabulek, vyhodnocuje situace, kontroluje údaje zadávané uživatelem, zapisuje do databáze či rozesílá e-mailové zprávy. V administrátorském režimu je možné podobu skriptu upravovat pomocí návrháře skriptů. Skript se skládá z jednotlivých příkazů, které jsou ve formě řádků skriptu vkládány pod sebe. Každý řádek skriptu obsahuje instrukce, co se má vykonat. NET Genium prochází řádek po řádku a v závislosti na instrukcích vykonává příslušné operace. Jednoduchým příkazem skriptu může být např. deklarace proměnné, uložení hodnoty do proměnné, 49/91
porovnání hodnot dvou proměnných mezi sebou či porovnání hodnoty zadané uživatelem v editačním formuláři s proměnnou, odeslání e-mailové zprávy apod. Skript je programovacím jazykem, který má vlastní syntaxi, avšak nepodporuje programové bloky. Jeho činnost je zajišťována pouze sadou již zmíněných předdefinovaných příkazů vkládaných do návrháře skriptů. Na první pohled elementární příkazy skriptu vykonávají ve skutečnosti mnohdy velmi složité operace a jsou navrženy tak, aby dokázaly uspokojit co nejširší spektrum požadavků na funkcionalitu.
Spuštění skriptu Skript se spouští stisknutím tlačítka v editačním formuláři nebo nahlížecí stránce. Skript musí být tlačítku přiřazen. Tímto tlačítkem může být ovládací prvek Button, ActionButtons (tlačítka „Uložit“, „Smazat“ a „Zpět“ přítomné v každém editačním formuláři) nebo tlačítko, které je součástí běžného databázového ovládacího prvku jako je například zadávací pole či rozbalovací seznam. Přiřazení skriptu příslušnému ovládacím prvku se provádí opět v administrátorském režimu ve vlastnostech ovládacích prvků resp. v dialogovém okně, které pro nastavení vlastností ovládacích prvků slouží. Skript přiřazený tlačítku v nahlížecí stránce je možné spustit i externě přímo z operačního systému MS Windows pomocí programu „RunScript.exe“, známe-li identifikátor tohoto skriptu. Program „RunScript.exe“ je dodáván spolu s NET Geniem a nalezneme jej v adresáři „NETGenium\bin“.
Druhy skriptů editačního formuláře Ovládací prvek
Událost
Popis
Button
OnClick
Skript, který se provede po stisknutí tlačítka
ActionButtons
OnAfterOpen
Skript, který se provede po otevření záznamu v editačním formuláři (zobrazí se, pokud je aktivní volba „uložit a nový“, posílá
hodnoty
do
nového
záznamu) OnBeforeSave
Skript, který se provede před uložením záznamu do databáze po stisknutí tlačítka „Uložit“
OnAfterSave
Skript, který se provede po uložení záznamu do databáze po stisknutí tlačítka „Uložit“
OnBeforeOpen
Skript, který se provede před otevřením v editačním
nového
záznamu
formuláři
po
stisknutí tlačítka „Uložit a nový“ 50/91
OnBeforeDelete
Skript, který se provede před smazáním záznamu z databáze po stisknutí tlačítka „Smazat“
OnAfterDelete
Skript, který se provede po smazání záznamu z databáze po stisknutí tlačítka „Smazat“
Tlačítko
zobrazené
ovládacího
prvku
vedle
OnClick
Skript, který se provede po
TextBox,
stisknutí tlačítka
TextArea, ComboBox, ListBox, Radio nebo CheckBox
Přehled druhů skriptů v nahlížecí stránce Název ovládacího prvku
Událost
Popis
Button
OnClick
Skript, který se provede po stisknutí tlačítka
Planner
OnBeforeOpen
Skript, který se provede před otevřením nového záznamu v editačním formuláři po stisknutí tlačítka „Nový záznam…“
Úspěšné provedení skriptu Cílem každého skriptu je obvykle jeho úspěšné provedení až do konce. Během skriptu se mohou vyskytnout syntaktické chyby např. při chybném volání funkcí, snaze použít proměnnou, která není deklarovaná, porovnáváním dvou proměnných rozdílných datových typů či opomenutím při vyplňování důležitých zadávacích polí. Administrátor skriptu má možnost vyvolávat také vlastní přerušení skriptu, např. při splnění určitých podmínek. V takovém případě dojde k okamžitému ukončení činnosti skriptu a je předána kontrola zpět editačnímu formuláři nebo nahlížecí stránce, ze které je skript spouštěn. Současně je uživateli zobrazeno chybové hlášení, které je možné libovolně naformulovat. U skriptů „OnBeforeSave“ a „OnBeforeDelete“ má jakákoliv vzniklá chyba ve skriptu zásadní charakter a přeruší právě prováděnou akci. V případě skriptu „OnBeforeSave“ nedojde k uložení záznamu a v případě skriptu „OnBeforeDelete“ nedojde k jeho smazání.
Odlišení nového záznamu od existujícího v editačním formuláři Zadává-li uživatel nový záznam v editačním formuláři, má jednoznačný identifikátor záznamu „id“ hodnotu „0“. „Id“ je vygenerováno až po úspěšném provedení skriptu „OnBeforeSave“. Ve skriptu „OnAfterSave“ je toto „id“ již známé a proto je možné např. vytvářet vnořené položky právě uloženého záznamu.
51/91
Skriptové proměnné Důležitou vlastností skriptů je používání skriptových proměnných, do kterých lze zapisovat vlastní hodnoty. Tyto proměnné mají názvy od „A“ do „Z“, přičemž je vyžadováno psaní velkých písmen v názvu proměnné. Počet proměnných, které je možné ve skriptu použít, se nastavuje v hlavním okně návrháře skriptu.
Deklarace proměnných Před tím, než začneme pracovat s proměnnou, musíme ji nadeklarovat tj. nastavit její datový typ. Proměnná může být:
Textový řetězec (String)
Celé číslo (Integer)
Desetinné číslo (Double)
Datum (Date)
Deklaraci lze provést dvojím způsobem. Buď jí nastavíme ručně pomocí příkazu skriptu k tomu určeného, nebo do proměnné načteme hodnotu z databázového dotazu. V případě načtení hodnoty z databázového dotazu se proměnná stává polem hodnot a svůj datový typ si přebírá automaticky podle typu databázového sloupce, ze kterého je hodnota načtena. Je-li výsledkem dotazu 0 záznamů, půjde o pole s nulovým počtem prvků. Pole hodnot lze vytvořit i ručně pomocí funkcí „StringArray()“, „IntegerArray()“, „DoubleArray()“ nebo „DateArray()“. Do skriptových proměnných můžeme ukládat vlastní hodnoty a tyto hodnoty též číst, opět za pomoci příkazů skriptu k tomu určených. Pokusíme-li se zapisovat nebo číst hodnotu proměnné, která nebyla deklarována, dojde po spuštění skriptu k chybě a současně k zobrazení chybového hlášení. Dokud proměnné nepřiřadíme hodnotu, je možné jí úspěšně testovat operátorem „není definováno“. Proměnnou je možné v průběhu skriptu předeklarovat na jiný datový typ, hodnota proměnné je pak nastavena na databázovou hodnotu NULL.
Vkládání hodnot proměnných do zadávacích polí Skriptové proměnné je možné používat přímo v zadávacích polích skriptu, podmínkách databázových dotazů apod. V takovém případě se používá již známá syntaxe proměnných, např. „#A#“. Kdykoliv je proměnná umístěna do zadávacího pole, snaží se NET Genium převést její hodnotu na textový řetězec. Obsahuje-li proměnná pole hodnot, je výstupem seznam těchto hodnot oddělených středníkem. Obsahuje-li pole hodnot 0 prvků, je výsledkem prázdný textový řetězec „“ tj. řetězec nulové délky.
Uložení hodnoty proměnné do databázového ovládacího prvku Hodnotu proměnné lze přiřadit také do databázového ovládacího prvku např. po vyplnění editačního formuláře a po spuštění skriptu aktivací tlačítka. Je-li proměnná polem hodnot, je do ovládacího prvku přiřazena 52/91
pouze jeho první hodnota v pořadí. Není-li proměnná definovaná či její pole obsahuje 0 prvků, je do ovládacího prvku přiřazena databázová hodnota NULL.
Porovnávání hodnot proměnných Ve skriptu lze porovnávat hodnoty dvou proměnných. Je-li jedna z proměnných polem hodnot, jsou porovnávány pouze první hodnoty těchto polí. Dále lze ověřit, obsahuje-li pole hodnot určitou hodnotu. Pro tento test se používá operátor „obsahuje“. Je však důležité nezaměňovat funkci tohoto operátoru s použitím testu u běžné proměnné deklarované ručně a nesoucí textový řetězec. Tato proměnná není výsledkem dotazu a tudíž i není polem hodnot. Operátor „obsahuje“ pak slouží k ověřování, obsahuje-li řetězec určitý podřetězec.
Konverze hodnot na jiný datový typ Při zadávání proměnných do zadávacích polí lze konvertovat jejich hodnoty na požadovaný datový typ. Nejde však o změnu typu samotných proměnných, ale pouze jejich hodnot. Poznámka: Hranaté závorky používané v následujících příkladech do návrháře skriptů nezapisujeme. Slouží
pouze jako symboly, které vymezují začátek a konec textových polí, do kterých lze vepsat libovolnou textovou informaci. Dále pak ve spojení se znakem „▼“ vymezují začátek a konec rozbalovacích seznamů, ze kterých lze nabízenou hodnotu vybrat. […] – Text vepsaný do zadávacího pole […▼] – Text vybraný z rozbalovacího seznamu
Příklad Ručně nadeklarujeme proměnnou „A“ na typ „String“. Na druhém řádku skriptu nadeklarujeme proměnnou „B“ na typ „Integer“. Na třetím řádku uložíme do proměnné „B“ hodnotu „2“. Zápis skriptu vypadá následovně:
[A▼] = [String▼] [B▼] = [Integer▼] [B▼] = [2]
Pokud bychom nyní použili příkaz skriptu „Přiřadit hodnotu“ a nastavili jej na „[A▼] = [B▼]“, vznikne chyba, neboť proměnné „A“ a „B“ mají odlišný datový typ. Nic nám však nebrání číselnou hodnotu uloženou v proměnné „B“ zkonvertovat na typ „String“:
53/91
[A▼] = [#B#]
Příklad konverze textového řetězce na číselnou hodnotu [A▼] = [Integer▼] [B▼] = [String▼] [B▼] = [2] [A▼] = [#B#]
Volání funkcí Ve skriptu je možné používat systémové funkce NET Genia. Funkce se zapisují do zadávacích polí skriptu. Seznam všech dostupných funkcí je uveden v kapitole 5 „Funkce“. NET Genium obsahuje šest funkcí, které dokáží pracovat s polem hodnot. Jsou to funkce „AVERAGE()“, „COUNT()“, „FIRST()“, „GROUP()“, „LAST()“ a „SUM()“.
Byla-li proměnná již dříve deklarovaná či obsahuje nějakou hodnotu, dojde k přepsání jejího datového typu a současně dojde k nastavení její hodnoty na databázovou hodnotu NULL.
o
Ve skriptu je možné používat i zrychlené přetypování proměnných pomocí příkazu „Přiřadit hodnotu“ ve spojení s funkcí „String()“, „StringArray()“, „Integer()“, „IntegerArray()“, „Double()“, „DoubleArray()“, „Date()“ a „DateArray()“. Parametr funkce „StringArray()“, „DoubleArray()“ a „DateArray()“ obsahuje seznam hodnot oddělených středníkem, ze kterých bude vytvořeno pole hodnot. Parametr funkce „IntegerArray()“ naopak počet prvků, které bude pole obsahovat. Příklady:
[A▼] = [String(NET Genium)]
[A▼] = [StringArray(Ano;Ne)]
[A▼] = [Integer(2)]
[A▼] = [IntegerArray(2)]
[A▼] = [Double(1.23)]
[A▼] = [DoubleArray(1.23;4.56)]
[A▼] = [Date(1.1.2000)]
[A▼] = [DateArray(1.1.2000;#today#)]
2. Přiřadit hodnotu z dotazu o
Příkaz načte hodnotu z dotazu a uloží ji buď do proměnné nebo do databázového ovládacího prvku, jde-li o skript umístěný uvnitř editačního formuláře.
o
Byla-li proměnná již dříve deklarovaná či obsahuje nějakou hodnotu, dojde k jejímu přepsání.
3. Uložit proměnnou zpět do databáze o
Příkaz uloží pole hodnot proměnné zpět do databáze na místo odkud bylo načteno.
o
Proměnná nesmí v průběhu skriptu změnit počet svých hodnot, např. seskupením pomocí funkce „GROUP()“.
4. Přiřadit více hodnot z dotazu o
Příkaz načte hodnoty několika databázových sloupců najednou a uloží je do vybraných proměnných.
o
Byla-li některá z použitých proměnných již dříve deklarovaná či obsahuje nějakou hodnotu, dojde k jejímu přepsání.
5. Cyklus o
Příkaz provede cyklus na konci ohraničený příkazem „Další…“ tolikrát, kolik má zvolená řídící proměnná prvků. Obsahuje-li proměnná 0 prvků, cyklus neproběhne ani jednou a program pokračuje za příkazem „Další…“.
o
Význam cyklu spočítá v procházení jednotlivých prvků (i duplicit) v poli hodnot řídící proměnné. V každé iteraci cyklu se řídící proměnná chová jako jednoprvkové pole resp. jako jedna hodnota. Po skončení cyklu se stává opět původní proměnnou obsahující pole hodnot. 55/91
o
Obsahuje-li proměnná v určité iteraci cyklu databázovou hodnotu NULL (hodnota není definovaná), přeskočí cyklus na další možnou iteraci, kdy je hodnota proměnné již definovaná.
o
Byla-li řídící proměnná cyklu načtena spolu s dalšími proměnnými příkazem „Přiřadit více hodnot z dotazu“, chovají se během procházení cyklu tyto proměnné stejně jako řídící proměnná. Načtemeli např. současně proměnné „A“ a „B“, je jedno, kterou z těchto dvou proměnných zvolíme jako řídící. Musíme si ovšem dát pozor na to, aby námi zvolená proměnná neobsahovala prvky s databázovou hodnotou NULL.
6. Přiřadit hodnotu o
Příkaz přiřadí hodnotu proměnné nebo databázovému ovládacímu prvku. Přiřazovat můžeme buď jednu hodnotu resp. i matematický výraz, nebo součet, rozdíl, násobek a podíl dvou hodnot.
o
Zadáme-li „[A▼] = [A▼][+▼][1]“ a proměnná „A“ je polem hodnot, početní operace proběhne u všech jejích prvků.
7. Přejít na řádek o
Příkaz skočí na zvolený řádek skriptu.
o
Číslování řádků skriptu probíhá od jedničky.
8. Vyvolat přerušení o
Příkaz vyvolá přerušení skriptu a zajistí návrat zpět do editačního formuláře nebo nahlížecí stránky.
o
Příkaz umožňuje zadat vlastní chybové hlášení , které je uživateli zobrazeno.
9. Odeslat e-mail o
Příkaz odešle e-mailovou zprávu.
10. Smazat záznam o
Příkaz smaže všechny záznamy, které vyhovují podmínkám dotazu.
11. Přesměrovat na nový záznam o
Příkaz naplánuje přesměrování uživatele do aktuálně otevřeného editačního formuláře za účelem zadávání nového záznamu. K samotnému přesměrování dojde až do úspěšném dokončení celého skriptu.
o
Příkaz je přístupný pouze ve skriptu „OnAfterSave“, „OnBeforeOpen“ nebo „OnAfterDelete“.
12. Nový záznam o
Příkaz vytvoří jeden nebo několik nových záznamů v libovolné databázové tabulce. Pro vytváření několika záznamů najednou se používá databázový dotaz. Ten říká, kolik záznamů bude vytvořeno a při vytváření dává k dispozici načtené hodnoty ze zdrojové databázové tabulky. Prochází tedy záznam po záznamu a z takto získaných hodnot vytváří nové záznamy.
o
Poslední záznam vytvořený tímto příkazem ve skriptu „OnBeforeSave“ má své unikátní „id“ záznamu uložené v proměnné „#nid#“.
13. Uložit hodnotu do databáze 56/91
14. Uložit více hodnot do databáze o
Příkaz zapíše zvolené hodnoty na libovolné místo v databázi definované databázovým dotazem. Je-li výsledkem databázového dotazu více záznamů, budou hodnoty uloženy na všechna tato místa v databázi.
15. Komentář o
Slouží pro interní poznámky autora skriptu.
Javascript Role javascriptu v NET Geniu Ve spojení s identifikátory databázových ovládacích prvků je javascript mocný nástroj na manipulaci s ovládacími prvky a hodnotami, které do nich uživatelé zapisují. Vysvětlení metodiky práce s ovládacími prvky pomocí javascriptu je předmětem sekcí 2.8 „Objektový model“ a 4.4 „Proměnné používané v javascriptu“. Pro vkládání vlastního programového kódu napsaného pomocí javascriptu slouží v editačních formulářích a nahlížecích stránkách ovládací prvek JavaScript. Před odesláním nahlížecí stránky nebo editačního formuláře klientské stanici se provedou náhrady proměnných a funkcí NET Genia. Pro potřeby administrátorů byly vytvořeny speciální javascriptové funkce, které se hojně používají při tvorbě javascriptů v editačním formuláři. Následující seznam je výčtem všech dostupných funkcí včetně příkladů jejich použití.
Javascriptové funkce
bt_FindByText(s, n) o
Funkce vrací tlačítko s titulkem zadaným parametrem „s“. Parametr „n“ je volitelný a říká, kolikátý výskyt tlačítka s titulkem „s“ má funkce vrátit. Tento parametr má význam v editačních formulářích, kde je umístěno více tlačítek se stejným titulkem. Číslování probíhá od nuly, první tlačítko má tedy index 0.
o
Např. „bt_FindByText(‘Dnes‘, 2)“.
control_GetValue(o) o
Funkce vrací hodnotu databázového ovládacího prvku zadaného parametrem „o“.
o
Např. „var s = control_GetValue(#ng_textbox#);“.
o
Použití funkce je možné pouze v editačním formuláři.
control_SetValue(o, value [, value2]) o
Funkce vloží do databázového ovládacího prvku zadaného parametrem „o“ hodnotu uloženou v parametru „value“.
57/91
o
Jde-li o TextBox s validací „Date“ nebo přímo o DatePicker, je možné použít parametr „value“ jako textový řetězec formátovaný ve tvaru „dd.MM.rrrr HH:mm“, nebo javascriptový objekt typu „Date“.
o
Parametr „value2“ je volitelný a určuje čas ve formátu „HH:mm“. Parametr má význam pouze u TextBoxu s validací „Date“ a zvoleným zadáváním času. Je-li parametr „value“ javascriptový objekt typu „Date“, není nutné parametr „value2“ uvádět, NET Genium si automaticky z parametru „value“ načte i časový údaj.
o
Jde-li o CheckBox, je v zásadě možné použít dva typy parametrů „value“. Je-li parametr „value“ logická hodnota, přímo říkáme, zda zaškrtávací tlačítko zatrhnout či nikoliv. Je-li parametr textový řetězec, bude jeho hodnota nejprve porovnávána s hodnotou nastavenou ve vlastnostech ovládacího prvku a podle výsledku tohoto testu bude teprve zaškrtávací tlačítko zatrženo či nikoliv.
Použití funkce je možné pouze v editačním formuláři.
Date2Str(d) o
Funkce vrací textový řetězec ve formátu „dd.MM.rrrr“ z data zadaného parametrem „d“.
o
Např. „var s = Date2Str(Now());“.
InsertTime(tb) o
Funkce vloží aktuální čas ve formátu „HH:mm“ do zadávacího pole definované parametrem „tb“.
o
Např. „InsertTime(#ng_cas#);“.
Int2Time(n) o
Funkce vrací textový řetězec ve formátu „HH:mm“ vyjádřený z počtu minut zadaného parametrem „n“.
o
Např. „var s = Int2Time(123);“ vrátí hodnotu „02:03“.
jsFormatNumber(n) o
Funkce vrací textovou reprezentaci čísla ve formátu, který je vyžadovaný pro správné uložení číselné hodnoty ovládacího prvku do databáze. Funkce ve skutečnosti pouze zkontroluje správný oddělovač desetinných míst.
o
Např. „#ng_textbox#.value = jsFormatNumber(1.23);“. 58/91
jsIsNumber(o) o
Funkce vrací logickou hodnotu, je-li hodnota zadaná parametrem „o“ číslo či nikoliv.
o
Např. „if (!jsIsNumber(#ng_cena#.value)) { alert(‘Cena není číslo a proto nemůže být použita pro výpočet celkové ceny. Opravte prosím tento údaj.‘); #ng_cena#.focus(); }“.
jsMeasureWorkDays(startdate, enddate) o
Funkce vrací počet pracovních dnů z časového úseku zadaného parametry „startdate“ a „enddate“. Oba parametry musí být javascriptové objekty typu „Date“.
o
Funkce zohledňuje státní svátky evidované v aplikaci „System“.
o
Např. „var n = jsMeasureWorkDays(Str2Date('1.1.2000'), Str2Date('1.2.2000'));“.
jsNetGeniumStart(s) o
Funkce vrací čas prvního spuštění intranetu aktuálně přihlášeným uživatelem ve dni zadaném parametrem „s“ ve formátu „dd.MM.rrrr“.
o
Např. „var d = jsNetGeniumStart(‘#today#’);“.
jsNumber(o) o
Funkce vrací číselnou hodnotu parametru „o“.
o
Např. „var n = jsNumber(#ng_cena#.value);“.
jsNumberInWords(n, language) o
Funkce vrací slovní vyjádření číselné hodnoty zadané parametrem „n“.
o
Parametr „language“ může obsahovat jednu z hodnot „ar“, „cs“, „de“, „en“ nebo „fr“.
Funkce vrací číslo zadané parametrem „n“ zaokrouhlené na počet desetinných míst zadaných parametrem „decimals“.
o
Např. „alert(jsRound(Math.Pi, 2));“.
jsUserInGroup(s) o
Funkce vrací logickou hodnotu, je-li aktuálně přihlášený uživatel členem uživatelské skupiny zadané parametrem „s“ či nikoliv.
o
Např.
„alert(‘Uživatel
‘
+
(jsUserInGroup(‘Users’)
?
‘je‘
:
‘není‘)
+
‘členem
skupiny
Users’);“.
Now() o
Funkce vrací aktuální datum a čas.
o
Např. „var d = Now();“.
Str2Date(s) o
Funkce vrací datum vyjádřené z textového řetězce ve formátu „dd.MM.rrrr“ zadaného parametrem „s“.
o
Např. „var d = Str2Date(#ng_datum#.value);“ nebo „var d = Str2Date(‘#today#’);“. 59/91
Time2Int(s) o
Funkce vrací počet minut vyjádřený z času ve formátu „HH:mm“ zadaného parametrem „s“.
o
Např. „var n = Time2Int(’01:23’);“ vrátí hodnotu „83“.
Tisk Tiskové šablony NET Genium umožňuje tisk záznamů z nahlížecích tabulek do tiskových šablon. Spouští se stisknutím tlačítka umístěného v editačním formuláři nebo nahlížecí stránce. Tiskové šablony mohou být soubory formátu XLS, DOC, HTML nebo TXT. Formát XLS se pro vytváření tiskových šablon vřele doporučuje, už jen z důvodu snadné tvorby dokumentů v prostředí aplikace MS Excel. Pro HTML šablony naopak platí mnohá omezení při tisku z nahlížecích stránek. Tiskové šablony musí být uloženy v adresáři „NETGenium\Templates“. Není-li k dispozici možnost nakopírování šablon do adresáře „NETGenium\Templates“ přímo na webovém serveru, je možné použít webového rozhraní NET Genia pomocí manažera tiskových šablon, který je přístupný v administrátorském režimu pod odkazem „Tiskové šablony“ umístěném v navigační oblasti v sekci „Portál“. Nezávisle na zvoleném typu tiskové šablony platí následující postup pro používání proměnných v tiskových šablonách: Na místo v šabloně, kam je potřeba dosadit hodnoty záznamu z editačního formuláře nebo záznamů z nahlížecí stránky, se vkládají identifikátory příslušných databázových ovládacích prvků. NET Genium při aktivaci tisku otevře tiskovou šablonu, vyhledá výskyty všech identifikátorů a nahradí je příslušnými hodnotami záznamu. Hodnoty typu „Datum“ mohou být v tiskové šabloně formátovány podle vlastní šablony pomocí speciální syntaxe „#identifikátor@formát#“. Seznam předdefinovaných šablon je uveden u funkce „FORMATDATE“ v sekci 5.3 „Funkce určené pro práci s datum“. Je-li tisk vyvolán z nahlížecí stránky, která obvykle zobrazuje více záznamů najednou, budou hodnoty těchto záznamů vkládány pod sebe pod příslušný výskyt identifikátoru. Umístíme-li do tiskové šablony vedle sebe identifikátory všech databázových sloupců, které zobrazujeme na nahlížecí stránce, bude výsledkem tisku tabulka s hodnotami těchto záznamů. Před samotným tiskem může být spuštěn skript. Pomocí něj lze např. načíst hodnoty z databáze a uložit je do skriptových proměnných „#A#” až „#Z#”, viz sekce 6.2 „Skriptové proměnné“. Pak lze tyto proměnné v šabloně též použít. Poznámka: Tiskové šablony vytvořené v aplikaci MS Word musí mít identifikátory umístěné v poli typu
„MergeField“.
60/91
Příklad Vytvoříme prázdný sešit aplikace MS Excel a na libovolné místo umístíme řetězec „#ng_text#“. Soubor pomocí manažera tiskových šablon uložíme do adresáře „NETGenium\ Templates“. V NET Geniu založíme nový editační formulář „Zpráva“ a do něho vložíme ovládací prvek TextBox s názvem „Text“. Jeho identifikátor bude zřejmě „ng_text“.Dále vytvoříme nové tlačítko (Button) a v záložce „Událost“ nastavíme „Tisk do šablony“. V seznamu tiskových šablon vybereme námi vytvořenou tiskovou šablonu. V editačním formuláři vyplníme hodnotu zadávacího pole „Text“ a aktivujeme tlačítko určené k tisku. Dojde k otevření nového okna internetového prohlížeče a v něm zobrazeného dokumentu aplikace MS Excel, který bude obsahovat požadovaný tiskový výstup.
Tisk vnořených záznamů V mnoha případech potřebujeme tisknout současně s daty záznamu i jeho vnořené záznamy, viz sekce 3.4 „Vnořené záznamy“. Příkladem může být např. faktura a její položky. Identifikátory vnořených položek poté píšeme ve tvaru „#*#.#ng_text#“, kde znak „*“ značí název vnořené databázové tabulky. Zobrazujeme-li v editačním formuláři pouze jednu vnořenou databázovou tabulku, nemusíme psát její název a ponecháme znak „*“. V opačném případě je nutné používat plný identifikátor databázových ovládacích prvků, tedy místo znaku „*“ uvádíme název vnořené databázové tabulky. Samotná analýza tiskové šablony probíhá následovně. Nejprve je ověřena existence odkazů na vnořené záznamy, např. „#*#.#ng_text#“. Nachází-li se v šabloně takový odkaz, označí si NET Genium řádek s odkazem jako místo, kam začne vkládat jednotlivé údaje vnořených záznamů pod sebe. Vložení se provede tolikrát, kolikrát se vnořený záznam v nahlížecí tabulce vyskytuje. Jsou dvě možnosti, jak lze hodnoty vnořených záznamů do tiskové šablony vkládat:
Vkládat nové řádky – NET Genium vloží postupně tolik řádků, kolik je vnořených záznamů
Přepisovat řádky – NET Genium přepisuje stávající řádky, je však důležité brát na vědomí, že při velkém množství záznamů může dojít k přepsání zápatí šablony
Poznámka: Při tisku vnořených záznamů do tiskové šablony aplikace MS Excel je možné použít volbu střídání
podbarvení řádků – bílá vs. šedá. Dále je možné střídání barev v závislosti na změně hodnoty v prvním sloupci tiskové šablony při zapnutí volby „Dle hodnot prvního sloupce“.
Příklad Každá položka faktury má v tiskové šabloně v prvním sloupci informaci o své kategorii. Budou-li položky faktury seřazeny podle těchto kategorií, je možné podbarvit shodnou barvou sousedící záznamy stejné kategorie zapnutím volby „Střídat podbarvení řádků“ a „Dle hodnot prvního sloupce“. Pokud bychom chtěli záznamy barvit stylem bílá, šedá, bílá, šedá, atd., je nutné volbu „Dle hodnot prvního sloupce“ vypnout.
61/91
Uzamčení dokumentu a odeslání jako příloha e-mailové zprávy V případě tiskové šablony formátu XLS nebo DOC může být výsledný dokument z důvodu bezpečnosti uzamčen proti změnám pomocí příznaku zamčení dokumentu při použití náhodně vygenerovaného hesla. Ve spojení s nadstavbou Office Mail je také možné výsledný soubor předat jako přílohu a odeslat v e-mailové zprávě.
Identifikátor vycházející z pozice ovládacího prvku v editačním formuláři nebo nahlížecí stránce Plný identifikátor může být též ve tvaru „#datagridX#.#identifikátor#“, „#calendarX#.#identifikátor#“ nebo „#plannerX#.#identifikátor#“, kde „X“ značí pořadí nahlížecí tabulky, kalendáře nebo plánovacího kalendáře v editačním formuláři či nahlížecí stránce. Číslování začíná od jedničky, první nahlížecí tabulka v pořadí má tedy identifikátor „datagrid1“, druhá „datagrid2“ atd. Tato syntaxe je vhodná v editačním formuláři, kde je více nahlížecích tabulek, avšak všechny zobrazují obsah stejných databázových tabulek pouze s rozdílnými omezujícími podmínkami.
Šablony aplikace MS Excel Pro tvorbu tiskových šablon je doporučována především aplikace MS Excel. S tvorbou šablon v aplikaci MS Excel jsou spojena následují pravidla:
Do jedné buňky lze uložit maximálně 32 tisíc znaků, MS Excel však korektně zobrazuje pouze 1024 znaků.
Mnohdy jsou do buňky vkládána data, u kterých se nedá předpokládat jejich výsledná délka. Příkladem je ovládací prvek TextArea nebo RichTextBox. Je-li ve formátu buňky zvoleno „Zalomit text“, NET Genium automaticky přizpůsobí výšku řádku vloženému textu.
Při tisku záznamů z nahlížecí tabulky NET Genium v prvé řadě hledá použité identifikátory. Nalezne-li je, označí si řádek či skupinu řádků, na kterých byly tyto identifikátory nalezeny a tento blok posléze kopíruje tolikrát, kolik záznamů má být ze zvolené nahlížecí tabulce vytištěno. O tom, bude-li blok umístěn do nově vytvořených řádků resp. stávajících, rozhoduje volba „Vkládat nové řádky“ v nastavení ovládacího prvku Button, kterým se spouští tisk.
Tiskové šablony mnohdy obsahují graf, pro který je nutné speciálně nastavit zdrojová data. Při vkládání nových řádků do sešitu aplikace MS Excel se oblast určená jako zdroj dat pro graf automaticky zvětší pouze v případě, že byly vhodně zvoleny dvě a více řádků, ze kterých má graf hodnoty načítat. Obrázek 8.1 ukazuje, jak by měla být definována oblast zdrojových dat, aby se podle počtu vložených řádků automaticky zvětšila. Druhý řádek sešitu je tedy pouze pomocný a po vygenerování šablony bude odstraněn – v prvém sloupci druhého řádku je zadána hodnota „remove“. Obecně je však výhodnější používat proměnnou „#chartX#“, která slouží k vložení grafu z nahlížecí stránky do tiskové šablony.
62/91
Obrázek 8.1: Nastavení oblasti zdrojových dat pro graf
HTML šablony Použití HTML šablon má tu výhodu, že je tisk do šablony velmi rychlý a na klientské stanici není vyžadována aplikace MS Excel nebo MS Word. I pro tvorbu HTML šablon je však vřele doporučována aplikace MS Excel. Příkazem „Soubor > Uložit jako > Webová stránka“ v menu aplikace MS Excel lze jakýkoliv dokument snadno exportovat do formátu HTML. Výsledný soubor je pak třeba včetně adresáře s přílohami (např. soubor „Test.html“ a adresář „Test_Soubory“) nakopírovat do adresáře „NETGenium\Templates“. Na klientských stanicích je pro správný výtisk dokumentů nutno upravit nastavení dialogu „Vzhled stránky“ z nabídky „Soubor“ internetového prohlížeče. Záhlaví a zápatí obsahují standardně informace o stránkování a internetové adrese dokumentu. Pro nás jsou tyto informace nežádoucí a proto je vhodné záhlaví a zápatí dokumentů vymazat. Okraje stránky by měly být nastaveny na co nejnižší hodnotu. Opět je doporučováno nastavení okrajů vymazat.
63/91
Instalace Systémové požadavky Server
MS Windows 2000 Professional / 2000 Server / XP Professional / 2003 Server / Vista Business / Vista Ultimate / 2008 Server
Souborový systém NTFS (stávající FAT či FAT32 je možné převést na NTFS pomocí příkazu „convert“, např. „convert c: /fs:ntfs“)
.NET Framework verze 2.0
Webový server IIS (Internet Information Server)
MSDE, MS SQL Server verze 2000 a vyšší nebo Firebird verze 1.5.2 a vyšší
Služba Indexing Service a aplikace Adobe PDF iFilter v případě, že vyžadujeme funkčnost fulltextového prohledávání souborových příloh
Klientská stanice
Internetový prohlížeč Internet Explorer, Mozilla Firefox, Google Chrome, Opera (verze 15 a vyšší) nebo Safari
MS Excel resp. MS Word v případě, že vyžadujeme tisk dokumentů do tiskových šablon formátu XLS resp. DOC
Spuštění instalace Instalaci NET Genia je nutné provádět výhradně pod administrátorským kontem operačního systému MS Windows. Samotná instalace se spouští programem „Setup.exe“ resp. „NETGenium.msi“. V první fázi instalátor NET Genia kontroluje, jsou-li na počítači nainstalovány následující programy či služby:
.NET Framework o
Není-li .NET Framework nainstalován, ohlásí instalátor chybu a skončí.
Webový server IIS o
IIS je součástí operačního systému MS Windows 2000 Professional / 2000 Server / XP Professional / 2003 Server / Vista Business / Vista Ultimate / 2008 Server. Instalaci IIS je možné provést následujícím způsobem: „Start > Nastavení > Ovládací panely > Přidat nebo odebrat programy > Přidat nebo odebrat součásti systému“, dále vybrat položku „Internetová informační služba“ a potvrdit tlačítko „Další“. V průběhu instalace je zpravidla vyžadováno instalační CD operačního systému MS Windows.
o
Není-li webový server IIS nainstalován, ohlásí instalátor chybu a skončí.
64/91
Nastavení předvoleb instalace
Volba importu uživatelů z Active Directory o
Jedná se o jednorázový import uživatelských účtů z operačního systému MS Windows do NET Genia. Účty jsou přeneseny bez uživatelských hesel.
Volba virtuálního adresáře o
Výchozí nastavení je virtuální adresář „NETGenium“. Pod názvem virtuálního adresáře bude NET Genium přístupné ostatním uživatelům v síti, např. zadáním adresy „http://server/netgenium“. Systémové soubory NET Genia budou uloženy v adresáři „C:\Inetpub\wwwroot\NETGenium“.
Závěrečná fáze instalace
Vytvoření adresářové struktury na disku a kopírování systémových souborů NET Genia
Kontrola adresářové struktury
Kontrola funkčnosti IIS
Kontrola běhu služby Indexing Service
Kontrola běhu MS SQL Serveru o
Při instalaci je vyžadován databázový stroj MS SQL Server nebo MSDE. Byl-li současně s NET Geniem nainstalován i MS SQL Server nebo MSDE, je nejprve nutné počítač restartovat a poté instalaci znovu spustit. V případě, že chceme použít databázový server Firebird, který ovšem není součástí instalace NET Genia, je nutné nejprve nainstalovat NET Genium běžným způsobem s aplikací MS SQL Server. Teprve poté nainstalovat Firebird a nakonfigurovat NET Genium tak, aby tento databázový server používalo. Postup je podrobně popsán v sekci 9.10 „Konfigurační soubory“.
o
Není-li MS SQL Server nebo MSDE nainstalován a spuštěn, instalátor ohlásí chybu a skončí.
Vytvoření virtuálního adresáře na webovém serveru IIS
Vytvoření fulltextového katalogu ve službě Indexing Service
Vytvoření databáze na serveru MS SQL Server či MSDE a vytvoření konfiguračního souboru „ConnectionString.txt“, který obsahuje připojovací řetězec k této databázi o
Připojovací řetězec je možné podle potřeby dodatečně změnit, viz sekce 9.10 „Konfigurační soubory“.
Import uživatelů z Active Directory
Přidělení práv účtu ASPNET a NETWORK SERVICE operačního systému MS Windows na zápis do instalačního adresáře NET Genia
Přidělení administrátorských práv účtu ASPNET a NETWORK SERVICE operačního systému MS Windows v databázovém serveru MS SQL Server či MSDE
Vytvoření protokolu o průběhu instalace do souboru „NETGenium\Logs\Install.log“
Registrace účtu ASPNET ve službě IIS
65/91
o
Tento krok má význam pouze v případě, byl-li současně s NET Geniem nainstalován i .NET Framework.
Registrace ikony NET Genia v operačním systému MS Windows a její přidružení k souborům přípony NGA (aplikace) a NGG (aplikační skupiny)
Vytvoření zástupců na ploše a v nabídce „Start > Programy“
Zobrazení zprávy o úspěšném průběhu instalace
Důležitá nastavení serveru
Povolit služby ASP.NET a WebDAV u operačního systému MS Windows 2003 Server v nastavení služby IIS: „Ovládací panely > Nástroje pro správu > Správa počítače > Služby a aplikace > Internetová informační služba > Rozšíření webových služeb“. WebDAV je nutný pro správnou funkci editace souborových příloh. Není-li WebDAV povolen, není možné přenášet soubory z klientské stanice na server resp. soubory není možné vytvářet či modifikovat.
Povolit cesty k nadřazenému adresáři a anonymní přístup na webovou aplikaci NET Genia ve vlastnostech virtuálního adresáře „NETGenium“ v nastavení služby IIS: „Virtuální adresář > Konfigurace… > Možnosti > Povolit cesty k nadřazenému adresáři“ a „Zabezpečení adresáře > Upravit… > Anonymní přístup“. Název účtu anonymního uživatele obvykle začíná řetězcem „IUSR_“.
Vypnout vypršení platnosti obsahu ve vlastnostech virtuálního adresáře „NETGenium“ v nastavení služby IIS: „Hlavička protokolu HTTP > Povolit vypršení platnosti obsahu“.
Vyskytnou-li se problémy během ukládání souborových příloh z aplikace MS Word (soubor nejde uložit, protože je pouze pro čtení), je nutné zkontrolovat umístění adresáře NET Genia na disku serverové stanice. Jsou-li systémové soubory NET Genia uloženy v adresáři „C:\Inetpub\wwwroot“ a nikoliv v adresáři „C:\Inetpub\wwwroot\NETGenium“, je nutné v nastavení IIS ve složce NET Genia vytvořit virtuální podadresář „Temp“. Na první pohled se může zdát, že podadresář „Temp“ již existuje a že ho vytvořením nového adresáře přepíšeme, avšak ten současný má pouze status běžného adresáře, nikoliv adresáře
virtuálního.
Takto
vytvořený
virtuální
podadresář
se
musí
odkazovat
na
adresář
„C:\Inetpub\wwwroot\Temp“ a musí mít v IIS povolená práva pro čtení a zápis. Dále je třeba nastavit práva běžnému anonymnímu uživateli internetu pro zápis do adresáře „C:\Inetpub\wwwroot\Temp“. Název účtu anonymního uživatele obvykle začíná řetězcem „IUSR_“.
NET Genium dokáže pomocí skriptů rozesílat e-mailové zprávy. Ke své činnosti však vyžaduje funkční SMTP server. Používáme-li pro odesílání zpráv lokální SMTP server dodávaný současně s operačním systémem MS Windows, může se vyskytovat během odesílání e-mailových zpráv chyba. V takovém případě je potřeba zkontrolovat nastavení SMTP serveru v dialogu „Ovládací panely > Nástroje pro správu > Správa počítače > Služby a aplikace > Internetová informační služba > Výchozí virtuální server SMTP“ a v záložce „Přístup“ po aktivaci tlačítka „Přenos…“ zaškrtnout „Všechny mimo počítačů uvedených v seznamu“ a „Umožnit přenos všech úspěšně ověřeným počítačům, bez ohledu na výše uvedený seznam“.
66/91
Důležitá nastavení Internet Exploreru na klientských stanicích
Vypnout blokování či filtrování webových stránek ze serveru NET Genia firewallem.
Povolit automatické zjišťování nových verzí webových stránek, aby nedocházelo k zobrazování zastaralých údajů v aplikacích NET Genia: „Nástroje > Možnosti Internetu… > Obecné > Dočasné soubory Internetu > Nastavení…“ ¬– nastavit „Při každé návštěvě stránky“ nebo „Automaticky“.
Povolit používání cookies, aby bylo možné přihlašování uživatelů do NET Genia: „Nástroje > Možnosti Internetu… > Osobní údaje > Upřesnit…“.
Povolit zobrazování „popup“ oken v zóně, která bude využívána pro přístup k NET Geniu, aby bylo možné tisknout záznamy a automaticky odhlašovat uživatele při zavření okna internetového prohlížeče: „Nástroje > Možnosti internetu… > Zabezpečení > Vlastní úroveň… > Různé > Blokovat automaticky otevíraná okna“ – nastavit „Zakázat“.
Povolit dotaz na stahování souborových příloh, aby bylo možné stahovat souborové přílohy NET Genia: „Nástroje > Možnosti internetu… > Zabezpečení > Vlastní úroveň… > Stažení > Automatické dotazování při stahování souborů“ – nastavit „Povolit“.
Povolit ovládací prvky ActiveX, aby bylo možné editovat souborové přílohy NET Genia: „Nástroje > Možnosti internetu… > Zabezpečení > Vlastní úroveň… > Ovládací prvky ActiveX a moduly plug-in > Inicializovat a skriptovat ovládací prvky ActiveX, které nejsou označeny jako bezpečné“ – nastavit „Dotázat se“.
Povolit ladění skriptů, aby bylo možné ladit javascript v aplikacích NET Genia: „Nástroje > Možnosti internetu… > Upřesnit > Procházení“ – vypnout „Zakázat ladění skriptů (aplikace Internet Explorer)“ a „Zakázat ladění skriptů (ostatní aplikace)“ a zapnout „Zobrazovat oznámení při každé chybě ve skriptu“.
Používání navigačních tlačítek na klientských stanicích Pro ovládání informačního portálu je doporučováno používat výhradně navigační prvky NET Genia. Tlačítka „Zpět“ či „Vpřed“, která se často využívají při procházení internetových stránek, obvykle způsobují zobrazování neaktuálních údajů. Tlačítko „Aktualizovat“ způsobí odhlášení uživatele z NET Genia.
Žádost o licenční klíč Po úspěšné instalaci je NET Genium v režimu demo verze. V demo verzi je možné zobrazovat pouze prvních 100 záznamů z každé databázové tabulky. Přechod na plnou verzi je podmíněn zakoupením uživatelských licencí a vyplněním žádosti o licenční klíč. Odkaz na žádost je umístěn v administrátorského režimu v sekci „Portál“ pod odkazem „Žádost o licenční klíč“. Po vyplnění formuláře a stisknutí tlačítka „Vytvořit žádost“ obdržíte žádost o licenční klíč v podobě e-mailové zprávy, kterou je nutné zaslat na e-mailovou adresu „[email protected]“. Společnost NetGenium ověří platbu za zakoupené licence a na základě této žádosti vám vygeneruje a zašle licenční klíč – soubor „license.txt“. Soubor „license.txt“ musí být zkopírován do adresáře „NETGenium\Config“ a 67/91
aktivován stisknutím tlačítka „Aktivovat licenční klíč“ umístěného ve stejném formuláři žádosti. Licenční klíč je platný pouze pro NET Genium, ve kterém byla žádost vytvořena.
Adresářová struktura Po úspěšné instalaci NET Genia je obvyklým cílovým adresářem na disku webového serveru adresář „C:\Inetpub\wwwroot\ NETGenium“. Tento adresář obsahuje následující podadresáře:
Backup o
V adresáři „Backup“ jsou připraveny dávkové (BAT) soubory, které slouží k zálohování databáze MS SQL Serveru a jejímu připojení resp. odpojení. Soubory mají z důvodu bezpečnosti či nechtěného spuštění příponu TXT.
o
Tento adresář není přístupný z internetového prohlížeče, tj. v IIS má vypnutou volbu „Číst“.
o
Adresář „bin“ je adresář programových knihoven systému NET Genium.
o
Součástí tohoto adresáře je program „Update.exe“ resp. „Update.Job.bat“, který slouží k
bin
aktualizaci NET Genia přes síť internet (viz sekce 10.1 „Aktualizace“). Funkční jádro NET Genia je jakýmsi metajazykem .NET Frameworku a proto musí být při prvním požadavku na vyvolání intranetu ze strany uživatele zkompilováno. Tato situace nastává např. po restartování serveru, výpadku proudu či po aktualizaci NET Genia na novou verzi. Kompilace může trvat v závislosti na výkonu serveru i několik minut. V praxi se poté jeví tím, že uživatel vznese v internetovém prohlížeči požadavek na vyvolání intranetu a následně může čekat i několik minut, než se mu objeví úvodní stránka NET Genia. Aktualizační program „Update.exe“ po úspěšné aktualizaci NET Genia automaticky vznese požadavek na vyvolání intranetu a tím proces kompilace vyvolá. o
Dalším důležitým programem je „Setup.exe“, který slouží k manuální instalaci NET Genia resp. ke spouštění závěrečné fáze instalace, viz sekce 9.4 „Závěrečná fáze“. Bez důkladných znalostí NET Genia se však používání tohoto programu nedoporučuje.
Columns o
Adresář systémových souborů NET Genia – dialogy určené pro editaci ovládacích prvků editačních formulářů.
Config o
V adresáři „Config“ jsou uloženy konfigurační soubory (viz sekce 9.10 „Konfigurační soubory“) a též licenční klíč NET Genia.
o
Adresář dále obsahuje programy „Activate.exe“ a „Deactivate.exe“, které slouží k aktivaci resp. deaktivaci intranetu. Tato možnost je vhodná v případě, že probíhají na serveru důležité systémové zásahy a je třeba zamezit uživatelům vytvářet či modifikovat stávající záznamy v databázi. 68/91
o
Files o
Adresář ikon NET Genia.
Install o
Adresář systémových souborů NET Genia – rozhraní nadstavby FileUpload.
Images o
Adresář souborových příloh.
FileUpload o
Tento adresář není přístupný z internetového prohlížeče, tj. v IIS má vypnutou volbu „Číst“.
Adresář systémových souborů NET Genia a licenční smlouvy na používání software NET Genium.
Logs o
Do adresáře „Logs“ se ukládají logovací soubory NET Genia:
Install.log – protokol instalace NET Genia
Fulltext.log – protokol o chybách vzniklých během fulltextového prohledávání souborových příloh
o
Synchro.log – protokol o průběhu synchronizace
System.log – protokol běhu NET Genia
Tento adresář není přístupný z internetového prohlížeče, tj. v IIS má vypnutou volbu „Číst“.
Adresář systémových souborů NET Genia – rozhraní nadstavby Office Mail.
Adresář systémových souborů NET Genia – rozhraní pro přístup do NET Genia přes WAP.
Script o
Mobile o
SMTP.log – protokol o chybách vzniklých během rozesílání e-mailových zpráv
Mailbox o
Adresář systémových souborů NET Genia – dialogy určené pro editaci skriptů.
Synchro o
Adresář „Synchro“ slouží pro správnou funkci synchronizace dat a není přístupný z internetového prohlížeče, tj. v IIS má vypnutou volbu „Číst“.
Temp o
Adresář „Temp“ slouží pro správnou funkci editování souborových příloh. Ve službě IIS má adresář „Temp“ zapnutou volbu „Zapisovat“.
Templates o
Update o
Adresář tiskových šablon.
Adresář „Update“ slouží ke stahování aktualizací.
ViewFields 69/91
o
Adresář systémových souborů NET Genia – dialogy určené pro editaci ovládacích prvků nahlížecích stránek.
Konfigurační soubory Konfigurační soubory obsahují údaje, které jsou vyžadovány systémem, ale nejsou součástí databáze. Nachází se v adresáři „Config“ ve formě textových souborů.
ConnectionString.txt o
Připojovací řetězec k databázi NET Genia.
o
Během instalace je vyžadována přítomnost MS SQL Serveru či MSDE. V určitých případech je ovšem vhodné mít MS SQL Server nainstalován odděleně od serveru IIS, například na úplně jiném počítači. V takovém případě je možné připojovací řetězec změnit a nasměrovat ho na místo, kde se požadovaná databáze nachází. Může jít i o úplně prázdnou databázi, neboť NET Genium kontroluje strukturu databáze a v případě že není platná, automaticky jí vytvoří.
o
Byl-li pro ukládání dat zvolen databázový server Firebird, je nutné v konzoli serveru Firebird ručně vytvořit prázdnou databázi např. pomocí příkazu „CREATE DATABASE 'C:\NETGenium.fdb' USER 'SYSDBA' PASSWORD 'masterkey'“. Posléze je potřeba vložit do souboru „ConnectionString.txt“ správný tvar připojovacího řetězce, např. „driver=firebird; datasource=localhost; user=SYSDBA; password=masterkey; database=C:\NETGenium.fdb“. Na prvním místě však musí být identifikátor databáze Firebird, tj. řetězec „driver=firebird;”. Pro správnou činnost serveru Firebird je nutné zkopírovat soubor „ngudf.dll“ z adresáře „NETGenium\bin“ do adresáře serveru Firebird, obvykle „C:\Program Files\Firebird\Firebird_1_5\Udf“.
DefaultLanguage.txt o
Základní jazykové nastavení: „ar“, „cs“, „de“, „en“ nebo „fr“.
DemoXX.zip o
„DemoXX.zip“
je
volitelný
soubor
adresáře
„Config“.
Obvykle
se
nachází
v
adresáři
„NETGenium\Install“ a jedná se o instalační soubor demonstračního portálu neboli o sadu již hotových aplikací, které slouží k seznámení se s funkčností NET Genia či pro inspiraci při tvorbě vlastních aplikací. Znaky „XX“ představují jazykovou verzi demonstračního portálu, která musí souhlasit s jazykovou verzí NET Genia uvedenou v konfiguračním souboru „DefaultLanguage.txt“. Více informací o demonstračním portálu viz sekce 2.7 „Aplikace System“. o
Import nové sady ukázkových aplikací resp. demonstračního portálu zajistíme zkopírováním platného souboru „DemoXX.zip“ do adresáře „Config“ a následným restartováním NET Genia.
License.txt o
Licenční klíč, viz sekce 9.8 „Žádost o licenční klíč“.
SSL.txt 70/91
o
Existence tohoto souboru určuje, má-li NET Genium používat pro komunikaci s klientskými stanicemi zabezpečený protokol „https“.
o
Na obsahu souboru „SSL.txt“ nezáleží.
Version.txt o
Soubor s číslem aktuální verze NET Genia.
Administrace Aktualizace NET Genium se každým dnem rozrůstá o nové funkce a jedna z jeho výhod je přístup k nejnovějším verzím přes Internet. Uživatelé, kteří mají předplacenou službu Subscription, mohou k aktualizaci NET Genia použít program „Update.exe“ umístěný v adresáři „NETGenium\bin“. Ať již z důvodu dílčích oprav NET Genia či zpřístupnění nových funkcí je doporučováno NET Genium pravidelně aktualizovat. Pravidelnou aktualizaci je možné automatizovat pomocí naplánovaných úloh operačního systému MS Windows. Pro tyto účely je v adresáři „NETGenium\bin“ připraven dávkový soubor „Update.Job.bat“, který nevyžaduje interakci ze strany uživatele (program „Update.exe“ spouští s parametrem „-j“).
Restart Při nevhodném nastavení webového serveru se při práci v NET Geniu může stát, že systém přestane z nějakých důvodů reagovat. Odkazem „Restartovat“, který se po přihlášení do administrátorského režimu zobrazuje v navigační oblasti v sekci „Portál“, lze docílit restartu NET Genia a opětovné inicializaci všech systémových nastavení.
Export / Import aplikací Aplikace NET Genia mohou být v libovolné fázi rozpracovanosti vyexportovány do souboru s příponou NGA (NET Genium Application). Tímto způsobem můžeme aplikace archivovat či přenášet mezi více instalacemi NET Genia. Jedinou výjimkou je systémová aplikace „System“, u které export není povolen. Stejně jako můžeme exportovat aplikace, můžeme exportovat jednotlivé aplikační skupiny či několik aplikačních skupin najednou. Výstupem je soubor s příponou NGG (NET Genium Application Group). Během exportu aplikací se můžeme rozhodnout, budeme-li exportovat i uživatelská data a souborové přílohy uložené v aplikacích, nebo jen prázdné aplikace nevyplněné daty. Exportované aplikace resp. aplikační skupiny mohou být ze souboru s příponou NGA resp. NGG zpět do NET Genia naimportovány za předpokladu, že máme k dispozici plnou verzi NET Genia. Ta je podmíněna nákupem licencí a registrací produktu u společnosti NetGenium.
71/91
Import historie záznamů Při importu můžeme zvolit, přejeme-li si importovat i historii záznamů uložených v databázových tabulkách jednotlivých aplikací. Historie záznamů je protokolována automaticky u všech záznamů všech databázových tabulek, avšak časem může v databázi zaujímat nezanedbatelný prostor.
Vlastnictví importovaných záznamů Během exportu aplikací se ztrácí důležitá vlastnost každého záznamu a tím je reference na uživatele, který záznam v databázi vytvořil. Jedná se tedy o vlastníka záznamu. Při importu aplikací je možné nastavit, stane-li se vlastníkem importovaných záznamů administrátor, tedy uživatel, který import provádí, nebo zůstane vlastnictví nenastavené. Pak se stane vlastníkem záznamu uživatel, který záznam otevře z nahlížecí tabulky a jako první uloží.
Zálohování dat Zásadou správné administrace NET Genia je jeho pravidelné zálohování. Lze tak předcházet nepříjemnostem, které vznikají při hardwarových kolizích serverů. Zálohování se skládá ze čtyř částí:
Záloha databáze NET Genia o
Pro zálohování databáze MS SQL Serveru jsou v adresáři „NETGenium\ Backup“ připraveny dávkové soubory, jejichž spuštěním dojde k vytvoření úplné zálohy databáze NET Genia. Tyto dávkové soubory mohou být libovolně upravovány podle potřeb administrátora systému.
o
Správci systému, kteří zvolí databázový server Firebird, jsou nuceni pro zálohu databáze používat externí programy, např. program GBAK (Firebird Backup and Restore), který je součástí instalace databázového
serveru
Firebird
a
obvykle
se
nachází
v
adresáři
„C:\Program
Files\Firebird\Firebird_1_5\bin“.
Záloha souborových příloh resp. adresáře „NETGenium\Files“
Záloha konfiguračních souborů resp. adresáře „NETGenium\Config“
Záloha tiskových šablon resp. adresáře „NETGenium\Templates“
Automatické přihlašování do NET Genia pomocí Active Directory NET Genium podporuje propojení uživatelských účtů NET Genia se systémem uživatelských účtů operačního systému MS Windows. Ke každému uživatelskému účtu NET Genia je nutné přiřadit příslušné jméno účtu v systému MS Windows ve tvaru „doména\název_účtu“. Spustí-li pak uživatel NET Genium v rámci interní počítačové sítě a současně je v síti úspěšně ověřen protokolem Kerberos, bude do NET Genia přihlášen, aniž by
72/91
musel vyplňovat své uživatelské jméno a heslo. Tato funkce nemusí být v mnoha případech žádaná, proto je možné zadávací pole „Účet systému Windows“ editačního formuláře „Uživatel“ nevyplňovat. Základním předpokladem pro správnou činnost automatického přihlašování je správné nastavení služby IIS ve vlastnostech informačního portálu NET Genium v záložce „Zabezpečení adresáře“. Tam je nutné zapnutí volby „Integrované ověřování systému Windows“ a vypnutí volby „Anonymní přístup“. Na druhou stranu, provedeme-li toto nastavení, nebude možné přihlašovat se do intranetu přes síť internet či využívat služeb WAPu nebo synchronizace dat. Integrované ověřování systému Windows tedy nelze kombinovat s anonymním přístupem. Pokud bychom chtěli využívat několik schémat autentizace uživatelů najednou, je nutné vytvořit další virtuální adresáře, které se budou odkazovat na stejnou aplikaci resp. stejný adresář NET Genia na disku serverové stanice. Virtuální adresář, který bude využíván pro komunikaci s uživateli přes Internet či pro synchronizaci dat a služby WAPu, musí mít zpřístupněný anonymní přístup. Alternativou pro automatické přihlašování do NET Genia bez nutnosti zadávání uživatelského jména a hesla je používání zašifrovaných přihlašovacích údajů. V dialogu určeném pro odhlášení uživatele se na řádku s heslem v pravém sloupci nápovědy nachází skrytý odkaz, který slouží pro šifrování zadaných přihlašovacích údajů. Aby NET Genium mohlo jednoznačně identifikovat uživatele a následně ho přihlásit, je nutné vložit tento řetězec jako
parametr
internetové
adresy
(URL),
která
slouží
k
přístupu
do
NET
Genia.
Např.
tedy
„http://localhost/NETGenium/Default.aspx?zašifrované_přihlašovací_ údaje“. Je však důležité brát na vědomí, že si jak webový server, tak i internetový prohlížeč pamatuje seznam naposledy navštívených stránek a proto je tato funkce velkým bezpečnostním rizikem.
Datová komunikace Synchronizace dat Synchronizace dat slouží k udržování věrné kopie databázové tabulky v několika dalších databázích na vzdálených instalacích NET Genia najednou, např. na jiném serveru. Jde o symetrickou synchronizaci dat (multiple master), kdy změna v jednom exempláři databáze vyvolá požadavek na provedení stejné změny v dalších exemplářích. Požadavky jsou na serveru, který změnu inicioval, řazeny do fronty a na vzdálených serverech prováděny ve stejném pořadí. Synchronizace dat může probíhat jednosměrně nebo obousměrně. Jednosměrná synchronizace přenáší data ze zdrojové databáze do cílové pouze v jednom směru. Aby byla při jednosměrné synchronizaci zajištěna integrita dat, nesmí v cílové databázi docházet ke změnám záznamů obvykle vyvolaným uživateli informačního portálu. Dochází-li ke změnám i v cílové databázi, musí být zvolena obousměrná synchronizace dat.
Vzdálený server Vzdálený server je reference na instalaci NET Genia, se kterou je prováděna synchronizace dat. Nastavení vzdáleného serveru se provádí v administrátorském režimu a skládá se ze zadání internetové adresy (URL)
73/91
vzdáleného NET Genia a dále hesla pro synchronizaci. Heslo pro synchronizaci je z důvodu bezpečnosti doporučováno volit tak, aby bylo unikátní pro každou instalaci NET Genia zvlášť a nastavuje se ve vlastnostech vzdáleného NET Genia pod odkazem „Spravovat“ umístěném v navigační oblasti v sekci „Portály“.
Nastavení synchronizace dat Synchronizaci dat se nastavuje pro každou databázovou tabulku resp. editační formulář zvlášť. Jde-li o jednosměrnou synchronizaci, nastavuje se pouze u databázové tabulky na zdrojovém serveru. V případě obousměrné synchronizace dat se nastavuje jak na zdrojovém serveru, tak na vzdáleném. Každá databázová tabulka může být synchronizována s několika vzdálenými databázovými tabulkami najednou. Nastavení synchronizace dat se provádí v administrátorském režimu ve vlastnostech editačního formuláře. Je-li v editačním formuláři, u kterého je již nakonfigurovaná a úspěšně provozovaná synchronizace dat, dodatečně provedena změna u jednoho z ovládacích prvků, nedojde k této změně i na vzdáleném serveru. Je však možné provést jednorázovou synchronizaci všech databázových ovládacích prvků a současně skriptů příslušného editačního formuláře pomocí tlačítka „Uložit a synchronizovat formulář“ ve vlastnostech synchronizace dat.
Zapnutí / vypnutí synchronizace dat Nakonfigurovaná a úspěšně provozovaná synchronizace dat může být dočasně vypnuta, případně opět zapnuta. Nastavení se provádí v administrátorském režimu ve vlastnostech NET Genia pod odkazem „Spravovat“ umístěném v navigační oblasti v sekci „Portály“.
Protokolování synchronizace dat Proces synchronizace se automaticky protokoluje do aplikace „System“, kde lze dohledat všechny problémy, které v průběhu synchronizace nastaly. Obvyklým problémem je chyba některých proxy serverů „The underlying connection was closed: The server committed an HTTP protocol violation.“, jejímž řešením je restart proxy serveru.
Postup synchronizace dat Po vytvoření nebo změně záznamu v databázové tabulce, u které je nastavena synchronizace dat NET Genium automaticky vytvoří synchronizační balíček se seznamem změn provedených v záznamu. Tento balíček je uložen ve formě zašifrovaného souboru do adresáře „NETGenium\Synchro“ a zároveň je umístěn do FIFO fronty balíčků, určených k synchronizaci. Při dočasné nedostupnosti některého ze vzdálených serverů dochází k časové prodlevě během synchronizace záznamů do doby, než je spojení opět úspěšně navázáno.
Přímý export dat Přímý export dat je druh jednosměrné synchronizace dat s libovolnou databází aplikace MS Access či MS SQL Serveru, viz předchozí sekce 11.1 „Synchronizace dat“. Přímý export dat se výrazně nedoporučuje do databází, jejichž data mohou být měněna jiným programem než je NET Genium. Jakákoliv taková změna se
74/91
nezanese zpět do databáze NET Genia, čímž by mohlo dojít k úplnému narušení konzistence obou databází. Nastavení přímého exportu dat se provádí v administrátorském režimu u každého editačního formuláře zvlášť.
Programování v jazyce C# nebo Visual Basic NETGeniumConnection.dll Do NET Genia je možné doprogramovat vlastní funkce nebo je možné vytvářet vlastní programy, které vykonávají operace s uživatelskými daty uloženými v databázi NET Genia. Pro psaní těchto programů je doporučován vývojářský nástroj Visual Studio .NET. Samotné jádro NET Genia používá pro komunikaci s databází a práci s uživatelskými daty knihovnu „NETGeniumConnection.dll“, kterou je možné využít i pro psaní vlastních programů v jazyce C# nebo Visual Basic. Základem pro psaní vlastního programu je založení nového projektu ve Visual Studiu a přidání reference na knihovnu „NETGeniumConnection.dll“: V „Solution Exploreru“ klikneme pravým tlačítkem myši na adresář „References“
a
zvolíme
„Add
Reference…“.
Tlačítkem
„Browse…“
vybereme
cestu
ke
knihovně
„NETGeniumConnection.dll“ na disku našeho počítače (obyčejně ji nalezneme v adresáři „NETGenium\bin“). Tlačítkem „OK“ odsouhlasíme přidání reference na knihovnu „NETGeniumConnection.dll“ do projektu.
Třídy a metody knihovny NETGeniumConnection Třída NETGenium.Attachment int Add(string path, string rootpath, DbConnection conn) o
Funkce zkopíruje do NET Genia soubor zadaný parametrem „path“ a vytvoří z něj novou souborovou přílohu NET Genia. Následně vrací její „id“, které je možné použít např. v objektu „DataSaver“ za účelem přiřazení souborové přílohy k libovolnému záznamu v databázi.
o
Parametr „rootpath“ značí cestu adresáře příloh NET Genia.
string FileName(int id, DbConnection conn) o
Funkce vrací název souborové přílohy zadané parametrem „id“.
Funkce vrací objekt „DataTable“, který obsahuje záznamy načtené z databáze pomocí SQL dotazu zadaného parametrem „query“.
o
„Timeout“ příkazu je nastaven na nekonečno.
DataView Get_Infinite(string query, string rowFilter, string sort, DbConnection conn) o
Funkce vrací objekt „DataView“, který obsahuje záznamy načtené z databáze pomocí SQL dotazu zadaného parametrem „query“.
o
„Timeout“ příkazu je nastaven na nekonečno.
Třída NETGenium.DataSaver(string formdbname, int id, DbCommand cmd) o
Objekt určený pro zápis hodnot do záznamu zadaného parametrem „id“ v databázové tabulce zadané parametrem „formdbname“.
o
Vytváříme-li nový záznam, volíme v konstruktoru třídy „DataSaver“ parametr „id“ s hodnotou „0“.
DbCommand DbCommand o
Přidružený objekt „DbCommand“, pomocí něhož dojde k fyzickému uložení dat do databáze.
o
Objekt „DbCommand“ je použit až při samotném uložení dat do databáze vyvolaném metodou „Execute()“.
bool Empty o
Logická hodnota, je-li objekt „DataSaver“ prázdný tj. nejsou-li připravena žádná data k uložení do databáze.
void Add(string dbname, object value) o
Metoda připraví novou hodnotu zadanou parametrem „value“ k uložení do databázového sloupce s názvem uloženým v parametru „dbname“.
void Add(DataRow row) o
Metoda připraví všechny hodnoty z objektu „row“ k uložení do databáze. Názvy databázových sloupců jsou automaticky převzaty ze sloupců tabulky, která je nadřazena objektu „row“.
void Clear() o
Metoda smaže připravené hodnoty k uložení do databáze.
int Execute() 77/91
o
Funkce uloží připravené hodnoty do databáze a následně vrací „id“ uloženého záznamu.
Třída NETGenium.DataSaverSynchro(string formdbname, int id, DbConnection conn) o
Objekt určený pro zápis hodnot do záznamu zadaného parametrem „id“ v databázové tabulce zadané parametrem „formdbname“. Navíc protokoluje provedené změny v záznamu a současně spouští synchronizaci dat, je-li u editačního formuláře nastavena.
o
Vytváříme-li nový záznam, volíme v konstruktoru třídy „DataSaverSynchro“ parametr „id“ s hodnotou „0“.
Třída NETGenium.DbDriver Sql o
Identifikátor databáze serveru SQL Server.
o
Identifikátor databáze serveru Firebird.
Firebird
Třída NETGenium.DbCommand o
SQL příkaz nebo uložená procedura.
o
Obdoba třídy „SqlCommand“ jazyka C#.
Třída NETGenium.DbConnection o
Připojení do databáze NET Genia.
o
Obdoba třídy „SqlConnection“ jazyka C#.
Třída NETGenium.DbDataAdapter o
Objekt pro čtení dat z databáze do instance objektu „DataTable“ nebo „DataSet“.
o
Obdoba třídy „SqlDataAdapter“ jazyka C#.
Třída NETGenium.DbDataReader o
Objekt pro čtení dat z databáze.
o
Obdoba třídy „SqlDataReader“ jazyka C#.
Třída NETGenium.DbTransaction o
Databázová transakce.
o
Obdoba třídy „SqlTransaction“ jazyka C#.
78/91
Třída NETGenium.Files o
void Delete(string path)
o
Metoda smaže soubor zadaný parametrem „path“.
o
Chyby, které můžou vzniknout během provádění příkazu budou ignorovány – neexistuje-li soubor nebo dojde k chybě během mazání souboru.
string Read(string path) o
Funkce vrací obsah souboru zadaného parametrem „path“.
ArrayList ReadLines(string path) o
Funkce vrací pole s řádky souboru zadaného parametrem „path“.
byte[] ReadStream(string path) o
Funkce vrací pole s obsahem souboru zadaného parametrem „path“.
double Size(string path) o
Funkce vrací velikost souboru zadaného parametrem „path“ jako číslo.
string Size(double value) o
Funkce vrací velikost souboru ve formátu NET Genia z čísla zadaného parametrem „value“.
string Size2(string path) o
Funkce vrací velikost souboru zadaného parametrem „path“ ve formátu NET Genia.
string UniquePath(string path) o
Funkce ověří existenci souboru zadaného parametrem „path“ a případně pomocí změny jeho názvu vrací unikátní cestu k souboru, který na disku zatím neexistuje. Název existujícího souboru je rozšířen o číselnou hodnotu umístěnou do kulatých závorek.
o
Např. „UniquePath("C:\\autoexec.bat")“ vrátí hodnotu „autoexec (2).bat“.
void Write(string path, string value) o
Metoda vytvoří nový soubor zadaný parametrem „path“ nebo přepíše existující a zapíše do něj text zadaný parametrem „value“.
void WriteLine(string path, string value) 79/91
o
Metoda vytvoří nový soubor zadaný parametrem „path“ nebo otevře existující a na konec souboru zapíše text zadaný parametrem „value“.
void WriteStream(string path, byte[] value) o
Metoda vytvoří nový soubor zadaný parametrem „path“ nebo přepíše existující a zapíše do něj pole bajtů zadané parametrem „value“.
Třída NETGenium.Holidays(DbConnection conn) bool Contains(DateTime value) o
Funkce vrací logickou hodnotu, je-li datum zadané parametrem „value“ státní svátek nebo sobota či neděle.
o
Seznam státních svátků je načten z databáze NET Genia, kde je umístěn v aplikaci „System“.
string Name(DateTime value) o
Funkce vrací název státního svátku pro den zadaný parametrem „value“.
bool PartDay(DateTime value) o
Funkce vrací logickou hodnotu, je-li datum zadané parametrem „value“ státní svátek trvající pouze polovinu dne.
bool Weekend(DateTime value) o
Funkce vrací logickou hodnotu, je-li datum zadané parametrem „value“ sobota či neděle.
Třída NETGenium.Language Ar o
Identifikátor arabského jazykového nastavení.
o
Identifikátor českého jazykového nastavení.
o
Identifikátor německého jazykového nastavení.
o
Identifikátor anglického jazykového nastavení.
o
Identifikátor francouzského jazykového nastavení.
Cs
De
En
Fr
80/91
Třída NETGenium.Parser string Int2Time(int value) Funkce vrací textový řetězec ve formátu „HH:mm“ vyjádřený z počtu minut zadaného parametrem „value“.
int Time2Int(object value) Funkce vrací počet minut vyjádřený z času ve formátu „HH:mm“ zadaného parametrem „value“.
Drawing.Color ToColor(object value) Funkce vrací hodnotu typu „Drawing.Color“ z hodnoty zadané parametrem „value“. Např. „ToColor("255,255,255")“ vrátí bílou barvu.
double ToDouble(object value) Funkce vrací číselnou hodnotu parametru „value“. int ToInt32(object value) Funkce vrací číselnou hodnotu parametru „value“.
Třída NETGenium.RichTextBox Ovládací prvek RichTextBox. Ovládací prvek se na určené místo v projektu Visual Studia .NET umísťuje z „Toolboxu“. Ten však musí evidovat knihovnu „NETGeniumConnection“ jako možný zdroj ovládacích prvků. To lze učinit stisknutím pravého tlačítka myši na ploše „Toolboxu“ a zvolením položky „Add > Remove Items…“.
Třída NETGenium.Time(object value) o
Objekt určený pro převod textového řetězce ve formátu „HH:mm“ zadaného parametrem „value“ na časový údaj.
int Hour o
Počet hodin.
o
Počet minut.
int Minute
81/91
Třída NETGenium.Tree(DataView view, string textfield, string urlfield) o
Ovládací prvek Tree.
o
Parametr „view“ reprezentuje virtuální databázovou tabulku načtenou z databáze, např. pomocí příkazu „DataView view = NETGenium.Data.Get(“SELECT * FROM ng_menu ORDER BY id”, “” , “id”, conn)“.
o
Parametr „textfield“ je názvem databázového sloupce nesoucího informaci o textu zobrazeném v uzlu stromové struktury.
o
Parametr „urlfield“ je názvem databázového sloupce nesoucího informaci o internetové stránce, na kterou bude uživatel při aktivaci uzlu stromové struktury přesměrován.
string Get(Style style) o
Funkce vrací HTML kód stromové struktury a zároveň označí uzel stromové struktury, který odpovídá aktuálně zobrazované stránce.
o
Parametr „style“ určuje způsob generování HTML kódu. Styl „A“ značí, že bude výsledkem celá stromová struktura včetně všech dostupných větví. Styl „B“ je vhodný pro stromové struktury, kde není vhodné načítat celý strom, ale vždy jen základní úroveň a aktivní větev. Typickým voláním této funkce je „Label1.Text = tree.Get(NETGenium.Tree.Style.A);“.
string JavaScript() o
Funkce vrací kód javascriptu potřebný pro správnou funkci stromové struktury.
CssStyleCollection ImageCell o
CSS styl buňky, ve které je umístěn obrázek.
o
Výchozí nastavení je horní odsazení 4 pixely a pravé odsazení 2 pixely.
CssStyleCollection TextCell o
CSS styl buňky, ve které je umístěn text.
o
Toto nastavení je doporučováno změnit s ohledem na barevné schéma či obvyklý font internetové prezentace.
CssStyleCollection TextCell2 o
CSS styl aktivní buňky, ve které je umístěn text.
o
Toto nastavení je doporučováno změnit s ohledem na barevné schéma či obvyklý font internetové prezentace.
82/91
Čtení a zápis dat do databáze Čtení a zápis dat do databáze patří k nejdůležitějším činnostem při psaní vlastních programů napojených na databázi NET Genia ve spojení s knihovnou „NETGeniumConnection.dll“.
Příklad čtení dat z databázové tabulky using NETGenium; DbConnection conn = new DbConnection("server=(local);Trusted_Connection=true;database=netgenium"); conn.Open(); DataTable data = Data.Get("SELECT * FROM ng_termin", conn); conn.Close(); conn.Dispose();
Příklad zápisu dat do databázové tabulky using NETGenium; DbConnection conn = new DbConnection("server=(local);Trusted_Connection=true;database=netgenium"); conn.Open(); DbCommand cmd = new DbCommand(conn); DataSaver ds = new DataSaver("ng_termin", 1, cmd); ds.Add("ng_datum", new DateTime(2000, 2, 29)); ds.Execute(); cmd.Dispose(); conn.Close(); conn.Dispose();
83/91
Příklad zápisu dat do databázové tabulky, u které vyžadujeme zápis provedených změn do historie a případné provedení synchronizace dat, pokud je u databázové tabulky nastavena using NETGenium; DbConnection conn = new DbConnection("server=(local);Trusted_Connection=true;database=netgenium"); conn.Open(); DataSaverSynchro ds = new DataSaverSynchro("ng_termin", 1, conn); ds.Add("ng_datum", new DateTime(2000, 2, 29)); ds.Execute(new NETGeniumUser(), "C:\\Inetpub\\wwwroot\\NETGenium"); conn.Close(); conn.Dispose();
Externí funkce NET Genium umožňuje volat externí funkci, která vrací jako výsledek své činnosti textovou hodnotu. Externí funkce je zkompilována v knihovně „ngef.dll“, která je umístěna spolu se svým zdrojovým kódem „ngef.cs“ v adresáři „NETGenium\bin“. Zdrojový kód této funkce může být libovolně změněn a následně zkompilován podle vlastních potřeb. Není však povoleno měnit název a parametry této funkce. Při volání externí funkce není nutné dodržovat malá či velká písmena v názvu externí funkce. Jednotlivé parametry externí funkce jsou umístěny v kulatých závorkách a jsou odděleny čárkami. Parametry mohou být umístěny ve dvojitých uvozovkách např. v situaci, kdy jeden z parametrů obsahuje znak dělící čárky. Nemá-li externí funkce žádný parametr, je i tak nutné uvádět za názvem externí funkce kulaté závorky. Kdekoliv se během tvorby aplikací resp. během nastavování vlastností editačních formulářů, nahlížecích stránek, ovládacích prvků či psaní skriptů vyžaduje od administrátora zadání textového řetězce, může administrátor externí funkci použít.
Příklad volání funkce z nahlížecí stránky, editačního formuláře či skriptu ngef(MyFirstFunction, A, B, C, 1, 2, 3, 1.1.2000)
Výchozí zdrojový kód externí funkce string ngef(string id, string[] args, bool test, DbCommand cmd, DbConnection conn) 84/91
{ if (test) return ""; switch (id) { // case "MyFirstFunction": return MyFirstFunction(); default:
return conn.ExternalFunctionNotFound(id, cmd);
} }
Poznámka: Při volání externí funkce se parametry použité v aplikacích NET Genia předávají jako pole hodnot a
do těla externí funkce vstupují jako parametr „string[] args“. V definici externí funkce jsou ještě další parametry „bool test“, „DbCommand cmd“ a „DbConnection conn“, které jsou externí funkci předávány automaticky.
Parametry externí funkce public static string ngef o
Typ a název externí funkce.
o
Identifikátor externí funkce.
o
Externí funkce může vracet různé hodnoty v závislosti na svém identifikátoru. Je tedy možné
string id
vytvořit nekonečně mnoho variant externí funkce. string[] args o
Parametry externí funkce zadané při volání funkce. Je-li externí funkce volána bez těchto parametrů pouze s identifikátorem např. „ngef(MyFirstFunction)“, neobsahuje pole parametrů „args“ žádný prvek.
o
Externí funkci nelze předat jinou než textovou hodnotu. Tato hodnota může být uvnitř externí funkce
přeparsována
pomocí
metod
třídy
„Parser“
umístěné
v
knihovně
„NETGeniumConnection.dll“. o
Počet parametrů není omezen.
o
Logická hodnota „test“ značí, zda je externí funkce volána ze skriptu v testovacím režimu tj. při
bool test testování skriptu v návrháři skriptů.
85/91
DbCommand cmd o
Objekt „cmd“ slouží k volání SQL příkazů nad databází NET Genia. Tyto SQL příkazy běží spolu se všemi SQL příkazy provedenými uvnitř skriptu NET Genia v jedné transakci. Objekt „cmd“ lze tedy použít pouze u volání externí funkce zevnitř skriptu napsaného v návrháři skriptů. K potvrzení transakce dojde ihned po úspěšném provedení skriptu. Vyvoláme-li přerušení v externí funkci, dojde k přerušení činnosti celého skriptu a v případě skriptů „OnBeforeSave“ resp. „OnBeforeDelete“ nedojde k uložení záznamu resp. k jeho smazání z databáze.
o
Je-li externí funkce volána z jiného místa než skriptu, případně ze skriptu, který je v testovacím režimu, má objekt „cmd“ hodnotu „null“.
o
Objekt „cmd“ slouží přímo k volání SQL příkazů, avšak pro zápis hodnot do databázových tabulek je doporučována především třída „DataSaver“ knihovny „NETGeniumConnection.dll“.
DbConnection conn o
Objekt „conn“ reprezentuje připojení do databáze NET Genia. Pomocí tohoto objektu lze ve spojení např. s třídou „Data“ knihovny „NETGeniumConnection.dll“ číst záznamy či prosté hodnoty z databáze.
o
Objekt „conn“ je možné využívat i pro psaní dat do databáze, avšak ve skriptu „OnBeforeSave“ a „OnBeforeDelete“ je doporučováno používat objekt „cmd“, který zajistí, že budou naše změny v databázi provedeny v jedné transakci a tudíž najednou spolu s uložením záznamu či jeho smazáním.
Změna a kompilace zdrojového kódu externí funkce K provádění změn zdrojového kódu externích funkcí je doporučován nástroj Visual Studio .NET a programovací jazyk C#. Nejdříve založíme nový projekt typu „Class Library“ s názvem „ngef“, ze kterého odstraníme výchozí třídu „Class1.cs“.
86/91
Obrázek 12.1: Založení nového projektu
Obrázek 12.2: Výchozí třída „Class1.cs“
87/91
V dalším kroku přidáme referenci na knihovnu „NETGeniumConnection.dll“ tak jak to popisuje sekce 12.1 „NETGeniumConnection.dll“ a přidáme existující soubor „ngef.cs“, který nalezneme v adresáři „NETGenium\bin“: V „Solution Exploreru“ klikneme pravým tlačítkem na projekt „ngef“ a zvolíme „Add > Add Existing Item…“. Tlačítkem „Open“ vybereme cestu k souboru „ngef.cs“ na disku našeho počítače. Následně provedeme požadované úpravy a projekt zkompilujeme v režimu „Release“. Vytvořenou knihovnu „ngef.dll“ nakopírujeme do adresáře „NETGenium\bin“.
Obrázek 12.3: Třída „ngef.cs“
88/91
Obrázek 12.4: Příklad externí funkce
Příklad externí funkce „MyFirstFunction“ private static string MyFirstFunction(bool test, string[] args, DbCommand cmd, DbConnection conn) { if (test) return "0"; if (args.Length != 2) { throw new Exception("Externí funkce vyžaduje dva parametry!"); } int koef0 = Parser.ToInt32(args[0]), koef1 = Parser.ToInt32(args[1]); if (koef0 == 0 || koef1 == 0) { throw new Exception("Koeficienty nesmí být nulové!");
89/91
} DataTable data = Data.Get("SELECT ng_h FROM ng_koeficient WHERE ng_koef IN (" + koef0 + ", " + koef1 + ")", conn); if (data.Rows.Count != 2) { throw new Exception("Koeficienty nebyly v databázy nalezeny!"); } int result = Parser.ToInt32(data.Rows[0][0]) * Parser.ToInt32(data.Rows[1][0]); return result.ToString(); }
Webové aplikace Zobrazování nahlížecí stránky NET Genia v rámu naší vlastní webové aplikace V rámu naší webové aplikace je možné zobrazovat nahlížecí stránku NET Genia. Je-li nahlížecí stránka nastavena tak, aby zobrazovala různé údaje v závislosti na právě přihlášeném uživateli, bude nejprve nutné se do NET Genia přihlásit pod určitým uživatelským účtem. Funkce na přihlášení resp. odhlášení uživatele můžeme naprogramovat např. následujícím způsobem:
Příklad public static NETGeniumConnection NGC { set { HttpContext.Current.Session["NGC"] = value; } get { if (HttpContext.Current.Session["NGC"] == null) HttpContext.Current.Session["NGC"] = new NETGeniumConnection("http://localhost/NETGenium"); return (NETGeniumConnection) HttpContext.Current.Session["NGC"]; } } public static string Login(string loginname, string password) 90/91
{ int n = NGC.Login(loginname, password, HttpContext.Current); if (n == NETGeniumConnection.LoginSuccessful) { return "Přihlášení proběhlo úspěšně"; } else if (n == NETGeniumConnection.LoginFailed) { return "Neplatné přihlášení!"; } else { return "Nedostatek licencí!"; } } public static void Logout() { NGC.Logout(); }
Poznámka: Zobrazí-li internetový prohlížeč při spuštění webové aplikace chybu „Unauthorized“, je nutné
zkontrolovat nastavení práv pro účet „Everyone“ na čtení adresáře webového projektu a jeho obsahu na disku našeho počítače.