{% extends 'partials/base.html.twig' %} {% block content %} {% import 'macros/cover.html.twig' as cover %}

Past Trips

{# Owner gate (R1): broader than trip.html.twig's owner_can_edit — publishing works on ANY trip, not just the active one, so it's just owner identity. #} {% set is_owner = grav.user.authenticated and grav.user.username == grav.config.site.owner_username %} {# Owner sees drafts (R9); everyone else published only. #} {% set trips = (is_owner ? page.children : page.children.published())|sort((a, b) => a.date < b.date ? 1 : -1) %} {% if is_owner %}{% do assets.addJs('theme://js/trip-publish.js', {group: 'bottom'}) %}{% endif %} {% if trips|length == 0 %}

No trips yet.

{% else %}
{% for trip in trips %} {% set dailies_page = grav.pages.find(trip.route ~ '/dailies') %} {% set stories_page = grav.pages.find(trip.route ~ '/stories') %} {% set journal_count = dailies_page ? dailies_page.children.published()|length : 0 %} {% set story_count = stories_page ? stories_page.children.published()|length : 0 %} {# Robust active-trip match: site.active_trip may be a full route (/trips/x) or a bare slug — normalise both sides before comparing so the R12 confirm never silently drops (both forms exist in helpers.js / cache-on-save). #} {% set active = (config.site.active_trip ?? '')|trim('/') %} {% set trip_route = trip.route|trim('/') %} {% set is_active = active != '' and (active == trip_route or active == ('trips/' ~ trip.slug) or active == trip.slug) %} {# The wrapper is a positioned container so the owner toggle can overlay the cover as a SIBLING of the navigating (KTD6) — and it exists even for a coverless draft, giving the toggle an anchor whether or not the cover macro emits an image. #}
{{ cover.render(trip, trip.title, 720, 240, 'trip-card-cover', '(max-width: 700px) 100vw, 360px') }}
{{ trip.title }}
{% if trip.header.tagline %}
{{ trip.header.tagline }}
{% endif %}
{% if trip.header.date_start %} {{ trip.header.date_start|date('M Y') }} {% if trip.header.date_end %} — {{ trip.header.date_end|date('M Y') }}{% else %} — Ongoing{% endif %} {% endif %} {{ journal_count }} journal {{ journal_count == 1 ? 'entry' : 'entries' }} {% if story_count > 0 %} · {{ story_count }} {{ story_count == 1 ? 'story' : 'stories' }}{% endif %}
{% if is_owner %}{% include 'partials/trip-publish-toggle.html.twig' with { trip: trip, is_active: is_active } only %}{% endif %}
{% endfor %}
{% endif %} {% endblock %}