From 6f7d0d2fe141158dbc37701a9695b2ee8f022025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=AFeul=20Rouquette?= <maieul@maieul.net> Date: Fri, 24 Apr 2020 14:52:55 +0200 Subject: [PATCH] =?UTF-8?q?crayons=20sur=20un=20champ=20inexistant=20en=20?= =?UTF-8?q?bas=20car=20ajout=C3=A9=20apr=C3=A8s=20coup=20sur=20une=20r?= =?UTF-8?q?=C3=A9ponse=20:=20trouver=20correctement=20la=20saisie.=20Reste?= =?UTF-8?q?=20maintenant=20=C3=A0=20trouver=20comment=20enregistrer=20la?= =?UTF-8?q?=20r=C3=A9ponse=20en=20base?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controleurs/formulaires_reponses_champ.php | 19 +++++++++++++------ formidable_fonctions.php | 7 ++++++- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/controleurs/formulaires_reponses_champ.php b/controleurs/formulaires_reponses_champ.php index 866fb495..b1432b0a 100644 --- a/controleurs/formulaires_reponses_champ.php +++ b/controleurs/formulaires_reponses_champ.php @@ -12,19 +12,26 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) { list(,$crayon, $type, $champ, $id) = $regs; $id_formulaires_reponses_champ = $regs[4]; + // Cas 1. On est sur un champ déjà enregistreé + if (strpos($id_formulaires_reponses_champ, 'new') === false) { // Recuperer id_formulaires_reponse et id_formulaire // Note, sans doute pourrait-on passer directement cela en classe // Mais // 1. Cela ferait une exception // 2. Des gens utilisent peut être pas #VOIR_REPONSE{xxx,edit} - $data = sql_fetsel('*', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id_formulaires_reponses_champ AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire"); - $id_formulaires_reponse = $data['id_formulaires_reponse']; - + // + $data = sql_fetsel('saisies, nom, valeur', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id_formulaires_reponses_champ AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire"); + $nom = $data['nom']; + $valeur = $data['valeur']; + } else { + $valeur = ''; + preg_match('#new-(.*)-(.*)#', $id_formulaires_reponses_champ, $match); + $nom = $match[1]; + $id_formulaires_reponse = $match[2]; + $data = sql_fetsel('saisies', 'spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponse=$id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire"); + } - $nom = $data['nom']; - $valeur = $data['valeur']; $saisie = saisies_chercher(unserialize($data['saisies']), $nom); - $valeur = $data['valeur']; $n = new Crayon( $type . '-valeur-' . $id_formulaires_reponses_champ, diff --git a/formidable_fonctions.php b/formidable_fonctions.php index 61ef535b..552ab1e5 100644 --- a/formidable_fonctions.php +++ b/formidable_fonctions.php @@ -99,7 +99,12 @@ function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $s // Si on demande edit > mode crayon > on génère le crayon correspond if ($type_retour == 'edit') { - return 'crayon '.'formulaires_reponses_champ-valeur-'. $reponses_valeurs[$id_formulaires_reponse][$nom]['id']; + if (isset($reponses_valeurs[$id_formulaires_reponse][$nom]['id'])) { + $valeur = $reponses_valeurs[$id_formulaires_reponse][$nom]['id']; + } else { + $valeur = "new-$nom-$id_formulaires_reponse"; + } + return 'crayon '.'formulaires_reponses_champ-valeur-'. $valeur; } // Si on trouve bien la saisie demandée if ($saisie = saisies_chercher($formulaires_saisies[$id_formulaire], $nom)) { -- GitLab