[SPIP Zone] ! plugin jquery_ui (dans _test_)

Bonjour,

Je viens d'ajouter un nouveau plugin qui télécharge (dans un dossier lib/) les librairies UI (plugin de jQuery) : http://ui.jquery.com/ et ajoute une balise #JQUERY_UI

Fonctionnement
--------------

Le téléchargement met les fichiers dans lib/jquery.ui-1.0/

Une balise #JQUERY_UI permet d'appeler la partie de la librairie que vous souhaitez, ainsi que son thème (3 thèmes sont fournis avec la librairie : light, dark et flora) ou un squelette spip renvoyant du css

Exemples :
#JQUERY_UI{tabs} ajoute
<script src="lib/jquery.ui-1.0/ui.tabs.js" type="text/javascript"></script>

#JQUERY_UI{tabs, light} ajoute :
<script src="lib/jquery.ui-1.0/ui.tabs.js" type="text/javascript"></script>
<link media="screen" type="text/css" href="lib/jquery.ui-1.0/themes/light/light.css" rel="stylesheet"/>
<link media="screen" type="text/css" href="lib/jquery.ui-1.0/themes/light/light.tabs.css" rel="stylesheet"/>

#JQUERY_UI{tabs, jqueryui.tabs.css} ajoute :
<script src="lib/jquery.ui-1.0/ui.tabs.js" type="text/javascript"></script>
<link media="screen" type="text/css" href="http://zazen/spip/marcimat/spip.php?page=jqueryui.tabs.css" rel="stylesheet"/>

Pourquoi au fait ?
-------------------

Parce que CFG a des tabs qui ne fonctionnement pas bien (au moins avec XSPF) !

L'objectif était de sortir le javascript jquery.tabs présent systématiquement dans toutes les fonds de CFG alors que 'seulement' 2 plugins l'utilisent (XSPF [ça ne fonctionnait plus!] et Inscription2), en appelant le script juste au besoin.

J'aimerais bien, donc, faire partir les javascripts (tabs) de CFG qui à mon sens n'ont pas à ajourdir ce déjà gros plugin dont on ne connait qu'une infime partie !

J'ai modifié XSPF pour cela... pour Inscription2, bien... a vous de voir, je peux le faire autrement, histoire de casser un peu de code ^^ !

Donc, parce que CFG, et parce que UI a l'air de faire plein de choses, compatibles avec jquery 1.2.1...

Comment utiliser cette librairie dans un plugin ?
------------------------------------------------

Deux possibilité pour qu'un plugin utilise cette librairie :
- soit mettre dans plugin.xml
<necessite id="lib:jquery.ui-1.0" src="http://jqueryjs.googlecode.com/files/jquery.ui-1.0.zip" />
et gérer soi même l'ajout des balises <script>
- soit mettre un <necessite id="jquery.ui" /> pour appeler ce plugin et avoir à disposition la balise #JQUERY_UI{}

Ensuite, cela peut aussi être optionnel, en mettant par exemple, en 1.9.3 :
[(#PLUGIN{jqueryui}|?{' '})
   #JQUERY_UI{tabs}
]

Le futur
----------

Il y a tellement de possibilité avec cette librairie (c'est le nouveau 'jQuery.Interfaces') qu'il y a des chances pour que les spipeurs aient plein de bonnes idées pour l'utiliser et pour améliorer ce plugin (et il ne faudrait surtout pas se géner !)

Toute suggestion ou contribution est donc la bienvenue !

Bien à vous,
MM.

Le 21/10/07, Matthieu Marcillaud<marcimat@free.fr> a écrit :

Je viens d'ajouter un nouveau plugin qui télécharge (dans un dossier
lib/) les librairies UI (plugin de jQuery) : http://ui.jquery.com/ et
ajoute une balise #JQUERY_UI

Super, mais je croyais qu'on ferait un plugin plus complet comprenant
"tous les plugins de jquery" (reste à voir ce que ça veut dire, mais
disons "le top des plugins de jquery"). Avec une méthode unifiée pour
en charger n d'un seul coup, etc.

-- Fil

Fil a écrit :

Le 21/10/07, Matthieu Marcillaud<marcimat@free.fr> a écrit :
  

Je viens d'ajouter un nouveau plugin qui télécharge (dans un dossier
lib/) les librairies UI (plugin de jQuery) : http://ui.jquery.com/ et
ajoute une balise #JQUERY_UI
    
Super, mais je croyais qu'on ferait un plugin plus complet comprenant
"tous les plugins de jquery" (reste à voir ce que ça veut dire, mais
disons "le top des plugins de jquery"). Avec une méthode unifiée pour
en charger n d'un seul coup, etc.
  

Dans une optique webmaster, je crois que le mieux serait une page CFG avec la liste des plugins jquery dispo et une case a cocher en face chaque pour les activer
Il faut en plus un pipeline sur cette liste avec que des plugins SPIP puissent ajouter ceux qui leur sont necessaire.
Le tout serait alors automatiquement intégré dans jquery.js.html afin de n'avoir qu'un seul et unique hit js sur la page.

Pour finir l'optimisation, j'ai testé l'integration inline du js. C'est mieux dans ff, mais par contre ca semble discutable dans ie.
In fine j'ai choisi une soluce intermediaire avec dans mon head
<script src="[(#INCLURE{fond=jquery.js}|cache_fichier_statique{jquery.js,604800})]" type="text/javascript"></script>

et le filtre
function cache_fichier_statique($contenu,$filename,$delay = 86400){
    $f = _DIR_VAR . "cache-$filename";
    if (!(_request('var_mode')=='recalcul')
    && (file_exists($f))
    && (filemtime($f)>time()-$delay))
        return $f; // on ne touche a rien
    ecrire_fichier($f,$contenu);
    return $f;
}

Quand apache gzip automatiquement, cela permet d'avoir un hit purement statique sur jquery.js, ce qui est plus efficace que l'appel à ?page=jquery.js.
Par contre, ei apache ne gzip pas, le fichier statique est envoyé non compressé.
Peut être cela doit il aussi être une option de config ?

Cédric

Cedric a écrit :

Fil a écrit :

Le 21/10/07, Matthieu Marcillaud<marcimat-GANU6spQydw@public.gmane.org> a écrit :
  

Je viens d'ajouter un nouveau plugin qui télécharge (dans un dossier
lib/) les librairies UI (plugin de jQuery) : http://ui.jquery.com/ et
ajoute une balise #JQUERY_UI
    

Super, mais je croyais qu'on ferait un plugin plus complet comprenant
"tous les plugins de jquery" (reste à voir ce que ça veut dire, mais
disons "le top des plugins de jquery"). Avec une méthode unifiée pour
en charger n d'un seul coup, etc.
  

Ah, bien je n'étais pas au courant... C'est vrai que ça parait plus évident d'un coup :wink: (pas uniquement UI)

Dans une optique webmaster, je crois que le mieux serait une page CFG avec la liste des plugins jquery dispo et une case a cocher en face chaque pour les activer

Oui, mais comment avoir cette liste ? si l'on télécharge les librairies (ça peut en faire beaucoup à la main non ?), elles vont s'installer dans des dossier de /lib différents et ça va être dur de retrouver les petits.

Il doit falloir ajouter un tableau pour les référencer certainement en plus array('ui.tabs'=>'jquery.ui-1.0/ui.tabs.js', ...)

Est-ce que l'on peut dire aux librairies de s'installer dans /lib/js/nom_de_la_lib ?

Il faut en plus un pipeline sur cette liste avec que des plugins SPIP puissent ajouter ceux qui leur sont necessaire.
Le tout serait alors automatiquement intégré dans jquery.js.html afin de n'avoir qu'un seul et unique hit js sur la page.

Oui...

Cedric a écrit :

Fil a écrit :

Le 21/10/07, Matthieu Marcillaud<marcimat-GANU6spQydw@public.gmane.org> a écrit :

Super, mais je croyais qu'on ferait un plugin plus complet comprenant
"tous les plugins de jquery" (reste à voir ce que ça veut dire, mais
disons "le top des plugins de jquery"). Avec une méthode unifiée pour
en charger n d'un seul coup, etc.

Bon, oui, donc... Le plugin que j'avais commencé est renommé : jquery_plugins. On peut mettre autant de librairies que l'on veut, des l'instant que l'on renseigne la présence des librairies dans jqueryp_options.php

Pour ajouter une librairie, pour l'instant, c'est grace à plugin.xml et des <necessite...> : ça a l'avantage d'automatiser... mais le mieux serait certainement de proposer une liste de librairies à télécharger sur ce principe là (comme le propose xspf), mais qu'aucune ne soit obligatoire ?

Quoique d'un autre coté, si elles sont toutes là, ça permet à un plugin de vite savoir s'il peut ajouter une librairie x en fonction de la présence ou non du plugin... Si le plugin est là, il peut ajouter la librairie x présente dedans dans un pipeline dédié comme suggère Cédric

Parce que si un plugin met <necessite jqueryp> et que toutes les librairies ne sont pas chargées, il risque peut être de pas être très content :wink:

Dans une optique webmaster, je crois que le mieux serait une page CFG avec la liste des plugins jquery dispo et une case a cocher en face chaque pour les activer

Ca, c'est fait. C'est rudimentaire, mais on peut cocher (liste les entrées du tableau renseigné dans jqueryp_options.php)

Il faut en plus un pipeline sur cette liste avec que des plugins SPIP puissent ajouter ceux qui leur sont necessaire.

Je suis d'accord, mais je vais être confronté à un manque de connaissance en pipeline... on met quoi dedans ? un tableau avec la liste des plugins à activer (juste leur non, pas le contenu du js ?)

Le tout serait alors automatiquement intégré dans jquery.js.html afin de n'avoir qu'un seul et unique hit js sur la page.

Et là, à la fin de jquery.js.html, on ajoute (en surchargeant le fichier) [(#PIPELINE{nom_du_pipeline}|jqueryp_integrer_les_js)] ?

Matthieu.