From 23816b4d00c0f4aa168e8d2415a0eb7cc7d166b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=AFeul=20Rouquette?= <maieul@maieul.net>
Date: Sun, 7 Mar 2021 13:51:47 +0100
Subject: [PATCH] =?UTF-8?q?Aide-m=C3=A9moire:=20le=20recharger=20en=20ajax?=
 =?UTF-8?q?=20=C3=A0=20la=20modif=20des=20saisies.=20fix=20#27?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 formulaires/editer_formulaire_champs.html   | 10 +++++++++-
 formulaires/editer_formulaire_champs.php    |  4 +++-
 modeles/formulaire_aide_memoire.html        | 15 ++++++++++++---
 prive/squelettes/extra/formulaire_edit.html |  7 ++++++-
 4 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/formulaires/editer_formulaire_champs.html b/formulaires/editer_formulaire_champs.html
index 64584eb2..8a517b89 100644
--- a/formulaires/editer_formulaire_champs.html
+++ b/formulaires/editer_formulaire_champs.html
@@ -44,6 +44,7 @@
 	.modifie .message_saisies_modifiees,.modifie input.revert {display: block;}
 </style>
 <script type="text/javascript">
+	aide_memoire_reload = false;
 	function update_modif_saisies(){
 		var is_modified = jQuery('.formulaire_[(#ENV{form})] .formulaire_construire_formulaire').is('.modifie');
 		if (is_modified) {
@@ -51,7 +52,14 @@
 		} else {
 			jQuery('.formulaire_#ENV{form}').removeClass('modifie');
 		}
-
+		if (!$('.en_configuration').length && !aide_memoire_reload) {
+			aide_memoire_reload = true;
+			ajaxReload('aide_memoire', {
+				callback:function(){aide_memoire_reload=false;},
+				args:{id_formulaire:#ENV{id_formulaire},source:'session'},
+				history:false
+			});
+		}
 	}
 	jQuery(function(){
 		update_modif_saisies();
diff --git a/formulaires/editer_formulaire_champs.php b/formulaires/editer_formulaire_champs.php
index c65d080b..c7d1babc 100644
--- a/formulaires/editer_formulaire_champs.php
+++ b/formulaires/editer_formulaire_champs.php
@@ -6,8 +6,10 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 }
 
 function formulaires_editer_formulaire_champs_charger($id_formulaire) {
-	$contexte = array();
 	$id_formulaire = intval($id_formulaire);
+	$contexte = array(
+		'id_formulaire' => $id_formulaire
+	);
 
 	// On teste si le formulaire existe
 	if ($id_formulaire
diff --git a/modeles/formulaire_aide_memoire.html b/modeles/formulaire_aide_memoire.html
index 53df0b23..ff042320 100644
--- a/modeles/formulaire_aide_memoire.html
+++ b/modeles/formulaire_aide_memoire.html
@@ -1,5 +1,6 @@
+<strong><:formidable:traitements_aide_memoire:></strong>
+#SET{source,#ENV{source,formulaire}}
 <BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
-	<strong><:formidable:traitements_aide_memoire:></strong>
 	<dl>
 		<dt>@nom_site_spip@</dt>
 		<dd><:info_nom_site:></dd>
@@ -8,7 +9,16 @@
 		<dt>@message_retour@</dt>
 		<dd><:formidable:editer_message_ok:></dd>
 	</dl>
-	<BOUCLE_champs(POUR){tableau #PIPELINE{saisies_afficher_si_saisies, #SAISIES*|unserialize}|saisies_lister_par_nom{1}}>
+	[(#ENV{source}|!={sessions}|oui)
+		#SET{saisies,#SAISIES*|unserialize}
+	]
+</BOUCLE_formulaire>
+
+<BOUCLE_session(CONDITION) {si #GET{source}|=={session}}>
+[(#SET{saisies,#SESSION{constructeur_formulaire_formidable_#ENV{id_formulaire}}})]
+</BOUCLE_session>
+
+<BOUCLE_champs(POUR){tableau #PIPELINE{saisies_afficher_si_saisies, #GET{saisies}}|saisies_lister_par_nom{1}}>
 	#SET{datas,''}
 	#SET{data,''}
 	[(#VALEUR{saisie}|=={explication}|oui)
@@ -36,4 +46,3 @@
 		</dl>]
 	</dl>
 	</BOUCLE_champs>
-</BOUCLE_formulaire>
diff --git a/prive/squelettes/extra/formulaire_edit.html b/prive/squelettes/extra/formulaire_edit.html
index ac6dc573..a16fd016 100644
--- a/prive/squelettes/extra/formulaire_edit.html
+++ b/prive/squelettes/extra/formulaire_edit.html
@@ -4,7 +4,12 @@
 <!--#extra-->
 [(#GET{configurer}|in_array{#LISTE{formulaire,traitements,champs}}|oui)
 #BOITE_OUVRIR{'','info'}
-	#INCLURE{fond=modeles/formulaire_aide_memoire, id_formulaire=#ID_FORMULAIRE}
+	[(#ENV{configurer}|oui)
+		<INCLURE{fond=modeles/formulaire_aide_memoire, id_formulaire=#ID_FORMULAIRE, source=formulaire}>
+	]
+	[(#ENV{configurer}|non)
+		<INCLURE{fond=modeles/formulaire_aide_memoire, id_formulaire=#ID_FORMULAIRE, source=session, ajax=aide_memoire}>
+	]
 #BOITE_FERMER
 ]
 <!--/#extra-->
-- 
GitLab