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 in NOTICE.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.

S
Description
No description provided
Readme
537 KiB
Languages
PHP 46%
CSS 30.7%
Shell 13%
JavaScript 10.3%