Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Madrigalchor Weimar – Webseiten-Umbau
Quellcode-Repository für den Umbau des öffentlichen Teils von
madrigalchor-weimar.de (Joomla 5). Der
interne Mitgliederbereich (com_phpbridge, Login, internes Menü) ist nicht
Teil dieses Umbaus und bleibt unangetastet.
Dieses Repository enthält nur die eigene Arbeit – nicht die vollständige
Joomla-Installation (Kern, Fremd-Erweiterungen, Bilder/Medien, Datenbank).
Diese liegen lokal unter site/, sind aber über .gitignore bewusst
ausgeklammert; siehe Lokale Entwicklung.
Inhalt
| Pfad | Was |
|---|---|
site/templates/mcw_landing/ |
Frontend-Template „Choraufstellung“ (2.0): Punkt-Halbkreis als Hero-Menü, helles/dunkles Farbschema automatisch per prefers-color-scheme, Landing Page, Geschichte, Impressum/Datenschutz als generische Inhaltsseiten. Inhalte kommen aus Joomla-Artikeln + Custom Fields, nicht hart codiert. |
site/templates/mcw_landing_backup/ |
Unveränderte Sicherung des vorherigen Designs (1.2.6, Gold auf dunklem Teal) als eigenes Template. Zurückschalten: Menü „Home“ im Backend dem Stil „mcw_landing_backup“ zuweisen. |
site/administrator/components/com_mcwkonzerte/ |
Backend der Konzert-Komponente: Eingabemaske (Titel, Datum, Ort/Adresse, Flyer, interaktive Kartenauswahl per OpenStreetMap-Suche), Komponenten-Konfiguration. |
site/components/com_mcwkonzerte/ |
Frontend-Teil der Konzert-Komponente: Modelle/Views für die öffentliche Konzertliste und -Einzelseite. |
site/modules/mod_mcwkonzerte/ |
Modul, das die Konzertliste (gefiltert nach Zeitraum) in die Landing Page einbettet. |
site/media/com_mcwkonzerte/ |
Admin-seitige Assets für die Kartenauswahl: selbst gehostetes Leaflet + eigenes JS/CSS (kein CDN). |
docker/, docker-compose.yml |
Lokale Entwicklungsumgebung (Joomla + MariaDB) sowie die SQL-Skripte, die Menüs/Artikel/Custom Fields/Beispieldaten aufsetzen. |
deploy/ |
Build-Skript für installierbare Erweiterungs-ZIPs und die ausführliche Deploy-Anleitung. |
Architektur-Entscheidungen (kurz)
- Konzerte sind eine eigene Komponente (
com_mcwkonzerte) + Modul (mod_mcwkonzerte), keine Custom-Content-Lösung – damit gibt es eine echte Datenstruktur (Datum, Ort, Koordinaten, Flyer) statt Freitext. - Landing-Page-Inhalte (Texte, Fotos, Fakten-Leiste, Link-Karten) liegen als Joomla Custom Fields an einem einzigen Artikel „Startseite“ – das Template liefert nur Struktur/Design, keine Inhalte sind hart codiert.
- Keine CDN-Abhängigkeiten: Leaflet (Kartenauswahl im Backend),
GLightbox (Lightbox) und WaveSurfer.js (Wellenform-Player für
Hörbeispiele) werden unverändert selbst gehostet
(
vendor/-Ordner, Lizenzen jeweils inNOTICE.md). - Geocoding (Adresse → Koordinaten) läuft optional und ausschließlich über die öffentliche OpenStreetMap-Nominatim-API, serverseitig beim Speichern bzw. interaktiv über ein Suchfeld im Editier-Formular.
Lokale Entwicklung
Voraussetzung: Docker + eine vollständige lokale Joomla-5-Installation unter
./site (wird bewusst nicht mitversioniert – z. B. per
docker run joomla:5.4.5-php8.2-apache einmalig aufsetzen/entpacken, oder
von einem Backup der Zielinstanz restaurieren, damit Inhalte/Bilder
vorhanden sind). Die Dateien aus diesem Repo werden in dieses site/
hineinkopiert bzw. liegen dort schon, wenn du direkt in einem Checkout
arbeitest, das site/ enthält.
docker compose up -d
# Joomla: http://localhost:8080/
# Backend: http://localhost:8080/administrator/
Der DB-Container ist unter localhost:3306 erreichbar
(madrigal / madrigal / madrigal, siehe docker-compose.yml).
Für das Redesign kommen zusätzliche Custom Fields hinzu: docker/setup-redesign.sql (nach setup-landing.sql ausführen). Die SQL-Skripte unter docker/ sind idempotent (mehrfach ausführbar) und
richten die komplette Landing-Page-Struktur ein (Custom Fields, Menüs,
Beispiel-Konzerte, Geschichte-Bereinigung):
docker compose exec -T db mariadb -umadrigal -pmadrigal madrigal < docker/setup-landing.sql
Details, Reihenfolge und was die einzelnen Skripte genau tun: siehe deploy/DEPLOY.md.
Deployment auf die Produktivinstanz
Eine vollständige, schrittweise Anleitung (Vorbereitung, Datei-Rollout, Erweiterungs-Registrierung, DB-Migration, Nacharbeit im Backend, Kontrolle, Rollback) steht in deploy/DEPLOY.md.
Kurzfassung: deploy/release.sh baut das Release, sichert die Zielinstanz, rollt Dateien + Datenbank direkt aus, prüft per Rauchtest und kann zurückrollen (build → preflight → backup → deploy → verify). Änderungen siehe CHANGELOG.md. Alternativ: deploy/build-zips.sh baut installierbare ZIPs für Komponente,
Modul und Template nach deploy/dist/; alternativ per rsync/SFTP direkt ins
Webroot kopieren und über extension:discover registrieren.
Versionierung
Komponente, Modul und Template werden unabhängig voneinander versioniert
(<version> im jeweiligen Manifest). Schema-Änderungen an
com_mcwkonzerte laufen über sql/updates/mysql/<version>.sql und werden
von Joomlas Update-Mechanismus automatisch angewendet – bei jeder
funktionalen Änderung wird die Version in Manifest, SQL-Update-Datei und
deploy/build-zips.sh im Gleichschritt erhöht.