From 1fe1d13c600b7dfe421b3b99b833b7d5d1232724 Mon Sep 17 00:00:00 2001
From: Dennis Fink
Date: Thu, 23 Jul 2026 00:18:21 +0200
Subject: Add GPX trail maps to blog posts
This adds a trail flow block so posts can include attached GPX files as
interactive maps with route display, elevation charts, activity
summaries, and start/finish markers.
The trail assets are loaded only when needed, keeping the shared
templates clean while vendoring the Leaflet dependencies required for
offline, self-hosted map rendering.
---
templates/.djlintrc | 26 +++++++++-------
templates/base.html | 31 +++++++++++++++++-
templates/blocks/markdown.html | 1 +
templates/blocks/trail.html | 71 ++++++++++++++++++++++++++++++++++++++++++
templates/blog-post.html | 10 ++++++
templates/blog.html | 12 +++++++
templates/macros/blog.html | 13 ++++++--
7 files changed, 149 insertions(+), 15 deletions(-)
create mode 100644 templates/blocks/markdown.html
create mode 100644 templates/blocks/trail.html
(limited to 'templates')
diff --git a/templates/.djlintrc b/templates/.djlintrc
index 5882faa..75269c1 100644
--- a/templates/.djlintrc
+++ b/templates/.djlintrc
@@ -1,14 +1,16 @@
{
-"blank_line_before_tag": "macro",
-"blank_line_after_tag": "endmacro,extends,import,from",
-"profile": "jinja",
-"format_css": true,
-"css": {
-"indent_size": 2
-},
-"format_js": true,
-"js": {
-"indent_size": 2
-},
-"indent": "2"
+ "blank_line_before_tag": "macro",
+ "blank_line_after_tag": "endmacro,extends,import,from",
+ "profile": "jinja",
+ "format_css": true,
+ "css": {
+ "indent_size": 2
+ },
+ "format_js": true,
+ "js": {
+ "indent_size": 2
+ },
+ "indent": "2",
+ "max_blank_lines": 0,
+ "preserve_blank_lines": true
}
diff --git a/templates/base.html b/templates/base.html
index 024907d..99341e7 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -75,6 +75,19 @@
type="text/css"
href="{{ '/static/css/style.css' | asseturl }}">
{% endblock styles %}
+
+ {% block feature_styles %}
+ {% if needs_trail_assets | default(false) %}
+
+
+
+
+ {% endif %}
+ {% endblock feature_styles %}
+
{% block meta_links %}
{% endblock body %}
+ {% block scripts %}
+ {% if needs_trail_assets | default(false) %}
+
+
+
+
+
+
+
+ {% endif %}
+ {% endblock scripts %}
+