cfg : références

Explications détaillées sur l’utilisation de CFG, le plugin de configuration.

CFG est un plugin pour SPIP qui facilite le paramétrage d’autres plugins ou squelettes en permettant de créer facilement des formulaires de configuration.

Cet article explique les bases de création de ces formulaires et l’utilisation des données issues de ceux-ci. Des liens sont proposés dans l’article découvrir les fonctions avancées de CFG.

Unique fichier de configuration

CFG a été motivé par le besoin récurrent de fabriquer des configurations de plugins ou squelettes.

Son leitmotiv est donc la simplicité. C’est pourquoi une configuration « quelque_chose » (un plugin, un squelette ou ce que l’on veut) est basée sur l’unique fichier fonds/cfg_quelque_chose.html [1].

Ce « fond » contient un formulaire et des propriétés/options qui sont transmises à CFG.

La modification des données (par un administrateur du site) se fait par simple appel de l’action CFG comme
ecrire/?exec=cfg&cfg=quelque_chosequelque_chose correspond au nom du fichier fonds/cfg_quelque_chose.html.

Le formulaire

Il s’agit d’un formulaire HTML standard, interprété comme un squelette. Les données gérées sont reconnues d’après l’attribut « name » des balises de formulaire comme

  • <input type="text" name="truc"...>,
  • <select name="truc"...>,
  • <textarea name="truc" ...>,
  • etc.

Notes sur le nomage des attributs « name »

  • Les noms commençant par _cfg_ sont réservés au fonctionnement interne.
  • Les noms commençant par id_ peuvent poser problème. [2]

Transmettre une action sécurisée
L’action du formulaire étant sécurisée, il faut lui adjoindre les données de contrôle, tout simplement en faisant suivre <form ...> par des « hidden » le plus simple étant :
<form method="post" action="#SELF">[(#ENV{_cfg_}|form_hidden)]

Boutons d’envoi et de suppression
Enfin, les submit de validation ou de suppression doivent être nommés respectivement _cfg_ok ou _cfg_delete (noms réservés)

Formulaire minimal

Un formulaire minimal serait donc :

<form method="post" action="#SELF"><div>[(#ENV{_cfg_}|form_hidden)]

<input type="text" name="mon_text" value="#ENV{mon_text}" />
<textarea name="mon_area">[(#ENV{mon_area})]</textarea>

<input type="submit" name="_cfg_ok" value="<:OK:>" />
<input type="submit" name="_cfg_delete" value="<:Supprimer:>" />
</div></form>

Comme on peut le voir, les valeurs des données sont récupérables par #ENV{truc}

Important : La méthode d’analyse des formulaires de CFG implique de respecter l’ordre suivant (type puis name, puis les éventuelles class css, puis le reste) dans les balises utilisées (textearea, select, input...).
<input type=... name=... class=... .../>
<textearea/select name=... class=... .../>

Les propriétés de l’objet cfg

Il est possible en plaçant des remarques au format html commençant par propriete= de spécifier des propriétés intrinsèques de l’objet CFG qui manipulera le formulaire.

Par exemple, on peut ainsi définir le titre du formulaire (notez l’espace après <!-- et le = collé au nom du paramètre) :
<!-- titre=Le titre du formulaire -->

Il est possible alors de jouer avec les balises SPIP et les fichiers de langue :
<!-- descriptif=<multi>[fr]Descriptif français [en]In english</multi>-->
<!-- descriptif=<:prefixe_plugin:description_plugin:>-->
Ici, le descriptif sera complètement interprété, comme un squelette ... y compris boucles et toute la machine de guerre SPIP.

Propriété Description
titre Un des 2 titres, fera le gros titre si boite est aussi présent
boite Le titre de la boite formulaire, défaut titre si présent, ’Configuration machin" sinon
descriptif Le descriptif affiché en haut de colonne gauche
nom Le nom du meta où sera stockée la configuration, par défaut c’est le nom du formulaire, xxx dans fonds/cfg_xxx

Il existe d’autres propriétés avancées que vous pouvez trouver dans l’article API CFG : Paramètres des formulaires

Utilisation des données

Les données stockées sont sérialisées sous le nom « quelque_chose » dans la table spip_meta.

On les récupère dans les squelettes avec la balise #CONFIG qui est étendue par cfg pour extraire les subdivisions avec le séparateur /
Par exemple #CONFIG{quelque_chose/mon_area} donnera la valeur du champs mon_area produite par le formulaire fonds/cfg_quelque_chose.html

Depuis le php, on peut utiliser similairement lire_config('quelque_chose/mon_area')

#CONFIG{} ou lire_config() admettent comme deuxième paramètre la valeur à retourner par défaut. Par exemple #CONFIG{quelque_chose/mon_area,defaut area} donnera defaut area si quelque_chose ou mon_area sont vides.

Notes

[1Le « fond » CFG utilisé sera le premier trouvé dans l’ordre des priorités de SPIP... En priorité dans le répertoire squelettes/, puis dans un des plugins actifs, puis dans dist/, puis dans ecrire/

[2Les variables postées commençant par « id_ » vont s’inscrire dans la la chaine produite par la balise #SELF (comportement standart de SPIP). Si #SELF est utilisée dans le formulaire CFG par <form method="post" action="#SELF">, c’est sa valeur qui sera prise en compte par SPIP lors de l’envoi du formulaire, et non la nouvelle valeur choisie par l’utilisateur (en fait, 2 variables sont envoyées : une en GET (avec l’action="#SELF" et une en POST (le champ du formulaire) de même nom, et SPIP prend prioritairement GET lorsque l’on demande une variable avec sa fonction _request()

Evidemment, toute contribution est la bienvenue, vous pouvez facilement demander à devenir co-rédacteur.

Discussion

24 discussions

  • 1

    bonjour,

    depuis une mise à jour de la version SPIP 2.0.10 stable vers SPIP 2.0.10 [14734]

    en utilisant CFG 1.14.1 [31734]

    CFG ne fonctionne plus et j’obtiens les errreur suivantes :

    -  la page ecrire/ ?exec=cfg donne :

    Erreur...

    Fichier cfg introuvable

    -  les pages de configuration d’autres plugins donnent toutes des erreurs 404.

    J’ai vidé les caches SPIP et navigateurs, et même le dossier tmp, mais rien n’y fait , ça ne fonctionne pas !

    PS : si je repasse en SPIP 2.0.10 stable ça remarche, apparemment y aurait une erreur sur SPIP ??

    • c’est corrigé dans la version SPIP 2.0.10 [14737].

      cfg remarche très bien.

      comme je l’avais cru s’était lié à SPIP, suite à la correction Changeset 14735 .
      @+

    Répondre à ce message

  • 4
    babbibel

    Bonjour à tous,

    Je découvre l’utilisation de CFG et je ne comprends pas pourquoi cette boucle ne fonctionne pas. #CONFIG{babbi/tri, par date} semble ne pas être interprété...

    <BOUCLE_sous-menus(RUBRIQUES) {id_parent} {#CONFIG{babbi/tri, par date}} >
    <li><a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero|couper{80})]</a></li>
    </BOUCLE_sous-menus>

    Pourtant #CONFIG{babbi/tri, par date} contient la bonne valeur puisque j’arrive à l’afficher.

    Je ne vois pas ce que j’ai pu oublier...

    Merci d’avance.

    • Matthieu Marcillaud

      c’est le critère par qui doit être écrit en dur :

      {par (#CONFIG{babbi/tri, date})}

      Cela marchera mieux.

    • babbibel

      Merci Matthieu, mais ’est de ma faute, j’ai oublié de préciser que le « par » est contenu dans la variable.

      « #CONFIG{babbi/tri, date} renvoie donc »par titre" par exemple.

    • Matthieu Marcillaud

      J’avais bien compris, mais SPIP ne peut pas calculer les noms de critères. Il peut par contre souvent calculer leurs arguments. Tu dois écrire {par QQC}, QQC pouvant être une balise SPIP.

    • babbibel

      Merci Matthieu pour cette réactivité...

      J’ai essayé et tu as sans doute raison. ça ne fonctionne toujours pas mais j’ai changé d’erreur... Je cherche encore.

      Pourtant il n’y a pas de problème avec le {0, (#CONFIG{babbi/nb_articles})}. Mais pour le critère de tri... Je galère.

    Répondre à ce message

  • 1

    Bonjour, je me heurte à un sérieux problem avec cfg.

    Les images et formulaire inséré dans les articles ne sont plus traités par spip : je me retrouve avec du texte type <img34|left>ou <form3|center> en lieu et place de mes documents.

    Je ne trouve rien sur ce sujet. Je suis sous xamp et mamp en local et 90 plan OVH.

    Merci de votre aide.

    PS je ne sais pas ce que ces pdf font dans ce post ?

    • Je me réponds à moi-même et merci aux utilisateurs de la liste, c’est la plugin de gestion des metas qui rajoute des bouts de code <strong></strong> à laplace de chaque espace dans la balise #TEXTE. Il désactive aussi le fonctionnement des balise form, emb, doc...

    Répondre à ce message

  • 1

    Merci pour toute ces infos sur le plugin cfg mmais apparement il a disparu de la circulation donc puisque une bonne partie des plugin s’appuie sur un plugin cfg récent donc impossible d’installer de nouveau plugin donc mon spip est inutilisable du moins je dois laisser tomber l’idée de rajouter tel ou tel chose. Si jamais vous retrouvez une trace de ce plugin, je suis preneur

    Répondre à ce message

  • L’elfe Sylvain

    J’avais un problème de décompression du cfg.zip !!!

    Mille mercis à denisb

    Répondre à ce message

  • L’elfe Sylvain

    j’ai installé et activé le plugin CFG sur deux plateformes Spip (1.9.2e, 2.03) et dans les deux cas je me heurte à un problème pour exécuter le plugin. Les messages sont respectivement ’fichier exec/cfg introuvable’, ’fichier cfg introuvable’.

    Que dois-je faire ?

    Répondre à ce message

  • En me basant sur le tuto du plugin CFG, je crée plusieurs checkbox à l’aide d’une boucle :

    < BOUCLE_fonction(MOTS)>
    < input type="checkbox" name="#ID_MOT" [checked="(#ENV#ID_MOT)"] value="#TITRE" /> [(#DESCRIPTIF)] 
    < /BOUCLE_fonction>

    Le problème c’est qu’après avoir coché quelques cases et une fois mon formulaire envoyé, le plugin m’indique « Enregistrement de ... effectué » mais les cases ne sont plus cochées !! Quelqu’un a-t-il une solution ?? Je désespère...

    Merci beaucoup.

    Répondre à ce message

  • 1

    Bonjour,
    Malgré des verres correcteurs, une loupe voire un microscope, je ne suis pas arrivé à trouver le lien pour télécharger le plugin ?
    y a t il plusieurs versions ?
    où peut on les trouver ?
    merci de penser à moi.
    bonne journée

    • Bonjour,

      C’est vrai que cela ne saute pas au yeux.

      Il faudrait peut être rajouter le mot « téléchargement » devant

      Pour télécharger CFG il faut cliquer sur :

      cfg dans les zip de la zone qui se trouve juste un peu au dessus.

    Répondre à ce message

  • Bonjour en version spip 2 beta lorsque CFG est installé, et que je vais dans la page des plug-in en partie privée aucun plug-in ne s’affiche et si j’essaie d’aller dans la page de configuration de CFG il n’y a que le titre qui apparait c’est à dire « Configuration des modules ».

    Quel est le problème ?

    Merci

    Répondre à ce message

  • 2

    Bonjour,
    Suite à la mise à jour du plugin CFG, et sur un SPIP 1.9.2d j’ai une série de message d’erreur en début de page lorsque j’appelle la configuration du plugin en cliquant sur son icône

    Warning : in_array() [function.in-array] : Wrong datatype for second argument in ...../ecrire/public/composer.php(48) : eval()’d code on line 48

    Le fichier en question dans SPIP n’est pas modifié.
    Pouvez vous me dire ce qui cloche ?
    Le site est hébergé chez OVH.

    Merci de votre aide
    Cordialement
    X.T.

    • Bonjour,

      Idem ou presque : L’activation du plugin Spip2Spip provoquait une fatal error dans Gestion des plugins, la mise à jour de CFG y a palliée... mais effectivement CFG et toutes les configurations des plugins affichent une dizaines de lignes de « in_array() [function.in-array] : Wrong datatype for second argument in ...../ecrire/public/composer.php(48) : eval()’d code on line 46 » (46 chez moi et non pas 48... ?)

      (La synchronisation des articles avec Spip2Spip ne fonctionne pas)

      Même demande, même attente.

      Le site est hébergé aussi chez OVH. Merci de votre aide

      Cordialement aussi :-)

    • Ah ! En désactivant Autorité (Peut-être à mettre à jour), chez moi, toutes les lignes warning ont disparu.

      (Mais la synchro ne fonctionne toujours pas)

    Répondre à ce message

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