CFG 1.2

Une seconde revolution

La version 1.2 de CFG introduit une balise #FORMULAIRE_CFG (pour spip 1.9.3) et des fonctions ecrire_config() et effacer_config().

Note de version : Ces informations sont devenues désuettes.
Reportez-vous à la page CFG pour une documentation à jour.

Généralités sur CFG

Le plugin CFG permet de créer facilement un formulaire pour gérer des paramètres d’un plugin ou d’un squelette. Les informations générales sont détaillées ici : cfg : références ; CFG est téléchargeable en zip ou par svn (svn ://zone.spip.org/spip-zone/_plugins_/_stable_/cfg/). Cet article détaille les changements/apports depuis la version 1 de CFG.

Apports de la version 1.2

Quelques remaniement internes du code, de la documentation des fonctions et de la persévérence plus tard et l’on obtient une version qui :
-  homogénéise le passage de paramètres à CFG depuis un fond.
-  fourni une balise #FORMULAIRE_CFG pour l’affichage d’un formulaire CFG dans un squelette (nécessite SPIP 1.9.3)
-  fourni des fonctions pour écrire et modifier les contenus arborescents générés par CFG (storage meta et extra uniquement) : ecrire_config() et effacer_config().
-  toutes les chaînes de langues sont maintenant regroupées dans le fichier lang/cfg_fr.php et attendent des traductions/traducteurs.

Des paramètres pour CFG

Il était possible de donner à CFG des paramètres en utilisant #REM ou <!--. Quelques problèmes survenaient avec la balise #FORMULAIRE_CFG et l’utilisation de <!-- pour transmettre des paramètres. L’ensemble à été revu.

Seul <!-- est conservé : il permet de passer et des champs de langue <:plugin:champs:> et des balises SPIP, et fonctionne indépendamment dans la balise #FORMULAIRE_CFG ou dans le traditionnel ?exec=cfg.

L’utilisation de [(#REM) param=valeur] continue à être reconnu, mais est considéré comme obsolète.

Exemple de passage de paramètres :

<!-- titre=Exemple stockage dans fond 'cfg_exemple_meta' -->
<!-- autoriser=voir -->
<!-- nom=nom_de_stockage -->
<!-- casier=dossier_de_stockage -->

Une balise #FORMULAIRE_CFG

Elle permet d’afficher un formulaire CFG dans un squelette.

Nota : Cette balise est expérimentale. Les paramètres et leur ordre sont susceptibles d’évoluer, comme la balise, en fonction des retours d’utilisateurs.

#FORMULAIRE_CFG{$fond, $id?, $form?, $ajax?, $afficher_messages_cfg?}

$fond

Si un formulaire CFG est stocké dans fonds/cfg_mon_formulaire.html, il est possible de l’appeler par : #FORMULAIRE_CFG{mon_formulaire}

$id

Lorsque le formulaire nécessite un identifiant pour s’afficher (id_auteur, id_rubrique ou autre), il est à donner en second paramètre : #FORMULAIRE_CFG{test_auteur,#SESSION{id_auteur}} ou #FORMULAIRE_CFG{test_rubrique, #ID_RUBRIQUE}

$form

Permet de donner un formulaire personnalisé pour afficher quelque chose avant et/ou après le formulaire CFG. L’ensemble sera recalculé lors de la validation du formulaire : #FORMULAIRE_CFG{exemple,'',formulaires/mon_form}

Exemple de formulaire personnalisé :

<div class="cfg_exemples_perso">
Une boucle sur les champs de la table spip_cfg_exemples
<B_a>
<table class='spip' border='1' width='90%'>
<tr><th>id</th><th>description</th><th>texte</th></tr>
<BOUCLE_a(CFG_EXEMPLES)>
<tr><td>#ID_CFG_EXEMPLE</td><td>#DESCRIPTION*</td><td>#TEXTE*</td></tr>
</BOUCLE_a>
</table>
</B_a>
<INCLURE{fond=formulaires/formulaire_cfg_vue}{env}>
</div>

Ici, le formulaire personnalisé fait une boucle sur les champs d’une table que le fond CFG permet de modifier. Le formulaire CFG est appelé grace à <INCLURE{fond=formulaires/formulaire_cfg_vue}{env}>.

$ajax

Par défaut, seul le cadre contenant le formulaire est rechargé lorsqu’on le valide. En mettant ’non’ toute la page sera rechargée #FORMULAIRE_CFG{exemple_meta,'','',non}

Il faut cependant, pour que le calcul se fasse, qu’une balise , #CFG_TRAITER soit présente dans la page.

#CFG_TRAITER{#ENV{cfg_vue}}
...
#FORMULAIRE_CFG{exemple_meta,'','',non}

$afficher_messages_cfg

Par défaut, toutes les actions d’enregistrement/suppressions dans les formulaires, réussies ou non affichent un message.

Mettre ’non’ pour qu’aucun message ne soit affiché : #FORMULAIRE_CFG{exemple_meta,'','','oui','non'}

Des fonctions pour les scripts php

La version 1.2 introduit aussi deux fonctions qui permettent d’écrire des configurations comme le ferait un formulaire CFG. Tout ce qui peut être lu par la fonction lire_config() de CFG peut maintenant être écrit ou supprimé.

ecrire_config()
-  ecrire_config($chemin, $valeur, $serialize = true);
-  $chemin : le chemin comme celui de la fonction lire_config(),
-  $valeur : la valeur à écrire. Peut être un tableau de valeurs,
-  $serialize : les valeurs sont sérialisées par défaut, mais on peut, par exemple pour modifier les metas de configuration de spip, mettre a false.

effacer_config()
-  effacer_config($chemin);
-  $chemin : le chemin comme celui de la fonction lire_config() ou ecrire_config().

Exemples :

// 1) lecture
// rien ne change pour lire_config()
lire_config('descriptif_site');
lire_config('prefixe/mon/repertoire/mon_champ');
// extra d'un auteur
lire_config('~un_login/dossier/champ');
lire_config('auteur:8/dossier/champ'); // équivalent 
// extra d'une table
lire_config('article:2/dossier/champ');
lire_config('spip_articles:2/dossier/champ'); // équivalent

// 2) ecriture
// change le descriptif du site !
ecrire_config('descriptif_site', 'mon descriptif', false);
// des configurations diverses
ecrire_config('prefixe/champ', 'valeur');
ecrire_config('prefixe/dossier/champ', 'valeur');
ecrire_config('prefixe/dossier', array(...) ); // pleins de valeurs d'un coup
// un extra d'auteur
ecrire_config('~login/champ', 'valeur');
// un extra de rubrique
ecrire_config('rubrique:4/dossier/champ', 'valeur'); 

// 3) effacement
effacer_config('prefixe/dossier');
effacer_config('~login/champ'); 
// ...

Une plugin d’exemples : cfg_exemples

Il existe un plugin pour montrer quelques fonctionnalités avancées de CFG, particulièrement cette balise #FORMULAIRE_CFG, le plugin cfg_exemples (repertoire _plugins_/_test_/cfg_exemples/ de spip_zone)

Nota : La version svn contient des développements dont la stabilité coté API n’est pas forcément assurée ; leurs descriptions seront incorporées dès que définitivement adoptées.

Discussion

Aucune discussion

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