Skip to content

[YForm] Feature Request: repeater_light Value (optional TinyMCE/CKE) #429

Description

@skerbis

Idee: repeater_light Value fuer YForm (inkl. optional TinyMCE/CKE)

Motivation

Fuer viele YForm-Anwendungsfaelle brauchen wir wiederholbare Mini-Strukturen (z. B. FAQ, Linklisten, Team-Items), ohne die volle Komplexitaet eines Flex-Repeaters.

Ziel ist ein schlanker, klar definierter Value-Typ:

  • einfach zu konfigurieren
  • robust im Backend
  • stabil speicherbar als JSON
  • gut auswertbar im Frontend

Zielbild

repeater_light speichert ein JSON-Array in einem Feld (text/longtext) und bietet eine kleine, kontrollierte Repeater-UI:

  • add / remove / reorder
  • optionale duplizieren-Funktion
  • feste Sub-Feldtypen
  • klare Validierung je Zeile

MVP (Phase 1)

  1. Kernfunktionen
  • Zeilen hinzufuegen, loeschen, sortieren
  • optional min_items, max_items
  • optional collapsed Darstellung
  1. Sub-Feldtypen (initial)
  • text
  • textarea
  • select
  • checkbox
  • number
  1. Speicherung
  • JSON-Array im Value-Feld
  • stabile Schluessel je Zeile
  • optional Versionsmarker fuer spaetere Migrationen
  1. Validierung
  • required/type checks pro Sub-Feld
  • strukturierte Fehlermeldungen mit Zeilenbezug

TinyMCE/CKE im Repeater Light (optional, aber gewuenscht)

Richtext in Repeater-Zeilen ist redaktionell sehr wertvoll und soll als optionales Feature moeglich sein, mit klaren Leitplanken:

  1. Nicht Default, explizit aktivieren
  • z. B. editor: tinymce oder editor: cke5 am Sub-Feld
  1. Performance/Komplexitaet begrenzen
  • pro Zeile initial max. ein Richtext-Feld
  • harte Zeilenbegrenzung bei aktivem Editor (z. B. max 20)
  1. Stabiler Lifecycle
  • lazy init nur bei sichtbarer/geoeffneter Zeile
  • sauberes destroy/re-init bei add, clone, sort, remove
  • eindeutige IDs je Zeile/Instanz
  1. Save-Sicherheit
  • vor Save immer Editorinhalt ins zugrunde liegende Feld synchronisieren
  1. Fallback
  • wenn Editor nicht verfuegbar/fehlerhaft: automatischer Fallback auf normale textarea

Bewusst out of scope (MVP)

  • nested repeater
  • komplexe Condition-Engine
  • vollumfaengliche Flex-Repeater-Features

Akzeptanzkriterien (v1)

  1. Ein einfaches FAQ-Setup (question, answer) kann als repeater_light im YForm-Formular gepflegt und als JSON gespeichert werden.
  2. Sortierung und Loeschen bleiben nach Save/Reload stabil.
  3. Validierungsfehler zeigen Zeile + Feld eindeutig.
  4. Optional aktivierter TinyMCE/CKE funktioniert bei Add/Sort/Delete ohne verlorene Inhalte.
  5. Bei Editor-Problemen bleibt das Feld als normale textarea bedienbar.

Nutzen

  • deutlich weniger Boilerplate fuer wiederholbare Kleinstrukturen
  • bessere Redakteurs-UX in YForm
  • technisch kontrollierter Mittelweg zwischen einfachem Value und Voll-Repeater

Vorschlag fuer Label/Milestone

  • enhancement
  • idea
  • Milestone: 9.2.0 (oder spaeter, je nach Priorisierung)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions