Compare commits

..

5 Commits

Author SHA1 Message Date
MarvinF 2a307b0987 Merge branch 'sportsmanager2-stage' into sportsmanager2-dev 2026-05-13 00:03:28 +02:00
MarvinF e8e6f7046d Merge pull request #283 from Deutscher-Tischfussballbund/sportsmanager2-issue282
add club mailing functionality to admin area
2026-05-13 00:02:35 +02:00
Marvin Flock 20ab5a44a9 fix: add table headers 2026-05-13 00:00:34 +02:00
Jürgen Meyer a5357e4a51 mailto Funktion bei Mannschaften in admin-Bereich Veranstaltung 2026-04-28 11:46:22 +02:00
Jürgen Meyer 68e16a3adb mailto Funktion bei Vereine in admin-Bereich 2026-04-28 09:45:29 +02:00
2 changed files with 279 additions and 212 deletions
File diff suppressed because it is too large Load Diff
@@ -2886,7 +2886,7 @@ class HTML_sportsmanager_admin
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php
}
if (!empty($nichtAktualisierteUnterschiede)){
?>
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
@@ -3539,7 +3539,7 @@ class HTML_sportsmanager_admin
<?php
}
static function adminVereine($rows, $organisationAnzeigen): void
static function adminVereine($rows, $organisationAnzeigen, $ansprechpartner): void
{
global $params;
@@ -3599,6 +3599,8 @@ class HTML_sportsmanager_admin
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_MEMBERS'); ?></strong></th>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM_SEAT'); ?></strong></th>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_BEATEN'); ?></strong></th>
<th></th>
<th></th>
</tr>
<?php
@@ -3661,7 +3663,15 @@ class HTML_sportsmanager_admin
</td>
<td nowrap><?php if (!empty($row->vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?></td>
<td nowrap><?php echo $row->ausgetreten ? Text::_('COM_SPORTSMANAGER_YES') : Text::_('COM_SPORTSMANAGER_NO'); ?></td>
<td nowrap><small><a
<td>
<?PHP
if (!empty($ansprechpartner[$row->verein_id])){
$emails = implode(';', $ansprechpartner[$row->verein_id]);
echo "<a href='mailto:" . $emails . "?subject=" . $row->vereinsname . "'>E-Mail</a>&nbsp;";
}
?>
</td>
<td nowrap><small><a
href="<?php echo SportsManagerURL('&task=admin_verein_remove&id=' . $row->verein_id); ?>"
onclick="return confirm('<?php echo Text::_('COM_SPORTSMANAGER_WANT_REALLY_REMOVE'); ?>');"
title="<?php echo Text::_('COM_SPORTSMANAGER_REMOVE'); ?>">X</a></small></td>
@@ -4834,8 +4844,8 @@ class HTML_sportsmanager_admin
</select>
</td>
</tr>
<tr>
<td nowrap style="width: 20%; text-align: right">
<label
@@ -4843,7 +4853,7 @@ class HTML_sportsmanager_admin
:</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-medium" name="spiele_in_spielerstatistik"
<select class="uk-select uk-form-width-medium" name="spiele_in_spielerstatistik"
id="games_in_statistik" size="1">
<option value="0"><?php echo Text::_('COM_SPORTSMANAGER_GAMES_IN_STATISTIK_ALL'); ?></option>
<?php
@@ -4854,9 +4864,9 @@ class HTML_sportsmanager_admin
</select>
</td>
</tr>
<tr>
<td nowrap style="width: 20%; text-align: right">
<label for="status"><?php echo Text::_('COM_SPORTSMANAGER_ACTIVE'); ?>
@@ -6385,9 +6395,9 @@ class HTML_sportsmanager_admin
<select class="uk-select uk-form-width-large" name="tabellenwertung"
id="table_evaluation" size="1">
<?php
$typ = array(0 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX0'),
1 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX1'),
2 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX2'),
$typ = array(0 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX0'),
1 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX1'),
2 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX2'),
3 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX3'),
4 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX4'),
5 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX5'));
@@ -6918,12 +6928,12 @@ class HTML_sportsmanager_admin
<?php
}
static function adminMailto($to,$cc,$bcc,$subject,$message,$backtomail,$backtosender,$vorlage=''): void
static function adminMailto($to,$cc,$bcc,$subject,$message,$backtomail,$backtosender,$vorlage=''): void
{
global $params;
?>
<div class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_EMAIL_SEND'); ?></div>
<form id="mailForm">
<div class="uk-overflow-auto">
<table style="width: 100%">
@@ -6972,8 +6982,8 @@ class HTML_sportsmanager_admin
<input type="submit" name="joomlamail" value="<?php echo Text::_('COM_SPORTSMANAGER_EMAIL_SEND'); ?>&nbsp;(joomla)" class="button"/>
<?php if ($vorlage->name == "Ordnungsstrafe"){ ?>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_EDIT_DISCIPLINARY_FINE'); ?>" class="button"
onclick="const t = this.form.task; t.value = 'admin_ordnungsstrafe_edit';"/>
<input type="hidden" name="id" value="<?php echo $vorlage->id; ?>"/>
onclick="const t = this.form.task; t.value = 'admin_ordnungsstrafe_edit';"/>
<input type="hidden" name="id" value="<?php echo $vorlage->id; ?>"/>
<?php } ?>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_BACK'); ?>" class="button"
onclick="const t = this.form.task; t.value = '<?php echo $backtosender; ?>';"/>
@@ -7036,7 +7046,7 @@ class HTML_sportsmanager_admin
<div
class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_DISCIPLINARY_FINES'); ?>
: <?php echo Text::_('COM_SPORTSMANAGER_JOOMLA_MANAGEMENT'); ?></div>
<table style="border-spacing: 10px">
<tr>
<td nowrap><a
@@ -7057,7 +7067,7 @@ class HTML_sportsmanager_admin
</tr>
<?php } ?>
</table>
<?php if (count($saisons) > 0) {
?>
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm">
@@ -7266,12 +7276,12 @@ class HTML_sportsmanager_admin
size="1" style='height: 34px; width: 200px;' readonly
value="<?php echo (empty($row->versendedatum) ? '' : $row->versendedatum); ?>"/>
<?php if ($row != null){ ?>
<input type="submit" name="set_versender"
<input type="submit" name="set_versender"
value="<?php echo (empty($row->versendedatum) ? 'set' : 'reset'); ?>" class="button"/>
<?php } ?>
</td>
</tr>
<tr>
<td nowrap style="width: 20%; text-align: right">
<label
@@ -7289,7 +7299,7 @@ class HTML_sportsmanager_admin
size="1" style='height: 34px; width: 200px;' readonly
value="<?php echo (empty($row->rechnungsdatum) ? '' : $row->rechnungsdatum); ?>"/>
<?php if ($row != null && !empty($row->versendedatum)){ ?>
<input type="submit" name="set_rechnung"
<input type="submit" name="set_rechnung"
value="<?php echo (empty($row->rechnungsdatum) ? 'set' : 'reset'); ?>" class="button"/>
<?php } ?>
</td>
@@ -7327,8 +7337,8 @@ class HTML_sportsmanager_admin
<input type="submit" name="save" value="<?php echo Text::_('COM_SPORTSMANAGER_SAVE'); ?>" class="button"/>
<?php if ($row != null && benutzerZugriff("benutzerVeranstalterModerator")){ ?>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_SEND_DISCIPLINARY_FINE'); ?>" class="button"
onclick="const t = this.form.task; t.value = 'admin_ordnungsstrafe_mailen';"/>
<input type="hidden" name="id" value="<?php echo $row->ordnungsstrafen_id; ?>"/>
onclick="const t = this.form.task; t.value = 'admin_ordnungsstrafe_mailen';"/>
<input type="hidden" name="id" value="<?php echo $row->ordnungsstrafen_id; ?>"/>
<?php } ?>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_CANCEL'); ?>" class="button"/>
<input type="hidden" name="task" value="admin_ordnungsstrafe_save"/>
@@ -7350,7 +7360,7 @@ class HTML_sportsmanager_admin
<div
class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_MATCH_RESCHEDULINGS'); ?>
: <?php echo Text::_('COM_SPORTSMANAGER_JOOMLA_MANAGEMENT'); ?></div>
<table style="border-spacing: 10px">
<tr>
<td nowrap><a
@@ -7410,13 +7420,13 @@ class HTML_sportsmanager_admin
<?php
if (count($rows) > 0) {
$k = 0;
foreach ($rows as $row) {
foreach ($rows as $row) {
?>
<tr class="sectiontableentry<?php echo $k + 1;
$k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>">
<td nowrap style='text-align: center;'>
<a href="<?php
echo SportsManagerURL('&task=admin_spielverlegung_edit&begegnung_id=' . $row->begegnung_id);
<a href="<?php
echo SportsManagerURL('&task=admin_spielverlegung_edit&begegnung_id=' . $row->begegnung_id);
?>">
<?php echo $row->begegnung_id; ?>
</a>
@@ -7425,7 +7435,7 @@ class HTML_sportsmanager_admin
<?php echo htmlentities_utf8($row->Liga); ?>
</td>
<td nowrap style='text-align: center;'>
<?php
<?php
if ($row->Heim == $row->beantragt_von)
echo "<u>" . htmlentities_utf8($row->Heim) . "</u>";
else
@@ -7466,7 +7476,7 @@ class HTML_sportsmanager_admin
</div>
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php
}
}
static function adminEditSpielverlegung($row,$teams): void
{
@@ -7624,7 +7634,7 @@ class HTML_sportsmanager_admin
setTimeout(() => { t.value = 'admin_verbandsorgane'; }, 100);"/>
<input type="hidden" name="task" value="admin_verbandsorgane"/>
</form>
<?php
}
}
@@ -7950,7 +7960,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
</td>
</tr>
</table>
</div>
<input type="submit" name="save" value="<?php echo Text::_('COM_SPORTSMANAGER_SAVE'); ?>" class="button"/>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_CANCEL'); ?>" class="button"/>
@@ -7960,7 +7970,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
</form>
<?php
}
static function adminHalloffame($rows): void
{
global $params;
@@ -8167,7 +8177,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<strong><?php echo Text::_('COM_SPORTSMANAGER_YEAR'); ?></strong>
</th>
<?php
<?php
for ($i = 1; $i <= 3; $i++) {
if ($i == 2 && !$halloffame->platz2_zeigen) continue;
if ($i == 3 && !$halloffame->platz3_zeigen) continue;
@@ -8325,8 +8335,8 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
</select>
</td>
</tr>
<?php
for ($p = 1; $p <= 3; $p++){
<?php
for ($p = 1; $p <= 3; $p++){
if ($halloffame->spielform == 1){
$index_vereinid = "verein_id_" . $p;
$index_team = "teamname_" . $p;
@@ -8350,9 +8360,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
value="<?php echo $row != null ? htmlentities_utf8($row->$index_team) : ''; ?>"/>
</td>
</tr>
<?php
<?php
}
if ($halloffame->spielform == 2 || $halloffame->spielform == 3){
$index_spieler1id = "spieler1_id_" . $p;
$index_spieler1 = "spieler1_" . $p;
@@ -8392,15 +8402,15 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<?PHP } ?>
</td>
</tr>
<?php
<?php
}
}
}
?>
<tr>
<td nowrap colspan="2">&nbsp;</td>
</tr>
</table>
</div>
<input type="submit" name="save" value="<?php echo Text::_('COM_SPORTSMANAGER_SAVE'); ?>" class="button"/>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_CANCEL'); ?>" class="button"/>
@@ -8410,7 +8420,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
</form>
<?php
}
static function adminRegelwerke($rows): void
{
global $params;
@@ -9359,7 +9369,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
</select>
</td>
</tr>
<?php
<?php
if (!einstellungswert("ordnungsstrafen_verwenden"))
echo "<tr style='display: none;'>";
else
@@ -9712,7 +9722,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<?php
}
static function adminMannschaften($veranstaltung, $rows): void
static function adminMannschaften($veranstaltung, $rows, $ansprechpartner): void
{
global $params;
@@ -9762,6 +9772,8 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<th nowrap title="<?php echo Text::_('COM_SPORTSMANAGER_NUM_REQUESTED_SHFITS_TOOLTIP'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_NUM_REQUESTED_SHIFTS'); ?></strong></th>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_HOME_VENUE'); ?></strong></th>
<th></th>
<th></th>
</tr>
<?php
@@ -9804,6 +9816,14 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
</td>
<td nowrap align="center"><?php echo $row->anzahl_verschiebungen; ?></td>
<td nowrap><?php if (!empty($row->name)) echo htmlentities_utf8($row->name); ?></td>
<td>
<?PHP
if (!empty($ansprechpartner[$row->team_id])){
$emails = implode(';', $ansprechpartner[$row->team_id]);
echo "<a href='mailto:" . $emails . "?subject=" . $row->teamname . "'>E-Mail</a>&nbsp;";
}
?>
</td>
<?php if ($row->begegnungen == 0) { ?>
<td nowrap><small><a
href="<?php echo SportsManagerURL('&task=admin_team_remove&veranstaltungid=' . $veranstaltung->veranstaltung_id . '&id=' . $row->team_id); ?>"
@@ -10300,7 +10320,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<th nowrap style="text-align: center"><strong><?php echo JText::_('COM_SPORTSMANAGER_PENALTY'); ?></strong></th>
<th nowrap style="text-align: left"><strong><?php echo JText::_('COM_SPORTSMANAGER_DESCRIPTION'); ?></strong></th>
</tr>
<?php
$k = 0;
foreach ($rows as $row) {
@@ -10996,7 +11016,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<?php echo Text::_('COM_SPORTSMANAGER_ENCOUNTERS'); ?>
'<?php echo htmlentities_utf8($veranstaltung->bezeichnung); ?>
': <?php echo Text::_('COM_SPORTSMANAGER_JOOMLA_MANAGEMENT'); ?></div>
<div class="uk-overflow-auto">
<table style="border-spacing: 10px; width: 100%;">
<tr>
@@ -11067,10 +11087,10 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
$Spieltagname = "Runde " . $row->spieltag;
else
$Spieltagname = "Spieltag " . $row->spieltag;
if ($row->spieltag < 999 && $veranstaltung->spieltag_titel_zeigen == 1 && $row->spieltag_titel != "")
if ($row->spieltag < 999 && $veranstaltung->spieltag_titel_zeigen == 1 && $row->spieltag_titel != "")
$Spieltagname .= " - " . $row->spieltag_titel;
if ($Spieltagname_Buffer != $Spieltagname){
?>
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
@@ -11098,12 +11118,12 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<th nowrap><span style="font-size: 70%; "><i>
<?php echo htmlentities_utf8($monatsbezeichnung); ?></i></span>
</th>
</tr>
</tr>
<?php
}
?>
<tr class="sectiontableentry<?php echo $k + 1;
$k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>">
@@ -11323,7 +11343,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
value="<?php if ($row != null) echo htmlentities_utf8($row->spieltag_titel); ?>"/>
<datalist id="auswahl_spieltagtitel" >
<?php if ($auswahl_spieltagtitel){ ?>
<?php foreach($auswahl_spieltagtitel AS $titel){ ?>
<?php foreach($auswahl_spieltagtitel AS $titel){ ?>
<option value="<?= htmlspecialchars($titel->spieltag_titel, ENT_QUOTES) ?>"></option>
<?php } ?>
<?php } ?>
@@ -11342,7 +11362,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
title="Spielnummer (optional)" name="spiel_nr">
<option value=""></option>
<?php
for ($i = 1; $i <= 99; $i++)
for ($i = 1; $i <= 99; $i++)
{
echo "<option value=\"" . $i . "\"" . ($spiel_nr == $i ? " selected" : "") . ">" . $i . "</option>";
}
@@ -11454,7 +11474,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
</div>
<input type="submit" name="save" value="<?php echo Text::_('COM_SPORTSMANAGER_SAVE'); ?>" class="button"
onclick="if (document.adminForm.heim_team_id.value === document.adminForm.gast_team_id.value)
onclick="if (document.adminForm.heim_team_id.value === document.adminForm.gast_team_id.value)
{ alert('<?php echo Text::_('COM_SPORTSMANAGER_HOME_VISITING_TEAMS_DIFFERENT'); ?>'); return false; } return true;"/>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_CANCEL'); ?>"
class="button"/>
@@ -12495,7 +12515,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
value="<?php if ($row != null) echo htmlentities_utf8($row->spieltag_titel); ?>"/>
<datalist id="auswahl_spieltagtitel" >
<?php if ($auswahl_spieltagtitel){ ?>
<?php foreach($auswahl_spieltagtitel AS $titel){ ?>
<?php foreach($auswahl_spieltagtitel AS $titel){ ?>
<option value="<?= htmlspecialchars($titel->spieltag_titel, ENT_QUOTES) ?>"></option>
<?php } ?>
<?php } ?>
@@ -12511,11 +12531,11 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<?php if ($teamnr == 1) echo Text::_('COM_SPORTSMANAGER_PAIRINGS') . ":"; ?>
</td>
<td nowrap>
<select class="uk-select uk-form-width-xsmall" size="1" id="game_nr"
<select class="uk-select uk-form-width-xsmall" size="1" id="game_nr"
name="spiel_nr_<?php echo $teamnr; ?>" title="Spielnummer (optional)">
<option value=""></option>
<?php
for ($i = 1; $i <= 99; $i++)
for ($i = 1; $i <= 99; $i++)
{
echo "<option value=\"" . $i . "\"" . ($i == $spielnummer ? " selected " : "") . ">" . $i . "</option>";
}
@@ -15428,7 +15448,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
for ($satz = 0; $satz < $saetze_maximal; $satz++) {
?>
<select class="uk-select uk-form-width-medium"
name="ergebnis_punkte_heim[]"
name="ergebnis_punkte_heim[]"
size="1" onchange="punkte_changed(<?php echo $satz; ?>, 1);"
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_POINTS_HOME'); ?>">
<option value=""></option>