[spip-dev] ecrire/spip_style.php3

Bonjour,

J'ai regardé un peu les fichiers css de SPIP,
sous l'angle de la validation.

En utilisant le controleur du w3c :
http://www.w3.org/
http://jigsaw.w3.org/css-validator/
http://jigsaw.w3.org/css-validator/validator-uri

sur les fichiers
impression.css
spip_style.css
typographie.css
ecrire/spip_style.php3
ecrire/spip_style_invisible.css
ecrire/spip_style_visible.css

Les documents
http://www.spip.net/impression.css
http://www.spip.net/spip_style.css
http://www.spip.net/typographie.css
http://www.spip.net/ecrire/spip_style_invisible.css
http://www.spip.net/ecrire/spip_style_visible.css
sont entièrement validés pour CSS 2,
mais pas en CSS 1, pour qui le souligné (« _ ») n'est pas autorisé dans les noms de classes
et pour des propriétés absentes

http://www.spip.net/ecrire/spip_style.php3 n'est pas validé.
Nombreuses erreurs.
Le truc a même l'air de perdre les pédale
(c'est encore une version béta).

Un examen de http://www.spip.net/ecrire/spip_style.php3
montre qu'il y a tout de même des problèmes dans le code.

Je propose les modifications suivantes de ecrire/spip_style.php3 :
-mettre l'envoi des en-têtes et le test « if ($headers_only) exit; » au début
-tester l'existence des variables, par if(isset, avant leur valeur
Ce qui aboutirai en gros à ce qui suit, pour le début :

<?php
  include("inc_version.php3");

  // En-tetes
  $lastmodified = @filemtime("spip_style.php3");
  $headers_only = http_last_modified($lastmodified, time() + 24 * 3600);
  @Header ("Content-Type: text/css");

  if ($headers_only) exit;
  // Envoyer la feuille de style

  if (isset($left))
  {
    if ($left == 'right')
    {
      $right = "left";
      $_rtl = "_rtl";
    }
    else
    {
      $left = "left";
      $right = "right";
      $_rtl = "";
    }
  }
  else
  {
    $left = "left";
    $right = "right";
    $_rtl = "";
  }

N'importe quoi.

ARNO*