Asset
Tato stránka popisuje obecné principy práce s assety v TFS. Pokud hledáte detaily o konkrétních datových třídách, existující atributy assetů podle typu apod., konzultujte výpis datového slovníku.
Vypsání hodnoty
Za normálních okolností se k vypsání hodnoty, kterou je asset, použije aktuální formátovač (viz dokumentaci výběru formátovače). Pravidlo formátovače se vybere podle typu vypisovaného assetu, aktuálního jazyka a formátu.
Součástí příkazu vypsání hodnoty může být parametr mode
, který určuje požadovaný cílový režim formátovače.
Ostatní parametry volání výpisu se předají formátovači jako pojmenované parametry.
Od verze 3.4 dědí assety všech typů atribut disabled
; jedním z efektů nastavení tohoto atributu na true
je potlačení výpisu – to znamená, že se formátovač nepoužije a nevypíše se nic. Toto chování je možné potlačit parametrem asset:showDisabled
nastaveným na true
: pak se hodnota atributu disabled
při výpisu ignoruje.
V případě assetů některých typů je chování odlišné; podrobnosti následují.
Šablona
Při výpisu hodnoty, kterou je asset typu šablona, se nevolá formátovač, ale šablona se prostě vyhodnotí a vypíše na výstup. Pravidlo šablony se vybere podle aktuálního jazyka a formátu.
Součástí příkazu vypsání hodnoty může být parametr mode
, který určuje požadovaný cílový režim šablony.
Ostatní parametry volání výpisu se předají šabloně jako pojmenované parametry.
Pagelet
Při výpisu hodnoty, kterou je asset typu pagelet, se nevolá formátovač, ale volá se vypsání pageletu. Je na logice řídící třídy pageletu (přesněji: její metody render
), co se v takovém případě bude dít. Ve většině případů se vypíše šablona pageletu v některém ze svých režimů.
Parametry volání výpisu se předají pageletu jako pojmenované parametry. Je na logice řídící třídy pageletu, jak se s nimi naloží.
Zástupce (Proxy)
Asset zástupce může fungovat jako transparentní reprezentace jiného assetu. V příkazu pro vypsání hodnoty (a jenom v něm!) je toto chování podporováno automaticky; to znamená, že se místo výpisu samotného assetu vypíše asset jím zastupovaný. Viz podrobnou dokumentaci.
Selekce podhodnoty
Podhodnoty s vyhrazeným názvem
parent
- (Asset) rodičovský asset. (Ale viz také funkce isParent a parentsOf.)
- jména začínající řetězcem
related
- Zápis
_asset.related:
x se používal jako zkratka pro získání assetů připojených relacemi pod názvem x. Ve většině instalací systému jNetPublish nemá žádné využití. - jména začínající řetězcem
relations
- Zápis
_asset.relations:
x se používal jako zkratka pro získání relací s názvem x. Ve většině instalací systému jNetPublish nemá žádné využití. id
- (Integer) Identifikátor assetu.
externalId
- (String) Externí identifikátor assetu.
typeDescriptor
- (Deskriptor typu assetu) Objekt poskytující přístup k vybraným informacím o typu assetu. Přidáno ve verzi 3.4.
Další podhodnoty neuvedené ve slovníku
Některé atributy definované pro Obecný asset nebo Obecný asset s ACL se přímo needitují nebo editují odlišně, a proto nejsou uvedené ve slovníku. Jsou to:
name
- (String) Systémový název assetu.
assetType
- (String) Typ assetu. Typy jsou identifikované celým názvem třídy – viz datový slovník systému jNetPublish pro konkrétní hodnoty.
contentVersion
- (String) Obsahová varianta.
classification
- (String) Vlastní řetězec – možné hodnoty a jejich význam závisí zcela na konkrétní aplikaci.
isValid
- (Boolean) Zda je asset platný, tzn.
validFrom
není nastaveno nebo je v minulosti avalidTo
není nastaveno nebo je v budoucnosti. wasValid
- (Boolean) Zda asset byl platný, tzn.
validTo
je nastaveno a je v minulosti. willBeValid
- (Boolean) Zda asset bude platný, tzn.
validFrom
je nastaveno a je v budoucnosti. createUser
- (UID) Uživatel, který asset vytvořil.
createDate
- (Date) Datum vytvoření assetu.
modifyUser
- (UID) Uživatel, který asset naposledy změnil. Vytvoření assetu se jako "změna" nepočítá, hodnota tedy nemusí být vůbec nastavená.
modifyDate
- (Date) Datum poslední změny assetu. Hodnota nemusí být nastavená.
approveUser
- (UID) Uživatel, který naposledy nastavil stav assetu na "schválený".
approveDate
- (Date) Datum posledního schválení assetu.
workflowState
- Stav assetu ve workflow.
Pro získání dat uživatele je možné použít funkce asUser.
Atributy, vlastnosti, dětské assety
Atribut assetu se systémovým názvem x se bere za podhodnotu assetu dostupnou pod klíčem x. Existující atributy assetů definuje datový slovník.
{_asset.title}
Vlastnost assetu s názvem x se bere za podhodnotu assetu dostupnou pod klíčem x. To platí jak pro vlastnosti typu řetězec, tak pro reference.
{_asset.myData}
Asset se systémovým názvem x se bere za podhodnotu svého rodičovského assetu dostupnou pod klíčem x.
{_primary.index}
Tento vzor se často používá pro přiřazení výchozího obsahu sekci.
Výhodou je, že pokud se odkazuje obsahový asset s názvem "index", je výsledná URL shodná s odkazem přímo na sekci. (Takové odkazy může vytvořit fulltextový vyhledávač nebo autor obsahu.)
Uplatnění aktuálního jazyka
Pokud selže pokus o nalezení podhodnoty s názvem x, bere se při výpočtu jako druhá možnost nalezení podhodnoty s názvem x_
language, kde language je dvoupísmenná zkratka aktuálního jazyka.
{_primary.index.name}
index_cz
Předpokládejme, že v aktuální sekci jsou dva assety, jeden má název index_cz
, druhý má název index_en
. Dále předpokládejme, že aktuální jazyk je čeština.
Pokus o nalezení dětského assetu index
selže, proto se hledá asset s názvem index_cz
. (Vypisuje se ovšem jeho skutečný název.)
Tento postup se uplatňuje v případě atributů, vlastností i dětských assetů. Z pohledu autora šablon se tak do značné míry stírá rozdíl mezi jednojazyčným datovým slovníkem (obsahujícím atributy title
, body
atp.) a dvoujazyčným slovníkem (obsahujícím dvojice atributů title_cz
, title_en
, body_cz
, body_en
atp.).
Pořadí při hledání podhodnoty
Při výpočtu podhodnoty se nejprve hledá atribut, pak vlastnost, a nakonec dětský asset. Vrací se první z těchto hodnot, která není null. Při tom se rozlišuje mezi hodnotou null (hledání bude pokračovat) a prázdným řetězcem (hledání se ukončí, prázdný řetězec bude vrácená hodnota). Stejně tak v případě, že pro daný typ assetu je definovaný atribut s požadovaným názvem, ale nemá nastavenou hodnotu, bude vrácená hodnota null.
V každém z těchto kroků se nejprve hledá podle názvu explicitně uvedeného ve výrazu selekce, a teprve když není hodnota definovaná, hledá se podle názvu se sufixem pro aktuální jazyk.
Ve starších verzích systému jNetPublish bylo pořadí položek odlišné: dětský asset měl přednost před vlastností.
Prostá selekce a akvizice
Při selekci podhodnoty se mohou uplatnit hodnoty nastavené pro asset samotný, ale také hodnoty nastavené u jeho rodiče nebo některého vzdálenějšího předka.
O případech, kdy se uplatňují hodnoty nastavené u předků assetu, se mluví jako o akvizici hodnoty.
Při uplatnění akvizice může být priorita mezi atributem, vlastností a dětským assetem nastavená odlišně; je možné ji také zvolit explicitně.
Implicitní a explicitní akvizice
Akvizice může probíhat implicitně (tzn. každý případ selekce podhodnoty probíhá jako akvizice), nebo může být ponechána pod kontrolou autora šablony.
Ve druhém případě si musí autor šablony akvizici vyžádat použitím operátoru ! nebo funkce acquire.
Zda akvizice probíhá v režimu implicitním nebo explicitním je věcí konfigurace systému jNetPublish. V novějších verzích je defaultem explicitní režim.
Mapování
Chová se stejně jako selekce podhodnoty.
Sekvenční zpracování
Defaultní chování assetu je iterace přes všechny jeho dětské assety.
V případě některých typů assetů ale iterace může dávat jiný výsledek.
- Iterace přes datový zdroj vrací data zdroje: tedy například ručně definovaný seznam assetů, výsledky JDOQL dotazu, výsledky SQL dotazu apod.
- Iterace přes asset typu pozice banneru (je součástí rozšíření: banner manager) vrací postupně prvky, které se mají v aktuálním zobrazení vypsat na dané pozici.
Převod na logickou hodnotu
Vyhodnotí se vždycky jako true
.