Collection (kolekce) představuje množinu prvků (proměnných) stejného typu. Kolekci lze deklarovat na úrovni Vars nebo jako součást libovolného Type. Prvky kolekce se v aspx kódu vypisují zpravidla pomocí controlu <je:repeater>
.
<Collection name="someCol" itemType="SomeItem" title="Title to be displayed in admin" />
Pro deklaraci jedné proměnné daného typu slouží Var.
Atributy
allowBulkAdd nepovinný [false, true]
Atribut má význam je pro kolekce, jejichž prvky obsahují pole typu
<Img>
. Nastavení na true umožňuje do kolekce nahrát více obrázků najednou (buď drag & drop nebo výběrem v dialogu), každý do jednoho nově vytvořeného prvku kolekce. Obrázek je uložen do obrázkového pole, které je používáno pro náhled jednotlivých prvků. Nastavení na true má smysl pouze při současném nastaveníitemFormatType="img"
.allowEditFor nepovinný [seznam skupin uživatelů]
Skupiny uživatelů, kterým je pole přístupné k editaci. Pokud není atribut zadán, je pole přístupné k editace všem, kteří mají přístup do administrace. Více v článku Zabezpečení před neoprávněným přístupem do administrace.
defaultOrder nepovinný [custom/jméno pole, asc/desc]
Výchozí pořadí, v kterém jsou prvky kolekce vypsány v administračním rozhraní a při použití
<je:repeater>
.- custom – pořadí prvků je možné v administračním rozhraní volně určit pomocí drag & drop,
- jméno pole – pořadí prvků je určeno podle obsahu daného pole,
- asc / desc – přepínač směru pořadí prvků, vzestupně nebo sestupně. Uvádí se spolu s názvem pole, např.
defaultOrder="title asc"
nebodefaultOrder="published desc"
(předpokládáme, že prvky kolekce obsahují poletitle
resp.published
).
Lze zadat i více polí, např.
defaultOrder="published desc, title asc"
. V takovém případě se hodnota v druhém poli použije, je-li hodnota v prvním poli totožná.denyEditFor nepovinný [seznam skupin uživatelů]
Skupiny uživatelů, kterým je pole znepřístupněné k editaci. Pokud není atribut zadán, je pole přístupné k editace všem, kteří mají přístup do administrace. Více v článku Zabezpečení před neoprávněným přístupem do administrace.
desc nepovinný [string]
Uživatelský popis pole, který se zobrazí v administračním rozhraní. Slouží k zapsání doplňujících údajů, jako například pokyny pro editora apod.
itemFormat nepovinný [formát zobrazení prvků]
Určuje, jak budou zobrazeny jednotlivé prvky kolekce v administračním rozhraní. Viz Zobrazení prvků kolekcí v administračním rozhraní.
itemFormatType nepovinný [text, img]
Způsob zobrazení kolekce v administračním rozhraní. Viz Zobrazení prvků kolekcí v administračním rozhraní.
itemType povinný [jméno typu]
Typ prvku kolekce, který musí být deklarován v Site.config.
langDepend nepovinný [none, items]
Určuje chování kolekce, má-li web více jazykových mutací (viz Jazyky). Možné hodnoty jsou:
- none – prvky kolekce jsou společné pro všechny jazyky; prvky mohou (a nemusí) obsahovat jazykově závislá pole,
- items – pro každý jazyk je vytvořena zvláštní kolekce, plně nezávislá na ostatních jazycích. Kolekce tak v každém jazyce může obsahovat různé množství prvků a mezi prvky jednotlivých jazyků není žádný vztah.
name povinný [string]
Jméno kolekce, které musí být jedinečné v rámci všech polí jednoho typu (pokud je kolekce deklarována uvnitř typu) resp. jedinečné mezi všemi proměnnými a kolekcemi deklarovanými na úrovni
Vars
. Název smí obsahovat pouze číslice a písmena bez diakritiky. Doporučuje se jméno kolekce uvádět s počátečním malým písmenem a příponou Col (viz Konvence pojmenování).title nepovinný [string]
Uživatelský název pole, který se zobrazí v administračním rozhraní. Není-li
title
uvedeno, zobrazí sename
.
Příklady
Níže jsou uvedeny pouze ukázky deklarací kolekce. Jak se s kolekcemi pracuje v .aspx naleznete u příslušných controlů, zejména u <je:repeater>
.
Příklad 1
Prvním příkladem je kolekce článků blogu. Články chceme řadit od nejnovějšího k nejstaršímu:
<Vars> <Collection name="blogpostCol" itemType="BlogpostItem" defaultOrder="published desc" /> </Vars> <Types> <Type name="BlogpostItem"> <SimpleText name="title" /> <Date name="published" defaultValue="now" /> <Text name="text" /> </Type> </Types>
Příklad 2
Druhým příkladem je obrázková kolekce, ve které chceme ukládat fotky. Ke každé chceme zaznamenat její název a popis, jejího autora a jeho emailovou adresu. V administraci chceme kolekci zobrazit jako obrázky s uvedeným jménem autora (podrobněji je tento příklad vysvětlen v Zobrazení prvků kolekcí v administračním rozhraní) a chceme mít možnost obrázky nahrávat drag-and-drop (tzn. z prohlížeče souborů přetažením několika fotek do prohlížeče).
<Vars> <Collection name="photoCol" itemType="PhotoItem" itemFormatType="img" itemFormat="{img}" allowBulkAdd="true" /> </Vars> <Types> <Type name="PhotoItem"> <Img name="img"> <Size name="original" /> <Size name="fullHD" width="1920" height="1080" /> <Size name="thumb" width="320" height="200" /> </Img> </Type> </Types>