Ga naar inhoud

Agenda (overzicht en detail)

Doel & URL('s)

Agenda van GB-evenementen (toerustingsavonden, vergaderingen, e.d.). Voor alle bezoekers.

  • Overzicht: /agenda/ — CPT-archief van gb-event.
  • Detail: /agenda/{slug}/ — single gb-event.

Overzichts-URL is een CPT-archief

De WP-pagina "Evenementen" (#458) staat op dezelfde URL met een verwijzing naar een niet-bestaand template; het CPT-archief wint. De pagina dient alleen als link-doel in de thema-optie GB_events_archive.

Opbouw

Overzicht /agenda/

Layout met sidebar rechts:

  1. h1 "Agenda".
  2. Grid met uitsluitend komende events (minstens één datum ≥ vandaag), oplopend gesorteerd op eerste datum:
    • Items 1–2 groot: afbeelding met overlay (titel, datum, tijd "xx uur").
    • Verdere items compact met datumblok (dag + maand), titel-link, volledige datum en tijd.
  3. Paginering (zie Bekende afwijkingen: functioneel dood).
  4. Sidebar rechts: alleen de sidebar-CTA.

Lege staat: geen komende events → lege lijst (op de productiedata van het meetmoment was dit de feitelijke situatie).

Detail /agenda/{slug}/

Layout met sidebar rechts:

  1. Beeldheader met titel-overlay, alleen bij een eigen afbeelding; zonder eigen afbeelding een h1 in de content.
  2. Intro als lead-paragraaf + hoofdtekst (event_text) + eventuele flexibele blokken (event_components, zelfde layouts als op standaardpagina's).
  3. Footer: auteursblok (op productie nooit gevuld) + share-blok "Deel dit evenement:".
  4. Sidebar rechts — infoblok "Informatie" (c-event-details):
    • Per rij uit de datums-repeater: "Datum: {D j M. Y}" + tijd met suffix "uur" (alleen indien gevuld).
    • "Locatie" en "Kosten" — elk alleen indien ingevuld.

Databronnen

Gegeven Bron
Events (overzicht) Alle {prefix}-event-types met minstens één event_dates_$_event_date >= vandaag, meta Websites LIKE 'GB'; sortering sort_date ASC (meta sort_date = eerste datumrij, automatisch gevuld bij opslaan)
Afbeelding ACF event_image (fallback: optie GB_fallback_image)
Intro ACF event_intro (overzicht: eerste 130 tekens)
Hoofdtekst ACF event_text + flexible content event_components
Datums/tijden ACF-repeater event_dates (event_date date picker, event_time time picker)
Locatie / kosten ACF event_location; event_costs staat niet meer in de ACF-JSON en kan alleen bij oude data als losse post_meta gevuld zijn (zie afwijkingen)

Gedrag & rollen

  • Publiek; geen toegangschecks, geen rolverschillen.
  • Events in het verleden verschijnen niet in het overzicht (maar de detailpagina blijft bereikbaar via de directe URL).
  • Cross-sub-site: WV/CGC-events die GB-zichtbaar zijn, verschijnen in de GB-agenda met ?t=GB-link.

Acceptatiecriteria

Overzicht

  • Als anonieme bezoeker op /agenda/ zie ik h1 "Agenda" en uitsluitend events met minstens één datum vandaag of later, oplopend gesorteerd op eerste datum.
  • Als bezoeker zijn de eerste 2 events groot met afbeelding-overlay en de verdere events compact met datumblok (dag + maand uit de eerste datumrij).
  • Als bezoeker toont een event met ingevulde tijd de tijd met suffix "uur"; zonder tijd wordt geen tijd getoond.
  • Als bezoeker klik ik op een event, dan navigeer ik naar /agenda/{slug}/.
  • Als er geen komende events zijn, dan is de lijst leeg (geen events uit het verleden zichtbaar).
  • Als bezoeker staat in de sidebar de sidebar-CTA.

Detail

  • Als bezoeker op een event mét eigen afbeelding zie ik een beeldheader met titel-overlay; zonder eigen afbeelding een gewone h1.
  • Als bezoeker zie ik intro en hoofdtekst van het event.
  • Als bezoeker toont het infoblok "Informatie" álle datumrijen uit de repeater, elk als "Datum: {datum}" met tijd-suffix "uur" indien gevuld.
  • Als bezoeker verschijnen de regels "Locatie" en "Kosten" alleen wanneer die velden gevuld zijn.
  • Als bezoeker staat onder het event het share-blok "Deel dit evenement:".
  • Als bezoeker geeft een niet-bestaande slug (/agenda/bestaat-niet/) een 404-pagina met HTTP-status 404.

Bekende afwijkingen

NIET nabouwen in Next.js — wel vermelden in het testrapport

  1. De paginering van het agenda-overzicht is functioneel dood: de pagineringslinks worden berekend over álle events (inclusief verleden, 98 op productie → 5 pagina's), terwijl de getoonde lijst uit een eigen "komende events"-query zonder paginaparameter komt. /agenda/page/2/ toont daardoor dezelfde lijst als pagina 1. Rebuild-beslispunt: paginering verwijderen óf werkend maken over de komende events.
  2. De velden event_type, event_author, event_costs en event_category worden in code gelezen maar staan niet in de ACF-JSON (waarden bestaan hooguit als losse post_meta); het auteursblok is op productie nergens zichtbaar.
  3. Een lijst "coming-events" wordt voor de detailpagina berekend maar nergens gerenderd (dode data).
  4. De WP-pagina "Evenementen" (#458) is onbereikbaar (overschaduwd door het CPT-archief); alleen relevant als link-doel.