SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 175 visiteurs en ce moment

Accueil > Administration et BDD > Importeur / Exporteur de configurations > Importeur / Exporteur de configurations : documentation développeur

Importeur / Exporteur de configurations : documentation développeur

29 janvier 2011 – par Joseph – 14 commentaires

5 votes

Cet article vise à présenter la procédure pour déclarer une configuration d’un plugin à l’Importeur / Exporteur de configurations.

Plugin stockant sa configuration dans la table spip_meta

Une majorité de plugins stocke leur configuration dans la table spip_meta (notamment la plupart des plugins utilisant CFG). Pour ces derniers, la déclaration des métas à sauvegarder est relativement simple via le pipeline ieconfig_metas.

L’importeur/exporteur de configurations générera alors un formulaire d’import/export simplifié (exporter : oui / non, importer : oui / non).

Il faut tout d’abord déclarer le pipeline ieconfig_metas dans le plugin.xml du plugin :

  1. <pipeline>
  2. <nom>ieconfig_metas</nom>
  3. <inclure>prefixe_plugin_ieconfig_metas.php</inclure>
  4. </pipeline>

Télécharger

puis créer un fichier prefixe_plugin_ieconfig_metas.php contenant :

  1. <?php
  2.  
  3. function prefixe_plugin_ieconfig_metas($table){
  4. $table['prefixe_plugin']['titre'] = nom_du_plugin;
  5. $table['prefixe_plugin']['icone'] = 'chemin/image.png';
  6. $table['prefixe_plugin']['metas_brutes'] = 'meta1,meta2,meta3';
  7. $table['prefixe_plugin']['metas_serialize'] = 'meta4,meta5,meta6';
  8. return $table;
  9. }
  10.  
  11. ?>

Télécharger

metas_brutes permet d’indiquer les metas dont on fera l’export tel quel, tandis que metas_serialize permet d’indiquer des metas qui sont stockées sous forme serializées (ce qui est notamment le cas avec CFG dans usage courant).

S’il y a plusieurs metas à sauver, il faut séparer leur nom par une virgule (ne pas ajouter d’espace).

L’icône doit être en 16x16 pixels. Par ailleurs, sous SPIP 3, si l’icône est situé d’un répertoire de thème (classiquement prive/themes/spip/images/), son nom est suffisant, il est inutile de préciser le chemin.

Exemples concrets :

Pour le plugin Métas :

  1. function metas_ieconfig_metas($table){
  2. $table['metas']['titre'] = _T('metas:configuration_metas');
  3. $table['metas']['icone'] = 'images/metas-16.png';
  4. $table['metas']['metas_brutes'] = 'spip_metas_title,spip_metas_description,spip_metas_keywords,spip_metas_mots_importants';
  5. return $table;
  6. }

Télécharger

Pour le plugin Dublin Core (qui utilisait CFG) :

  1. function dublin_core_ieconfig_metas($table){
  2. $table['dublin_core']['titre'] = _T('dublin_core:dublin_core');
  3. $table['dublin_core']['icone'] = 'dublin_core-16.png';
  4. $table['dublin_core']['metas_serialize'] = 'dublin_core';
  5. return $table;
  6. }

Télécharger

Si l’on a besoin de formulaires d’import/export et/ou de traitements plus évolués, il faut passer par un autre pipeline, le pipeline ieconfig.

Indiquer un préfixe de méta

À partir de la version 1.3.0, il est possible d’indiquer, via le pipeline ieconfig_metas, un préfixe de méta en le faisant suivre d’une astérisque (*).

Prenons l’exemple suivant :

  1. <?php
  2.  
  3. function prefixe_plugin_ieconfig_metas($table){
  4. $table['prefixe_plugin']['titre'] = nom_du_plugin;
  5. $table['prefixe_plugin']['icone'] = 'chemin/image.png';
  6. $table['prefixe_plugin']['metas_serialize'] = 'titi,toto_*';
  7. return $table;
  8. }
  9.  
  10. ?>

Télécharger

Seront exportées la méta titi et toutes les métas dont le nom commence par toto_.

Le pipeline ieconfig pour des exports/imports entièrement personnalisables

Pour qu’un plugin puisse exporter/importer sa configuration avec l’importeur/exporteur de configurations, il doit se brancher sur le pipeline iecfg.

Ce pipeline est appelé 4 fois :

  • pour construire le formulaire d’export
  • pour construire le tableau de configuration à exporter
  • pour construire le formulaire d’import
  • pour stocker la configuration importée en base

Pour un exemple de code, voir http://svn.spip.org/trac/spip-zone/... ou encore http://zone.spip.org/trac/spip-zone....

Construction du formulaire d’export

Pour construire le formulaire d’export, le pipeline ieconfig est appelé en transmettant en argument $flux['args']['action']='form_export'.

$flux['args']['data'] contient un tableau de saisies (voir Saisies) . On ajoutera dès lors à ce tableau les options de saisies propres au plugin. Elles seront réunies dans un fieldset dont le nom sera le préfixe du plugin. Les noms des options de saisies commenceront toutes par prefix_ pour éviter les interférences avec d’autres plugins.

Au minimum, le plugin devra proposer d’exporter ou de ne pas exporter sa configuration.

Il est possible de préciser des critères de vérifications aux saisies (voir Doc Saisies complémentaire).

Tableau à exporter

Pour construire le tableau d’export, le pipeline ieconfig est appelé en transmettant en argument $flux['args']['action']='export'.

Les paramètres d’export saisis par l’utilisateur sont accessibles via la fonction _request().

$flux['args']['data'] contient le tableau des données à exporter. Le plugin rajoutera une entrée à ce tableau, avec pour clé le préfixe du plugin, contenant la configuration à exporter.

Construction du formulaire d’import

Pour construire le formulaire d’export, le pipeline ieconfig en transmettant en argument $flux['args']['action']='form_import'. $flux['args']['action']='config' contient le tableau à importer.

$flux['args']['data'] contient un tableau de saisies (voir Saisies) . On ajoutera dès lors à ce tableau les options de saisies propres au plugin, si le tableau à importer contient une configuration à importer pour ce plugin (entrée ayant comme clé le préfixe du plugin). Elles seront réunies dans un fieldset dont le nom sera le préfixe du plugin. Les noms des options de saisies commenceront toutes par prefix_ pour éviter les interférences avec d’autres plugins.

Au minimum, le plugin devra proposer d’importer ou de ne pas importer la configuration le concernant.

Il est possible de préciser des critères de vérifications aux saisies (voir Doc Saisies complémentaire).

Import de la configuration

Pour importer la configuration, le pipeline ieconfig est appelé en transmettant en argument $flux['args']['action']='import'. $flux['args']['action']='config' contient le tableau à importer.

Les paramètres d’import saisis par l’utilisateur sont accessibles via la fonction _request().

$flux['args']['data'] contient un message d’erreur à afficher si un problème est rencontré. Il sera complété par le plugin si une erreur a été rencontrée lors de l’import.

Fournir des fichiers de configuration dans un plugin

Un plugin, notamment un plugin de squelette, dépendant de plusieurs autres plugins peut fournir un ou plusieurs fichiers de configuration. Cela permet notamment pour un squelette de fournir plusieurs configurations de départ/

Pour cela, il suffit de placer les fichiers YAML de configuration dans un sous-répertoire ieconfig/.

On peut également indiquer que ce fichier de configuration ne doit être proposé par l’importeur/exporteur de plugin que si certains plugins sont actifs en ajoutant dans le yaml du fichier de configuration :

Dernière modification de cette page le 11 août 2013

Retour en haut de la page

Vos commentaires

  • Le 28 août 2012 à 11:13, par Pierre-Jean En réponse à : Importeur / Exporteur de configurations : documentation développeur

    Bonjour,

    Est-il possible (et comment ?) d’utiliser ieconf pour appliquer à un site une configuration de base pré-enregistrée ?

    ex : type d’urls, forums/inscriptions activées ou non, librairie graphique à utiliser, activer les statistiques, etc.

    • Le 28 août 2012 à 12:16, par Joseph En réponse à : Importeur / Exporteur de configurations : documentation développeur

      Oui, tout à fait. Il faut que le site en question ait le plugin installé. Et il faut lui transmettre le YAML de configuration, qui peut, par exemple, avoir été produit à partir d’un autre site.

      Cordialement

    • Le 25 octobre 2012 à 10:49, par Mist. GraphX En réponse à : Importeur / Exporteur de configurations : documentation développeur

      Bonjour Joseph et merci pour ce développement (encore une fois) bien utile,

      Je découvre le concept et y’aurais t’il un exemple de fichier YAML que l’ont peut construire dans le cas d’une configuration auto de squelettes, qui utiliserait plusieurs plugins, n’ayant pas forcément de déclaration d’import ?
      En gros le YAML du squelette suffit ou chaque plugin doit il avoir déclaré sa méthode d’import séparément ?

      merci de ta réponse

    • Le 25 octobre 2012 à 11:02, par Joseph En réponse à : Importeur / Exporteur de configurations : documentation développeur

      Ben le meilleur exemple de YAML reste encore un export produit à partir du plugin lui-même.

      Le YAML ne se suffit pas à lui-même car IECONFIG ne sait pas ce qu’il doit faire a priori de ce qu’il contient. Autrement dit, seul ce qui est déclaré via les pipelines d’ieconfig est géré. Les autres éléments sont simplement ignorés.

      Ensuite, tu as deux possibilités :

      • mettre à jour les plugins utilisés pour que ces derniers déclarent leur configuration à IECONFIG. S’il s’agit simplement d’une ou plusieurs metas, ce n’est pas très compliqué. C’est la meilleure approche.
      • ton squelette gère lui-même la config de ces différents plugins et fait ses propres déclarations à IECONFIG.
    • Le 25 octobre 2012 à 11:31, par Mist. GraphX En réponse à : Importeur / Exporteur de configurations : documentation développeur

      Merci de ta réponse rapide ;-)

      -  j’ai testé avec ieconfig_metas. , sans résultats probants : je vais tester avec iecfg et la description complète d’import/export + yaml (mais le nombre de lignes a écrire m’as un peut fait peur quand j’ai parcouru le code ^^, du coup je procède souvent en dupliquant des BDD complètes suivant les configs, c’est plus rapide sur le coup mais pas top dans tous les cas).

    • Le 25 octobre 2012 à 11:58, par Joseph En réponse à : Importeur / Exporteur de configurations : documentation développeur

      Que veux tu dire par ’sans résultats probants’ ?

      Note : quand on ajoute un pipeline en dev, il faut absolument repasser par la page admin_plugin pour que la liste des pipelines soient recalculée.

      Il serait plus simple que tu décrives précisément ce que tu cherches à faire pour te donner une réponse adéquate.

    • Le 25 octobre 2012 à 12:58, par Mist. GraphX En réponse à : Importeur / Exporteur de configurations : documentation développeur

      ok, j’ai refait un test suite à ton message :

      1- plutot que de mettre la pipeline dans mon fichier global pipelines : je l’ai déplacé comme indiqué dans la doc dans un fichier à part (je sais pas si ça joue beaucoup)

      2- la ou je me plantais je pense : dans meta_serialize : je mettais toutes les intitulés de métas séparées par des virgules, et en regardant du coté de manuel_site j’ai vu que ... le prefixe suffit (honte à moi)

      3- au départ je cherchais ma boite/case a cocher en dessous de Menus pensant que au dessus c’était la configuration globale du site : mais non :)

      Conclusion ça marche : comme eût dit steeve job : marvelous, fantastic, amazing !!!! ^^

      sinon juste un truc (mais c’est dans bcp de plugins spip) : souvent dans les listes de case a cocher il est rare qu’il y ai : tout-cocher , et c’est bien pratique pourtant ;-) dès fois c’est plus simple de décocher 3 choix sur 100 que l’inverse.

      Merci de tes conseil et développements, l’étape prochaine est le test sur l’import de config de squelette.

    • Le 25 octobre 2012 à 13:43, par Joseph En réponse à : Importeur / Exporteur de configurations : documentation développeur

      1- plutot que de mettre la pipeline dans mon fichier global pipelines : je l’ai déplacé comme indiqué dans la doc dans un fichier à part (je sais pas si ça joue beaucoup)

      Non ça ne change rien.

      2- la ou je me plantais je pense : dans meta_serialize : je mettais toutes les intitulés de métas séparées par des virgules, et en regardant du coté de manuel_site j’ai vu que ... le prefixe suffit (honte à moi)

      Oui, juste le nom de la meta et non des sous-meta contenues dans le tableau serializé.

      sinon juste un truc (mais c’est dans bcp de plugins spip) : souvent dans les listes de case a cocher il est rare qu’il y ai : tout-cocher , et c’est bien pratique pourtant ;-) dès fois c’est plus simple de décocher 3 choix sur 100 que l’inverse.

      Tout à fait. Je vais essayer de fixer ça.

    • Le 25 octobre 2012 à 14:07, par Mist. GraphX En réponse à : Importeur / Exporteur de configurations : documentation développeur

      Que du bonheur ;-)

      Maintenant que je suis lancé et que j’ai compris le fonctionnement je vais essayer de compléter les plugins de la zone que j’utilise pour qu’ils intègrent cette fonctionnalité (si ça ,ne pose pas de problème à leurs auteurs évidement), car ça mérite d’être étendu et intégré à tous les plugins, comme les faqs- aussi je trouve.

      @++

    • Le 25 octobre 2012 à 15:14, par Joseph En réponse à : Importeur / Exporteur de configurations : documentation développeur

      Au fait, je viens de mettre la doc à jour concernant la taille des icones sous SPIP 3 :

      L’icône doit être en 16x16 pixels. Par ailleurs, sous SPIP 3, si l’icône est situé d’un répertoire de thème (classiquement prive/themes/spip/images/), son nom est suffisant, il est inutile de préciser le chemin.

    • Le 25 octobre 2012 à 17:48, par Joseph En réponse à : Importeur / Exporteur de configurations : documentation développeur

      Et le plugin vient d’être mis à jour pour proposer une option ’Sélectionner tout’. Une mise à jour du plugin Saisies est elle aussi nécessaire.

    • Le 25 octobre 2012 à 20:02, par Mist. GraphX En réponse à : Importeur / Exporteur de configurations : documentation développeur

      si l’icône est situé d’un répertoire de thème (classiquement prive/themes/spip/images/), son nom est suffisant,

       ; -) merci de l’info, effectivement je mettais le path complet : comment as-tu deviné ?? :)

      Et le plugin vient d’être mis à jour pour proposer une option ’Sélectionner tout’. Une mise à jour du plugin Saisies est elle aussi nécessaire.

      la cerise sur le gateaux !!! ^^

      Merci pour tout et A++

    Répondre à ce message

  • Le 30 janvier 2011 à 08:30, par Déesse A. En réponse à : Importeur / Exporteur de configurations : documentation développeur

    Joli travail Joseph, mais la longueur de ce que tu as dû développer me conforte dans l’idée que le problème de fond est que CFG est fondamentalement perdant en utilisant la table standard des metas pour y fourrer pêle-mêle tous les paramètres de configuration de tous les plugins. Avec la balise#CONFIGURER_METAS que j’ai proposée, on stocke ces paramètres dans une table SQL séparée qu’il suffit de sauver comme n’importe quelle table. Je serais curieux de voir combien de ligne de code il te suffirait d’écrire pour prendre en compte ce cas là (repérable par l’existence dans plugin.xml de la balise XML « meta ») dans ce que tu as fait : juste une bouton radio à cocher il me semble.

    • Le 30 janvier 2011 à 14:27, par Joseph En réponse à : Importeur / Exporteur de configurations : documentation développeur

      Le but de l’importeur/exporteur de config est d’être indépendant du système de configuration utilisé par chaque plugin et de ne pas être limitatif.

      Il reste qu’il a toujours besoin qu’on lui dise ce qu’il doit exporter / importer et de quelle manière. Il lui faut également pour la présentation une icône et une chaîne de langue au minimum.

      Il est à noter que le pipeline ieconfig_metats ne fait aucune hypothèse sur la manière dont est alimentée la table spip_meta (via CFG ou autre mécanisme).

      Il n’y a pas encore de mécanisme pour déclarer simplement que ce qu’on doit exporter est le contenu d’une table spécifique mais effectivement ca ne devrait pas être très long de faire un pipeline ieconfig_table pour spécifier que ce qu’on exporte est une table spécifique.

      L’intérêt du pipeline ieconfig, certes un peu complexe, c’est qu’il est possible de faire des imports/exports plus complexes.

      Cela est pour le moment utilisé par exemple par Menus et noiZetier. Pour Menus on peut choisir ainsi quels menus exporter (les infos des menus étant stockés dans deux tables) et à l’import de choisir lesquels importer et, en cas de conflit avec un menu déjà existant, de renommer à la volée le menu à importer ou bien de remplacer le menu existant.

      Idem pour le noiZetier où l’import/export est lui aussi plus complexe. D’ailleurs l’import de noisettes pour le noiZetier passe en plus par un autre pipeline propre au noiZetier. Ce pipeline est utilisé par le garde-noisettes (qui possède son propre version_base) pour mettre à jour les paramètres des noisettes à la volée si jamais la config de noisettes importées correspond à une version précédente des noisettes.

      Quoiqu’il en soit, il est toujours possible de faire évoluer ieconfig en lui ajoutant des mécanismes génériques pour les méthodes les plus courantes de stockage des paramètres, tant qu’on laisse la souplesse de faire des import/export plus spécifiques pour les plugins qui le nécessitent.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Import ICS 2 (agenda distant)

    2 août – 35 commentaires

    La version 2 du plugin « import ICS » en reprend la principale fonctionnalité, à savoir l’ajout automatique d’évènements distants dans la liste des évènements d’un site. À la différence de la première version, elle ne dépend pas du plugin « Séminaire » et est (...)

  • Newsletters

    16 janvier 2013 – 374 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, (...)

  • CKeditor 3.0

    4 octobre 2009 – 1217 commentaires

    CKeditor est l’évolution de l’éditeur WYSIWYG : FCKeditor, avec ce plugin vous pourrez utiliser cet éditeur à la place de l’éditeur de spip tout en laissant le choix à vos auteurs de l’éditeur qu’ils préfèrent utiliser. Attention : cet éditeur WYSIWYG (...)

  • GIS 4

    11 août 2012 – 1284 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

  • SPIPr

    23 mars 2015 – 75 commentaires

    SPIPr est à la fois une famille de squelettes et un framework pour le développement front avec SPIP. Prêt à l’emploi, thémable, responsive, et conçu dans une approche d’industrialisation et de développement rapide. Documentation source : (...)

Ça spipe par là