Next Previous Contents

5. Jak psát...

5.1 ...stránky

Ve stránkách (.pg) je možné použít řídící tagy uvedené v předchozí kapitole. Kromě nich je možné v kódu použít tyto proměnné:

%g

Globální hash, využívá se především pro přenos údajů mezi akcí a stránkou. Pozor, jeho platnost je omezena jedním cyklem, tedy těsně před započetím vyřizování jednoho požadavku (zaslaného jako požadavek z prohlížeče) je jeho obsah prázdný a po dokončení požadavku je vyčištěn.

Nelze jej tedy použít pro předání údajů mezi dvěma požadavky, k tomu je možné použít pouze prostředků HTML a/nebo HTTP, tedy skrytých proměnných ve formulářích nebo cookies! Vyjímkou je hash %p popsaný v následujícím bodě

Pro zápis je také možné použít formu G(item), tedy print G(name); a print $g{'name'}; jsou ekvivalentní.

%p

Globální hash, jehož podstatnou odlišností od %g je to, že jeho obsah zůstává zachován i mezi požadavky. Využití je především v nastavení jeho položek v akci init nebo pro předání hodnoty mezi dvěma cykly aplikace (dvěma různými požadavky).

Pozor, tato vlastnost je ovšem výrazně omezena v případě, že v systému je spuštěn více než jeden masser, což technologie FastCGI umožňuje. Nelze pak zaručit, že druhý požadavek je předán stejné instanci masseru. Hash je persistentní pouze v rámci jedné instance programu masser!

Pozor, používejte tuto proměnnou s rozvahou, není vhodná pro ukládání většího množství dat.

Nelze použít pro předání informací mezi dvěma aplikacemi ani v rámci jedné instance masseru, každá aplikace má vlastní instanci této proměnné.

%txt

Proměnná obsahující načtené texty ze souboru s jazykovými variantami dle aktuálně vybraného jazyka (proměnná LANG). Pouze pro čtení.

%conf

Proměnná obsahující konfiguraci aplikace získanou z <app>.conf. Pouze pro čtení.

$app

Proměnná obsahující aktuální aplikaci (stejně jako param('APP')).

$pg

Proměnná obsahující aktuálně prováděnou stránku (stejně jako param('PG')).

$lang

Proměnná obsahující aktuálně vybraný jazyk (stejně jako param('LANG')).

$db, $db1, $db2, $db3, $db4, $db5

Proměnné obsahující odkaz na objekt typu DeltaX::Database číslované dle konfigurace aplikace. Poznámka: $db = $db1.

V kódu je také možné použít tyto funkce:

error, warn, info, debug, trace

Funkce modulu DeltaX::Trace. Vypisují informace do logu aplikace.

break_page

Funkce umožňující změnit stránku, kterou masser vykoná (tedy obsah $pg a param('PG'), které toto řídí, prostým přepisem obsahu některé z těchto proměnných toho nelze docílit).

Jediným parametrem této funkce je nová stránka (řetězec). Masser se pak zachová takto:

Obvykle se používá například pro předání řízení jiné stránce (vypisující chybu) v případě, že selže kontrola oprávnění a podobně.

Pamatujte na to, že to, co již bylo vytištěno (například pomocí page_start), tímto již nelze vzít zpět.

Další "speciality" využitelné v kódu stránky:

5.2 ...akce

Pro akce (.ac) platí vše, co bylo řečeno v předcházející kapitole pro stránky. Zde bych jen chtěl varovat před použitím jakýchkoliv tiskových výstupů v akcích. Rozdíl mezi akcemi a stránkami je spíše logický a to proto, aby bylo možné logicky oddělit něco vykonávaného na popud uživatele a samotný grafický výstup. Ne vždy je to samozřejmě možné, ale čím více to bude odděleno, tím lépe.

5.3 ...moduly

Moduly pro masser se v podstatě nijak neliší od modulů pro jazyk perl, až na dvě vyjímky: Jednak je možné je umístit mimo adresáře, kde by je sám perl mohl nalézt automaticky (tedy do adresářů aplikace), a dále je možné v nich využít některé proměnné poskytované masserem (jde o %conf, %txt, %g, %p, $app, $pg, $lang, $db, $dbX) takto:


package xy;
...
use vars qw/%txt %conf $app/;
import main;
...

5.4 ...JavaScript a CSS

Zde jen k možnosti použít variantu GLB(...) pro vložení informací z globální proměnné %g: Je třeba si uvědomit, že toto nahrazování je provedeno ve funkci page_start, takže případná nastavené v této funkci je nutné provést před jejím provedením (tedy patřičné volání funkce, include, modulu nebo provedení kódu, který to zařídí, musí v kódu stránky předcházet tagu s page_start).


Next Previous Contents