Re: chemin d'images dans le js d'un plugin
Jean Marie Grall <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Salut,
dans le but de sauver des écureuils, j'avais gardé ce mail sous le coude
pour un cas d'utilisation ultérieure et je crois qu'on y est...
Pour un squelette HTML5up, j'ai besoin, dans du css, de récupérer l'url
d'une image stockée en base via la config du plugin.
Donc, avant ce mail, j'aurais fait ça :
* un squelette pour faire du css comme ici
https://git.spip.net/spip-contrib-squelettes/html5up_paradigm_shift/src/branch/master/css/html5up_paradigm_shift.spip.css.html#L2
* que j'aurais appeler avec #PRODUIRE{fond...} comme là
https://git.spip.net/spip-contrib-squelettes/html5up_paradigm_shift/src/branch/master/inclure/head.html#L35
J’avais aussi la solution du pipeline insert_head comme ici :
https://git.spip.net/spip-contrib-extensions/responsivenav/src/branch/master/responsivenav_pipelines.php#L18
Mais maintenant, je ne sais pas, je ne sais plus. Alors, comment je
sauve les bébêtes ?
jeanmarie
Le 16/12/2019 à 10:01, Cerdic a écrit :
> Never ever ! Jamais, ô grand jamais !
>
> Chaque fois qu’on fait un squelette pour du JS ou du CSS un troupeau
> d’écureuil meurt en tombant d’un arbre.
> (aka c’est totalement non écologique).
>
> Pour ce genre de cas il faut faire comme dans le plugin links par
> exemple :
>
> - Dans le pipeline insert_head_css tu insère un tout petit bout de JS
> inline qui initialise une variable JS
> https://zone.spip.net/trac/spip-zone/browser/spip-zone/_plugins_/links/trunk/links_fonctions.php#L89
>
> (la bonne pratique est d’insérer ce JS inline AVANT les CSS, donc en
> début de pipeline, pour de sombres histoires de cascade de chargement
> par les navigateurs, mais si tu le fait à la fin de insert_head_css
> c’est pas la mort - mais il faut alors insérer avant le script, et
> comme tous les scripts vont être regroupés/concaténés par le
> minifieur, il faut être sur que ton js inline sera bien avant le JS
> concaténé à la fin, donc dans insert_head ça risque de pas toujours
> marcher)
>
> Dans ton cas tu initialisera cette variable avec le chemin vers le
> dossier img/chesspieces/wikipedia, que tu peux trouver avec un
> find_in_path()
>
> - dans ton js, tu utilises cette variable globale à la place du
> chemin en dur
> https://zone.spip.net/trac/spip-zone/browser/spip-zone/_plugins_/links/trunk/links.js#L9
> Cela dit, dans ton cas, il y a déjà quelque chose de prévu, donc il
> faudrait réussir à initialiser config.pieceTheme (mais a voir d’où
> vient ce config, si c’est une variable globale ou quelque chose à
> passer quand tu appele les fonctions de ton js)
>
> Et hop le tour est joué, tu as sauvé des écureuils :)
>
>
>
>
> --
> Cédric
> Le 15 déc. 2019 à 21:03 +0100, Jean Marie Grall
> <[email protected]>, a écrit :
>> En js, je sais pas, mais avec #CHEMIN
>> https://www.spip.net/fr_article4332.html tu peux le faire.
>>
>> Par contre, ça veut dire que ton chessboard.js doit être un squelette,
>> par ex chessboard.js.html, que tu appelles ensuite par le pipeline
>> insert_head (à moins que la déclaration dans paquet.xml gère les
>> squelettes?)
>>
>> jeanmarie
>>
>> Le 15/12/2019 à 18:08, Jacques B a écrit :
>>> Bonjour,
>>> Je cherche à faire un plugin utilisant le script
>>> https://chessboardjs.com/
>>>
>>> Je déclare le script dans paquet.xml ainsi :
>>> <script source="js/chessboard.js" />
>>>
>>> J'utilise un modèle pour intégrer des échiquiers dans les articles et
>>> le script est bien intégré dans le privé ou le public.
>>>
>>> Par contre les images ne passent pas. Elles sont appelées ainsi dans
>>> chessboard.js
>>> // default piece theme is wikipedia
>>> if (!config.hasOwnProperty('pieceTheme') ||
>>> (!isString(config.pieceTheme) &&
>>> !isFunction(config.pieceTheme))) {
>>> config.pieceTheme = 'img/chesspieces/wikipedia/{piece}.png'
>>>
>>> Mais ça donne par exemple dans le privé
>>> http://localhost/chessboard/ecrire/img/chesspieces/wikipedia/wK.png ou
>>> dans le public
>>> http://localhost/chessboard/img/chesspieces/wikipedia/wK.png
>>> Comment faire pour que le chemin des images soit bien le le dossier
>>> img du plugin ? Y aurait-il une instruction find_in_path qui serait
>>> applicable en js ? Ou ... ?
>>>
>>> Merci de votre aide !
>>> Jacques
>>> _______________________________________________
>>> liste: https://listes.rezo.net/mailman/listinfo/spip-dev
>>> doc: http://www.spip.net/
>>> dev: http://trac.rezo.net/trac/spip/
>>> irc://irc.freenode.net/spip
>> _______________________________________________
>> liste: https://listes.rezo.net/mailman/listinfo/spip-dev
>> doc: http://www.spip.net/
>> dev: http://trac.rezo.net/trac/spip/
>> irc://irc.freenode.net/spip