--- 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. pageconfig: slug_field: 'date,title' overwrite_mode: false 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 validate: required: true - name: date label: Date & Time # Rendered as a native 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 format: 'Y-m-d H:i' validate: required: true - name: content label: "What happened today?" type: textarea rows: 10 validate: required: true - 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_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' # 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: 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 classes: btn-post process: add_page: true upload: true message: 'Entry posted successfully!' reset: true ---