SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 33 visiteurs en ce moment

Accueil du site > Outils pour plugins > Config (CFG) > API CFG : Extensions et points d’entrées

API CFG : Extensions et points d’entrées

14 avril 2008 – par Matthieu Marcillaud – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

2 votes

Une grande réécriture du code a été faite entre les versions 1.4 et 1.7 de CFG afin de lui permettre d’être étendu assez facilement, complété par 1.10.2.

Il y a essentiellement 4 types d’extensions :
-  créer un dépôt,
Ou en utilisant les points d’entrées de CFG :
-  créer un type de validation pour un champ de formulaire,
-  créer une action sur un champ de formulaire,
-  créer une action sur un paramètre de formulaire,

Créer un dépot

Les dépôts sont les méthodes de stockage des informations passées à CFG. Pour utiliser un dépôt dans un formulaire, il faut passer le paramètre <!-- depot=nom_du_depot -->. Les dépôts fournis avec CFG sont « meta », « metapack », « tablepack », « table » et « php ».

Ils peuvent être appelés aussi avec la balise #CONFIG et les fonctions lire_config(), ecrire_config() et effacer_config(), par exemple comme ceci : #CONFIG{php::nom/champ}

Le code des dépots se situent dans le dossier cfg/depots/xxx.php. Ils se composent d’une classe cfg_depot_xxx et d’au moins 5 fonctions :
-  cfg_depot_xxx($params=array()), constructeur de la classe,
-  lire(),
-  ecrire(),
-  effacer(),
-  et charger_args($args) qui détermine la manière dont sont traités les arguments passés à la balise #CONFIG ou aux fonctions lire_config(), ecrire_config() et effacer_config()

Pour ajouter un nouveau dépôt, il suffit de créer un nouveau fichier php dans ce dossier (ou dans la même arborescence dans un autre plugin).

Les points d’entrées

CFG dispose maintenant de points d’entrées, qui peuvent être utilisés pour les 3 extensions décrites ensuites. Actuellement, les actions possibles sont :
-  pre_charger : avant la lecture du dépôt
-  charger : après la lecture du dépôt
-  pre_verifier : après validation du formulaire, mais avant de récupérer les valeurs postées
-  verifier : après la récupération des valeurs postées
-  pre_traiter : si la vérification était OK, avant le traitement (écriture ou effacement dans le dépôt)
-  post_traiter : après le traitement dans le dépôt.

Un formulaire peut utiliser ces points d’entrées pour effectuer des opérations qui lui sont propres, comme des post traitements. Il lui suffit de déclarer alors la fonction : function cfg_toto_post_traiter(&$cfg){ ... }, par exemple dans le fichier fond/cfg_toto_fonctions.php si le formulaire est fond/cfg_toto.html.

Le cas de la validation est particulier car les messages d’erreurs doivent être placés au bon endroit. Avant CFG 1.10.2, la fonction verifier retournait le tableau d’erreurs, elle doit maintenant utiliser la fonction ajouter_erreurs() de préférence. Voir ci-dessous.

Types de validations

Il y a 2 façons de vérifier les données d’un formulaire CFG.

Vérifier tous les champs d’un coup

La première est de faire, un peu comme la nouvelle API sur les formulaires dynamiques de SPIP (version de développement), une fonction qui analyse les valeurs postées et renseigne un tableau d’erreur.

Prenons l’exemple d’un formulaire fonds/cfg_toto.html contenant un champs <input type="text" name="annee" />. Il est possible de créer un fichier fonds/cfg_toto_fonctions.php contenant :

Si $err n’est pas vide, la vérification échoue et le traitement du formulaire ne se fait pas.

Vérifier selon un type de champ

La seconde façon est de vérifier un champ en le déclarant d’un certain type. Cela se traduit en CFG en passant une classe css « type_yy » au champ en question. Attention, l’attribut class doit suivre l’attribut name. Par exemple : <input type="password" name="mon_passe" class="type_pwd" /> indique que ce champ est de type « pwd », ce qui entraine la lecture, par CFG des points d’entrées proposés dans le fichier cfg/classes/type_pwd.php. Il y a actuellement dans ce fichier :

Le point d’entrée utilisé est « verifier », et 2 paramètres sont passés : le nom du champ et l’instance de la classe cfg_formulaire.  [1] Une fonction ajouter_erreur($champ, $message) permet d’ajouter un message ($message) d’erreur sur le champ nommé (attribut name) $champ.

Pour créer un nouveau type de champ, il suffit de créer un fichier cfg/classes/type_yy.php contenant des fonctions cfg_action_quoi().

Action sur un champ de formulaire

Il est possible de réaliser des actions plus complexes que les verifications (type_yy) en utilisant une classe css « cfg_yy ». Au lieu de passer $nom et $val comme dans les types, se sont $nom et la classe php CFG qui sont transmises, ce qui permet de réaliser nombre d’action.

En voici une très simple, du fichier cfg/classes/cfg_couleur.php, qui revient à mettre automatiquement dans un formulaire CFG le paramètre <!-- selecteur_couleur=1 --> si au moins un champ possède la classe « cfg_couleur » :

Action sur un paramètre de formulaire

Comme les 2 extensions précédentes, il est possible d’indiquer des actions à réaliser en fonction de paramètres donnés dans le formulaire, sous 2 conditions : que le paramètre soit non vide et qu’un fichier cfg/params/mon_parametre.php existe.

Ces actions sont faites juste après les actions proposées par les classes css. 2 arguments sont passés aux fonctions : $valeur est la valeur du paramètre, et &$cfg est la classe php de CFG.

Voici par exemple une partie de ce que le paramètre « selecteur_couleur » effectue : mettre dans le head html les scripts javascripts nécessaires à son fonctionnement :

Notes

[1 Avant CFG 1.10.2, l’api était différente et ne recevait que le nom du champs et sa valeur. Le changement permet d’homogénéiser (et permettre d’autres actions)

Retour en haut de la page

Vos commentaires

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.

  • Navigation AJAX

    31 janvier – 18 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)