zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně...

41
Průvodce vývojáře DERS s.r.o. Třída ČSA 383 500 03 Hradec Králové 1999-2009

Transcript of zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně...

Page 1: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

Průvodce vývojáře

DERS s.r.o.Třída ČSA 383

500 03 Hradec Králové

1999-2009

Page 2: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

I Verso – průvodce vývojáře........................................................................4I.1 Jak vypadá html – uspořádáno do stromu.........................................4I.2 Způsob zpracování šablony (princip).................................................4I.3 Syntaxe v html šabloně......................................................................5I.4 Úpravy html šablony.........................................................................11I.5 Formátovací funkce..........................................................................11I.6 Dotazy..............................................................................................12I.7 Snapshoty........................................................................................13I.8 Funkce.............................................................................................14I.9 LOV (seznamy hodnot)....................................................................14I.10 Defaultní hodnoty.........................................................................15I.11 Podmínky – viditelnost položek....................................................16I.12 Tlačítka formulářů.........................................................................16I.13 Stránka, která následuje po uložení (v tab. vr_stranky)................17I.14 Speciální proměnné......................................................................17I.15 Ukázky formátu funkcí v tab. vr_stranky a vr_dotazy...................18I.16 Funkce v tabulce vr_dotazy (zde je vždy jedna funkce):..............18I.17 Proměnné, které mají funkce k dispozici:.....................................18I.18 Přístupová práva..........................................................................19I.19 Filtrování přístupových práv.........................................................19I.20 Stahování souborů.......................................................................19I.21 Kontroly na straně serveru...........................................................20I.22 Kontroly na straně klienta - JavaScript.........................................21I.23 Dědění vlastností šablon..............................................................21I.24 Výstup šablony do MS Excel........................................................21I.25 Výstup dat do jakékoliv aplikace...................................................21I.26 Definice grafů...............................................................................22I.27 Definice Kontingenčních tabulek..................................................22

II Přihlášení/Odhlášení uživatele............................................................23II.1 Přihlášení......................................................................................23II.2 Odhlášení uživatele......................................................................23II.3 Ověřování proti externí autoritě – LDAP.......................................23

III Přístupová práva..................................................................................24III.1 Vyhodnocení přístupových práv...................................................25III.2 Princip vyhodnocení práva...........................................................25III.3 Užitečné........................................................................................26

IV Chybová hlášení..................................................................................27IV.1 Správa chybových hlášení............................................................28IV.2 Globální správa chybových hlášení..............................................28IV.3 Lokální správa chybových hlášení................................................28IV.4 Ovládání správy chybových zpráv................................................28

V Ostatní.................................................................................................29V.1 Definice připojení k databázi (datovému zdroji)............................29V.2 Číselníky ve Verso (domény).......................................................29V.3 Časové řady.................................................................................29V.4 Základní požadavky na šablony...................................................29

VI Poznámky............................................................................................31

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 3: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 4: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

I VERSO – PRŮVODCE VÝVOJÁŘE

Cílem dokumentu je popis jednotlivých možností Verso z pohledu vývojáře – tvůrce aplikací postavených na Verso. Jiný dokument popisuje aplikaci funkcionality Verso na příkladech. Dokumentace modulů Jádro a Systém ve smyslu jejich užití je součástí jiného dokumentu.

I.1 JAK VYPADÁ HTML – USPOŘÁDÁNO DO STROMU

<html><head> <title>Příklad</title> <script language=“JavaScript“>....</script></head>

<body> <div> <table> <tbody elid=master> <tr> <td> </td> <td> </td> </tr> <tr> <td> <div elid=detail> </div> </td> </tr> </tbody> </table> </div></body></html>

I.2 ZPŮSOB ZPRACOVÁNÍ ŠABLONY (PRINCIP)1. vstupní html šablona převedena do stromu.2. strom se prochází do hloubky:

a) Do všech formulářů je přidán atribut formid s jedinečným číslem formuláře

b) Každý tag, který obsahuje atribut elid, je přidán do seznamu dalšího zpracování (elid může obsahovat proměnnou, která bude nahrazena – vyhodnocuje se pouze jednou při parsování html)

c) Každý select tag je nahrazen seznamem hodnot (LOV) v případě, že obsahuje atribut id, který začíná na lov:

d) Každý input tag je nahrazen seznamem hodnot (LOV) v případě, že obsahuje atribut id, který začíná na lov:, atribut type=text.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

html

head

body

title

script

div

table

div elid=detail

tddy

tr

tbody elid=master

td

tr

tddy

Page 5: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

3. seznam z bodu 2.b je procházen od konce. pro každé místo je vygenerováno html a uloženo do hashe. Do stromu se místo toho vloží odkaz.

4. Zbylý strom se také převede zpět do html.5. Jednotlivé části html se postupně procházejí a vykonávají se funkce nebo

vládání částí html (viz. bod 3) přesně v tom pořadí, jak jsou v html šabloně.

I.3 SYNTAXE V HTML ŠABLONĚ!_!elid:pole[;formát:param1:param2:… [#formát:param1:param2:… [#formát:param1:…]]]!_!

!_!pole[;formát:param1:param2:… [#formát:param1:param2:… [#formát:param1:param2:…]]]!_!

Provede náhradu z dotazu, který je uveden parametrem elid (název dotazu). Pokud není uveden, tak z aktuálního. Pole je jméno sloupce v dotazu. Nepovinná část [;formát:param1:param2:… [#formát:param1:param2:…]] udává formátování pole. Popis formátovacích funkcí viz Formátovací funkce. Formátovací funkce lze kombinovat. Oddělují se # a jsou aplikovány v pořadí, ve kterém jsou uvedeny.

Příklad:!_!jmeno!_!, !_!prijmeni!_!, !_!adresa:ulice!_!, !_!naklady;FCIS:1:0!_!

Atribut elidparams="param1=hodnota&param2=hodnota&…"

Ke každému tagu, kde je uveden atribut elid, je možné přidat i parametry, které se mohou dosadit např. do dotazu za proměnné. Jinak řečeno, elidparams ovlivňuje hodnoty proměnných. Od okamžiku, kdy je v rámci elidparams hodnota proměnné nastavena, zůstává nastavena i když je prováděno zpracování následující tomuto tagu. Hodnota parametru je zapsána do hashe %contents.

Příklad:<div elid="prvni" elidparams="kdo=honza">,

dotaz prvni je pak nadefinován: select * from lidi where jmeno='$kdo' a hodnota proměnné $kdo je honza.

V současné době je možné nahradit nastavení proměnných prostřednictvím <!--#var:…#-->.

Atribut elidtype=“replace“

Z výsledné šablony bude vypuštěn HTML tag, a bude zobrazen pouze vnitřek elidu – vhodné pro generování javascriptů.

Příklad:<div elid="prvni" elidtype="replace">Osoba: !_!jmeno!_! !_!prijmeni!_!</div>

bude po zpracování vypadat:Osoba: Jan Mach

……

Osoba: Pepa Mach

<!--fce-název funkce-->

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 6: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

Volání funkce, která je nadefinována v „Jádro Stránky“. Funkce je zavolána s parametry: $dbh (aktuální připojení k databázi), $elid (název dotazu, který je zpracováván). Funkce jsou volány v pořadí, jak jsou obsaženy v šabloně. Návratová hodnota funkce je vložena do HTML.

<!--fce-název funkce(parametr1,parametr2,…)-->

Zavolá funkci jako předchozí, ale předá jí i parametry: $dbh, $dotaz, @params, kde v poli @params jsou uvedené parametry parametr1, parametr2, …

Příklad:<!--fce-necoProved([email protected])-->

sub necoProved { # zde je funkce v Perlu, který se zapíše do pole funkce v Jádro Stránky

my ($dbh,$dotaz,$email)=@_;

return $email;

}

<!--#_elid_pole-start#--> ... <!--#_elid_pole-end#-->

Ohraničuje jednotlivé položky, v případě, že uživatel nemá právo, tak je položka odstraněna. V případě, že není položka vyplněna, je také odstraněna (změnit chování, aby odstranění bylo volitelné – položka ve vr_stranky). Právo se nastavuje v Systém/Právo v poli Přístupy.

Příklad:<div elid="prvni">

Příjmení: !_!prijmeni!_!,

<!--#_prvni_rc-start#-->Rod. č.: <!--#_prvni_rc-end#--> !_!rc!_!,

</div>

bude ve výsledku vypadat, pokud nebude mít uživatel právo na pole rc:<div>

Příjmení: Mach,

,

</div>

<div>

Příjmení: Vonásek,

,

</div>

<!--#podm-název podmínky-(podmínka)#--> ... <!--#podm-název podmínky-else#--> ...

<!--#podm-název podmínky-end#-->

Provede se vyhodnocení podmínky. Ve všech částech musí být uveden shodný název podmínky.

Příklad podmínky:

!_!master:ID!_!==34 nebo '$param' eq 'honza' && '!_!typ!_!' eq 'T'.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 7: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

#lov:název seznamu hodnot[(sqlkeyval)]#

Dosadí do HTML hodnotu ze seznamu hodnot (LOV), kde klíčem pro určení hodnoty je pole uvedené buď v definici LOV v poli SQLKeyVal, nebo explicitně v šabloně.

Příklad:#lov:muj-seznamhodnot#, #lov:muj-seznamhodnot(pohlavi)#

#lov:název seznamu hodnot[:název_proměnné]#

Shodné s předchozím s tím rozdílem, že klíčem pro výběr hodnoty z LOV je hodnota proměnné.

Příklad:<!--#var:_prijm=Mach#-->

#lov:muj-seznamhodnot:_prijm#

<!--#elid-start#--> ... <!--#elid-end#-->

V případě, že část elid neobsahuje data (není ani jeden záznam), tak je takto ohraničená sekce odstraněna z HTML.<!--#elid-start#--> … <!--#elid-else#--> … <!--#elid-end#-->

Stejně jako předchozí s uvedením části else, která je zobrazena v případě, že dotaz elid neobsahuje žádná data.

Pokud máme více elidů se stejným jménem,je možné je odlišit takto: <tag elid=“elid:1“>

Podmínka: <!--#elid:1-start#--> … <!--#elid:1-end#-->

Nyní je podmínka platná pouze pro elid:1.

Příklad:<!--#prvni-start#-->

Telefonní seznam

<div elid="prvni">

!_!prijmeni!_! !_!jmeno!_!, !_!tel_cislo!_!

</div>

<!--#prvni-else#-->

V seznamu nebyl nalezen ani jeden záznam.

<!--#prvni-end#-->

$proměnná

Provede se náhrada z hashe %contents nebo %UserData s tím, že UserData je brán jako první (např. v podobě $contents{proměnná} ). Jinými slovy, pokud je stránka zavolána např.

http://server/verso?fname=pokusy&_id=23&_jmeno=mach

budou nastaveny hodnoty proměnných fname, _id, _jmeno, které lze použít kdekoliv v šabloně pro výpis hodnoty parametru, v podmínce, v dotazu, v LOVu.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 8: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

<!--fce-posliEmail(stranka,název zprávy,email)-->

<!--fce-posliEmail(stranka,název zprávy,email,email_od)-->

Poslání emailu z aplikace, kde:

stranka – název stránky z jádra Verso,

název zprávy – co se objeví v subjectu (nesmí obsahovat čárku),

email – kam se má email poslat (více emailů oddělit středníkem např.: [email protected];[email protected]).

email_od – pokud je uveden, tak je tento e-mail uveden jako odesílatel

Při implementaci je potřeba změnit parametry Verso, které jsou uvedeny a popsány v souboru params (převážně se jedná o jméno SMTP serveru, emailu, pod kterým je zpráva odeslána, …).

<!--fce-include(stranka)-->

<!--fce-include(stranka,přepínače)-->

Vložení další stránky Verso do výsledného HTML. Jméno stránky Verso je dáno parametrem stranka. Při generování vložené stránky jsou pokaždé kontrolována přístupová práva.

Přepínače mohou obsahovat:

onlybody – bude vloženo pouze tělo šablony (obsah tagu body)

localelid – ve vložené stránce lze používat odkazy na dotazy ze stránky, kdo které byla includovaná stránka vložena. To v některých případech vede k vedlejšímu efektu, že jsou použity dva dotazy se stejnými názvy a dojde k jejich ovlivnění. Toto chování je možné vypnout přepínačem localelid.

Pokud mají být použity oba přepínače, musí být uvedeny: onlybody;localelid

<!--fce-orderby(elid,číslo_pole)-->

Na dané místo vloží symbol pro setřídění vzestupně/sestupně/netřídit. Pole, pomocí kterých lze třídit, jsou uvedena v definici dotazu v poli SQLOrderBy. Číslo pole je indexem do tohoto seznamu v poli SQLOrderBy s tím, že první má index 0.

Příklad:<table border=1>

<tr align="left"><th>&nbsp;</th><th><!--fce-orderby(vypis,0)-->Číslo&nbsp;&nbsp;</th><th><!--fce-orderby(vypis,1)-->Název&nbsp;&nbsp;</th><th>Program&nbsp;&nbsp;</th><th><!--fce-orderby(vypis,2)-->Datum zahájení&nbsp;&nbsp;</th><th><!--fce-orderby(vypis,3)-->Datum ukončení&nbsp;&nbsp;</th><th>Poznámky&nbsp;&nbsp;</th>

</tr><tr elid="vypis">

…………</tr>

Syntaxe pole SQLOrderBy v definici dotazu:cislo;nazev;datum_od;datum_do

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 9: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

<!--fce-fmt(nazev_proměnné,formát)-->

vloží do stránky proměnnou, která je zvormátovaná dle formátu (obdoba !_!pole;formát!_!). Využít lze například v místě, kdy je v nějaké proměnné prováděn výpočet a jeho výsledek je následně vypsán.

<!--fce-setparamarray(název_proměnné,název_cílové_proměnné,uvozovky)-->

Pokud je na stránce realizována funkce mnohačetného výběru (např. select s možností výběru více položek), funkce zajistí vložení vybraných hodnot do nové proměnné. Hodnoty jsou odděleny čárkou. Pokud je hodnota parametru uvozovky=1, jsou jednotlivé hodnoty uzavřeny do uvozovek. Hodnotu nové proměnné lze využít v SQL.

Příklad:<select name=“pokus“ multiple></select>

Verso bude zavoláno s parametry: pokus=a&pokus=b&pokus=c

V proměnné pokus bude hodnota c.

Pokud bude využita funkce setparamarray:<!--fce-setparamarray(pokus,pokus_a,1)-->

bude v proměnné pokus hodnota c, v proměnné pokus_a hodnota 'a','b','c'.<!--fce-setparamarray(pokus,pokus_a,0)-->

bude v proměnné pokus hodnota c, v proměnné pokus_a hodnota a,b,c.

Použití v SQL: select * from tab where druh in ($pokus_a)

<!--#def-val:$proměnná=hodnota#-->,

<!--#def-val:$proměnná=&vnitřní funkce#-->,

<!--#def-val:elid:pole=hodnota#-->,

<!--#def-val:elid:pole=&vnitřní funkce#-->

Nastaví výchozí hodnotu pro proměnnou nebo pro pole v dotazu daném elid. Bližší popis viz Defaultní hodnoty. Výchozí hodnota znamená, že pokud tam, co chci zapsat není žádná hodnota nastavena, tak jen tehdy je dam zapsána hodnota.

<!--#var:$proměnná=hodnota#-->,

<!--#var:$proměnná=&vnitřní funkce#-->,

<!--#var:elid:pole=hodnota#-->,

<!--#var:elid:pole=&vnitřní funkce#-->

Nastaví pokaždé hodnotu pro proměnnou nebo pro pole v dotazu daném elid. Použití obdobné jako u def-val s tím rozdílem, že zapíše hodnotu vždy.

!_!EL_IDENTITY!_!

!_!EL_ROWNO!_!

!_!EL_ROWCOUNT!_!

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 10: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

!_!EL_ROWEVEN!_!

!_!EL_ROWODD!_!

Speciální pole, který obsahuje každý elid (dotaz) – Verso je tam automaticky doplní, s významem:

pořadové číslo záznamu v rámci stránky,

číslo řádku v rámci jednoho elidu (dotazu),

počet záznamů v dotazu,

lichy/sudý řádek – pokud je splněno, pole obsahuje 1, jinak 0.

Parametr stránky fnameright

Je možné zavolat stránku Verso se speciálním parametrem fnameright, který říká, z jaké stránky mají být pro danou stránku odvozena přístupová práva (je převzata definice). Stránky, pro které lze tento mechanismus použít, jsou uvedeny v modulu pravofiltr.pm a pokud má být množina stránek rozšířena, musí být do tohoto modulu dopsána.

Tento mechanismus lze s výhodou použít u číselníků, kde je jeden číselník pro jednu aplikaci, ale používá se na různých místech s rozdílnými přístupovými právy.

Příklad:http://server/verso?fname=s_vyberprac&fnameright=e_cerpani

Při zobrazování stránky s_vyberprac budou vyhodnocena přístupová práva od stránky e_cerpani.

<!--note- libovolná poznámka -->

Do šablony je možné vkládat komentáře, které jsou při generovány vyjmuty a nejsou přístupné uživateli ve výsledném html. Poznámku lze využít pro vložení komentáře autora šablony a tato poznámka není viditelná pro konečného uživatele.<!--nbsp-->

Při generování html je nahrazeno za &nbsp; (non-breaking sprace – tvrdá mezera). Při výstupu do Excelu je značka odstraněna a není ničím nahrazena. Je nutné používat pro formátování tabulky, kde jsou uvedena čísla a předpokládá se, že bude výsledné html exportováno do Excelu.

Příklad:<td><!--nbsp-->!_!pole;FCIS:1:0!_!</td>

Výsledné html bude:<td>&nbsp;1234567</td> nebo <td>&nbsp;</td>

Pokud není v buňce tabulky uvedena tvrdá mezera, není zobrazeno rámování buňky v prohlížeči a výsledná tabulka je nepřehledná. Při exportu do Excelu ale není Excelem buňka, kde je uvedeno číslo s mezerou, rozpoznána jako číslo a nelze použít pro výpočty.

<input type="date">

Je zavedena speciální syntaxe pro vložení ovládacího prvku pro výběr data z kalendáře. Pokud bude v šabloně použita, bude nahrazena za <input type="text"> a doplněna kódem pro vyvolání nabídky s kalendářem.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 11: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

<!--#podm-mapravo-(mapravo('nazev_sablony_fname') > 3)#-->…<!--#podm-mapravo-end#-->

Pomocí vnitřní funkce Verso lze zjistit, jaké právo má uživatel na danou stránku. S výhodou lze vyžít pro zobrazení (skrytí) ovládacích prvků pro přidání nového záznamu.

<!--#podm-maroli-(maRoli('název_role')==1)#-->…<!--#podm-maroli-end#-->

Vniřní funkcí Verso lze zjistit, zda-li přihlášený uživatel má uvedenou roli.

I.4 ÚPRAVY HTML ŠABLONYPokud existuje tag input, který je typu submit nebo button a nemá-li uveden atribut class, tak je doplněn atribut class=“btn“

V případě, že se jedná o formulář (v definici stránky), tak je do sekce head (pokud existuje) HTML šablony dopsán odkaz na JavaScript, který provádí kontrolu vyplněných polí formuláře.

Tlačítku, které je pojmenováno uložit je automaticky doplněn atribut accesskey s hodnotou U (po zmáčknutí alt+U dojde ke zmáčknutí tlačítka).

I.5 FORMÁTOVACÍ FUNKCEFCIS[:řád[:desetinná_místa]] – funkce FCIS formátuje číslo na specifikovaný řád a počet desetinných míst. Provede také odsazení na řádech tisíc, milion (př.: na číslo: 6548524234.323 aplikuji FCIS:1000:2 a dostanu: 6 548 524,23). Výchozí nastavení řád=1000, desetinná_místa=2.

FCISLO – stejné jako FIS s tím, že je provedeno pouze zaokrouhlení.

FQUOT – funkce FQUOT nakáže konverzi vraceného pole. Obsah polí je konvertován tak, aby neobsahoval formátovací znaky html jako je ", které jsou nahrazeny např.: &quot;.

ESCLG – nahradí < a > za &lt; a &gt;

FUC – funkce UpperCase – v kódové stránce win-1250

FLC – funkce LowerCase – v kódové stránce win-1250

FCAPS – funkce první písmenko velké, zbylá malá – v kódové stránce win-1250

NBSPBR – funkce nahradí mezery za &nbsp; a nové řádky za <br>

ESCAMP – funkce nahradí všechny & za &amp;

ESCBR – funkce odstraní všechny nové řádky

FDATE – úprava data na zvolený formát

FZKRAT:délka – funkce zkrátí text na požadovanou délku

PARSE – provede zpracování obsahu pole, jako kdyby jeho obsah byl součást původní šablony – lze využít např. pro generování dokumentů nebo e-mailů ze šablony

Další formátovací funkce je možné doplnit v modulu formatovani.pm.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 12: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

I.6 DOTAZYDotazy jsou uloženy v tabulce vr_dotazy a identifikují se pomocí pole fname (názvu stránky) a jména dotazu (atribut elid v html šabloně).

V poli sqltext a sqltext2 je vlastní SQL. Může obsahovat parametry ve formátu ? (náhrada je uvedena v poli sqlparams) nebo $parametr – náhrada se bere ze vstupních parametrů (hash contents) metody GET; případně uložených hodnot sessionu (relace) uživatele (hash UserData). Pokud je v dotazu nalezen výraz: @_([\w_])+ (něco, co začíná @_ a dále obsahuje písmenka a podtržítko), tak je považován za Snapshot, který je dohledán v tabulce vr_spnashot a následně nahrazen reálným názvem tabulky. V tabulce vr_snapshot se dohledává v poli DOTAZ a nahrazuje polem TABLENAME. Jako název snaphotu jsou brány znaky za @_.

Formát pole sqlparams:masterDotaz:pole;masterDotaz:pole@POLE:param;POLE;param

kde:

masterDotaz – název elid master dotazu

pole – název pole v rámci master dotazu

POLE – udává, ve kterém poli se má vyhledávat – typ stránky musí být sestava (R)

param – pole formuláře – vstupní parametr aplikace, který se má vyhledat v POLI. Aplikace vytvoří podmínku ve tvaru: POLE like 'param%'. To není vyhovují pro čísla, takže lze s výhodou použít konstrukci: MOJEPOLE=$_vstupniparam:_vstupníparam, z čehož aplikace vytvoří podmínku: MOJEPOLE=hodnota vstupního parametru (pokud je v POLI obsažen param ve tvaru proměnné $param, tak se použije syntaxe nadefinovaná v POLI). Aby to zafungovalo, tak musí být v dotazu na konci klausule WHERE proměnná $__najdi (např.: select * from automobily where id=1 $__nadi order by vyrobce; select * from automobily $__najdi)

sqlparams může obsahovat na místě masterDotaz:pole proměnnou, např.: $_trd:KOD, který bude při zpracovávání nahrazen. Parametry za @ jsou použity pouze pro vytvoření proměnné $__najdi. Pro master dotaz se náhrada parametru neprovádí.

sqlallwaysaddrow: pokud je zaškrtnuto (odpovídá hodnotě -1), tak je pro dotaz formuláře, který je detailem vždy přidán jeden řádek. Tzn. požadavek, že řádek objednávky musí mít vždy alespoň jeden řádek, tak ho tam rovnou po otevření formuláře zobrazte.

sqlorderby: pole, pomocí kterých lze třídit, jsou uvedena v definici dotazu v poli SQLOrderBy. Číslo pole je indexem do tohoto seznamu v poli SQLOrderBy s tím, že první má index 0. Aby to ceé zafungovalo, je nutné do dotazu vložit proměnnou $__orderby na místo, kde by jinak byla klausule ORDER BY. Příklad: cislo;nazev;datum_od;datum_do

sqlkeyval: pole;pole;… klíčová pole dotazu – pokud se jedná o detail dotaz, tak pro nový záznam budou pole uvedená v sqlkeyval vyplněna hodnotami z masterDotazu)

Formát pole sqlupdate (pro každý dotaz je uložen řetězec, který popisuje jednotlivá pole a jejich příslušnost k tabulce):

tabulka@klic;klic#pole:typ;pole:typ[:pole_formuláře];…;pole:typ[:pole_formuláře]&tabulka#pole:typ;…;pole:typ&…

Kde:

tabulka –fyzický název tabulky v db

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 13: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

klic – nepovinné (pokud není uvedeno, tak se předpokládá pole ID), jinak udává pole, podle kterých se identifikuje záznam při aktualizaci nebo vymazání záznamu

pole – název pole v tabulce (do kterého pole tabulky se bude ukládat)

pole formuláře – jak se jmenuje pole, které bylo vráceno v původním dotazu (provede se mapování, kde se řekne, že původní pole má být uloženo do pole)

typ – udává typ pole, tzn. jedná se o celé číslo (I), reálné číslo (F), řetězec (S), autoinkrement (A), datum (D), memo(M)

Pole DBName udává název datového zdroje (připojení)

Pole RecCount (počet záznamů dotazu) – udává, kolik záznamů z dotazu bude vráceno. Pokud je uvedena nula nebo je nevyplněno, tak jsou vráceny všechny záznamy dotazu.

Pole Typ – udává, zda-li se jedná o běžný dotaz nebo je výsledkem dotazu strom nebo se jedná o PivotTable (kontingenční tabulku), který je vnitřně jinak zpracován (pokud je dotaz typu strom, tak musí obsahovat pole ID, IDRODIC).

Pole SQLFilter – pokud je na stránce zaškrtnuto pole je filtr, budou záznamy v master dotazech filtrovány dle přístupového práva. Pokud je ale alespoň jeden dotaz na stránce ná zaškrtnuto pole SQLFilter, pak bude fitrlován pouze tento dotaz.

Pole SQLPages – pokud je na stránce použito stránkování, jsou stránkovány všechny master dotazy na stránce. Pokud je zaškrtnuto pole SQLPages alespoň u jednoho dotazu na stránce, je filtrován právě tento zaškrtnutý(é) dotaz(y).

I.7 SNAPSHOTYUmožňuje spouštět dotazy v definovaných intervalech. Motivace je taková, že se umožní výrazně snížit zátěže jiných systémů, ze kterých se budou data čerpat a zvýšení výkonu aplikace.

V tabulce vr_snapshot jsou uloženy definice snapshotů. Jsou to pojmenované dotazy, které jsou spouštěny v definovaných časech a jejich výsledek je fyzicky ukládán do tabulky. Pro zajištění funkce musí být periodicky spouštěn skript snapshot.pl (např. přidáním do crontabu: 0,15,30,45 * * * * /var/www/fcgi-bin/snapshot.pl). Význam polí v tabulce vr_snapshot:

DOTAZ – pojmenování snapshotu, který je dohledán při vložení do SQL Textu dotazu.

SPUSTET – kdy spouštět snapshot (QUATER HOUR DAY MONTH DAYOFWEEK)

TABLENAME – jména tabulky, do které je uložen výsledek snapshotu (dotazu daném SQLTEXT). Pokud není uvedena, je při prvním spuštění snapshotu automaticky vygenerováno jméno.

DBNAME – připojení na databázi z Jádro Připojení.

SQLTEXT – vlastní dotaz pro pořízení snapshotu (nelze parametrizovat).

PORADI – pořadí, ve kterém budou snapshoty spouštěny. Důležité zejména v okamžiku, kdy z výsledků několika jiných snapshotů vznikne jiný.

LASTRUN – datum a čas posledního spuštění snapshotu.

LASTRUN_DURATION – doba trvání (v sekundách) posledního spuštění snapshotu.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 14: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

I.7.1 SPOUŠTĚNÍ SNAPSHOTUSpoštění je podobné jako v crontabu s tím rozdílem, že se bude pouštět jednou za 15 minut. Tzn. nejmenší možný interval je 15 min. Na první pozici nebude min ale čtvrthodina, která nabýva hodnoty 0-3.

Je podporována syntaxe: */číslo – kolikrát se má spustit za nějaký interval. Např. na pozici měsíců */3 provede spuštění jednou za tři měsíce a to 1.,4.,7.,10. měsíc. Intervaly nejsou možné, je proto nutné vyjmenovat všechny údaje, kdy se má snapshot spouštět, např. pro hodiny: 7,8,9,10,14.

I.8 FUNKCEFunkce jsou uloženy v tabulce vr_stranky v poli funkce. Funkce jsou vyhodnocen při spuštění aplikace, takže jakákoliv změna se projeví až po restartování aplikace Verso.

I.9 LOV (SEZNAMY HODNOT)Vrácení hodnoty z LOV (hranaté závorky vyznačují, že parametr je nepovinný, tzn. do šablony se hranaté závorky neuvádějí):

#lov:název seznamu hodnot[(sqlkeyval)]##lov:název seznamu hodnot[:název_promenné]#

Dynamický číselník:

<input type=text name="idklic" id="lov:název seznamu hodnot[(sqlkeyval)]">Dynamický číselník nové generace:

<input type=text name="idklic" id="ulov:název seznamu hodnot[(sqlkeyval)]">

Dynamický číselník – návrat více hodnot:

<input type=text name=“idklic“ id=“lov:nsh“ lovparams=“<syntaxe popsána níže>“>

Statický číselník:

<select name="idklic" id="lov:název seznamu hodnot[(sqlkeyval)]"></select>

Check box:

<input type=checkbox name="anone" id="lov:název seznamu hodnot[(sqlkeyval)]">Volitelný parametr sqlkeyval udává klíčové pole obdobně jako je uvedeno níže. Při jeho použití přímo v šabloně je použit místo parametru uvedeného v definici LOV v jádru. Motivací tohoto zápisu je vytvoření jednoho LOV, který je možné vázat s různými poli bez potřeby definice nového LOV.

Místo parametru sqlkeyval je možné uvést i název proměnné, prostřednictvím které bude LOV svázán (dohledána honota).

Atribut lovparam má formát:

<I|T>:<nazev_inputu|id_textu>:<pole z dotazu>:<vychozi hodnota>;...

kde:

I – hodnotu zapsat do inputu (druhý parametr je název inputu)

T – hodnotu zapsat do innerHTML (druhý parametr je ID elementu)

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 15: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

Pole z dotazu – název pole, který vrací dotaz LOVu

Výchozí hodnota – hodnota, která má být zapsána, pokud uživatel nebyvere žádnou hodnotu z LOVu

Parametry číselníku jsou uloženy v tabulce vr_lov a to ve formátu:

nazev – název lov, kterým se odkazuji v html

sqltext – obsahuje pole LOV. pole hodnot se musí jmenovat ID a pole, které se zobrazuje POPIS

dbname – jméno definice datového zdroje (připojení)

sqlparams – stejné jako u dotazů

sqlkeyval – klíčové pole (cizí klíč)– kam vložit hodnotu z lov a podle čeho dohledat aktuální hodnotu

typ – D=dynamický, S=statický, C=checkbox

emptyval, emptytext – hodnoty, které se zobrazí při prázdném LOV, pro checkbox udává hodnotu pro zaškrtnuté a nezaškrtnuté pole

počet – počet záznamů na stránku dynamického číselníku

format – možnost změny výpisu, např: !_!popis!_! !_!jmeno!_! (!_!ns!_!)

další_pole – další sloupce, které mají být zobrazeny v dynamickém číselníku nové generace; oddělovačem je středník, příklad:

!_!jmeno!_!:C;!_!vek!_!:R;!_!prijmeni!_!;!_!titul!_!:L;…

je možné zadat zarovnání sloupce v tabulce (L – left, C – center, R – right).

další_pole_nadpis – nadpisy dalších sloupců

vyhledat – pole dotazu, ve kterých má být vyhledáno

vyhledat_názvy – nadpisy polí, které mají být zobrazeny pro pole pro vyhledání

výstup_sloupce – pokud je rovno 1 (je zaškrtnuto), jsou další sloupce zobrazeny

width – šířka okna s dynamickým číselníkem

height – výška okna s dynamickým číselníkem

filtr – do okna dynamického číselníku je možné přidat filtr záznamů, syntaxe pole:

název:část where klausule; název:část where klausule;…

například:

Platné:sysdate between dat_od and dat_do;Všechny:

I.10 DEFAULTNÍ HODNOTYV html šabloně je možné použít defaultní hodnoty pro proměnné nebo pro pole. Defaultní hodnota je do proměnné nebo pole zapsána jen v případě, že neexistuje nebo není definována.

Syntaxe:

<!--#def-val:proměnná=hodnota#-->

příklad: <!--#def-val:_rok=2000#-->

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 16: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

<!--#def-val:proměnná=&vnitřní funkce#-->

příklad: <!--#def-val:ttt=&now#-->

<!--#def-val:proměnná=výraz#-->

příklad: <!--#def-val:_rok=&year - 1#-->

příklad: <!--#def-val:ttt=&now + 3600#-->

<!--#def-val:elid:pole=výraz/hodnota/funkce#-->

příklad: <!--#def-val:pgsprac:xxx=&now + 86400 + $prom#-->

Jsou definovány vnitřní funkce pro datum a čas:

&year – vrací aktuální rok v podobě čísla RRRR.

&date – vrací aktuální datum ve formátu %d.%m.%Y

&now – vrací aktuální datum a čas ve formátu %d.%m.%Y %H:%M:%S

&time – vrací aktuální čas ve formátu %H:%M:%S

Pokud je použita výše uvedená funkce ve výrazu, tak přičtení 1 k funkci &year zvýší rok o 1, jinak o 1 sekundu. Např. výraz &now + 3600 vrátí aktuální čas plus jedna hodina.

Rozšíření o další funkce je možné v modulu parser.pm ve funkci defaultniHodnoty.

I.11 PODMÍNKY – VIDITELNOST POLOŽEKPodmínka obsahuje výraz, který může obsahovat proměnné a hodnoty polí elidu. Před každým vyhodnocením podmínky budou dosazeny aktuální hodnoty.

Například: <!--#podm-nazevpodminky-(!_!master:id!_!>=5 && !_!master:id!_!==59)#-->... <!--#podm-nazevpodminky-end#-->

I.12 TLAČÍTKA FORMULÁŘŮPro zpracování formulářů je nutné, aby stránka měla příznak F (formulář).

Potom lze na formulář umístit tlačítka (<input type=“submit“ name=“viz. níže“>):

Pro celý záznam:

_ulozit – uložení celého záznamu (dle definice v tab. vr_dotazy)

_ulozit_novy – právě zobrazený záznam uloží jako by byl znovu pořízen – umožní uživateli otevřít existující záznam, modifikovat a výsledné změny uložit jako nový záznam

_zrusit – obnovení hodnot formuláře (načtení původních hodnot z databáze bez uložení změn)

_vymazat – vymazání zobrazeného záznamu (včetně detail záznamů)

_vlastnik – u všech záznamů nastaví pole INS_KDO a INS_KDY na přihlášeného uživatele (ten ale musí mít přiděleno právo Vzít vlastnictví)

_reset – očekává nastavení value na hodnotu, která odpovídá názvu elidu, který má být znovu načten z databáze. Smysluplnné použití je pouze na formuláři u

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 17: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

nějakého detail záznamu (např. na základě délky trvání projektu vygeneruji příslušné záznamy o financování).

Pro jednotlivé detail záznamy:

#vymazat – pro vymazání detail záznamu

#pridat!elid – pro přidání detail záznamu (elid = název elid, kam se má přidat – jinak to nefunguje)

I.13 STRÁNKA, KTERÁ NÁSLEDUJE PO ULOŽENÍ (V TAB. VR_STRANKY)

---new_loc=název stránky pokud je v poli stránka po uložení obsažena tato syntaxe, tak je zobrazeno standardní okno po uložení záznamu (Záznam byl uložen) a následující stránka je právě ta název stránky, která je dohledána v tab. vr_stranky

I.14 SPECIÁLNÍ PROMĚNNÉ__USER__ – parametr, který udává, pod jakým uživatelským jménem v rámci systému vystupuje uživatel (lze s výhodou použít ve funkcích nebo dotazech)

__USER_AUTH__ - parametr, který udává uživatelské jméno, pod jakým byl uživatel skutečně příhlášen (je možné delegovat své oprávnění na jiného uživatele, v tom případě v __USER_AUTH__ je zachována informace o původně přihlášeném uživateli, v __USER__ je uživatel, za kterého v aplikaci vystupuji)

__IDSESS__ – parametr, který udává číslo (char(16)) sessionu uživatele, lze použít pro zjištění záznamů sessionu z tabulek: vr_sessions, vr_sessdata, vr_sess_casrada, vr_sessrole (v poslední jsou uloženy role, na které má uživatel právo); např. select ROLENAME from vr_sessrole where id=‘$__IDSESS__‘, čímž získám role, která má uživatel relace.

__ANON__ – parametr udává, že přihlášený uživatel je anonymní (=1), pro přihlášeného uživatele = 0. Využití např. v podmínce <!--#podm-jeanon-(::‘$__ANON__‘ eq ‘1‘)#-->

SCRIPT_NAME – dosadí do HTML nebo dotazu cestu ke skriptu, který byl volán (je velice výhodné, protože pak je možné přejmenovat aplikaci a vše bude fungovat – není to natvrdo zapsáno v šabloně nebo dotazu).

REQUEST_URI – obsahuje URI, s jakým byla aplikace zavolána

__EXP_BUTTONS__ - umístí na stránku tlačítka pro export (nadefinováno v souboru params.pm ve funkci nastavVychoziHodnotyPromennych)

Dále jsou uvedeny proměnné, které jsou také nastaveny, ale nedoporučujeme jejich další používání:

__dotazsql – pro ladění je v proměnné obsažen vygenerovaný SQL.

cisloRadku – pořadové číslo záznamu v rámci dotazu (elid) (číslováno od nuly, tedy index)

__cisloZaznamu – počet záznamů (řádků), které vrací elid

__sudy – vrací 1, pokud se jedná o suchý řádek, jinak 0

__lichy – vrací 1, pokud se jedná o lichý řádek, jinak 0

__pg – číslo aktuální stránky

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 18: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

__recCnt – počet záznamů

__pgSize – počet záznamů na stránku

__strankovani – vloží na stránku odkaz na další, předchozí stránku (pro TYP=sestava [R])

__strankovani_pages – vloží na stránku odkaz na další, předchozí a jednotlivé stránky (pro TYP=sestava [R])

I.15 UKÁZKY FORMÁTU FUNKCÍ V TAB. VR_STRANKY A VR_DOTAZY

Funkce v tabulce vr_stranky (zde jich muze byt i vice):sub s_orgprac_pozice { my ($dbh,$dot) = @_; $UserData{__sorgtree_id} = $dotazy{$dot}{ID}; delete $UserData{__sorgprac_idrodic} if exists $UserData{__sorgprac_idrodic}; return '';}

I.16 FUNKCE V TABULCE VR_DOTAZY (ZDE JE VŽDY JEDNA FUNKCE):

Fnrow (provede se vždy před náhradou parametrů každého řádku dotazu):my ($pole, $dotaz, $level, $jeRCache, $dbh) = @_; $UserData{__sbudovy_id} = $dotazy{$dot}{ID}; return 0;

Fnafter (provede se pokaždé po uložení jednoho řádku dotazu):my ($dbh,$pole,$status) = @_; if ($status eq 'ins') { $UserData{__sbudovy_id} = $pole->{pole}{ID}; } if ($status eq 'del') { delete $UserData{__sbudovy_id} if exists $UserData{__sbudovy_id}; } return '';

Fnbefore (provede se pokaždé před uložením jednoho řádku dotazu):Syntaxe obdobná jako u fnafter

I.17 PROMĚNNÉ, KTERÉ MAJÍ FUNKCE K DISPOZICI:$dbh – handle připojení k databázi

%contents – hash s předanými parametry aplikaci metodou GET

%UserData – hash s parametry, které si aplikace pro každé relaci (připojeného uživatele) pamatuje. Tzn. pokud si tam budu nastavovat, co všechno bylo objednáno, tak pak na zmačknutí tlačítka objednat je možné vystavit objednávku.

%vstup – hash s parametry získanými z metody POST

$dotazy – hash, který obsahuje data dotazů, které jsou zrovna zpracovávány

$elid – název zpracovávaného dotazu

$pole – odkaz do vnitřní cache se záznamy

$status – stav ukládaného záznamu: ins, mod, del (nový, změněn, vymazán)

I.18 PŘÍSTUPOVÁ PRÁVAPřístupové právo pro jednotlivou stránku aplikace lze nastavit na hodnotu:

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 19: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

Není – není právo na stránku

Číst – je právo na zobrazení hodnot stránky, nelze ale uložit

Přidat – lze přidat nový záznam a lze ho také uložit (jde také ukládat (opravovat) „vlastní záznamy“)

Opravit – lze uložit provedené změny, nelze přidat záznam

Přidat+Opravit – lze přidat záznam i opravovat

Vymazat (Vše) – lze přidat, opravit i vymazat záznam

Na vlastní záznam má vždy uživatel právo Vymazat (tzn. může s ním dělat vše – ukládat, mazat), pokud má jiné právo než Není nebo Číst.

I.19 FILTROVÁNÍ PŘÍSTUPOVÝCH PRÁVPokud záznam nesplní podmínku filtru, tak je přístupové právo změněno na Číst (musí mít přistup, pro právo=není se nic nemění a pořád není přístup)

Filtry:Svoje – vyhoví záznam, který přidal přihlášený uživatel (je jeho vlastník)

Pracoviště – pouze svoje a ty záznamy, které jsou ze stejného pracoviště jako uživatele (vlastník je ze stejného pracoviště)

Vše od úrovně pracoviště – pokud je pracoviště vlastníka záznamu obsaženo ve struktuře organizace přihlášeného uživatele (ten musí mít přidělen vstupní bod do struktury organizace, odkud probíhá prohledání stromu)

Všechny – práva se nefiltrují

Dle funkce – je možné napsat vlastní logiku filtrování přístupových práv – viz soubor pravofiltr.pm, funkce pravoDleFunkce.

Ve filtrech, kde je kontrolováno pracoviště, se toto nejprve zjišťuje ze záznamu. Pokud tedy záznam obsahuje pole IDPRAC, tak je právo odvozeno od tohoto pracoviště. Pokud pole není, tak je odvozeno od vlastníka záznamu (záznam pracovišti může vložit třeba správce a on ho má nějak upravit) – možná se upraví, že se v tab. vr_dotazy specifikuje, které pole udává pracoviště.

I.20 STAHOVÁNÍ SOUBORŮSoubory jsou ukládány do tabulky vr_fileman. Pro stažení souboru je potřeba zavolat: $SCRIPT_NAME?fname=dload&idfile=cislo kde cislo udává hodnotu pole ID v tabulce vr_fileman. V tabulce vr_fileman jsou pole SOUBOR, SOUBOR_ORIG, do kterých se ukládá název souboru na serveru resp. originální název souboru. Pro natažení souboru na server je potřeba do formuláře, který zapisuje data do tabulky vr_fileman umístit tag: <input type=“file“ name=“soubor“> (např. stránka fm_soubory_det), který již zajistí upload souboru na server a uložení do pole SOUBOR jméno souboru na serveru (i s cestou) a také do pole SOUBOR_ORIG jméno souboru, který vložil uživatel (bez cesty). Souboru jsou na serveru ukládány do adresáře, který je uveden v konfiguračním souboru params v parametru writefiles. Limit pro velikost souboru se nastavuje v konfiguračním souboru params parametrem maxfilesize – výchozí velikost je 2000000B.

Přístupová práva k souborům jsou řízena uloženou procedurou (funkcí) FM_PRAVA.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 20: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

I.21 KONTROLY NA STRANĚ SERVERUNa straně serveru se provádí kontrola proměnných, které jsou poslány. Kontroly se zapisují jako skript do pole kontroly v Jádro Stránky (tabulka vr_stranky, pole kontroly). Každá kontrola je zadávána na samostatný řádek. V pořadí, ve kterém jsou kontroly uvedeny, jsou zpracovány. Pokud je zjištěna nějaká chyba, je vypsána buď až na konci skriptu, nebo při výskytu klíčového slova stop;.

Jednotlivé kontroly:

Param – kontrola parametrů poslaných stránceparam;jméno_parametru;datový_typ;povinný;textový_popis_parametru

Fld – kontrola polí záznamů formulářů – kontrola se provede pouze před uložením záznamufld;elid:pole;typ;povinný;textový_popis_pole

Testtest;podmínka;text_který_se zobrazí_při_nesplnění_podmínky

Evaleval;výraz;cíl_pro_uložení_hodnoty_výrazu

Stopstop;

datové typyw – word, i – integer, f – float, e – email, d – datum, t – čas, dt – datum a čas

povinnér – povinné, cokoliv jiného znamená nepovinné

funkce v podmínce nebo výrazu (pozor, Case sensitivní)int, round, split, join, sprintf, printf, mktime, strftime, localtime, defined, DateToISO – převede datum na řetězec YYYYMMDD, který lze porovnat jako řetezec, DateTimeToISO – převede datum a čas na řetězec YYYYMMDD HH:MM:SS, který lze porovnat jako řetězec.

Funkce lze doplnit v souboru kontroly.pm ve funkci VersoFuncValue.

Pokud je kontrolován datový typ datum, čas nebo datum a čas, je povolena o i částečné zadání údaje, které je doplněno aktuální hodnotou data, u času nulami. Například, při zadání hodnoty 13 do pole, kde je kontrola na datový typ datum, bude výsledné datum doplněno na 13.aktuální_měsíc.aktuální_rok – 13.03.2005.U kontroly typu test a eval je omezení na obsah polí z databáze, která musí být vždy z jednoho dotazu (záznamu).Příklad – kontrola polí formuláře:fld;master:dat_dod;d;r;Datum dodánífld;master:dat_vys;d;r;Datum vystavenístop;eval;!_!master:cena_bez_dph!_! * 1.19;master:cena_s_dphtest;DateToISO('!_!master:dat_vys!_!') <= DateToISO('!_!master:dat_dod!_!');Datum vystavení musí být menší než datum dodání - nejprve musím objednávku vystavit, pak je možné dodat.

Příklad – kontrola parametrů filtru:param;_id;i;n;Čísloparam;_hobjidno;i;n;iFIS čísloparam;_vys_od;d;n;Vystavení odparam;_vys_do;d;n;Vystavení doparam;_dod_od;d;n;Dodání odparam;_dod_do;d;n;Dodání do

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 21: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

I.22 KONTROLY NA STRANĚ KLIENTA - JAVASCRIPTNa straně klienta jsou automaticky prováděny kontroly pro formuláře, kde je možné odvodit typy polí, jejich délky a povinnost vyplnění přímo z databáze. Je pro každé pole vygenerován JavaScript, který každé pole při jeho opuštění kontroluje. Při samotném uložení formuláře skript uživateli neumožní uložit formulář, pokud nejsou pole správně vyplněna.

Tato funkcionalita může být na obtíž v některých speciálních úlohách a je možné je vypnout v Jádro Stránky – vypni kontroly JS (tabulka vr_stranky, pole vypni_kontroly, musí nabývat hodnoty -1).

I.23 DĚDĚNÍ VLASTNOSTÍ ŠABLONJe možné vytvořit novou šablonu, která nemá nic vyplněno, vyjma pole zalozena_za (tabulka vr_stranky), které pak řekne, že všechny vlastnosti šablony mají být shodné s tou, na základě které je založena. Pakliže je nějaký atribut vyplněn, tak má přednost před původní. V poli parametry jsou uvedeny parametry jako pro metodu GET (to co je uvedeno v URL za ?) a jsou pro stránku vždy nastaveny bez ohledu na to, co je na vstupu. Lze takto vytvořit jednu stránku, která má několik částí, které jsou rozlišeny hodnotou parametru. A ke každé této části je potřeba nastavit přístupové právo. Příkladem může být stránka per_Z4 v MIS.

I.24 VÝSTUP ŠABLONY DO MS EXCELPro výstup do MS Excel je v obecném případě změnit hlavičku, která je předána zpět prohlížeči.

V praktické rovině to znamená do souboru params doplnit:contentType=msexcel:application/vnd.ms-excela stránku zavolat s parametrem __cntext__=msexcel.Do HTML šablony doplnit například:<!--#podm-tlac-('$__cntext__' eq '')#-->

<div style="position:absolute;right: 16pt"><a href="$REQUEST_URI&__cntext__=msexcel" title="Otevřít v MS Excel"><img alt="Otevřít v MS Excel" border=0 height=16 hspace=1 src="/images/xls.gif"

vspace=1 width=16></a></div>

<!--#podm-tlac-end#-->V příkladu je zajímavé použití proměnné REQUEST_URI, kde je uloženo URI, aneb jak byla aplikace zavolána – řádek adresa z prohlížeče.

I.25 VÝSTUP DAT DO JAKÉKOLIV APLIKACEPakliže je zapotřebí, aby nějaká jiná aplikace zpracovala data, která jsou vygenerována z Verso, stačí na straně Verso nadefinovat v souboru params správnou hlavičku s content-typem pro lokální aplikaci. Na lokální stanici musí být s tímto typem svázána aplikace, která má data zpracovat. Verso například vrácí data v XML a lokální aplikace je dále zpracuje (třeba zalomí pro tisk).

Jedná se o zobecnění výše popsaného výstupu do MS Excel.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 22: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

I.26 DEFINICE GRAFŮPro definici grafu se používají funkce grafinit, grafparam, graflegenda, grafhodnota. Pro zobrazení grafu: <img src="$SCRIPT_NAME?fname=graf&name=nazev_grafu">.

Pakliže je přidán parametr lib=gd, bude graf vykreslen pomocí knihovny GD::Graph. Jinak pomocí knihovny Charts.

Příklad:

<img src="$SCRIPT_NAME?fname=graf&name=nazev_grafu&lib=gd">

Bližší popis včetně příkladů je uveden v manuálu Verso.

I.27 DEFINICE KONTINGENČNÍCH TABULEK pt_show – když není n nebo 0, tak je zobrazen

pt

o rotate (<td pt=rotate pt_show=n></td> - budou zaměněny slouce a řádky, musí být uvedeno jako první v definici kontingenční tabulky)

o dim_r

o dim_s

o dim_o

o total_s

o total_r

o total_dim_r

o total_dim_s

o total_dim_r_op

o total_dim_s_op

o title – levý hodní roh tabulky

Bližší popis i s ukázkami je uveden v manuálu Verso.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 23: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

II PŘIHLÁŠENÍ/ODHLÁŠENÍ UŽIVATELE

II.1 PŘIHLÁŠENÍPřihlášení uživatele je realizováno buď tak, že je neplněna proměnná prostředí ENV, která je dána parametrem uvodniStr v souboru params (např. FastCGI aplikace je v režimu AUTHORIZER).

Druhou možností je vytvoření vlastního mechanizmu pro přihlášení uživatele, které se provede pomocí formuláře:

<form action="$SCRIPT_NAME" method="post"><input type=hidden name=fname value="$fname"><table>

<tr><td>Uživatel:</td><td><input type="text" name="xlogin"></td>

</tr><tr>

<td>Heslo:</td><td><input type="Password" name="xpasswd"></td>

</tr><tr>

<td colspan="2"><input type="submit" Value="Přihlásit"></td></tr>

</table></form>

kde jsou důležité parametry xlogin a xpasswd. Stránka, které je požadavek na přihlášení zaslán, musí být uvedená v konfiguračním souboru params v parametru loginStr.

Popsat, že Verso automaticky nabídne uživateli login, pokud je pro stránku potřeba – funguje pouze s metodou GET.

II.2 ODHLÁŠENÍ UŽIVATELEPro odhlášení uživatele je možné použít následující linky (anchor):

$SCRIPT_NAME?fname=logout

$SCRIPT_NAME?fname=logout&__login=jméno_login_stránky

První varianta přesměruje uživatele zpět na stránku uvedenou v souboru params v parametru uvodniStr. Ve druhé variantě je explicitně řečeno, která stránka má následovat po odhlášení uživatele.

II.3 OVĚŘOVÁNÍ PROTI EXTERNÍ AUTORITĚ – LDAPKonfigurace ověření identity uživatele proti externí identitě je v souboru overheslo.pm. V současné době jsou implementovány mechanismy ověření proti: LDAP, Novell, Radius, různá proprietární řešení (lze například ověřit proti Oracle).

V modulu je jen jedna funkce, která vrací hodnoty: 0 – nebylo možné identitu ověřit a ověření proběhne prostředky Verso, 1 – uživatel ověřen, 2 – zadána špatná kombinace uživatel/heslo.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 24: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

III PŘÍSTUPOVÁ PRÁVA

Přístupová práva jsou řešena na úrovni aplikace Verso. Každá stránka (vr_stranky) má přiděleno alespoň jedno právo (s_prava). Práva jsou přidělena rolím (s_role) s určením oprávnění (s_pravarole.pravo – není, číst, …, vše) a filtru (s_pravarole.filtr – svoje, pracoviště, dle struktury, vše, dle funkce). Role mohou být složeny s jiných rolí (s_role_skup). Uživateli (s_userdb) je pak přidělena role (s_userrole) na nějakém pracovišti (s_prac).

VR_STRANKY – seznam stránek.

S_PRAVA – seznam práv.

S_PRAVAROLE – přiřazení práva roli.

S_ROLE – seznam rolí.

S_ROLE_SKUP – složení role z jiných rolí.

S_USERROLE – přiřazení role uživateli na nějakém pracovišti.

S_USERDB – seznam uživatelů. Pokud jsou uživatelé ověřováni proti externí autoritě, musí zde mít také záznam.

S_LIDE – seznam reálných osob.

S_LIDEPRAC – přiřazení osoby na pracoviště.

S_PRAC – seznam pracovišť.

S_ORGPRAC – začlenění pracoviště do struktury organizace.

S_ORGANIZACE – struktura organizace (většinou bývá 1:1 k S_PRAC).

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 25: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

S_ORGRETEZ – pomocná struktura, kde je ke každému uzlu organizace seznam podřízených uzlů organizace.

S_NABROLE – přiřazení nabídky roli.

S_NABIDKY – seznam jednotlivých nabídek.

III.1 VYHODNOCENÍ PŘÍSTUPOVÝCH PRÁVPo přihlášení uživatele se naplní tabulka vr_sessrole, kde je uveden seznam všech rolí, které má uživatel k dispozici platných, pro danou relaci. Další vyhodnocení práv se provádí voláním funkcí, které jsou v souboru pravofiltr.pm. Pakliže je možné získat různá práva, uživatel získá maximální možné právo.

Jednotlivé funkce, která vyhodnocují práva:zjistiPrava – pro danou stránku zjisté všechna práva, která má uživatel nadefinován s tím, že naplni proměnné, kde je nejvyšší možné právo (ve skutečnosti ho uživatel ani mít nemusí, pakliže je omezení dle filtru).

– parametry: připojení k databázi, ID SESSION (číslo relace), jméno stránky (v globální proměnné fname).

– nastavuje proměnné:

o sysPravo, sysFiltr, sysVlastnik – maximální práva pro danou stránku,

o výčet ve všemi právy pro danou stránku.pravoDleFiltru – pro danou stránku pro každý master dotaz zjistí, dali uživatel má na záznam právo dle filtru (svoje, pracoviště, dle struktury, dle funkce).

- parametry: poleref (odkaz na referenci s aktuálním záznamem), připojení k databázi, jméno stránky, vnitřní proměnné naplněné ve funkci zjistiPrava,

- Vrací číslo práva, které uživatel má pro daný záznam (0=není právo, …, 6=vše).pravoDleFunkce – vlastní implementace filtru práva a vrací hodnotu práva jako funkce pravoDleFiltru. Funkci lze s výhodou využít všude tam, kde je potřeba odvodit přístupové právo např. k souborům dle toho, zda-li je přihlášený uživatel uveden mezi řešiteli grantu, ke kterému se soubory váží.

- parametry: poleref, připojení k databázi, jméno stránky,- vrací hodnotu práva, které má uživatel.

III.2 PRINCIP VYHODNOCENÍ PRÁVAPakliže má uživatel prostřednictvím role alespoň nějaké právo, je následně vyhodnocena hodnota Fitru, je-li:

1. Dle Funkce – ve vyhodnocení předáno funkci, která vrátí právo,2. Všechny – je právo hned vráceno, protože platí pro všechny záznamy,3. Dle organizace – je v dotazu nalezeno pole IDPRAC, pokud není tak

KODORG, pak IDLIDE, pak INS_KDO. Z nalezeného pole je odvozeno pracoviště, na které záznam patří a porovnáno s výčtem pracovišť, ke kterému je vázáno právo. Pokud je průnik, je právo přiděleno.

4. Dle Pracoviště – v dotazu je nalezeno pole IDPRAC, IDLIDE, INS_KDO. Z nalezeného pole je odvozeno pracoviště a následně porovnáno, zda-li se rovná s tím, které je uvedené u přiřazení role. Pokud ano, uživatel získá právo.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 26: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

5. Svoje – v dotazu se nejprve hledá pole IDLIDE, pak INS_KDO. Pokud hodnota pole odpovídá přihlášenému uživateli, získá právo.

Od bodu 3-5 je filtr vyhodnocován sekvenčně. Pokud není přiděleno právo dle bodu 3, přechází se na bod 4, když ani tam, přechází se na bod 5.

Pokud chci zajistit, aby uživatel měl právo na záznam dle filtru vždy, přidáme do dotazu pole: select něco, neco2, '$__USER__' INS_KDO from …

III.3 UŽITEČNÉZajištění, aby uživatel měl právo dle filtru vždy:

Pokud chci zajistit, aby uživatel měl právo na záznam dle filtru vždy, přidáme do dotazu pole: select něco, neco2, '$__USER__' INS_KDO from …

Pokud je hodnota pole VR_STRANKY.JE_FILTR- =-1, jsou master záznamy na stránce filtrovány – pro každý je zavolána

funkce pravoDleFiltru. Pokud je právo alespoň 1, bude uživateli záznam zobrazen,

- jinak, nemá na vyhodnocení práva vliv.

Pokud je hodnota pole S_ROLE.JE_PRIHLASEN- =-1, je role automaticky přidělena každému přihlášenému uživateli,- jinak, nemá vliv na přidělení role.

Pokud je hodnota pole S_ROLE.JE_VYCHOZI- =-1, je role automaticky přidělena všem uživatelům i anonymnímu,- jinak, nemá vliv na přidělení role.

Pokud pole S_ROLE.IPACCESS obsahuje nějaký text, má se za to, že to je výčet IP adres oddělených mezerou, ze kterých, když uživatel přistoupí, získá roli. IP adresy lze zadávat i rozsahem.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 27: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

IV CHYBOVÁ HLÁŠENÍ

Kód Int. kód

Zpět Popis

001 Ne Ne Není zadán název formuláře.

002 Ne Ne Požadovaný formulář neexistuje.

003 Ano Ano Nepodařilo se záznam(y) uložit.

004 Ano Ano Nepodařilo se provést vymazání záznamu(ů).

005 Ne Ne Neoprávněný pokus o vyplnění formuláře z jiné aplikace.

006 Ne Ne Změněná IP adresa. Musí se znovu spustit prohlížeč.

403 Ne Ne Není oprávnění pro stránku. Kontaktujte správce systému.

403.1 Ne Ne Uživatel nemá přidělenu žádnou roli. Kontaktujte správce systému.

403.2 Ne Ne Není oprávnění pro změnu záznamu. Kontaktujte správce systému.

403.3 Ne Ne Není oprávnění pro uložení. Kontaktujte správce systému.

403.4 Ne Ne Není oprávnění pro vymazání. Kontaktujte správce systému.

403.5 Ne Ne Není oprávnění pro změnu vlastníka. Kontaktujte správce systému.

403.6 Ne Ne Není oprávnění pro změnu záznamu. Kontaktujte správce systému.

404 Ne Ne Stránku nelze najít.

405 Ano Ne Nelze vygenerovat stránku.

406 Ne Ne Nelze odeslat e-mail. Nesprávný odkaz na stránky.

407 Ne Ne Internal Timeout – chyba se objeví po uplynutí času, který je přidělen aplikaci pro řádný běh – za tu dobu musí vygenerovat výstup.

451.1 Ne Ne Kontrola polí na straně serveru Verso

451.2 Ne Ne Kontrola polí na straně serveru Verso před uložením záznamu

999 Ne Ne Nepodařilo se načíst šablony. (Při načítání definice stránek ze zálohy)

Interní kód – do hlášení vstupují nativní chybové kódy od databázového serveru

Zpět – v chybovém hlášení se objeví nápis zpět – došlo k chybě při ukládání záznamu a uživatel musí mít možnost vrátit se zpět, aby mohl opravit záznam (tlačítkem Zpět v IE to nebude vždy správně fungovat, proto nápis).

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 28: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

Šablona chyby, která popisuje chybové hlášení, obsahuje parametry:

!_!cislo!_! – kód chybového hlášení (viz tabulka)

!_!popis!_! – popis chybového hlášení (viz tabulka)

!_!intkod!_! – nativní kód chyby databázového serveru

!_!intpopis!_! – popis chyby tak, jak ji „vidí“ databázový server

!_!zpet!_! – místo, kam bude vygenerován odkaz Zpět

IV.1 SPRÁVA CHYBOVÝCH HLÁŠENÍSpráva je rozdělena do tří úrovní. První je výchozí chybová zpráva, která bude zobrazena, pokud není nadefinována globální ani lokální chybová zpráva.

Pokud dojde ke zobrazení chybového hlášení, postupuje se tak, že nejprve se vyhodnotí existence lokální chybové zprávy, když neexistuje, tak se hledá globální, pokud neexistuje, tak se zobrazí interní.

IV.2 GLOBÁLNÍ SPRÁVA CHYBOVÝCH HLÁŠENÍGlobální chybová správa chybových hlášení slouží pro ošetření jednotlivých výše uvedených chybových hlášení. Obsahuje povinně buď interní kód chyby (nativní od databáze) nebo kód chyby (Verso). Dále pak odkaz na soubor se šablonou chyby.

IV.3 LOKÁLNÍ SPRÁVA CHYBOVÝCH HLÁŠENÍObdobně jako globální, ale je možné pro jednotlivé:

1. šablony nastavovat vlastní chybovou zprávu

2. dotazy nastavovat vlastní chybovou zprávu

Tímto lze dosáhnout velice efektivního ošetření a zobrazení uživateli možné příčiny chyby, např. při duplicitním zadání záznamu do tabulky xyz (mohu uživateli detailně popsat, co udělal špatně a ne pouze povrchně).

IV.4 OVLÁDÁNÍ SPRÁVY CHYBOVÝCH ZPRÁVPři definici chybové zprávy zadávám kód nebo interní kód zprávy. Následně vyberu i patřičnou šablonu zprávy (myslím, napíšu do pole cestu k souboru se šablonou). Poté určím, zda-li se jedná o globální nebo lokální zprávu. Pokud je globální uložím. Pokud je lokální, zobrazí se mi možnost výběru šablony, ke které se má chybové hlášení navázat. Také je mi zobrazena možnost výběru dotazu, ke kterému bude chybové hlášení navázáno. Lokální přiřadit chybovou zprávu mohu k vícero stránkám.

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 29: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

V OSTATNÍ

V.1 DEFINICE PŘIPOJENÍ K DATABÁZI (DATOVÉMU ZDROJI)V rámci Verso je možné nadefinovat připojení k různým datovým zdrojům. Jediné omezení je existence DBD (DataBase Driver), které jsou dostupné z http://www.cpan.org/modules/by-module/DBD/.

Parametry:

Název – dále v aplikaci jmenován jako DBName

Připojení – řetězec pro připojeni k datovému zdroji. Jeho podoba je dána použitým DBD. Syntaxe je stejná jako u metody $dbh->connect() ve zvoleném DBD.

Uživatel a heslo pro připojení k datovému zdroji.

Skript – skript, který bude spuštěn před každým dotazem – umožňuje nastavit proměnné na straně serveru (např. v package). Oddělovačem je lomítko (/)

Příklady řetězců pro připojení:DBI:Sybase:server=SYBASE;database=obdDBI:Oracle:DEMOFIS.BBM.CZdbi:Oracle:stag2dbi:Informix:jmeno_databaze

V.2 ČÍSELNÍKY VE VERSO (DOMÉNY)V rámci Verso je možné využít jednoduché číselníky, které obsahují hodnotu a její textový popis. Definice číselníků je přístupná z Jádra. Použití je v seznamech hodnot (LOV), kde se použije v poli SQL Text dotaz: select cisval as ID,cistext as POPIS from vr_cisdata where name='název číselníku'.

V.3 ČASOVÉ ŘADYFunkce (stored procedura) VR_CASRADA systému VERSO, která generuje časové řady dle zvolených parametrů. Při volání funkce je nutné použít následující parametry: __IDSESS__, OBDOBI, ROK OD, ROK DO, A/N (kumulovaně). Kde: __IDSESS__ je proměnná identifikace uživatele – vlastní časové řady, OBDOBI udává typ časové řady (pololetí, čtvrtletí, měsíce), ROK OD a ROK DO jsou hranicemi intervalu časové řady a přepínač A/N slouží pro zapnutí či vypnutí kumulování. Funkci je možné zavolat přímo z Jádra stránky, kde se uloží jako samo-statný dotaz v zápisu:select execute VR_CASRADA ('$__IDSESS__','Y','2002','2004')

V.4 SPUŠTĚNÍ VERSO Z PŘÍKAZOVÉ ŘÁDKYverso.fpl <fname> <uživatel> <parametry>

Příklady volání:

Verso.fpl web_index

Verso.fpl web_index install

Verso.fpl web_index install id=1&typ=abc

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 30: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

V.5 PŘEDÁVÁNÍ PARAMETRŮ VERSOZákladní možnost, jak předat parametry versu jsou metodou GET, například:

http://localhost/fcgi/verso.fpl?fname=test&id=1&typ=abc&ta=01

další možností je, uvést parametry přímo do cesty:

http://localhost/fcgi/verso.fpl/fname/test/id/1?typ=abc&ta=01

V.6 ZÁKLADNÍ POŽADAVKY NA ŠABLONYVerso provádí rozklad vstupní šablony html do stromu a ze stromu zpět do html. Pokud šablona nesplňuje požadavky w3c (http://validator.w3.org/) Doctype HTML 4.01 Transitional, tak může dojít k nesprávné interpretaci a tím i nesprávným výsledkům.

Druhým požadavkem je, aby v grafickém návrhu byl pouze jeden řádek, který se má opakovat (generovat z databáze).

V.7 OVLÁDÁNÍ Z KLÁVESNICEDo souboru /scripts/vrfunkce.js byla doplněna funkcionalita, která umožňuje vyvolat některé funkce pomocí horkých kláves:

F2 – vyvolá číselník

Alt+číslo – přepne třídění dle pořadí sloupce

pageUp, pageDown – posunutí na další stránku ve stránkovaném seznamu

alt+pageUp, alt+pageDown – posunutí na první/poslední stránku ve stránkovaném seznamu

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 31: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

VI POZNÁMKY

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Page 32: zcu.czhome.zcu.cz/~grigar/verso/VERSO-pruvodce_vyvojare_2009.doc · Web viewKontroly na straně serveru 20 I.22 Kontroly na straně klienta - JavaScript 21 I.23 Dědění vlastností

VERSO – Průvodce vývojáře

Copyright © 1999 - 2009 DERS s.r.o. WWW.DERS.CZ

Copyright © 1999 - 2009 DERS s.r.o.

WWW.DERS.CZ