From d5f3d8ff4cf9cabec7000a9bb6cf6dc3757245d4 Mon Sep 17 00:00:00 2001
From: thrax <vincent.callies@gmail.com>
Date: Fri, 22 Nov 2024 09:11:30 +0100
Subject: [PATCH 1/6] fix19 idiome de langue

---
 objets/liste/auteurs_lies.html | 69 +++++++++++++++++++++++++++++-----
 1 file changed, 59 insertions(+), 10 deletions(-)

diff --git a/objets/liste/auteurs_lies.html b/objets/liste/auteurs_lies.html
index b209c14d75..cf225cf7db 100644
--- a/objets/liste/auteurs_lies.html
+++ b/objets/liste/auteurs_lies.html
@@ -1,24 +1,64 @@
-[(#SET{defaut_tri,#ARRAY{
+[(#REM)
+<!-- 
+
+    Le squelette permet de :
+    - personnaliser l'aide     @param cle_aide
+    - personnaliser le titre   @param info_aucun,info_1,info_nb
+    Par défaut l'aide et le titre seront définis selon l'objet
+    si les items de langue sont existants.
+      @exemple OBJET:info_OBJET_aucun_auteur
+               OBJET:info_OBJET_1_auteur
+               OBJET:info_OBJET_nb_auteurs
+               clé d'appel de l'aide = OBJETauteurs
+
+-->][(#SET{defaut_tri,#ARRAY{
 	statut,1,
 	multi nom,1,
 	site,1,
 	compteur_articles,-1
-}})
-]
-#SET{auteurs_voiremails,#AUTORISER{auteurs_voiremails}}
+}})]
 #SET{selection,#ENV{objet_source}|lister_objets_lies{#ENV{objet},#ENV{id_objet},#ENV{_objet_lien}}}
 #SET{debut,#ENV{debutautl,#EVAL{_request("debutautl");}}}
+[(#REM) <!-- Permettre de personnaliser l'aide -->]
+[(#ENV{cle_aide}|?{
+	#SET{cle_aide,#ENV{cle_aide}}
+,
+	[(#ENV{objet}|=={article}|oui|et{#ENV{table_source}|=={auteurs}|oui}|?{
+		[(#SET{cle_aide,#ENV{objet}|substr{0,3}|concat{#ENV{table_source}}})]
+	,
+		[(#SET{cle_aide,#ENV{objet}|concat{#ENV{table_source}}})]
+	})]
+})]
 <input type="hidden" name="debutautl" value="#GET{debut}">
 <B_liste_aut>
 [(#REM) En cas de pagination indirecte @32, il faut refaire le set car la boucle
 a mis a jour la valeur avec la page reelle]
 #SET{debut,#ENV{debutautl,#EVAL{_request("debutautl");}}}
 #SET{afficher_lettres,#TRI|=={'multi nom'}|oui}
-#SET{auteurs_voiremails,#AUTORISER{auteurs_voiremails}}
 #ANCRE_PAGINATION
 <div class="liste-objets liste-objets-lies auteurs">
 <table class='spip liste'>
-[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_auteur,info_nb_auteurs}}) #AIDER{artauteurs}</strong></caption>]
+[(#REM) <!-- Permettre de personnaliser les items `info_1_auteur` et `info_nb_auteur` -->]
+[(#ENV{info_1}|?{
+	[(#SET{info_1,#ENV{info_1}})]
+,
+	[(#REM) <!-- personnalisation selon l'objet auquel est lié l'auteur -->]
+	[(#VAL{#ENV{objet_source}:info_#ENV{objet}_1_#ENV{objet_source}}|_T{'',#ARRAY{force,''}}|?{
+		[(#SET{info_1,#VAL{#ENV{objet_source}:info_#ENV{objet}_1_#ENV{objet_source}}})]
+	,
+		[(#SET{info_1,info_1_auteur})]
+	})]
+})]
+[(#ENV{info_nb}|?{
+	[(#SET{info_nb,#ENV{info_nb}})]
+,
+	[(#VAL{#ENV{objet_source}:info_#ENV{objet}_nb_#ENV{table_source}}|_T{#TOTAL_BOUCLE,#ARRAY{force,''}}|?{
+		[(#SET{info_nb,#VAL{#ENV{objet_source}:info_#ENV{objet}_nb_#ENV{table_source}}})]
+	,
+		[(#SET{info_nb,info_nb_auteurs})]
+	})]
+})]
+[<caption><strong class="caption">(#ENV*{titre,#TOTAL_BOUCLE|singulier_ou_pluriel{#GET{info_1}|sinon{#VAL{#ENV{objet_source}:info_1_#ENV{objet_source}}},#GET{info_nb}|sinon{#VAL{#ENV{objet_source}:info_nb_#ENV{table_source}}}}})#AIDER{#GET{cle_aide}}</strong></caption>]
 	<thead>
 		#SET{p,''}
 		<BOUCLE_lettre(AUTEURS){tout}{id_auteur IN #GET{selection}}{where?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{id_auteur==#GET{afficher_lettres}|?{'.*','A'}}>[
@@ -33,11 +73,11 @@ a mis a jour la valeur avec la page reelle]
 			}
 		})]</B_lettre>
 		[<tr><td colspan="5"><nav role='navigation' class='pagination'>(#GET{p})</nav></td></tr>]
-
+	
 		<tr class='first_row'>
 			<th class='statut' scope='col'>[(#TRI{statut,#CHEMIN_IMAGE{auteur-0minirezo-16.png}|balise_img{<:lien_trier_statut|attribut_html:>},ajax})]</th>
 			<th class='nom' scope='col' colspan='2'>[(#TRI{multi nom,<:info_nom:>,ajax})]</th>
-			[(#GET{auteurs_voiremails})<th class='email' scope='col'>[(#TRI{email,<:email:>,ajax})]</th>]
+			<th class='email' scope='col'>[(#TRI{email,<:email:>,ajax})]</th>
 			<th class='nombre' scope='col'>[(#TRI{compteur_articles,<:info_articles:>,ajax})]</th>
 			<th class='action' scope='col'>&nbsp;</th>
 		</tr>
@@ -48,7 +88,7 @@ a mis a jour la valeur avec la page reelle]
 			<td class='statut'>[(#STATUT|puce_statut{auteur})]</td>
 			<td class='nom[ (#NOM|non)vide]'[(#LOGO_AUTEUR|non)colspan='2']><a href="[(#ID_AUTEUR|generer_objet_url{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[<span class='rang'>(#RANG).</span> ][(#NOM|sinon{<:texte_vide:>})]</a></td>
 			[<td class='logo'><a href="[(#ID_AUTEUR|generer_objet_url{auteur})]" style="background-image:url\((#LOGO_AUTEUR|image_recadre_avec_fallback{40,40}|extraire_attribut{src}))"></a></td>]
-			[(#GET{auteurs_voiremails})<td class='email'>[<a href='mailto:(#EMAIL)'>[(#EMAIL|couper{30})]</a>]</td>]
+			<td class='email'>[<a href='mailto:(#EMAIL)'>[(#EMAIL|couper{30})]</a>]</td>
 			<td class='nombre'>[(#COMPTEUR_ARTICLES|singulier_ou_pluriel{info_1_article,info_nb_articles})][<br /><span>(#PIPELINE{'compter_contributions_auteur',#ARRAY{args,#ARRAY{id_auteur,#ID_AUTEUR},data,#ARRAY{}}}|implode{'<br />'})</span>]</td>
 			<td class='action'>
 				[(#ENV{editable}|oui)
@@ -64,6 +104,15 @@ a mis a jour la valeur avec la page reelle]
 </div>
 </B_liste_aut>
 <div class="liste-objets liste-objets-lies auteurs caption-wrap">
-<strong class="caption">[(#ENV*{titre,<:info_aucun_auteur:>}) ]#AIDER{artauteurs}</strong>
+[(#REM) <!-- Permettre de personnaliser l'item `info_aucun_auteur` -->]
+[(#ENV{info_aucun}|?{
+	[(#SET{info_aucun,#ENV{info_aucun}})]
+,
+	[(#VAL{#ENV{objet_source}:info_#ENV{objet}_aucun_#ENV{objet_source}}|_T{'',#ARRAY{force,''}}|?{
+		[(#SET{info_aucun,#VAL{#ENV{objet_source}:info_#ENV{objet}_aucun_#ENV{objet_source}}})]
+	,
+		[(#SET{info_aucun,info_aucun_auteur})]
+	})]
+})]<strong class="caption">[(#ENV*{titre,#GET{info_aucun}|_T}) ]#AIDER{#GET{cle_aide}}</strong>
 </div>
 <//B_liste_aut>
-- 
GitLab


From 8b837641075b3a37f198c3c958a955f40a6fd712 Mon Sep 17 00:00:00 2001
From: thrax <vincent.callies@gmail.com>
Date: Sat, 23 Nov 2024 18:54:58 +0100
Subject: [PATCH 2/6] add: filtre pour une gestion optimale des item
 info_aucun_1_nb

---
 objets/liste/auteurs_lies.html          | 15 ++-------
 objets/liste/auteurs_lies_fonctions.php | 42 +++++++++++++++++++++++++
 2 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/objets/liste/auteurs_lies.html b/objets/liste/auteurs_lies.html
index cf225cf7db..c349afaa37 100644
--- a/objets/liste/auteurs_lies.html
+++ b/objets/liste/auteurs_lies.html
@@ -58,7 +58,7 @@ a mis a jour la valeur avec la page reelle]
 		[(#SET{info_nb,info_nb_auteurs})]
 	})]
 })]
-[<caption><strong class="caption">(#ENV*{titre,#TOTAL_BOUCLE|singulier_ou_pluriel{#GET{info_1}|sinon{#VAL{#ENV{objet_source}:info_1_#ENV{objet_source}}},#GET{info_nb}|sinon{#VAL{#ENV{objet_source}:info_nb_#ENV{table_source}}}}})#AIDER{#GET{cle_aide}}</strong></caption>]
+[<caption><strong class="caption">(#ENV*{titre,#TOTAL_BOUCLE|info_association{#ENV{objet_source},#ENV{objet}}})#AIDER{#GET{cle_aide}}</strong></caption>]
 	<thead>
 		#SET{p,''}
 		<BOUCLE_lettre(AUTEURS){tout}{id_auteur IN #GET{selection}}{where?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{id_auteur==#GET{afficher_lettres}|?{'.*','A'}}>[
@@ -103,16 +103,7 @@ a mis a jour la valeur avec la page reelle]
 [(#GRAND_TOTAL|>{3}|oui)<div class="action"><button type="submit" class="supprimer btn_link btn_mini" name="supprimer_lien\[auteur-*-#OBJET-#ID_OBJET\]" value="X"><:lien_retirer_tous_auteurs:>[ (#CHEMIN_IMAGE{supprimer-12.svg}|balise_img)]</button></div>]
 </div>
 </B_liste_aut>
-<div class="liste-objets liste-objets-lies auteurs caption-wrap">
 [(#REM) <!-- Permettre de personnaliser l'item `info_aucun_auteur` -->]
-[(#ENV{info_aucun}|?{
-	[(#SET{info_aucun,#ENV{info_aucun}})]
-,
-	[(#VAL{#ENV{objet_source}:info_#ENV{objet}_aucun_#ENV{objet_source}}|_T{'',#ARRAY{force,''}}|?{
-		[(#SET{info_aucun,#VAL{#ENV{objet_source}:info_#ENV{objet}_aucun_#ENV{objet_source}}})]
-	,
-		[(#SET{info_aucun,info_aucun_auteur})]
-	})]
-})]<strong class="caption">[(#ENV*{titre,#GET{info_aucun}|_T}) ]#AIDER{#GET{cle_aide}}</strong>
-</div>
+<strong class="caption">(#ENV*{titre,#VAL{0}|info_association{#ENV{objet_source},#ENV{objet}}}) #AIDER{#GET{cle_aide}}</strong>
+</div>]
 <//B_liste_aut>
diff --git a/objets/liste/auteurs_lies_fonctions.php b/objets/liste/auteurs_lies_fonctions.php
index c9c3d3a031..0ecbad9d50 100644
--- a/objets/liste/auteurs_lies_fonctions.php
+++ b/objets/liste/auteurs_lies_fonctions.php
@@ -12,5 +12,47 @@
 if (!defined('_ECRIRE_INC_VERSION')) {
 	return;
 }
+/**
+ * Filtre automatisant la présentation du nombre d'association d'un objet.
+ * Tient compte de l'objet lié et de l'objet associé
+ * pour rechercher un item de langue normalisé pertinent.
+ *
+ * @param int $nb : le nombre
+ * @param string $objet_source : l'objet associé
+ * @param string $objet : l'objet lié
+ * @param string $role : role
+ * @return string : la chaine de langue finale en utilisant la fonction _T()
+ */
+function info_association($nb, $objet_source, $objet, $role = '') {
+	switch ($nb) {
+		case 0:
+			$chaine_aucun = "{$objet_source}:info_{$objet}{$role}_aucun_{$objet_source}";
+			$info_aucun = _T($chaine_aucun, '', ['force' => '']);
+			if (!strlen($info_aucun) && in_array($objet, ['article','auteur'])) {
+				$info_aucun = _T("info_aucun_{$objet_source}");
+			}
+			return $info_aucun;
+		break;
+		case 1:
+			$chaine_un = "{$objet_source}:info_{$objet}{$role}_1_{$objet_source}";
+			$info_1 = _T($chaine_un, '', ['force' => '']);
+			if (!strlen($info_1) && in_array($objet, ['article','auteur'])) {
+				$info_1 = _T("info_1_{$objet_source}");
+			}
+			return $info_1;
+		break;
+		case $nb >= 2:
+			include_spip('base/objets');
+			$table_source = table_objet($objet_source);
+			$chaine_plusieurs = "{$objet_source}:info_{$objet}{$role}_nb_{$table_source}";
+			$info_nb = _T($chaine_plusieurs, ['nb' => $nb], ['force' => '']);
+			if (!strlen($info_nb) && in_array($objet, ['article','auteur'])) {
+				$info_nb = _T("info_nb_{$objet_source}", ['nb' => $nb]);
+			}
+			return $info_nb;
+		break;
+	}
+	return '';
+}
 
 include_spip('prive/objets/liste/auteurs_fonctions');
-- 
GitLab


From d80cf5cc4a5b24d95bd8a062a803bdd2e90355d9 Mon Sep 17 00:00:00 2001
From: thrax <vincent.callies@gmail.com>
Date: Tue, 26 Nov 2024 20:44:14 +0100
Subject: [PATCH 3/6] =?UTF-8?q?refactor:=20fonction=20de=20cr=C3=A9ation?=
 =?UTF-8?q?=20d'item=20de=20langue=20add:=20fonction=20de=20cr=C3=A9ation?=
 =?UTF-8?q?=20d'item=20d'aide?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 objets/liste/auteurs_lies.html          | 33 +++----------------------
 objets/liste/auteurs_lies_fonctions.php | 21 +++++++++++++++-
 2 files changed, 23 insertions(+), 31 deletions(-)

diff --git a/objets/liste/auteurs_lies.html b/objets/liste/auteurs_lies.html
index c349afaa37..3a2dae300e 100644
--- a/objets/liste/auteurs_lies.html
+++ b/objets/liste/auteurs_lies.html
@@ -20,15 +20,7 @@
 #SET{selection,#ENV{objet_source}|lister_objets_lies{#ENV{objet},#ENV{id_objet},#ENV{_objet_lien}}}
 #SET{debut,#ENV{debutautl,#EVAL{_request("debutautl");}}}
 [(#REM) <!-- Permettre de personnaliser l'aide -->]
-[(#ENV{cle_aide}|?{
-	#SET{cle_aide,#ENV{cle_aide}}
-,
-	[(#ENV{objet}|=={article}|oui|et{#ENV{table_source}|=={auteurs}|oui}|?{
-		[(#SET{cle_aide,#ENV{objet}|substr{0,3}|concat{#ENV{table_source}}})]
-	,
-		[(#SET{cle_aide,#ENV{objet}|concat{#ENV{table_source}}})]
-	})]
-})]
+[(#SET{cle_aide,#ENV{cle_aide}|sinon{#VAL|constuire_cle_aide{#ENV{objet},#ENV{table_source}}}})]
 <input type="hidden" name="debutautl" value="#GET{debut}">
 <B_liste_aut>
 [(#REM) En cas de pagination indirecte @32, il faut refaire le set car la boucle
@@ -39,26 +31,7 @@ a mis a jour la valeur avec la page reelle]
 <div class="liste-objets liste-objets-lies auteurs">
 <table class='spip liste'>
 [(#REM) <!-- Permettre de personnaliser les items `info_1_auteur` et `info_nb_auteur` -->]
-[(#ENV{info_1}|?{
-	[(#SET{info_1,#ENV{info_1}})]
-,
-	[(#REM) <!-- personnalisation selon l'objet auquel est lié l'auteur -->]
-	[(#VAL{#ENV{objet_source}:info_#ENV{objet}_1_#ENV{objet_source}}|_T{'',#ARRAY{force,''}}|?{
-		[(#SET{info_1,#VAL{#ENV{objet_source}:info_#ENV{objet}_1_#ENV{objet_source}}})]
-	,
-		[(#SET{info_1,info_1_auteur})]
-	})]
-})]
-[(#ENV{info_nb}|?{
-	[(#SET{info_nb,#ENV{info_nb}})]
-,
-	[(#VAL{#ENV{objet_source}:info_#ENV{objet}_nb_#ENV{table_source}}|_T{#TOTAL_BOUCLE,#ARRAY{force,''}}|?{
-		[(#SET{info_nb,#VAL{#ENV{objet_source}:info_#ENV{objet}_nb_#ENV{table_source}}})]
-	,
-		[(#SET{info_nb,info_nb_auteurs})]
-	})]
-})]
-[<caption><strong class="caption">(#ENV*{titre,#TOTAL_BOUCLE|info_association{#ENV{objet_source},#ENV{objet}}})#AIDER{#GET{cle_aide}}</strong></caption>]
+[<caption><strong class="caption">(#ENV*{titre,#TOTAL_BOUCLE|info_nombre_association_objet{#ENV{objet_source},#ENV{objet}}})#AIDER{#GET{cle_aide}}</strong></caption>]
 	<thead>
 		#SET{p,''}
 		<BOUCLE_lettre(AUTEURS){tout}{id_auteur IN #GET{selection}}{where?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{id_auteur==#GET{afficher_lettres}|?{'.*','A'}}>[
@@ -104,6 +77,6 @@ a mis a jour la valeur avec la page reelle]
 </div>
 </B_liste_aut>
 [(#REM) <!-- Permettre de personnaliser l'item `info_aucun_auteur` -->]
-<strong class="caption">(#ENV*{titre,#VAL{0}|info_association{#ENV{objet_source},#ENV{objet}}}) #AIDER{#GET{cle_aide}}</strong>
+<strong class="caption">(#ENV*{titre,#VAL{0}|info_nombre_association_objet{#ENV{objet_source},#ENV{objet}}}) #AIDER{#GET{cle_aide}}</strong>
 </div>]
 <//B_liste_aut>
diff --git a/objets/liste/auteurs_lies_fonctions.php b/objets/liste/auteurs_lies_fonctions.php
index 0ecbad9d50..e6c09dfe77 100644
--- a/objets/liste/auteurs_lies_fonctions.php
+++ b/objets/liste/auteurs_lies_fonctions.php
@@ -23,7 +23,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
  * @param string $role : role
  * @return string : la chaine de langue finale en utilisant la fonction _T()
  */
-function info_association($nb, $objet_source, $objet, $role = '') {
+function info_nombre_association_objet(int $nb, string $objet_source, string $objet, string $role = ''): string {
 	switch ($nb) {
 		case 0:
 			$chaine_aucun = "{$objet_source}:info_{$objet}{$role}_aucun_{$objet_source}";
@@ -55,4 +55,23 @@ function info_association($nb, $objet_source, $objet, $role = '') {
 	return '';
 }
 
+/**
+ * Filtre créant l'item d'appel de l'aide.
+ *
+ * @link: https://contrib.spip.net/Creer-une-aide-en-ligne-pour-un-plugin
+ *
+ * @param string $objet_source : l'objet associé
+ * @param string $objet : l'objet lié
+ * @param string $role : role
+ * @return string : la chaine constitutive de l'appel à l'aide de SPIP
+ */
+function constuire_cle_aide(string $objet_source, string $objet, string $role = ''): string {
+	// gestion du cas historique
+	if ($objet === 'article' && $table_source === 'auteurs' && $role === ''){
+		return 'artauteurs';
+	} else {
+		return $objet . $role . $objet_source;
+	}
+}
+
 include_spip('prive/objets/liste/auteurs_fonctions');
-- 
GitLab


From d1979ea2f1760015518870de018baeb14d5d84ca Mon Sep 17 00:00:00 2001
From: thrax <vincent.callies@gmail.com>
Date: Tue, 26 Nov 2024 21:45:12 +0100
Subject: [PATCH 4/6] add: variante tcharlss en idiome et respectant
 chaine_titre_singulier et pluriel

---
 objets/liste/auteurs_lies.html          |  4 ++--
 objets/liste/auteurs_lies_fonctions.php | 21 +++++++++++----------
 2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/objets/liste/auteurs_lies.html b/objets/liste/auteurs_lies.html
index 3a2dae300e..5c2fea3290 100644
--- a/objets/liste/auteurs_lies.html
+++ b/objets/liste/auteurs_lies.html
@@ -31,7 +31,7 @@ a mis a jour la valeur avec la page reelle]
 <div class="liste-objets liste-objets-lies auteurs">
 <table class='spip liste'>
 [(#REM) <!-- Permettre de personnaliser les items `info_1_auteur` et `info_nb_auteur` -->]
-[<caption><strong class="caption">(#ENV*{titre,#TOTAL_BOUCLE|info_nombre_association_objet{#ENV{objet_source},#ENV{objet}}})#AIDER{#GET{cle_aide}}</strong></caption>]
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{#ENV{chaine_titre_singulier,#VAL{1}|info_nombre_association_objet{#ENV{objet_source},#ENV{objet},#ENV{role,''}}},#ENV{chaine_titre_pluriel,#VAL{2}|info_nombre_association_objet{#ENV{objet_source},#ENV{objet},#ENV{role,''}}}}})#AIDER{#GET{cle_aide}}</strong></caption>]
 	<thead>
 		#SET{p,''}
 		<BOUCLE_lettre(AUTEURS){tout}{id_auteur IN #GET{selection}}{where?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{id_auteur==#GET{afficher_lettres}|?{'.*','A'}}>[
@@ -77,6 +77,6 @@ a mis a jour la valeur avec la page reelle]
 </div>
 </B_liste_aut>
 [(#REM) <!-- Permettre de personnaliser l'item `info_aucun_auteur` -->]
-<strong class="caption">(#ENV*{titre,#VAL{0}|info_nombre_association_objet{#ENV{objet_source},#ENV{objet}}}) #AIDER{#GET{cle_aide}}</strong>
+<strong class="caption">(#ENV*{sinon,#VAL{0}|info_nombre_association_objet{#ENV{objet_source},#ENV{objet},#ENV{role,''}}|_T}) #AIDER{#GET{cle_aide}}</strong>
 </div>]
 <//B_liste_aut>
diff --git a/objets/liste/auteurs_lies_fonctions.php b/objets/liste/auteurs_lies_fonctions.php
index e6c09dfe77..03de03d129 100644
--- a/objets/liste/auteurs_lies_fonctions.php
+++ b/objets/liste/auteurs_lies_fonctions.php
@@ -12,16 +12,17 @@
 if (!defined('_ECRIRE_INC_VERSION')) {
 	return;
 }
+
 /**
- * Filtre automatisant la présentation du nombre d'association d'un objet.
+ * Filtre créant un idiome de langue.
  * Tient compte de l'objet lié et de l'objet associé
- * pour rechercher un item de langue normalisé pertinent.
+ * pour rechercher un idiome de langue normalisé existant.
  *
  * @param int $nb : le nombre
  * @param string $objet_source : l'objet associé
  * @param string $objet : l'objet lié
- * @param string $role : role
- * @return string : la chaine de langue finale en utilisant la fonction _T()
+ * @param string $role : role (variable nullable)
+ * @return string : la chaine de langue finale 
  */
 function info_nombre_association_objet(int $nb, string $objet_source, string $objet, string $role = ''): string {
 	switch ($nb) {
@@ -29,17 +30,17 @@ function info_nombre_association_objet(int $nb, string $objet_source, string $ob
 			$chaine_aucun = "{$objet_source}:info_{$objet}{$role}_aucun_{$objet_source}";
 			$info_aucun = _T($chaine_aucun, '', ['force' => '']);
 			if (!strlen($info_aucun) && in_array($objet, ['article','auteur'])) {
-				$info_aucun = _T("info_aucun_{$objet_source}");
+				$chaine_aucun = "info_aucun_{$objet_source}";
 			}
-			return $info_aucun;
+			return $chaine_aucun;
 		break;
 		case 1:
 			$chaine_un = "{$objet_source}:info_{$objet}{$role}_1_{$objet_source}";
 			$info_1 = _T($chaine_un, '', ['force' => '']);
 			if (!strlen($info_1) && in_array($objet, ['article','auteur'])) {
-				$info_1 = _T("info_1_{$objet_source}");
+				$chaine_un = "info_1_{$objet_source}";
 			}
-			return $info_1;
+			return $chaine_un;
 		break;
 		case $nb >= 2:
 			include_spip('base/objets');
@@ -47,9 +48,9 @@ function info_nombre_association_objet(int $nb, string $objet_source, string $ob
 			$chaine_plusieurs = "{$objet_source}:info_{$objet}{$role}_nb_{$table_source}";
 			$info_nb = _T($chaine_plusieurs, ['nb' => $nb], ['force' => '']);
 			if (!strlen($info_nb) && in_array($objet, ['article','auteur'])) {
-				$info_nb = _T("info_nb_{$objet_source}", ['nb' => $nb]);
+				$chaine_plusieurs = "info_nb_{$objet_source}";
 			}
-			return $info_nb;
+			return $chaine_plusieurs;
 		break;
 	}
 	return '';
-- 
GitLab


From 3a72f339ac93ba23d28aea0284e133da49d3895b Mon Sep 17 00:00:00 2001
From: thrax <vincent.callies@gmail.com>
Date: Sat, 30 Nov 2024 09:48:30 +0100
Subject: [PATCH 5/6] fix: retrait par erreur de auteurs_voiremails doc:
 include plus haut et doc variables d'environnement

---
 objets/liste/auteurs_lies.html          | 12 +++++++-----
 objets/liste/auteurs_lies_fonctions.php |  6 +++---
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/objets/liste/auteurs_lies.html b/objets/liste/auteurs_lies.html
index 5c2fea3290..be72cbe851 100644
--- a/objets/liste/auteurs_lies.html
+++ b/objets/liste/auteurs_lies.html
@@ -3,7 +3,7 @@
 
     Le squelette permet de :
     - personnaliser l'aide     @param cle_aide
-    - personnaliser le titre   @param info_aucun,info_1,info_nb
+    - personnaliser le titre   @param chaine_titre_singulier,chaine_titre_pluriel,sinon
     Par défaut l'aide et le titre seront définis selon l'objet
     si les items de langue sont existants.
       @exemple OBJET:info_OBJET_aucun_auteur
@@ -16,7 +16,9 @@
 	multi nom,1,
 	site,1,
 	compteur_articles,-1
-}})]
+}})
+]
+#SET{auteurs_voiremails,#AUTORISER{auteurs_voiremails}}
 #SET{selection,#ENV{objet_source}|lister_objets_lies{#ENV{objet},#ENV{id_objet},#ENV{_objet_lien}}}
 #SET{debut,#ENV{debutautl,#EVAL{_request("debutautl");}}}
 [(#REM) <!-- Permettre de personnaliser l'aide -->]
@@ -27,6 +29,7 @@
 a mis a jour la valeur avec la page reelle]
 #SET{debut,#ENV{debutautl,#EVAL{_request("debutautl");}}}
 #SET{afficher_lettres,#TRI|=={'multi nom'}|oui}
+#SET{auteurs_voiremails,#AUTORISER{auteurs_voiremails}}
 #ANCRE_PAGINATION
 <div class="liste-objets liste-objets-lies auteurs">
 <table class='spip liste'>
@@ -50,18 +53,17 @@ a mis a jour la valeur avec la page reelle]
 		<tr class='first_row'>
 			<th class='statut' scope='col'>[(#TRI{statut,#CHEMIN_IMAGE{auteur-0minirezo-16.png}|balise_img{<:lien_trier_statut|attribut_html:>},ajax})]</th>
 			<th class='nom' scope='col' colspan='2'>[(#TRI{multi nom,<:info_nom:>,ajax})]</th>
-			<th class='email' scope='col'>[(#TRI{email,<:email:>,ajax})]</th>
+			[(#GET{auteurs_voiremails})<th class='email' scope='col'>[(#TRI{email,<:email:>,ajax})]</th>]
 			<th class='nombre' scope='col'>[(#TRI{compteur_articles,<:info_articles:>,ajax})]</th>
 			<th class='action' scope='col'>&nbsp;</th>
 		</tr>
 	</thead>
 	<tbody>
 	<BOUCLE_liste_aut(AUTEURS){tout}{id_auteur IN #GET{selection}}{where?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{pagination #ENV{nb,10} autl}{!compteur_articles_filtres #ENV*{filtre_statut_articles,poubelle}}>
-		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#NOM**|initiale|=={#ENV{i}}|?{on}|unique)][(#ID_AUTEUR|=={#ENV{id_lien_ajoute}}|oui)append]">
 			<td class='statut'>[(#STATUT|puce_statut{auteur})]</td>
 			<td class='nom[ (#NOM|non)vide]'[(#LOGO_AUTEUR|non)colspan='2']><a href="[(#ID_AUTEUR|generer_objet_url{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[<span class='rang'>(#RANG).</span> ][(#NOM|sinon{<:texte_vide:>})]</a></td>
 			[<td class='logo'><a href="[(#ID_AUTEUR|generer_objet_url{auteur})]" style="background-image:url\((#LOGO_AUTEUR|image_recadre_avec_fallback{40,40}|extraire_attribut{src}))"></a></td>]
-			<td class='email'>[<a href='mailto:(#EMAIL)'>[(#EMAIL|couper{30})]</a>]</td>
+			[(#GET{auteurs_voiremails})<td class='email'>[<a href='mailto:(#EMAIL)'>[(#EMAIL|couper{30})]</a>]</td>]
 			<td class='nombre'>[(#COMPTEUR_ARTICLES|singulier_ou_pluriel{info_1_article,info_nb_articles})][<br /><span>(#PIPELINE{'compter_contributions_auteur',#ARRAY{args,#ARRAY{id_auteur,#ID_AUTEUR},data,#ARRAY{}}}|implode{'<br />'})</span>]</td>
 			<td class='action'>
 				[(#ENV{editable}|oui)
diff --git a/objets/liste/auteurs_lies_fonctions.php b/objets/liste/auteurs_lies_fonctions.php
index 03de03d129..fd86b4a31c 100644
--- a/objets/liste/auteurs_lies_fonctions.php
+++ b/objets/liste/auteurs_lies_fonctions.php
@@ -13,6 +13,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 	return;
 }
 
+include_spip('prive/objets/liste/auteurs_fonctions');
+
 /**
  * Filtre créant un idiome de langue.
  * Tient compte de l'objet lié et de l'objet associé
@@ -73,6 +75,4 @@ function constuire_cle_aide(string $objet_source, string $objet, string $role =
 	} else {
 		return $objet . $role . $objet_source;
 	}
-}
-
-include_spip('prive/objets/liste/auteurs_fonctions');
+}
\ No newline at end of file
-- 
GitLab


From aebafba3f808be2d9191d113ff4b3942b50dbb9d Mon Sep 17 00:00:00 2001
From: thrax <vincent.callies@gmail.com>
Date: Sun, 1 Dec 2024 20:25:42 +0100
Subject: [PATCH 6/6] fix: retrait par erreur d'une ligne du tableau

---
 objets/liste/auteurs_lies.html | 1 +
 1 file changed, 1 insertion(+)

diff --git a/objets/liste/auteurs_lies.html b/objets/liste/auteurs_lies.html
index be72cbe851..b3e00e305b 100644
--- a/objets/liste/auteurs_lies.html
+++ b/objets/liste/auteurs_lies.html
@@ -60,6 +60,7 @@ a mis a jour la valeur avec la page reelle]
 	</thead>
 	<tbody>
 	<BOUCLE_liste_aut(AUTEURS){tout}{id_auteur IN #GET{selection}}{where?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{pagination #ENV{nb,10} autl}{!compteur_articles_filtres #ENV*{filtre_statut_articles,poubelle}}>
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#NOM**|initiale|=={#ENV{i}}|?{on}|unique)][(#ID_AUTEUR|=={#ENV{id_lien_ajoute}}|oui)append]">
 			<td class='statut'>[(#STATUT|puce_statut{auteur})]</td>
 			<td class='nom[ (#NOM|non)vide]'[(#LOGO_AUTEUR|non)colspan='2']><a href="[(#ID_AUTEUR|generer_objet_url{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[<span class='rang'>(#RANG).</span> ][(#NOM|sinon{<:texte_vide:>})]</a></td>
 			[<td class='logo'><a href="[(#ID_AUTEUR|generer_objet_url{auteur})]" style="background-image:url\((#LOGO_AUTEUR|image_recadre_avec_fallback{40,40}|extraire_attribut{src}))"></a></td>]
-- 
GitLab