changeset 35:e776701841ba

Gestion plus flexible des content-type Cela permet notamment de gérer correctement le cas de Atom. Ca ne devrait toutefois probablement pas rester comme ça longtemps, il est plus que probable que le content-type passe lui aussi en paramètre de configuration dans les templates.
author Franck Deroche <webmaster@defr.org>
date Mon, 05 Nov 2007 09:56:44 +0100
parents efba519d2d32
children a6c3716cab6a
files includes/class.skeleton.php
diffstat 1 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/includes/class.skeleton.php	Mon Nov 05 09:43:24 2007 +0100
+++ b/includes/class.skeleton.php	Mon Nov 05 09:56:44 2007 +0100
@@ -217,13 +217,24 @@
   public function __toString() {
     $this->prepareOutput();
     $returnValue = parent::__toString();
-    if($this->useXML)
-      header('Content-Type: application/xhtml+xml; charset=utf-8');
-    else
+    $this->setContentTypeHeader();
+    // L'ajout d'un preambule XML fait sortir IE de son mode de
+    // respect des standards
+    if(!$this->useXML)
       $returnValue = ereg_replace('<\?xml[^\?]*\?>', '', $returnValue);
     return $returnValue;
   }
 
+  private function setContentTypeHeader() {
+    $contentType = null;
+    if(Skeleton::getOutputType() == Skeleton::OUTPUT_ATOM)
+        $contentType = 'application/atom+xml';
+    else if($this->useXML && Skeleton::getOutputType == Skeleton::OUTPUT_XHTML)
+        $contentType = 'application/xhtml+xml; charset=utf-8';
+    if(!is_null($contentType))
+        header('Content-Type: ' . $contentType);
+  }
+
   public static function getTemplateFile($type) {
     if(count(Skeleton::$templates) == 0) {
       // Construction du tableau des différents templates