UC-BEH-POP-003 — Popupvelden wijzigen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-POP-003 |
| Naam | Popupvelden wijzigen |
| Domein | Beheerder / Popupbeheer |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Frontend, backend, autorisatiecomponent, database |
| Rolcontext | Actieve beheerdercontext; combinatierollen geven geen extra rechten binnen popupbeheer |
| Betrokken schermen | Site Instellingen > Popups beheren |
| Gerelateerde usecases | UC-BEH-POP-002, UC-BEH-POP-004, UC-BEH-POP-006 |
| Primaire entiteiten | PopupDetails |
| Secundaire entiteiten / events | PopupType, PopupVariant, PopupInputType, ButtonTheme, Users, popup-register, popup-themes |
| Gerelateerde popups | POP-BEH-GEN-UNSAVED-CHANGES |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
De beheerder wijzigt toegestane popupvelden in de editor. Deze usecase beschrijft de niet-persistente bewerkstaat: de invoer wordt in de UI aangepast, direct gecontroleerd en als wijzigingspayload voorbereid. De database wordt pas gewijzigd wanneer de beheerder opslaat via UC-BEH-POP-004.
Popupbeheer is geen vrije popupbuilder. Het beheer werkt binnen bestaande popuprecords en respecteert de scheiding tussen beheerbare inhoud en codegedreven structuur. Popupteksten, knopteksten, acties, inputvelden en themekeuzes worden niet in usecases gedupliceerd.
3. Scope
Deze usecase beschrijft:
- Bewerken van beheerbare velden in een bestaand popuprecord.
- Beschermen van technische read-only velden in de UI en in de wijzigingspayload.
- Direct tonen van veldvalidatie en dirty state.
- Voorbereiden van een opslaanpayload voor
UC-BEH-POP-004. - Waarschuwen bij verlaten met niet-opgeslagen wijzigingen wanneer generiek formuliergedrag actief is.
Deze usecase beschrijft niet:
- Nieuwe popuprecords aanmaken via de GUI.
- Popuprecords verwijderen of deactiveren via de GUI.
PopupKey,Variant,ThemeKey, knopacties ofCustomRendererKeywijzigen.- Popup-themes beheren.
- Runtime bepalen wanneer popups in gebruikersflows verschijnen.
- Popupteksten of knopteksten buiten het popupregister dupliceren.
- Onderliggende code, migraties of seeddefinities wijzigen via de beheerinterface.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd en heeft een actief intern OefenHub-account. |
| PRE-002 | De gebruiker heeft server-side een actieve beheerderrol. |
| PRE-003 | De route of actie ligt binnen Site Instellingen > Popups beheren. |
| PRE-004 | De frontend gebruikt actuele serverrespons en vertrouwt niet op oude clientstate. |
| PRE-005 | Popupregister en popup-themes zijn als bronafspraak beschikbaar voor interpretatie van popuprecords. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De beheerder heeft één of meer beheerbare velden in de editor aangepast of ongewijzigd gelaten. |
| POST-002 | De editor toont dirty state en eventuele invoerfouten. |
| POST-003 | Er is geen PopupDetails-record of historyrecord gewijzigd. |
| POST-004 | Een geldige wijzigingspayload kan worden aangeboden aan UC-BEH-POP-004. |
| POST-005 | Read-only technische velden zijn niet als wijziging geaccepteerd. |
6. Trigger
De beheerder kiest na het openen van een popupdetail een beheerbaar veld en past de inhoud aan.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Beheerder | Popupdetail | Activeert bewerkmodus. | Frontend toont alleen beheerbare velden als invoerveld. | UC-BEH-POP-002. |
| 2 | Frontend | Editor | Houdt originele serverwaarden vast als vergelijkingsbasis. | Dirty state kan worden bepaald. | Geen databasewijziging. |
| 3 | Beheerder | Editor | Wijzigt titel, tekst, knoptekst of inputlabel. | Frontend voert directe invoercontrole uit. | Voorvalidatie. |
| 4 | Frontend | Editor | Controleert veldlengtes en lokale veldregels. | Ongeldige invoer wordt bij het veld gemarkeerd. | Titel 50, tekst 1000, knoptekst 20. |
| 5 | Frontend | Editor | Beschermt read-only velden. | PopupKey, Variant, ThemeKey, acties en rendererkeys blijven niet-wijzigbaar. | Codegedreven velden. |
| 6 | Frontend | Editor | Bepaalt of een echte wijziging bestaat. | Opslaan wordt pas zinvol bij gewijzigde beheerbare velden. | Dirty state. |
| 7 | Beheerder | Editor | Kiest Opslaan. | Frontend start UC-BEH-POP-004 met alleen toegestane velden. | Vervolgusecase. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 | De gebruiker verliest beheerdercontext. | Bewerken wordt geblokkeerd of beëindigd. | Inline melding of veilige redirect. | Geen. |
| ALT-002 | 3 | Invoer overschrijdt lokale lengtecontrole. | Veld wordt gemarkeerd; opslaan blijft geblokkeerd of leidt tot servervalidatie. | Inline validatie. | Geen. |
| ALT-003 | 5 | Een read-only veld wordt via clientmanipulatie meegestuurd. | De payload wordt niet vertrouwd; servervalidatie in UC-BEH-POP-004 blokkeert dit. | Inline of opslagfout. | Geen binnen deze usecase. |
| ALT-004 | 6 | De beheerder herstelt alle waarden naar origineel. | Dirty state verdwijnt; opslaan wordt niet aangeboden als wijziging. | Niet van toepassing. | Geen. |
| ALT-005 | 7 | De beheerder verlaat de editor met niet-opgeslagen wijzigingen. | Generieke verlaten-waarschuwing kan worden getoond. | POP-BEH-GEN-UNSAVED-CHANGES. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-BEH-POP-003-001 | Deze usecase wijzigt alleen editorstate en slaat niets persistent op. |
| BR-UC-BEH-POP-003-002 | Alleen beheerbare velden mogen als invoerveld beschikbaar zijn. |
| BR-UC-BEH-POP-003-003 | Read-only velden blijven zichtbaar of beschikbaar als metadata, maar niet wijzigbaar. |
| BR-UC-BEH-POP-003-004 | Frontendvalidatie ondersteunt de gebruiker maar vervangt servervalidatie nooit. |
| BR-UC-BEH-POP-003-005 | Opslaan en historyregistratie horen uitsluitend bij UC-BEH-POP-004. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Beheerdercontext | Server-side actieve beheerderrol verplicht. |
| Popuprecord | Het record moet bestaan en als bestaand popuprecord bekend zijn. |
| PopupKey | Moet bestaan en blijft read-only. |
| Variant | Moet een bekende PopupVariant zijn en blijft read-only. |
| ThemeKey | Blijft read-only en moet verwijzen naar een bestaande themedefinitie. |
| Knopacties | ActionCallMethod en technische actie-identifiers zijn read-only. |
| CustomRendererKey | Alleen relevant bij Custom-popups en blijft read-only. |
| Titel | Maximaal 50 tekens wanneer beheerbaar. |
| Tekst | Maximaal 1000 tekens wanneer beheerbaar. |
| Knoptekst | Maximaal 20 tekens per zichtbare knop wanneer beheerbaar. |
| Inputlabel | Alleen beheerbaar wanneer de bestaande variant een inputveld ondersteunt. |
| Rendering | Beheerbare tekst mag geen actieve of onveilige inhoud veroorzaken. |
| Tijdstip | Wijzigingsmomenten worden in UTC vastgelegd. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| Alle stappen | Clientstate | Editorstate | Niet-persistente bewerkstaat voor beheerbare velden. |
| Alle stappen | Database | Niet van toepassing | Er wordt geen databasewijziging uitgevoerd. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| PopupDetails | Wordt pas gewijzigd door UC-BEH-POP-004. |
| PopupDetailsHistory en PopupDetailsHistoryItems | Worden pas aangemaakt na succesvolle opslag in UC-BEH-POP-004. |
| PopupKey, Variant, ThemeKey, ActionCallMethod en CustomRendererKey | Blijven read-only en codegedreven. |
| Popupregister en popup-themes | Worden niet door editorstate gewijzigd. |
| Runtime gebruikersdata | Niet geraakt door bewerken van popupvelden. |
13. State diagram
Deze usecase heeft geen persistent state diagram. De enige toestand is niet-persistente editorstate in de beheerinterface.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
Usecases verwijzen alleen naar PopupKey. Popupteksten, knopteksten, acties, inputvelden en themakeuzes worden centraal beheerd in het popupregister en de popup-themes.
| PopupKey | Moment | Doel |
|---|---|---|
| POP-BEH-GEN-UNSAVED-CHANGES | Bij verlaten met niet-opgeslagen beheerbare wijzigingen. | Voorkomen dat editorwijzigingen onbedoeld verloren gaan. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft welke popupvelden beheerbaar zijn, welke velden read-only blijven en hoe de beheerder bestaande popuprecords raadpleegt of wijzigt. |
| Technisch Ontwerp | Technisch Ontwerp: domeinmodel en admin-eigenaarschap, databaseontwerp en frontendcompositie beschrijven de technische uitwerking. Beschrijf server-side autorisatie, readmodelopbouw, commandverwerking en historyregistratie, inclusief bescherming van technische sleutels en codegedreven velden. |
| Software Requirements Specificatie | Beschrijft requirements voor toegangscontrole, validatiegrenzen, veilige foutafhandeling, immutable history en de scheiding tussen beheerbare tekst en technische popupdefinities. |
| Database-informatie | Controleer aansluiting van PopupDetails, PopupDetailsHistory en PopupDetailsHistoryItems, inclusief veldlengtes, concurrency en auditvelden. |
| Ontwerpbronnen en registers | Houd popupregister, popup-themes, autorisatiematrix, usecase-popup-matrix en usecase-requirement-matrix consistent met deze usecase. |
19. SRS-trace
Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.
| Usecase-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-BEH-POP-003-001 | SRS-ADM-002 SRS-ADM-001 AC-ADM-002 AC-ADM-001 | De actie uitsluitend toestaan aan gebruikers met een actieve beheerderrol |
REQ-UC-BEH-POP-003-002 | SRS-AUTH-001 SRS-AUTH-002 SRS-ADM-002 SRS-ADM-001 AC-AUTH-001 AC-AUTH-002 AC-ADM-002 AC-ADM-001 | Alle beheerautorisatie server-side controleren en mag niet vertrouwen op clientstate of routeparameters |
REQ-UC-BEH-POP-003-003 | SRS-AUTH-004 SRS-ACC-003 SRS-ACC-005 SRS-ADM-001 SRS-POP-001 SRS-NFR-SEC-001 AC-AUTH-004 AC-ACC-003 AC-ACC-005 AC-ADM-001 AC-POP-001 AC-NFR-SEC-001 | Onbekende, ontbrekende of niet-toegankelijke popuprecords veilig afhandelen zonder technische details te tonen |
REQ-UC-BEH-POP-003-004 | SRS-ADM-001 SRS-POP-001 AC-ADM-001 AC-POP-001 | PopupKey, Variant, ThemeKey, knopacties en CustomRendererKey read-only houden in de beheerinterface |
REQ-UC-BEH-POP-003-005 | SRS-ADM-001 SRS-POP-001 AC-ADM-001 AC-POP-001 | Popupteksten, knopteksten, inputlabels en themekeuzes niet dupliceren buiten het centrale popupregister en popup-themes |
REQ-UC-BEH-POP-003-006 | SRS-ADM-001 AC-ADM-001 | Editorwijzigingen als niet-persistente bewerkstaat behandelen totdat de beheerder expliciet opslaat via UC-BEH-POP-004 |
REQ-UC-BEH-POP-003-007 | SRS-ADM-001 AC-ADM-001 | Alleen beheerbare velden wijzigbaar tonen en read-only velden beschermen tegen aanpassing in de payload |
REQ-UC-BEH-POP-003-008 | SRS-ADM-001 SRS-NFR-AUD-001 AC-ADM-001 AC-NFR-AUD-001 | Gewijzigde velden herkenbaar maken zonder database- of historymutatie |
REQ-UC-BEH-POP-003-009 | SRS-ADM-001 AC-ADM-001 | Titel, tekst, knopteksten en inputlabels valideren op de vastgestelde maximale lengtes wanneer deze velden beheerbaar zijn |
REQ-UC-BEH-POP-003-010 | SRS-ADM-001 SRS-POP-001 AC-ADM-001 AC-POP-001 | De usecase Popupvelden wijzigen uitvoeren binnen de afbakening van Beheerder / Popupbeheer |