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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.