From d6e2beae49e8846755b1fdca1c5f68c7e5d899ab Mon Sep 17 00:00:00 2001
From: nicod_ <nicod@lerebooteux.fr>
Date: Wed, 24 May 2023 16:41:22 +0200
Subject: [PATCH] =?UTF-8?q?Refactoring=20pour=20=C3=A9dition=20en=20ajax?=
 =?UTF-8?q?=20(ajout/modification)=20qui=20fonctionne=20aussi=20sans=20JS?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 formulaires/editer_block.html               |  9 ++--
 formulaires/editer_block.php                |  9 ++--
 javascript/gestion_listes_blocks.js.html    | 33 ++++++--------
 lang/block_fr.php                           |  1 +
 prive/squelettes/inclure/ajouter_block.html |  3 --
 prive/squelettes/inclure/block.html         | 48 +++++++++++++++++++++
 prive/squelettes/inclure/blocks_objet.html  | 45 +------------------
 7 files changed, 73 insertions(+), 75 deletions(-)
 delete mode 100644 prive/squelettes/inclure/ajouter_block.html
 create mode 100644 prive/squelettes/inclure/block.html

diff --git a/formulaires/editer_block.html b/formulaires/editer_block.html
index 36958b2..e2b5b57 100644
--- a/formulaires/editer_block.html
+++ b/formulaires/editer_block.html
@@ -2,11 +2,14 @@
 	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
 	[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
 
-	<form method='post' action='[(#ENV{action}|ancre_url{[formulaire_#ENV{form}-(#ENV{id,nouveau})]})]' enctype='multipart/form-data'><div>
+	<form method='post' action='[(#ENV{action}|ancre_url{block_#ENV{id_block,new}})]' enctype='multipart/form-data'><div>
 		#ACTION_FORMULAIRE{#ENV{action}}
 
-		[(#ENV{include}|et{#ENV{id_blocktype}|non})
-		<p class="titre_ajouter" [style="background-image:url\((#CHEMIN_IMAGE{block-xx.svg})\);"]><:block:texte_ajouter_block:/></p>
+		[(#ENV{include}|oui)
+		<p class="titre_ajouter" [style="background-image:url\((#CHEMIN_IMAGE{block-xx.svg})\);"]>
+			[(#ENV{id_block}|intval|?{<:block:texte_modifier_block:/>,<:block:texte_ajouter_block:/>})]
+			[(#ENV{id_blocktype}|oui) : #INFO_TITRE{blocktype,#ENV{id_blocktype}} ]
+		</p>
 		<span class="toggle_box_link" style="display:none;">
 			<button type="button" class="btn btn_mini"><:block:texte_ajouter_block:/></button>
 		</span>
diff --git a/formulaires/editer_block.php b/formulaires/editer_block.php
index 2ae4134..e148310 100644
--- a/formulaires/editer_block.php
+++ b/formulaires/editer_block.php
@@ -243,15 +243,14 @@ function formulaires_editer_block_traiter_dist($id_block = 'new', $objet = null,
 				objet_instituer('block', $id_block, ['statut' => 'publie']);
 			}
 
-			if ($include && isset($retours['redirect'])) {
-				$retours['redirect'] = ancre_url($retours['redirect'], 'block' . $id_block);
+			if (isset($retours['redirect'])) {
+				$retours['redirect'] = parametre_url($retours['redirect'],'id_blocktype','');
+				$retours['redirect'] = ancre_url($retours['redirect'], 'block_' . $id_block);
 			}
 
 		}
 	}
-	if ($retour && (_request('ajouter') || _request('annuler'))) {
-		$retours['redirect'] = $retour;
-	}
+
 	if (_request('annuler')) {
 		$retours['redirect'] = parametre_url($retour,'id_blocktype','');
 	}
diff --git a/javascript/gestion_listes_blocks.js.html b/javascript/gestion_listes_blocks.js.html
index e1b129e..7139a4c 100644
--- a/javascript/gestion_listes_blocks.js.html
+++ b/javascript/gestion_listes_blocks.js.html
@@ -84,31 +84,22 @@ if (window.jQuery) {
 
 $(function() {
 
-	// édition en place des blocs
-	$('.objet_blocks .actions .editer_block').on('click', function(e) {
-		e.preventDefault();
-		let $parent = $(this).parents('.objetblock').first();
-		let $content = $parent.find('.objetblock__content');
-		let dest = $(this).attr('href');
-		dest = parametre_url(dest, 'var_zajax', 'contenu');
-		dest = parametre_url(dest, 'include', '1');
-		$.post(
-			{
-				url: dest,
-				cache: false,
-			}
-		).done(function(data) {
-			$content.html(data).addClass('objetblock__content--edit');
+	function gestion_boutons_blocks() {
+		// édition en place des blocs
+		$('.objet_blocks .actions .editer_block').on('click', function(e) {
+			e.preventDefault();
+			var id_block = $(this).data('id_block');
+			ajaxReload('block_' + id_block, {args: {edit_bloc: 1}});
 		});
-	});
 
-	// boutons "Annuler"
-	function annuler_ajouter_block() {
+		// boutons "Annuler"
 		$('.formulaire_editer_block button[name="annuler"]').on('click', function(e) {
 			e.preventDefault();
-			ajaxReload('ajouter_block');
+			var id_block = $(this).data('id_block');
+			ajaxReload('block_'+id_block);
 		});
 	}
-	annuler_ajouter_block();
-	onAjaxLoad(annuler_ajouter_block);
+	gestion_boutons_blocks();
+	onAjaxLoad(gestion_boutons_blocks);
+
 });
diff --git a/lang/block_fr.php b/lang/block_fr.php
index 8efbea0..df38478 100644
--- a/lang/block_fr.php
+++ b/lang/block_fr.php
@@ -43,6 +43,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = [
 
 	// T
 	'texte_ajouter_block'                  => 'Ajouter un bloc',
+	'texte_modifier_block'                 => 'Modifier un bloc',
 	'texte_changer_statut_block'           => 'Ce bloc est :',
 	'texte_creer_associer_block'           => 'Créer et associer un bloc',
 	'texte_definir_comme_traduction_block' => 'Ce bloc est une traduction du bloc numéro :',
diff --git a/prive/squelettes/inclure/ajouter_block.html b/prive/squelettes/inclure/ajouter_block.html
deleted file mode 100644
index 9c8eb60..0000000
--- a/prive/squelettes/inclure/ajouter_block.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="ajax ajout_block" id="ajout_block">
-[(#FORMULAIRE_EDITER_BLOCK{#ENV{id_block,new}, #OBJET, #ID_OBJET, #SELF#ajout_block, 1})]
-</div>
diff --git a/prive/squelettes/inclure/block.html b/prive/squelettes/inclure/block.html
new file mode 100644
index 0000000..7e34115
--- /dev/null
+++ b/prive/squelettes/inclure/block.html
@@ -0,0 +1,48 @@
+<BOUCLE(BLOCKS) {id_block} {statut?} {si #ENV{edit_bloc}|non}>
+	<div class="objetblock statut_#STATUT" id="block_#ID_BLOCK" data-id="#ID_BLOCK">
+		<div class="objetblock__header">
+			<h3 class="titrem objetblock__type">
+				[(#CHEMIN_IMAGE{block-16.png}|balise_img)]
+				#INFO_TITRE{blocktypes,#ID_BLOCKTYPE}
+			</h3>
+			<div class="actions groupe-btns">
+				<div class="btn">
+					[(#STATUT|puce_statut{block,#ID_BLOCK})]
+				</div>
+				[(#AUTORISER{modifier,block,#ID_BLOCK})
+				<div class="btn move deplacer_block">
+					[(#CHEMIN_IMAGE{formulaire-action-deplacer-16.png}|balise_img{<:block:icone_deplacer_block:/>})]
+				</div>
+				<a href="[(#URL_ECRIRE{block_edit,id_block=#ID_BLOCK}|parametre_url{redirect,#SELF#block#ID_BLOCK})]"
+				   class="btn editer_block" data-id_block="#ID_BLOCK">
+					[(#CHEMIN_IMAGE{formulaire-action-configurer-16.png}|balise_img{<:block:icone_modifier_block:/>})]
+				</a>
+				]
+				<!--
+				[(#AUTORISER{creer,block,#ID_BLOCK})
+					<button type="submit" class="submit noscroll dupliquer_saisie" name="dupliquer_block" value="#ID_BLOCK">
+						[(#CHEMIN_IMAGE{formulaire-action-dupliquer-16.png}|balise_img{<:saisies:construire_action_dupliquer:/>})]
+					</button>
+				]
+				-->
+
+				[(#AUTORISER{supprimer,block,#ID_BLOCK})
+					<a href="#URL_ACTION_AUTEUR{supprimer_block, #ID_BLOCK, #SELF}" class="ajax btn noscroll"  onclick="javascript:return confirm('<:block:confirmer_supprimer_block:/>');">
+						[(#CHEMIN_IMAGE{formulaire-action-supprimer-16.png}|balise_img{<:block:supprimer_block:/>})]
+					</a>
+				]
+			</div>
+		</div>
+
+		<div class="objetblock__content"[ id="(#ANCRE)"]>
+			#GENERER_BLOCK
+		</div>
+
+	</div>
+</BOUCLE>
+
+[(#ENV{edit_bloc}|oui)
+<div class="ajax ajout_block" id="block_#ENV{id_block,new}">
+	[(#FORMULAIRE_EDITER_BLOCK{#ENV{id_block,new}, #OBJET, #ID_OBJET, #SELF|ancre_url{block_#ENV{id_block,new}}, 1})]
+</div>
+]
diff --git a/prive/squelettes/inclure/blocks_objet.html b/prive/squelettes/inclure/blocks_objet.html
index b3ccae8..d3a11bc 100644
--- a/prive/squelettes/inclure/blocks_objet.html
+++ b/prive/squelettes/inclure/blocks_objet.html
@@ -1,56 +1,15 @@
 <B>
 [<h2>(#GRAND_TOTAL|singulier_ou_pluriel{block:info_1_block,block:info_nb_blocks})</h2>]
-
 <div class="objet_blocks"[ data-lien="(#ENV{objet})/#ENV{id_objet}"]>
 	<div class="sortable">
 	<BOUCLE(BLOCKS) {objet}{id_objet} {statut?} {par rang_lien}>
-		<div class="objetblock statut_#STATUT" id="block#ID_BLOCK" data-id="#ID_BLOCK">
-			<div class="objetblock__header">
-				<h3 class="titrem objetblock__type">
-					[(#CHEMIN_IMAGE{block-16.png}|balise_img)]
-					#INFO_TITRE{blocktypes,#ID_BLOCKTYPE}
-				</h3>
-				<div class="actions groupe-btns">
-					<div class="btn">
-						[(#STATUT|puce_statut{block,#ID_BLOCK})]
-					</div>
-					[(#AUTORISER{modifier,block,#ID_BLOCK})
-					<div class="btn move deplacer_block">
-						[(#CHEMIN_IMAGE{formulaire-action-deplacer-16.png}|balise_img{<:block:icone_deplacer_block:/>})]
-					</div>
-					<a href="[(#URL_ECRIRE{block_edit,id_block=#ID_BLOCK}|parametre_url{redirect,#SELF#block#ID_BLOCK})]"
-					   class="btn editer_block" data-id_block="#ID_BLOCK">
-						[(#CHEMIN_IMAGE{formulaire-action-configurer-16.png}|balise_img{<:block:icone_modifier_block:/>})]
-					</a>
-					]
-					<!--
-					[(#AUTORISER{creer,block,#ID_BLOCK})
-						<button type="submit" class="submit noscroll dupliquer_saisie" name="dupliquer_block" value="#ID_BLOCK">
-							[(#CHEMIN_IMAGE{formulaire-action-dupliquer-16.png}|balise_img{<:saisies:construire_action_dupliquer:/>})]
-						</button>
-					]
-					-->
-
-					[(#AUTORISER{supprimer,block,#ID_BLOCK})
-						<a href="#URL_ACTION_AUTEUR{supprimer_block, #ID_BLOCK, #SELF}" class="ajax btn noscroll"  onclick="javascript:return confirm('<:block:confirmer_supprimer_block:/>');">
-							[(#CHEMIN_IMAGE{formulaire-action-supprimer-16.png}|balise_img{<:block:supprimer_block:/>})]
-						</a>
-					]
-				</div>
-			</div>
-
-			<div class="objetblock__content"[ id="(#ANCRE)"]>
-				#GENERER_BLOCK
-			</div>
-
-		</div>
+		<INCLURE{fond=prive/squelettes/inclure/block, id_block, env, ajax=block_#ID_BLOCK}>
 	</BOUCLE>
 	</div>
 </div>
-
 </B>
 
-<INCLURE{fond=prive/squelettes/inclure/ajouter_block, env, ajax=ajouter_block}>
+<INCLURE{fond=prive/squelettes/inclure/block, edit_bloc=1, env, ajax=block_new}>
 
 <script type="text/javascript">
 /* Gestion du tri des blocks */
-- 
GitLab