Plugin JQUERY_PLUGIN (accés à librairies JQuery)

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Pour faciliter l’ajout de plugins pour JQuery par d’autres plugins (ou pour des squelettes)...

Ce plugin n’est pas maintenu.

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.

Discussion

5 discussions

  • 4

    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

  • 2

    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 :

    • un champ texte permettant de mentionner l’URL de la lib qu’on veut sur le moment (comme le fait déjà le système de /plugins/auto)
    • un textarea dans lequel les webmestres pourraient coder en live leur propre lib et l’intégrer pleinement dans SPIP

    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

  • 5
    baroug

    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 ?

    • marcimat

      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.

    • baroug

      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…

    • marcimat

      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...

    • baroug

      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.

    • marcimat

      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

  • 2
    all sécu

    bonjour,

    J’ai un petit soucis : en essayant d’installer le plugin sur SPIP 1.9.3 dev [10544], il me marque

        * Impossible d'activer le plugin jquery_plugins
    
        * Nécessite SPIP en version [1.9300;] minimum.

    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 :-/

    • all sécu

      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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom