- JavaScript 49%
- HTML 29.6%
- CSS 15.8%
- Nix 4.5%
- Shell 1.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
An occurrence of a recurring event that was changed on its own carries a
RECURRENCE-ID and is stored as an additional VEVENT next to the event it
belongs to. `getAllSubcomponents("vevent")` returns those components as well,
and since they have no RRULE of their own they were handled as separate single
events. The occurrence therefore ended up in the list twice: once from
expanding the recurring event, which resolves the modified time through the
exception, and once more from the extra VEVENT.
To make it worse the two rows disagreed, because name and URL were taken from
the recurring event while the time came from the modification, so the first row
showed the new time under the old name.
Skip components that are a recurrence exception, they are already covered by
the event they modify, and take name and URL from the occurrence details, which
point at the modification where there is one and at the event itself otherwise.
Events whose RECURRENCE-ID refers to an event that is not in the file are
dropped by this, which cannot happen in a full calendar export.
The published calendar currently contains no RECURRENCE-ID at all, so nothing
changes for it today. It is exported from a CalDAV server though, and moving a
single Club Discordia or Plenum out of the way of a holiday is exactly what
creates such a modification.
With a recurring Plenum whose 25.08. occurrence is moved two hours earlier and
renamed:
before: 25.08. 18:00 CCCB Plenum
25.08. 18:00 CCCB Plenum (verschoben)
after: 25.08. 18:00 CCCB Plenum (verschoben)
Fixes:
|
||
| .forgejo/workflows | ||
| archetypes | ||
| assets | ||
| config/_default | ||
| content | ||
| i18n | ||
| layouts | ||
| static | ||
| themes | ||
| tools | ||
| .editorconfig | ||
| .gitignore | ||
| .gitmodules | ||
| .hugo-params | ||
| build.sh | ||
| devShells.nix | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| old_config.yaml.txt | ||
| packages.nix | ||
| README.md | ||
| TODO.md | ||
CCCB Website
This is the website of the CCCB.
Getting started
-
Clone this repo (
--recursiveis needed to check out submodules)git clone --recursive https://git.berlin.ccc.de/cccb-website-team/www.git cccb-website -
Switch directory
cd cccb-website -
Run hugo webserver
hugo serve -
Point your browser to: http://localhost:1313/
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 and the calendar under /verein/calendar/ are rendered in the
browser by static/js/upcoming.js and assets/js/calendar.js. Both fetch /calendars/all.ics, which is not
generated by Hugo and is not part of this repo — it is published separately on the web server. Without it both tables
stay empty. Download the published calendar into static/, which Hugo serves under the same path, and they work
locally, under hugo serve as well as in a built site:
mkdir -p static/calendars
curl -o static/calendars/all.ics https://berlin.ccc.de/calendars/all.ics
The file is only there to look at the site, it is not checked in. Download it again whenever you want the events that are currently published.
Hugo does generate an .ics feed per section (for example /veranstaltungen/index.ics) from the dtstart, dtend
and rrule front matter of the pages in content/veranstaltungen/, using the .ics templates under layouts/.
To build the site for upload, run:
./build.sh
This deletes public/ and runs hugo with the parameters from .hugo-params. To build with nix instead:
nix build '.?submodules=1#production-content'
Making a change
- Use your local dev setup (see Getting started) or via the Forgejo editor.
- Make your change in
stagingbranch. - Commit (and push) your change.
GitHub Actions is running the release workflow.- If successful, check Staging Website if change is correct.
- Create a merge request to merge changes from
stagingtoproductionbranch. Ask somebody to check merge request or if small change, merge yourself. GitHub Actions is running the release workflow.- If successfull, check Website if change is correct.
- Profit!
Nix stuff
- After entering the shell with
nix develop, hugo is available andhugo serveand./build.shshould work - You can build the staging and production builds with
nix build .#staging-contentandnix build .#production-content - Do not update the nixpkgs branch - 25.05 contains a newer hugo version that is incompatible with the theme (last checked June 2025)
Made with ❤️ and Hugo.
