On Wed, 21 Jan 2009 10:35:40 +0200, Martinus <mr@mrit.com> wrote:
Est-ce qu'il y a quelque chose qui a changé dans ce domaine ?
Comment est générée la liste des styles invoqués dans les pages **privées** ? Est-ce que l'on peut ou l'on doit s'en préoccuper ?
Les styles privés sont générés par un truc du genre
<link rel="stylesheet" type="text/css" href="#URL_PAGE{style_prive_defaut.css}" />
[(#REM) en fait c'est un peu plus compliqué, parce que certains styles viennent de fichiers statiques bidule.css, d'autres sont définis de façon dynamique par spip.php?page=truc.html, ce qui permet de changer les styles en fonction de choix utilisateur comme la couleur ou la taille]
Or, la fonction qui est derière #URL_PAGE cherche un fichier donné (ici, style_prive.css), DANS L'ORDRE, dans les dossiers suivants:
- squelettes
- plugins
- dist
- prive
C'est un ordre qui est logique puisque ça permet aux fichiers personnalisés (dans /squeletes) d'être utilisé de préférence à ceux de la dist, et ce n'est que si on ne trouve pas le fichier en question qu'on se rabat sur les fichiers par défaut. Si c'était fait autrement on ne pourrait pas utiliser de squelette perso sans effacer la dist, par exemple. C'est aussi logique d'utiliser la même fonction dans l'espace privé et les squelettes, ça économise du code pour des fonctions qui font la même chose.
Dans les versions 1.9.x, les fichiers de style "privés" étaient rangés dans la dist. Dans 2.0, ils sont passés dans /prive; le changement vient je supose d'une volonté de crifier et de séparer ce qui est public (/squelettes-dist) de ce qui est privé (/prive), au lieu de tout mettre en vrac dans /dist.
Le problème se pose quand on utilise des squelettes crées avec 1.9.x. Le plus souvent, on a construit son squelette en commençant par copier TOUT le contenu de /dist dans /squelettes et en travaillant à partir de là, en changeant un bout ici, un bout ailleurs. TOUT le contenu, ça inclut par conséquent les fichiers de style privés, qui étaient dans la dist et qui ont été copiés dans les squelettes !
Si on installe un 2.0, évidemment on garde ses squelettes. Y compris ces "scories", les fichiers de style privé de 1.9.x, qu'on a copié sans y penser. Sous 1.9 ça ne tirait pas à conséquence (les fichiers de /squelettes éatient utilisés, mais comme ce sont les même que ceux de /dist, pas de problème). Mais sous 2.0, les styles ont chnagé pour des raisons je suppose de modification de l'interface, de simplification du html, de fonctionnalités ajax ou que sais-je encore (c'est peut être dommage de leur avoir laissé le même nom, du coup !). Bref, utiliser les fichiers de style privé 1.9.x donne des catastrophes : si on utilise les mêmes squelettes, #URL_PAGE cherche dans l'ordre indiqué plus haut; et tombe sur les fichiers de style de squelette AVANT de voir ceux de /prive. Ce sont donc des fichiers erronés qui sont appliqués. CQFD.
([#REM) Incidemment, ça veut dire qu'on peut modifier le style de son interface privé en copiant dans /squelettes les fichiers de style en question, et en les modifiant selon ses goûts]
A ma connaissance, la partie privé appelle les fichiers suivants :
/prive/style_prive_defaut.css
/prive/style_prive.html [(#REM) interprété par spip et appelé par /spip.php?page=style_prive ]
éventuellement, /prive/style_prive_ie.html
/prive/spip_style.css
/prive/spip_style_print.css
et j'en oublie peut être.
Tout fichier portant un de ces noms qui se trouverait dans le dosier /squelettes (dans /plugins aussi d'ailleurs !) sera interprété AVANT le fichier légitime.
Evidemment, après avoir fait ça il faut nettoyer le cache de spip (vérifier qu'il ne reste rien dans /local/cache-css/ ) ET celui du navigateur. Ca m'a pris 3-4 ssais avant d'avoir réussi à tout nettoyer...
JF
--
Using Opera's revolutionary e-mail client: Opera Web Browser | Faster, Safer, Smarter | Opera