Nota SPIP-Contrib : une contrib encore en plein développement (vous aurez été prévenus). L’idée de cette publication à ce stade est de faire avancer la documentation en même temps que le code.
Présentation
Ce plugin a pour but de faciliter l’ajout de plugins pour jQuery par d’autres plugins ou pour des squelettes. Il est développé pour SPIP 1.9.3.
Il télécharge automatiquement certaines librairies pour JQuery à l’installation, dans un dossier lib/
.
Il propose deux balises #JQUERY_PLUGIN
et #JQUERY_PLUGIN_THEME
Un formulaire CFG permet de cocher les plugins que l’on veut activer en permanence sur le site. Un pipeline permet à d’autres plugins d’ajouter ceux dont ils ont besoin également.
Liste des librairies proposées
- Autocomplete : http://bassistance.de/jquery-plugin...
- DatePicker : http://jquery.com/plugins/project/d...
- Easing : http://jquery.com/plugins/project/Easing
- SyncHeight : http://ginader.devjavu.com/browser/... (gère la hauteur de colonnes)
- UI : http://jquery.com/plugins/project/ui
- Validate : http://jquery.com/plugins/project/v...
- Yav : http://jquery.com/plugins/project/j...
Installations
À la première activation du plugin, des boutons "télécharger" apparaissent dans la page de configuration des plugins disant qu’il manque des librairies (SPIP>1.9.3). Tant que toutes les librairies de plugins pour jQuery ne seront pas téléchargées, il ne sera pas possible d’activer le plugin SPIP « jquery_plugins ».
Le téléchargement installe les fichiers dans des sous-répertoires du répertoire lib/
, par exemple, pour jquery.UI : lib/jquery.ui-1.0/
.
Activer en permanence certains plugins
Depuis jquery_plugins
Pour cela, il suffit de se rendre sur la page de configuration du plugin (ecrire/?exec=cfg&cfg=jqueryp
), de cocher les plugins désirés et de valider.
Ces plugins seront ajoutés automatiquement au fichier jquery.js.html appelé par spip pour charger jquery et ses plugins.
Depuis un autre plugin
- Référencer dans plugin.xml le plugin et le pipeline :
<necessite id="jqueryp" />
<pipeline>
<nom>insert_jquery_plugins</nom>
<inclure>PREFIX_pipeline.php</inclure>
</pipeline>
- dans le fichier PREFIX_pipeline.php (ajoute ui.mouse et ui.tabs) :
function PREFIX_insert_jquery_plugins($flux) {
return jqueryp_add_plugins(array('ui.mouse','ui.tabs'), $flux);
}
Cette méthode ajoute aussi automatiquement le code javascript des plugins dans le fichier (surchargé) jquery.js.html grace au pipeline et à la présence de la balise #PIPELINE{insert_jquery_plugins}.
Si un plugin est activé plusieurs fois (par différents plugins), son code ne sera présent qu’une seule fois.
Activer le plugin sur certains squelettes uniquement
Il est possible de mettre un lien vers le script d’un plugin jquery dans un squelette. C’est ce que fait la balise #JQUERY_PLUGIN
Une autre balise totalement optionnelle permet d’ajouter des css pour styler les plugins, c’est le rôle de #JQUERY_PLUGIN_THEME
Balise #JQUERY_PLUGIN
Une balise #JQUERY_PLUGIN
permet d’appeler un ou plusieurs plugins pour jquery.
Exemples :
- #JQUERY_PLUGIN{ui.tabs}
ajoute
<script src="lib/jquery.ui-1.0/ui.tabs.js" type="text/javascript"></script>
- #JQUERY_PLUGIN{ui.tabs, ui.dimensions}
ajoute les deux extentions ui.tabs et ui.dimensions.
Balise #JQUERY_PLUGIN_THEME
Une balise #JQUERY_PLUGIN_THEME{nom_1, nom_2, ... nom_n}
ajoute un lien css (balise html link) vers un thème (3 thèmes sont fournis avec la librairie jquery.UI : light, dark et flora) ou vers un squelette SPIP renvoyant du css. "nom
" est le nom d’un theme css fourni par une librairie ou le nom d’un squelette spip.
Exemples :
- #JQUERY_PLUGIN_THEME{light}
ajoute
<link media="screen" type="text/css" href="lib/jquery.ui-1.0/themes/light/light.css" rel="stylesheet"/>
- #JQUERY_PLUGIN_THEME{light, light.tabs}
ajoute
<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_PLUGIN_THEME{jqueryp.tabs.css}
ajoute :
<link media="screen" type="text/css" href="http://zazen/spip/marcimat/spip.php?page=jqueryp.tabs.css"
rel="stylesheet"/>
Attention : cette balise renvoie un
<link rel="stylesheet"
src="adresse_css" />
, une balise qui ne devrait être présente que dans
le <head>
Commentaire : On pourait aussi intégrer directement le css par un <style>
avec le code
css dedans. Là, ça irait aussi dans le body... je crois. À voir donc.
Comment utiliser ces librairies dans un plugin ?
- Soit déclarer la dépendance de ’jqueryp’ dans son plugin.xml :<necessite id="jqueryp" />
pour appeler ce plugin et avoir à disposition la balise
#JQUERY_PLUGIN{}
et le pipeline insert_jquery_plugins
- soit, si la librairie voulue est optionnelle, en mettant par exemple dans son squelette :
[(#PLUGIN{jqueryp}|?{' '})
#JQUERY_PLUGIN{ui.tabs}
]
Ajouter une librairie dans le plugin
- Si la librairie est livrée en zip, simplement ajouter le nom du dossier décompressé et l’adressee du zip dans un nécessite de plugin.xml :<necessite id="lib:jquery.ui-1.0" src="http://jqueryjs.googlecode.com/files/jquery.ui-1.0.zip" />
- si la librairie est livrée au format texte, il faut remplir la partie ’install’ (optionnelle pour les librairies en zip) dans jqueryp_options.php
.
- Dans tous les cas,il faut remplir jqueryp_options.php
.
Exemple :
$GLOBALS['jquery_plugins'] = array(
//datepicker
'datepicker' => array(
'dir' => 'jquery.datepicker',
'url' => 'http://jquery.com/plugins/project/datepicker',
'install' => array(
'jquery.datePicker.js' => 'http://jquery.com/plugins/files/jquery.datePicker.js_1.txt'
),
'files' => array(
'datepicker' => 'jquery.datePicker.js'
)
)
/* ... */
);
Change Log
Todo : Version 0.4
- utilisation du pipeline déjà présent dans SPIP 1.9.3 insert_js (merci Renato pour l’info), à la place de insert_jquery_plugins et de la surcharge de jquery.js.html. Impossible en l’état sans surcharger 2 fichiers du Core ! car charge_script n’accepte que des fichiers .js contenus dans /javascript et donc pas dans /lib.
Version 0.3.5
- meilleure interface de configuration
- LIB :
- + Autocomplete
Version 0.3.4
- LIB :
- + Validate
Version 0.3.3
- Annule la compatibilité 1.9.2 qui avait encore des problèmes car ce n’est pas la même version de JQuery d’installé en SPIP 1.9.2 (version 1.1) et SPIP 1.9.3 (version 1.2.1) et les plugins fournis ici ne sont pas tous compatibles.
Version 0.3.2
- Retrocompatibilité 1.9.2 (formulaire CFG)
Version 0.3.1
- changements dans le code pour preparer l’utilisation du pipeline insert_js (mais c’est toujours insert_jquery_plugins qui est utilisé)
Version 0.3
- Correction Bug : les plugin récupérés au format texte étaient téléchargés à chaque hit.
- Retrocompatibilité 1.9.2 (téléchargement des librairies zippées gràce aux fonctions ’chargeur’ de Toggg)
Version 0.2
- Téléchargement automatique de plugins au format texte pour jquery
- LIB :
- + DatePicker
- + Easing
- + SyncHeight
Version 0.1
- Téléchargement automatique de librairies pour jquery zippées (SPIP 1.9.3)
- Pipeline insert_jquery_plugins pour ajouter automatiquement le code des plugins actifs dans jquery.js.html
- LIB :
- + UI
- + Yav
Le futur
Il y a tellement de possibilités avec ces librairies 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 !).
À commencer par proposer des librairies à ajouter...
Toute suggestion ou contribution est donc la bienvenue.
Discussions par date d’activité
5 discussions
bonsoir,
il faut le créer où le dossier /lib. parce-que le download automatique fonctionne pas. (spip svn 11400)
à la racine de SPIP, au même niveau que /IMG et /local...
Et il faut qu’il soit accessible en écriture évidemment !
MM.
je suis en local avec mamp et rien ne fonctionne visiblement avec le cfg que j’ai installé pourtant fraichement téléchargé. j’ai mis le dossier à tous les niveaux dans le doute mais rien n’est détecté dans le backoffice.
merci de ta réactivité
Si le CFG est > 1.7.0, essaie d’aller sur ecrire/ ?exec=cfg_install_libs .
- Met il un message indiquant qu’il faut créer le dossier « lib » ?
- Peux tu télécharger d’ici la librairie Farbtastic proposée ?
MM.
je vais essayer ta méthode et te tiens au courant
Répondre à ce message
Est-ce que ce plugin est encore nécéssaire pour SPIP 2.0.10 et/ou a t’il encore un avenir dans les dev de SPIP à venir ?
Car ses possibilités m’intéressent bien.
Je me demande même à quel point on ne pourrait pas l’améliorer un poil en lui collant :
Encore des idées que je ne suis pas forcément près de pouvoir concrétiser moi même mais si le simple fait d’y penser et d’en parler peut apporter une pierre minimum à l’édifice...
Ouaip... je pense qu’il est bel et bien mort ce plugin... je l’utilise jamais... donc, c’est qu’il est bien inutile :)
En général, quand on fait un squelette, on met les libs qu’on veut dans son propre dossier squelettes/, on s’ennuie pas avec d’autres considérations.
Mais si tu veux le reprendre, n’hésite pas.
OK Matthieu, merci pour la réponse.
Pour ce qui est de le reprendre, disons que j’ai quelques idées, ... faut juste que je prenne le temps de formaliser tout ça et voir ce que je peux faire.
Répondre à ce message
Bonjour,
Pour info...
il semblerait a première vue qu’il manque un fichier pour le téléchargement des plugins jquery
Erreur...
Fichier action/charger_plugin introuvable
++
Répondre à ce message
Salut,
l’activation du plugin butte sur le fait qu’apparemment, il n’arrive pas à voir que jquery.autocomplete est en place. Voilà ce que spip me raconte :
Ce plugin nécessite la librairie jquery.autocomplete
à télécharger depuis http://dev.jquery.com/view/trunk/plugins/autocomplete/jquery.autocomplete.zip et à installer dans lib/
Or autocomplete est bien installé dans /lib.
Et les autres librairies sont elles aussi installées et sans souci.
La différence avec les autres joue sur un tiret : jquery-autocomplete contre par ex jquery.ui-1.0. J’ai du coup essayé de renommer en jquery.autocomplete mais là, spip me dit qu’il ne voit pas /lib…
Une idée ?
Baroug, c’est l’activation ou l’installation qui pose problème ?
L’un et l’autre se passent bien pour ma part, lorsque j’installe ou active autocomplete depuis le cfg de jquery plugins
MM.
L’activation. Je coche la case, je valide et là, le truc me dit qu’autocomplete n’étant pas installé (ce qui est faux) il faut le faire. Je peux suivre la procédure de téléchargement, elle a l’air de fonctionner, mais quand je veux activer le plugin => il me dit qu’autocomplete manque…
ARF ! trouvé, tu as juste à mettre à jour le plugin jquery_plugins, j’avais corrigé le bug la semaine dernière ! Ou alors, faire simplement la mise à jour du fichier jqueryp_options.php. Voir :
http://zone.spip.org/trac/spip-zone...
mmmh j’avais farfouillé, et essayé ça… mais sans succès. Mais j’ai compris que ma version n’était pas la dernière et je suis allé chercher la dernière dans le zip test et, miracle… ça marche !
merci.
Ouais, c’est ça toute la puissance de SPIP... Il faut savoir déplacer les yeux aux bons endroits... C’est tout un apprentissage ^^ ! :D
MM.
Répondre à ce message
bonjour,
J’ai un petit soucis : en essayant d’installer le plugin sur SPIP 1.9.3 dev [10544], il me marque
Avez vous une idée du problème ?
Merci d’avance
oui.
Simple : nous sommes à la version 10864 de la 1.9.3 en développement et la version ($spip_version_code) 1.9300 a été ajouté vers les 10600 environ...
Donc votre version n’est pas assez récente :-/
merci de l’info
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |