Iterator (SPT-Tag)

Aus SiteparkWiki
Version vom 28. August 2024, 10:03 Uhr von Schleusner (Diskussion | Beiträge) (→‎Attribute)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Name

<spt:iterator> - erzeugt Wiederholfelder

Syntax

<spt:iterator name="variable">
  ...
</spt:iterator>

Beschreibung

Der spt:iterator-Tag ermöglicht die wiederholte Ein- und Ausgabe von Input-Tags. Ein mit diesem Tag umschlossener Template-Abschnitt kann bei der Eingabe beliebig oft wiederholt und editiert werden. Aus diesen Eingaben wird eine Liste erstellt, die mit den SP-Tags für Listen durchlaufen werden kann (z.B. sp:loop, s. Beispiel). Iterationen können an beliebigen Stellen hinzugefügt oder gelöscht werden. Die Reihenfolge der Iterationen ist veränderbar.

Erläuterungen der Schaltflächen:

Icn mini down.gif ans Ende verschieben
Icn mini plus.gif an dieser Stelle einfügen
Icn mini delete.gif löschen
Icn mini updown.gif vertauschen
Icn mini mirror.gif Reihenfolge invertieren
Icn mini up.gif an erste Position verschieben

Attribute

Name Type Required Default ab IES Version
name Attribute Ja None 1
item Variable Nein None 1
min Number Nein 1 1
max Text Nein -1 1
layout Text Nein standard 1
readonly Condition Nein None 1
itemtext Text Nein None 2.4; IES Generator 1.3
invert Condition Nein None 2.4; IES Generator 1.3
disabled Collection Nein None 2.4; IES Generator 1.4
skipmarks Condition Nein true IES Generator 2.9
name
Name der Variablen, unter der die Liste auch für die Ausgabe erreichbar ist. Dieses Attribut entspricht dem collection-Attribut des sp:iterator-Tags.
item
Die in name angegebene Liste wird Element für Element durchlaufen. Mit dem, in diesem Attribut angegebenen Namen kann auf das aktuelle Element der Liste zugegriffen werden. Für das aktuelle Element können noch zusätzliche Informationen die den Schleifendurchlauf betreffen abgefragt werden (siehe IteratorItem).
min
Die Anzahl der mindestens zu iterierenden Elemente. Enthält die zu iterierende Liste weniger Elemente als in min angegeben werden so viele leere Elemente hinzugefügt, bis mindestens die in min angegebene Anzahl von Elementen vorhanden ist.
max
Die Anzahl der maximal zu iterierenden Elemente. Enthält die zu iterierende Liste mehr Elemente als in max angegeben, so wird die Anzahl der Elemente auf die Anzahl max gekürzt.
layout
Dieses Attribut bestimmt die Darstellung der Liste. Wenn plain, werden die Listenelemente ohne Rahmen und Schaltflächen ausgegeben. Mögliche Schaltflächen zum Hinzufügen oder Löschen eines Listenelementes müssen manuell im Template gecodet werden.
readonly
Attribut (true, false) was bestimmt, ob die Schaltflächen zum Hinzufügen, Löschen und Verschieben von Listenelementen angezeigt werden, wenn das Attribut layout nicht auf plain gesetzt wurde.
itemtext
Mit diesem Attribut kann ein Text definiert werden, der an Stelle der Listennummerierung als Blocküberschrift erscheint, wenn das Attribut layout nicht auf plain gesetzt wurde. Dem Text folgt bei mehr als 1 Listenelement automatisch die Listennummerierung in der Form "x von n", wobei x die Nummer des Listenelementes ist und n die Anzahl der Listenelemente.
invert
Mit diesem Attribut (true, false) kann die Darstellung der Liste beeinflusst werden. Wenn auf true gesetzt, werden die Listenelemente mit einem dunklen Rahmen umschlossen, andernfalls mit einem hellen Rahmen. Eine eventuell vorhandene Blocküberschrift (siehe Attribut itemtext passt sich der Darstellung an und erscheint bei invertierter Darstellung in heller Schrift auf dunklem Grund.
disabled
Liste von Elementen (beginnend mit 1 für das erste Listenelement: 1,2,4,5,8,...), welche nicht bearbeitet werden dürfen. Sowohl das Listenelement selbst kann nicht gelöscht werden, also auch alle in dem Listenelement enthalten Felder können nicht bearbeitet werden.
skipmarks
Wenn false gesetzt wird, werden keine Sprungmarken im HTML erzeugt.

Beispiele

Artikel mit beliebig vielen Absätzen

Template Quelltext

<%-- Beginn Eingabe --%>
<sp:io type="in">
  Artikelüberschrift:<br>
  <sp:text name="headline"/><br>

  <%-- Beginn iterierter Abschnitt --%>
  <spt:iterator name="iterate" item="it">
    Absatzüberschrift:<br>
    <spt:text name="bodyhead"/><br>
    Absatztext:<br>
    <spt:smarteditor name="body" cols="50" rows="10"/>
  </spt:iterator>
  <%-- Ende iterierter Abschnitt --%>
</sp:io>
<%-- Ende Eingabe --%>

<%-- Beginn Ausgabe --%>
<sp:io type="out">
  <h3><sp:print name="headline"/></h3><br>

  <%-- Beginn Ausgabe iterierter Abschnitt --%>
  <sp:loop collection="iterate" item="it">
    <p>
    <h4><sp:print name="it.index"/>: <sp:print name="it.bodyhead"/></h4>
    <sp:print name="it.body"/>
    </p>
  </sp:loop>
  <%-- Ende Ausgabe iterierter Abschnitt --%>
</sp:io>
<%-- Ende Ausgabe --%>