Spielpunkte-Auswahl gruppieren, und die Hinweise brechen wieder um

Sven 2026-09-09 mit zwei Bildschirmfotos: „Benenne die Optionen geeignet,
geeignet angeordnet und gut unterscheidbar." Und: „Und brich die Beschreibungen
geeignet um."

1. DIE BESCHREIBUNGEN — ein Schaden, den 7f1bedc (Kommentare entfernen)
   angerichtet hat. Der Kommentar ueber der CSS-Regel .sm_hinweis war
   mehrzeilig; entfernt wurde nur seine ERSTE Zeile, weil nur die mit „/*"
   begann. Zurueck blieben vier Prosazeilen und ein verwaistes „*/" direkt hinter
   <style>. Der Browser liest das als Selektor und verwirft die ganze Regel — also
   fehlten `white-space: normal` und `max-width: 42em`, und jede Beschreibung lief
   in einer Zeile aus dem Bild. Genau das zeigt Svens Bildschirmfoto.

   Der Rest ist entfernt, die Regel gilt wieder. Gegengeprueft: im ganzen Zweig
   gibt es kein zweites unbalanciertes Kommentarzeichen (Klammerbilanz ueber alle
   sechs geaenderten Dateien; die uebrigen Treffer sind einzeilige Kommentare).

2. DIE AUSWAHL. Die neue Wertung stand am Ende und las sich fast wortgleich wie
   die zweite („Sieg: 2 Punkte, Unentschieden: 1 Punkt – je Satz" gegen „Sieg: 2
   Punkte, Unentschieden: 1 Punkt"). Jetzt zwei Gruppen:

     Fuer das ganze Spiel
        Sieg: 1 Punkt
        Sieg: 2 Punkte, Unentschieden: 1 Punkt
        Sieg: 3 Punkte, Unentschieden: 1 Punkt
        Ohne Umrechnung – Saetze sind die Spielpunkte
     Fuer jeden Satz einzeln
        Je Satz: Sieg 2 Punkte, Unentschieden 1 Punkt

   Das Unterscheidende steht ZUSAETZLICH im Eintrag selbst („Je Satz:" vorn), weil
   eine Gruppenueberschrift nur im aufgeklappten Zustand sichtbar ist — zugeklappt
   zeigt das Feld allein den Eintrag, und der muss fuer sich sprechen.

   Das Feld heisst nicht mehr „Spielpunkte pro Spiel", sondern „Spielpunkte": mit
   einer Wertung je Satz war die alte Beschriftung ihrem eigenen Inhalt
   widersprochen.

3. Beide Auswahlfelder (Einzel und Doppel) entstehen jetzt aus EINER Funktion.
   Vorher stand die Schleife zweimal da — dieselbe Bauart, die beim Remis-Vorfall
   auseinandergelaufen ist.

Gemessen am Testserver: Modus 21 (je Satz) zeigt beide Gruppen mit dem richtigen
gewaehlten Eintrag; Modus 15 („Mehrere" ohne Satzerfassung) und 16 („Einer")
zeigen die Je-Satz-Gruppe VERBORGEN. Die .sm_hinweis-Regel kommt wieder
unversehrt im Quelltext der Seite an.
This commit is contained in:
svennickel
2026-09-09 21:59:07 +02:00
parent 111fdeb306
commit fa63e1e2d6
3 changed files with 33 additions and 20 deletions
@@ -4675,10 +4675,6 @@ class HTML_sportsmanager_admin
: <?php echo($row != null ? Text::_('COM_SPORTSMANAGER_CHANGING') : Text::_('COM_SPORTSMANAGER_ADD')); ?></div>
<style>
und Auswahlfelder, falsch fuer Prosa: die Hinweise zogen die Tabelle beliebig
breit (Sven 2026-09-02). Sie brechen deshalb ausdruecklich um, und zwar mit
einem Mass: ohne max-width liefe eine Zeile auf einem breiten Bildschirm ueber
zweihundert Zeichen, was zwar passt, aber nicht mehr zu lesen ist. */
.sm_hinweis {
display: block;
white-space: normal;
@@ -4727,6 +4723,12 @@ class HTML_sportsmanager_admin
for (var f = 0; f < wertungen.length; f++) {
var sel = document.adminForm[wertungen[f]];
if (sel == null) continue;
var gruppen = sel.getElementsByTagName('optgroup');
for (var g = 0; g < gruppen.length; g++) {
if (gruppen[g].getAttribute('data-satzdetails') == null) continue;
gruppen[g].hidden = !satzdetails;
gruppen[g].disabled = !satzdetails;
}
for (var o = 0; o < sel.options.length; o++) {
if (sel.options[o].getAttribute('data-satzdetails') == null) continue;
sel.options[o].hidden = !satzdetails;
@@ -5120,15 +5122,25 @@ class HTML_sportsmanager_admin
name="spielpunkte_wertung_einzel" id="points_valuation_single"
size="1">
<?php
$typ = array(Text::_('COM_SPORTSMANAGER_WIN_1_POINT'), Text::_('COM_SPORTSMANAGER_WIN_2_POINTS'), Text::_('COM_SPORTSMANAGER_WIN_3_POINTS'), Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS'), Text::_('COM_SPORTSMANAGER_WIN_2_POINTS_PER_SET'));
$typ_wert = array(3, 0, 1, 2, 4);
$satzdetails_an = !$race_an && !empty($row) && !empty($row->satzergebnisse) && $row->punktetyp != 0;
$spielpunkte_auswahl = function ($aktuell) use ($satzdetails_an) {
$einheit_attr = ' data-tore="' . htmlspecialchars(Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS_GOALS'), ENT_QUOTES) . '"'
. ' data-saetze="' . htmlspecialchars(Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS_SETS'), ENT_QUOTES) . '"';
$satzdetails_an = !$race_an && !empty($row) && !empty($row->satzergebnisse) && $row->punktetyp != 0;
$satzdetails_attr = ' data-satzdetails="1"' . ($satzdetails_an ? '' : ' hidden disabled');
for ($i = 0; $i <= 4; $i++) {
echo "<option value=\"" . $typ_wert[$i] . "\"" . ($typ_wert[$i] == 2 ? $einheit_attr : "") . ($typ_wert[$i] == 4 ? $satzdetails_attr : "") . ($row != null ? ($row->spielpunkte_wertung_einzel == $typ_wert[$i] ? " selected" : "") : "") . ">" . htmlentities_utf8($typ[$i]) . "</option>";
$verborgen = $satzdetails_an ? '' : ' hidden disabled';
$gewaehlt = function ($wert) use ($aktuell) {
return $aktuell !== null && $aktuell == $wert ? ' selected' : '';
};
$html = '<optgroup label="' . htmlspecialchars(Text::_('COM_SPORTSMANAGER_GAME_POINTS_FOR_GAME'), ENT_QUOTES) . '">';
foreach (array(3 => 'COM_SPORTSMANAGER_WIN_1_POINT', 0 => 'COM_SPORTSMANAGER_WIN_2_POINTS', 1 => 'COM_SPORTSMANAGER_WIN_3_POINTS', 2 => 'COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS') as $wert => $schluessel) {
$html .= '<option value="' . $wert . '"' . ($wert == 2 ? $einheit_attr : '') . $gewaehlt($wert) . '>' . htmlentities_utf8(Text::_($schluessel)) . '</option>';
}
$html .= '</optgroup>';
$html .= '<optgroup data-satzdetails="1" label="' . htmlspecialchars(Text::_('COM_SPORTSMANAGER_GAME_POINTS_FOR_SET'), ENT_QUOTES) . '"' . $verborgen . '>';
$html .= '<option value="4" data-satzdetails="1"' . $verborgen . $gewaehlt(4) . '>' . htmlentities_utf8(Text::_('COM_SPORTSMANAGER_WIN_2_POINTS_PER_SET')) . '</option>';
$html .= '</optgroup>';
return $html;
};
echo $spielpunkte_auswahl($row != null ? $row->spielpunkte_wertung_einzel : null);
?>
</select>
<input type="button"
@@ -5148,10 +5160,7 @@ class HTML_sportsmanager_admin
name="spielpunkte_wertung_doppel" id="points_valuation_double"
size="1">
<?php
$typ = array(Text::_('COM_SPORTSMANAGER_WIN_1_POINT'), Text::_('COM_SPORTSMANAGER_WIN_2_POINTS'), Text::_('COM_SPORTSMANAGER_WIN_3_POINTS'), Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS'), Text::_('COM_SPORTSMANAGER_WIN_2_POINTS_PER_SET'));
for ($i = 0; $i <= 4; $i++) {
echo "<option value=\"" . $typ_wert[$i] . "\"" . ($typ_wert[$i] == 2 ? $einheit_attr : "") . ($typ_wert[$i] == 4 ? $satzdetails_attr : "") . ($row != null ? ($row->spielpunkte_wertung_doppel == $typ_wert[$i] ? " selected" : "") : "") . ">" . htmlentities_utf8($typ[$i]) . "</option>";
}
echo $spielpunkte_auswahl($row != null ? $row->spielpunkte_wertung_doppel : null);
?>
</select>
</td>
@@ -498,10 +498,12 @@ COM_SPORTSMANAGER_ALLOWED="Zulässig"
COM_SPORTSMANAGER_PLAYER_NAME="Spielername"
COM_SPORTSMANAGER_PLAYERS_SEARCH_SPECIAL="(Spezialsuche)"
COM_SPORTSMANAGER_ADD_SEASON="Saison hinzuf&uuml;gen"
COM_SPORTSMANAGER_GAME_POINTS_GAME="Spielpunkte pro Spiel"
COM_SPORTSMANAGER_GAME_POINTS_GAME="Spielpunkte"
COM_SPORTSMANAGER_WIN_1_POINT="Sieg: 1 Punkt"
COM_SPORTSMANAGER_WIN_2_POINTS="Sieg: 2 Punkte, Unentschieden: 1 Punkt"
COM_SPORTSMANAGER_WIN_2_POINTS_PER_SET="Sieg: 2 Punkte, Unentschieden: 1 Punkt je Satz"
COM_SPORTSMANAGER_WIN_2_POINTS_PER_SET="Je Satz: Sieg 2 Punkte, Unentschieden 1 Punkt"
COM_SPORTSMANAGER_GAME_POINTS_FOR_GAME="Für das ganze Spiel"
COM_SPORTSMANAGER_GAME_POINTS_FOR_SET="Für jeden Satz einzeln"
COM_SPORTSMANAGER_WIN_3_POINTS="Sieg: 3 Punkte, Unentschieden: 1 Punkt"
COM_SPORTSMANAGER_MEETING_CONCLUDED_AT="Begegnung abgeschlossen bei"
COM_SPORTSMANAGER_GAMES_IN_STATISTIK="Spiele in Spielerstatistik"
@@ -498,10 +498,12 @@ COM_SPORTSMANAGER_ALLOWED="Allowed"
COM_SPORTSMANAGER_PLAYER_NAME="Player name"
COM_SPORTSMANAGER_PLAYERS_SEARCH_SPECIAL="(Special search)"
COM_SPORTSMANAGER_ADD_SEASON="Add season"
COM_SPORTSMANAGER_GAME_POINTS_GAME="Game points per game"
COM_SPORTSMANAGER_GAME_POINTS_GAME="Game points"
COM_SPORTSMANAGER_WIN_1_POINT="Win: 1 point"
COM_SPORTSMANAGER_WIN_2_POINTS="Win: 2 points, draw: 1 point"
COM_SPORTSMANAGER_WIN_2_POINTS_PER_SET="Win: 2 points, draw: 1 point per set"
COM_SPORTSMANAGER_WIN_2_POINTS_PER_SET="Per set: win 2 points, draw 1 point"
COM_SPORTSMANAGER_GAME_POINTS_FOR_GAME="For the whole game"
COM_SPORTSMANAGER_GAME_POINTS_FOR_SET="For each set separately"
COM_SPORTSMANAGER_WIN_3_POINTS="Win: 3 points, draw: 1 point"
COM_SPORTSMANAGER_MEETING_CONCLUDED_AT="Match won at"
COM_SPORTSMANAGER_GAMES_IN_STATISTIK="Games in player statistics"