From 6b8b3b2d20c09f8d2be368eeea06e8df7609fda7 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Sun, 20 Aug 2006 13:32:13 +0000
Subject: [PATCH] on remballe les choses bizarres necessaires pour faire de
 #LESAUTEURS un vrai modele -- c'est plus simple quand c'est moins complique

---
 dist/modeles/lesauteurs.html | 10 ++--------
 ecrire/public/assembler.php  |  2 +-
 ecrire/public/balises.php    | 31 +++++++++++++++++++++++++++++--
 ecrire/public/references.php |  7 ++++---
 4 files changed, 36 insertions(+), 14 deletions(-)

diff --git a/dist/modeles/lesauteurs.html b/dist/modeles/lesauteurs.html
index 0b30ac901f..b65703f9ad 100644
--- a/dist/modeles/lesauteurs.html
+++ b/dist/modeles/lesauteurs.html
@@ -1,13 +1,7 @@
 [(#REM)
 
-	Modele pour #LESAUTEURS :
-	* s'il s'agit d'un article normal, on boucle sur les auteurs de l'article
-	* s'il s'agit d'un article syndique, on affiche la valeur du champ,
-	  passee dans #ENV par le compilo, en la securisant avec safehtml.
-
+	Modele pour la balise # LESAUTEURS, dans le cas des auteurs d'un article
+	(pour un article syndique, la balise affiche directement la valeur du champ)
 ]
-
 <BOUCLE_auteurs(AUTEURS) {id_article} {par nom} {", "}>
 <a href="#URL_AUTEUR">#NOM</a></BOUCLE_auteurs>
-
-[(#ID_SYNDIC_ARTICLE|?{#ENV**{lesauteurs}|safehtml})]
diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php
index 801b3a1882..97889707bb 100644
--- a/ecrire/public/assembler.php
+++ b/ecrire/public/assembler.php
@@ -447,7 +447,7 @@ function inclure_modele($squelette, $type, $id) {
 
 	if ($class)
 		$contexte['class'] = $class;
-#print_r($contexte);
+
 	// Traiter les parametres
 	// par exemple : <img1|center>, <emb12|autostart=true> ou <doc1|lang=en>
 	$contexte = array_merge($contexte, 
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index 0287efc270..0e812b7bb1 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -423,8 +423,7 @@ function balise_EXPOSE_dist($p) {
 	return calculer_balise_expose($p, $on, $off);
 }
 
-// obsolete. utiliser la precedente
-
+// #EXPOSER est obsolete. utiliser #EXPOSE ci-dessus
 // http://doc.spip.org/@balise_EXPOSER_dist
 function balise_EXPOSER_dist($p)
 {
@@ -536,6 +535,34 @@ function balise_LANG_dist ($p) {
 	return $p;
 }
 
+
+// #LESAUTEURS
+// les auteurs d'un article (ou d'un article syndique)
+// http://www.spip.net/fr_article902.html
+// http://www.spip.net/fr_article911.html
+// http://doc.spip.org/@balise_LESAUTEURS_dist
+function balise_LESAUTEURS_dist ($p) {
+	// Cherche le champ 'lesauteurs' dans la pile
+	$_lesauteurs = champ_sql('lesauteurs', $p); 
+
+	// Si le champ n'existe pas (cas de spip_articles), on applique
+	// le modele lesauteurs.html en passant id_article dans le contexte;
+	// dans le cas contraire on prend le champ 'lesauteurs' (cas de
+	// spip_syndic_articles)
+	if ($_lesauteurs AND $_lesauteurs != '$Pile[0][\'lesauteurs\']') {
+		$p->code = "safehtml($_lesauteurs)";
+		// $p->interdire_scripts = true;
+	} else {
+		$p->code = "recuperer_fond(
+			'modeles/lesauteurs',
+			array('id_article' => ".champ_sql('id_article', $p)."))";
+		$p->interdire_scripts = false; // securite apposee par recuperer_fond()
+	}
+
+	return $p;
+}
+
+
 // #RANG
 // affiche le "numero de l'article" quand on l'a titre '1. Premier article';
 // ceci est transitoire afin de preparer une migration vers un vrai systeme de
diff --git a/ecrire/public/references.php b/ecrire/public/references.php
index ffc347f2f2..5b1295a7f0 100644
--- a/ecrire/public/references.php
+++ b/ecrire/public/references.php
@@ -253,7 +253,7 @@ function calculer_balise($nom, $p) {
 
 
 // fonction speciale d'appel a un modele modeles/truc.html pour la balise #TRUC
-// exemples : #LESAUTEURS, #TRADUCTIONS, #DOC, #IMG...
+// exemples : #TRADUCTIONS, #DOC, #IMG...
 // http://doc.spip.org/@calculer_balise_modele_dist
 function calculer_balise_modele_dist($p){
 	$nom = strtolower($p->nom_champ);
@@ -271,8 +271,9 @@ function calculer_balise_modele_dist($p){
 	$code_contexte = argumenter_inclure($champ, $p->descr, $p->boucles, $p->id_boucle, false);
 
 	// Si le champ existe dans la pile, on le met dans le contexte
-	// (exemple : #LESAUTEURS dans spip_syndic_articles)
-	$code_contexte[] = "'$nom='.".champ_sql($nom, $p);
+	// (a priori c'est du code mort ; il servait pour #LESAUTEURS dans
+	// le cas spip_syndic_articles)
+	#$code_contexte[] = "'$nom='.".champ_sql($nom, $p);
 
 	// Reserver la cle primaire de la boucle courante
 	if ($primary = $p->boucles[$p->id_boucle]->primary) {
-- 
GitLab