From 22ac93080c18b6abebc87b5d93075376fab8b66c Mon Sep 17 00:00:00 2001 From: jtbx Date: Mon, 8 Jun 2026 22:00:24 +0200 Subject: [PATCH 01/15] Theme: Display articles for 5 days (+6 hours) --- themes/ccchh/layouts/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/ccchh/layouts/index.html b/themes/ccchh/layouts/index.html index 8f1b5f6..c75d145 100644 --- a/themes/ccchh/layouts/index.html +++ b/themes/ccchh/layouts/index.html @@ -28,7 +28,7 @@ {{- end }} {{- $article := where (.Site.GetPage "blog").Pages ".Params.categories" "article" }} - {{- $articleDisplayTime := time.ParseDuration "-30h" }} + {{- $articleDisplayTime := time.ParseDuration "-126h" }} {{- $articleNew := where $article ".Params.publishDate" "ge" (time.Now.Add $articleDisplayTime) }} {{ if $articleNew }}
From 1952497883377061dc7f0e50eade4c9bf277dd1f Mon Sep 17 00:00:00 2001 From: jtbx Date: Mon, 8 Jun 2026 21:58:04 +0200 Subject: [PATCH 02/15] Theme: Fix doubled "Neuigkeiten" heading --- .../blog/2026/2026-05-08-diday-website/index.md | 4 +--- themes/ccchh/layouts/index.html | 15 ++++++--------- themes/ccchh/layouts/partials/blog-header.html | 4 ++++ 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/content/blog/2026/2026-05-08-diday-website/index.md b/content/blog/2026/2026-05-08-diday-website/index.md index 1eb4361..1e1c267 100644 --- a/content/blog/2026/2026-05-08-diday-website/index.md +++ b/content/blog/2026/2026-05-08-diday-website/index.md @@ -2,9 +2,7 @@ categories: article title: 'DIDAY.org mit Unterstützung des CCCHH' date: '2026-06-07T14:00:00+02:00' # date of the event -publishDate: '2026-06-07T14:00:00+02:00' # when to publish draft: false -location: Z9 authors: - stb tags: @@ -24,4 +22,4 @@ Worum geht es beim Digital Independence Day? [Kurz gesagt](https://diday.org/de/ Das besondere: Alle können mitmachen und beitragen. Die gesamte Webseite wird als Open Source auf [codeberg.org/DI-Day/website](https://codeberg.org/DI-Day/website) von allen Interessierten gepflegt und weiterentwickelt. Und um es auch wirklich einfach zu machen, da einzusteigen, haben wir unter [Wie? Gemeinsam](https://diday.org/de/together/) Anleitungen bereitgestellt, wie ihr direkt loslegen könnt. -Der CCC Hansestadt Hamburg e.V. fungiert als Heimat für die Webseite, sowohl technisch als auch rechtlich. Aber die Inhalte kommen von euch allen! Wir freuen uns zu sehen, was in den nächsten Monaten alles dazukommen wird. \ No newline at end of file +Der CCC Hansestadt Hamburg e.V. fungiert als Heimat für die Webseite, sowohl technisch als auch rechtlich. Aber die Inhalte kommen von euch allen! Wir freuen uns zu sehen, was in den nächsten Monaten alles dazukommen wird. diff --git a/themes/ccchh/layouts/index.html b/themes/ccchh/layouts/index.html index c75d145..5963234 100644 --- a/themes/ccchh/layouts/index.html +++ b/themes/ccchh/layouts/index.html @@ -7,7 +7,12 @@ {{- $events := where (.Site.GetPage "blog").Pages ".Params.categories" "event" }} {{- $lookback := time.ParseDuration "-6h" }} {{- $upcoming := where $events ".Params.date" "ge" (time.Now.Add $lookback) }} - {{ if $upcoming }} + + {{- $article := where (.Site.GetPage "blog").Pages ".Params.categories" "article" }} + {{- $articleDisplayTime := time.ParseDuration "-126h" }} + {{- $articleNew := where $article ".Params.publishDate" "ge" (time.Now.Add $articleDisplayTime) }} + + {{ if or $upcoming $articleNew }}

Neuigkeiten

{{- range $upcoming.ByDate }} @@ -24,15 +29,7 @@ {{- end }}
{{- end }} -
- {{- end }} - {{- $article := where (.Site.GetPage "blog").Pages ".Params.categories" "article" }} - {{- $articleDisplayTime := time.ParseDuration "-126h" }} - {{- $articleNew := where $article ".Params.publishDate" "ge" (time.Now.Add $articleDisplayTime) }} - {{ if $articleNew }} -
-

Neuigkeiten

{{- range $articleNew.ByDate }}
{{- partial "blog-header.html" (dict "headingLink" true "level" 4 "reduced" true "page" . ) }} diff --git a/themes/ccchh/layouts/partials/blog-header.html b/themes/ccchh/layouts/partials/blog-header.html index eef7cba..904c0de 100644 --- a/themes/ccchh/layouts/partials/blog-header.html +++ b/themes/ccchh/layouts/partials/blog-header.html @@ -14,7 +14,11 @@ {{- end }}
+ {{ if (eq .Params.categories "event") }} {{ .Date | time.Format "Mon, 2006-01-02 15:04" }} + {{- else }} + {{ .Date | time.Format "2006-01-02" }} + {{- end }} {{- with .Params.location }} From a8e87d5d291de42e39ef0afcd1a7be1f949ad8a4 Mon Sep 17 00:00:00 2001 From: echtnurich Date: Wed, 10 Jun 2026 20:28:18 +0200 Subject: [PATCH 03/15] Theme: Combine events and articles into the same list --- themes/ccchh/layouts/index.html | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/themes/ccchh/layouts/index.html b/themes/ccchh/layouts/index.html index 5963234..8631c3b 100644 --- a/themes/ccchh/layouts/index.html +++ b/themes/ccchh/layouts/index.html @@ -12,25 +12,12 @@ {{- $articleDisplayTime := time.ParseDuration "-126h" }} {{- $articleNew := where $article ".Params.publishDate" "ge" (time.Now.Add $articleDisplayTime) }} - {{ if or $upcoming $articleNew }} + {{- $neuigkeiten := $upcoming | append $articleNew }} + + {{ if $neuigkeiten }}

Neuigkeiten

- {{- range $upcoming.ByDate }} -
- {{- partial "blog-header.html" (dict "headingLink" true "level" 4 "reduced" true "page" . ) }} - - {{- if in .RawContent "" }} - {{ .Summary | safeHTML }} - {{- else }} -

{{ .Summary | safeHTML }}

- {{- end }} - {{- if .Truncated }} -

mehr lesen

- {{- end }} -
- {{- end }} - - {{- range $articleNew.ByDate }} + {{- range $neuigkeiten.ByDate }}
{{- partial "blog-header.html" (dict "headingLink" true "level" 4 "reduced" true "page" . ) }} From d87213881f16ab3262f9aa7d0a49ab3c9616c5d9 Mon Sep 17 00:00:00 2001 From: k1ba Date: Thu, 11 Jun 2026 22:55:53 +0200 Subject: [PATCH 04/15] Codeberg MV Anmeldeformular --- content/blog/2026/2026-06-28-codeberg-mv/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/blog/2026/2026-06-28-codeberg-mv/index.md b/content/blog/2026/2026-06-28-codeberg-mv/index.md index 623fba6..268f3dd 100644 --- a/content/blog/2026/2026-06-28-codeberg-mv/index.md +++ b/content/blog/2026/2026-06-28-codeberg-mv/index.md @@ -20,6 +20,7 @@ Bei uns in den Räumen werden wir am *28.06.2026* an der Mitgliederversammlung d Die MV findet primär online statt, es gibt aber bei uns die Möglichkeit dieser zusammen im Hauptraum beizuwohnen und die Geschehnisse mitzuverfolgen. +Wenn ihr daran teilnehmen wollt, füllt bitte einmal das [Anmeldeformular](https://cloud.hamburg.ccc.de/apps/forms/s/jqmsHCSGR3S8brGfjZkwnfpa) aus, damit wir eine Idee haben wie viele Leute wir erwarten müssen. ## Wie funktioniert die Codeberg MV? From 50dc772a71ceec64b042fbe6f3eddba2ac0ea47f Mon Sep 17 00:00:00 2001 From: Stefan Bethke Date: Sat, 13 Jun 2026 12:54:48 +0200 Subject: [PATCH 05/15] Demo-Aufruf ueberwachungsfrei (#161) Reviewed-on: https://git.hamburg.ccc.de/CCCHH/ccchh-website/pulls/161 --- .../2026-06-13-ueberwachungsfrei/index.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 content/blog/2026/2026-06-13-ueberwachungsfrei/index.md diff --git a/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md b/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md new file mode 100644 index 0000000..242e204 --- /dev/null +++ b/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md @@ -0,0 +1,28 @@ +--- +categories: article +title: 'Demo-Aufruf: Überwachungsfrei in Hamburg' +date: '2026-06-20T14:00:00+02:00' +publishDate: '2026-06-13T12:00:00+02:00' +draft: false +authors: + - stb +tags: + - überwachung + - vorratsdatenspeicherung + - widerstand +--- +**tl;dr** Kundgebung auf dem Hansaplatz am Samstag, 20.6., 14 Uhr, um weitreichende Überwachung in Deutschland und in Hamburg zu verhindern. Alle Infos: [Überwachungsfrei.eu](https://überwachungsfrei.eu). + +Bund und Länder treiben neue Überwachungsgesetze voran. Dazu gehören biometrische Rasterfahndung, automatisierte Massendatenauswertung, die Erhebung von Bewegungsdaten aus Fahrzeugen, Vorratsdatenspeicherung und Chatkontrolle. Hinzu kommt die Auswertung von Standortdaten aus Apps, ganz ohne gesetzliche Grundlage, sowie das Training intransparenter „KIs“ mit den frisch gesammelten Daten. + + + +Gleichzeitig geraten soziale Probleme aus dem Fokus. Technische Überwachung wird als Lösung gesellschaftlicher und sozialer Herausforderungen betrachtet. Doch mehr Überwachung führt nicht zu mehr sozialer Sicherheit. Sie verschiebt Probleme, statt sie zu lösen, und verändert das Verhältnis zwischen Staat und Bevölkerung grundlegend. Schritt für Schritt wird alltägliches Verhalten unter Beobachtung gestellt und Freiheit eingeschränkt. + +Kaum ein Ort in Hamburg verdeutlicht diese Entwicklung so sehr wie der Hansaplatz. Seit 2023 wird hier das Verhalten aller, die sich auf dem Platz aufhalten, durch Kameras und automatisierte Systeme erfasst und ausgewertet. Was als Ausnahme begann, wird nun zum Normalzustand: Kontinuierliche Beobachtung im öffentlichen Raum. + +Wir setzen uns für den Schutz von Grundrechten und informationeller Selbstbestimmung ein. Für öffentliche Räume, in denen Menschen sich frei bewegen, austauschen und engagieren können, ohne permanent beobachtet und bewertet zu werden. Wir wollen eine Politik, die die Ursachen gesellschaftlicher Probleme angeht, statt immer neue Überwachungsmaßnahmen einzuführen. + +Wir wollen das nicht hinnehmen. + +Daher gehen wir auf die Straße. Am 20.06. um 14 Uhr in Hamburg, auf dem Hansaplatz. From d00009a594ede4afefae0fff568ff54febfcab95 Mon Sep 17 00:00:00 2001 From: Stefan Bethke Date: Sat, 13 Jun 2026 13:00:00 +0200 Subject: [PATCH 06/15] ueberwachungsfrei: add missing tag (#162) Reviewed-on: https://git.hamburg.ccc.de/CCCHH/ccchh-website/pulls/162 --- content/blog/2026/2026-06-13-ueberwachungsfrei/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md b/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md index 242e204..95b6f55 100644 --- a/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md +++ b/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md @@ -7,6 +7,7 @@ draft: false authors: - stb tags: + - event - überwachung - vorratsdatenspeicherung - widerstand From d82786784bfe519e06c32c7f85ff1fc73f711176 Mon Sep 17 00:00:00 2001 From: Stefan Bethke Date: Sat, 13 Jun 2026 13:15:27 +0200 Subject: [PATCH 07/15] Add missing location (#163) Reviewed-on: https://git.hamburg.ccc.de/CCCHH/ccchh-website/pulls/163 --- content/blog/2026/2026-06-13-ueberwachungsfrei/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md b/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md index 95b6f55..2cf7c0f 100644 --- a/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md +++ b/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md @@ -4,6 +4,7 @@ title: 'Demo-Aufruf: Überwachungsfrei in Hamburg' date: '2026-06-20T14:00:00+02:00' publishDate: '2026-06-13T12:00:00+02:00' draft: false +location: Hansaplatz authors: - stb tags: From 5572f70e968058b0c94cf02437a9718636104cc3 Mon Sep 17 00:00:00 2001 From: jtbx Date: Sat, 13 Jun 2026 20:45:11 +0200 Subject: [PATCH 08/15] Fix metadata of latest posts by stb (#164) Reviewed-on: https://git.hamburg.ccc.de/CCCHH/ccchh-website/pulls/164 Reviewed-by: stb --- content/blog/2026/2026-05-08-diday-website/index.md | 4 +--- content/blog/2026/2026-06-13-ueberwachungsfrei/index.md | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/content/blog/2026/2026-05-08-diday-website/index.md b/content/blog/2026/2026-05-08-diday-website/index.md index 1eb4361..1e1c267 100644 --- a/content/blog/2026/2026-05-08-diday-website/index.md +++ b/content/blog/2026/2026-05-08-diday-website/index.md @@ -2,9 +2,7 @@ categories: article title: 'DIDAY.org mit Unterstützung des CCCHH' date: '2026-06-07T14:00:00+02:00' # date of the event -publishDate: '2026-06-07T14:00:00+02:00' # when to publish draft: false -location: Z9 authors: - stb tags: @@ -24,4 +22,4 @@ Worum geht es beim Digital Independence Day? [Kurz gesagt](https://diday.org/de/ Das besondere: Alle können mitmachen und beitragen. Die gesamte Webseite wird als Open Source auf [codeberg.org/DI-Day/website](https://codeberg.org/DI-Day/website) von allen Interessierten gepflegt und weiterentwickelt. Und um es auch wirklich einfach zu machen, da einzusteigen, haben wir unter [Wie? Gemeinsam](https://diday.org/de/together/) Anleitungen bereitgestellt, wie ihr direkt loslegen könnt. -Der CCC Hansestadt Hamburg e.V. fungiert als Heimat für die Webseite, sowohl technisch als auch rechtlich. Aber die Inhalte kommen von euch allen! Wir freuen uns zu sehen, was in den nächsten Monaten alles dazukommen wird. \ No newline at end of file +Der CCC Hansestadt Hamburg e.V. fungiert als Heimat für die Webseite, sowohl technisch als auch rechtlich. Aber die Inhalte kommen von euch allen! Wir freuen uns zu sehen, was in den nächsten Monaten alles dazukommen wird. diff --git a/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md b/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md index 2cf7c0f..6118997 100644 --- a/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md +++ b/content/blog/2026/2026-06-13-ueberwachungsfrei/index.md @@ -1,5 +1,5 @@ --- -categories: article +categories: event title: 'Demo-Aufruf: Überwachungsfrei in Hamburg' date: '2026-06-20T14:00:00+02:00' publishDate: '2026-06-13T12:00:00+02:00' From da5da9fd62157da1bf00142c1c2a40f0f5ad25e6 Mon Sep 17 00:00:00 2001 From: jtbx Date: Mon, 8 Jun 2026 22:00:24 +0200 Subject: [PATCH 09/15] Theme: Display articles for 5 days (+6 hours) --- themes/ccchh/layouts/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/ccchh/layouts/index.html b/themes/ccchh/layouts/index.html index 8f1b5f6..c75d145 100644 --- a/themes/ccchh/layouts/index.html +++ b/themes/ccchh/layouts/index.html @@ -28,7 +28,7 @@ {{- end }} {{- $article := where (.Site.GetPage "blog").Pages ".Params.categories" "article" }} - {{- $articleDisplayTime := time.ParseDuration "-30h" }} + {{- $articleDisplayTime := time.ParseDuration "-126h" }} {{- $articleNew := where $article ".Params.publishDate" "ge" (time.Now.Add $articleDisplayTime) }} {{ if $articleNew }}
From c43009bbb3cdefccb1e67eb835dcebb87a68bdf2 Mon Sep 17 00:00:00 2001 From: jtbx Date: Mon, 8 Jun 2026 21:58:04 +0200 Subject: [PATCH 10/15] Theme: Fix doubled "Neuigkeiten" heading --- themes/ccchh/layouts/index.html | 15 ++++++--------- themes/ccchh/layouts/partials/blog-header.html | 6 ++++++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/themes/ccchh/layouts/index.html b/themes/ccchh/layouts/index.html index c75d145..5963234 100644 --- a/themes/ccchh/layouts/index.html +++ b/themes/ccchh/layouts/index.html @@ -7,7 +7,12 @@ {{- $events := where (.Site.GetPage "blog").Pages ".Params.categories" "event" }} {{- $lookback := time.ParseDuration "-6h" }} {{- $upcoming := where $events ".Params.date" "ge" (time.Now.Add $lookback) }} - {{ if $upcoming }} + + {{- $article := where (.Site.GetPage "blog").Pages ".Params.categories" "article" }} + {{- $articleDisplayTime := time.ParseDuration "-126h" }} + {{- $articleNew := where $article ".Params.publishDate" "ge" (time.Now.Add $articleDisplayTime) }} + + {{ if or $upcoming $articleNew }}

Neuigkeiten

{{- range $upcoming.ByDate }} @@ -24,15 +29,7 @@ {{- end }}
{{- end }} -
- {{- end }} - {{- $article := where (.Site.GetPage "blog").Pages ".Params.categories" "article" }} - {{- $articleDisplayTime := time.ParseDuration "-126h" }} - {{- $articleNew := where $article ".Params.publishDate" "ge" (time.Now.Add $articleDisplayTime) }} - {{ if $articleNew }} -
-

Neuigkeiten

{{- range $articleNew.ByDate }}
{{- partial "blog-header.html" (dict "headingLink" true "level" 4 "reduced" true "page" . ) }} diff --git a/themes/ccchh/layouts/partials/blog-header.html b/themes/ccchh/layouts/partials/blog-header.html index eef7cba..05edaf5 100644 --- a/themes/ccchh/layouts/partials/blog-header.html +++ b/themes/ccchh/layouts/partials/blog-header.html @@ -14,7 +14,12 @@ {{- end }}
+ {{- if (eq .Params.categories "event") }} {{ .Date | time.Format "Mon, 2006-01-02 15:04" }} + {{- else }} + {{ .Date | time.Format "2006-01-02" }} + {{- end }} + {{- if (eq .Params.categories "event") }} {{- with .Params.location }} @@ -25,6 +30,7 @@ {{- end -}} {{- end }} + {{- end }} {{- if $showTags }} {{- with .Page.GetTerms "tags" }} From 3df895f73461bc0081bd787d1a7ec61f73990145 Mon Sep 17 00:00:00 2001 From: jtbx Date: Thu, 11 Jun 2026 22:12:25 +0200 Subject: [PATCH 11/15] Theme: Reverse article order on start page articles are in the past, so sorting them in descending order will result in the most recent being the first item. --- themes/ccchh/layouts/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/ccchh/layouts/index.html b/themes/ccchh/layouts/index.html index 5963234..ef3708d 100644 --- a/themes/ccchh/layouts/index.html +++ b/themes/ccchh/layouts/index.html @@ -30,7 +30,7 @@
{{- end }} - {{- range $articleNew.ByDate }} + {{- range $articleNew.ByDate.Reverse }}
{{- partial "blog-header.html" (dict "headingLink" true "level" 4 "reduced" true "page" . ) }} From 0992ff34c41c9c3b74729440eaa59a7f4365f74b Mon Sep 17 00:00:00 2001 From: Stefan Bethke Date: Sun, 14 Jun 2026 21:20:52 +0200 Subject: [PATCH 12/15] Better explain content types (#165) * make it clear that Hugo/the template distinguishes content types based on frontmatter fields * explain what the key differences are * link to the archetypes so people can better understand what the relevant fields are Reviewed-on: https://git.hamburg.ccc.de/CCCHH/ccchh-website/pulls/165 Reviewed-by: jtbx --- README.md | 82 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 8bf8426..666a785 100644 --- a/README.md +++ b/README.md @@ -29,25 +29,59 @@ To populate the calendar data, please run `./fetch-calendar.sh` before running h Running the hugo command without and parameters will re-generate the site in the `public` directory. To deploy the website, just copy the whole folder to a directory which is servered by the webserver of your preference. -Please note, that the website should be re-deployed at least daily to update the "announcement" section on the front page even if there were no changed to the content. +Please note that the website should be re-deployed at least daily to update the "announcement" section on the front page even if there were no changed to the content. -### Add Pages +### Previewing Changes Locally To run a local version, just install HUGO by following the [instructions](https://gohugo.io/installation/) for your operating system. To build the website and run a development webserver, execute: ```shell -hugo server +hugo server --buildFuture --buildDrafts ``` -To also build posts in the future or in draft state, run this instead: +Note: the flags `--buildFuture --buildDrafts` makes Hugo process all content, even if the `publishDate` is still in the future, or the content is marked as `draft: true` in the frontmatter. +You usually want these flags, especially if you are preparing content that should only be shown after a certain date. + +Also see [Submitting Your Content](#submitting-your-content) below. + +### Adding Content + +There are two basic types of posts: Events and blog posts. +Hugo and the template set distinguish between these two types based on frontmatter information. +When manually creating content, you need to take extra care to use the correct frontmatter data. +See the link to the Hugo archetypes below for details. + +**If at all possible, use `hugo new content` with the appropriate parameters to create the new content file correctly.** + +You should always set these frontmatter fields: +* `categories`: must be either `article` or `event`; see below. +* `date`: the date displayed for this content. + For events, that should be when the event takes place; for blog posts, it is when the post was written. +* `publishDate`: the date and time the content should be published. + Note that if you do not specify a `publishDate`, the value of `date` will be used. +* `title`: the headline of your content. + +#### Add a Blog Entry + +Blog posts (the archetype is called `article`) should be used for information that will be relevant for a longer period, for example explanations about technical, political or cultural topics. +Articles will be shown for a few days on the home page. +The [blog page](https://hamburg.ccc.de/blog/) shows all posts, newest first. +In addition, the `tags:` can be used to find blog posts about certain topics. + +To create a new general blog post, run a command like this: ```shell -hugo server -D +hugo new content --kind article blog/yyyy/yyyy-mm-dd-your-article-title/index.md ``` +If you want to create a blog post from scratch, or convert an event into a blog post, see the frontmatter data in [themes/ccchh/archetypes/article.md](themes/ccchh/archetypes/article.md). +In particular, you need to set `categories: article`. +You do not need to specify an explicit `publishDate`, as the value of `date` will be used as a fallback. + #### Add an Event Announcement -There are two basic types of posts: Events and articles. -Events will be shown on the home page from their publishing date until they have happened and shall be used for things which happen at a certain date. +Events will be shown on the home page from the frontmatter `publishDate:` until the `date:` (plus a few hours grace period). +Use them for information that is relevant for a specific event, like a talk or a meeting. + This is not limited to events organized by the CCCHH, but can also be a hint to other events which we think are related to our activities. To create a new event blog post, run a command like this: @@ -55,29 +89,35 @@ To create a new event blog post, run a command like this: hugo new content --kind event blog/yyyy/yyyy-mm-dd-your-event-title/index.md ``` -#### Add a Blog Entry - -As mentioned before, you can also create blog posts for things which aren't events. -They will only be shown in the "blog" section and posted to the RSS feeds and shall be used for things which are relevant for a longer time. - -As we have much more event announcements than articles, finding articles in all blog posts can be quite a challenge. -But using these two categories enables filtering, so that the history of articles is in one list. - -To create a new general blog post, run a command like this: -```shell -hugo new content --kind article blog/yyyy/yyyy-mm-dd-your-article-title/index.md -``` +If you want to create an event from scratch, or convert a blog post into an event, see the frontmatter data in [themes/ccchh/archetypes/event.md](themes/ccchh/archetypes/event.md). +In particular, you need to set `categories: event`, `date:` for the date of the event, `publishDate:` for the date the content should be published, and `location:` to whereever your event takes place. #### Additional Notes on Events and Articles By default the first 70 words are shown as a summary on list pages. -Please use `` to manually separate the summary from other post content. +Please use `` (white space matters) to manually separate the summary from other post content. Please prefix your folder name with a date to make browsing the content in the source code easier. The date in the URL will be taken from the `date` field in the front matter. Blog posts from before 2024-01-22 were imported from the previous website and have additional front matter data which is not usually needed (e.g. the lastmod value). -When using the commands above, the template shall have evenything you need. + +#### Submitting Your Content + +After creating the new content, or making changes to existing content please commit your changes with a meaningful commit message to a fresh branch. +Name the branch in a way that makes it easy to understand what the changes are, for example, the title of your new blog post. + +Push the branch to git.hamburg.ccc.de, and create a new pull request. +Invite reviewers, or post the link to the PR to the [#infrastruktur:hamburg.ccc.de](https://matrix.to/#/#infrastruktur:hamburg.ccc.de) Matrix channel. + +The changes you have made will be deployed to the staging website automatically (this might take a minute or two). +See the comments in the PR for the link to your preview. +You and the reviewers can use the link to preview the changes. + +If you have set a `publishDate` to a date and time in the future, the preview will show the content as it would appear then. + +Once at least one reviewer approves the PR, it will be merged and pushed to production. +This usually takes less than five minutes. #### Populate the Event Calendar From d4044a7486dd03d3d55669a00317b4b562dfeadf Mon Sep 17 00:00:00 2001 From: Stefan Bethke Date: Sun, 14 Jun 2026 21:36:09 +0200 Subject: [PATCH 13/15] Explain the automated deployment processes --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 666a785..5d68b19 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Running the hugo command without and parameters will re-generate the site in the To deploy the website, just copy the whole folder to a directory which is servered by the webserver of your preference. Please note that the website should be re-deployed at least daily to update the "announcement" section on the front page even if there were no changed to the content. +See [Automated Deployment](#automated-deployment) for the way the deployment is set up on git.hamburg.ccc.de ### Previewing Changes Locally @@ -119,6 +120,19 @@ If you have set a `publishDate` to a date and time in the future, the preview wi Once at least one reviewer approves the PR, it will be merged and pushed to production. This usually takes less than five minutes. +### Automated Deployment + +The website is automatically rebuilt and redeployed every 20 minutes. At each build and deploy: +* The event calendar is fetched. +* Hugo renders all pages. +* All changed files are deployed to the production web server. + +See [.forgejo/workflows/deploy.yaml](.forgejo/workflows/deploy.yaml) for all the details. + +Additionally, for each pull request, a version of the website is deployed to the staging website under a unique URL. +The pull request will be updated with the URL, so you and the reviewers can look at the changes as they will appear after merging. +After the PR is closed, the staging URL will be removed. + #### Populate the Event Calendar The event calendar table is filled from the Nextcloud iCal feed. From d73dfb4742dd24a117b38f8f7fb34f3cf4ae8acc Mon Sep 17 00:00:00 2001 From: Stefan Bethke Date: Mon, 15 Jun 2026 18:21:49 +0200 Subject: [PATCH 14/15] Update description of groups, add missing ones (#168) Reviewed-on: https://git.hamburg.ccc.de/CCCHH/ccchh-website/pulls/168 Reviewed-by: jtbx --- content/home/3-gruppen/5-crypto.md | 6 +++--- content/home/3-gruppen/6-netzpolitischer-abend..md | 10 ++++++++++ content/home/3-gruppen/7-selfhosting.md | 10 ++++++++++ content/home/3-gruppen/8-ham-radio.md | 10 ++++++++++ 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 content/home/3-gruppen/6-netzpolitischer-abend..md create mode 100644 content/home/3-gruppen/7-selfhosting.md create mode 100644 content/home/3-gruppen/8-ham-radio.md diff --git a/content/home/3-gruppen/5-crypto.md b/content/home/3-gruppen/5-crypto.md index df38a89..5ac12d9 100644 --- a/content/home/3-gruppen/5-crypto.md +++ b/content/home/3-gruppen/5-crypto.md @@ -1,10 +1,10 @@ --- -title: "Crypto-Gruppe" +title: "Digitale Selbstverteidigung" draft: false headless: true type: card -image: cryptoparty-300x100.png +#image: cryptoparty-300x100.png link: https://wiki.hamburg.ccc.de/club:cryptogruppe:start --- -Die Cryptogruppe befasst sich mit digitaler Selbstverteidigung und veranstaltet u.a. Cryptoparties in Hamburg. +Die Gruppe befasst sich mit Datenschutz, Verschlüsselung, Backup-Strategien und vielem mehr. \ No newline at end of file diff --git a/content/home/3-gruppen/6-netzpolitischer-abend..md b/content/home/3-gruppen/6-netzpolitischer-abend..md new file mode 100644 index 0000000..3293822 --- /dev/null +++ b/content/home/3-gruppen/6-netzpolitischer-abend..md @@ -0,0 +1,10 @@ +--- +title: "Digitale Selbstverteidigung" +draft: false +headless: true +type: card +# image: TODO +link: https://wiki.hamburg.ccc.de/club:cryptogruppe:start +--- + +Wir diskutieren mit Menschen aus der Region über netzpolitische Fragestellungen, z. B. die Digitalisierung der Hamburger Verwaltung, neue Überwachung und Polizeibefugnisse, oder die Auswirkungen von KI auf das Leben in Hamburg. diff --git a/content/home/3-gruppen/7-selfhosting.md b/content/home/3-gruppen/7-selfhosting.md new file mode 100644 index 0000000..ae470ed --- /dev/null +++ b/content/home/3-gruppen/7-selfhosting.md @@ -0,0 +1,10 @@ +--- +title: "Selfhosting Usergroup" +draft: false +headless: true +type: card +# image: TODO +link: https://wiki.hamburg.ccc.de/club:selfhosting:start +--- + +Wer seine eigenen (Heim-)Server betreiben möchte, und hinter die Kulissen der grafischen Oberflächen schauen möchte, ist hier richtig. \ No newline at end of file diff --git a/content/home/3-gruppen/8-ham-radio.md b/content/home/3-gruppen/8-ham-radio.md new file mode 100644 index 0000000..672d537 --- /dev/null +++ b/content/home/3-gruppen/8-ham-radio.md @@ -0,0 +1,10 @@ +--- +title: "Funkamateure" +draft: false +headless: true +type: card +# image: TODO +link: https://wiki.hamburg.ccc.de/club:amateurfunk:start +--- + +Kreativer Umgang mit Technik? Machen die Funkamateure seid über 100 Jahren, und natürlich auch bei uns im CCCHH. From bf03e8b5a9f1564cf8795e97c48b47b6da211103 Mon Sep 17 00:00:00 2001 From: stb Date: Mon, 15 Jun 2026 18:23:14 +0200 Subject: [PATCH 15/15] Rearrange home page, add link to blogs (#166) * Make the news section most prominent by moving "about us" down * Add a link to all blog posts (articles and events) * Update group cards Reviewed-on: https://git.hamburg.ccc.de/CCCHH/ccchh-website/pulls/166 Reviewed-by: jtbx --- content/_index.md | 5 ----- content/home/1a-about/index.md | 10 ++++++++++ themes/ccchh/layouts/index.html | 3 ++- 3 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 content/home/1a-about/index.md diff --git a/content/_index.md b/content/_index.md index 5f69c56..79ad903 100644 --- a/content/_index.md +++ b/content/_index.md @@ -3,8 +3,3 @@ title: "CCC Hansestadt Hamburg e.V." date: 2022-11-20T09:03:20-08:00 draft: false --- - -## Über uns -Wir sind der Chaos Computer Club der Hansestadt Hamburg. -Bei uns handelt es sich um eine Gruppe von Menschen, die ein Interesse am kreativen Umgang mit Technik teilen. -Unsere Gesprächsthemen und Projekte reichen von Soft- und Hardware zu Datenschutz und Netzpolitik. diff --git a/content/home/1a-about/index.md b/content/home/1a-about/index.md new file mode 100644 index 0000000..633877f --- /dev/null +++ b/content/home/1a-about/index.md @@ -0,0 +1,10 @@ +--- +title: "Über uns" +date: 2026-06-13T00:00:00-02:00 +draft: false +headless: true +--- + +Wir sind der Chaos Computer Club der Hansestadt Hamburg: +Eine Gruppe von Menschen, die ein Interesse am kreativen Umgang mit Technik teilen. +Unsere Gesprächsthemen und Projekte reichen von Soft- und Hardware zu Datenschutz und Netzpolitik. diff --git a/themes/ccchh/layouts/index.html b/themes/ccchh/layouts/index.html index ef3708d..0c0e47d 100644 --- a/themes/ccchh/layouts/index.html +++ b/themes/ccchh/layouts/index.html @@ -14,7 +14,7 @@ {{ if or $upcoming $articleNew }}
-

Neuigkeiten

+

Aktuell

{{- range $upcoming.ByDate }}
{{- partial "blog-header.html" (dict "headingLink" true "level" 4 "reduced" true "page" . ) }} @@ -44,6 +44,7 @@ {{- end }}
{{- end }} +

Wir pflegen ein Archiv aller Neuigkeiten.

{{- end }}