aboutsummaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
authorValentin <valentin@fricklerhandwerk.de>2026-10-26 13:42:54 +0100
committerValentin <valentin@fricklerhandwerk.de>2026-10-26 13:42:54 +0100
commit230fb67430ce5860ad22ecd622cafe5e48b66365 (patch)
treeab1f0975232ee930a94d2fe69314a6cdabaf9d42 /www
parent0e78264d49412e20c269e9281d7e45ab389079db (diff)
Textuelle Zeitangabe bei Terminen automatisch generieren
Diffstat (limited to 'www')
-rw-r--r--www/framework/event.nix30
-rw-r--r--www/termine.nix5
-rw-r--r--www/termine/2025-11-geklaute-jugend.nix3
-rw-r--r--www/termine/2025-11-harburger-rathauskonzerte.nix3
-rw-r--r--www/termine/2025-11-heimfeld-leuchtet.nix1
-rw-r--r--www/termine/2025-11-infofest-grumbrechtstrasse.nix3
-rw-r--r--www/termine/2025-11-low-budget-poetry-slam.nix3
-rw-r--r--www/termine/2025-11-nistkasten-workshop.nix3
-rw-r--r--www/termine/2025-11-stadtteilbeirat-heimfeld.nix3
-rw-r--r--www/termine/2025-11-winterkranz-binden.nix3
-rw-r--r--www/termine/2026-02-07-symphoning.nix3
-rw-r--r--www/termine/2026-02-08-symphoning.nix3
-rw-r--r--www/termine/2026-02-stadtteilfest-organisationstreffen.nix3
-rw-r--r--www/termine/2026-03-low-budget-poetry-slam.nix3
-rw-r--r--www/termine/2026-04-stadtteilfest-organisationstreffen.nix3
-rw-r--r--www/termine/2026-05-low-budget-poetry-slam.nix3
-rw-r--r--www/termine/2026-05-stadtteilfest-organisationstreffen.nix3
-rw-r--r--www/termine/2026-06-14-permakultur-picknick.nix3
-rw-r--r--www/termine/2026-07-11-symphoning.nix3
-rw-r--r--www/termine/2026-07-12-symphoning.nix3
-rw-r--r--www/termine/2026-09-low-budget-poetry-slam.nix3
-rw-r--r--www/termine/2026-11-lesung-fuer-den-baum.nix3
-rw-r--r--www/termine/2026-11-low-budget-poetry-slam.nix3
23 files changed, 51 insertions, 45 deletions
diff --git a/www/framework/event.nix b/www/framework/event.nix
index dcd4265..f0489db 100644
--- a/www/framework/event.nix
+++ b/www/framework/event.nix
@@ -6,6 +6,25 @@
inherit (lib) mkOption types;
cfg = event.config;
sort-key = e: "${e.date.start} ${e.time.start}";
+ # https://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week#Sakamoto's_methods
+ weekday =
+ date:
+ let
+ parts = map lib.toIntBase10 (lib.splitString "-" date);
+ m = lib.elemAt parts 1;
+ d = lib.elemAt parts 2;
+ y = lib.elemAt parts 0 - (if m < 3 then 1 else 0);
+ offset = lib.elemAt [ 0 3 2 5 0 3 5 1 4 6 2 4 ] (m - 1);
+ in
+ lib.elemAt [
+ "Sonntag"
+ "Montag"
+ "Dienstag"
+ "Mittwoch"
+ "Donnerstag"
+ "Freitag"
+ "Samstag"
+ ] (lib.mod (y + y / 4 - y / 100 + y / 400 + offset + d) 7);
prior =
let
candidates = lib.filter (
@@ -157,6 +176,17 @@
'';
type = types.str;
example = "Samstag, 20.12.2025 von 15:00 bis 17:00 Uhr";
+ default =
+ let
+ date = lib.concatStringsSep "." (lib.reverseList (lib.splitString "-" cfg.date.start));
+ time =
+ if cfg.time.end == null then
+ "ab ${cfg.time.start}"
+ else
+ "von ${cfg.time.start} bis ${cfg.time.end}";
+ in
+ "${weekday cfg.date.start}, ${date} ${time}";
+ defaultText = lib.literalMD "Wochentag, Datum und Uhrzeit aus den Zeitangaben des Termins";
};
venue = mkOption {
description = ''
diff --git a/www/termine.nix b/www/termine.nix
index a9ebd5f..212bf1a 100644
--- a/www/termine.nix
+++ b/www/termine.nix
@@ -29,10 +29,7 @@
default = self: ''
<dt class="event-title" id="${self.name}"><a href="#${self.name}">${self.title}</a></dt>
<dd class="event-body">
- <time datetime="${self.date.start} ${self.time.start}">${
- # TODO: Lokalisierte Zeitdarstellung
- self.datetime-range-text
- }</time>
+ <time datetime="${self.date.start} ${self.time.start}">${self.datetime-range-text}</time>
<address>
${self.address.name}<br>
diff --git a/www/termine/2025-11-geklaute-jugend.nix b/www/termine/2025-11-geklaute-jugend.nix
index 55fa3c8..29dbcc1 100644
--- a/www/termine/2025-11-geklaute-jugend.nix
+++ b/www/termine/2025-11-geklaute-jugend.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Geklaute Jugend – Herman van Hasselt, Buchenwaldhäftling 20239";
date.start = "2025-11-12";
time.start = "19:00";
- datetime-range-text = "Mittwoch, 12.11.2025 ab ${config.time.start}";
address = {
name = "Alles wird schön e.V.";
openstreetmap.way = 128755009;
diff --git a/www/termine/2025-11-harburger-rathauskonzerte.nix b/www/termine/2025-11-harburger-rathauskonzerte.nix
index 490eeef..98a2838 100644
--- a/www/termine/2025-11-harburger-rathauskonzerte.nix
+++ b/www/termine/2025-11-harburger-rathauskonzerte.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Harburger Rathauskonzerte „Stars von morgen“";
date.start = "2025-11-19";
time.start = "19:00";
- datetime-range-text = "Mittwoch, 19.11.2025 ${config.time.start}";
address = {
name = "Rathaus Harburg";
openstreetmap.way = 23723787;
diff --git a/www/termine/2025-11-heimfeld-leuchtet.nix b/www/termine/2025-11-heimfeld-leuchtet.nix
index 95b28a9..234be52 100644
--- a/www/termine/2025-11-heimfeld-leuchtet.nix
+++ b/www/termine/2025-11-heimfeld-leuchtet.nix
@@ -3,7 +3,6 @@
title = "Heimfeld leuchtet – im Gedenken an die Opfer der Pogromnacht";
date.start = "2025-11-09";
time.start = "18:00";
- datetime-range-text = "Sonntag, 9.11.2025 ab ${config.time.start}";
address = {
name = "St. Pauluskirche Heimfeld";
openstreetmap.way = 82209169;
diff --git a/www/termine/2025-11-infofest-grumbrechtstrasse.nix b/www/termine/2025-11-infofest-grumbrechtstrasse.nix
index 95a9bf2..44b22a6 100644
--- a/www/termine/2025-11-infofest-grumbrechtstrasse.nix
+++ b/www/termine/2025-11-infofest-grumbrechtstrasse.nix
@@ -1,10 +1,9 @@
-{ config, ... }:
+{ ... }:
{
title = "Spaß- und Infofest in der Grumbrechtstraße";
date.start = "2025-11-22";
time.start = "15:00";
time.end = "18:00";
- datetime-range-text = "Smstag, 22.11.2025 ${config.time.start} bis ${config.time.end}";
address = {
name = "Schule Grumbrechtstraße";
openstreetmap.way = 32486312;
diff --git a/www/termine/2025-11-low-budget-poetry-slam.nix b/www/termine/2025-11-low-budget-poetry-slam.nix
index 705e0d7..0a1bc2f 100644
--- a/www/termine/2025-11-low-budget-poetry-slam.nix
+++ b/www/termine/2025-11-low-budget-poetry-slam.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Heimfeld Low Budget Poetry Slam";
date.start = "2025-11-22";
time.start = "19:30";
- datetime-range-text = "Samstag, 22.11.2025 ${config.time.start}";
venue = "treffpunkthaus";
data = [
{
diff --git a/www/termine/2025-11-nistkasten-workshop.nix b/www/termine/2025-11-nistkasten-workshop.nix
index 69c0d27..a2c204c 100644
--- a/www/termine/2025-11-nistkasten-workshop.nix
+++ b/www/termine/2025-11-nistkasten-workshop.nix
@@ -1,10 +1,9 @@
-{ config, ... }:
+{ ... }:
{
title = "Nistkästen-Bau-Workshop";
date.start = "2025-11-14";
time.start = "15:00";
time.end = "17:00";
- datetime-range-text = "Freitag, 14.11.2025 ${config.time.start} bis ${config.time.end}";
venue = "treffpunkthaus";
address = {
name = "Treffpunkthaus Heimfeld";
diff --git a/www/termine/2025-11-stadtteilbeirat-heimfeld.nix b/www/termine/2025-11-stadtteilbeirat-heimfeld.nix
index dd7e337..99ae79a 100644
--- a/www/termine/2025-11-stadtteilbeirat-heimfeld.nix
+++ b/www/termine/2025-11-stadtteilbeirat-heimfeld.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Stadtteilbeirat Heimfeld";
date.start = "2025-11-19";
time.start = "18:30";
- datetime-range-text = "Mittwoch, 19.11.2025 ${config.time.start}";
venue = "treffpunkthaus";
# TODO: Markdown verarbeiten
description = ''
diff --git a/www/termine/2025-11-winterkranz-binden.nix b/www/termine/2025-11-winterkranz-binden.nix
index 5c892a1..235be57 100644
--- a/www/termine/2025-11-winterkranz-binden.nix
+++ b/www/termine/2025-11-winterkranz-binden.nix
@@ -1,10 +1,9 @@
-{ config, ... }:
+{ ... }:
{
title = "Advents- und Winterkranz-Binden";
date.start = "2025-11-19";
time.start = "14:00";
time.end = "17:00";
- datetime-range-text = "Mittwoch, 19.11.2025 ${config.time.start} bis ${config.time.end}";
address = {
name = "St. Paulus Kirchengarten";
openstreetmap.node = 7296982502;
diff --git a/www/termine/2026-02-07-symphoning.nix b/www/termine/2026-02-07-symphoning.nix
index 2b0374f..e9c75d5 100644
--- a/www/termine/2026-02-07-symphoning.nix
+++ b/www/termine/2026-02-07-symphoning.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Winterkonzerte SymphonING";
date.start = "2026-02-07";
time.start = "18:00";
- datetime-range-text = "Samstag, 07.02.2025 ${config.time.start}";
address = {
name = "St. Johanniskirche";
openstreetmap.way = 83294076;
diff --git a/www/termine/2026-02-08-symphoning.nix b/www/termine/2026-02-08-symphoning.nix
index d7017ef..b65fec8 100644
--- a/www/termine/2026-02-08-symphoning.nix
+++ b/www/termine/2026-02-08-symphoning.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Winterkonzerte SymphonING";
date.start = "2026-02-08";
time.start = "18:00";
- datetime-range-text = "Sonntag, 08.02.2025 ${config.time.start}";
address = {
name = "St. Pauluskirche";
openstreetmap.way = 82209169;
diff --git a/www/termine/2026-02-stadtteilfest-organisationstreffen.nix b/www/termine/2026-02-stadtteilfest-organisationstreffen.nix
index 538fd83..54ee3d2 100644
--- a/www/termine/2026-02-stadtteilfest-organisationstreffen.nix
+++ b/www/termine/2026-02-stadtteilfest-organisationstreffen.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Stadtteilfest Organisationstreffen";
date.start = "2026-02-10";
time.start = "18:30";
- datetime-range-text = "Dienstag, 10.02.2026 ${config.time.start}";
venue = "treffpunkthaus";
data = [
{
diff --git a/www/termine/2026-03-low-budget-poetry-slam.nix b/www/termine/2026-03-low-budget-poetry-slam.nix
index 7a4ee57..ca82edc 100644
--- a/www/termine/2026-03-low-budget-poetry-slam.nix
+++ b/www/termine/2026-03-low-budget-poetry-slam.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Heimfeld Low Budget Poetry Slam";
date.start = "2026-03-14";
time.start = "19:30";
- datetime-range-text = "Samstag, 14.03.2026 ${config.time.start}";
venue = "treffpunkthaus";
data = [
{
diff --git a/www/termine/2026-04-stadtteilfest-organisationstreffen.nix b/www/termine/2026-04-stadtteilfest-organisationstreffen.nix
index 010db62..a46af9a 100644
--- a/www/termine/2026-04-stadtteilfest-organisationstreffen.nix
+++ b/www/termine/2026-04-stadtteilfest-organisationstreffen.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Stadtteilfest Organisationstreffen";
date.start = "2026-04-21";
time.start = "18:30";
- datetime-range-text = "Dienstag, 21.04.2026 ${config.time.start}";
venue = "treffpunkthaus";
data = [
{
diff --git a/www/termine/2026-05-low-budget-poetry-slam.nix b/www/termine/2026-05-low-budget-poetry-slam.nix
index a49a3b4..5da46e6 100644
--- a/www/termine/2026-05-low-budget-poetry-slam.nix
+++ b/www/termine/2026-05-low-budget-poetry-slam.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Heimfeld Low Budget Poetry Slam";
date.start = "2026-05-09";
time.start = "19:30";
- datetime-range-text = "Samstag, 09.05.2026 ${config.time.start}";
venue = "treffpunkthaus";
data = [
{
diff --git a/www/termine/2026-05-stadtteilfest-organisationstreffen.nix b/www/termine/2026-05-stadtteilfest-organisationstreffen.nix
index 70257b1..df44d2c 100644
--- a/www/termine/2026-05-stadtteilfest-organisationstreffen.nix
+++ b/www/termine/2026-05-stadtteilfest-organisationstreffen.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Stadtteilfest Organisationstreffen";
date.start = "2026-05-21";
time.start = "18:30";
- datetime-range-text = "Donnerstag, 21.05.2026 ${config.time.start}";
venue = "treffpunkthaus";
description = ''
<p>Aufruf an alle &ndash; wir suchen:</p>
diff --git a/www/termine/2026-06-14-permakultur-picknick.nix b/www/termine/2026-06-14-permakultur-picknick.nix
index b4862af..2e0ea6c 100644
--- a/www/termine/2026-06-14-permakultur-picknick.nix
+++ b/www/termine/2026-06-14-permakultur-picknick.nix
@@ -1,10 +1,9 @@
-{ config, ... }:
+{ ... }:
{
title = "Hamburger Permakultur-Picknick";
date.start = "2026-06-14";
time.start = "13:00";
time.end = "17:00";
- datetime-range-text = "Sonntag, 14.06.2026 ${config.time.start} bis ${config.time.end}";
address = {
name = "GRÜN(T)RAUM Heimfeld";
openstreetmap.way = 128806759;
diff --git a/www/termine/2026-07-11-symphoning.nix b/www/termine/2026-07-11-symphoning.nix
index 19ce900..0f035b5 100644
--- a/www/termine/2026-07-11-symphoning.nix
+++ b/www/termine/2026-07-11-symphoning.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Mozart in der Heide: Sinfoniekonzert und Opernkaraoke";
date.start = "2026-07-11";
time.start = "18:00";
- datetime-range-text = "Samstag, 11.07.2026 ${config.time.start}";
address = {
name = "Freilichtmuseum am Kiekeberg";
openstreetmap.way = 134756075;
diff --git a/www/termine/2026-07-12-symphoning.nix b/www/termine/2026-07-12-symphoning.nix
index 53adbab..49c1a0f 100644
--- a/www/termine/2026-07-12-symphoning.nix
+++ b/www/termine/2026-07-12-symphoning.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Mozart in der Heide: Sinfoniekonzert und Opernkaraoke";
date.start = "2026-07-12";
time.start = "18:00";
- datetime-range-text = "Sonntag, 12.07.2026 ${config.time.start}";
address = {
name = "Friedrich-Ebert-Halle";
openstreetmap.way = 237018334;
diff --git a/www/termine/2026-09-low-budget-poetry-slam.nix b/www/termine/2026-09-low-budget-poetry-slam.nix
index f36a5a4..928a3d8 100644
--- a/www/termine/2026-09-low-budget-poetry-slam.nix
+++ b/www/termine/2026-09-low-budget-poetry-slam.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Heimfeld Low Budget Poetry Slam";
date.start = "2026-09-12";
time.start = "19:30";
- datetime-range-text = "Samstag, 12.09.2026 ${config.time.start}";
venue = "treffpunkthaus";
data = [
{
diff --git a/www/termine/2026-11-lesung-fuer-den-baum.nix b/www/termine/2026-11-lesung-fuer-den-baum.nix
index b8d2bfb..7a61754 100644
--- a/www/termine/2026-11-lesung-fuer-den-baum.nix
+++ b/www/termine/2026-11-lesung-fuer-den-baum.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Lesung für den Baum II – Schatten und Lichtwege";
date.start = "2026-11-07";
time.start = "16:00";
- datetime-range-text = "Samstag, 07.11.2026 ab ${config.time.start}";
address = {
name = "Galerie und Theater im Wohnzimmer";
openstreetmap.way = 620577034;
diff --git a/www/termine/2026-11-low-budget-poetry-slam.nix b/www/termine/2026-11-low-budget-poetry-slam.nix
index 6c026c2..619c428 100644
--- a/www/termine/2026-11-low-budget-poetry-slam.nix
+++ b/www/termine/2026-11-low-budget-poetry-slam.nix
@@ -1,9 +1,8 @@
-{ config, ... }:
+{ ... }:
{
title = "Heimfeld Low Budget Poetry Slam";
date.start = "2026-11-14";
time.start = "19:30";
- datetime-range-text = "Samstag, 14.11.2026 ${config.time.start}";
venue = "treffpunkthaus";
data = [
{