[SPIP Zone] #CHEMIN, quelques éclaircissements

Salut à tous,

J'utilise sur une feuille de style dynamique l'expression suivante :

#bla h2 {
   padding-left: 30px;
   background: url(#CHEMIN{#EVAL{_DIR_IMG_PACK}|concat{annonce-24.gif}}) no-repeat center left;
}

... qui va chercher l'image 'annonce-24.gif' dans le répertoire '/prive/images' du site. Ceci fonctionne bien.

Par contre, je ne parviens pas à aller chercher une image dans le répertoire 'plugins/auto/plugin_truc/img_pack'. J'avais cru comprendre que la balise #CHEMIN pouvait chercher partout... mais ni l'expression ci-dessus, ni ceci :

#bla h2 {
   padding-left: 30px;
   background: url(#CHEMIN{img_pack/annonce-24.gif}) no-repeat center left;
}

ou plus restrictivement :

#bla h2 {
   padding-left: 30px;
   background: url(#CHEMIN{#EVAL{_DIR_PLUGIN_TRUC}|concat{img_pack/annonce-24.gif}}) no-repeat center left;
}

... ne fonctionnent.

Je ne vois pas ou je fais une erreur de raisonnement... pour info (si ça peut servir) la feuille de style en question se trouve dans le répertoire 'plugins/auto/plugin_truc/prive'

Merci pour votre aide !

Jonathan

Hello,

Le 18 novembre 2009 15:40, Jonathan <jo.chibois@gmail.com> a écrit :

Salut à tous,

J'utilise sur une feuille de style dynamique l'expression suivante :

#bla h2 {
padding-left: 30px;
background: url(#CHEMIN{#EVAL{_DIR_IMG_PACK}|concat{annonce-24.gif}})
no-repeat center left;
}

pas besoin de #CHEMIN dans ce cas, puisque tu spécifie un répertoire !

... qui va chercher l'image 'annonce-24.gif' dans le répertoire
'/prive/images' du site. Ceci fonctionne bien.

Par contre, je ne parviens pas à aller chercher une image dans le répertoire
'plugins/auto/plugin_truc/img_pack'. J'avais cru comprendre que la balise
#CHEMIN pouvait chercher partout...

#CHEMIN regarde dans le dossier squelette, puis dans tous les
répertoires des plugins, puis dans ecrire, puis à la racine de SPIP,
puis dans squelettes-dist/
pour voir si ton fichier y est.

mais ni l'expression ci-dessus, ni ceci

:

#bla h2 {
padding-left: 30px;
background: url(#CHEMIN{img_pack/annonce-24.gif}) no-repeat center left;

Je ne vois aucune raison pour que cela ne marche pas, si le fichier est bien là.
Que retourne l'expression ?

}

ou plus restrictivement :

#bla h2 {
padding-left: 30px;
background:
url(#CHEMIN{#EVAL{_DIR_PLUGIN_TRUC}|concat{img_pack/annonce-24.gif}})

Dans ce cas, pas besoin de #CHEMIN puisque tu indique le chemin explicitement.
Mais ça empêchera la personnalisation par l'utilisateur dans son
dossier squelette

Cédric

#bla h2 {
padding-left: 30px;
background: url(#CHEMIN{img_pack/annonce-24.gif}) no-repeat center left;

Je ne vois aucune raison pour que cela ne marche pas, si le fichier est bien là.
Que retourne l'expression ?

Salut.

Peut être à tester
url([(#CHEMIN{img_pack/annonce-24.gif})])

?

background: url(#CHEMIN{#EVAL{_DIR_IMG_PACK}|concat{annonce-24.gif}})

pas besoin de #CHEMIN dans ce cas, puisque tu spécifie un répertoire !

En effet,
background: url([(#EVAL{_DIR_IMG_PACK}|concat{annonce-24.gif})])
fonctionne bien.

background: url(#CHEMIN{img_pack/annonce-24.gif})

Je ne vois aucune raison pour que cela ne marche pas, si le fichier est bien là.
Que retourne l'expression ?

Justement, cela ne retourne rien du tout. La propriété est complètement absente à la sortie, d'après ce que je vois sur Firebug. Seule le padding est gardé.

url(#CHEMIN{#EVAL{_DIR_PLUGIN_TRUC}|concat{img_pack/annonce-24.gif}})

Dans ce cas, pas besoin de #CHEMIN puisque tu indique le chemin explicitement.

Eh bien, ceci
background: url([(#EVAL{_DIR_PLUGIN_TRUC}|concat{img_pack/annonce-24.gif})])

ne donne rien du tout non plus.

En fait, en résumé, dès que je place la chaine suivante 'img_pack' dans la balise #CHEMIN ou #EVAL la propriété 'background' est completement squizzée...

Peut être à tester
url([(#CHEMIN{img_pack/annonce-24.gif})])

Eh bien, non plus. Même réponse que pour Cédric... dès que la chaine 'img_pack' est placée dans la balise #CHEMIN la propriété est complétement ignorée...

Peut être à cause de la parenthèse ouvrante/fermante qui englobe #CHEMIN ?

Est-ce qu'il ne faudrait pas plutôt faire :

  background: url([(#CHEMIN{img_pack/annonce-24.gif})]) no-repeat center left;

Le 18 nov. 09 à 16:08, Cédric Morin a écrit :

#bla h2 {
padding-left: 30px;
background: url(#CHEMIN{img_pack/annonce-24.gif}) no-repeat center left;

Je ne vois aucune raison pour que cela ne marche pas, si le fichier est bien là.
Que retourne l'expression ?

XDjuj a écrit :

Peut être à cause de la parenthèse ouvrante/fermante qui englobe #CHEMIN ?

Est-ce qu'il ne faudrait pas plutôt faire :

background: url([(#CHEMIN{img_pack/annonce-24.gif})]) no-repeat center left;

Déjà essayé aussi, toujours le même problème, si j'ai 'img_pack' dans la balise #CHEMIN c'est mort...

Le 18 novembre 2009 19:07, Jonathan <jo.chibois@gmail.com> a écrit :

XDjuj a écrit :

Peut être à cause de la parenthèse ouvrante/fermante qui englobe #CHEMIN ?

Est-ce qu'il ne faudrait pas plutôt faire :

background: url([(#CHEMIN{img_pack/annonce-24.gif})]) no-repeat center
left;

Déjà essayé aussi, toujours le même problème, si j'ai 'img_pack' dans la
balise #CHEMIN c'est mort...

Parce qu'il n'est pas possible de trouver le fichier
img_pack/annonce-24.gif
dans un répertoire du path de SPIP

Cédric

Parce qu'il n'est pas possible de trouver le fichier
img_pack/annonce-24.gif
dans un répertoire du path de SPIP

... donc deux solutions : soit le fichier en question n'y est pas (et je peux garantir que si), soit la recherche dans le path pose problème.

Voici ce que j'ai trouvé dans 'cache-css' (le résultat de la compilation de la feuille de style) :

  #bla h2 { padding-left: 30px; background: url(http://localhost/site-local/plugins/Lien vers truc/img_pack/annonce-24.gif) no-repeat center left; }

L'url du background n'est pas mise entre guillemets, ce qui n'a en général pas beaucoup d'importance, sauf dans le cas où un espace se cache dans le path. On note que c'est le cas ici, puisque mon plugin n'est qu'un lien (Lien vers truc/) pointant sur la version de développement.

Je teste alors (avec les guillemets):

  background: url("#CHEMIN{img_pack/annonce-24.gif"})

ce qui me renvoie étonnament : background: url(").

Est-ce un comportement normal du moteur de compilation ? Ou juste un petit bug jamais repéré ?

(Bien sur, en attendant une solution plus pérenne, j'ai supprimé les espaces dans le path, et tout est rentré dans l'ordre)

Le 19 novembre 2009 10:15, Jonathan <jo.chibois@gmail.com> a écrit :

Je teste alors (avec les guillemets):

   background: url\(&quot;\#CHEMIN\{img\_pack/annonce\-24\.gif&quot;\}\)

ce qui me renvoie étonnament : background: url(").

On t'a beaucoup conseillé la notation complète de la balise #CHEMIN, avec [ et (

Cette notation aurait pu t'éviter la bourde de mettre les guillemets
finaux *dans* les paramètres de #CHEMIN...

Ex:

background: [url("(#CHEMIN{img_pack/annonce-24.gif}))]

--
Bertrand Marne

background: [url("(#CHEMIN{img_pack/annonce-24.gif}))]

Ah ben zut, je mets même pas le guillemet fermant !!!

C'est plutôt:

background: [url("(#CHEMIN{img_pack/annonce-24.gif})")]

--
Bertrand Marne

Le 19 novembre 2009 10:15, Jonathan <jo.chibois@gmail.com> a écrit :

Parce qu'il n'est pas possible de trouver le fichier
img_pack/annonce-24.gif
dans un répertoire du path de SPIP

... donc deux solutions : soit le fichier en question n'y est pas (et je
peux garantir que si), soit la recherche dans le path pose problème.

Voici ce que j'ai trouvé dans 'cache-css' (le résultat de la compilation de
la feuille de style) :

fallait commencer par là :slight_smile:
(firebug c'est bien, mais quand une propriété est absente, il faut
verifier le code source car il se peut qu'elle soit simplement mal
écrite)

   \#bla h2 \{ padding\-left: 30px; background:

url(http://localhost/site-local/plugins/Lien vers
truc/img_pack/annonce-24.gif) no-repeat center left; }

L'url du background n'est pas mise entre guillemets,

Note bien que c'est exactement ce que tu as demandé à SPIP.

ce qui n'a en général
pas beaucoup d'importance, sauf dans le cas où un espace se cache dans le
path. On note que c'est le cas ici, puisque mon plugin n'est qu'un lien
(Lien vers truc/) pointant sur la version de développement.

Je teste alors (avec les guillemets):

   background: url\(&quot;\#CHEMIN\{img\_pack/annonce\-24\.gif&quot;\}\)

tu veux dire
        background: url("#CHEMIN{img_pack/annonce-24.gif}")
? (inversion guillemet et accolade fermante)

ce qui me renvoie étonnament : background: url(").

Est-ce un comportement normal du moteur de compilation ? Ou juste un petit
bug jamais repéré ?

Moi je crois bien avoir repéré le bug :slight_smile:
Cédric

Oui enfin je veux bien. Je suis pas encore un utilisateur chevronné, j'ai encore beaucoup à apprendre. Ok je comprends, c'est une bourde de balancer les guillemets sans écrire la balise complète (avec ses jolis () et []).

Ceci dit, quand je tente (comme le propose Bernard) :

  background: [url("(#CHEMIN{img_pack/annonce-24.gif})")]

ou (pourquoi pas hein ?) :

  background: url("[(#CHEMIN{img_pack/annonce-24.gif})]")

J'obtiens à chaque fois :

  background:url(http://localhost/site-local/plugins/Lien vers truc/img_pack/annonce-24.gif)

Ce qui est exactement le même résultat que j'obtenais avec :

  background:url(#CHEMIN{#EVAL{_DIR_PLUGIN_TRUC}|concat{img_pack/annonce-24.gif}}})

Je souligne donc encore une fois le problème : *la compilation ne garde manifestement pas les guillemets.*

fallait commencer par là :slight_smile:
(firebug c'est bien, mais quand une propriété est absente, il faut
verifier le code source car il se peut qu'elle soit simplement mal
écrite)

C'est sûr que si j'avais découvert ça avant, j'aurai gagné un temps fou. J'avais pas percuté encore que les css dynamiques, en bon squelettes quelles sont finalement, elles ont aussi leur cache. Firebug m'a tuer...

À quand un tutoriel de debug ? :slight_smile: ...

Note bien que c'est exactement ce que tu as demandé à SPIP.

Parce que justement je n'ai pas écrit la balise #CHEMIN de façon complete avec () ? Ou alors il y a encore un truc qui m'a échappé ?

tu veux dire
        background: url("#CHEMIN{img_pack/annonce-24.gif}")
? (inversion guillemet et accolade fermante)

Oups. Oui, sur ce coup là j'ai été un peu rapide. Désolé. Ceci dit cette bête coquille n'est pas l'origine du problème (voir la réponse à Bertrand).

°_0

Tu le lis dans le code source ou c'est Firebug qui te le dis ? Parce que Firebug dans sa notation n'affiche pas les " ".

Si je dis pas de bêtises la compilation bosse sur [(#truqsdlkqjd)] comme tes parenthèses sont en dehors, ça semble juste, pas possible...

Tu as vidé tes tmp/ et recalculé ? Parce que vraiment ça ne peut pas le faire :slight_smile:

Et si tu induis une erreur genre :
  background: url(bla"[(#CHEMIN{img_pack/annonce-24.gif})]bla")

Il les vire ou il les garde les guillemets ? :slight_smile:

Le 19 nov. 09 à 10:49, Jonathan a écrit :

Oui enfin je veux bien. Je suis pas encore un utilisateur chevronné, j'ai encore beaucoup à apprendre. Ok je comprends, c'est une bourde de balancer les guillemets sans écrire la balise complète (avec ses jolis () et ).

Ceci dit, quand je tente (comme le propose Bernard) :

  background: [url("(#CHEMIN{img_pack/annonce-24.gif})")]

ou (pourquoi pas hein ?) :

  background: url("[(#CHEMIN{img_pack/annonce-24.gif})]")

J'obtiens à chaque fois :

  background:url(http://localhost/site-local/plugins/Lien vers truc/img_pack/annonce-24.gif)

Ce qui est exactement le même résultat que j'obtenais avec :

  background:url(#CHEMIN{#EVAL{_DIR_PLUGIN_TRUC}|concat{img_pack/annonce-24.gif}}})

Je souligne donc encore une fois le problème : *la compilation ne garde manifestement pas les guillemets.*

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

http://videos.spip.org/spip.php?article128

http://www.spip-blog.net/IMG/pdf/bugetdebug-php.pdf

Le 19 nov. 09 à 10:58, Jonathan a écrit :

À quand un tutoriel de debug ? :slight_smile: ...

Le 19 novembre 2009 10:49, Jonathan <jo.chibois@gmail.com> a écrit :

Oui enfin je veux bien. Je suis pas encore un utilisateur chevronné, j'ai
encore beaucoup à apprendre.

on a tous beaucoup à apprendre, et ce n'est jamais fini :slight_smile:

Ok je comprends, c'est une bourde de balancer

les guillemets sans écrire la balise complète (avec ses jolis () et ).

Ceci dit, quand je tente (comme le propose Bernard) :

   background: \[url\(&quot;\(\#CHEMIN\{img\_pack/annonce\-24\.gif\}\)&quot;\)\]

ou (pourquoi pas hein ?) :

   background: url\(&quot;\[\(\#CHEMIN\{img\_pack/annonce\-24\.gif\}\)\]&quot;\)

J'obtiens à chaque fois :

   background:url\(http://localhost/site-local/plugins/Lien vers

truc/img_pack/annonce-24.gif)

Ce qui est exactement le même résultat que j'obtenais avec :

background:url(#CHEMIN{#EVAL{_DIR_PLUGIN_TRUC}|concat{img_pack/annonce-24.gif}}})

Je souligne donc encore une fois le problème : *la compilation ne garde
manifestement pas les guillemets.*

Non, je t'assure que là l'erreur est de ton côté. Le compilateur ne
mange pas les guillemets.

Par contre, il y a fort à parier que ton navigateur garde en cache ta
css, ou qu'elle n'a pas été recalculée par SPIP.

Cédric

Par contre, il y a fort à parier que ton navigateur garde en cache ta
css, ou qu'elle n'a pas été recalculée par SPIP.

Après chaque enregistrement de ma css dynamique, voici les manipulations que j'effectue :
1- je supprime /local/css-cache
2- je supprime le contenu de /tmp
3- je vide le cache de mon navigateur (j'ai même testé un autre navigateur dans le doute)
4- je vide le cache de spip
5- je provoque le recalcule de la page à l'aide de '&var_mod=recalcul'

De plus je suis certain que le recalcul se fait, car j'ai pris le soin de prendre une propriété quelconque comme témoin, que j'incrémente manuellement à chaque modif de ma css.

Que faire de plus ?

(D'ailleurs je trouve ça assez fastidieux comme opérations à faire à chaque fois, n'y a t'il pas une opération autre qui puisse me garantir le reset de ma css sur le cache ?)

Tu le lis dans le code source ou c'est Firebug qui te le dis ? Parce que Firebug dans sa notation n'affiche pas les " ".

Oui, je me suis fait avoir au début. Non non non, je lis bien les résultats dans la source (local/cache-css).

Si je dis pas de bêtises la compilation bosse sur [(#truqsdlkqjd)] comme tes parenthèses sont en dehors, ça semble juste, pas possible...

Ben... oui.

Tu as vidé tes tmp/ et recalculé ? Parce que vraiment ça ne peut pas le faire :slight_smile:

Cf. Dernière réponse à Cédric.

Et si tu induis une erreur genre :
    background: url(bla"[(#CHEMIN{img_pack/annonce-24.gif})]bla")

Il les vire ou il les garde les guillemets ? :slight_smile:

Là en effet, bonne idée. Ca devient réellement intéressant.

Si je fais exactement ce que tu proposes, j'obtiens (dans le code source) :

background:url(http://localhost/site-local/ecrire/bla&quot;\.\./plugins/Lien vers truc/img_pack/annonce-24.gifbla)

Surprenant, non ?

Le 19 novembre 2009 10:58, Jonathan <jo.chibois@gmail.com> a écrit :

fallait commencer par là :slight_smile:
(firebug c'est bien, mais quand une propriété est absente, il faut
verifier le code source car il se peut qu'elle soit simplement mal
écrite)

C'est sûr que si j'avais découvert ça avant, j'aurai gagné un temps fou.
J'avais pas percuté encore que les css dynamiques, en bon squelettes quelles
sont finalement, elles ont aussi leur cache. Firebug m'a tuer...

À quand un tutoriel de debug ? :slight_smile: ...

Note bien que c'est exactement ce que tu as demandé à SPIP.

Parce que justement je n'ai pas écrit la balise #CHEMIN de façon complete
avec () ? Ou alors il y a encore un truc qui m'a échappé ?

Parce qu'il n'y a jamais eu de guillemets dans ton expression
background: url(#CHEMIN{img_pack/annonce-24.gif}) no-repeat center left;

et que c'est à toi de les mettre, pas à SPIP de deviner que là tu es
en train d'utiliser la balise #CHEMIN dans une directive url() d'une
css et que ça serait bien...

Cédric