feat(collections): add admin CRUD for collections
First admin increment of the collections module.
- Routes /admin/collections[...] guarded by rights >= 9, wired in the module's
own routes.php.
- CollectionsAdminController: paginated list with success flash, create/edit
form, store (CSRF, code format/required validation, code uniqueness), and
delete confirmation (FK cascade removes fields, sections, items, values).
- List/Save/DeleteCollectionUseCase, CollectionFormDTO/CollectionListItemDTO,
CollectionCodeAlreadyExistsException; repository gains create/update/delete
(update via model save to apply the settings cast).
- Admin templates (escape on output) and a Collections entry in the admin
sidebar menu.
- Exclude Application DTO/Exceptions from service autoload; use case tests.
- Routes /admin/collections[...] guarded by rights >= 9, wired in the module's
own routes.php.
- CollectionsAdminController: paginated list with success flash, create/edit
form, store (CSRF, code format/required validation, code uniqueness), and
delete confirmation (FK cascade removes fields, sections, items, values).
- List/Save/DeleteCollectionUseCase, CollectionFormDTO/CollectionListItemDTO,
CollectionCodeAlreadyExistsException; repository gains create/update/delete
(update via model save to apply the settings cast).
- Admin templates (escape on output) and a Collections entry in the admin
sidebar menu.
- Exclude Application DTO/Exceptions from service autoload; use case tests.