docs: insert Phase 12.2 admin form fields with deferred binding (v0.1.1)
This commit is contained in:
@@ -654,6 +654,27 @@ Plans:
|
|||||||
Plans:
|
Plans:
|
||||||
- [ ] TBD (run /gsd-plan-phase 12.1 to break down)
|
- [ ] TBD (run /gsd-plan-phase 12.1 to break down)
|
||||||
|
|
||||||
|
### Phase 12.2: Admin form fields: date, file upload, relation editing with deferred binding (INSERTED)
|
||||||
|
|
||||||
|
**Goal:** A plugin's admin forms cover the three gaps a downstream project on SummerCMS v0.1 hit: a date/datetime field, a file upload field, and creating, editing and deleting related records inside the parent form (WinterCMS RelationController parity). Uploads and related-record changes on a record that is not saved yet use Winter-like deferred binding: they are held against a session key and committed with the parent's first save, or discarded with it.
|
||||||
|
**Requirements**: TBD
|
||||||
|
**Depends on:** Phase 9 (cabana form schema and relation-manager), Phase 12 plan 12-01 (`lagoon/attach` public URLs, webp, image-dimension guard)
|
||||||
|
**Repos:** summercms.go only (`modules/cabana`, `modules/lagoon/attach`, the admin SPA); framework READMEs and `docs/` updated in the same change
|
||||||
|
**Release:** ships as tag v0.1.1
|
||||||
|
**Ordering:** urgent; independent of Phase 12.1 and Phase 13, and Phase 12.1's relation managers can use it
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
|
||||||
|
1. `fields.yaml` accepts `type: datepicker` with Winter's `mode` (date, datetime, time) and stores date, timestamp and time columns without a plugin defining its own date types.
|
||||||
|
2. `type: fileupload` handles `attachOne` and `attachMany` relations: upload with size and MIME limits from the field config, image preview and thumbnail, remove, and reorder for `attachMany`. It works on both saved and unsaved records.
|
||||||
|
3. The relation manager creates, updates and deletes `hasMany` (and `belongsToMany` with pivot) related records in a modal driven by the related model's `fields.yaml`, alongside the existing link and unlink. Every child endpoint is scoped to its parent record, so a child of another parent can be neither read nor changed.
|
||||||
|
4. Deferred binding: on an unsaved parent, uploads and related-record changes bind to a session key, are committed in the parent's create transaction, and are discarded with the session. Orphaned deferred bindings and their files are purged.
|
||||||
|
5. The new code has unit tests, delivered in the phase's last plan, and the docs checker passes.
|
||||||
|
|
||||||
|
**Plans:** 0 plans
|
||||||
|
|
||||||
|
Plans:
|
||||||
|
- [ ] TBD (run /gsd-plan-phase 12.2 to break down)
|
||||||
|
|
||||||
### Phase 13: Płytarium API — wishlist, notifications, CSV, credentials, public routes
|
### Phase 13: Płytarium API — wishlist, notifications, CSV, credentials, public routes
|
||||||
|
|
||||||
**Goal**: The remaining core API surface — wishlist, notifications, CSV import/export, per-user/org credentials, and onboarding/public/invitation routes — is ported with byte-compatible shapes and their own public rate-limit buckets.
|
**Goal**: The remaining core API surface — wishlist, notifications, CSV import/export, per-user/org credentials, and onboarding/public/invitation routes — is ported with byte-compatible shapes and their own public rate-limit buckets.
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ current_phase: 12
|
|||||||
current_phase_name: Płytarium API — Collections and Albums
|
current_phase_name: Płytarium API — Collections and Albums
|
||||||
status: executing
|
status: executing
|
||||||
stopped_at: Completed 12-03-PLAN.md
|
stopped_at: Completed 12-03-PLAN.md
|
||||||
last_updated: "2026-10-02T11:18:14.935Z"
|
last_updated: "2026-10-02T12:36:15.774Z"
|
||||||
last_activity: 2026-10-02
|
last_activity: 2026-10-02
|
||||||
last_activity_desc: Phase 12 execution started
|
last_activity_desc: Phase 12 execution started
|
||||||
state_head: 6f37a3782f59f1d786016197f485c6d8f466e38e
|
state_head: 66497635906aea588e28ba6d34afc6576423a662
|
||||||
progress:
|
progress:
|
||||||
total_phases: 20
|
total_phases: 21
|
||||||
completed_phases: 10
|
completed_phases: 10
|
||||||
total_plans: 101
|
total_plans: 101
|
||||||
completed_plans: 99
|
completed_plans: 99
|
||||||
@@ -168,6 +168,7 @@ Progress: [██████░░░░] 60%
|
|||||||
- Phase 11.3 inserted after Phase 11.2: Newsletter plugin and signup on summercms.io (split out of the original 11.2)
|
- Phase 11.3 inserted after Phase 11.2: Newsletter plugin and signup on summercms.io (split out of the original 11.2)
|
||||||
- Phase 11.3 deferred to the backlog as Phase 999.1 (2026-10-02): the Journal plugin and delivering Płytarium take priority
|
- Phase 11.3 deferred to the backlog as Phase 999.1 (2026-10-02): the Journal plugin and delivering Płytarium take priority
|
||||||
- Phase 12.1 inserted after Phase 12: User plugin admin screens (sm-user-plugin): Users, User Groups, Organisations admin, before Phase 15 cutover
|
- Phase 12.1 inserted after Phase 12: User plugin admin screens (sm-user-plugin): Users, User Groups, Organisations admin, before Phase 15 cutover
|
||||||
|
- Phase 12.2 inserted after Phase 12: Admin form fields: date picker, file upload and relation-manager create/update/delete with Winter-like deferred binding (RelationController parity); framework only, ships as tag v0.1.1; blocks a downstream project on v0.1 (URGENT)
|
||||||
|
|
||||||
### Decisions
|
### Decisions
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user