SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 234 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

  • Mailsubscribers

    16 janvier 2013 – 274 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes (...)

  • noiZetier v2

    9 novembre 2012 – 36 commentaires

    Le noiZetier offre une interface d’administration permettant d’insérer au choix des éléments modulaires de squelettes (noisettes) et de les ajouter ainsi à ses squelettes. Compatibilité La version 2 du noizetier fonctionne sous SPIP 3. Elle est (...)

  • cirr : plugin « rédacteur restreint »

    29 octobre 2010 – 60 commentaires

    Ce plugin « cirr : rédacteur restreint » permet d’affecter des rubriques aux rédacteurs et modifie les droits afin qu’un rédacteur restreint (ou un administrateur restreint) voit dans l’espace privé uniquement les rubriques qui lui sont affectées (et leur (...)

  • Un retour d’expérience d’utilisation de Formidable

    26 octobre – commentaires

    Il s’agissait de créer un formulaire d’inscription à un évènement modérer les inscriptions dans le privé publier les inscriptions dans le public Nous avons discuté de cette présentation lors de l’apéro SPIP du 15 février 2016 à la Cantine (...)

  • Métas +

    3 décembre – 14 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, (...)

Ça spipe par là