Carnet Wiki

IEconfig Carnet de Développement

Version 5 — Août 2013 Joseph

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'