Ajout des vérifications des types dans les formulaires (adresses, email, telephone)
This commit is contained in:
@@ -51,10 +51,10 @@ window.PTA_PAGE_CONFIG = <?= json_encode([
|
||||
'params' => $pageConfig,
|
||||
], JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE) ?>;
|
||||
</script>
|
||||
<script src="assets/js/core.js?v=7.24"></script>
|
||||
<script src="assets/js/core.js?v=7.26"></script>
|
||||
<?php foreach ($scripts as $script): ?>
|
||||
<script src="assets/js/<?= htmlspecialchars($script) ?>?v=7.24"></script>
|
||||
<script src="assets/js/<?= htmlspecialchars($script) ?>?v=7.26"></script>
|
||||
<?php endforeach; ?>
|
||||
<script src="assets/js/page-bootstrap.js?v=7.24"></script>
|
||||
<script src="assets/js/page-bootstrap.js?v=7.26"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -104,7 +104,7 @@ $showHelpTab = in_array('faq', $allowedPages, true);
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title><?= htmlspecialchars($pageTitle) ?> — PTA</title>
|
||||
<link rel="stylesheet" href="assets/style.css?v=7.24">
|
||||
<link rel="stylesheet" href="assets/style.css?v=7.26">
|
||||
</head>
|
||||
<body>
|
||||
<main class="app-shell">
|
||||
|
||||
@@ -43,7 +43,7 @@ $titre = $titres[$etape] ?? 'Connexion';
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title><?= htmlspecialchars($titre) ?> — PTA</title>
|
||||
<link rel="stylesheet" href="assets/style.css?v=7.24">
|
||||
<link rel="stylesheet" href="assets/style.css?v=7.26">
|
||||
</head>
|
||||
<body class="role-page-body">
|
||||
<main class="role-page-shell">
|
||||
|
||||
@@ -151,6 +151,8 @@ $sommaire = [
|
||||
<li><strong>Dates de contrat</strong> : information RH. Attention, la date de début <em>ne décale pas</em> l’année de référence, qui reste l’année civile complète.</li>
|
||||
<li><strong>Qualification et diplôme</strong> : le champ « Diplôme » ne s’active que si l’agent est déclaré diplômé. Cette information alimente le contrôle du taux de diplômés dans les équipes.</li>
|
||||
<li><strong>Droit à l’enveloppe de formation de 14 h</strong> : coché par défaut. Décoché, le motif « Formation » ne sera pas proposé pour cet agent lors de la saisie.</li>
|
||||
<li><strong>E-mail et téléphone</strong> : facultatifs, mais contrôlés au format dès la saisie. Le téléphone accepte les séparateurs habituels (<code>06 12 34 56 78</code>, <code>06.12.34.56.78</code>, <code>+33 6 12 34 56 78</code>) ; une saisie mal formée est signalée sous le champ et bloque l’enregistrement.</li>
|
||||
<li><strong>Adresse personnelle</strong> : facultative et purement informative. Dès trois caractères saisis, une liste d’adresses officielles est proposée sous le champ (source : Base Adresse Nationale) — cliquez sur la bonne, ou continuez à écrire librement si l’adresse n’y figure pas.</li>
|
||||
<li><strong>Observations utiles à la construction du PTA</strong> : disponibilités particulières, organisation connue… Ces notes se retrouvent sur l’écran « PTA détaillé ».</li>
|
||||
<li>Cliquez sur <strong>Ajouter l’agent</strong>.</li>
|
||||
</ol>
|
||||
|
||||
@@ -13,6 +13,17 @@
|
||||
*
|
||||
* L'ordre est celui du travail réel : on crée un agent, puis on consulte ou
|
||||
* corrige sa fiche dans le tableau qui suit.
|
||||
*
|
||||
* V7.25 : les deux champs d'adresse (création et fiche) sont enveloppés dans un
|
||||
* conteneur `[data-address-autocomplete]` que le module `addressAutocomplete`
|
||||
* branche sur la Base Adresse Nationale. La structure attendue est fixe —
|
||||
* champ + `[data-address-suggestions]` + `[data-address-status]` — mais aucun
|
||||
* identifiant n'est connu du module.
|
||||
*
|
||||
* Même principe pour l'e-mail et le téléphone : `data-format="email|phone"` sur
|
||||
* le champ et un `[data-format-status]` frère suffisent au module `fieldFormat`
|
||||
* à contrôler la saisie. Ce contrôle ne fait que PRÉVENIR : c'est
|
||||
* App\Core\ContactFormat qui refuse pour de bon, côté serveur.
|
||||
*/
|
||||
?>
|
||||
<section id="manage-agents-view" class="app-view page-content">
|
||||
@@ -66,11 +77,13 @@
|
||||
</label>
|
||||
<label class="field">
|
||||
<span>E-mail</span>
|
||||
<input id="new-agent-email" name="email" type="email" maxlength="255" placeholder="prenom.nom@exemple.fr">
|
||||
<input id="new-agent-email" name="email" type="email" maxlength="255" placeholder="prenom.nom@exemple.fr" data-format="email">
|
||||
<p class="field-format-status" role="status" aria-live="polite" data-format-status></p>
|
||||
</label>
|
||||
<label class="field">
|
||||
<span>Téléphone</span>
|
||||
<input id="new-agent-phone" name="telephone" type="tel" maxlength="30" placeholder="Ex. 06 12 34 56 78">
|
||||
<input id="new-agent-phone" name="telephone" type="tel" maxlength="30" placeholder="Ex. 06 12 34 56 78" data-format="phone">
|
||||
<p class="field-format-status" role="status" aria-live="polite" data-format-status></p>
|
||||
</label>
|
||||
<label class="field">
|
||||
<span>Qualification</span>
|
||||
@@ -85,7 +98,11 @@
|
||||
</label>
|
||||
<label class="field admin-field-wide">
|
||||
<span>Adresse personnelle</span>
|
||||
<textarea id="new-agent-address" name="adresse" maxlength="255" rows="2" placeholder="Adresse de l’agent"></textarea>
|
||||
<div class="address-autocomplete" data-address-autocomplete>
|
||||
<textarea id="new-agent-address" name="adresse" maxlength="255" rows="2" placeholder="Ex. 12 rue de la Liberté, Dijon"></textarea>
|
||||
<ul id="new-agent-address-suggestions" class="address-suggestions" role="listbox" aria-label="Adresses proposées" data-address-suggestions hidden></ul>
|
||||
<p class="address-autocomplete-status" role="status" aria-live="polite" data-address-status></p>
|
||||
</div>
|
||||
</label>
|
||||
<label class="field">
|
||||
<span>Quotité de travail <strong>*</strong></span>
|
||||
@@ -219,11 +236,13 @@
|
||||
</label>
|
||||
<label class="field">
|
||||
<span>E-mail</span>
|
||||
<input id="edit-agent-profile-email" type="email" maxlength="255">
|
||||
<input id="edit-agent-profile-email" type="email" maxlength="255" placeholder="prenom.nom@exemple.fr" data-format="email">
|
||||
<p class="field-format-status" role="status" aria-live="polite" data-format-status></p>
|
||||
</label>
|
||||
<label class="field">
|
||||
<span>Téléphone</span>
|
||||
<input id="edit-agent-profile-phone" type="tel" maxlength="30" placeholder="Ex. 06 12 34 56 78">
|
||||
<input id="edit-agent-profile-phone" type="tel" maxlength="30" placeholder="Ex. 06 12 34 56 78" data-format="phone">
|
||||
<p class="field-format-status" role="status" aria-live="polite" data-format-status></p>
|
||||
</label>
|
||||
<label class="field">
|
||||
<span>Qualification</span>
|
||||
@@ -238,7 +257,11 @@
|
||||
</label>
|
||||
<label class="field admin-field-wide">
|
||||
<span>Adresse personnelle</span>
|
||||
<textarea id="edit-agent-profile-address" maxlength="255" rows="3"></textarea>
|
||||
<div class="address-autocomplete" data-address-autocomplete>
|
||||
<textarea id="edit-agent-profile-address" maxlength="255" rows="3" placeholder="Ex. 12 rue de la Liberté, Dijon"></textarea>
|
||||
<ul id="edit-agent-profile-address-suggestions" class="address-suggestions" role="listbox" aria-label="Adresses proposées" data-address-suggestions hidden></ul>
|
||||
<p class="address-autocomplete-status" role="status" aria-live="polite" data-address-status></p>
|
||||
</div>
|
||||
</label>
|
||||
<label class="field">
|
||||
<span>Date de début du contrat <strong>*</strong></span>
|
||||
|
||||
Reference in New Issue
Block a user