mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-06-25 16:19:19 +02:00
fix: settings checkboxes — fix unchecked state handling, split into separate forms to avoid cross-resets, use HTMX auto-save with hidden value=0 inputs
This commit is contained in:
@@ -21,29 +21,33 @@ $logger = AdminLogger::make();
|
||||
$isHxRequest = (isset($_SERVER['HTTP_HX_REQUEST']) && $_SERVER['HTTP_HX_REQUEST'] === 'true');
|
||||
$section = $_POST['section'] ?? '';
|
||||
|
||||
if ($section === 'formulaire') {
|
||||
// hx-include targets the wrapper div, so all checkboxes in the fieldset
|
||||
// are submitted together — including unchecked ones (absent from POST).
|
||||
if ($section === 'formulaire_restrictions') {
|
||||
$newValues = ['restricted_files_enabled' => ($_POST['restricted_files_enabled'] ?? '0') === '1' ? '1' : '0'];
|
||||
$db->setSetting('restricted_files_enabled', $newValues['restricted_files_enabled']);
|
||||
$logger->logFormSettingsUpdate($newValues);
|
||||
if (!$isHxRequest) {
|
||||
App::flash('success', "Paramètres mis à jour.");
|
||||
}
|
||||
} elseif ($section === 'formulaire_acces') {
|
||||
$allowed = [
|
||||
'access_type_libre_enabled',
|
||||
'access_type_interne_enabled',
|
||||
'access_type_interdit_enabled',
|
||||
'restricted_files_enabled'
|
||||
];
|
||||
$newValues = [];
|
||||
foreach ($allowed as $key) {
|
||||
$value = isset($_POST[$key]) ? '1' : '0';
|
||||
$value = ($_POST[$key] ?? '0') === '1' ? '1' : '0';
|
||||
$db->setSetting($key, $value);
|
||||
$newValues[$key] = $value;
|
||||
}
|
||||
$logger->logFormSettingsUpdate($newValues);
|
||||
if (!$isHxRequest) {
|
||||
App::flash('success', "Paramètres du formulaire mis à jour.");
|
||||
App::flash('success', "Degrés d'ouverture mis à jour.");
|
||||
}
|
||||
} elseif ($section === 'objet_types') {
|
||||
$newValues = [
|
||||
'objet_these_enabled' => isset($_POST['objet_these_enabled']) ? '1' : '0',
|
||||
'objet_frart_enabled' => isset($_POST['objet_frart_enabled']) ? '1' : '0',
|
||||
'objet_these_enabled' => ($_POST['objet_these_enabled'] ?? '0') === '1' ? '1' : '0',
|
||||
'objet_frart_enabled' => ($_POST['objet_frart_enabled'] ?? '0') === '1' ? '1' : '0',
|
||||
];
|
||||
$db->setSetting('objet_these_enabled', $newValues['objet_these_enabled']);
|
||||
$db->setSetting('objet_frart_enabled', $newValues['objet_frart_enabled']);
|
||||
@@ -110,5 +114,11 @@ if ($isHxRequest) {
|
||||
}
|
||||
|
||||
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
|
||||
header('Location: /admin/parametres.php');
|
||||
|
||||
// Redirect back to wherever the form came from, defaulting to parametres
|
||||
$redirect = '/admin/parametres.php';
|
||||
if (in_array($section, ['formulaire_restrictions', 'formulaire_acces', 'objet_types'], true)) {
|
||||
$redirect = '/admin/contenus.php';
|
||||
}
|
||||
header('Location: ' . $redirect);
|
||||
exit;
|
||||
|
||||
Reference in New Issue
Block a user