## Neue Frontend-Darstellungen (gruppierung) - gruppierung=jahr - Jahresrückblick: eine Tabelle je Jahr mit allen Disziplinen, inkl. mehrerer Plätze, Team-Mitspielern und Spalten-/Zeilen-Layout wie auf der Detailseite. - gruppierung=summe - Ranking über alle Disziplinen hinweg: ein Eintrag je Spieler/Team mit mindestens einem 1. Platz, inkl. Titelanzahl und Auflistung aller Titel (Disziplin, Jahre). - gruppierung=summedisziplin - wie summe, aber eine eigene Rangliste je Disziplin. ## Neue/erweiterte Steuerungsparameter - platzierung (inspalten/inzeilen), plaetzezeigen, sortierung (kontextabhängig: Jahresreihenfolge oder anzahl/name in den Summen-Ansichten). - anzahltitel - Mindestanzahl an Titeln für die Summen-Ansichten. - halloffame_id und jahr als Filter für alle Hall-of-Fame-Seiten, mit Komma- und Bereichs-Syntax (2006-2010,2015). - Titel fällt auf den Joomla-Menütitel zurück, wenn kein eigener Titel im Menüpunkt gesetzt ist. - Überschrift semantisch als h1 statt div. ## Mannschaftsspieler-Feld - Neues Datenbankfeld teamspieler (TEXT) an #__sportsmanager_mitglied_von_halloffame, Eingabe im Backend als Textarea (nur bei Mannschaftsdisziplinen). - Anzeige im Frontend bei platzierung=inzeilen oder wenn nur ein Platz gezeigt wird, sofern mindestens ein Eintrag >= 3 Zeichen vorhanden ist. ## Verlinkung & Bilder - Spieler-, Vereins- und Mannschaftsnamen sind jetzt überall anklickbar (Detailseite, Jahresübersicht, Summen-Ansichten) und führen zur jeweiligen Profilseite - inaktive Spieler (ohne aktuellen Verein) bleiben unverlinkt. - Dummybilder: neues geschlechtsneutrales Bild (spieler-n.png) für Spieler ohne Datenbank-ID; deren Geschlecht wird zusätzlich anhand der übrigen Spieler mit ID derselben Disziplin geschätzt, bevor auf das neutrale Bild zurückgefallen wird. - Fehlt der Name zu einer Platzierung, wird in der Spaltenansicht nur das Bild weggelassen, in der Zeilenansicht die komplette Zeile. ## Neues Feld "nicht_ausgespielt" - Neue Spalte nicht_ausgespielt (BOOL) hinter jahr an #__sportsmanager_mitglied_von_halloffame (Teil von Datenbank-Version 121). - Admin-Formular: Checkbox neben dem Jahr-Feld; bei Aktivierung werden alle anderen Felder deaktiviert, beim Speichern werden Platz 2/3 gelöscht und Platz 1 auf reines nicht_ausgespielt=1 ohne Team-/Spielerdaten gesetzt. - Frontend-Detailseite und Backend-Jahresliste zeigen bei solchen Einträgen "Nicht ausgespielt" statt Team-/Spielername an. - Jahresübersicht und beide Summen-Ansichten überspringen solche Einträge vollständig. ## Vereins-Dropdown im Backend gruppiert - Die Vereinsliste im Auswahlfeld (Plätze 1-3) ist jetzt in zwei optgroup-Blöcke aufgeteilt: "Aktive Vereine" / "Inaktive Vereine" (neue Sprachkonstanten COM_SPORTSMANAGER_ACTIVE_CLUBS / COM_SPORTSMANAGER_INACTIVE_CLUBS). Innerhalb jeder Gruppe bleibt die alphabetische Sortierung erhalten. ## Routing-Fix - task=team_details und task=verein_details funktionierten nur, wenn der aktuelle Menüpunkt bereits auf content=teams bzw. content=vereine stand (z. B. beim Verlinken von der Hall-of-Fame-Seite aus nicht). Beide Tasks laufen jetzt wie spieler_details über eine content-unabhängige Route. ## Performance - Options-Liste für Vereins-/Spieler-Dropdowns im Backend-Formular wurde bis zu 6x komplett neu gerendert (3 Plätze x 2 Spieler bzw. 3x Vereinsliste). Jetzt wird sie nur noch 1x aufgebaut, in einem <template>-Element abgelegt und per JavaScript in die <select>-Felder befüllt. - Team-ID-Auflösung für Mannschaften ohne Vereinszuordnung läuft jetzt über eine einmalig geladene Liste statt einer Datenbankabfrage pro Zeile. ## Bugfixes - halloffameTeamIdFuerTeamname() erwartete einen nicht-nullbaren string und stürzte bei nicht_ausgespielt-Einträgen (teamname = NULL) mit einem TypeError ab. Parameter ist jetzt nullable, leerer/NULL-Teamname liefert direkt null zurück. - Bei Einzel-Disziplinen wurden Jahre in den Summen-Ansichten doppelt gezählt, wenn in der Datenbank (z. B. aus Altdaten) noch ein spieler2_id hinterlegt war; wird jetzt nur noch bei echten Doppel-Disziplinen berücksichtigt. ## Migration - Datenbank-Version 121: neues Feld teamspieler, neue Spalte nicht_ausgespielt, Bereitstellung des neutralen Dummybilds für Bestandsinstallationen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
SportsManager
DEV/STAGE environments
| LV | HOSTER | DOMAIN | BRANCH |
|---|---|---|---|
| DTFB | Kicktemp | stage.dtfb.de | dev |
| TFVHH | Kicktemp | stage.kickern-hamburg.de | dev |
| STFVH | DTFB | stage.stfv.de | sportsmanager2-stage |
| MTFV | DTFB | stage.mtfv.de | ? |
| TFVSH | DTFB | relaunch.tfvsh.de | ? |
PROD environments
| LV | HOSTER | DOMAIN | BRANCH |
|---|---|---|---|
| DTFB | Kicktemp | dtfb.de | production |
| TFVHH | Kicktemp | kickern-hamburg.de | production |
| MTFV | DTFB | mtfv.de | sportsmanager2-prod |
| TFVSH | DTFB | tfvsh.de | sportsmanager2-prod |
| STFVH | DTFB | stfv.de | sportsmanager2-prod |
Test setup
Installation
To start joomla and the database, run
docker-compose up -d
Release creation
To create a release execute
npm run release
Deployment
Deployment can only be done manually right now (sad)
To do this go to
Testserver Extension Installer Site
and upload the zip file found in ./package/packages
Development Tools
If you are using Intellij, there is a plugin named Joomla! which helps with resolving
joomla specific database prefixes like #__
To set it up, insert into the configuration popup which follows after you enable the framework support:
Joomla install path: ./data/joomla_data
JConfig: ./data/joomla_data/configuration.php
This works only with mounted volumes. However, mounted volumes will slow down the joomla instance significantly.
The current setup does not use mounted volumes. An alternative would be to download joomla and use that installation
Debugging (with Docker/Intellij)
-
Start Docker Container (see above)
-
Create a terminal for that container
docker exec -it <container_name> bash -
install xdebug within the container since joomla does not come with xdebug preinstalled
pecl install xdebug -
restart the container
-
In Intellij Go to File | Settings | Languages & Frameworks | PHP | Servers and setup your server
name anything host localhost port 8080 debugger xdebug use the path mapping and map the repo structure to the container content
File/Directory path on server <path>/com_sportsmanager/src/structure/administrator/components /var/www/html/administrator/components <path>/com_sportsmanager/src/structure/components /var/www/html/components -
Click on "Start Listening for PHP Debug Connections" in the top row of intellij
-
(Not sure if optional) Install a browser extension by Jetbrains
https://chromewebstore.google.com/detail/xdebug-helper-by-jetbrain/aoelhdemabeimdhedkidlnbkfhnhgnhm
How to release
Hint: for technical details regarding the release process have a look into .github/...
To create a release these steps need to be followed
- make sure all needed code changes are merged from dev -> stage -> prod, since releases may only be build on prod branch
- give pull requests meaningful names and label them enhancement/bug/chore since labels and names are used for release note generation Hint: if a specific pull request should be ignored, add the label changelog-ignore
- tag a commit (recommended is the latest merge on prod). The pipeline is listening for any tag fitting
v[0-9]+.[0-9]+.[0-9]+git tag -a v1.2.3 1a2b3c4 -m "Release version 1.2.3" - push the tag
git push origin --tags - the tag push will trigger the pipeline, and it will create the release and store in GitHub
A release can be created again anytime by deleting the release from GitHub, deleting the tag (from GitHub and additionally from git) and repeating step 3 and 4
Further: merges from dev to stage and from stage to prod can only be done by creating pull requests. These pull requests will be automatically labeled as changelog-ignore