Merge commit 'b3b4f77'
# Conflicts: # themes/intotheeast/templates/partials/trip-feed-col.html.twig # themes/intotheeast/templates/trip.html.twig
This commit is contained in:
+143
-21
@@ -1,87 +1,209 @@
|
||||
---
|
||||
title: 'New journal entry'
|
||||
title: 'New Entry'
|
||||
template: post-form
|
||||
access:
|
||||
site.login: true
|
||||
|
||||
# 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:
|
||||
parent: /trips/italy-2026-demo/dailies
|
||||
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
|
||||
action: /post
|
||||
enctype: multipart/form-data
|
||||
fields:
|
||||
# Photos come first — they anchor what you'll write (Photos → Title →
|
||||
# Content). After upload post-form.js auto-collapses this into a summary
|
||||
# bar so the thumbnails don't crowd the writing area.
|
||||
-
|
||||
name: photos
|
||||
label: Photos (1–6)
|
||||
# Grav-managed filepond field. post-form.js hooks its beforeAddFile
|
||||
# to convert HEIC->JPEG in the browser, then re-adds the JPEG via the
|
||||
# public pond.addFile() API — FilePond keeps ownership of the upload
|
||||
# and page-attach contract (U4).
|
||||
type: filepond
|
||||
multiple: true
|
||||
destination: '@self'
|
||||
# Max 6 photos per entry; at least 1 is required (enforced
|
||||
# client-side in post-form.js initValidation).
|
||||
limit: 6
|
||||
accept:
|
||||
- 'image/*'
|
||||
|
||||
-
|
||||
name: title
|
||||
label: Title
|
||||
type: text
|
||||
autofocus: true
|
||||
validate:
|
||||
required: true
|
||||
|
||||
-
|
||||
name: date
|
||||
label: 'Date & Time'
|
||||
label: Date & Time
|
||||
# Rendered as a native <input type="datetime-local"> by the theme
|
||||
# override at templates/forms/fields/datetime/datetime.html.twig.
|
||||
# No `default: now` — the stock text fallback would print the literal
|
||||
# string "now" into the picker; post-form.js prefills the current
|
||||
# local time instead (and the client validator requires this field).
|
||||
type: datetime
|
||||
default: now
|
||||
format: 'Y-m-d H:i'
|
||||
validate:
|
||||
required: true
|
||||
|
||||
-
|
||||
name: content
|
||||
label: 'What happened today?'
|
||||
label: "What happened today?"
|
||||
type: textarea
|
||||
rows: 10
|
||||
validate:
|
||||
required: true
|
||||
-
|
||||
name: photos
|
||||
label: 'Photos (max 4)'
|
||||
type: filepond
|
||||
multiple: true
|
||||
destination: '@self'
|
||||
limit: 4
|
||||
accept:
|
||||
- 'image/*'
|
||||
|
||||
-
|
||||
name: lat
|
||||
label: Latitude
|
||||
type: text
|
||||
placeholder: 'tap "Get Location" below'
|
||||
|
||||
-
|
||||
name: lng
|
||||
label: Longitude
|
||||
type: text
|
||||
placeholder: ''
|
||||
|
||||
-
|
||||
name: location_city
|
||||
label: City
|
||||
type: text
|
||||
placeholder: 'e.g. Kyoto'
|
||||
|
||||
-
|
||||
name: location_country
|
||||
label: Country
|
||||
type: text
|
||||
placeholder: 'e.g. Japan'
|
||||
-
|
||||
name: weather_temp_c
|
||||
type: hidden
|
||||
|
||||
-
|
||||
name: weather_desc
|
||||
label: Weather Condition
|
||||
type: select
|
||||
default: ''
|
||||
options:
|
||||
'': '— none —'
|
||||
'Sunny': '☀️ Sunny'
|
||||
'Partly cloudy': '⛅ Partly cloudy'
|
||||
'Cloudy': '☁️ Cloudy'
|
||||
'Foggy': '🌫️ Foggy'
|
||||
'Drizzle': '🌦️ Drizzle'
|
||||
'Rain': '🌧️ Rain'
|
||||
'Snow': '❄️ Snow'
|
||||
'Thunderstorm': '⛈️ Thunderstorm'
|
||||
|
||||
-
|
||||
name: weather_temp_c
|
||||
label: 'Temperature (°C)'
|
||||
type: number
|
||||
placeholder: 'tap "Get Weather" or type it'
|
||||
validate:
|
||||
min: -60
|
||||
max: 60
|
||||
|
||||
-
|
||||
name: transport_mode
|
||||
label: 'How I got here'
|
||||
type: select
|
||||
default: ''
|
||||
options:
|
||||
'': '— not specified —'
|
||||
'walking': '🚶 Walking'
|
||||
'bicycle': '🚲 Bicycle'
|
||||
'bus': '🚌 Bus'
|
||||
'train': '🚆 Train'
|
||||
'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
|
||||
type: toggle
|
||||
classes: advanced-field
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: 'Yes'
|
||||
0: 'No'
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
-
|
||||
name: featured
|
||||
label: Featured highlight
|
||||
type: toggle
|
||||
classes: advanced-field
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: 'Yes'
|
||||
0: 'No'
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
novalidate: true
|
||||
|
||||
buttons:
|
||||
-
|
||||
type: submit
|
||||
value: 'Post Daily'
|
||||
value: Post Daily
|
||||
classes: btn-post
|
||||
|
||||
process:
|
||||
add_page: true
|
||||
upload: true
|
||||
message: 'Entry posted successfully!'
|
||||
reset: true
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user