Podpora modularizace obsahu (2)

Dalším zobecněním konceptu formátovaného assetu v článku je modul. Modul může být definovaný libovolnou šablonou a při jeho použití je možné definovat libovolné parametry, včetně vazeb na jiné assety.

Aby mohl správce obsahu začít používat šablonu jako modul, je třeba, aby správce prezentační logiky vytvořil XML dokument popisující tento modul.

Jak postupovat, budeme demonstrovat na modulu pro vložení videa z YouTube.

Následující výklad je postavený tomto příkladu; kompletní popis všech možností by ho zbytečně komplikoval. Viz podrobnější dokumentaci k definici modulů.

Definice modulu

Modul je typicky definovaný šablonou. Je třeba říct, že tato šablona definuje modul a nastavit základní vlastnosti tohoto modulu.

  • Že šablona definuje modul, říká řídící slovo jnp_module u assetu šablony.
  • Vlastnosti modulu definuje jeho desktriptor. Deskriptor je XML dokument, který se vkládá do nastavení Ovládácích tříd jako hodnota pole Společné parametry.
Deskriptor modulu
<?xml version="1.0" encoding="UTF-8"?>
<ControlDescriptor xmlns="http://www.etnetera.cz/schemas/jnp/ControlDescriptor">
  <Description>
    <Name>module_name</Name>
    <Desc>module_desc</Desc>
    <Icon>module_icon</Icon>
  </Description>
  <TraitDefinition>
    <Id>video_id</Id>
    <Description>
      <Name>video_id_name</Name>
      <Desc>video_id_desc</Desc>
      <Icon>video_id_icon</Icon>
    </Description>
    <Literalizer className="org.twinstone.tvm.literals.StringLiteralizer" />
    <Structure>SCALAR</Structure>
  </TraitDefinition>
</ControlDescriptor>

Deskriptor obsahuje element Description obsahující popis modulu pro uživatele a za ním libovolný počet elementů TraitDefinition definujících parametry, které bude moci správce obsahu při vložení modulu do těla článku nastavit.

Popisy parametrů opět obsahují element Description, tentokrát vztažený k danému parametru. Každý element Description obsahuje elementy Name a Desc obsahující klíče pro jméno a popis daného objektu. Tyto klíče se při zobrazení lokalizují s využitím překladových map dané šablony. Překladové mapy tedy mohou obsahovat například tyto hodnoty:

Defaultní překladová mapa
module_name: Video z YouTube
module_desc: Vloží do stránky přehrávač jednoho zvoleného videa z YouTube.

video_id_name: ID videa
video_id_desc: Identifikátor videa, který používá YouTube, například "teMlv3ripSM".

Element Description obsahuje dále element Icon. Jeho hodnotou je název vlastnosti šablony, jejíž hodnotou je reference na zástupný obrázek. Vždy je nutné definovat zástupný obrázek celého modulu – ten bude výskyt modulu reprezentovat ve vizuálním editoru.

Definice parametru

Každý parametr modulu obsahuje element Id. Toto je systémový název parametru. Pod tímto názvem bude hodnota parametru, zvolená správcem prezentační logiky, dostupná v šabloně modulu při jeho vyhodnocení.

Element Literalizer definuje typ hodnot, kterých může parametr nabývat – v našem případě jde o řetězce.

Element Structure určuje, zda jde o hodnoty jednoduché, nebo o seznamy hodnot.

Šablona modulu, využití parametrů

Nastavené parametry jsou při vyhodnocení šablony modulu dostupné pod svým identifikátorem. Šablona tak může obsahovat například následující kód:

Tělo šablony modulu
<object width="400" height="300">
  <param name="movie" value="http://www.youtube-nocookie.com/v/{video_id}"></param>
  <param name="allowFullScreen" value="true"></param>
  <param name="allowscriptaccess" value="always"></param>
  <param name="wmode" value="transparent"></param>
  <embed
    src="http://www.youtube-nocookie.com/v/{video_id}"
    type="application/x-shockwave-flash"
    allowscriptaccess="always"
    allowfullscreen="true"
    width="400" height="300"
    wmode="transparent"></embed>
</object>

Je nasnadě, že výpis by bylo možné dále parametrizovat: zejména povolit zadávání výšky a šířky přehrávače. Toto je snadná aplikace uvedených principů, s využitím literalizéru org.twinstone.tvm.literals.StringLiteralizer.

Kdy se šablona modulu vyhodnocuje

Šablony definující modul použitý v řetězci se vyhodnocují v případě, že je výpis řetězce volaný s parametrem jnprefs. Protože ve výpisu těla článku tento parametr už používáme, aby se expandovaly symbolické reprezentace odkazů, nejsou nutné žádné zvláštní úpravy formátovače.

Jak modul zařadit do nabídky pro správce obsahu

Modul je třeba zařadit do systmové složky s nastaveným řídícím slovem jnp_module. Tato složka následně bude reprezentována jako jeden z repozitářů modulů. Protože se v nabídkách používají titulky assetů, je třeba, aby jak šablona definující modul, tak složka měly nastavený titulek.

Stránky tutoriálu:
Pro vložení příspěvku do diskuse se přihlašte.