vitec_card: flipcard layout + card-back fields; shared-column repair

- layout_variant gains the value "flipcard" (onChange: reload)
- "Card Back" palette in the Layout tab directly below layout_variant:
  back_headline (Text, max 100) and back_text (Textarea, richtext),
  displayCond-gated on the flipcard layout; serialised unconditionally -
  the frontend keys the back face on layout_variant, not on field
  presence (spec 7.7)
- backend preview: flipcard badge + back-headline line
- repair "[ Missing label ]" in the card selects: layout_variant /
  background_variant are columns SHARED with vitec_ctabanner, and the
  index-wise Content Blocks merge dropped four card-only values from
  the base item list. Overrides/tt_content.php now pins the base column
  to the cta-banner lists and hands vitec_card its full lists via
  columnsOverrides (respected by FormEngine and DataHandler; an items
  override can only extend, never shorten - array_replace_recursive)
- spec v1.19 incl. head-matter fix (version table was stuck at 1.17)

Server follow-up: database:updateschema "*.add,*.change" + cache:flush

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
orascheandClaude Fable 5 committed 2026-09-25 12:16:16 +02:00
1 parent 43519505bc
commit 6db2234851
5 files changed
+123 -3

No files matched your search

@@ -31,6 +31,7 @@
<f:case value="icon_card">✦</f:case>
<f:case value="feature">⭐</f:case>
<f:case value="compact">▫</f:case>
<f:case value="flipcard">🔄</f:case>
<f:defaultCase>▢</f:defaultCase>
</f:switch>
</div>
@@ -65,6 +66,10 @@
</div>
</f:if>
<f:if condition="{data.back_headline}">
<div class="vitec-preview__body-text">🔄 Back: {data.back_headline}</div>
</f:if>
<div class="vitec-preview__ctas">
<f:if condition="{data.primary_cta_label}">
<span class="vitec-preview__cta-btn">{data.primary_cta_label} →</span>
@@ -90,6 +95,7 @@
<f:case value="icon_card">✦ Icon Card</f:case>
<f:case value="feature">⭐ Feature</f:case>
<f:case value="compact">▫ Compact</f:case>
<f:case value="flipcard">🔄 Flip Card</f:case>
<f:defaultCase>{data.layout_variant}</f:defaultCase>
</f:switch>
</span>