From b84c08fd88d2e6271f1cb85511d9612301798bb0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=AFeul=20Rouquette?= <maieul@maieul.net>
Date: Fri, 25 Nov 2022 22:52:51 +0100
Subject: [PATCH] =?UTF-8?q?feat(#113):=20Configuration=20des=20traitements?=
 =?UTF-8?q?=20:=20r=C3=A9partir=20les=20traitements=20en=20onglets=20verti?=
 =?UTF-8?q?caux?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGELOG.md                                  |  6 +++
 .../editer_formulaire_traitements.html        | 22 +--------
 formulaires/editer_formulaire_traitements.php | 49 ++++++++++++-------
 lang/formidable_fr.php                        |  2 +
 prive/style_prive_plugin_formidable.html      |  4 +-
 5 files changed, 44 insertions(+), 39 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 499f46b6..f3e36552 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,10 @@
 # Changelog
+## Unreleased
+
+### Changed
+
+- #113 Amélioration de l'ergonomie de la configuration des traitements : chaque traitement se trouve désormais dans un onglet (vertical)
+
 ## [5.2.3] - 2022-11-08
 
 ### Fixed
diff --git a/formulaires/editer_formulaire_traitements.html b/formulaires/editer_formulaire_traitements.html
index b3cb1c47..37a1b025 100644
--- a/formulaires/editer_formulaire_traitements.html
+++ b/formulaires/editer_formulaire_traitements.html
@@ -20,26 +20,8 @@
 		<p class="boutons"><span class="image_loading"></span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
 	</div></form>
 	<script type="text/javascript">
-		jQuery(function(){
-			// On commence par cacher toutes les options
-			jQuery('.options_traiter').hide()
-				.each(function(){
-					var me = this;
-					var check = jQuery(me).prev().find('input.checkbox');
-					check.bind('change',function(){
-						if (check.is(':checked')){
-							jQuery(me).#EVAL{_SAISIES_AFFICHER_SI_JS_SHOW};
-							check.closest('.editer').addClass('hover');
-						}
-						else {
-							jQuery(me).hide('slow');
-							check.closest('.editer').removeClass('hover');
-						}
-					})
-					// force update
-					.trigger('change');
-				})
-				.find('h3').#EVAL{_SAISIES_AFFICHER_SI_JS_HIDE};
+		jQuery(function() {
+			$('.editer_traitements_choisis > legend').removeClass('label');
 		});
 	</script>
 	<style>
diff --git a/formulaires/editer_formulaire_traitements.php b/formulaires/editer_formulaire_traitements.php
index 2729205d..b8976485 100644
--- a/formulaires/editer_formulaire_traitements.php
+++ b/formulaires/editer_formulaire_traitements.php
@@ -37,28 +37,43 @@ function formulaires_editer_formulaire_traitements_charger($id_formulaire) {
 		$contexte['id_formulaire'] = $id_formulaire;
 
 		$traitements_disponibles = traitements_lister_disponibles();
-		$configurer_traitements = array();
+		$saisie_traitements_choisis =	[
+			'saisie' => 'checkbox',
+			'options' => [
+				'nom' => 'traitements_choisis',
+				'label' => '<:formidable:traitements_choisis:>',
+				'data' => [],
+			]
+		];
+		$saisie_options_traitements = [
+			'saisie' => 'fieldset',
+			'options' => [
+				'nom' => 'options_traitements',
+				'label' => '<:formidable:options_traitements:>',
+			],
+			'saisies' => [],
+		];
+
+
+		$configurer_traitements = [&$saisie_traitements_choisis, &$saisie_options_traitements];
+
 		foreach ($traitements_disponibles as $type_traitement => $traitement) {
-			$configurer_traitements[] = array(
-				'saisie' => 'checkbox',
-				'options' => array(
-					'nom' => 'traitements_choisis',
-					'conteneur_class' => 'pleine_largeur',
-					'data' => array(
-						$type_traitement => $traitement['description']
-					)
-				)
-			);
-			$configurer_traitements[] = array(
+			$saisie_traitements_choisis['options']['data'][$type_traitement] = $traitement['description'];
+			$saisie_options_traitements['saisies'][] = [
 				'saisie' => 'fieldset',
-				'options' => array(
-					'nom' => 'options',
+				'options' => [
+					'nom' => "options_$type_traitement",
 					'label' => $traitement['titre'],
-					'conteneur_class' => "$type_traitement options_traiter"
-				),
+					'class' => "$type_traitement options_traiter",
+					'afficher_si' => "@traitements_choisis@ IN '$type_traitement'",
+					'onglet' => 'on',
+					'onglet_vertical' => 'on',
+				],
 				'saisies' => saisies_transformer_noms($traitement['options'], '/^.*$/', "traitements[$type_traitement][\\0]")
-			);
+			];
 		}
+
+		$configurer_traitements = saisies_transformer_option($configurer_traitements, 'conteneur_class', '#(.*)#', '\1 pleine_largeur');
 		$contexte['_configurer_traitements'] = $configurer_traitements;
 
 		// Si on demande un avertissement et qu'il y a déjà des traitements de configurés
diff --git a/lang/formidable_fr.php b/lang/formidable_fr.php
index 69675999..ae55ae6b 100644
--- a/lang/formidable_fr.php
+++ b/lang/formidable_fr.php
@@ -189,6 +189,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 	'noisette_label_afficher_titre_formulaire' => 'Afficher le titre du formulaire ?',
 	'noisette_label_identifiant' => 'Formulaire à afficher ',
 	'noisette_nom_noisette_formulaire' => 'Formulaire',
+	'options_traitements' => 'Options des traitements',
 
 	// P
 	'pas_analyse_fichiers' => 'Formidable ne propose pas (encore) d’analyse des fichiers envoyés',
@@ -242,6 +243,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 	'traitements_avertissement_creation' => 'Les modifications sur les champs du formulaire ont été enregistrées avec succès. Vous pouvez maintenant définir quels traitements seront effectués lors de l’utilisation du formulaire.',
 	'traitements_avertissement_modification' => 'Les modifications sur les champs du formulaire ont été enregistrées avec succès. <strong>Certains traitements doivent peut-être être reconfigurés en conséquence.</strong>',
 	'traitements_champ_aucun' => 'Aucun',
+	'traitements_choisis' => 'Choix des traitements',
 	'traiter_email_AR_label' => 'Accusé de réception',
 	'traiter_email_accuse_explication_texte' => 'Pour activer la fonctionnalité d’accusé de réception, vous devez au préalable définir un expéditeur.',
 	'traiter_email_contenu_courriel_label' => 'Contenu du courriel',
diff --git a/prive/style_prive_plugin_formidable.html b/prive/style_prive_plugin_formidable.html
index 263389d7..a31e3f00 100644
--- a/prive/style_prive_plugin_formidable.html
+++ b/prive/style_prive_plugin_formidable.html
@@ -23,8 +23,8 @@ body .formidable_analyse .progress-bar span {
 
 .formulaire_edit .formulaire_editer_formulaire_champs .editer.saisies_disponibles {border-top:1px solid #ccc;padding-top:15px;margin-top: 15px;}
 
-.formulaire_editer_formulaire_traitements .editer_traitements_choisis {
-	background-color: [#(#ENV{claire}|couleur_eclaircir)];
+.formulaire_editer_formulaire_traitements .saisies-contenu-onglet > fieldset {
+	margin-left: 0px;
 }
 
 .formidable_liens .liste-items {margin: 0}
-- 
GitLab