Screencast
Vous n’aimez pas lire ? Écoutez pendant 20mn !
Cette capture présente Champs Extras 3 avec son interface graphique. Elle est présente sur Medias SPIP.org où vous pourrez voir la vidéo en plus grand format.
Introduction
Ce plugin est plus qu’une adaptation pour SPIP 3 du plugin « Champs Extras 2 ». Les nouveaux champs sont toujours stockés dans de nouvelles colonnes SQL sur les objets éditoriaux correspondants, mais l’interface et le fonctionnement technique sous-jacent a été en grande partie modifié pour deux raisons essentielles :
- SPIP 3 offrant une méthodologie pour déclarer des objets éditoriaux, ce plugin s’appuie donc dessus pour connaître la liste des objets sur lesquels il peut intervenir et créer de nouveaux champs. Ainsi, il est possible à l’aide de EXTRA3 d’ajouter des champs à tous les objets éditoriaux (et éditables) déclarés par SPIP3 ou par des plugins. (Avec EXTRA2, il était nécessaire que le plugin à l’origine de l’objet éditorial le déclare comme extensible).
- Le plugin « Saisies » dispose d’un générateur de formulaire, à l’origine créée pour le plugin « Formidable, le générateur de formulaires » et d’un nombre de saisies possibles grandement supérieur à ce que proposait la version 2. Mutualiser ce code entre plusieurs plugins permet une meilleure maintenance, une interface plus complète et une aussi grande extensibilité.
L’ensemble est donc à la fois plus fonctionnel, plus extensible, le tout en utilisant bien moins de code.
Séparation de l’API et de l’interface graphique
Ce plugin est séparé en deux éléments indépendants :
- le premier, « Champs Extras » (ou « Champs Extras API ») donne accès aux fonctions de création, de gestion et d’affichage des champs, mais pour d’autres plugins. Il nécessite le plugin « Saisies ». Un exemple (Titre Court sur les rubriques) dans le dossier extensions montre comment créer un plugin offrant des champs prédéfinis.
- le second, « Champs Extras (Interface) » profite des points d’entrées et des fonctions du plugin « API » pour proposer une interface graphique de gestion et de création de ces champs supplémentaires. Ce plugin nécessite quand à lui évidemment « Champs Extras (API) » et « Saisies », mais également « Le plugin YAML » et « Vérifier ».
Présentation de l’interface
Lorsque le plugin d’interface est activé, le menu de configuration permet d’aller sur la page de configuration des Champs Extras (?exec=champs_extras).
Cette page présente :
- la liste des objets sur lesquels on peut insérer des champs extras, indiquant pour chaque objet le nombre de champs extras présents,
- puis, si c’est le cas, un cadre se trouve dessous indiquant pour certains objets que certaines colonnes SQL ne sont gérées ni par SPIP ni par un plugin, et que Champs Extra peut éventuellement les gérer.

On le remarque sur l’image, ici seul l’objet Articles a 1 Champs Extra. De plus, dans le second cadre, on voit que le champ « openid » peut être géré. Ce champ provient du plugin « OpenId » qui avait du être installé mais n’est actuellement pas actif sur le site. Comme il n’avait pas été désinstallé (mais seulement désactivé), le champ est resté dans la table SQL des auteurs.
Créer un nouveau champ via l’interface
Seuls les webmestres du site ont accès à ce panneau de configuration.
Pour ajouter un élément dans un des objets, il faut cliquer sur le nom de l’objet souhaité. Nous allons créer un champ dans la table des articles, nous cliquons donc sur leur nom.
Cela nous amène sur une autre page (du même fonctionnement donc que le plugin Formidable), qui présente :
- les Champs Extras présents sur l’objet (que l’on peut déplacer, modifier, dupliquer ou supprimer),
- puis la liste des types de champs que l’on peut ajouter.

Il suffit de cliquer un des types de champs pour ajouter cet élément dans la liste des champs présents. Cet élément se placera automatiquement en fin de liste. Nous ajoutons ici des cases à cocher.
On peut le voir sur l’image suivante, un message indique alors que le formulaire est modifié par rapport à son état normal. On a trois possibilités offertes :
- Continuer nos modifications, autant qu’on en souhaite,
- Annuler toutes nos modifications en « Réinitialisant le formulaire »
- Valider nos modifications en « Enregistrant le formulaire » en bas de page.

Nous allons déplacer les cases ajoutées en premier, pour cela, on survole les « cases à cocher », clique en gardant enfoncé notre bouton l’icône de déplacement (la première, des flèches bleues), et on monte la souris vers le haut, au dessus du premier champ. Un cadre jaune apparaît à l’endroit ou se placera le champ déplacé. On peut alors relâcher le bouton de la souris. Si la manœuvre vous paraît périlleuse, n’ayez crainte : cette façon de faire n’est qu’un raccourcis. On peut également définir l’emplacement du champs extra en le modifiant.
C’est d’ailleurs modifier le Champ Extras des cases que nous allons faire maintenant. Pour cela, on clique la seconde icône. Un formulaire détaillé apparaît alors :

On peut observer que les options sont nombreuses et divisées en onglets pour plus de clarté. Décrivons sommairement ce que sont ces onglets :
- Description : concerne essentiellement les textes qui seront affichés ainsi que le nom technique du champ (le nom de la colonne SQL)
- Utilisation : concerne des options sur le type de code HTML généré
- Affichage : permet de compléter les descriptions du champ, par exemple par un message d’avertissement
- Validation : indique le type de vérification à effectuer sur le contenu saisi
- Restriction : permet de limiter l’affichage des champs à certaines personnes ou parties du site.
- Technique : représente la liste des options liées à SPIP, à la base de données. Il permet également de modifier de type de saisie (pour passer de cases à radio par exemple).
À noter que les éléments affichés dans chaque onglet peuvent différer d’un type de saisie à une autre. Un champ « Ligne de texte » n’affiche pas les mêmes possibilités de configuration qu’un champ « Cases à cocher ».
On comprend vite ainsi que lorsqu’on crée un nouveau champs extra, la première chose à faire est de changer les informations présentes dans l’onglet « Description » et en particulier son nom technique, le « nom du champ ». Effectivement, cela nous évitera d’appeler le champ #CHECKBOX_1 dans un squelette, qui ne reflète pas une information sémantique, mais technique. On peut par exemple modifier le champ en le nommant « hobbies » (ce qui permettra d’utiliser #HOBBIES), et modifier son libellé et valeurs. Cela donnerait ensuite, après validation du formulaire de configuration de la case à cocher, la prévisualisation suivante :

Pour valider nos changements, il faut alors enregistrer le formulaire de champs extras. Ceci fait, on peut ensuite se rendre sur un article, nous être satisfait de voir nos deux champs présents, à la fois sur le formulaire d’édition et sur la vue du texte. Voici dans le formulaire des articles ce que cela donne :

Utiliser les champs dans les squelettes
Valeur d’un champ
Les champs extras sont comme les autres champs d’une table SQL, interrogeables en utilisant #NOM_DU_CHAMP.
Pour afficher donc le résultat d’un champ il suffit d’utiliser son nom. Le champ est d’autre part éditable avec la classe CSS #EDIT{nom_du_champ} si vous avez le plugin Crayons :
- <p class='#EDIT{documentation}'>#DOCUMENTATION</p>
Valeur d’un champ multiple (cases à cocher, boutons radios,...))
Pour afficher la liste des valeurs de cases à cocher saisies par l’utilisateur, vous pouvez utiliser la balise #LISTER_VALEURS{nom_du_champ} :
- #LISTER_VALEURS{hobbies} : Musique, Danse, ...
- #LISTER_VALEURS{hobbies, ' / '} : Musique / Danse / ...
- #LISTER_VALEURS*{hobbies} : tableau des résultat à exploiter par exemple avec une boucle POUR
Pour afficher la liste des possibilités qu’il y avait de saisies, vous pouvez utiliser de la même manière #LISTER_CHOIX{nom_du_champ}
- #LISTER_CHOIX{hobbies} : Musique, Danse, ...
- #LISTER_CHOIX{hobbies, ' / '} : Musique / Danse / ...
- #LISTER_CHOIX*{hobbies} : tableau des résultat à exploiter par exemple avec une boucle POUR
Informations d’une saisies
Enfin, vous pouvez récupérer n’importe quelle information sur la saisie en utilisant la balise #CHAMP_EXTRA{nom_du_champ}. Elle récupère tout le tableau d’information connue sur le champ extra. Cependant, elle est surtout utile pour afficher un des éléments #CHAMP_EXTRA{nom_du_champ, element} tel que le label :
- #CHAMP_EXTRA{documentation,label}
- #CHAMP_EXTRA{hobbies,label}
- #CHAMP_EXTRA{hobbies,explication}
Créer de nouveaux types de saisies
Si les saisies présentes ne sont pas suffisantes pour votre utilisation, vous pouvez en créer de nouvelles dans votre répertoire squelettes ou votre plugin en créant :
-
saisies/ma_saisie.html, -
saisies/ma_saisie.yamlet -
saisies-vues/ma_saisie.html
Reportez vous à la documentation du plugin « Saisies » ou aux fichiers de saisies du même plugin pour vous en inspirer.



Vos commentaires
# Le 25 janvier à 07:58, par jpcrea
En réponse à : Champs Extras 3
Merci pour ce nouveau plugin très intéressant adapté à SPIP 3 et j’entrevois beaucoup de possibilités à l’utiliser.
Je ne vois pas de fichier de téléchargement et j’aimerais le tester...
# Le 19 février à 22:15, par #Olivier
En réponse à : Champs Extras 3
Le plugin est sur Spip-Zone : http://files.spip.org/spip-zone/cha...
Répondre à ce message
# Le 18 janvier à 15:20, par luca
En réponse à : Champs Extras 3
le plugin est prometteur, merci !
la fonction restriction par secteur ne fonctionne pas
des idées ?
# Le 18 janvier à 15:41, par Matthieu Marcillaud
En réponse à : Champs Extras 3
Bonjour,
C’est usant ça... de demander toujours la même chose...
Je réponds quoi à la phrase « ça marche pas ! » ???
Un minimum d’explication (type de saisie, objet, texte écrit dans la restriction) n’est tout de même pas si long que ça à écrire ? (avec la version du plugin et de SPIP précise...)
http://www.spip-contrib.net/Les-choses-a-faire-avant-de-poser-une-question
# Le 18 janvier à 16:11, par luca
En réponse à : Champs Extras 3
Sorry,
i’m not French and I’would like to answer using your language.
You are right. I try to explain better my problem :
SPIP 3.0.0-beta2 [18918] - Champs Extras 3.0.2 - Saisies pour formulaires 1.20.2 - YAML 1.5.0 - API de vérification 0.1.11
I set a new « champ extra » for article (text, checkbox or radio) and everything is ok. If I try to set « restriction par secteur » it doesn’t work correctly. I set « 2 » for example, but the « champ extra », is visible also in the article children of the rubrique 1.
I hope this will be clearer and useful. Thank you for your work !
Luca
# Le 18 janvier à 16:35, par Matthieu Marcillaud
En réponse à : Champs Extras 3
Thanks,
I don’t reproduce the bug. Do you save the formulary after set your restriction ?
MM.
# Le 18 janvier à 16:56, par luca
En réponse à : Champs Extras 3
Yes, I saved it.
Infact If I come back to edit the « Restriction options » I can find the value that i’ve set before in the correct input type.
Is the spip version correct ? I noticed the plugin installation system is different from the video one. I have not « Ajouter a plugin » for example...
This is what I found in the DB... I hope it could be useful
nom :
champs_extras_spip_articles
valeur :
a:1 :i:0 ;a:3 :s:7 :"options" ;a:5 :s:3 :"nom" ;s:7 :"radio_1" ;s:5 :"label" ;s:14 :"Boutons radios" ;
s:5 :"datas" ;
s:36 :"choix1|Un
choix2|Deux
choix3|Trois" ;
s:12 :"restrictions" ;
a:4 :s:8 :"secteurs" ;
s:1 :"2" ;
s:8 :"branches" ;s:0 :"" ;
s:4 :"voir" ;
a:1 :s:6 :"auteur" ;
s:0 :"" ;
s:8 :"modifier" ;
a:1 :s:6 :"auteur" ;
s:0 :"" ;
s:3 :"sql" ;
s:24 :"text DEFAULT ’’ NOT NULL" ;
s:11 :"identifiant" ;
s:14 :"@4f16d21d8e352" ;
s:6 :"saisie" ;
s:5 :"radio" ;
thank you !
# Le 19 janvier à 10:09, par Shmuel
En réponse à : Champs Extras 3
Hallo,
I reproduce the same bug :
PHP Version 5.2.17
MySQL 5.0.90
SPIP 3.0.0-beta2 SVN [18922]
Champs Extras 3.0.2 SVN [56959]
Saisies pour formulaires 1.20.2 SVN [57288]
Champs Extras Interface 3.0.1 SVN [56912]
API de vérification 0.1.11 SVN [56912]
YAML 1.5.0 SVN [56912]
champs_extras_spip_rubriques value :
a:1 :
i:0 ;a:3 :
s:7 :"options" ;a:11 :
s:3 :"nom" ;s:10 :"titre_page" ;
s:5 :"label" ;s:16 :"Titre de la page" ;
s:4 :"type" ;s:4 :"text" ;
s:16 :"info_obligatoire" ;s:1 :"*" ;
s:4 :"size" ;s:2 :"40" ;
s:12 :"autocomplete" ;s:6 :"defaut" ;
s:11 :"obligatoire" ;s:2 :"on" ;
s:12 :"restrictions" ;a:4 :
s:8 :"secteurs" ;s:0 :"" ;
s:8 :"branches" ;s:1 :"2" ;
s:4 :"voir" ;a:1 :s:6 :"auteur" ;s:0 :"" ;
s:8 :"modifier" ;a:1 :s:6 :"auteur" ;s:0 :"" ;
s:3 :"sql" ;s:24 :"text DEFAULT ’’ NOT NULL" ;
s:10 :"rechercher" ;s:2 :"on" ;
s:11 :"traitements" ;s:16 :"_TRAITEMENT_TYPO" ;
s:11 :"identifiant" ;s:14 :"@4f17d3ff6b19e" ;
s:6 :"saisie" ;s:5 :"input" ;
Everything goes on except restriction by sector/branche.
Thanks you very much !
# Le 19 janvier à 10:15, par Matthieu Marcillaud
En réponse à : Champs Extras 3
Ah, maybe it’s with a name with underscore.
Could you try with a simple name without _ ?
Thanks a lot.
# Le 19 janvier à 10:27, par Shmuel
En réponse à : Champs Extras 3
I just try it and verify all parameters, but interface does the same :
a:1 :
i:0 ;a:3 :
s:7 :"options" ;a:11 :
s:3 :"nom" ;s:9 :"titrepage" ;
s:5 :"label" ;s:16 :"Titre de la page" ;
s:4 :"type" ;s:4 :"text" ;
s:16 :"info_obligatoire" ;s:1 :"*" ;
s:4 :"size" ;s:2 :"40" ;
s:12 :"autocomplete" ;s:6 :"defaut" ;
s:11 :"obligatoire" ;s:2 :"on" ;
s:12 :"restrictions" ;a:4 :
s:8 :"secteurs" ;s:0 :"" ;
s:8 :"branches" ;s:1 :"2" ;
s:4 :"voir" ;a:1 :s:6 :"auteur" ;s:0 :"" ;
s:8 :"modifier" ;a:1 :s:6 :"auteur" ;s:0 :"" ;
s:3 :"sql" ;s:24 :"text DEFAULT ’’ NOT NULL" ;
s:10 :"rechercher" ;s:2 :"on" ;
s:11 :"traitements" ;s:16 :"_TRAITEMENT_TYPO" ;
s:11 :"identifiant" ;s:14 :"@4f17d3ff6b19e" ;
s:6 :"saisie" ;s:5 :"input" ;
Many thanks.
# Le 19 janvier à 16:41, par Matthieu Marcillaud
En réponse à : Champs Extras 3
@shmuel, tu es tout à jour partout toi, et ça ne fonctionne pas pourtant. C’est frustrant :p. Je vais tester sur une rubrique comme toi aussi. Ni restrictions par secteur ni par branche ne fonctionnent ?
# Le 19 janvier à 16:48, par Matthieu Marcillaud
En réponse à : Champs Extras 3
Bon, bien... y a pas à dire, ça marche chez moi aussi sur les rubriques. Que ce soit restriction par secteur ou par branche... Quel est ce mystère...
# Le 19 janvier à 17:00, par Shmuel
En réponse à : Champs Extras 3
Un peu que je suis à jour, SPIP 3 et ton plugin rendent chaud bouillant !
Le problème est brusquement apparu lorsque j’ai fait une mise à jour de Champs Extra 3, Champ Extra 3 Interface et de tous les plugin qu’ils nécessitent. J’ai d’abord cru à une merdouille venant des dizaines de champs déjà créés, mais en réinstallant le tout et en faisant le test comme indiqué ci-dessus avec simplement deux secteurs dont un avec deux branches, le problème est toujours là.
En comparant les versions, j’ai constaté également que le problème semblait être apparu à partir de la rev 56933 ou 56731. Peut-être que le problème vient d’un autre plugin ?
# Le 19 janvier à 17:17, par Matthieu Marcillaud
En réponse à : Champs Extras 3
Bah, bon a fait une modif des autorisations (du nom des autorisations créées). Mais si tu déclares les autorisations en utilisant le plugin interfaces via l’onglet restriction (c’est à dire en ne faisant rien finalement), les changements doivent être transparents.
La modification en question est http://zone.spip.org/trac/spip-zone/changeset/56666/_plugins_/champs_extras/core/trunk ... Avec autant de 666, ça ne pouvait qu’être dangereux :)
Ah... je crois que je vois. Mais je n’explique pas pourquoi ça marche chez moi... je regarde un truc.
# Le 20 janvier à 10:15, par Matthieu Marcillaud
En réponse à : Champs Extras 3
Bon, la version 3.0.3 (http://zone.spip.org/trac/spip-zone/changeset/57365) devrait vous corriger.
Désolé pour le dérangement :)
MM.
# Le 20 janvier à 10:28, par Shmuel
En réponse à : Champs Extras 3
Yesss ! Ca fonctionne à nouveau comme prévu !
Pour suggestion, rapport à l’utilisation que je fais actuellement du plugin, une variable du type « nombre de points de recherche » viendrait à mon avis parfaire l’outil. Cela permettrait de mieux gérer la pertinence des résultats d’une recherche libre en fonction de l’importance du contenu des champs d’un objet.
En tout cas, SPIP 3 donne vraiment un nouveau souffle à ce CMS, et ton plugin fait gagner un temps considérable pour structurer les bases de données !
Bravo et encore merci !
# Le 21 janvier à 12:26, par Matthieu Marcillaud
En réponse à : Champs Extras 3
Tu testeras ces nouvelles modifications Shmuel : http://zone.spip.org/trac/spip-zone/changeset/57438 . Ça devrait te permettre de régler la pondération.
# Le 23 janvier à 17:27, par luca
En réponse à : Champs Extras 3
Wow,
everything seems to run correctly !
Thank you for your work ! Merci !
Répondre à ce message