schachbulle / contao-schachturnier-bundle
Verwaltet Schachturniere in Contao: Teilnehmer, Runden, Paarungen, Termine und Ergebnisse, mit Paarungsgenerator, Ranglisten, Kreuztabellen und Feinwertungen.
Package info
github.com/Samson1964/contao-schachturnier-bundle
Type:contao-bundle
pkg:composer/schachbulle/contao-schachturnier-bundle
Requires
- php: ^7.4 || ^8.0
- contao/core-bundle: ^4.13 || ^5.0
- menatwork/contao-multicolumnwizard-bundle: ^3.6 || ^4.0
- schachbulle/contao-helper-bundle: ^2.0
- symfony/config: ^5.4 || ^6.4 || ^7.0
- symfony/dependency-injection: ^5.4 || ^6.4 || ^7.0
- symfony/http-foundation: ^5.4 || ^6.4 || ^7.0
- symfony/http-kernel: ^5.4 || ^6.4 || ^7.0
Requires (Dev)
- contao/manager-plugin: ^2.0
- phpunit/phpunit: ^9.6
Conflicts
- contao/core: *
- contao/manager-plugin: <2.0 || >=3.0
README
Contao-Erweiterung zur Verwaltung und Ausgabe von Schachturnieren: Teilnehmer, Rundentermine, Paarungen und Ergebnisse. Ein Paarungsgenerator erstellt die Runden eines Rundenturniers, das Frontend gibt Teilnehmerlisten, Paarungen, Ranglisten mit Feinwertungen, Kreuz- und Fortschrittstabellen aus.
Frank Hoppe
Anforderungen
- PHP 7.4 oder neuer (PHP 8 wird unterstützt)
- Contao 4.13 LTS oder Contao 5
Installation
composer require schachbulle/contao-schachturnier-bundle
Anschließend im Contao Manager bzw. über contao:migrate die Datenbank
aktualisieren.
Hinweis zum Update auf 3.0.0
- Die Abhängigkeiten zu
codefog/contao-hasteundcomponents/flag-icon-csssind entfallen. Werden sie von keiner anderen Erweiterung mehr gebraucht, können sie aus dem Projekt entfernt werden. - Die Länderflaggen liegen jetzt im Bundle selbst. Der Symlink
web/bundles/flag-icon-css, den frühere Fassungen zur Laufzeit angelegt haben, wird nicht mehr gebraucht und kann gelöscht werden. - Wer die Flaggen in einem eigenen Template über die CSS-Klassen
flag-icon flag-icon-xxangesprochen hat, muss auf das neueimg-Element mit der Klasseflaggeumstellen.
Backend
Die Verwaltung liegt unter Inhalte → Schachturniere und ist zweistufig: Turnier → Teilnehmer, Paarungen und Termine.
Turnier
| Feld | Bedeutung |
|---|---|
| Titel | Name des Turniers |
| Turnierart | Rundenturnier, Doppelrundenturnier oder K.o.-Turnier / Schweizer System |
| Turnierbeginn / -ende | Zeitraum, je mit einem Schalter, ob das Datum im Frontend erscheint |
| Wertungen | Reihenfolge der Wertungen, nach denen die Rangliste sortiert wird (siehe unten) |
| Ausgeschiedene bei Feinwertungen ignorieren | Partien gegen ausgeschiedene Spieler fließen nicht in Sonneborn-Berger, Buchholz und Direkten Vergleich der übrigen Spieler ein |
| Aufsteiger / Absteiger | Anzahl der Plätze, die in Ranglisten grün bzw. rot markiert werden |
| Relegationsplätze | Gelb markierte Plätze, Eingaben wie 7,9,11-13 |
| Fotogrößen | Getrennte Bildgrößen für Tabellen und Ergebnislisten |
| Veröffentlicht / Komplett | Sichtbarkeit und Vermerk, dass alle Daten erfasst sind |
Aus der Turnierzeile führen drei Schaltflächen in die Unterlisten: Termine, Teilnehmer und Paarungen.
Wertungen und Rangliste
Die Rangliste sortiert nach der im Turnier eingestellten Reihenfolge der Wertungen. Zur Auswahl stehen:
| Wertung | Bedeutung |
|---|---|
| Zwei-Punkte-System | Sieg = 1, Remis = ½ |
| Drei-Punkte-System | Sieg = 3, Remis = 1 |
| Sonneborn-Berger-Wertung | Summe der Punkte der besiegten Gegner, halbe bei Remis |
| Anzahl der Siege | |
| Buchholz-Wertung | Summe der Punkte aller Gegner |
| Direkter Vergleich | Ergebnisse der Spieler untereinander, die in allen vorherigen Wertungen gleichauf liegen |
Spieler, die in allen Wertungen der Reihenfolge exakt gleichauf liegen, erhalten denselben Platz; die Zählung springt entsprechend weiter (1, 2, 2, 4).
Teilnehmer
Je Teilnehmer werden Vor- und Nachname, Startnummer, DWZ, Elo, Titel, Land, Verein und wahlweise ein Foto erfasst. Dazu kommen:
| Feld | Bedeutung |
|---|---|
| Startnummer | Bestimmt die Reihenfolge in Tabellen und die Paarungen des Generators |
| Wertung der Partien | Wie gespielte und offene Partien gewertet werden |
| Freilos | Der Eintrag ist ein Platzhalter; ausgegeben wird nur der Nachname |
| Ausgeschieden | Der Name wird durchgestrichen |
| Herkunft | Was der Spieler in der Vorsaison war; erscheint als Kurzform in Klammern hinter dem Namen |
| Aufsteiger / Absteiger | Einzelne Spieler abweichend von der Turniereinstellung markieren |
| Kann nicht auf-/absteigen | Nimmt den Spieler von der automatischen Markierung aus |
Die Startnummern müssen lückenlos von 1 an vergeben sein, sonst verweigert der Paarungsgenerator die Arbeit.
Paarungsgenerator
Über der Teilnehmer- und der Paarungsliste steht die Schaltfläche Paarungsgenerator. Sie erzeugt die Paarungen aller Runden nach dem Standardsystem: Jeder spielt genau einmal gegen jeden. Bei gerader Teilnehmerzahl entstehen n-1 Runden, bei ungerader n Runden — dort ist in jeder Runde einer spielfrei. Bei einem Doppelrundenturnier entstehen im Anschluss dieselben Paarungen noch einmal mit vertauschten Farben und fortlaufenden Rundennummern.
Achtung: Der Generator löscht zuvor alle vorhandenen Partien des Turniers, einschließlich der eingetragenen Ergebnisse, PGN-Daten und Bemerkungen. Er gehört an den Anfang eines Turniers, nicht in dessen Verlauf.
Bei der Turnierart K.o.-Turnier / Schweizer System und bei fehlenden Startnummern bricht er mit einer Meldung ab, ohne etwas zu ändern.
Paarungen
Je Partie werden Runde, Brett, Datum, beide Spieler, das Ergebnis, eine Bemerkung und wahlweise die Partie im PGN-Format erfasst. Unter Absagen lassen sich Absagen und Verschiebungen festhalten; im Frontend wird eine Absage nur dann als „(E)" markiert, wenn sie aktiv und der jüngste Eintrag ist.
Termine
Je Runde ein Datum. Die Paarungsliste im Frontend stellt es über die jeweilige Runde.
Inhaltselement „Schachturnier"
Unter den Inhaltselementen erscheint die Gruppe Schach-Elemente mit dem Element Schachturnier.
| Feld | Bedeutung |
|---|---|
| Turnier | Das auszugebende Turnier |
| Modus | Anzeigeformat, siehe unten |
| Ausgaben für die Tab-Navigation | Nur beim Modus Tab-Navigation: welche Ausgaben als Tabs erscheinen und in welcher Reihenfolge |
| Runde | Grenzt Paarungen und Tabellen auf eine Runde ein; leer = alle Runden |
| Optionen | Welche Spalten erscheinen: Foto, DWZ, Elo, Land, Verein |
| Feinwertungen ausblenden | Blendet einzelne im Turnier aktivierte Wertungen in diesem Element aus |
| Ergebnisse ausblenden | Gibt die Paarungen ohne Ergebnisse aus |
Anzeigeformate
| Modus | Ausgabe |
|---|---|
| Teilnehmerliste | Alle Teilnehmer in Startnummern-Reihenfolge |
| Paarungen/Ergebnisse | Alle Runden mit Brett, Datum, beiden Spielern und Ergebnis |
| Rangliste | Platzierung mit Punkten und allen aktivierten Feinwertungen |
| Kreuztabelle (nach Nummer / nach Rang) | Jeder gegen jeden, Zeilen nach Startnummer oder nach Platz |
| Fortschrittstabelle (nach Nummer / nach Rang) | Kumulierter Punktstand nach jeder Runde |
| Tab-Navigation | Mehrere der obigen Ausgaben als Tabs, ohne JavaScript (reines CSS) |
Die Tabellen zeigen alle im Turnier aktivierten Feinwertungen als Spalten in der Wertungsreihenfolge.
Templates
Jede Ausgabe besteht aus einem Rahmentemplate ce_schachturnier_* und einem
Partial schachturnier_*, das die eigentliche Tabelle enthält. So lässt sich
eine Tabelle anpassen, ohne den Rahmen anzufassen.
| Rahmen | Partial | Ausgabe |
|---|---|---|
ce_schachturnier_teilnehmer |
schachturnier_teilnehmer |
Teilnehmerliste |
ce_schachturnier_paarungen |
schachturnier_paarungen |
Paarungen |
ce_schachturnier_rangliste |
schachturnier_rangliste |
Rangliste |
ce_schachturnier_kreuztabelle |
schachturnier_kreuztabelle |
Kreuztabelle |
ce_schachturnier_fortschritt |
schachturnier_fortschritt |
Fortschrittstabelle |
ce_schachturnier_tabs |
— | Tab-Navigation, bindet die Partials ein |
ce_schachturnier |
— | Grundtemplate |
Ein eigenes Template lässt sich am Inhaltselement unter Template-Einstellungen hinterlegen.
Templatevariablen
Alle Ausgaben erhalten:
| Variable | Inhalt |
|---|---|
$this->view_foto, view_land, view_elo, view_dwz, view_verein |
Welche Spalten erscheinen sollen |
$this->wertungsspalten |
Die anzuzeigenden Feinwertungen in Wertungsreihenfolge |
$this->turnierdatum |
Aufbereiteter Turnierzeitraum |
$this->tabelle |
Die Daten der jeweiligen Ausgabe |
Die Felder eines Teilnehmers in $this->tabelle heißen nummer, name,
titel, land, verein, dwz, elo, bild und css; dazu kommen je nach
Ausgabe platz, die Wertungsfelder (2punkte, sobe, buch, siege,
direkt) sowie partien bzw. fortschritt.
land und bild enthalten fertiges HTML. Zahlenwerte der Wertungen werden im
Template über Helper::formatWertung() formatiert, damit halbe Punkte als
½ erscheinen.
Länderflaggen
Die Flaggen liegen als SVG unter
bundles/contaoschachturnier/images/flags/xx.svg und stammen aus dem Projekt
flag-icon-css (MIT-Lizenz, die
Lizenzdatei liegt im selben Verzeichnis). Ausgegeben wird ein img-Element mit
der CSS-Klasse flagge. Für ein Länderkürzel ohne mitgelieferte Flagge bleibt
die Spalte leer.
Sprachen
Die Erweiterung bringt ausschließlich deutsche Sprachdateien mit. In einem Backend, das auf eine andere Sprache eingestellt ist, bleiben die Beschriftungen leer.
Entwicklung
Die Feinwertungen sind ohne Contao testbar:
php tests/DirekterVergleichTest.php
Der Test deckt Sonneborn-Berger, Buchholz, den Direkten Vergleich, geteilte Plätze, die Relegationsmarkierung und die Zahlenformatierung ab.
Offene Punkte
Siehe TODO.md.