GENTICS News
Wie können die Templates von eingebetteten Components (z.B. in der DateComponent) angepaßt werden
Komplexere Components, wie z.B. die DateComponent enthalten Sub-Components.
Im Falle der DateComponent sind dies
- $component.textcomponent (zur Eingabe des Datums)
- $component.calendarbuttoncomponent (zum Öffnen/Schließen des Kalenders)
- $component.monthselectcomponent (zur Auswahl des Monats im Kalender)
- $component.yearselectcomponent (zur Auswahl des Jahres im Kalender)
- $component.applybuttoncomponent (Wechsel des Kalenders zum eingestellten Monat/Jahr)
Im Template der DateComponent können diese Sub-Components z.B. so verwendet werden
$component.textcomponent $component.calendarbuttoncomponent #if ($component.calendar.open) $component.monthselectcomponent $component.yearselectcomponent $component.applybuttoncomponent ...
Die Sub-Components würden dann mit den jeweiligen Standard Templates ihres Typs gerendert werden, also die $component.textcomponent z.B. mit dem gewöhnlichen Template der TextComponent, usw.
Man kann allerdings die Sub-Components auch direkt im Template der DateComponent rendern, um das Aussehen der DateComponent zu verändern:
Möchte man z.B. für die $component.textcomponent folgendes (vereinfachte) Template anwenden
<input type="text" id="$component.name" name="$component.name" value="$portal.imps.string.escapeHTML($component.value)"/>
so kann man diesen Code direkt im Template der DateComponent verwenden, wobei jeweils $component durch $component.textcomponent zu ersetzen ist.
Das Template der DateComponent würde dann z.B. so aussehen:
<input type="text" id="$component.textcomponent.name" name="$component.textcomponent.name" value="$portal.imps.string.escapeHTML($component.textcomponent.value)"/> $component.calendarbuttoncomponent #if ($component.calendar.open) $component.monthselectcomponent $component.yearselectcomponent $component.applybuttoncomponent ...
Beim anpassen von eingebetteten ButtonComponents (z.B. der $component.calendarbuttoncomponent) muß beachtet werden, daß für eine ButtonComponent ähnliches gilt, wie für eine DateComponent:
Die ButtonComponent kann mehrere Buttons enthalten, die unter $component.buttons zur Verfügung stehen, und sich entweder selbst rendern, oder im Template der ButtonComponent gerendert werden.
Die Anpassung der DateComponent für die $component.calendarbuttoncomponent könnte also so aussehen:
<input type="text" id="$component.textcomponent.name" name="$component.textcomponent.name" value="$portal.imps.string.escapeHTML($component.textcomponent.value)"/> #foreach ( $button in $component.calendarbuttoncomponent.buttons ) <input id="$button.name" value="$button.label" name="$button.name" type="submit" /> #end #if ($component.calendar.open) $component.monthselectcomponent $component.yearselectcomponent $component.applybuttoncomponent ...