From e1c737cb30a35834803822cd72d5dbde8acab8f1 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Wed, 11 Oct 2006 12:11:16 +0000
Subject: [PATCH] pour tetue, deux filtres et une variable de personnalisation
 pour toujours paragrapher les textes propre(), meme s'ils n'ont qu'un bloc

---
 ecrire/inc/filtres.php | 10 ++++++----
 ecrire/inc/texte.php   | 17 ++++++++++++-----
 2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index ceff95301b..e800aa7721 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -798,14 +798,16 @@ function aligner($letexte, $justif='') {
 	$letexte = trim($letexte);
 	if (!strlen($letexte)) return '';
 
-	// Ajouter un paragraphe au debut, et reparagrapher proprement
-	$letexte = paragrapher(
-		str_replace('</p>', '', '<p>'.$letexte));
+	// Paragrapher proprement
+	$letexte = paragrapher($letexte, true);
 
 	// Inserer les alignements
-	return str_replace(
+	if ($justif)
+		$letexte = str_replace(
 		'<p class="spip">', '<p class="spip" align="'.$justif.'">',
 		$letexte);
+
+	return $letexte;
 }
 
 // http://doc.spip.org/@justifier
diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index c9bd1a136b..581ce06bb7 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -1072,11 +1072,17 @@ function traiter_modeles($texte, $doublons=false) {
 // des paragraphes indiques a la main dans le texte
 // (par ex: on ne modifie pas un <p align='center'>)
 //
+// deuxieme argument : forcer les <p> meme pour un seul paragraphe
+//
 // http://doc.spip.org/@paragrapher
-function paragrapher($letexte) {
-	if (!$letexte OR !strstr($letexte,'<')) return $letexte;
+function paragrapher($letexte, $forcer=true) {
+	$letexte = trim($letexte);
+	if (!strlen($letexte))
+		return '';
 
-	if (preg_match(',<p[>[:space:]],iS',$letexte)) {
+	if ($forcer OR (
+	strstr($letexte,'<') AND preg_match(',<p\b,iS',$letexte)
+	)) {
 
 		// Ajouter un espace aux <p> et un "STOP P"
 		// transformer aussi les </p> existants en <p>, nettoyes ensuite
@@ -1185,6 +1191,7 @@ function traiter_raccourcis($letexte) {
 			"http://@lang@.wikipedia.org/wiki/");
 		tester_variable('les_notes', '');
 		tester_variable('compt_note', 0);
+		tester_variable('toujours_paragrapher', false);
 	}
 
 	// Gestion de la <poesie>
@@ -1420,8 +1427,8 @@ function traiter_raccourcis($letexte) {
 	// Retablir les caracteres proteges
 	$letexte = strtr($letexte, $illegal, $protege);
 
-	// Fermer les paragraphes
-	$letexte = paragrapher($letexte);
+	// Fermer les paragraphes ; mais ne pas en creer si un seul
+	$letexte = paragrapher($letexte, $GLOBALS['toujours_paragrapher']);
 
 	// Appeler les fonctions de post-traitement
 	$letexte = pipeline('post_propre', $letexte);
-- 
GitLab