Pravidla pro psaní hp stránek
Copyright (c) 2000 Mirek Janata
Co je hp stránka
hp (hyper page)
, je speciální šablona dynamické stránky v HTML formátu propojená s X modulem. Logicky se dělí na dvě části:
HTML zdroj
X zdroj
Jak HTML zdroj, tak X zdroj může pracovat s parametry příkazu, který stránku vyvolal. HTML zdroj může adresovat a tedy vyvolávat
exportované funkce v X modulu, a tyto funkce naopak mohou generovat HTML kód, který v hotovém HTML nahrazuje odkazy na tyto funkce.
Příklad:
Následující kód vytvoří stránku, která z databáze přečte jména a příjmení zaměstnanců a vypíše je v tabulce:
HTML zdroj
<HTML>
<BODY>
<xcall:Init>
{tady se volá funkce Init() připojeného X modulu}
<H4>Hello!</H4>
<TABLE>
<TR><TD>Jméno</TD><TD>Příjmení</TD></TR>
<xcall:writeTable>{tady se volá funkce writeTable() připojeného X modulu}
</TABLE>
</BODY>
</HTML>
X zdroj
variables
{
// deklarace kurzoru
long cur
}
export long Init()
{
// přihlásit kurzor k databázi
xsqlconn( cur )
}
export long writeTable()
{
long nRes
string JMENO, PRIJMENI
// zkompilovat a spustit SQL query
xsqlprepandexec( cur, 'SELECT JMENO, PRIJMENI FROM ZAMESTNANCI' )
// inicializovat fetch buffer
xsqlinto( cur )
// cist data
xsqlfetchnext( cur, nRes )
while! ( nRes )
// precist hodnoty sloupcu
xsqlgetstr( cur, 1, JMENO )
xsqlgetstr( cur, 2, PRIJMENI )
// zformatovat a odeslat ( 1 řádek HTML tabulky se dvěma buňkami )
xwebout( '<TR><TD>' $ JMENO $ '</TD><TD>' $ PRIJMENI $ '</TD></TR>' )
// dalsi radek
xsqlfetchnext( cur, nRes )
// otestovat, zda klient neresetoval spojeni
if! ( nRes )
xquiton( nRes )
end
end
}
Rozšířená syntaxe
HTML zdroj
může kdekoli obsahovat následující metasymboly:
_app_ je nahrazen jménem aplikace
_home_ je nahrazen domovským URL
_login_ je nahrazen identifikací uživatele. Používá se především v odkazech na další stránky, aby byla zachována identifikace uživatele.
<xcall:jmeno_X_funkce> je při kompilaci nahrazen exportním identifikátorem funkce, při spuštění stránky je nahrazen daty, které funkce odešle klientovi voláním operátoru xwebout( <text> ). Tento operátor může být samozřejmě volán opakovaně anebo nemusí být volán vůbec.
může se kdekoli odvolávat na parametry příkazové řádky symbolem
@@(<jméno parametru>), který je nahrazen jeho hodnotou
může se kdekoli odvolávat na backend pojmenované řetězce a parametry symbolem
@@STR(<jméno parametru>), který je nahrazen jeho hodnotou
@@DB(<jméno parametru>), který je nahrazen hodnotou parametru specifickou pro připojenou databázi.
Přístup k parametrům a pojmenovaným řetězcům z X modulu
X zdroj
operátor xappname( <string > ) zapíše do zadané string proměnné jméno aplikace [ obdoba metasymbolu _app_ v HTML zdroji ]
operátor xwebparam( <string_variable>, '<jméno parametru>' ) přečte hodnotu jmenovaného parametru z příkazove řádky do zadané string proměnné [ obdoba metasymbolu @@(...) v HTML zdroji ]
operátor xwebloginstr( <string_variable> ) vytvoří řetězec s login-id ve formátu pro příkazový řádek. Používá se při dynamické konstrukci odkazů k přenesení uživatelského loginu jako parametru cílové stránky. [ obdoba metasymbolu _login_ v HTML zdroji ]
operátor xweblogininfo( string db, string us, string pwd, string ip_address, string cid ) dekóduje parametry databázového loginu a adresu klientského počítače.
operátor xappstring ( <string_variable>, '<jméno řetězce>' ) přečte hodnotu jmenovaného backend řetězce do zadané string proměnné [ obdoba metasymbolu @@STR(...) v HTML zdroji ]
operátor xdbparameter ( <string_variable>, '<jméno parametru>' ) přečte hodnotu jmenovaného backend parametru specifického pro databázi do zadané string proměnné [ obdoba metasymbolu @@DB(...) v HTML zdroji ]
Tvorba odkazů na jiné HTML stránky
Je samozřejmé, že se komplexní informace o bohatě strukturových datech obtížně prezentují v prostřednictvím navzájem neprovázané sady reportů - stránek, kde každý z nich perzentuje určitou část dat bez uživatelsky jednoduché možnosti zaměřit se na určitou informaci a nechat si o ní zobrazit další podrobnosti. Fakt, že HTML protokol má v sobě schopnost
kumulovat informace z různých zdrojů a zároveň přehledně informovat o odkazech na další, podrobnější údaje o daném problému, je opravdovým štěstím. Je tedy pouze na metodikovi, aby navrhl optimální strukturu obsahu a vazeb jednotlivých reportů.
Základní syntaxe HTML odkazu je
<A HREF="<nová lokace>" [další atributy]>text odkazu</A>. Nová lokace může být relativní anebo absolutní URL, případně volání skriptum např.
<A HREF="javascript:my_function()"...
V HTML zdroji
lze v odkazu použít rozšířenou syntaxi. Uvedeme příklad odkazu na další hp stránku:
<A HREF="fastx.dll?Task=
_app_.form&Data=<nová stránka>.hp&_login_[&další parametry...]">text odkazu</A>
V X zdroji
obecně rozšířenou syntaxi použít nelze, neboť X modul je kompilován před vyvoláním stránky a v průběhu jejího zpracování se pochopitelně nemění. Je tedy nutné použít specifické X operátory, vyjmenované v předchozím odstavci. Pro srovnání uvedeme příklad odkazu na další hp stránku:
export long writeOdkaz()
{
string login, app
// zjistit jmeno aplikace
xappname(
app )
// nacist login-id
xwebloginstr( login )
// odeslat text odkazu
xwebout( '<A HREF=\"fastx.dll?Task=' $ app $ '.form&Data=<stránka>.hp&' $ login $ '&další parametry\">' )
xwebout( 'text odkazu</A>' )
}
Adresování hp strá
nek z prohlížeče
Máme aplikaci testapp
a vytvořili jsme hp stránku customers. Z prohlížeče budeme tuto stránku adresovat příkazem:
http://<computername>/ffs/fastx.dll?Task=testapp.form&Data=customers.hp
hp
stránky se editují HyperPagerem, což je součást aplikace Freelance Developer. Popis HyperPageru najdete zde.
Popis jazyka X najdete
zde.
Přejít na
Freelance Developer Home FDK Home