schachbulle/contao-schachturnier-bundle

Verwaltet Schachturniere in Contao: Teilnehmer, Runden, Paarungen, Termine und Ergebnisse, mit Paarungsgenerator, Ranglisten, Kreuztabellen und Feinwertungen.

Maintainers

Package info

github.com/Samson1964/contao-schachturnier-bundle

Type:contao-bundle

pkg:composer/schachbulle/contao-schachturnier-bundle

Transparency log

Statistics

Installs: 58

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

3.0.0 2026-08-01 12:12 UTC

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-haste und components/flag-icon-css sind 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-xx angesprochen hat, muss auf das neue img-Element mit der Klasse flagge umstellen.

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.