[SPIP Zone] Formulaires CFG/CVT : stockage des données dans un dépot, fonction d'installation / désinstallation

Bonjour à tous,

Je teste en ce moment les formulaires CVT dans CFG. C’est vraiment super, mais je rencontre encore quelques petits soucis, notamment sur le stockage des données.
J’ai deux formulaires, que souhaite garder sous la forme CVT/CFG (pour les avoir en ajax et exportables sur l’interface publique)
Je souhaite que mes données s’enregistrent dans une entrée de spip_meta, sous forme sérialisée (avec un casier).
dépot formulaire 1 : nom_plugin/casier1/
dépot formaulaire 2 : nom_plugin/casier2/

J’ai bien défini les options CFG au niveau de chaque formulaire (), mais les informations persistent à s’enregistrer dans les entrées /formulaire1/ et /formulaire2/ de spip_meta. Ces informations soivent être aussi dans les fonds qui appellent ces formulaires ?

Mes questions:

  • Est il possible de personnaliser ses dépots avec les formulaires CFG/CVT ? Si oui, où et comment surcharger le comportement par défaut (stockage dans une entrée de spip_meta au nom du formulaire).

  • Concernant la fonction d’installation / désinstallation de mon plugin, les chose sont pas encore super claires pour moi.
    Lors de l’installation, suis-je obligé d’initialiser précisement chaque entrée de mon dépot ? CFG ne prend il pas cela en charge ?
    Lors de la désinstallation, dois-je nettoyer chaque entrée de mes dépots ?
    i.e. : dois-je appeler effacer_config() sur :

  • /mon_plugin/ ?

  • /mon_plugin/casier1 et /monplugin/casier2 ?

  • /mon_plugin/casier1/prop1, /mon_plugin/casier1/prop2, /mon_plugin/casier2/prop1 etc…

Merci d’avance, et à bientôt.

Augustin

Gus ashaszin a écrit :

Bonjour à tous,

Je teste en ce moment les formulaires CVT dans CFG. C'est vraiment super, mais je rencontre encore quelques petits soucis, notamment sur le stockage des données.
J'ai deux formulaires, que souhaite garder sous la forme CVT/CFG (pour les avoir en ajax et exportables sur l'interface publique)
Je souhaite que mes données s'enregistrent dans une entrée de spip_meta, sous forme sérialisée (avec un casier).
dépot formulaire 1 : nom_plugin/casier1/
dépot formaulaire 2 : nom_plugin/casier2/

J'ai bien défini les options CFG au niveau de chaque formulaire (<!--depot=metapack--><!--nom=nom_plugin--><!--casier=casier1-->), mais les informations persistent à s'enregistrer dans les entrées /formulaire1/ et /formulaire2/ de spip_meta. Ces informations soivent être aussi dans les fonds qui appellent ces formulaires ?

Non, elles ont juste à être dans le fichier de formulaire appelé, donc, dans /formulaires/formulaire1.html pour ton exemple. Cependant, je vois la regexp analysant la chose et il faut "<!-- " avec un espace (preg_replace_callback('/(<!-- ([a-z0-9_]\w+)(\*)?=)(.*?)-->/sim', ... )

Pour info, j'en ai qui fonctionnent avec ces paramètres :

<!-- depot=metapack -->
<!-- autoriser=configurer -->
<!-- nom=explos -->
<!-- casier=flog -->

- Est il possible de personnaliser ses dépots avec les formulaires CFG/CVT ? Si oui, où et comment surcharger le comportement par défaut (stockage dans une entrée de spip_meta au nom du formulaire).

Ca devrait se faire comme demandé. Sinon, il est possible de surcharger les fonctions du formulaires avec certains points d'entrées de CFG, par exemple, sur le formulaire précédent qui se nomme "explos_parametrer_flog.html", j'ai un fichier de fonction "explos_parametrer_flog_fonctions.php" contenant :

<?php
function cfg_explos_parametrer_flog_post_traiter(&$cfg){
         include_spip('inc/explos_parametrer');
         explos_config_sauver_secteur($cfg->param['casier'], $cfg->val['secteur']);
}
?>

Qui effectue une action après l'enregistrement de CFG.

- Concernant la fonction d'installation / désinstallation de mon plugin, les chose sont pas encore super claires pour moi.
Lors de l'installation, suis-je obligé d'initialiser précisement chaque entrée de mon dépot ? CFG ne prend il pas cela en charge ?
Lors de la désinstallation, dois-je nettoyer chaque entrée de mes dépots ?
i.e. : dois-je appeler effacer_config() sur :

CFG ne prend ni en charge l'initialisation, ni la suppression des variables lors de l'installation, suppression. A réfléchir peut être si tu as une idée de comment faire...

- /mon_plugin/ ?

Pour supprimer tout le contenu d'une entrée, simplement
effacer_config('mon_plugin');

--
MM.

Merci Matthieu pour ces explications très claires.

Dans mon cas c’est bien l’absence d’espace dans les paramètres de CFG qui causait problème. Tout marche comme prévu, maintenant, génial !

CFG ne prend ni en charge l’initialisation, ni la suppression des variables lors de l’installation, suppression. A réfléchir peut être si tu as une idée de comment faire…

Pour l’initialisation, au hasard, je dirais parser le formulaire et s’il y a des champs « value » spécifiés dans les input, les enregistrer. Mais ça m’a pas l’air super propre comme méthode… on pourrait avoir besoin de forcer une « value » sans qu’elle s’enregistre en base au départ.

Pour la suppression par contre, si j’ai bien compris, faire effacer_config(‹ nom ›); pour chaque paramètre « nom » des formulaires devrait marcher. mais bon, ça devient du luxe là :wink:

A bientôt.