test: add ShareLinkTest + PureLogicTest (TDD), fix coverMap undefined in SearchController

This commit is contained in:
Pontoporeia
2026-05-08 10:56:27 +02:00
parent 15d54fa19e
commit 6ba13e00ea
16 changed files with 1274 additions and 68 deletions

View File

@@ -132,7 +132,7 @@ $checkedFormatsForSiteWeb = $checkedFormatsForSiteWeb ?? [];
<?php endif; ?>
<?php endif; ?>
<form action="<?= $formAction ?>" method="post" enctype="multipart/form-data" class="admin-form"<?= $mode === 'edit' ? ' data-beforeunload-guard' : '' ?>>
<form action="<?= $formAction ?>" method="post" enctype="multipart/form-data" class="admin-form" data-beforeunload-guard>
<?= $hiddenFields ?>
<p class="required-note"><span class="asterisk">*</span> Champs obligatoires</p>
@@ -173,50 +173,31 @@ $checkedFormatsForSiteWeb = $checkedFormatsForSiteWeb ?? [];
$options = $languages;
$checked = $formData["languages"] ?? [];
$required = true;
$hxPost = "/language-autre-fragment.php";
$hxTarget = "#language-autre-row";
$hxSwap = "outerHTML";
include APP_ROOT . "/templates/partials/form/checkbox-list.php";
unset($hxSwap);
?>
<?php
$name = "language_autre";
$label = "Autre(s) langue(s) :";
$value = $oldFn("language_autre");
$required = empty($formData["languages"]);
$hint =
"Si votre TFE contient une langue absente de la liste, précisez-la ici.";
include APP_ROOT . "/templates/partials/form/text-field.php";
$_langAutreRequired = empty($formData["languages"]);
$_langAutreValue = $oldFn("language_autre");
?>
<div id="language-autre-row">
<div>
<label for="language_autre">Autre(s) langue(s) :<?= $_langAutreRequired ? ' <span class="asterisk">*</span>' : '' ?></label>
<div>
<input type="text"
id="language_autre"
name="language_autre"
value="<?= $_langAutreValue ?>"
<?= $_langAutreRequired ? 'required' : '' ?>>
<small>Si votre TFE contient une langue absente de la liste, précisez-la ici.</small>
</div>
</div>
</div>
<?php unset($_langAutreRequired, $_langAutreValue); ?>
</fieldset>
<script>
(function () {
var fs = document.getElementById('languages-fieldset');
if (!fs) return;
var autreInput = fs.querySelector('input[name="language_autre"]');
if (!autreInput) return;
var autreLabel = fs.querySelector('label[for="language_autre"]');
function update() {
var anyChecked = fs.querySelectorAll('input[name="languages[]"]').length > 0
? Array.from(fs.querySelectorAll('input[name="languages[]"]')).some(function(cb){ return cb.checked; })
: false;
autreInput.required = !anyChecked;
if (autreLabel) {
var star = autreLabel.querySelector('.asterisk');
if (!anyChecked && !star) {
var s = document.createElement('span');
s.className = 'asterisk';
s.textContent = '*';
autreLabel.appendChild(document.createTextNode(' '));
autreLabel.appendChild(s);
} else if (anyChecked && star) {
star.previousSibling && star.previousSibling.nodeType === 3 && star.previousSibling.remove();
star.remove();
}
}
}
fs.addEventListener('change', function(e) {
if (e.target && e.target.name === 'languages[]') update();
});
update();
})();
</script>
<!-- ═══════════════════ Mots-clés ═══════════════════ -->
<fieldset>