From 2a3326954604bc8fdca800bbd248c5ad2860afa7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=AFeul=20Rouquette?= <maieul@maieul.net>
Date: Tue, 18 Jan 2022 17:54:31 +0100
Subject: [PATCH] =?UTF-8?q?Crayonnage=20des=20champs=20:=20-=20pour=20les?=
 =?UTF-8?q?=20checkbox,=20stocker=20de=20mani=C3=A8re=20s=C3=A9rialis?=
 =?UTF-8?q?=C3=A9e=20-=20pour=20les=20choix=5Fgrille,=20stocker=20correcte?=
 =?UTF-8?q?ment,=20tout=20court,=20et=20d=C3=A9j=C3=A0=20permettre=20l'?=
 =?UTF-8?q?=C3=A9dition?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Attention on s'appuie sur `saisies_est_tabulaire()` qui a été corrigée
dans https://git.spip.net/spip-contrib-extensions/saisies/commit/2e507635d41e0f1255772992ae81c6667395d99e
---
 controleurs/formulaires_reponses_champ.php |  3 ++-
 formidable_pipelines.php                   | 11 ++++++++---
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/controleurs/formulaires_reponses_champ.php b/controleurs/formulaires_reponses_champ.php
index f7b90b21..ee55549a 100644
--- a/controleurs/formulaires_reponses_champ.php
+++ b/controleurs/formulaires_reponses_champ.php
@@ -40,7 +40,8 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) {
 	// Crayons utilise son propre formalisme pour le 'name' des saisies.
 	$nom_crayons = 'content_' . $key . '_valeur';
 	$saisie['options']['nom'] = $nom_crayons;
-
+	include_spip('inc/formidable');
+	$valeur = filtre_tenter_unserialize_dist($valeur);// Pour une raison mystérieuse, charger_fonction déclenche une erreur (!)
 	$contexte = array('_saisies' => array($saisie), $nom_crayons =>  $valeur);
 	$html = $n->formulaire($contexte);
 
diff --git a/formidable_pipelines.php b/formidable_pipelines.php
index 4e672bed..4a137d82 100644
--- a/formidable_pipelines.php
+++ b/formidable_pipelines.php
@@ -357,15 +357,20 @@ function formidable_crayons_verifier($flux) {
 	include_spip('inc/saisies');
 	$id = $flux['args']['id'];
 	$valeur = $flux['args']['content']['valeur'];
-
 	$data = sql_fetsel('nom,saisies', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
 	$saisies = unserialize($data['saisies']);
 	$saisie = saisies_chercher($saisies, $data['nom']);
-	set_request($data['nom'], $valeur);
+	if (saisies_saisie_est_tabulaire($saisie)) {
+		$atrouver = 'content_'.$flux['args']['wid'].'_valeur';
+		$valeur = saisies_request($atrouver);
+		$flux['data']['normaliser']['valeur'] = serialize($valeur);
+	}
+	saisies_set_request($data['nom'], $valeur);
 	$erreur = saisies_verifier(array($saisie), false);
+
 	if ($erreur) {
 		$flux['data']['erreurs']['valeur'] = implode('<br />',$erreur);
-	} elseif (_request($data['nom']) !== $valeur) {
+	} elseif (saisies_request($data['nom']) !== $valeur) {
 		$flux['data']['normaliser']['valeur'] = $normaliser;
 	}
 	return $flux;
-- 
GitLab