Voeg leesbare slug toe aan Offering naast het GUID-ID #10

Merged
Sluijsens merged 4 commits from feature/offering-slug into master 2026-08-04 16:38:54 +02:00
4 Commits
Author SHA1 Message Date
SluijsensandClaude Sonnet 5 927957f04f Herstel potlood-icoon voor de aanpassen-knop bij slug
Continuous Integration / config (pull_request) Successful in 12s
Continuous Integration / changes (pull_request) Successful in 21s
Continuous Integration / backend-build (pull_request) Successful in 4m24s
Continuous Integration / vulnerability-scan (pull_request) Successful in 4m2s
Continuous Integration / frontend-prepare (pull_request) Successful in 1m38s
Continuous Integration / backend-test (pull_request) Successful in 6m24s
Continuous Integration / frontend-build (pull_request) Successful in 2m9s
Continuous Integration / frontend-test (pull_request) Successful in 4m57s
Continuous Integration / frontend-lint (pull_request) Successful in 2m0s
Continuous Integration / publish-production (pull_request) Skipped
Continuous Integration / deploy-production (pull_request) Skipped
Continuous Integration / publish-test (pull_request) Successful in 6m2s
Continuous Integration / deploy-test (pull_request) Skipped
Consistent met de confirm/cancel-knoppen ernaast (ghost icon buttons)
in plaats van de tekst-linkknop.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 15:58:55 +02:00
SluijsensandClaude Sonnet 5 d09b3196d8 Toon live slug-preview inline naast titel in plaats van los blok
Op verzoek: "Slug: gegenereerde-slug [Aanpassen]" direct onder het
titelveld, waarbij de preview meebeweegt met wat je typt in Titel
(client-side mirror van de backend Slugifier) zolang de slug niet
handmatig is overschreven. Zodra de admin 'm expliciet aanpast en
niet leeg laat, stopt het meebewegen met de titel — consistent met
hoe OfferingsService.UpdateAsync de slug al behandelde.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 15:55:32 +02:00
SluijsensandClaude Sonnet 5 1b974696bf Maak slug in CMS zichtbaar en inline aanpasbaar
De CMS-admin toonde het nieuwe Slug-veld nog niet — dat bestond alleen
in de API-respons. Voegt een read-only slugweergave onder het
titelveld toe met een potlood-icoon om 'm inline te bewerken.

Backend: Create/UpdateOfferingRequest accepteren nu een optionele
Slug-override. Zonder expliciete waarde blijft het bestaande gedrag
(auto-genereren uit titel, regenereren bij titelwijziging). Met een
expliciete waarde wordt die genormaliseerd en op uniekheid
gecontroleerd; een botsing geeft 409 Conflict (RFC 9457 ProblemDetails,
naar het patroon van MasterControlledAvailabilityException).

Frontend: de slug wordt alleen meegestuurd als de admin 'm daadwerkelijk
bewerkt heeft (dirtyFields.slug), zodat een ongemoeide slug bij een
titelwijziging gewoon blijft auto-regenereren.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 15:31:10 +02:00
SluijsensandClaude Sonnet 5 cc09b46cfb Voeg leesbare slug toe aan Offering naast het GUID-ID
Continuous Integration / config (pull_request) Successful in 12s
Continuous Integration / changes (pull_request) Successful in 21s
Continuous Integration / frontend-prepare (pull_request) Skipped
Continuous Integration / frontend-build (pull_request) Skipped
Continuous Integration / frontend-test (pull_request) Skipped
Continuous Integration / frontend-lint (pull_request) Skipped
Continuous Integration / backend-build (pull_request) Successful in 4m31s
Continuous Integration / vulnerability-scan (pull_request) Successful in 3m57s
Continuous Integration / backend-test (pull_request) Successful in 6m11s
Continuous Integration / publish-production (pull_request) Skipped
Continuous Integration / deploy-production (pull_request) Skipped
Continuous Integration / publish-test (pull_request) Successful in 5m51s
Continuous Integration / deploy-test (pull_request) Skipped
Het Offering-ID is een GUID en niet geschikt om aan gebruikers te tonen.
Voeg een op de titel gebaseerde, unieke slug toe die via de public en
admin API wordt meegegeven, zodat de frontend iets leesbaars kan tonen
in plaats van het ruwe ID. Het ID blijft ongewijzigd de echte identifier.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 11:31:16 +02:00