# Posting a Journal Entry Two ways to post: the **mobile form** at `/post` (quick, phone-friendly) or the **Admin panel** at `/admin` (drafts, scheduling, editing). --- ## Quick start — mobile form 1. Open `/post` on your phone (login required) 2. Fill in **Title** and **Content** (required) 3. Tap **Get Location** → fills Lat/Lng automatically 4. Tap **Get Weather** → fills weather fields using your coordinates 5. Type **City** and **Country** (optional but nice) 6. Attach photos (optional) — first photo becomes the hero image 7. Tap **Submit** → entry appears in the feed immediately --- ## Form fields reference | Field | Required | Notes | |---|---|---| | Title | ✅ | Entry headline | | Content | ✅ | Markdown body | | Date | ✅ | Defaults to now — adjust if posting later | | Lat / Lng | — | Filled by Get Location; used for map marker | | City | — | Shown as `📍 Kyoto, Japan` on feed cards | | Country | — | Combined with City in location badge | | Weather | — | Filled by Get Weather (Open-Meteo, free, no key) | | Photos | — | All uploaded files appear in the gallery; first = hero | **Weather descriptions** (must be one of these if entered manually): `Sunny` · `Partly cloudy` · `Cloudy` · `Foggy` · `Drizzle` · `Rain` · `Snow` · `Thunderstorm` --- ## How it works (for debugging) ``` Browser → /post (post-form.md) └─ Grav Form plugin validates fields └─ add-page-by-form plugin ├─ reads pageconfig.parent (/trips//dailies) ├─ writes user/pages/01.trips//01.dailies//entry.md └─ moves uploaded photos into the page folder └─ cache-on-save plugin └─ calls $grav['cache']->deleteAll() → entry visible immediately └─ form shows success message ``` **Slug format:** `-.entry` Example: `2026-07-20-0930-first-day-in-kyoto.entry` **Entry folder structure:** ``` user/pages/01.trips/japan-korea-2026/01.dailies/ └─ 2026-07-20-0930-first-day-in-kyoto.entry/ ├─ entry.md ← frontmatter + markdown body ├─ temple.jpg ← hero image (or set hero_image in frontmatter) └─ market.jpg ← additional gallery image ``` --- ## Admin panel — drafts and scheduling Use the Admin panel at `/admin` for drafts, scheduled posts, or editing existing entries. 1. Log in at `/admin` 2. **Pages → Add Page** 3. Set **Parent Page** to `/trips//dailies` and **Template** to `entry` 4. Fill in the **Entry** tab (city, country, lat/lng, weather) 5. Write content in the **Content** tab 6. Upload photos in the **Media** tab 7. **Drafts:** set `published: false` — won't appear until you flip it to `true` 8. **Scheduling:** set `publish_date` in **Options → Scheduling** 9. Save The Admin form fields are defined by `user/themes/intotheeast/blueprints/entry.yaml`. --- ## Frontmatter reference Every entry supports these frontmatter fields: | Field | Type | Notes | |---|---|---| | `title` | string | Required | | `date` | datetime | Format: `Y-m-d H:i` (e.g. `2026-06-17 10:00`) | | `template` | string | Always `entry` | | `published` | bool | `true` to show in feed | | `lat` | string | Decimal degrees (e.g. `52.3676`) | | `lng` | string | Decimal degrees (e.g. `4.9041`) | | `location_city` | string | e.g. `Kyoto` | | `location_country` | string | e.g. `Japan` | | `weather_desc` | string | One of the allowed values above | | `weather_temp_c` | number | Celsius, displayed rounded | | `hero_image` | string | Filename to pin as hero (e.g. `temple.jpg`); auto-selects first image if blank | --- ## Troubleshooting **Entry doesn't appear in feed after submit** → Check that `active_trip` in `user/config/site.yaml` matches the parent in `user/pages/02.post/post-form.md` (`pageconfig.parent`). If they're out of sync, entries go to the wrong folder. See [trip switching guide](trip-switching.md). **Get Weather button shows an error** → Fill in Lat/Lng first (tap Get Location or enter manually). Open-Meteo requires coordinates. **Photos not showing in gallery** → Verify files were uploaded (check the entry folder in Admin → Media). Only jpg, jpeg, png, webp, gif are rendered. **500 error after posting** → Run `make fix-perms` to restore container file ownership.