-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Ist-Situation
Der Benutzer hat bei einem Event die Möglichkeit, unter „Anmeldeangaben“ eigenständig Informationen zu definieren, die im Anmeldeformular als Fragen angezeigt werden. Dafür stehen verschiedene Konfigurationsoptionen zur Verfügung, zum Beispiel: zulässige Antwortwerte, Aktivierung einer Mehrfachauswahl, Sichtbarkeit der Frage, Kennzeichnung als optional oder verpflichtend sowie – mit HIT-1493 – künftig auch die Einstufung, ob es sich um sensible Daten handelt oder nicht.
Soll-Situation
Künftig können Ebenen in einer Einstellungstabelle (vgl. HIT-1508) Anmeldeangaben für alle ihre Events mehrsprachig und mit denselben Konfigurationsmöglichkeiten wie bisher definieren (vgl. oben). Dieses Feature wird im Core für alle Ebenen umgesetzt. Die bisherigen Globalen Fragen werden damit abgelöst.
Datenmodell
Dazu führen wir ein neues Model Event::QuestionTemplate mit folgenden Spalten ein:
- group_id: integer, not null
- question_id: integer, not null
- event_type: string, nullable
- default: boolean, not null, default false
- inherit: boolean, not null, default false
Das bestehende Model Event::Question wird wie folgt angepasst:
- Neues Feld derived: boolean, not null, default false
- Neues Feld required: boolean, not null, default false
- disclosure wird nach required migriert und danach gelöscht
- derived_from_question_id wird gelöscht
- event_type wird gelöscht
Datenmigration
- Fragen, welche bisher eine derived_from_question_id hatten, werden auf derived = true gesetzt.
- Fragen, welche an einem Event hängen und Disclosure = hidden haben, werden gelöscht.
- Das required Attribut wird aufgrund des Wertes von disclosure gesetzt.
- Für bestehende globale Fragen wird je ein Eintrag in der QuestionTemplate Tabelle erstellt:
- Als Gruppe wird die Root Gruppe eingetragen
- event_type wird übernommen
- inherit wird auf true gesetzt
- default auf true, wenn die disclosure nicht hidden war.
Anpassungen an der bestehenden Funktionalität
- Die Associations derived_from_question und derived_questions werden entfernt. Abhängiger Code wird entsprechend angepasst.
- Beim Erstellen eines Anlasses werden die Fragen aufgrund der definierten Vorlagen initialisiert. Dabei werden nur Vorlagen mit default = true übernommen. Anlasstyp und Vererbungen von übergeordneten Ebenen werden berücksichtigt. Das Feld derived wird für diese Fragen auf true gesetzt.
- Beim Bearbeiten eines Anlasses werden die Vorlagen nicht mehr übernommen (init_questions in EventsController#edit wird entfernt)
- Die bestehenden Produktions Seeds für globale Fragen müssen entsprechend zu QuestionTemplates angepasst werden
h3.
Nachfolgetickets:
┆Issue is synchronized with this Jira Story by Unito