add Néerlandais language option and make language_autre conditionally required

This commit is contained in:
Pontoporeia
2026-05-08 10:55:08 +02:00
parent f3d9615562
commit 15d54fa19e
4 changed files with 41 additions and 2 deletions

View File

@@ -2,6 +2,10 @@
## Completed ## Completed
- [x] Language form improvements
- [x] Add Néerlandais as default language option (schema + migration 017)
- [x] Make `language_autre` required only when no Langue du TFE checkbox is checked (JS in form.php, PHP server-side default)
- [x] Merge banner images into cover images - [x] Merge banner images into cover images
- [x] Migration 016: copy `storage/banners/*``storage/covers/`, insert `thesis_files` cover records, clear `banner_path`, remove banners dir - [x] Migration 016: copy `storage/banners/*``storage/covers/`, insert `thesis_files` cover records, clear `banner_path`, remove banners dir
- [x] Remove banner fieldset from edit form (`form.php`) - [x] Remove banner fieldset from edit form (`form.php`)

View File

@@ -0,0 +1 @@
INSERT OR IGNORE INTO languages (name) VALUES ('Néerlandais');

View File

@@ -90,7 +90,8 @@ CREATE TABLE IF NOT EXISTS languages (
INSERT OR IGNORE INTO languages (name) VALUES INSERT OR IGNORE INTO languages (name) VALUES
('Français'), ('Français'),
('Anglais'); ('Anglais'),
('Néerlandais');
-- Format types (can select multiple) -- Format types (can select multiple)
CREATE TABLE IF NOT EXISTS format_types ( CREATE TABLE IF NOT EXISTS format_types (

View File

@@ -165,7 +165,7 @@ $checkedFormatsForSiteWeb = $checkedFormatsForSiteWeb ?? [];
<?php endif; ?> <?php endif; ?>
<!-- ═══════════════════ Langue(s) ═══════════════════ --> <!-- ═══════════════════ Langue(s) ═══════════════════ -->
<fieldset> <fieldset id="languages-fieldset">
<legend>Langue(s)</legend> <legend>Langue(s)</legend>
<?php <?php
$name = "languages"; $name = "languages";
@@ -179,11 +179,44 @@ $checkedFormatsForSiteWeb = $checkedFormatsForSiteWeb ?? [];
$name = "language_autre"; $name = "language_autre";
$label = "Autre(s) langue(s) :"; $label = "Autre(s) langue(s) :";
$value = $oldFn("language_autre"); $value = $oldFn("language_autre");
$required = empty($formData["languages"]);
$hint = $hint =
"Si votre TFE contient une langue absente de la liste, précisez-la ici."; "Si votre TFE contient une langue absente de la liste, précisez-la ici.";
include APP_ROOT . "/templates/partials/form/text-field.php"; include APP_ROOT . "/templates/partials/form/text-field.php";
?> ?>
</fieldset> </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 ═══════════════════ --> <!-- ═══════════════════ Mots-clés ═══════════════════ -->
<fieldset> <fieldset>