diff --git a/.forgejo/workflows/deploy.yaml b/.forgejo/workflows/deploy.yaml index 414eea3..b0b9a6c 100644 --- a/.forgejo/workflows/deploy.yaml +++ b/.forgejo/workflows/deploy.yaml @@ -1,6 +1,8 @@ name: deploy blog on: workflow_dispatch: + schedule: + - cron: '0 10 * * *' # daily at 10:00 push: branches: - staging diff --git a/README.md b/README.md index 86698bc..3b0af0f 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,24 @@ This is the website of the CCCB. 5. Point your browser to: -To ready your site for upload, run `./build.sh`, which also generates `all.ics` -and adds the calendar table to `index.html`. -Every change you make on the project will be reflected in your browser -as long as `hugo serve` is running. +Every change you make on the project will be reflected in your browser as long +as `hugo serve` is running. + +The *"Nächste Veranstaltungen"* table on the home page is generated by +post-processing in `./build.sh`, not by Hugo, so it is **not** visible under +`hugo serve`. To preview the fully-built site (including the home-page +calendar), or to ready the site for upload, run: + +```shell +./build.sh +python3 -m http.server -d public 1313 +``` + +`build.sh` generates `all.ics` and replaces the `CALENDAR` placeholder in +`index.html` with the upcoming-events table. It depends on Python with the +`icalendar`, `python-dateutil`, and `pytz` packages, plus a `de_DE.UTF-8` +locale (used to format weekday names). Inside `nix develop` these are +provided automatically. To build with *nix*: `nix build '.?submodules=1#production-content'` diff --git a/assets/js/calendar.js b/assets/js/calendar.js index 5aa9d6b..ffb3c7e 100644 --- a/assets/js/calendar.js +++ b/assets/js/calendar.js @@ -131,6 +131,12 @@ document.addEventListener('DOMContentLoaded', function() { else if (rruleStr.includes("FREQ=MONTHLY") && rruleStr.includes("BYDAY")) { const bydayMatch = rruleStr.match(/BYDAY=([^;]+)/); if (bydayMatch) { + const intervalMatch = rruleStr.match(/INTERVAL=(\d+)/); + const interval = intervalMatch ? parseInt(intervalMatch[1]) : 1; + const monthsFromStart = (year - startDate.getFullYear()) * 12 + (month - startDate.getMonth()); + if (monthsFromStart < 0 || monthsFromStart % interval !== 0) { + return []; + } const bydays = bydayMatch[1].split(','); const dayMap = { 'MO': 1, 'TU': 2, 'WE': 3, 'TH': 4, 'FR': 5, 'SA': 6, 'SU': 0 diff --git a/content/veranstaltungen/bastelabend.md b/content/veranstaltungen/bastelabend.md index 5f3d995..c787c17 100644 --- a/content/veranstaltungen/bastelabend.md +++ b/content/veranstaltungen/bastelabend.md @@ -26,7 +26,7 @@ draft: true {{< alert "circle-info" >}} -Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/page/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen. +Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/veranstaltungen/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen. -Generell sind aber alle, die schonmal im Club waren, herzlich eingeladen, an den Bastelabenden vorbeizukommen. +Generell sind aber alle, die schon mal im Club waren, herzlich eingeladen, an den Bastelabenden vorbeizukommen. {{< /alert >}} diff --git a/content/veranstaltungen/didit.md b/content/veranstaltungen/didit.md new file mode 100644 index 0000000..707fe52 --- /dev/null +++ b/content/veranstaltungen/didit.md @@ -0,0 +1,20 @@ +--- +title: "Di.Day" +subtitle: "Digital Independence Day im CCCB" +date: 2026-01-04T12:23:00+01:00 +dtstart: 20260104T122300 +dtend: 20260104T174200 +rrule: "FREQ=MONTHLY;INTERVAL=2;BYDAY=1SU;WKST=MO" +menu: + main: + parent: "Veranstaltungen" +tag: ["Veranstaltung"] +--- + +**Jeden ersten Sonntag im Monat von 12:23 bis 17:42 Uhr** findet der Berliner Digital Independence Day statt. Der Veranstaltungsort wechselt monatlich zwischen den Räumen des CCCB (in den ungeraden Monaten Januar, März, Mai, …) und dem [xHain](https://x-hain.de/) (in den geraden Monaten). + +Der CCCB und das xHain beteiligen sich gemeinsam an der internationalen [Digital Independence Day](https://diday.org)-Initiative. Diese Graswurzelbewegung ruft dazu auf, zu demokratiefreundlichen digitalen Alternativen zu wechseln, um die Abhängigkeit von großen Technologiekonzernen zu verringern. + +Vor Ort gibt es praktische Hilfe beim Wechsel zu datenschutzfreundlichen Diensten, beim Einrichten von Linux oder beim Betrieb von Smartphones ohne große Tech-Konzerne. Egal ob Anfänger:in oder Fortgeschrittene:r. Kommt vorbei und bringt eure Geräte und Fragen mit. + +Weitere Informationen gibt es im [Ankündigungsbeitrag](https://berlin.ccc.de/post/2026/02/22/berlin-%23didit/). diff --git a/content/veranstaltungen/neujahresempfang.md b/content/veranstaltungen/neujahresempfang.md index 6bcd354..9a97796 100644 --- a/content/veranstaltungen/neujahresempfang.md +++ b/content/veranstaltungen/neujahresempfang.md @@ -2,9 +2,8 @@ title: "Neujahresempfang" subtitle: "#NJE 26" date: 2025-03-05T18:00:00+02:00 -dtstart: 20250523T180000 -dtend: 20250524T100000 -rrule: "FREQ=MOTHLY;BYDAY=4SA;WKST=MO" +dtstart: 20260523T180000 +dtend: 20260524T100000 menu: main: parent: "Veranstaltungen" diff --git a/content/veranstaltungen/spieleabend.md b/content/veranstaltungen/spieleabend.md index e1122f9..ab3d120 100644 --- a/content/veranstaltungen/spieleabend.md +++ b/content/veranstaltungen/spieleabend.md @@ -16,7 +16,7 @@ tag: ["Veranstaltung"] **Jeden 2. und 4. Samstag im Monat ist ab 17 Uhr Spieleabend im Club.** {{< alert "circle-info" >}} -Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/page/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen. +Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/veranstaltungen/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen. -Generell sind aber alle, die schonmal im Club waren, herzlich eingeladen, an den Spieleabenden vorbeizukommen. +Generell sind aber alle, die schon mal im Club waren, herzlich eingeladen, an den Spieleabenden vorbeizukommen. {{< /alert >}} diff --git a/content/veranstaltungen/subbotnik.md b/content/veranstaltungen/subbotnik.md index 5e86aa2..a520035 100644 --- a/content/veranstaltungen/subbotnik.md +++ b/content/veranstaltungen/subbotnik.md @@ -23,8 +23,8 @@ Der Begriff [Subbotnik](https://de.wikipedia.org/wiki/Subbotnik) ist eine in Sow --- {{< alert "circle-info" >}} -Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/page/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen. +Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/veranstaltungen/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen. -Generell sind aber alle, die schonmal im Club waren, herzlich eingeladen am Subbotnik vorbeizukommen und mitzuhelfen. +Generell sind aber alle, die schon mal im Club waren, herzlich eingeladen am Subbotnik vorbeizukommen und mitzuhelfen. {{< /alert >}}