Collection

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" nebo defaultOrder="published desc" (předpokládáme, že prvky kolekce obsahují pole title 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í se name.

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>

Připomínky a postřehy

Máte-li nějakou připomínku, dobrý nápad nebo jste našli v dokumentaci chybu, rádi od vás uslyšíme.

Bylo by fajn mít možnost duplikovat položku v kolekci včetně všech podkolekcí a obsahu.