Commit Graph
5 Commits
Author SHA1 Message Date
admin.juergenandClaude Opus 5.5 7df08b9017 Sitemap lastmod and handling of past events
- SitemapListener: <lastmod> for event detail pages (event tstamp) and
  regular pages; events that ended more than 12 months ago are removed
  from the sitemap
- PastEventPolicy: events stay indexable for 12 months after they end
  (recurring events are searched before the next date), afterwards the
  detail page gets noindex,follow but stays reachable as archive
- detail template data: is_past and next_occurrence (next published
  event with the same title) for a notice with a link to the next date

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 17:19:46 +01:00
admin.juergenandClaude Opus 5.5 5bf31e5043 SEO: event meta title with date, Open Graph defaults, cache invalidation
- event detail pages: <title> is "Title – 03.12.2026" (multi-day ranges
  supported) so recurring events with the same name stay distinguishable;
  H1 and lists keep the editor's title
- meta description fallback for events without teaser/description (date,
  time, location); a teaser that is only an insert tag (shared series
  text) also falls back, so a series does not share one description
- EventOpenGraphProvider for numero2/contao-opengraph3 (registered only
  when the bundle is installed, priority above its CalendarEventsProvider):
  og:title with date, og:description from teaser, event image as og:image
- FrontendCacheInvalidator: frontend event/organization edits write via
  DBAL, so invalidate the same cache tags the backend uses; tag the map
  and organization listing, invalidate the generic organization tag on
  backend saves

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 16:58:33 +01:00
admin.juergenandClaude Opus 5.5 bdc8988e28 Always open the event detail page instead of redirecting to the external URL
Events with a URL were saved with source "external", so Contao linked
lists straight to the external site and redirected the detail page.
The URL is now kept in the url field and only shown as a button on the
detail page.

- frontend form saves source "default" for every event
- backend: source option "external" removed, url field relabelled
  "Externer Link", obsolete target field dropped from the palette
- migration switches existing source="external" events to "default"

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 16:16:33 +01:00
admin.juergenandClaude Opus 5.5 ff8fa50360 Use GeoSN aerial imagery via own proxy instead of Esri for satellite mode
Esri World Imagery (Maxar) is not freely licensed for commercial
projects. Satellite mode now uses the official GeoSN orthophotos
(Saxony, 20 cm) through the cache proxy on maps.mummert.media, so
visitors never connect to Esri or geodienste.sachsen.de.

- raster layer below the first base symbol layer, labels and event
  markers stay on top; Esri road/label overlays removed
- labels recoloured for the aerial view (white text, dark halo),
  POIs, address labels and oneway arrows hidden; originals restored
  when switching back
- attribution "© GeoSN, dl-de/by-2-0"
- bump map-module.js cache buster

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 15:49:22 +01:00
admin.juergenandClaude Opus 5.5 5aeeee0ee5 Detect Kulturhauptdorf events by tag name instead of tag ID 21
The event detail template data set has_tag_21 to drive the
Kulturhauptdorf logo, but tag 21 is "Feste & Märkte", so the logo
showed on every market/festival event. Add is_kulturhauptdorf, which
checks for a tag named "Kulturhauptdorf" (case-insensitive), and keep
has_tag_21 as deprecated for backwards compatibility.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 15:32:11 +01:00