From 1069cb5969ed23284f851f05c85b30d232e2a572 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Wed, 20 May 2009 08:52:31 +0000
Subject: [PATCH] =?UTF-8?q?Suite=20de=20[14014]:=20=20le=20mod=C3=A8le=20{?=
 =?UTF-8?q?{{<text.html>}}}=20demande=20=C3=A0=20la=20fonction=20{{{conten?=
 =?UTF-8?q?u=5Fdocument}}}=20de=20deviner=20le=20charset=20si=20l'utilisat?=
 =?UTF-8?q?eur=20ne=20l'indique=20pas.=20Quand=20ce=20n'est=20pas=20de=20l?=
 =?UTF-8?q?'utf-8,=20cette=20fonction=20prend=20la=20valeur=20de=20la=20co?=
 =?UTF-8?q?nstante=20{{{CHARSET=5FJOINT}}},=20qui=20vaut=20{{{iso-8859-1>}?=
 =?UTF-8?q?}}=20en=20standard=20mais=20peut=20=C3=AAtre=20d=C3=A9finie=20d?=
 =?UTF-8?q?ans=20mes=5Foptions=20(C=C3=A9dric).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc/documents.php | 15 ++++++++++++---
 prive/modeles/text.html  |  2 +-
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index b417b83230..68f2474ad2 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -44,7 +44,12 @@ function get_spip_doc($fichier) {
 	return $fichier;
 }
 
-// Filtre pour #FICHIER
+// Constante indiquant le charset probable des documents non utf-8 joints
+
+@define('CHARSET_JOINT', 'iso-8859-1');
+
+// Filtre pour #FICHIER permettant d'incruster le contenu d'un document
+// Si 2e arg fourni, conversion dans le charset du site si possible
 
 // http://doc.spip.org/@contenu_document
 function contenu_document($arg, $charset='')
@@ -64,9 +69,13 @@ function contenu_document($arg, $charset='')
 	}
 
 	$r = spip_file_get_contents($f);
+	
 	if ($charset) {
-	  include_spip('inc/charset');
-	  $r = importer_charset($r, $charset);
+		include_spip('inc/charset');
+		if ($charset !== 'auto') {
+			$r = importer_charset($r, $charset);
+		} elseif ($GLOBALS['meta']['charset'] == 'utf-8' AND !is_utf8($r))
+			$r = importer_charset($r, CHARSET_JOINT);
 	}
 	return $r;
 }
diff --git a/prive/modeles/text.html b/prive/modeles/text.html
index 0b3e5914d4..192e022ead 100644
--- a/prive/modeles/text.html
+++ b/prive/modeles/text.html
@@ -1,3 +1,3 @@
 <BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout}
-	>[(#FICHIER|contenu_document{#ENV{charset}}|appliquer_filtre{#MIME_TYPE,filtre_text_txt_dist}
+	>[(#FICHIER|contenu_document{#ENV{charset,auto}}|appliquer_filtre{#MIME_TYPE,filtre_text_txt_dist}
 )]</BOUCLE_tous>
-- 
GitLab