feat: add birthday validation

This commit is contained in:
Marvin Flock
2025-03-18 20:29:05 +01:00
parent eeb423fcbc
commit fcc6c7e538
3 changed files with 34 additions and 8 deletions
@@ -6,7 +6,7 @@
// kein direkter Zugriff
defined('_JEXEC') or die('Restricted access');
require_once(JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'views/sportsmanager/view_tools.php');
require_once(JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_sportsmanager' . DIRECTORY_SEPARATOR . 'views/sportsmanager/view_tools.php');
class HTML_sportsmanager_admin
{
@@ -1186,7 +1186,7 @@ class HTML_sportsmanager_admin
}
}
static function adminEditSpieler($row, $naechste_spielernr, $filter, $vereine, $vereinsmitgliedschaften, $beschraenkter_zugriff, $ansprechpartner_spielerdaten)
static function adminEditSpieler($row, $naechste_spielernr, $filter, $vereine, $vereinsmitgliedschaften, $beschraenkter_zugriff, $ansprechpartner_spielerdaten)
{
global $params;
?>
@@ -1194,7 +1194,7 @@ class HTML_sportsmanager_admin
: <?php echo($row != null ? JText::_('COM_SPORTSMANAGER_CHANGING') : JText::_('COM_SPORTSMANAGER_ADD')); ?></div>
<form action="<?php echo SportsManagerURL($row != null ? ('#id' . $row->spieler_id) : ''); ?>" method="post"
name="adminForm" id="adminForm" enctype="multipart/form-data">
name="adminForm" id="adminForm" enctype="multipart/form-data" onsubmit="return validate()">
<div class="uk-overflow-auto"><table class="uk-table" width="100%">
<tr>
<td nowrap width="60%" valign="top">
@@ -1277,15 +1277,15 @@ class HTML_sportsmanager_admin
</td>
</tr>
<tr>
<td nowrap width="20%" align="right">
<?php echo JText::_('COM_SPORTSMANAGER_BIRTHDATE') ?>:
<td nowrap width="20%" align="right" id="birthDateLabel">
<?php echo JText::_('COM_SPORTSMANAGER_BIRTHDATE') . '*' ?>:
</td>
<td nowrap>
<?php
if (!$beschraenkter_zugriff)
{
?>
<select class="uk-select uk-form-width-medium" name="datum_tag" size="1">
<select id="birthDay" class="uk-select uk-form-width-medium" name="datum_tag" size="1">
<?php
$datum = "0000-00-00";
if ($row != null)
@@ -1303,7 +1303,7 @@ class HTML_sportsmanager_admin
}
?>
</select>
<select class="uk-select uk-form-width-medium" name="datum_monat" size="1">
<select id="birthMonth" class="uk-select uk-form-width-medium" name="datum_monat" size="1">
<?php
$datum_monat = substr($datum, 5, 2);
echo "<option value=\"0\"></option>";
@@ -1314,7 +1314,7 @@ class HTML_sportsmanager_admin
}
?>
</select>
<select class="uk-select uk-form-width-medium" name="datum_jahr" size="1">
<select id="birthYear" class="uk-select uk-form-width-medium" name="datum_jahr" size="1">
<?php
$datum_jahr = substr($datum, 0, 4);
echo "<option value=\"0\"></option>";
@@ -1324,6 +1324,7 @@ class HTML_sportsmanager_admin
}
?>
</select>
<small id="birthDateError" style="color: red"></small>
<?php
}
else if ($row != null && $row->geburtsdatum != null)
@@ -1623,6 +1624,27 @@ class HTML_sportsmanager_admin
<input type="hidden" name="id" value="<?php echo($row != null ? $row->spieler_id : "0"); ?>"/>
<input type="hidden" name="vereinsauswahl_anzahl" value="<?php echo $vereinsauswahl_anzahl; ?>"/>
</form>
<script>
function validate() {
let isValid = true;
// Clear errors
document.getElementById("birthDateError").textContent = "";
document.getElementById("birthDateLabel").style.color = "";
const birthDay = document.getElementById("birthDay").value;
const birthMonth = document.getElementById("birthMonth").value;
const birthYear = document.getElementById("birthYear").value;
if(birthDay === '0' || birthMonth === '0' || birthYear === '0') {
document.getElementById("birthDateError").textContent = "<?php echo JText::_('COM_SPORTSMANAGER_ERROR_BIRTHDAY_REQUIRED'); ?>";
document.getElementById("birthDateLabel").style.color = "red";
isValid = false;
}
return isValid;
}
</script>
<?php
}
@@ -925,3 +925,5 @@ COM_SPORTSMANAGER_RANK="Rang"
; SPIELER BEARBEITEN
COM_SPORTSMANAGER_LIZENZ="Lizenz"
COM_SPORTSMANAGER_ERROR_BIRTHDAY_REQUIRED="Geburtstagsfelder dürfen nicht leer sein"
@@ -921,3 +921,5 @@ COM_SPORTSMANAGER_NON_SMOKING_PROTECTION_MARK_NO=" (Kein Nichtraucherschutz)"
COM_SPORTSMANAGER_POINTS_TABLE="Points table"
COM_SPORTSMANAGER_EVALUATION="Auswertung"
COM_SPORTSMANAGER_FUNCTION_DESCRIPTION="Variables: n = number of participants, p = place, m = multiplier of rating and in doubles possibly additionally reduced rating<br />Functions: +, -, *, /, round(x), pow(x), if(a > b, x, y), min(x, y), max(x, y), log(x), ln(x), logn(b, x)<br />VerteilungR(r, p, n, m) := max(round((((m * r - 1) * (-log(p / n) * (1 - (p / n)))) / (-log(1 / n) * (1 - (1 / n)))) + 1), 1)<br />Verteilung(r, p, n, m) := max(round(m * round((((r - 1) * (-log(p / n) * (1 - (p / n)))) / (-log(1 / n) * (1 - (1 / n)))) + 1)), 1)<br /><br />The functions VerteilungR() and Verteilung() distribute points for place 1 (r) descending to the individual places (p) of the number of participants (n).<br />VerteilungR() applies the multiplier (m) to the points for 1st place and then distributes down to 1 point for the last place.<br />Verteilung() applies the multiplier (m) to the points after the calculation, i.e. the last place receives 1 * m points."
COM_SPORTSMANAGER_LIZENZ="License"
COM_SPORTSMANAGER_ERROR_BIRTHDAY_REQUIRED="Birthday fields may not be empty"