From b11010866c2f2a8053e95fc5f63e5e32d8e692df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=AFeul=20Rouquette?= <maieul@maieul.net>
Date: Sun, 28 Feb 2021 12:42:25 +0100
Subject: [PATCH] =?UTF-8?q?Fix=20#58.=20Puisque=20maintenant=20le=20javasc?=
 =?UTF-8?q?ript=20est=20=C3=A0=20part,=20on=20peut=20mettre=20une=20case?=
 =?UTF-8?q?=20=C3=A0=20cocher=20pour=20demander=20d'afficher=20expliciteme?=
 =?UTF-8?q?nt=20les=20messages=20de=20retour=20de=20chaque=20traitement=20?=
 =?UTF-8?q?si=20jamais=20on=20a=20d=C3=A9fini=20un=20message=20g=C3=A9n?=
 =?UTF-8?q?=C3=A9ral.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 base/formidable_tables.php        | 13 +++++++------
 formidable_administrations.php    | 14 +++++++++-----
 formulaires/editer_formulaire.php | 10 +++++++++-
 formulaires/formidable.php        | 13 +++++++++++--
 lang/formidable_fr.php            |  1 +
 paquet.xml                        |  2 +-
 6 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/base/formidable_tables.php b/base/formidable_tables.php
index deca9ace..c249b921 100644
--- a/base/formidable_tables.php
+++ b/base/formidable_tables.php
@@ -30,9 +30,9 @@ function formidable_declarer_tables_interfaces($interfaces) {
 	$interfaces['tables_jointures']['spip_formulaires'][] = 'formulaires_liens';
 	$interfaces['tables_jointures']['spip_articles'][] = 'formulaires_liens';
 	$interfaces['tables_jointures']['spip_rubriques'][] = 'formulaires_liens';
-	
+
 	$interfaces['exceptions_des_jointures']['spip_formulaires']['vu'] = array('spip_formulaires_liens', 'vu');
-	
+
 	$interfaces['table_des_traitements']['MESSAGE_RETOUR']['formulaires']= _TRAITEMENT_RACCOURCIS;
 	$interfaces['table_des_traitements']['URL_REDIRECT']['formulaires']= 'vider_url(%s)';
 
@@ -63,8 +63,8 @@ function formidable_declarer_tables_objets_sql($tables) {
 		'texte_creer_associer' => 'formidable:liens_creer_associer',
 		'texte_ajouter' => 'formidable:liens_ajouter',
 
-		'champs_editables' => array('titre', 'identifiant', 'descriptif', 'css', 'message_retour', 'saisies', 'traitements', 'public','apres','url_redirect','resume_reponse'),
-		'champs_versionnes' => array('titre', 'identifiant', 'descriptif', 'css', 'message_retour', 'saisies', 'traitements', 'public','apres','url_redirect','resume_reponse'),
+		'champs_editables' => array('titre', 'identifiant', 'descriptif', 'css', 'message_retour', 'afficher_message_ok_traitements', 'saisies', 'traitements', 'public','apres','url_redirect','resume_reponse'),
+		'champs_versionnes' => array('titre', 'identifiant', 'descriptif', 'css', 'message_retour', 'saisies', 'afficher_message_ok_traitements', 'traitements', 'public','apres','url_redirect','resume_reponse'),
 		'field' => array(
 			'id_formulaire' => 'bigint(21) NOT NULL',
 			'identifiant' => 'varchar(200)',
@@ -72,6 +72,7 @@ function formidable_declarer_tables_objets_sql($tables) {
 			'descriptif' => 'text',
 			'css' => 'varchar(255) not null default ""',
 			'message_retour' => "text NOT NULL default ''",
+			'afficher_message_ok_traitements' => 'varchar(2) NOT NULL default ""',
 			'saisies' => "longtext NOT NULL default ''",
 			'traitements' => "text NOT NULL default ''",
 			'public' => "enum('non', 'oui') DEFAULT 'non' NOT NULL",
@@ -178,10 +179,10 @@ function formidable_declarer_tables_objets_sql($tables) {
 			'poubelle' => 'formidable:texte_statut_poubelle'
 		),
 	);
-	
+
 	// Jointures sur les formulaires pour tous les objets
 	$tables[]['tables_jointures'][] = 'formulaires_liens';
-	
+
 	return $tables;
 }
 
diff --git a/formidable_administrations.php b/formidable_administrations.php
index 7fc2ed33..e1530782 100644
--- a/formidable_administrations.php
+++ b/formidable_administrations.php
@@ -111,13 +111,17 @@ function formidable_upgrade($nom_meta_base_version, $version_cible) {
 	$maj['0.23.0'] = array(
 		array('formidable_saisies_identifier')
 	);
-	
+
 	// Ajouter un champ "vu" pour les liaisons
 	$maj['1.0.0'] = array(
 		array('maj_tables', array('spip_formulaires_liens')),
 		array('formidable_verifier_liens_vu'),
 	);
-	
+	// Ajouter un champ masquer_retour_traitements pour les formulaires
+	$maj['1.3.0'] = array(
+		array('maj_tables', array('spip_formulaires')),
+	);
+
 	include_spip('base/upgrade');
 	maj_plugin($nom_meta_base_version, $version_cible, $maj);
 }
@@ -379,7 +383,7 @@ function formidable_migrer_config() {
 function formidable_verifier_liens_vu() {
 	include_spip('action/editer_liens');
 	include_spip('formidable_pipelines');
-	
+
 	// Chercher tous les liens de form pas marqué comme vu
 	if ($liens = objet_trouver_liens(array('formulaire' => '*'), array('*' => '*'), array('vu="non"'))) {
 		foreach ($liens as $lien) {
@@ -387,10 +391,10 @@ function formidable_verifier_liens_vu() {
 			$cle = id_table_objet($lien['objet']);
 			$contenu = sql_fetsel('*', $table, "$cle=".intval($lien['id_objet']));
 			$contenu = implode(' ', $contenu);
-			
+
 			// On cherche les modèles insérés dans les textes du contenu
 			$formulaires = formidable_trouve_liens($contenu);
-			
+
 			// Est-ce qu'on trouve le form de ce lien dans les modèles trouvés
 			if (isset($formulaires[$lien['id_formulaire']])) {
 				// On lui ajoute vu=oui
diff --git a/formulaires/editer_formulaire.php b/formulaires/editer_formulaire.php
index 38c60237..b5c727e7 100644
--- a/formulaires/editer_formulaire.php
+++ b/formulaires/editer_formulaire.php
@@ -45,6 +45,15 @@ function formulaires_editer_formulaire_saisies() {
 				'previsualisation' => 'oui',
 			)
 		),
+		array(
+			'saisie' => 'case',
+			'options' => array(
+				'nom' => 'afficher_message_ok_traitements',
+				'label_case' => '<:formidable:afficher_message_ok_traitements_label_case:>',
+				'conteneur_class' => 'pleine_largeur',
+				'afficher_si' => '@message_retour@',
+			),
+		),
 		array(
 			'saisie' => 'textarea',
 			'options' => array (
@@ -123,7 +132,6 @@ function formulaires_editer_formulaire_verifier($id_formulaire, $nouveau) {
 
 	include_spip('inc/editer');
 	$erreurs = saisies_verifier(formulaires_editer_formulaire_saisies());
-
 	if (!isset($erreurs['identifiant'])) {
 		$identifiant = _request('identifiant');
 		if (sql_getfetsel('id_formulaire', 'spip_formulaires', 'identifiant = '.sql_quote($identifiant).' AND id_formulaire != '.intval($id_formulaire))) {
diff --git a/formulaires/formidable.php b/formulaires/formidable.php
index bc386b3d..fb5e763c 100644
--- a/formulaires/formidable.php
+++ b/formulaires/formidable.php
@@ -352,6 +352,8 @@ function formulaires_formidable_traiter_dist($id, $valeurs = array(), $id_formul
 	$formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . $id_formulaire);
 	$saisies = unserialize($formulaire['saisies']);
 	$traitements = unserialize($formulaire['traitements']);
+	$afficher_message_ok_traitements = $formulaire['afficher_message_ok_traitements'];
+
 	// On passe les traitements en pipelines, pour s'assurer de l'ordre le cas échéant
 	$traitements = pipeline(
 		'formidable_traitements',
@@ -368,6 +370,7 @@ function formulaires_formidable_traiter_dist($id, $valeurs = array(), $id_formul
 	$retours['formidable_afficher_apres'] = $formulaire['apres'];
 	$retours['id_formulaire'] = $id_formulaire;
 
+
 	// Si on a une redirection valide
 	if ($url_redirect) {
 		$retours['redirect'] = $url_redirect;
@@ -430,10 +433,16 @@ function formulaires_formidable_traiter_dist($id, $valeurs = array(), $id_formul
 							$retours
 						);
 						// Collecter les messages de retour afin de les formater correctement par la suite
-						if (!empty($retours['message_ok'])) {
+						if (
+							!empty($retours['message_ok'])
+							and (
+								$afficher_message_ok_traitements
+								or !$formulaire['message_retour']
+							)
+						) {
 							$messages_ok .= wrap(propre($retours['message_ok']),'<div class="message_retour_traitement message_retour_'.$type_traitement.'">');
-							$retours['message_ok'] = ''; // Inutile de les exposer aux autres traitements
 						}
+						$retours['message_ok'] = ''; // Inutile de les exposer aux autres traitements
 						$messages_ok .= $retours['scripts_ok'];
 					} else {
 						// traitement introuvable, ne pas retenter
diff --git a/lang/formidable_fr.php b/lang/formidable_fr.php
index 0af8eef4..679151e4 100644
--- a/lang/formidable_fr.php
+++ b/lang/formidable_fr.php
@@ -177,6 +177,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 	'liens_retirer_tous_liens_formulaires' => 'Retirer tous les formulaires',
 
 	// M
+	'afficher_message_ok_traitements_label_case' => 'Afficher les messages de retour spécifiques à chaque traitement',
 	'minutes_secondes' => '@m@min @s@s',
 	'modele_label_formulaire_formidable' => 'Quel formulaire ?',
 	'modele_nom_formulaire' => 'un formulaire',
diff --git a/paquet.xml b/paquet.xml
index f93eadc6..bd2dd4cb 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -5,7 +5,7 @@
 	etat="stable"
 	compatibilite="[3.1.0;3.2.*]"
 	logo="images/formidable-64.png"
-	schema="1.0.0"
+	schema="1.3.0"
 	documentation="https://contrib.spip.net/Formidable-le-generateur-de-formulaires"
 >
 	<nom>Formidable</nom>
-- 
GitLab