discourse/plugins/discourse-adplugin/app
Sam ede2ffbd86
FEATURE: redesign house ads admin UI with FormKit (#37799)
Modernize the house ads admin interface to align with
Discourse admin UI patterns:

- Extract HouseAdForm component using FormKit, replacing
  the controller-heavy approach with observers and buffered
  state
- Redesign index page with DPageSubheader, tabbed nav
  (Ads/Settings), d-admin-table, and empty state component
- Simplify show page to BackButton + HouseAdForm
- Harden backend controller: use Discourse::NotFound,
  derive id from URL params instead of body, remove id
  from permitted params to prevent injection, remove
  update-creates-if-missing behavior
- Add guard in route for missing house ads
- Fix group mapping to handle both object and scalar values
- Rewrite system spec as full lifecycle test with page object
- Use fab! over let in request specs, add coverage for 404
  and id injection edge cases

---------

Co-authored-by: Martin Brennan <martin@discourse.org>
2026-02-17 13:37:17 +10:00
..
controllers FEATURE: redesign house ads admin UI with FormKit (#37799) 2026-02-17 13:37:17 +10:00
models DEV: improve approach to removing JS from house ads (#37739) 2026-02-12 10:37:37 +11:00
serializers/ad_plugin Feature page routes for house ads (#36932) 2026-01-12 11:25:46 -06:00