Startseite / Vorlagenentwicklung / Formulare / Eingabekomponenten / Migrationsleitfaden für FS_LIST / FS_LIST, Typ INLINE → FS_CATALOG

FS_LIST, Typ INLINE → FS_CATALOG

Inhaltsverzeichnis

Bei einer Umstellung von FS_LIST zu FS_CATALOG ist folgendes zu beachten.

Wenn Daten mit FS_CATALOG gespeichert wurden, können diese bei einer evtl. späteren Rückkehr zur FS_LIST (aufgrund eines abweichenden Datenformats) nicht mehr von FS_LIST gelesen und interpretiert werden.

Aktionen und Regeln

Während in FS_LIST-Komponenten auf dem Formular-Register über das <ACTIONS>/<ACTION>-Tag definiert wird, welche Bearbeitungsmöglichkeiten (z. B. „Neu“, „Bearbeiten“, „Löschen“) zur Verfügung stehen sollen, wird dies in FS_CATALOG über das Regel-Register definiert.

Hierbei ist zu beachten, dass die Einblende-Logik der verfügbaren ACTIONs umgekehrt ist. Wenn eine der ACTIONs für die FS_LIST definiert wurde, braucht für die FS_CATALOG nichts getan zu werden. Fehlt in der FS_LIST eine ACTION, so muss diese für die FS_CATALOG Eingabekomponente explizit ausgeblendet werden.

Folgende ACTIONs für die FS_LIST stehen in der FS_CATALOG Eingabekomponente automatisch zur Verfügung, können aber explizit ausgeblendet werden:
ADD / NEW / REMOVE / EDIT / DELETE

Folgende ACTIONs stehen automatisch zur Verfügung und können nicht deaktiviert werden:
VIEW / UP / DOWN

Folgende ACTIONs werden von FS_CATALOG nicht unterstützt:
COPY / GOTO

Formularbeispiel

Formulardefinition der Eingabekomponente FS_LIST:

<FS_LIST name="BEZEICHNER" hFill="yes" rows="10">
<DATASOURCE type="inline" useLanguages="no" maxEntries="1">
<ACTIONS>
<ACTION name="ADD"/>
<ACTION name="REMOVE"/>
<ACTION name="UP"/>
<ACTION name="DOWN"/>
<ACTION name="EDIT"/>
</ACTIONS>
<COLUMNS>
<COLUMN show="no">#identifier</COLUMN>
</COLUMNS>
<LAYOUT>
<ADD component="toolbar" constraint="top"/>
<ADD component="overview" constraint="center"/>
<ADD component="singleview" constraint="bottom"/>
</LAYOUT>
<TEMPLATES source="sectiontemplates">
<TEMPLATE uid="mysections"/>
</TEMPLATES>
</DATASOURCE>
<LANGINFOS>
<LANGINFO lang="*" label="Absätze bearbeiten"/>
</LANGINFOS>
</FS_LIST>

In diesem Beispiel werden für die FS_LIST alle Buttons bis auf „NEW“ erlaubt, d.h. für FS_CATALOG muss über eine Regel der „NEW“ Button ausgeblendet werden.

Formulardefinition der Eingabekomponente FS_CATALOG:

<FS_CATALOG name="BEZEICHNER" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Datensatzauswahl"/>
</LANGINFOS>
<TEMPLATES type="section">
<TEMPLATE uid="mysections"/>
</TEMPLATES>
</FS_CATALOG>

Regeldefinition der Eingabekomponente FS_CATALOG:

<RULES>
<RULE when="ONLOCK">
<WITH>
<FALSE/>
</WITH>
<DO>
<PROPERTY name="NEW" source="BEZEICHNER"/>
</DO>
</RULE>
</RULES>

Beschriftungen

Die Beschriftung von Einträgen einer FS_LIST-Eingabekomponente wird mithilfe von #item.BEZEICHNER innerhalb des LABELS/LABEL-Tags modelliert. Die Beschriftung von Einträgen einer FS_CATALOG-Eingabekomponente wird nicht innerhalb der Formulardefinition sondern über eine entsprechende Schnipseldefinition vorgenommen. Hierzu wird die Schnipsel-Definition der gewählten Absatz-/Verweisvorlagen verwendet.

Höhe der Eingabekomponente

Der Parameter height bezieht sich im Falle von FS_LIST-Komponenten auf die Höhe in Pixeln, bei FS_CATALOG auf die Anzahl der Zeilen.

Anzahl der Einträge

In FS_LIST-Komponenten wird mithilfe des Parameters maxEntries festgelegt, wie viele Einträge hinzugefügt werden dürfen. In FS_CATALOG wird dies über eine Regel mit der Eigenschaft SIZE erreicht.

Ausgabe

Werden Einträge mittels $CMS_FOR(...)$ ausgegeben, muss im Falle des FS_CATALOG der Methodenaufruf .getItem (oder in Bean-Syntax .item) ergänzt werden:

FS_LIST

$CMS_FOR(VARIABLE, LISTENNAME)$
$CMS_VALUE(VARIABLE.ELEMENT)$
$CMS_END_FOR$

In diesem Beispiel ist LISTENNAME der Bezeichner der FS_LIST-Komponente und ELEMENT der Variablenname der gewünschten Eingabekomponente in der gewählten Absatz- oder Verweisvorlage.

FS_CATALOG

$CMS_FOR(VARIABLE, LISTENNAME)$
$CMS_VALUE(VARIABLE.item.ELEMENT)$
$CMS_END_FOR$

Beispiel-Skripte

Script: FS_CATALOG auslesen

        final FormData myFormData = section.getFormData();
final FormField myFsCatalogFormField = myFormData.get(lang, "st_myFsCatalog");
final Catalog myFsCatalog = (Catalog) myFsCatalogFormField.get();

final Iterator<Catalog.Card> cardIterator = myFsCatalog.iterator();
while (cardIterator.hasNext()){
final Catalog.Card card = cardIterator.next();
final Template sectionOrLinkTemplate = card.getTemplate();
final FormData formData = card.getItem();
Integer myNumber = (Integer) formData.get(lang, "st_number").get();
}

Script: FS_CATALOG leeren

       //Clear Catalog of all cards
myFsCatalog.clear();

Script: Neue CatalogCard erzeugen

         //Create new card
final FormsAgent formsAgent = context.requireSpecialist(FormsAgent.TYPE);
final Form form = formsAgent.getForm(sectionTemplate.getGomSource());
final FormData formData = form.createFormData();

final Catalog.Card newCard = myFsCatalog.create(sectionTemplate, formData);
myFsCatalog.add(newCard);

Verwendung von Systemobjekten

Das Systemobjekt #sectionList wird nur für die Eingabekomponente FS_LIST, Type INLINE verwendet.

Bei der Umstellung von FS_LIST zu FS_CATALOG muss gegebenenfalls auch das Systemobjekt #sectionList zu #fs_catalog migriert werden.

FS_LIST
Nummerierte Ausgabe in der Absatzvorlage (HTML-Vorlagensatz):

<CMS_HEADER />
$CMS_IF(!#index.isNull && !#sectionList.size.isNull)$
$CMS_VALUE(#index + 1)$/$CMS_VALUE(#sectionList.size)$:
$CMS_END_IF$
$CMS_VALUE(st_text)$
<br>

FS_CATALOG
Nummerierte Ausgabe in der Absatzvorlage (HTML-Vorlagensatz):

<CMS_HEADER />
$CMS_IF(!#index.isNull && !#fs_catalog.size.isNull)$
$CMS_VALUE(#index + 1)$/$CMS_VALUE(#fs_catalog.size)$:
$CMS_END_IF$
$CMS_VALUE(st_text)$
<br>

© 2005 - 2022 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2023.1 | Datenschutz