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

@@ -3,9 +3,9 @@
| | |
|---|---|
| **Document identifier** | EVO‑VITEC‑HL‑001 |
| **Version** | 1.17 |
| **Version** | 1.19 |
| **Status** | Released |
| **Date** | 2026‑09‑11 |
| **Date** | 2026‑09‑25 |
| **Applies to** | `evomedien/vitec` on TYPO3 v14.3 (headless) |
| **Owner** | evomedien — VITEC relaunch |
@@ -31,6 +31,7 @@
| 1.16 | 2026‑09‑11 | **New plugin** `vitec_productfinder` (`ProductFinderJsonRenderer`, payload key `productfinder`): the product category hierarchy on its own, as the data source for the filter selects above the product lists (7.15.3, 8). No change to `vitec_productlist` — filtering happens client side over the products already delivered, keyed on the category uids this payload carries. |
| 1.17 | 2026‑09‑11 | **Interface change (additive).** The product list payload gained `successStories` (7.15.2.1): stories an editor attaches to a `sys_category` (tab *Options*, with its own layout), emitted in the list envelope beside `products`. Each card carries `forCategories` — the product categories it came from — so the front end can hide it with the same `?cat=`/`?subcat=` filter it applies to the products. Story links reuse the 7.5 rule, with the detail page taken from the element or the new site setting `vitec.storyDetailPid`. |
| 1.18 | 2026‑09‑24 | **Interface change (additive).** Products gained `solutions` — an MM relation to solutions, emitted as solution cards in both product payloads — and a **Resources tab**: child table `tx_vitec_product_resource` with documentation / support cards (editable title, text and icon around one link, resolved per 9.12; cards without a resolvable link are not emitted) plus a `datasheets` MM selection of download records rendered into the same envelope as `type: datasheet` cards, delivered detail‑only as the `resources` list envelope whose `layout` switches to `carousel` above three cards in total (7.15). The `solutions` relation accepts group‑level records: the eight groups exist as `is_group = 1` solutions (created by `vitec:create-solution-groups`, excluded from lists and from `vitec:align-solutions`) because the agency workbooks reference the group level. Editorial: the footer had been stuck at v1.15 since 1.16/1.17 (2026‑09‑11). |
| 1.19 | 2026‑09‑25 | **Interface change (additive).** The `vitec_card` Content Block gained the `layout_variant` value `flipcard` and a *Card Back* palette: `back_headline` (string, max 100) and `back_text` (richtext → HTML). The two fields are `displayCond`‑gated on the flipcard layout in the backend but serialised unconditionally (7.7) — the front end **shall** key the back face on `layout_variant`, never on field presence, because stored back values persist when an editor switches the layout away. Backend repair: `vitec_layout_variant` / `vitec_background_variant` are shared with `vitec_ctabanner`, and the index‑wise Content‑Blocks merge had dropped four card‑only select values (“Missing label”) — per‑type item lists now come from `columnsOverrides` (7.7); the Card‑Back palette lives in the Layout tab below the variant select. Editorial: the head‑matter version had been stuck at v1.17 since 1.18. |
This document is drafted in the style of, and adopts the terminology conventions of,
ISO/IEC/IEEE 42010 (architecture description), ISO/IEC/IEEE 26514 (information for
@@ -564,6 +565,27 @@ upper‑case preset would store one colour under two spellings. A block can ther
a background by **two** mechanisms — this field and the `vitec-bg-*` frame classes. The
precedence between them is a front‑end decision and is deliberately not fixed here.
**Card flip layout (since v1.19).** `vitec_card` carries the additional `layout_variant`
value `flipcard` together with a *Card Back* palette: `back_headline` (string, max 100)
and `back_text` (richtext → HTML per 9.11). Both fields are serialised by the
auto‑serialiser on **every** card — empty strings when unset — so a front end **shall**
render the back face only when `layout_variant` equals `flipcard`, never keyed on the
mere presence of the fields: an editor may switch a filled flip card to another layout,
and the stored back values persist. In the backend the two fields are gated by
`displayCond` on the flipcard layout (the select reloads the form via `onChange`);
the palette sits in the **Layout** tab directly below `layout_variant`.
Beware: `layout_variant` and `background_variant` are **columns shared with
`vitec_ctabanner`** (same identifier under the vendor prefix). Content Blocks merges
diverging item lists of such a shared select **index‑wise** into the base column —
four card‑only values simply did not exist as items (“[ Missing label ]” in the
backend). Since v1.19 `Configuration/TCA/Overrides/tt_content.php` pins the base
column to the shorter cta‑banner lists and hands `vitec_card` its full lists through
`columnsOverrides`, honoured by FormEngine **and** DataHandler. Because that per‑type
merge is `array_replace_recursive`, an items override **shall** be at least as long as
the base list — and a new block **shall not** reuse these identifiers with diverging
items; prefix instead, as `hero_layout_variant` / `intro_layout_variant` already do.
### 7.8 Forms
#### 7.8.1 Form plugin payload
@@ -1478,4 +1500,4 @@ remediation.
- Header convention — the uniform header section across CEs, plugins and containers.
- `Configuration/Sets/Vitecset/setup.typoscript` — the single TypoScript entry point.
*End of document EVO‑VITEC‑HL‑001 v1.18.*
*End of document EVO‑VITEC‑HL‑001 v1.19.*