{% extends 'partials/base.html.twig' %} {% block map_assets %} {% do assets.addCss('theme://css-compiled/map.css') %} {% do assets.addJs('theme://js/map.js', {group: 'bottom'}) %} {% endblock %} {% block content %} {% set trip_route = config.site.active_trip %} {% set trip = grav.pages.find(trip_route) %} {% if config.site.travelling %} {# ══════════════════════════════════════════════════════════ ACTIVE TRIP MODE #} {% set dailies_page = grav.pages.find(trip_route ~ '/dailies') %} {% set stories_page = grav.pages.find(trip_route ~ '/stories') %} {# published-only — feeds the map, stats and counts (drafts excluded, R5) #} {% set journal_entries = dailies_page ? dailies_page.children.published() : [] %} {% set story_entries = stories_page ? stories_page.children.published() : [] %} {# This branch IS the active trip, so the owner gate is just owner identity (KTD8). The super-admin tester authenticates too, so gate on owner_username. #} {% set owner_can_edit = grav.user.authenticated and grav.user.username == grav.config.site.owner_username %} {# Owner-aware feed list: owner sees drafts; everyone else published only #} {% set journal_feed = (owner_can_edit and dailies_page) ? dailies_page.children : journal_entries %} {% set all_items = [] %} {% for e in journal_feed %} {% set all_items = all_items|merge([{'type': 'journal', 'page': e, 'date': e.header.date}]) %} {% endfor %} {% for s in story_entries %} {% set all_items = all_items|merge([{'type': 'story', 'page': s, 'date': s.header.date}]) %} {% endfor %} {% set all_items = all_items|sort_by_key('date', 3) %} {% set journal_count = journal_entries|length %} {% set story_count = story_entries|length %} {% set gps_points = [] %} {% for entry in journal_entries %} {% if entry.header.lat is not empty and entry.header.lng is not empty %} {% set gps_points = gps_points|merge([[entry.header.lat, entry.header.lng]]) %} {% endif %} {% endfor %} {% set map_entries = [] %} {% for item in all_items %} {# drafts render as a feed card only — never a map marker (R5) #} {% if item.type == 'journal' and item.page.published and item.page.header.lat is not empty and item.page.header.lng is not empty %} {% set map_entries = map_entries|merge([{ 'lat': item.page.header.lat|number_format(6, '.', ''), 'lng': item.page.header.lng|number_format(6, '.', ''), 'slug': item.page.slug, 'title': item.page.title, 'url': item.page.url, 'force_connect': item.page.header.force_connect ? true : false }]) %} {% endif %} {% endfor %} {% set home_gpx_urls = [] %} {% if trip %} {% for name, media in trip.media.all %} {% if name|split('.')|last == 'gpx' %} {% set home_gpx_urls = home_gpx_urls|merge([trip.url ~ '/' ~ name]) %} {% endif %} {% endfor %} {% endif %}
No highlights yet — mark entries as featured to show them here.
{% endif %}