jQuery UI pour SPIP

Introduction

De plus en plus de plugins intègrent dans leurs fichiers des morceaux de la bibliothèque jQuery UI et ce dans des versions plus ou moins à jour imposant ainsi de temps à autre plusieurs versions de cette bibliothèque en fonction du nombre de plugins installés sur un site (voir désormais jQuery UI pour SPIP 3).

Afin de pallier ce problème, deux solutions sont possibles :

  • L’ajout de la bibliothèque en question dans le core de SPIP (très certainement dans une prochaine version)
  • La création d’un méta plugin s’occupant de gérer correctement cette bibliothèque et sur lequel l’ensemble des plugins ayant besoin d’une partie de celle-ci puisse se reposer. C’est l’objet du plugin « jQuery UI pour SPIP ».

Historique

Le plugin jQuery UI a été développé en tant que plugin pour SPIP 2
Il a été intégré comme plugin-dist dans SPIP 3
A partir de SPIP 4 c’est de nouveau un plugin autonome

Son fonctionnement

Après l’avoir activé, vous pouvez personnaliser le plugin via sa page de configuration (disponible si vous avez installé le plugin CFG). Celle-ci liste l’ensemble des sous-bibliothèques disponibles (droppable, draggable, tabs....).

Il vous suffit de sélectionner celles dont vous avez besoin et elles seront automatiquement ajoutées au pipeline jquery_plugins de SPIP (plus d’informations sur le site Programmer avec SPIP) qui est lui même utilisé par la balise #INSERT_HEAD (Cela signifie donc que vos squelettes doivent utiliser cette balise pour que le plugin fonctionne).

Dans le cas où vous souhaitez utiliser une sous-bibliothèque qui dépend d’autres sous-bibliothèques de jQuery UI (comme Tabs par exemple), les dépendances seront automatiquement sélectionnées à la validation du formulaire de configuration. Il n’est donc pas nécessaire de les vérifier.

Utilisation depuis un autre plugin

Si vous souhaitez développer un plugin qui nécessite une ou plusieurs sous-bibliothèques de jQuery UI, la démarche est relativement simple.

Tout d’abord, il est nécessaire d’ajouter un élément <necessite ... /> à votre plugin.xml (cf documentation) comme ceci :

<necessite id="jqueryui" version="[1.8.5;]" />

Ensuite, le plugin SPIP jQuery UI déclarant son propre pipeline d’ajout de sous-bibliothèques, jqueryui_forcer, il suffit d’ajouter les sous-bibliothèque que l’on souhaite utiliser comme ceci (dans l’exemple, on utilise monplugin comme préfixe de notre plugin imaginaire, on souhaite utiliser la sous-bibliothèque jquery.ui.tabs) :

function monplugin_jqueryui_forcer($scripts){
    $scripts[] = "jquery.ui.tabs";
    return $scripts;
}

La sous-bibliothèque « tabs » nécessite en fait deux autres sous-bibliothèque normalement :

  • jquery.ui.core
  • jquery.ui.widget

Il n’est donc pas nécessaire de les déclarer car le plugin le fera automatiquement.

Si après avoir activé notre nouveau plugin on se dirige vers la page de configuration du plugin jQuery UI, on se rend compte que les 3 sous-bibliothèques activées par le plugin « monplugin » sont cochées et non désactivables, évitant ainsi tout problème potentiel de désactivation manuelle d’une sous-bibliothèque.

Liste des sous-bibliothèques disponibles

Documentation et démonstrations : http://jqueryui.com/demos/

SPIP 2.1SPIP 2.0
jquery.ui.datepicker

jquery.ui.accordion

jquery.ui.autocomplete

jquery.ui.autocomplete

jquery.ui.button

jquery.ui.dialog

jquery.ui.dialog

jquery.ui.draggable

jquery.ui.droppable

jquery.ui.droppable

jquery.ui.mouse

jquery.ui.progressbar

jquery.ui.resizable

jquery.ui.selectable

jquery.ui.slider

jquery.ui.sortable

jquery.ui.tabs

jquery.effects.blind

jquery.effects.bounce

jquery.effects.clip

jquery.effects.drop

jquery.effects.explode

jquery.effects.fold

jquery.effects.highlight

jquery.effects.pulsate

jquery.effects.scale

jquery.effects.shake

jquery.effects.slide

jquery.effects.transfer

ui.accordion

ui.datepicker

ui.dialog

ui.dialog

ui.dialog

ui.draggable

ui.droppable

ui.droppable

ui.resizable

ui.selectable

ui.slider

ui.sortable

ui.tabs

effects.blind

effects.bounce

effects.clip

effects.drop

effects.explode

effects.fold

effects.highlight

effects.pulsate

effects.scale

effects.shake

effects.slide

effects.transfer

Discussion

30 discussions

  • 4

    Bonjour,

    Pour info, la version 1.15.1 ne fonctionne pas avec Spip 4.0.8, il faut prendre la 1.14.3.

    De plus, elle n’est pas proposée dans l’ajout de plugins depuis l’espace privé.

    Est-ce normal ?

    Répondre à ce message

  • Bonjour Bonsoir Bonjoir !

    Impossible de déplacer des éléments dans les formulaires par glisser / déposer, que ce soit avec formidable ou champs extra sur une version 3.1.6 de SPIP. Cela dépend visiblement de jQuery Ui bien présent dans plugins-dist donc je poste ici au moins dans un premier temps.

    Test en désactivant tous les plugins utilisés et en activant seulement Formidable : même résultat. Tous mes plugins sont à jour... suis-je le seul à rencontrer ce défaut ou d’autres victimes ? :)

    Merci d’avance

    Répondre à ce message

  • merci pour ta reponse je suis nouveau dans spip tu peut m aide en PV ibrabiga@gmail.com merci et Bonne soirée

    Répondre à ce message

  • 3

    salut comment utilise jquery pour mon site spip sans utiliser un plugin ,
    ca fait plus d’un mois que je cherche la solution merci

    Répondre à ce message

  • 6
    AlainR

    Hello.

    Pourquoi le plugin SAISIE est-il obligatoire/nécessaire au fonctionnement de ce plugin jQuery UI ?

    Impossible d’activer le plugin ../plugins/auto/jquery_ui
    Nécessite le plugin SAISIES en version minimum.

    Le problème est que si j’installe le plugin Saisies pour formulaires, le plugin Bonux pose problème et bloque complètement le site (page blanche et message d’erreur suivant :

    Fatal error : Cannot redeclare picker_selected() (previously declared in /home/www/.../plugins/auto/spip-bonux/spip_bonux_fonctions.php:76) in /home/www/.../prive/formulaires/selecteur/generique_fonctions.php on line 99

    Merci d’avance pour l’aide.
    Cdt.

    Répondre à ce message

  • 1

    Bonjour,

    je voudrais savoir comment installer le plug in easytabs http://os.alfajango.com/easytabs/
    dans spip.
    j’ai tenté d’intégrer ça à travers un pipeline, dans un fichier mes_options.php mais ça ne semble pas fonctionner.

    <?php $GLOBALS['spip_pipeline']['jqueryui_plugins'] .= "|easytabs";
    
    function easytabs($plugins) {
           $plugins[] = "jquery.ui.core";
           return $plugins;
    }
    ?>

    Bien compliqué d’appeler un script jquery sous spip…

    Merci pour votre aide !

    Répondre à ce message

  • 1

    « jQuery UI pour SPIP » est nécessaire pour « Formidable, le générateur de formulaires » ainsi que : « Bonux », « Saisies », « Vérifier », « YAML », et « Facteur ».

    Mais il n’est compatique que pour SPIP 2.0 et SPIP 2.1…

    Pas (encore ?) pour SPIP 3.0…

    Est-ce un oubli ou une lacune ?

    Répondre à ce message

  • 3

    Bonsoir,
    la version en téléchargement ici pour SPIP 2.1 semble être une version SPIP 3, avec un paquet.xml et un compatibilite=« [3.0.0 ;3.0.*] » !

    Est-ce que ça ne devrait pas être un zip de la version http://zone.spip.org/trac/spip-zone/browser/_plugins_/jquery_ui ??

    Julien

    Répondre à ce message

  • 3

    Hello ici !

    J’ai une merdouille sur un site où je cherche à utiliser .tabs. en me basant sur l’exemple suivant seulement Firebug semble ne pas l’entendre de cette oreille :

    TypeError : $(...).tabs is not a function

    J’ai d’abord pensé à un oubli de ma part dans la mesure où c’est un des widget qui a besoin d’une sous bibliothèque pour fonctionner MAIS :

    • je suis sous SPIP 3 et le plugin JQuery_ui n’a plus d’interface CFG, iumpossible donc de cocher comme avant la souys-bibli complémentaire dont tu peux avoir besoin
    • même l’ajout à la mano ( <script type="text/javascript" src="#CHEMIN{javascript/jquery-ui/ui/jquery.ui.tabs.js}"></script> ) ne solutionne pas le problème.

    Une idée les gens ?

    Merci d’avance et bonne année à tous !

    Répondre à ce message

  • 9

    Bonjour
    J’essaie d’insérer le plugin jqueryui dans spip3. Celui-ci est déjà présent mais je n’arrive pas à l’activer dans les pages publiques. (core, widget position et autocomplete)

    Dans mes_options.php j’ai essayé différentes solutions comme stipulées dans la doc ici :
    http://programmer.spip.org/Qu-est-ce-qu-un-pipeline

    $GLOBALS[’spip_pipeline’][’insert_head’] .= « |prefixPlugin_jquery_plugins » ;

    function prefixPlugin_jquery_plugins($scripts)
    $scripts[] = « javascript/ui/jquery.ui.core.js » ;
    return $scripts ;

    ou cela :
    function insert_jqueryui($jqueryui_plugins)
    $jqueryui_plugins[] = « javascript/ui/jquery.ui.core » ;
    return $jqueryui_plugins ;

    Dans les cas ci-desssus, il n’aime pas les [].

    Quelle est la bonne méthode pour insérer jquery.ui.XXX dans les pages publiques ? si possible avec la gestion des dépendances.
    Si seulement, on pouvait choisir les éléments de UI à insérer depuis la gestion des plugins de spip3 !!!

    Merci d’avance pour vos réponses et pour le travail réalisé par les différents contributeurs.
    Jérôme

    • Salut, en collant ça dans tonplugin_pipelines.php ça devrait le faire (et en déclarant l’appel du pipeline depuis la paquet.xml) :

      function tonplugin_jqueryui_plugins($plugins){
      	$plugins[] = "jquery.ui.core";
      	return $plugins;
      }

      ++

    • Quelle rapidité pour répondre !

      En fait, ce qu’il me faut, c’est la méthode pour insérer du jqueryUI dans mes squelettes du site publique lorsque je n’utilise pas de plugin.

      une insertion dans mes_options.php ?

      Merci d’avance

    • Comme l’indique la très bonne doc de programmer.spip.org :

      http://programmer.spip.org/Qu-est-ce-qu-un-pipeline

      $GLOBALS['spip_pipeline']['jqueryui_plugins'] .= "|ton_bouzin";
       
      function ton_bouzin($plugins) {
              $plugins[] = "jquery.ui.core";
              return $plugins;
      }

      ++

    • Oui, j’ai vu et ça marche pour insérer une "string dans le flux" comme dans l’exemple, mais là j’ai ce message :
      « Fatal error : [] operator not supported for strings in /data/projects/default/html/routage/config/mes_options.php on line 24 »

      mon code :
      « $GLOBALS[’spip_pipeline’][’insert_head’] .= "|insert_jqueryui" ;

      function insert_jqueryui($jqueryui_plugins)
      $jqueryui_plugins[] = "javascript/ui/jquery.ui.core" ;
      /* $plugins[] = "javascript/ui/jquery.ui.widget" ;
      $plugins[] = "javascript/ui/jquery.ui.position" ;
      $plugins[] = "javascript/ui/jquery.ui.autocomplete" ;*/
      return $jqueryui_plugins ;
       »
      j’ai essayé aussi :

      « $GLOBALS[’spip_pipeline’][’jqueryui_plugins’] .= "|insert_jqueryui" ; »

    • Et si tu essayes avec le code que je te propose ?

      $GLOBALS['spip_pipeline']['jqueryui_plugins']

      et non

      $GLOBALS[’spip_pipeline’][’insert_head’]

    • oui, c’est ce que j’ai précisé en fin de mon message :

      j’ai essayé aussi :
      « $GLOBALS[’spip_pipeline’][’jqueryui_plugins’] .= "|insert_jqueryui" ; »

    • Comme l’indique la page de doc que je t’ai pointé :

      À noter que SPIP utilise un cache des pipelines utilisés et que toute nouvelle déclaration nécessite de recalculer ce cache. Cela se fait en visitant la page « Gestion des plugins » dans l’espace privé (?exec=admin_plugin).

      Je viens de tester le code que je t’ai donné et il fonctionne parfaitement.

    • Merci pour tes réponses. Je suis donc reparti de zéro et refaisant toute l’installation et en razant mes essais et modifications dans l’appel du pluginUI et c’est OK

      Pour résumé, voici le code ajouté dans mes_options.php pour ajouter « autocomplete » dans mes squelettes :

      $GLOBALS['spip_pipeline']['jqueryui_plugins'] .= "|insert_jqueryui";
      function insert_jqueryui($jqueryui_plugins) {
           $jqueryui_plugins[] = "jquery.ui.core" ;
           $jqueryui_plugins[] = "jjquery.ui.widget" ;
           $jqueryui_plugins[] = "jquery.ui.position" ;
           $jqueryui_plugins[] = "jquery.ui.autocomplete" ;
           return $jqueryui_plugins ;
      }
    • Pour info, pas la peine de demander à SPIP d’insérer les dépendances il le fera tout seul. Donc cela devrait suffire :

      $GLOBALS['spip_pipeline']['jqueryui_plugins'] .= "|insert_jqueryui";
      function insert_jqueryui($jqueryui_plugins) {
          $jqueryui_plugins[] = "jquery.ui.autocomplete" ;
          return $jqueryui_plugins ;
      }

      Et hop ;)

    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