From d1ac35de9b07f907e3555cfb2341b847200a3bce Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Sat, 22 Sep 2007 07:24:45 +0000
Subject: [PATCH] resoud tous les bugs de puce : #1100 sur la puce orange dans
 le prive et noire dans le public bugs signales par Paolo de la puce qui ne
 marchait pas en debut de paragraphe

avec un peu de chance n'introduit pas de nouveaux bugs :p
---
 ecrire/inc/texte.php | 52 ++++++++++++++++----------------------------
 1 file changed, 19 insertions(+), 33 deletions(-)

diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index c6c7e94a83..86e9e07a21 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -38,8 +38,7 @@ function tester_variable($var, $val){
 // Retourne aussi un double tableau raccourci / texte-clair les utilisant.
 
 // http://doc.spip.org/@traiter_variables_sales
-function traiter_variables_sales()
-{
+function traiter_variables_sales() {
 	global $class_spip, $class_spip_plus;
 // class_spip : savoir si on veut class="spip" sur p i strong & li
 // class_spip_plus : class="spip" sur les ul ol h3 hr quote table...
@@ -51,6 +50,7 @@ function traiter_variables_sales()
 	return array(array(
 		/* 0 */ 	"/\n(----+|____+)/S",
 		/* 1 */ 	"/\n-- */S",
+		/* 2 */ 	"/\n- */S",  /* DOIT rester a cette position */
 		/* 3 */ 	"/\n_ +/S",
 		/* 4 */   "/(^|[^{])[{][{][{]/S",
 		/* 5 */   "/[}][}][}]($|[^}])/S",
@@ -68,6 +68,7 @@ function traiter_variables_sales()
 		     array(
 		/* 0 */ 	"\n\n" . tester_variable('ligne_horizontale', "\n<hr$class_spip_plus />\n") . "\n\n",
 		/* 1 */ 	"\n<br />&mdash;&nbsp;",
+		/* 2 */ 	"\n<br />".definir_puce()."&nbsp;",
 		/* 3 */ 	"\n<br />",
 		/* 4 */ 	"\$1\n\n" . tester_variable('debut_intertitre', "\n<h3$class_spip_plus>"),
 		/* 5 */ 	tester_variable('fin_intertitre', "</h3>\n") ."\n\n\$1",
@@ -86,31 +87,27 @@ function traiter_variables_sales()
 }
 
 // On initialise la puce pour eviter find_in_path() a chaque rencontre de \n-
+// Mais attention elle depend de la direction et de X_fonctions.php, ainsi que
+// de l'espace choisi (public/prive)
 // http://doc.spip.org/@definir_puce
 function definir_puce() {
-	static $les_puces = array();
 
 	// Attention au sens, qui n'est pas defini de la meme facon dans
 	// l'espace prive (spip_lang est la langue de l'interface, lang_dir
 	// celle du texte) et public (spip_lang est la langue du texte)
-
 	$dir = _DIR_RESTREINT ? lang_dir() : lang_dir($GLOBALS['spip_lang']);
-	$p = ($dir == 'rtl') ? 'puce_rtl' : 'puce';
-
-	if (!isset($les_puces[$p])) {
-		tester_variable($p, 'AUTO');
-		if ($GLOBALS[$p] == 'AUTO') {
-			$img = find_in_path($p.'.gif');
-			list(,,,$size) = @getimagesize($img);
-			$img = '<img src="'.$img.'" '
-				.$size.' alt="-" />';
-		} else
-			$img = $GLOBALS[$p];
-
-		$les_puces[$p] = $img;
-	}
 
-	return $les_puces[$p];
+	$p = 'puce' . (test_espace_prive() ? '_prive' : '');
+	if ($dir == 'rtl') $p .= '_rtl';
+
+	tester_variable($p, 'AUTO');
+	if ($GLOBALS[$p] == 'AUTO') {
+		$img = find_in_path($p.'.gif');
+		list(,,,$size) = @getimagesize($img);
+		$GLOBALS[$p] = '<img src="'.$img.'" '
+			.$size.' alt="-" />';
+	}
+	return $GLOBALS[$p];
 }
 
 //
@@ -1307,8 +1304,6 @@ function traiter_poesie($letexte)
 // http://doc.spip.org/@traiter_raccourcis
 function traiter_raccourcis($letexte) {
 
-	static $remplace = NULL;
-
 	// Appeler les fonctions de pre_traitement
 	$letexte = pipeline('pre_propre', $letexte);
 
@@ -1329,16 +1324,7 @@ function traiter_raccourcis($letexte) {
 
 	// A present on introduit des attributs class_spip*
 	// Init de leur valeur et connexes au premier appel
-	if (!$remplace)
-		$remplace = traiter_variables_sales();
-
-	// La puce depend de la direction, on ne peut pas la definir static
-	$r = $remplace;
-	if (strpos("\n".$letexte, "\n-") !== false) {
-		$r[0][] = /* 2 */ 	"/\n- */S";
-		$r[1][] = /* 2 */ 	"\n<br />".definir_puce()."&nbsp;";
-	}
-
+	$remplace = traiter_variables_sales();
 
 	//
 	// Tableaux
@@ -1376,8 +1362,8 @@ function traiter_raccourcis($letexte) {
 	}
 
 	// autres raccourcis
-	$letexte = preg_replace($r[0], $r[1], $letexte);
-	$letexte = preg_replace("@^ <br />@S", "", $letexte);
+	$letexte = preg_replace($remplace[0], $remplace[1], $letexte);
+	$letexte = preg_replace('@^\n<br />@S', '', $letexte);
 
 	// Retablir les caracteres proteges
 	$letexte = strtr($letexte, $illegal, $protege);
-- 
GitLab