From 1c2a0abcc248f6a113858e3963a940be4508ee82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Mon, 3 Nov 2025 11:42:34 +0100 Subject: [PATCH 01/21] Hintergrundfarbe bei Mouseover in Turnierbaum --- .../com_sportsmanager/views/sportsmanager/view.html.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php index 8c72058..3cb6ad7 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -1311,8 +1311,11 @@ static function turnierbaumAnzeigen($veranstaltung,$begegnungen): void $oben = $hoehe * pow(2, $runde) * $spiel + $offset; $links = ($breite + $abstand) * $runde; echo "\n
"; echo ""; From 96eff9f18966bb4120a899ace791ea9e1e2524d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Mon, 3 Nov 2025 12:18:31 +0100 Subject: [PATCH 02/21] =?UTF-8?q?Anzahl=20Kategorein=20auf=20100=20erh?= =?UTF-8?q?=C3=B6ht.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/structure/components/com_sportsmanager/admin.php | 4 +++- .../com_sportsmanager/views/sportsmanager/view_admin.php | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index c783808..bc4aa91 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -4628,11 +4628,13 @@ function adminKategorien(): void $kategorien[6] = array(); $kategorien[7] = array(); + $anzahl = array(0,50,100,50,50,50,50,50); + foreach ($rows as $row) $kategorien[$row->typ][$row->nummer] = $row->bezeichnung; for ($typ = 1; $typ <= 7; $typ++) { - for ($nummer = 1; $nummer <= 50; $nummer++) { + for ($nummer = 1; $nummer <= $anzahl[$typ]; $nummer++) { $bezeichnung = $db->escape($jInput->get('bezeichnung_' . $typ . '_' . $nummer, '', 'RAW')); if (empty($bezeichnung)) { if (isset($kategorien[$typ][$nummer])) { diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php index ab99e95..7bd4324 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -5086,6 +5086,7 @@ class HTML_sportsmanager_admin static function adminKategorien($kategorien): void { global $params; + $anzahl = array(0,50,100,50,50,50,50,50); ?>
@@ -7161,7 +7162,7 @@ class HTML_sportsmanager_admin reihenfolge == $i ? " selected" : "") : "") . ">" . $i . ""; } ?> From 3886cc88d3bcbc886f37a351ceca082a4ba281c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Mon, 3 Nov 2025 12:25:34 +0100 Subject: [PATCH 03/21] Anzahl Sortierreihenfolge Team Veranstaltungen auf 100 gesetzt. --- .../com_sportsmanager/views/sportsmanager/view_admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php index 7bd4324..9c8d6f0 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -7178,7 +7178,7 @@ class HTML_sportsmanager_admin @@ -6077,7 +6077,7 @@ class HTML_sportsmanager_admin reihenfolge == $i ? " selected" : "") : "") . ">" . $i . ""; } ?> @@ -6193,7 +6193,7 @@ class HTML_sportsmanager_admin : - Text::_('COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS'), 1 => Text::_('COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_SINGLES'), 2 => Text::_('COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_DOUBLES'), 3 => Text::_('COM_SPORTSMANAGER_STATISTICS_DOUBLES')); From 885d6a319142f3cbd31a4042364b11374d4db943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Tue, 4 Nov 2025 18:39:08 +0100 Subject: [PATCH 05/21] =?UTF-8?q?=C3=9Cberarbeitung=20Begegnung=20hinzuf?= =?UTF-8?q?=C3=BCgen=20bzw.=20editieren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/com_sportsmanager/admin.php | 24 +++++-- .../views/sportsmanager/view_admin.php | 65 ++++++++++++++++--- .../de-DE/de-DE.com_sportsmanager.ini | 2 + .../en-GB/en-GB.com_sportsmanager.ini | 2 + 4 files changed, 79 insertions(+), 14 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index f253ef6..52efd6e 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -7815,7 +7815,12 @@ function adminEditBegegnung(): void . "\n FROM #__sportsmanager_spielort" . "\n ORDER BY ortsname, name, ortsteil"; $spielorte = loadObjectList($db, $query); - HTML_sportsmanager_admin::adminEditBegegnung($veranstaltung, $row, $id == null, $teams, $spielorte); + $query = "SELECT spieltag_titel FROM #__sportsmanager_begegnung" + . "\n WHERE spieltag_titel IS NOT NULL" + . "\n GROUP BY spieltag_titel" + . "\n ORDER BY spieltag_titel;"; + $auswahl_spieltagtitel = loadObjectList($db, $query); + HTML_sportsmanager_admin::adminEditBegegnung($veranstaltung, $row, $id == null, $teams, $spielorte, $auswahl_spieltagtitel); HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen); } @@ -7839,6 +7844,8 @@ function adminEditBegegnung(): void $datum = normalisiertesDatum($jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('datum_jahr', 0, 'INT'), $jInput->get('datum_monat', 0, 'INT'), $jInput->get('datum_tag', 0, 'INT'))); $uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('uhrzeit_stunden', 0, 'INT'), $jInput->get('uhrzeit_minuten', 0, 'INT'))); $zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit); + $spiel_nr = $jInput->get('spiel_nr', 0, 'INT'); + $spieltag_titel = $db->escape(trim($jInput->get('spieltag_titel', '', 'RAW'))); $heim_team_id = $jInput->get('heim_team_id', 0, 'INT'); $gast_team_id = $jInput->get('gast_team_id', 0, 'INT'); $spielort_id = $jInput->get('spielort_id', 0, 'INT'); @@ -7881,9 +7888,11 @@ function adminEditBegegnung(): void $begegnung = null; $user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id, spielort_id, tisch, nichtraucherschutz)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") . ", '$heim_team_id', '$gast_team_id', " . ($spielort_id != 0 ? "'$spielort_id'" : "NULL") . ", '$tisch', '$nichtraucherschutz');"; - $db->setQuery($query); + $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, spieltag_titel, spiel_nr, heim_team_id, gast_team_id, spielort_id, tisch, nichtraucherschutz)" + . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") + . "\n , '$spieltag_titel', " . ($spiel_nr != 0 ? "'$spiel_nr'" : "NULL") . ", '$heim_team_id', '$gast_team_id'" + . "\n , " . ($spielort_id != 0 ? "'$spielort_id'" : "NULL") . ", '$tisch', '$nichtraucherschutz');"; + $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } @@ -7917,10 +7926,15 @@ function adminEditBegegnung(): void } } - if ($begegnung->heim_team_id != $heim_team_id || $begegnung->gast_team_id != $gast_team_id || $begegnung->zeitpunkt != $zeitpunkt || $begegnung->spieltag != $runde || $begegnung->spielort_id != $spielort_id || (empty($begegnung->tisch) != empty($tisch) || $begegnung->tisch != $tisch) || $begegnung->nichtraucherschutz != $nichtraucherschutz) { + if ($begegnung->heim_team_id != $heim_team_id || $begegnung->gast_team_id != $gast_team_id || + $begegnung->zeitpunkt != $zeitpunkt || $begegnung->spieltag != $runde || $begegnung->spiel_nr != $spiel_nr || + $begegnung->spielort_id != $spielort_id || (empty($begegnung->tisch) != empty($tisch) || + $begegnung->tisch != $tisch) || $begegnung->nichtraucherschutz != $nichtraucherschutz) { $query = "UPDATE #__sportsmanager_begegnung" . "\n SET zeitpunkt = " . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . "," . "\n spieltag = " . ($runde != null ? "'$runde'" : "NULL") . "," + . "\n spieltag_titel = '$spieltag_titel'," + . "\n spiel_nr = " .($spiel_nr != 0 ? "'$spiel_nr'" : "NULL") . "," . "\n heim_team_id = '$heim_team_id'," . "\n gast_team_id = '$gast_team_id'," . "\n spielort_id = " . ($spielort_id != 0 ? "'$spielort_id'" : "NULL") . "," diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php index 1308da8..badce78 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -8965,7 +8965,7 @@ class HTML_sportsmanager_admin } } - static function adminEditBegegnung($veranstaltung, $row, $neuer_eintrag, $teams, $spielorte): void + static function adminEditBegegnung($veranstaltung, $row, $neuer_eintrag, $teams, $spielorte, $auswahl_spieltagtitel): void { global $params; ?> @@ -8991,7 +8991,7 @@ class HTML_sportsmanager_admin : - - - - - + + + + + + + + + + + + + + + + + + + + + + +
+ onclick="if (document.adminForm.heim_team_id.value === document.adminForm.gast_team_id.value) + { alert(''); return false; } return true;"/> diff --git a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini index be9e60a..9a28abb 100644 --- a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini +++ b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini @@ -894,6 +894,8 @@ COM_SPORTSMANAGER_OPTIONAL_BUT_SAME_IN_DOUBLES="Optional, aber im Doppel keiner COM_SPORTSMANAGER_REQUIRED="Erforderlich" COM_SPORTSMANAGER_RESULT_ONLY="Nur Ergebnis" COM_SPORTSMANAGER_GAME_NUMBER="Spiel %d" +COM_SPORTSMANAGER_LABEL_GAME_NUMBER="Spiel Nr" +COM_SPORTSMANAGER_LABEL_GAME_TITLE="Spieltag Titel" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_SUBJECT="%s vs %s: Spieltermin verlegen" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY="Zur Begegnung %s gegen %s am %s in %s wird von %s der Spieltermin verschoben.\n\nAlternative Termine:\n\n" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REQUESTED_BODY="Zur Begegnung %s gegen %s am %s in %s wird von %s der Spieltermin verschoben.\n\nBitte alternative Termine vorschlagen unter %s" diff --git a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini index 3cdce79..ac571d9 100644 --- a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini +++ b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini @@ -894,6 +894,8 @@ COM_SPORTSMANAGER_OPTIONAL_BUT_SAME_IN_DOUBLES="Optional but both or none in dou COM_SPORTSMANAGER_REQUIRED="Required" COM_SPORTSMANAGER_RESULT_ONLY="Result only" COM_SPORTSMANAGER_GAME_NUMBER="Game %d" +COM_SPORTSMANAGER_LABEL_GAME_NUMBER="Game nr" +COM_SPORTSMANAGER_LABEL_GAME_TITLE="Gameday title" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_SUBJECT="%s vs %s: Shift game appointment" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY="For match %s versus %s on %s in %s the game appointment is shifted by %s.\n\nAlternative appointments:\n\n" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REQUESTED_BODY="For match %s on %s in %s the game appointment is shifted by %s.\n\nPlease propose alternative appointments under %s" From 5fafcace6be5ee2bd5084616cb12ffe8fe3b4d82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Tue, 4 Nov 2025 21:30:58 +0100 Subject: [PATCH 06/21] =?UTF-8?q?=C3=9Cberarbeitung=20Teamsport=20Spieltag?= =?UTF-8?q?=20erzeugen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/com_sportsmanager/admin.php | 23 ++++--- .../views/sportsmanager/view_admin.php | 60 ++++++++++++++----- 2 files changed, 60 insertions(+), 23 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 52efd6e..b7c7795 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -7928,7 +7928,7 @@ function adminEditBegegnung(): void if ($begegnung->heim_team_id != $heim_team_id || $begegnung->gast_team_id != $gast_team_id || $begegnung->zeitpunkt != $zeitpunkt || $begegnung->spieltag != $runde || $begegnung->spiel_nr != $spiel_nr || - $begegnung->spielort_id != $spielort_id || (empty($begegnung->tisch) != empty($tisch) || + $begegnung->spieltag_titel != $spieltag_titel || $begegnung->spielort_id != $spielort_id || (empty($begegnung->tisch) != empty($tisch) || $begegnung->tisch != $tisch) || $begegnung->nichtraucherschutz != $nichtraucherschutz) { $query = "UPDATE #__sportsmanager_begegnung" . "\n SET zeitpunkt = " . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . "," @@ -9732,7 +9732,12 @@ function adminBegegnungenRundeErzeugenForm(): void . "\n FROM #__sportsmanager_spielort" . "\n ORDER BY ortsname, name, ortsteil"; $spielorte = loadObjectList($db, $query); - HTML_sportsmanager_admin::adminBegegnungenRundeErzeugen($veranstaltung, $rows, $row, $spielorte); + $query = "SELECT spieltag_titel FROM #__sportsmanager_begegnung" + . "\n WHERE spieltag_titel IS NOT NULL" + . "\n GROUP BY spieltag_titel" + . "\n ORDER BY spieltag_titel;"; + $auswahl_spieltagtitel = loadObjectList($db, $query); + HTML_sportsmanager_admin::adminBegegnungenRundeErzeugen($veranstaltung, $rows, $row, $spielorte, $auswahl_spieltagtitel); } #[NoReturn] function adminBegegnungenRundeErzeugen(): void @@ -9765,6 +9770,7 @@ function adminBegegnungenRundeErzeugenForm(): void } $rundentyp = $jInput->get('rundentyp', -1, 'INT'); $runde = max(min(abs($jInput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1); + $spieltag_titel = $db->escape(trim($jInput->get('spieltag_titel', '', 'RAW'))); $platzierung_ende = max(min(abs($jInput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1); if ($rundentyp >= 10000) @@ -9784,8 +9790,10 @@ function adminBegegnungenRundeErzeugenForm(): void $teamIds[$i] = $jInput->get('team_id_' . $i, 0, 'INT'); $spielort_ids = array(); - for ($i = 1; $i <= $anzahlteams; $i += 2) + for ($i = 1; $i <= $anzahlteams; $i += 2){ $spielort_ids[$i] = $jInput->get('spielort_id_' . $i, 0, 'INT'); + $spiel_nr[$i] = $jInput->get('spiel_nr_' . $i, 0, 'INT'); + } for ($teamNr = 1; $teamNr < $anzahlteams; $teamNr += 2) { $heim_team_id = $teamIds[$teamNr]; @@ -9817,14 +9825,15 @@ function adminBegegnungenRundeErzeugenForm(): void $zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100); } - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id, spielort_id)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") . ", '$heim_team_id', '$gast_team_id', " . ($spielort_ids[$teamNr] != 0 ? "'$spielort_ids[$teamNr]'" : "NULL") . ");"; - $db->setQuery($query); + $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, spieltag_titel, spiel_nr, heim_team_id, gast_team_id, spielort_id)" + . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") + . "\n , '$spieltag_titel', " . ($spiel_nr[$teamNr] != 0 ? "'$spiel_nr[$teamNr]'" : "NULL") + . "\n , '$heim_team_id', '$gast_team_id', " . ($spielort_ids[$teamNr] != 0 ? "'$spielort_ids[$teamNr]'" : "NULL") . ");"; + $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } } - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId); } diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php index badce78..28cb569 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -9106,7 +9106,6 @@ class HTML_sportsmanager_admin spieltag_titel_zeigen) echo ""; else @@ -9120,8 +9119,6 @@ class HTML_sportsmanager_admin - - @@ -9129,11 +9126,8 @@ class HTML_sportsmanager_admin - - -