ATTENTION : cette documentation n’est plus à jour. Se référer dorénavant à Importeur / Exporteur de configurations : documentation développeur.
IEconfig (Importeur / Exporteur de Configurations) a pour objectif de permettre à plusieurs plugins de pouvoir exporter leur configuration respective dans un seul et même fichier de configuration au format YAML.
Cela permet à un utilisateur de pouvoir exporter (et de restaurer) ses différentes configurations en une seule fois. Par ailleurs, un squelette utilisant plusieurs plugins peut ainsi fournir un fichier de configuration pour configurer ces différents plugins en une seule fois.
Dépendances
IECFG nécessitent les plugins saisies, yaml et verifier.
Compatibilité
IEconfig est compatible avec Mes Fichiers
Plugin stockant leur configuration dans la table spip_meta
Pour les plugins stockant leurs données de configuration dans la table spip_meta (ce qui concerne entre autres de nombreux plugins utilisant CFG), il est possible de déclarer facilement à IEconfig les meta à exporter. IEconfig générera un formulaire d’import/export simplifié (exporter : oui / non, importer : oui / non).
Cela se fait via un pipeline dédié : ieconfig_metas.
Il faut tout d’abord déclarer le pipeline dans le plugin.xml
du plugin :
<pipeline>
<nom>ieconfig_metas</nom>
<inclure>prefixe_plugin_ieconfig_metas.php</inclure>
</pipeline>
puis créer un fichier prefixe_plugin_ieconfig_metas.php
contenant :
<?php
function prefixe_plugin_ieconfig_metas($table){
$table['prefixe_plugin']['titre'] = nom_du_plugin;
$table['prefixe_plugin']['icone'] = 'chemin/image.png';
$table['prefixe_plugin']['metas_brutes'] = 'meta1,meta2,meta3';
$table['prefixe_plugin']['metas_serialize'] = 'meta4,meta5,meta6';
return $table;
}
?>
metas_brutes
permet d’indiquer des 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).
S’il y a plusieurs metas à sauver, il faut séparer leur nom par une virgule (ne pas ajouter d’espace).
Exemples concrets :
Pour le plugin Metas :
function metas_ieconfig_metas($table){
$table['metas']['titre'] = _T('metas:configuration_metas');
$table['metas']['icone'] = 'images/metas-24.png';
$table['metas']['metas_brutes'] = 'spip_metas_title,spip_metas_description,spip_metas_keywords,spip_metas_mots_importants';
return $table;
}
Pour le plugin Dublin Core (qui utilise CFG) :
function dublin_core_ieconfig_metas($table){
$table['dublin_core']['titre'] = _T('dublin_core:dublin_core');
$table['dublin_core']['icone'] = 'images/dublin_core-24.png';
$table['dublin_core']['metas_serialize'] = 'dublin_core';
return $table;
}
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.
Le pipeline ieconfig pour des exports/imports plus complexes
Pour qu’un plugin puisse exporter/importer sa configuration avec IEconfig, 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/...
Construction du formulaire d’export
Pour construire le formulaire d’export, IEconfig appelle le pipeline ieconfig 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 Saisies : Doc complémentaire).
Tableau à exporter
Pour construire le tableau d’export, IEconfig appelle le pipeline ieconfig 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, IEconfig appelle 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 Saisies : Doc complémentaire).
Import de la configuration
Pour importer la configuration, IEconfig appelle le pipeline ieconfig 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 les plugins
Il suffit de placer les fichiers YAML dans un sous-répertoire ieconfig/
.
On peut indiquer que ce fichier de config ne doit être affiché que si certains plugins sont actifs en ajoutant dans le yaml :
- necessite:
- 'plugin1'
- 'plugin2'