diff --git a/assets/js/clubstatus.js b/assets/js/clubstatus.js
new file mode 100644
index 0000000..d87eb04
--- /dev/null
+++ b/assets/js/clubstatus.js
@@ -0,0 +1,67 @@
+const spaceapiUrl = "https://spaceapi.hamburg.ccc.de"
+const interval_ms = 60000
+
+console.log("clubstatus.js geladen!"); /* TODO: ENTFERNEN */
+
+function timeDistanceDE(pastDate) {
+ const seconds = Math.floor((Date.now() - pastDate.getTime()) / 1000)
+ const minutes = Math.floor(seconds / 60)
+ const hours = Math.floor(minutes / 60)
+ const days = Math.floor(hours / 24)
+
+ if (days = 1) return `since ${days}d`
+ if (days > 1) return `since ${days}d`
+ if (hours = 1) return `since ${hours}h`
+ if (hours > 1) return `since ${hours}h`
+ if (minutes = 1) return `since ${minutes}min`
+ if (minutes > 1) return `since ${minutes}min`
+ return `gerade eben`
+}
+
+function updateRoomState(openState, lastChangeTimestamp) {
+ const roomstate = document.querySelector('#clubstatus-badge')
+ const statusItem = roomstate.querySelector(".state")
+ const durationItem = roomstate.querySelector(".duration")
+
+ if (!statusItem || !durationItem) return
+
+ roomstate.classList.remove("open", "closed", "unknown")
+ statusItem.classList.remove("open", "closed", "unknown")
+
+ if (openState === null || lastChangeTimestamp === null) {
+ statusItem.textContent = "unbekannt"
+ statusItem.classList.add("unknown")
+ durationItem.textContent = "(since unbekannt)"
+ } else {
+ const changeDate = new Date(lastChangeTimestamp * 1000)
+ const sinceText = timeDistanceDE(changeDate)
+
+ if (openState) {
+ statusItem.textContent = "open"
+ statusItem.classList.add("open")
+ } else {
+ statusItem.textContent = "closed"
+ statusItem.classList.add("closed")
+ }
+
+ durationItem.textContent = `(${sinceText})`
+ }
+}
+
+function fetchRoomState() {
+ fetch(spaceapiUrl)
+ .then(response => response.json())
+ .then(data => {
+ const openState = data?.state?.open ?? null
+ const lastChange = data?.state?.lastchange ?? null
+ updateRoomState(openState, lastChange)
+ })
+ .catch(err => {
+ console.error("Fehler beim Laden der SpaceAPI:", err)
+ updateRoomState(null, null)
+ })
+}
+
+// Initialer Abruf + dann regelmäßig
+fetchRoomState()
+setInterval(fetchRoomState, interval_ms)
diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml
index 4253a6e..f96279d 100644
--- a/config/_default/hugo.toml
+++ b/config/_default/hugo.toml
@@ -1,92 +1,89 @@
-theme = 'blowfish'
-baseURL = 'https://oururl.de/'
-defaultContentLanguage = 'de'
+theme = "blowfish"
+baseURL = "https://oururl.de/"
+defaultContentLanguage = "de"
relativeURLs = true
canonifyURLs = true
-
pluralizeListTitles = false
-
enableRobotsTXT = true
summaryLength = 0
-
buildDrafts = false
buildFuture = false
-
enableEmoji = true
[pagination]
- pagerSize = 100
+pagerSize = 100
[imaging]
- anchor = 'Center'
+anchor = "Center"
[taxonomies]
- tag = 'tags'
- category = 'categories'
- author = 'authors'
- series = 'series'
+tag = "tags"
+category = "categories"
+author = "authors"
+series = "series"
[sitemap]
- changefreq = 'daily'
- filename = 'sitemap.xml'
- priority = 0.5
+changefreq = "daily"
+filename = "sitemap.xml"
+priority = 0.5
[permalinks]
- post = '/post/:year/:month/:day/:title/'
+post = "/post/:year/:month/:day/:title/"
[outputs]
- home = ['html', 'rss', 'json']
- section = ['html', 'Calendar', 'rss', 'xml']
- page = ['html', 'Calendar']
+home = ["html", "rss", "json"]
+section = ["html", "Calendar", "rss", "xml"]
+page = ["html", "Calendar"]
# Output Formats Configuration
[outputFormats.Calendar]
- mediaType = 'text/calendar'
- baseName = 'index'
- isPlainText = true
- notAlternative = true
+mediaType = "text/calendar"
+baseName = "index"
+isPlainText = true
+notAlternative = true
[outputFormats.XML]
- mediaType = 'application/xml'
- baseName = 'index'
- isPlainText = true
+mediaType = "application/xml"
+baseName = "index"
+isPlainText = true
[outputFormats.RSS]
- mediaType = 'application/rss+xml'
+mediaType = "application/rss+xml"
# Media Types Configuration
[mediaTypes]
- [mediaTypes.'text/calendar']
- suffixes = ['ics']
- [mediaTypes.'application/rss+xml']
- suffixes = ['xml', 'rss']
+[mediaTypes.'text/calendar']
+suffixes = ["ics"]
+
+[mediaTypes.'application/rss+xml']
+suffixes = ["xml", "rss"]
[related]
- threshold = 0
- toLower = false
+threshold = 0
+toLower = false
- [[related.indices]]
- name = 'tags'
- weight = 100
+[[related.indices]]
+name = "tags"
+weight = 100
- [[related.indices]]
- name = 'categories'
- weight = 100
+[[related.indices]]
+name = "categories"
+weight = 100
- [[related.indices]]
- name = 'series'
- weight = 50
+[[related.indices]]
+name = "series"
+weight = 50
- [[related.indices]]
- name = 'authors'
- weight = 20
+[[related.indices]]
+name = "authors"
+weight = 20
- [[related.indices]]
- name = 'date'
- weight = 10
+[[related.indices]]
+name = "date"
+weight = 10
- [[related.indices]]
- applyFilter = false
- name = 'fragmentrefs'
- type = 'fragments'
- weight = 10
+[[related.indices]]
+applyFilter = false
+name = "fragmentrefs"
+type = "fragments"
+weight = 10
diff --git a/config/_default/languages.de.toml b/config/_default/languages.de.toml
index 71158ad..ed57e00 100644
--- a/config/_default/languages.de.toml
+++ b/config/_default/languages.de.toml
@@ -5,28 +5,28 @@ weight = 1
title = "Chaos Computer Club Berlin"
[params]
- displayName = "DE"
- isoCode = "de"
- rtl = false
- dateFormat = "January 2, 2006"
- DateForm = "30.12.2006"
- logo = "img/logo.png"
- # secondaryLogo = "img/avatar-CCCB-Logo.png"
- description = "Willkommen! Wir sind ein Erfa-Kreis des Chaos Computer Club e.V. und die örtliche Niederlassung des CCC in Berlin."
- copyright = "CCC-BY"
- selfHosted = true
- mainSections = ["post", "datengarten"]
+displayName = "DE"
+isoCode = "de"
+rtl = false
+dateFormat = "January 2, 2006"
+DateForm = "30.12.2006"
+logo = "img/logo.png"
+# secondaryLogo = "img/avatar-CCCB-Logo.png"
+description = "Willkommen! Wir sind ein Erfa-Kreis des Chaos Computer Club e.V. und die örtliche Niederlassung des CCC in Berlin."
+copyright = "CCC-BY"
+selfHosted = true
+mainSections = ["post", "datengarten"]
[params.author]
- # name = "Your name here"
- email = "mail2025@berlin.ccc.de"
- image = "img/logo.png"
- # imageQuality = 96
- headline = "Willkommen! Wir sind ein Erfa-Kreis des Chaos Computer Club e.V. und die örtliche Niederlassung des CCC in Berlin."
-# bio = "A little bit about you"
- links = [
- { mastodon = "https://chaos.social/@clubdiscordia" },
- { forgejo = "https://git.berlin.ccc.de/explore/repos" },
- { email = "mailto:mail2025@berlin.ccc.de" },
- { github = "https://github.com/cccb/" },
- ]
+# name = "Your name here"
+email = "mail2025@berlin.ccc.de"
+image = "img/logo.png"
+# imageQuality = 96
+headline = "Willkommen! Wir sind ein Erfa-Kreis des Chaos Computer Club e.V. und die örtliche Niederlassung des CCC in Berlin."
+# bio = "A little bit about you"
+links = [
+ { mastodon = "https://chaos.social/@clubdiscordia" },
+ { forgejo = "https://git.berlin.ccc.de/explore/repos" },
+ { email = "mailto:mail2025@berlin.ccc.de" },
+ { github = "https://github.com/cccb/" },
+]
diff --git a/config/_default/markup.toml b/config/_default/markup.toml
index 4219cc6..fed9b07 100644
--- a/config/_default/markup.toml
+++ b/config/_default/markup.toml
@@ -3,11 +3,11 @@
[goldmark]
[goldmark.renderer]
- unsafe = true
+unsafe = true
[highlight]
- noClasses = false
+noClasses = false
[tableOfContents]
- startLevel = 1
- endLevel = 5
+startLevel = 1
+endLevel = 5
diff --git a/config/_default/menus.de.toml b/config/_default/menus.de.toml
index 041c14d..e32926e 100644
--- a/config/_default/menus.de.toml
+++ b/config/_default/menus.de.toml
@@ -1,7 +1,7 @@
# -- Main Menu --
# The main menu is displayed in the header at the top of the page.
# Acceptable parameters are name, pageRef, page, url, title, weight.
-#
+#
# The simplest menu configuration is to provide:
# name = The name to be displayed for this menu link
# pageRef = The identifier of the page or section to link to
@@ -10,51 +10,51 @@
# overridden by providing a weight value. The menu will then be
# ordered by weight from lowest to highest.
-#[[main]]
+# [[main]]
# name = "Blog"
# pageRef = "posts"
# weight = 10
[[main]]
- name = "Verein"
- pageRef = "verein"
- weight = 200
+name = "Verein"
+pageRef = "verein"
+weight = 200
[[main]]
- name = "Veranstaltungen"
- pageRef = "veranstaltungen"
- weight = 300
+name = "Veranstaltungen"
+pageRef = "veranstaltungen"
+weight = 300
[[main]]
- name = "Mitgliedschaft"
- pageRef = "mitgliedschaft"
- weight = 400
+name = "Mitgliedschaft"
+pageRef = "mitgliedschaft"
+weight = 400
[[main]]
- name = "News"
- pageRef = "post"
- weight = 500
+name = "News"
+pageRef = "post"
+weight = 500
# -- Footer Menu --
# The footer menu is displayed at the bottom of the page, just before
# the copyright notice. Configure as per the main menu above.
[[footer]]
- name = "Tags"
- pageRef = "tags"
- weight = 10
+name = "Tags"
+pageRef = "tags"
+weight = 10
[[footer]]
- name = "Kategorien"
- pageRef = "categories"
- weight = 20
+name = "Kategorien"
+pageRef = "categories"
+weight = 20
[[footer]]
- name = "Impressum"
- pageRef = "impressum"
- weight = 500
+name = "Impressum"
+pageRef = "impressum"
+weight = 500
[[footer]]
- name = "Datenschutz"
- pageRef = "datenschutz"
- weight = 600
+name = "Datenschutz"
+pageRef = "datenschutz"
+weight = 600
diff --git a/config/_default/params.toml b/config/_default/params.toml
index d19b358..15fd981 100644
--- a/config/_default/params.toml
+++ b/config/_default/params.toml
@@ -5,13 +5,11 @@
# Refer to the theme docs for more details about each of these parameters.
# https://blowfish.page/docs/configuration/#theme-parameters
-colorScheme = "fira" # "congo"
-defaultAppearance = "dark" # valid options: light or dark
+colorScheme = "fira" # "congo"
+defaultAppearance = "dark" # valid options: light or dark
autoSwitchAppearance = false
-
enableSearch = true
enableCodeCopy = false
-
replyByEmail = false
# mainSections = ["section1", "section2"]
@@ -21,113 +19,109 @@ replyByEmail = false
disableImageOptimization = false
disableTextInHeader = false
backgroundImageWidth = 1200
-
-# defaultBackgroundImage = "/img/cccb-im-winter.jpg" # used as default for background images
-defaultFeaturedImage = "/img/avatar-CCCB-Logo.png" # used as default for featured images in all articles
-
+# defaultBackgroundImage = "/img/cccb-im-winter.jpg" # used as default for background images
+defaultFeaturedImage = "/img/avatar-CCCB-Logo.png" # used as default for featured images in all articles
# highlightCurrentMenuArea = true
smartTOC = true
smartTOCHideUnfocusedChildren = true
-
giteaDefaultServer = "https://git.fsfe.org"
forgejoDefaultServer = "https://git.berlin.ccc.de"
[header]
- layout = "basic" # valid options: basic, fixed, fixed-fill, fixed-gradient, fixed-fill-blur
+layout = "basic" # valid options: basic, fixed, fixed-fill, fixed-gradient, fixed-fill-blur
[footer]
- showMenu = true
- showCopyright = true
- showThemeAttribution = true
- showAppearanceSwitcher = true
- showScrollToTop = true
+showMenu = true
+showCopyright = true
+showThemeAttribution = true
+showAppearanceSwitcher = true
+showScrollToTop = true
[homepage]
- layout = "background" # valid options: page, profile, hero, card, background, custom
- homepageImage = "img/cccb-im-winter.jpg" # used in: hero, and card
- showRecent = true
- showRecentItems = 9
- showMoreLink = true
- showMoreLinkDest = "/post/"
- cardView = true
- cardViewScreenWidth = false
- layoutBackgroundBlur = false # only used when layout equals background
+layout = "background" # valid options: page, profile, hero, card, background, custom
+homepageImage = "img/cccb-im-winter.jpg" # used in: hero, and card
+showRecent = true
+showRecentItems = 9
+showMoreLink = true
+showMoreLinkDest = "/post/"
+cardView = true
+cardViewScreenWidth = false
+layoutBackgroundBlur = false # only used when layout equals background
[article]
- showDate = true
- showViews = false
- showLikes = false
- showDateOnlyInArticle = false
- showDateUpdated = true
- showAuthor = false
- showAuthorBottom = true
- showHero = true
- heroStyle = "big" # valid options: basic, big, background, thumbAndBackground
- layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
- layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
- showBreadcrumbs = true
- showDraftLabel = true
- showEdit = true
- editURL = "https://git.berlin.ccc.de/cccb-website-team/www/src/branch/staging/content/"
- editAppendPath = true
- seriesOpened = false
- showHeadingAnchors = true
- showPagination = false
- invertPagination = false
- showReadingTime = true
- showTableOfContents = true
- # showRelatedContent = false
- # relatedContentLimit = 3
- showTaxonomies = true
- showAuthorsBadges = false
- showWordCount = true
- # sharingLinks = [ "mastodon", "email" ]
- showZenMode = false
+showDate = true
+showViews = false
+showLikes = false
+showDateOnlyInArticle = false
+showDateUpdated = true
+showAuthor = false
+showAuthorBottom = true
+showHero = true
+heroStyle = "big" # valid options: basic, big, background, thumbAndBackground
+layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
+layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
+showBreadcrumbs = true
+showDraftLabel = true
+showEdit = true
+editURL = "https://git.berlin.ccc.de/cccb-website-team/www/src/branch/staging/content/"
+editAppendPath = true
+seriesOpened = false
+showHeadingAnchors = true
+showPagination = false
+invertPagination = false
+showReadingTime = true
+showTableOfContents = true
+# showRelatedContent = false
+# relatedContentLimit = 3
+showTaxonomies = true
+showAuthorsBadges = false
+showWordCount = true
+# sharingLinks = [ "mastodon", "email" ]
+showZenMode = false
[list]
- showHero = false
- # heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
- layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
- layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
- showBreadcrumbs = false
- showSummary = false
- showViews = false
- showLikes = false
- showTableOfContents = false
- showCards = false
- orderByWeight = false
- groupByYear = true
- cardView = false
- cardViewScreenWidth = false
- constrainItemsWidth = false
+showHero = false
+# heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
+layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
+layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
+showBreadcrumbs = false
+showSummary = false
+showViews = false
+showLikes = false
+showTableOfContents = false
+showCards = false
+orderByWeight = false
+groupByYear = true
+cardView = false
+cardViewScreenWidth = false
+constrainItemsWidth = false
[sitemap]
- excludedKinds = ["taxonomy", "term"]
+excludedKinds = ["taxonomy", "term"]
[taxonomy]
- showTermCount = true
- showHero = false
- # heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
- showBreadcrumbs = false
- showViews = false
- showLikes = false
- showTableOfContents = false
- cardView = false
- category = "categories"
- series = "series"
- tag = "tags"
-
+showTermCount = true
+showHero = false
+# heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
+showBreadcrumbs = false
+showViews = false
+showLikes = false
+showTableOfContents = false
+cardView = false
+category = "categories"
+series = "series"
+tag = "tags"
[term]
- showHero = false
- # heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
- showBreadcrumbs = false
- showViews = false
- showLikes = false
- showTableOfContents = true
- groupByYear = false
- cardView = false
- cardViewScreenWidth = false
+showHero = false
+# heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
+showBreadcrumbs = false
+showViews = false
+showLikes = false
+showTableOfContents = true
+groupByYear = false
+cardView = false
+cardViewScreenWidth = false
[verification]
- fediverse = "@clubdiscordia@chaos.social"
+fediverse = "@clubdiscordia@chaos.social"
diff --git a/content/404.md b/content/404.md
new file mode 100644
index 0000000..d9fcfba
--- /dev/null
+++ b/content/404.md
@@ -0,0 +1 @@
+Leider existiert diese Seite nicht.
\ No newline at end of file
diff --git a/content/_index.md b/content/_index.md
index 872be10..6945629 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -1,6 +1,27 @@
---
description: "Startseite CCCB mit Kurzkalender"
---
+/* this section will be enabled when the cccb spaceapi is public
+
+
+
+
+
+*/
### Nächste Veranstaltungen:
diff --git a/layouts/datengarten/single.html b/layouts/datengarten/single.html
index aac49dc..6edd0d7 100644
--- a/layouts/datengarten/single.html
+++ b/layouts/datengarten/single.html
@@ -4,14 +4,12 @@
- {{ .Title }}
+
{{ if .Params.subtitle }}
- {{ .Params.subtitle }}
+ {{ .Params.subtitle }}
{{ end }}
-
- {{ partial "talk-infobox" . }}
-
+ {{ partial "talk-infobox" . }}
{{ .Content }}
@@ -19,11 +17,18 @@
{{ if .Params.tags }}
-
- {{ range .Params.tags }}
-
{{ . }}
- {{ end }}
-
+
+
Tags:
+
+ {{ range .Params.tags }}
+
+ {{ . }}
+
+ {{ end }}
+
{{ end }}
{{ if .Site.Params.socialShare }}
@@ -37,18 +42,31 @@
{{ if ne .Type "page" }}
-
+
{{ end }}
diff --git a/layouts/partials/clubstatus.html b/layouts/partials/clubstatus.html
new file mode 100644
index 0000000..8288367
--- /dev/null
+++ b/layouts/partials/clubstatus.html
@@ -0,0 +1,3 @@
+{{ $js := resources.Get "js/clubstatus.js" | resources.Minify | resources.Fingerprint }}
+
+
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html
new file mode 100644
index 0000000..12a2638
--- /dev/null
+++ b/layouts/partials/footer.html
@@ -0,0 +1,70 @@
+
diff --git a/layouts/partials/talk-infobox.html b/layouts/partials/talk-infobox.html
index ea71a4b..e479722 100644
--- a/layouts/partials/talk-infobox.html
+++ b/layouts/partials/talk-infobox.html
@@ -1,4 +1,4 @@
-
+
{{ if isset .Page.Params "speaker_url" }}
{{ .Page.Params.Speaker }}
{{ else }}
@@ -11,14 +11,14 @@
{{ with (eq $.Page.Params.Language "en") }}
🌐 Language: Englisch/English
{{ end }}
-📍 Location: {{ partial "location" .Page.Params.Location }}
-
+
📍 Location: {{ partial "location" .Page.Params.Location }}
{{ if isset .Page.Params "recording" }}
-
📹 Livestream: {{ .Page.Params.Recording }}
+
📹 Livestream: {{ .Page.Params.Recording }}
{{ else }}
{{ if and (eq .Page.Params.Streaming true) (not (isset .Page.Params "recording" )) }}
-
Stream: streaming.media.ccc.de/datengarten
+
Stream: streaming.media.ccc.de/datengarten
{{ else }}
Dieser Vortrag wird nicht gestreamed! / This talk will not be streamed!
{{ end }}
-{{ end }}
\ No newline at end of file
+{{ end }}
+
\ No newline at end of file