feat(post-form): U1 — shared create/edit form + published field + owner_username
One /post form now drives both create and edit (KTD1, Alt B): cache-on-save toggles add-page-by-form's overwrite_mode per submit — 'edit' when the new hidden edit_path field is filled (write back in place, stable URL), 'false' when empty (fresh dated folder via slug_field). add-page-by-form stays stock (no fork); the toggle lives in cache-on-save, which reads edit_path and mutates the /post page header's pageconfig before add-page-by-form's onFormProcessed runs. - post-form.md: overwrite_mode:false (create-safe fallback), hidden edit_path, authoritative published toggle (default on), removed the static pagefrontmatter.published so the field wins on every submit (KTD3). - cache-on-save.php: editPathFromForm + setOverwriteMode helpers. - site.yaml: owner_username (single source of truth for the KTD8 owner gate). Verified against the 2.0.4 container: create writes a fresh dated folder with published:true/false as a real boolean (V1, V2); edit writes in place with the slug/URL unchanged; save-as-draft-on-create works. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H1FrCYNq6RXdGYbn5PFrhM
This commit is contained in:
@@ -6,13 +6,21 @@ access:
|
||||
|
||||
# Parent (write target) is injected server-side from site.active_trip by the
|
||||
# cache-on-save plugin (onFormValidationProcessed) — no manual sync needed.
|
||||
#
|
||||
# overwrite_mode is toggled per submit by cache-on-save (KTD1, Alt B): edit when
|
||||
# the hidden edit_path field is filled (write back in place), false when empty
|
||||
# (create a fresh dated folder via slug_field). The static value here is the
|
||||
# create-safe fallback for if cache-on-save doesn't run — add-page-by-form stays
|
||||
# stock (no fork), so a static `edit` would break create (empty edit_path -> '.').
|
||||
pageconfig:
|
||||
slug_field: 'date,title'
|
||||
overwrite_mode: false
|
||||
|
||||
# published is NOT a static pagefrontmatter default anymore — it is an
|
||||
# authoritative form field (below) so every submit (create AND edit) writes the
|
||||
# owner's chosen publish state. Only `template` stays static here.
|
||||
pagefrontmatter:
|
||||
template: entry
|
||||
published: true
|
||||
|
||||
form:
|
||||
name: new-entry
|
||||
@@ -129,11 +137,36 @@ form:
|
||||
'car': '🚗 Car'
|
||||
'plane': '✈️ Plane'
|
||||
|
||||
# Hidden edit target. Empty on create (add-page-by-form falls through to
|
||||
# slug_field and writes a fresh dated folder); on edit, post-form.js sets
|
||||
# it to the entry's path so overwrite_mode:edit writes back in place.
|
||||
-
|
||||
name: edit_path
|
||||
type: hidden
|
||||
default: ''
|
||||
|
||||
# Advanced fields — collapsed behind "More options" (see U5).
|
||||
# No hero_image field: journal entries render their hero from the first
|
||||
# uploaded photo (entry-journal.html.twig uses entry.media.images|first),
|
||||
# so an explicit hero filename was redundant. Stories still use hero_image
|
||||
# but they aren't posted through this form.
|
||||
-
|
||||
name: published
|
||||
label: Published
|
||||
# Authoritative publish state (replaces the removed static
|
||||
# pagefrontmatter.published). Default ON so new entries publish; the
|
||||
# owner flips it OFF to save/keep a draft, or to unpublish on edit.
|
||||
# validate.type:bool keeps it a real boolean in frontmatter (not '0').
|
||||
type: toggle
|
||||
classes: advanced-field
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: 'Yes'
|
||||
0: 'No'
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
-
|
||||
name: force_connect
|
||||
label: Force connector line
|
||||
|
||||
Reference in New Issue
Block a user