Commit Graph

23 Commits

Author SHA1 Message Date
845665c8be feat: per-subscriber Mailwizz sync button on admin list
Add POST route and form request to queue SyncSubscriberToMailwizz for one
subscriber when the page has Mailwizz configured. Include Dutch strings
and feature tests for auth and edge cases.

Made-with: Cursor
2026-04-05 13:45:30 +02:00
91caa16e70 feat: Mailwizz overview vs wizard flow and wizard step guard
Load Weeztix config for coupon mapping context, redirect incomplete
configs to step one, and expand admin Mailwizz UI and tests.

Made-with: Cursor
2026-04-05 13:34:00 +02:00
7ed660ec55 chore(public): remove fixed post-submit coupon explanation text
Made-with: Cursor
2026-04-05 11:24:01 +02:00
9f8052f683 fix(public): do not expose coupon code after preregistration
Codes are still created and stored for Mailwizz; JSON response omits
coupon_code. Thank-you UI explains email delivery instead of showing code.

Made-with: Cursor
2026-04-05 11:22:38 +02:00
217e1d9afb fix(weeztix): allow OAuth reconnect in wizard step 2 and re-sync company
Always sync company from profile after OAuth; remove skip when company_guid
was already set. Step 2 shows reconnect for connected users plus link to step 3.

Made-with: Cursor
2026-04-05 11:16:49 +02:00
89931b817d feat(admin): Weeztix setup wizard, integration status badges
- Summary view when Weeztix is configured; edits only via 3-step wizard
- Step 1: reuse or replace OAuth client ID/secret; callback URL shown
- Step 2: OAuth connect (resume wizard after callback when started from wizard)
- Step 3: coupon, prefix, usage; finishing exits wizard
- PreregistrationPage: mailwizz/weeztix integration status helpers
- Pages index: Integrations column with MW/WZ badges; edit page: status cards

Made-with: Cursor
2026-04-05 11:12:10 +02:00
55434ce086 feat(weeztix): add button to refresh coupon list from API
Made-with: Cursor
2026-04-05 10:59:46 +02:00
6561bda30d feat(weeztix): auto company from OAuth, remove company UI
Store company_guid after OAuth via profile API; drop company select and
companies endpoint. Coupons AJAX uses stored company only. Form request
no longer accepts company fields from the browser.

Made-with: Cursor
2026-04-05 10:56:29 +02:00
70c1d25ad4 fix: preserve Weeztix saved company/coupon after reload (Alpine sync)
Stop clearing DB-backed labels when API omits names; inject select options
for saved GUIDs when lists fail or omit rows; parse usage_count from JSON;
show OAuth fields hint when credentials already stored.

Made-with: Cursor
2026-04-05 10:44:47 +02:00
d3abdb7ed9 feat: add Weeztix OAuth, coupon codes, and Mailwizz mapping
Implement Weeztix integration per documentation: database config and
subscriber coupon_code, OAuth redirect/callback, admin setup UI with
company/coupon selection via AJAX, synchronous coupon creation on public
subscribe with duplicate and rate-limit handling, Mailwizz field mapping
for coupon codes, subscriber table and CSV export, and connection hint
on the pages list.

Made-with: Cursor
2026-04-04 14:52:41 +02:00
17e784fee7 feat: E.164 phone validation and storage with libphonenumber
- Add giggsey/libphonenumber-for-php, PhoneNumberNormalizer, ValidPhoneNumber rule

- Store subscribers as E.164; mutator normalizes on save; optional phone required from form block

- Migration to normalize legacy subscriber phones; Mailwizz/search/UI/tests updated

- Add run-deploy-from-local.sh and PREREGISTER_DEFAULT_PHONE_REGION in .env.example

Made-with: Cursor
2026-04-04 14:25:52 +02:00
5a67827c23 feat: optional fixed viewport background on public pages
Adds background_fixed column, admin checkbox, fixed-position layers on the public layout, Dutch strings, and store tests.

Made-with: Cursor
2026-04-04 13:36:26 +02:00
26258c5f8b fix: avoid visible leading space in whitespace-pre-line blocks
Render hero subheadline and expired message on one line so Blade indentation is not preserved by whitespace-pre-line.

Made-with: Cursor
2026-04-04 10:34:45 +02:00
ed85e5c537 feat: delete subscribers from page subscriber list
Adds DELETE route, form request authorization, admin UI with confirm, Dutch strings, and feature tests.

Made-with: Cursor
2026-04-04 01:29:32 +02:00
3c9b1d9810 Add visual improvements 2026-04-04 01:20:01 +02:00
ff58e82497 Implemented a block editor for changing the layout of the page 2026-04-04 01:17:05 +02:00
4f3fefca5c chore: checkpoint before block builder refactor 2026-04-03 23:03:09 +02:00
330950cc6e feat: Phase 5 - polish, validation, rate limiting, Dutch translations 2026-04-03 22:13:59 +02:00
83e2158383 feat: Phase 4 - Mailwizz integration with subscriber sync and retry 2026-04-03 22:03:53 +02:00
a1d570254e feat: Phase 3 - public registration pages and Mailwizz config 2026-04-03 21:42:19 +02:00
cf026f46b0 feat: Phase 2 - page CRUD, subscriber management, user management 2026-04-03 21:15:40 +02:00
78e1be3e3b feat: Phase 2 - admin layout, dashboard, page CRUD, subscribers, user management 2026-04-03 20:09:20 +02:00
904cf1241b feat: initial project with Phase 1 complete 2026-04-03 19:56:38 +02:00