SPIP-Contrib

SPIP-Contrib

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

288 Plugins, 197 contribs sur SPIP-Zone, 286 visiteurs en ce moment

Accueil > 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 – commentaires

5 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

[1Avant 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)

Dernière modification de cette page le 3 septembre 2008

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

  • ViaSPIP 3.1

    26 février 2016 – 10 commentaires

    Après la sortie de SPIP 3.1, voici la nouvelle version du squelette ViaSPIP qui reste dans la lignée des précédentes versions. ViaSPIP 3.1 est toujours un squelette généraliste pour SPIP, sous forme de plugin, visant à offrir une alternative au (...)

  • Rainette v1, la méteo au quotidien

    31 juillet 2009 – 202 commentaires

    Ce plugin permet d’afficher les conditions et les prévisions météorologiques d’une ville donnée à partir du flux xml fourni par le site weather.com(r).

  • Personnalisation graphique du squelette SoyezCréateurs

    19 août 2009 – 93 commentaires

    Il est possible de personnaliser l’affichage du squelette SoyezCréateurs de manière plus ou moins profonde. Changement dans les couleurs via CFG La page de CFG des couleurs de SoyezCreateurs : ecrire/ ?exec=cfg&cfg=soyezcreateurs_couleurs (...)

  • Métas +

    3 décembre 2016 – 34 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, vous (...)

  • Photoswipe

    18 septembre 2016 – 35 commentaires

    Une lightbox javascript responsive. PhotoSwipe est une boîte multimédia — comme la Mediabox installée en série avec SPIP — qui permet de zoomer à la taille réelle des images et qui gère intelligemment les légendes. Le plugin est basé sur la librairie (...)