Commit graph www/layouts/shortcodes
Author SHA1 Message Date
a0e1ef046a Vendor ical.js instead of loading it from unpkg.com
The upcoming events table pulled its ICS parser straight from a CDN with
`import ICAL from "https://unpkg.com/ical.js/dist/ical.min.js"`. That sends
every visitor of the start page to unpkg.com, which hands their IP address and
user agent to a third party before any of our own code runs. The URL is not
even pinned to a version, so whatever ical.js publishes next is executed on our
site without anybody looking at it, and the start page silently breaks when the
CDN is unreachable.

Check the parser into `assets/js/vendor/` and let Hugo bundle it. This is what
`js.Build` is for: it runs the esbuild that is built into Hugo, so it resolves
the import at build time and needs no node_modules and no extra tooling in the
build environment. The result is minified and fingerprinted like the other
scripts of the site, and the script tag carries a subresource integrity hash.

Since the bundle now has a content hash in its name, its URL cannot be written
by hand in the markdown any more. Move the table and the script tag into an
`upcoming` shortcode, which is the same pattern `calendar.html` already uses,
and move `upcoming.js` from `static/` to `assets/` so Hugo can process it.

The vendored file is the unminified `dist/ical.js` of the pinned release: it
carries the MPL-2.0 header and is the source form of what we ship, and Hugo
minifies it for delivery anyway. `assets/js/vendor/README.md` records the
version, where it came from and how to update it.

The built bundle renders the same table as before, checked against
https://berlin.ccc.de/calendars/all.ics.

Fixes: c28f04c6e8 ("switch to ics files; make calendars work; fix some minor issues")
Assisted-by: Claude:claude-opus-5
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-23 01:07:25 +02:00
Marek Krug
2b5277a3a0 fixed ics generation 2025-03-12 17:41:44 +01:00
Marek Krug
4068fab565 improved calendar and fixed url temporarily 2025-03-12 16:06:29 +01:00
Vinzenz Schroeter
fabc5ff0ea fix naming conflict to restore old gallery with thumbnails 2025-03-10 17:40:10 +01:00
2e3a02af0c
refacture all the things! 2023-06-13 12:47:07 +02:00
ff62faf23a Move out datengartens into their own section
- /datengarten/index.html returns a blog-like list
- /datengarten/index.ics returns a VCALENDAR
- /datengarten/index.xml returns a schedule.xml-style view

No more pretty rendering includes in the content pages,
some more cleanup in the front matter
2018-05-21 18:31:39 +02:00
7ebb0231c9 Link speakers 2018-05-20 15:55:06 +02:00
6df3c9e8ba Fix icons in infobox 2018-05-20 14:29:34 +02:00
2b111b73ae Correct Series sorting, show correct icon for episodes without recording 2018-05-20 14:28:44 +02:00
c93bd4c6e6 Datengarten als Serie, Nr. 88 als Beispiel.
Fuer andere braucht es noch ein Import-Script.
2018-05-18 13:36:00 +02:00