mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-06-25 16:19:19 +02:00
add Néerlandais language option and make language_autre conditionally required
This commit is contained in:
4
TODO.md
4
TODO.md
@@ -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`)
|
||||||
|
|||||||
1
app/migrations/applied/017_add_dutch_language.sql
Normal file
1
app/migrations/applied/017_add_dutch_language.sql
Normal file
@@ -0,0 +1 @@
|
|||||||
|
INSERT OR IGNORE INTO languages (name) VALUES ('Néerlandais');
|
||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user