Überarbeitung Anzeige Vereinsliste in Frontend (issue #178)

This commit is contained in:
Jürgen Meyer
2025-09-12 10:56:25 +02:00
parent 218dc138fb
commit 1d9aa13300
6 changed files with 80 additions and 21 deletions
@@ -658,6 +658,7 @@ function adminEinstellungen(): void
$lizenz_anzeigen = $jInput->get('lizenz_anzeigen', 0, 'INT'); $lizenz_anzeigen = $jInput->get('lizenz_anzeigen', 0, 'INT');
$anzahl_mitglieder_zeigen = $jInput->get('anzahl_mitglieder_zeigen', 0, 'INT'); $anzahl_mitglieder_zeigen = $jInput->get('anzahl_mitglieder_zeigen', 0, 'INT');
$verband_anzeigen = $jInput->get('verband_anzeigen', 0, 'INT'); $verband_anzeigen = $jInput->get('verband_anzeigen', 0, 'INT');
$spalte_mitglieder_zeigen = $jInput->get('spalte_mitglieder_zeigen', 0, 'INT');
$turnierbaum_zeigen = $jInput->get('turnierbaum_zeigen', 0, 'INT'); $turnierbaum_zeigen = $jInput->get('turnierbaum_zeigen', 0, 'INT');
$termine_beantragen = $jInput->get('termine_beantragen', 0, 'INT'); $termine_beantragen = $jInput->get('termine_beantragen', 0, 'INT');
$spielerimport_persoenliche_daten_vorauswahl = $jInput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT'); $spielerimport_persoenliche_daten_vorauswahl = $jInput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT');
@@ -717,6 +718,14 @@ function adminEinstellungen(): void
die($db->stderr(true)); die($db->stderr(true));
} }
$query = "REPLACE #__sportsmanager_einstellungen"
. "\n SET name = 'spalte_mitglieder_zeigen'"
. ", wert = '$spalte_mitglieder_zeigen'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "REPLACE #__sportsmanager_einstellungen" $query = "REPLACE #__sportsmanager_einstellungen"
. "\n SET name = 'turnierbaum_zeigen'" . "\n SET name = 'turnierbaum_zeigen'"
. ", wert = '$turnierbaum_zeigen'"; . ", wert = '$turnierbaum_zeigen'";
@@ -3787,13 +3787,14 @@ function vereine($sort): void
$db = getDatabase(); $db = getDatabase();
global $params; global $params;
$organisationAnzeigen = einstellungswert('verband_anzeigen'); $organisationAnzeigen = einstellungswert('verband_anzeigen');
$spalteMitgliederAnzeigen = einstellungswert('spalte_mitglieder_zeigen');
if (!$spalteMitgliederAnzeigen) $sort = "vereinsname";
$query = "SELECT t1.verein_id, t1.vereinsname, t1.vereinssitz," $query = "SELECT t1.verein_id, t1.vereinsname, t1.vereinssitz,"
. "\n t2.veranstalterbezeichnung, COUNT(*) As mitglieder" . "\n t2.veranstalterbezeichnung, COUNT(*) As mitglieder"
. "\n FROM #__sportsmanager_verein AS t1" . "\n FROM #__sportsmanager_verein AS t1"
. "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 USING (veranstalter_id)" . "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 USING (veranstalter_id)"
. "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS t3 USING (verein_id)" . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS t3 USING (verein_id)"
. "\n WHERE t1.ausgetreten = 0 AND verstecken = 0" . "\n WHERE t1.ausgetreten = 0 AND t1.verstecken = 0 AND t3.ausgetreten = 0"
. "\n GROUP BY t1.verein_id"; . "\n GROUP BY t1.verein_id";
if ($sort == "mitglieder"){ if ($sort == "mitglieder"){
$query .= "\n HAVING mitglieder >= " . einstellungswert('anzahl_mitglieder_zeigen'); $query .= "\n HAVING mitglieder >= " . einstellungswert('anzahl_mitglieder_zeigen');
@@ -3804,7 +3805,7 @@ function vereine($sort): void
} }
$vereine = loadObjectList($db, $query); $vereine = loadObjectList($db, $query);
HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen); HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen, $spalteMitgliederAnzeigen);
administrationFooter(); administrationFooter();
} }
@@ -3082,7 +3082,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
} }
} }
static function vereine($titel, $beschreibung, $rows, $organisationAnzeigen): void static function vereine($titel, $beschreibung, $rows, $organisationAnzeigen, $spalteMitgliederAnzeigen): void
{ {
global $params; global $params;
if (!empty($titel)) { ?> if (!empty($titel)) { ?>
@@ -3122,10 +3122,13 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
<?php echo Text::_('COM_SPORTSMANAGER_TEAM_NAME2'); ?> <?php echo Text::_('COM_SPORTSMANAGER_TEAM_NAME2'); ?>
</a> </a>
</strong></th> </strong></th>
<?php if ($spalteMitgliederAnzeigen){ ?>
<th style='text-align: center;width: 120px;' nowrap><strong> <th style='text-align: center;width: 120px;' nowrap><strong>
<a href="verband/vereine?view=sportsmanager&task=sort_by_mitglieder"> <a href="verband/vereine?view=sportsmanager&task=sort_by_mitglieder">
<?php echo Text::_('COM_SPORTSMANAGER_MEMBERS'); ?></a></strong></th> <?php echo Text::_('COM_SPORTSMANAGER_MEMBERS'); ?></a></strong></th>
<th style='text-align: left;' nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM_SEAT'); ?></strong></th> <th style='text-align: left;' nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM_SEAT'); ?>
</strong></th>
<?php } ?>
<?php if ($organisationAnzeigen) { ?> <?php if ($organisationAnzeigen) { ?>
<th style='text-align: left;' nowrap>Organisation</th> <th style='text-align: left;' nowrap>Organisation</th>
<?php } ?> <?php } ?>
@@ -3153,9 +3156,11 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
<a href="<?php echo SportsManagerURL('&task=verein_details&id=' . $row->verein_id); ?>"> <a href="<?php echo SportsManagerURL('&task=verein_details&id=' . $row->verein_id); ?>">
<?php echo htmlentities_utf8(NichtLeererString($row->vereinsname)); ?></a> <?php echo htmlentities_utf8(NichtLeererString($row->vereinsname)); ?></a>
</td> </td>
<?php if ($spalteMitgliederAnzeigen){ ?>
<td nowrap style="text-align: center"> <td nowrap style="text-align: center">
<?php echo $row->mitglieder; ?> <?php echo $row->mitglieder; ?>
</td> </td>
<?php } ?>
<td style='text-align: left;' nowrap><?php if (!empty($row->vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?></td> <td style='text-align: left;' nowrap><?php if (!empty($row->vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?></td>
<?php if ($organisationAnzeigen) { <?php if ($organisationAnzeigen) {
echo "<td nowrap style='text-align: left;'>" . $row->veranstalterbezeichnung . "</td>"; echo "<td nowrap style='text-align: left;'>" . $row->veranstalterbezeichnung . "</td>";
@@ -727,14 +727,9 @@ class HTML_sportsmanager_admin
:</label> :</label>
</td> </td>
<td nowrap> <td nowrap>
<select class="uk-select uk-form-width-medium" name="anzahl_mitglieder_zeigen" <input style='height: 34px;' class="uk-select uk-form-width-medium" type="text"
id="show_member" size="1"> value= <?php echo $einstellungen["anzahl_mitglieder_zeigen"]; ?>
<?php id="anzahl_mitglieder_zeigen" name="anzahl_mitglieder_zeigen" placeholder="Zahl eingeben">
for ($wert = 0; $wert <= 99; $wert++) {
echo "<option value=\"" . $wert . "\"" . (isset($einstellungen["anzahl_mitglieder_zeigen"]) && $einstellungen["anzahl_mitglieder_zeigen"] == $wert ? " selected" : "") . ">" . $wert . "</option>";
}
?>
</select>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -755,6 +750,24 @@ class HTML_sportsmanager_admin
</select> </select>
</td> </td>
</tr> </tr>
<tr>
<td nowrap style="width: 20%; text-align: right">
<label
for="show_count_members"><?php echo Text::_('COM_SPORTSMANAGER_SHOW_MEMBER_COUNT'); ?>
:</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-medium" name="spalte_mitglieder_zeigen"
id="show_count_members" size="1">
<?php
$spalte_mitglieder_zeigen = array(1 => Text::_('JYES'), 0 => Text::_('JNO'));
foreach ($spalte_mitglieder_zeigen as $wert => $bezeichnung) {
echo "<option value=\"" . $wert . "\"" . (isset($einstellungen["spalte_mitglieder_zeigen"]) && $einstellungen["spalte_mitglieder_zeigen"] == $wert ? " selected" : "") . ">" . htmlentities_utf8($bezeichnung) . "</option>";
}
?>
</select>
</td>
</tr>
<tr> <tr>
<td nowrap style="width: 20%; text-align: right"> <td nowrap style="width: 20%; text-align: right">
<label <label
@@ -905,6 +918,35 @@ class HTML_sportsmanager_admin
class="button"/> class="button"/>
<input type="hidden" name="task" value="admin_einstellungen_save"/> <input type="hidden" name="task" value="admin_einstellungen_save"/>
</form> </form>
<script>
// Eingabefelder nur für Zahlen
function enableNumberOnly(input) {
// Blockiere alles außer Ziffern
input.addEventListener("beforeinput", function (e) {
if (e.data && /[^0-9]/.test(e.data)) {
e.preventDefault();
}
});
// Entferne führende Nullen
input.addEventListener("input", function () {
if (this.value.length > 1 && this.value.startsWith("0")) {
this.value = this.value.replace(/^0+/, "");
}
});
// Validiere beim Absenden
input.form.addEventListener("submit", function (e) {
if (input.value.trim() === "") {
e.preventDefault();
alert("Bitte eine Zahl eingeben das Feld darf nicht leer bleiben!");
input.focus();
}
});
}
enableNumberOnly(document.getElementById("anzahl_mitglieder_zeigen"));
</script>
<?php <?php
} }
@@ -315,8 +315,9 @@ COM_SPORTSMANAGER_FOR_OTHER_CONTACT="F&uuml;r andere Ansprechpartner"
COM_SPORTSMANAGER_DATES_REGISTERED_USERS="Termine beantragten durch angemeldete Benutzer" COM_SPORTSMANAGER_DATES_REGISTERED_USERS="Termine beantragten durch angemeldete Benutzer"
COM_SPORTSMANAGER_VIEW_ELO_RATING="Elo-Wertung anzeigen" COM_SPORTSMANAGER_VIEW_ELO_RATING="Elo-Wertung anzeigen"
COM_SPORTSMANAGER_VIEW_SPORTSMANAGER_LIZENZ="Lizenz anzeigen" COM_SPORTSMANAGER_VIEW_SPORTSMANAGER_LIZENZ="Lizenz anzeigen"
COM_SPORTSMANAGER_VIEW_LEAST_MEMBER_COUNT="Mindest Mitgliederzahl zeigen" COM_SPORTSMANAGER_VIEW_LEAST_MEMBER_COUNT="Mindest Mitgliederzahl zeigen (Vereine)"
COM_SPORTSMANAGER_SHOW_ORGANISATION="Verband zeigen" COM_SPORTSMANAGER_SHOW_ORGANISATION="Spalte Verband zeigen (Vereine)"
COM_SPORTSMANAGER_SHOW_MEMBER_COUNT="Spalte Mitglieder Zeigen (Vereine)"
COM_SPORTSMANAGER_SHOW_TOURNAMENT_BRACKET="Turnierbaum anzeigen" COM_SPORTSMANAGER_SHOW_TOURNAMENT_BRACKET="Turnierbaum anzeigen"
COM_SPORTSMANAGER_PLAYER_DETAILS="Spielerdetails" COM_SPORTSMANAGER_PLAYER_DETAILS="Spielerdetails"
COM_SPORTSMANAGER_PLAYER_LIST_DETAILS="Spielerliste/-details" COM_SPORTSMANAGER_PLAYER_LIST_DETAILS="Spielerliste/-details"
@@ -315,8 +315,9 @@ COM_SPORTSMANAGER_FOR_OTHER_CONTACT="For other contact"
COM_SPORTSMANAGER_DATES_REGISTERED_USERS="Apply dates by registered users" COM_SPORTSMANAGER_DATES_REGISTERED_USERS="Apply dates by registered users"
COM_SPORTSMANAGER_VIEW_ELO_RATING="View Elo rating" COM_SPORTSMANAGER_VIEW_ELO_RATING="View Elo rating"
COM_SPORTSMANAGER_VIEW_SPORTSMANAGER_LIZENZ="Show License" COM_SPORTSMANAGER_VIEW_SPORTSMANAGER_LIZENZ="Show License"
COM_SPORTSMANAGER_VIEW_LEAST_MEMBER_COUNT="Show least member count" COM_SPORTSMANAGER_VIEW_LEAST_MEMBER_COUNT="Show least member count (teams)"
COM_SPORTSMANAGER_SHOW_ORGANISATION="Show organisation" COM_SPORTSMANAGER_SHOW_ORGANISATION="Show organisation (teams)"
COM_SPORTSMANAGER_SHOW_MEMBER_COUNT="Show member column (teams)"
COM_SPORTSMANAGER_SHOW_TOURNAMENT_BRACKET="Show Tournament Bracket" COM_SPORTSMANAGER_SHOW_TOURNAMENT_BRACKET="Show Tournament Bracket"
COM_SPORTSMANAGER_PLAYER_DETAILS="Player details" COM_SPORTSMANAGER_PLAYER_DETAILS="Player details"
COM_SPORTSMANAGER_PLAYER_LIST_DETAILS="Player list details" COM_SPORTSMANAGER_PLAYER_LIST_DETAILS="Player list details"