Champs Extras (Interface)

Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP depuis l’espace privé de SPIP. Il s’appuie sur le plugin Champs Extras, dont il n’est qu’une simple interface graphique.

Screencast

Vous n’aimez pas lire ? Écoutez pendant 20mn !

Cette capture présente Champs Extras 3 avec son interface graphique [1]. Elle est présente sur medias.spip.net où vous pourrez voir la vidéo en plus grand format.

Introduction : séparation de l’API et de l’interface graphique

Il existe deux plugins distincts :

  • le premier, «Champs Extras» (lire «Champs Extras — introduction») donne accès aux fonctions de création, de gestion et d’affichage des champs. Il est ne constitue qu’un outil de développement. 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 «Core» 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». C’est ce plugin qui est documenté ici.

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.
Liste des objets éditoriaux exploitables

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.
Présentation du formulaire d’édition d’un objet

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.
Des champs de type Cases ajoutés aux articles

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 :

Édition de cases à cocher

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 :

Cases à cocher modifiées

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 :

Deux champs en plus sur les articles

Footnotes

[1Cette interface a évolué depuis la prise de cette vidéo ; cependant le fonctionnement est relativement identique

Discussion

262 discussions

  • Bonjour,
    J’utilise ce plugin génial, pour des ajouts de champs simple dans les articles.
    La question que je pose ici cherche une réponse à une problématique que je ne parviens pas à résoudre depuis des années !! Je n’ai pas de connaissances en PHP / BDD.
    Mais aujourd’hui, une cliente me le demande et je n’arrive pas à satisfaire à sa demande.

    Il s’agit “tout simplement” d’ajouter le prénom à la liste des inscrits aux listes de diffusion, de façon ensuite à pouvoir leur écrire, soit “Bonjour @prenom@”, soit “Bonjour @prenom@ @nom@”, selon les cas.
    Et donc de pouvoir également récupérer ce champ à l’export d’une liste, comme dans l’autre sens, de le renseigner dans la liste, à l’import.
    Et enfin, si ce champs pouvait aussi exister pour les inscriptions via le plugin “Formidable : abonnements à des listes de diffusion” utilisé pour les inscriptions des visiteurs sur le site public !

    J’ai bien ajouté un champ à l’objet “Inscrits aux envois par email” qui touche à Mailsubscribers, et ça ajoute bien un champ. J’ai cependant 2 problèmes :
    – Il est tout en bas, je ne peux pas le mettre juste sous le nom,
    – Plus embêtant, il n’est pas exporté !
    J’ai d’ailleurs tenté un import CSV pour voir, avec une colonne “Prénom” mais elle n’est pas prise en compte.
    (Marrant : le prénom vient s’associer au nom dans la colonne nom… Mais ça ne va pas.)

    J’ai testé aussi d’ajouter à l’objet “Liste de diffusion” qui touche à Mailsubscribinglist, mais là je crois que ça concerne les listes et non les inscrits dans les listes…

    J’ai cherché partout des plugins qui feraient ça, depuis au moins 3 ans, en vain.
    D’avance merci pour votre aide ou vos pistes.
    Je précise que j’ai plusieurs sites en 3.2, que je migre pour la plupart en 4.0 et 4.1 maintenant.
    Cordialement

    Reply to this message

  • 4

    Bonjour,
    Est-ce qu’il y a une astuce pour ajouter un champs qui permet de sélectionner des articles même non publiés (en cours de rédaction, en attente de validation...) ?
    Merci !

    • Pas pour l’instant, je vais regarder si je trouve une manière facile de proposer cela dans les prochaines jeures.

    • Chouette, ce serait super. Peut-être une option supplémentaire dans la partie Utilisation du champs Article ?

    • Non, a priori ca devrait être fait automatiquement. Si on est dans l’espace privé, on doit pouvoir choisir les objets du privé.

      Le problème est que cette saisie est complexe, et que je n’ai pas trouvé comment elle marchait exactement, Pas trop le temps ni la motive de me pencher dessus. Ne peux tu pas utiliser simplement un champ input avec un numero ?

    • Non, a priori ca devrait être fait automatiquement. Si on est dans l’espace privé, on doit pouvoir choisir les objets du privé.

      Effectivement, les utilisateurs du site m’ont fait cette demande mais j’ai pas vérifié si c’était pas déjà le cas. Et il me semble bien que si, c’est le comportement par défaut de cette saisie, elle liste tous les articles, même non publiés. Mille désolé de t’avoir dérangé, j’aurais dû vérifier tout de suite.

    Reply to this message

  • 12

    Bonjour
    Je travaille avec SPIP 3.2.12 + PHP7 + Champs Extras 3.14.6 + Champs Extras (Interface) 3.5.1

    Le plugin fonctionne bien et est très utile.

    J’ai juste un prob avec l’insertion d’un nouveau champ “Document” que je voudrait insérer dans les infolettres (plugin “newsletter”).
    J’ai créé un nouveau champ document nommé : “newsletter_image”.

    J’arrive bien à récupérer dans mon squelettes l’id du document via sa balise #NEWSLETTER_IMAGE. Jusque là tout va bien.

    Mais comment faire pour afficher l’image correspondante via cet id sans passer par une boucle DOCUMENTS (elle même au sein de la boucle NEWSLETTERS) ?
    En effet quand je créé une boucle DOCUMENTS, la balise #NEWSLETTER_IMAGE ne renvoie rien :

    <BOUCLE_newsletter(NEWSLETTERS){blabla}>
     
    #NEWSLETTER_IMAGE <!-- placée ici, la balise affiche bien l'id de l'image quand je prévisualise -->
    
    <BOUCLE_image(DOCUMENTS) {id_document=#NEWSLETTER_IMAGE}{media=image}>
    [(#FICHIER|image_reduire{600})]<!-- là je n'ai plus rien... -->
    </BOUCLE_image>
     
    </BOUCLE_newsletter>

    Je crois comprendre que la boucle DOCUMENTS étant au sein de la boucle NEWSLETTERS, elle ne trouve pas l’id de l’image pourtant liée à la newsletter via champ extra...
    Je cherche donc simplement un moyen de trouver le chemin de l’image grâce à son identifiant. Je pourrais ainsi l’intégrer dans un tag html img comme peut le faire la balise #FICHIER au sein d’une boucle document...

    Merci d’avance pour votre réponse.

    • il manquerait pas à un {tout} dans ta boucle _image (si doc pas lié à un article publié, par ex).

    • Bonjour Maïeul

      Non c’est pas cela. L’image est choisie dans la médiathèque et est associée à un article publié.

      PS: j’ai tout de même essayé ta solution mais c’est pareil...

    • Hum, je sais pas comment fonctionne la saisie document. Mais ca te renvoie bien un id du document. Pas de prféexie/suffix autour?

      Que donne un var_mode=debug ?

    • Cela renvoie uniquement l’id du document. C’est le fonctionnement normal de la balise image me semble-t-il (par ex : ’32627’).

      le var_mode_debug :

      squelette plugins/auto/newsletters/v1.6.4/newsletter.html : squelette résultat code calcul
      Temps de calcul : 4.604 ms
      #ENV
      lang	: fr
      id_newsletter	: 8
      1	boucle	résultat	code	calcul	_newsletter	newsletters	{id_newsletter}
      2	boucle	résultat	code	calcul	_previewnewsletter	newsletters	{id_newsletter}{si (#VAL{_VAR_PREVIEW}|defined|et{[(#VAL{_VAR_PREVIEW}|constant)]}|et{[(#GET{quoi}|=={raw}|non)]})}
      squelette plugins-dist/porte_plume/javascript/porte_plume_start.js.html : squelette résultat code calcul
      Temps de calcul : 5.625 ms
      #ENV
      lang	: fr
      hash	: bb0c25cb9b23f99d5bdbc51aa778b126
      inserer_auto_name_texte	: 1
      squelette plugins/auto/socialtags/v3.0.0/socialtags.js.html : squelette résultat code calcul
      Temps de calcul : 5.776 ms
      #ENV
      lang	: fr
      squelette plugins/auto/favicon/v1.2.0/inclure/favicon.html : squelette résultat code calcul
      Temps de calcul : 10.298 ms
      #ENV
      lang	: fr
      squelette squelettes-dist/formulaires/administration.html : squelette résultat code calcul
      Temps de calcul : 0.099 ms
      #ENV
      id_newsletter	: 8
      objet	: newsletter
      id_objet	: 8
      voir_newsletter	: https://www.aslagnyrugby.net/ecrire/?exec=newsletter&id_newsletter=8
      divclass	: spip-admin-float
      lang	: 
      calcul	: recalcul
      debug	: 
      analyser	: 
      inclure	: 
      _pipelines	: (1 items) [array(size=0)]
    • Et la requete SQL correspondant à ta boucle ?

    • C’est à dire ?
      Comment je visualise cela ?

    • Dans le mode debug, tu peux choisir le squelette concernée, puis la boucle concernée en son sein. Là tu peux cliquer sur “resultat” et cela te donne la requete sql genérée.

    • Cela n’affiche pas la requête à la table “documents”.
      en faisant “var_profile=1”, je récupère les requetes générée mais là encore, pas de trace d’une requete à la table documents :

      1	newsletters	0.00053590243530277	2
      8	Hors Compilation	0.0044949060211181	1 3 4 5 6 7 8 9
      9	total :	0.0050308084564209	
      Numéro	Message	squelette	boucle	Ligne
      1 	
      SHOW TABLES LIKE 'spip\\_%'Time	0.0014600834197998
      Order	5
      Res	mysqli_result
      	   /  	   /  	
      2 	
      SELECT id_newsletter FROM `aslagnyrugby`.spip_newsletters AS `newsletters` WHERE (newsletters.statut = 'publie') AND newsletters.id_newsletter=8Time	0.00053590243530277
      Order	7
      Res	mysqli_result
      id	1
      select_type	SIMPLE
      table	
      type	
      possible_keys	
      key	
      key_len	
      ref	
      rows	
      Extra	Impossible WHERE noticed after reading const tables
      	   /  	   /  	
      3 	
      SELECT id_newsletter FROM `aslagnyrugby`.spip_newsletters WHERE id_newsletter=8Time	0.00050301022338872
      Order	9
      Res	mysqli_result
      id	1
      select_type	SIMPLE
      table	spip_newsletters
      type	const
      possible_keys	PRIMARY
      key	PRIMARY
      key_len	8
      ref	const
      rows	1
      Extra	Using index
      	   /  	   /  	
      4 	
      SELECT id_objet FROM `aslagnyrugby`.spip_auteurs_liens WHERE id_auteur=1 AND objet='rubrique' AND id_objet!=0Time	0.00046491699218754
      Order	12
      Res	mysqli_result
      id	1
      select_type	SIMPLE
      table	spip_auteurs_liens
      type	ref
      possible_keys	PRIMARY,id_auteur,id_objet,objet
      key	objet
      key_len	77
      ref	const
      rows	1
      Extra	Using index condition
      Using where
      	   /  	   /  	
      5 	
      SELECT id_auteur, pass FROM `aslagnyrugby`.spip_auteurs WHERE id_auteur=1Time	0.00044897363281249
      Order	8
      Res	mysqli_result
      id	1
      select_type	SIMPLE
      table	spip_auteurs
      type	const
      possible_keys	PRIMARY
      key	PRIMARY
      key_len	8
      ref	const
      rows	1
      Extra	
      	   /  	   /  	
      6 	
      SELECT id_objet, type, date, url FROM `aslagnyrugby`.spip_urls WHERE url='Infolettre-no2'Time	0.00042097657775875
      Order	4
      Res	mysqli_result
      id	1
      select_type	SIMPLE
      table	spip_urls
      type	ref
      possible_keys	url
      key	url
      key_len	767
      ref	const
      rows	1
      Extra	Using index condition
      	   /  	   /  	
      7 	
      SELECT U.url, U.date, U.id_parent, U.perma, titre AS titre, lang AS lang FROM `aslagnyrugby`.spip_newsletters AS O LEFT JOIN `aslagnyrugby`.spip_urls AS U ON (U.type='newsletter' AND U.id_objet=O.id_newsletter) WHERE O.id_newsletter=8 AND (U.segments IS NULL OR U.segments=1) ORDER BY U.id_parent=0 DESC, U.perma DESC, U.langue='' DESC, U.date DESC LIMIT 1Time	0.00041908378601074
      Order	6
      Res	mysqli_result
      id	1
      select_type	SIMPLE
      table	O
      type	const
      possible_keys	PRIMARY
      key	PRIMARY
      key_len	8
      ref	const
      rows	1
      Extra	Using temporary
      Using filesort
      	   /  	   /  	
      8 	
      SELECT lang FROM `aslagnyrugby`.spip_auteurs WHERE email='postmaster@aslagnyrugby.net'Time	0.00040990861511225
      Order	10
      Res	mysqli_result
      id	1
      select_type	SIMPLE
      table	spip_auteurs
      type	ALL
      possible_keys	
      key	
      key_len	
      ref	
      rows	196
      Extra	Using where
      	   /  	   /  	
      9 	
      SELECT lang FROM `aslagnyrugby`.spip_auteurs WHERE login='postmaster@aslagnyrugby.net'Time	0.00036795277404789
      Order	11
      Res	mysqli_result
      id	1
      select_type	SIMPLE
      table	spip_auteurs
      type	ref
      possible_keys	login
      key	login
      key_len	768
      ref	const
      rows	1
      Extra	Using index condition
      	   /  	   /  
    • Par contre, je ne sais pas si c’est très “secure” d’afficher les requêtes comme ça...

    • mais tu est sur que tu es sur le bon squelette ? parceque là on parle quand même de squelette plugins/auto/newsletters/v1.6.4/newsletter.html

      a priori il y a rien d’insecure à donner des requetes sql relativement basique pour un site qu’on ne connait pas.

    • Je suis sûr que c’est le bon squelette puisque quand j’y insère la balise en dehors de la boucle, l’id du document apparait bien dans la prévisualisation.
      J’ai créé un répertoire “newsletters” (dans le rép. “squelettes”) dans lequel j’ai mon squelette.
      Celui-ci fonctionne bien, j’ai déjà envoyé une première newsletter le mois dernier grâce à ce squelette.
      Je voulais simplement y apporter une amélioration via champs extras en ajoutant une image modifiable.

    • Je confirme que le var_mode=debug est ajouté à l’URL de la prévisualisation de ma newsletter :
      https://www.aslagnyrugby.net/Infolettre-no2.html?var_mode=debug

      Après, je ne sais pas pourquoi il y a une référence au fichier plugins/auto/newsletters/v1.6.4/newsletter.html (c’est le fonctionnement du plugin j’imagine).

      En tout cas, c’est bien mon squelette qui apparaît avec mes images, ma mise en page html, css et tout et tout...

    Reply to this message

  • 2

    Bonjour,
    Je suis sous SPIP 4.0.0
    J’ai créé un champ extra - dans un nouvel objet éditorial - sous forme d’une question en boutons radios utilisable par les visiteurs authentifiés. J’aimerais que les réponses par visiteur soient conservées dans chacune de leur session et donc retrouvées dans une session suivante pour être modifiées au besoin.
    Merci pour une piste de travail dans ce sens.

    • Bonjour,

      les champs extras ne stockent pas les données en sessions, mais bien en base, dans l’objet.

      Donc le plus simple serait d’aller rechercher en base, et de construire une interface, par ex. avec les crayons

    • Merci Maïeul.
      Je m’en doutais.
      Je vais suivre ton conseil.

    Reply to this message

  • Hello,

    J’utilise Champ Extra sur une sélection éditoriale pour ajouter des champs persos. Tout fonctionne bien, sauf la fonction « ajout rapide » qui ajoute bien l’article quand je valide mais qui ne l’enregistre pas.

    Le titre de l’article s’affiche pourtant bien après la saisi de son ID, de la même manière qu’un article choisi dans la liste en dessous. Mais alors qu’un article choisi dans la liste s’enregistre correctement, un article choisi avec la fonction Ajout Rapide disparait à l’enregistrement. Quel est la différence de fonctionnement de ces deux système ? À quel endroit ça pourrait bloquer ?

    Est-ce que quelqu’un a déjà eu ce problème ou pourrait m’aider ?

    Merci,
    Pierre

    Reply to this message

  • Bonjour,

    Je tiens à vous remonter un soucis que je rencontre avec Champs Extra Interface.
    Pour faire court, j’utilise ce plugin pour créé un formulaire d’adhésion en étendant la table spip_auteurs. Cela marche très bien sur la grande majorité de mes sites ;)
    Par contre, sur quelques sites, le formulaire est très très long et en plusieurs langues, au point que le paramétrage de la table ’spip_meta’ n’est pas configuré pour accepter autant de caractère dans le champs ’valeur’ configuré en mode ’text’.
    Le résultat est que la valeur enregistré dans la BDD est tronqué, donc inexploitable... Ce n’est pas très simple de revenir en arrière...
    Je suis donc contraint de paramétré ce champs en ’longtext’ pour contourné le problème.

    C’est une solution qui fonctionne bien, mais bon c’est pas top non plus...

    Prévoyez-vous d’offrir à ce plugin ses propres tables? Cela permettrait de ne pas toucher à ’spip_meta’.

    Merci

    Reply to this message

  • Bonjour,

    j’ai vu que les champs extra pouvais s’appliquer au “Menus du site”.

    Est-ce que cela veut dire que cela permettrait d’ajouter des champs extra au plugin “Menus”?

    Si c’est le cas, j’ai fais des tests, mais je ne vois pas de changements dans l’interface du plugin Menus.

    Mon but serait d’ajouter pour les entrées “Article, rubrique ou autre objet SPIP” et “Liens arbitraire” un champ de mot-clé pour désigner pour chaque entrée la langue afin de n’afficher que certains bouton du menus en fonction du contexte de langue (#LANG).

    Merci d’avance,

    Cordialement,

    Hervé

    Reply to this message

  • 1

    Bonjour,
    Est-il prévu une version compatible avec spip 4 ?
    ce plugin étant très pratique et utilisé, En espérant qu’il sortira bientôt. je déffends régulièrement spip dans mon institution... mais sans ce plugin, ça risque d’être difficile ....
    merci d’avance
    ;)

    • Oui, oui, on attendais simplement la sortie de spip 4 pour officiellement taguer le plugin. C’est chose faite et il devrait être dispo bientot.

    Reply to this message

  • 1

    Petite question/suggestion :)
    Pensez-vous possible et pas compliqué à intégrer un système de répéteur de champs ou groupe de champs ? Cela permettrait d’être moins limité dans une fiche !

    • 1. On a deja une saisie qui permet cela (saisie liste, dans le plugin homonyme), mais
      a. Il faut créer le constructeur
      b. En terme de structure de donnée c’est pas évident non plus à envisager.

      Donc réponse : complexe oui, mais pas à faire tout de zero, a priori.

    Reply to this message

  • Bonjour,
    J’ai une suggestion et un problème.

    Dans mes formulaires générée via l’interface de Champs extras, j’ai besoin d’avoir un lien dans l’explication d’une case unique pour que l’internaute puisse consulter un article et déclarer en accepter les termes (exemple : conditions générales de ventes).
    Je vois pas de solution simple pour cela si ce n’est d’utiliser Mediabox et un peu de code (peu souhaitable pour les novices) :

    Vous pouvez prendre connaissance des <a href="Conditions-Generales-d-Utilisation" onclick="if (jQuery.modalbox) {jQuery.modalbox('Conditions-Generales-d-Utilisation?var_zajax=content','maxWidth:700');return false;}" class="spip_in">Conditions Générales d'Utilisation</a>

    Ou

    Vous pouvez prendre connaissance des <a href="Conditions-Generales-d-Utilisation" class="mediabox boxIframe boxWidth-700px boxHeight-600px">Conditions Générales d'Utilisation</a>

    Le choix d’une lightbox (et non d’un lien hypertexte classique) est motivé par le souhait de ne pas sortir du formulaire pour éviter de perdre l’internaute avec (ou les infos saisies dans le formulaire).

    Suggestion :
    J’apprécierais une syntaxe plus simple pour gérer ce genre de cas car mes clients ne touche pas à de l’html d’ordinaire . Une nouvelle saisie ou option de saisie à prévoir peut-être?

    Jusque la, malgré tout, tout va bien.


    Par contre j’ai besoin de pouvoir afficher cela dans plusieurs langues donc je rajoute mes balises multilingues :

    <multi>[fr]Vous pouvez prendre connaissance des <a href="Conditions-Generales-d-Utilisation" onclick="if (jQuery.modalbox) {jQuery.modalbox('Conditions-Generales-d-Utilisation?var_zajax=content','maxWidth:700');return false;}" class="spip_in">Conditions Générales d'Utilisation</a></multi>

    Problème :
    Et la je me retrouve avec un warning Texte mal formaté dans le code du message je lis “danger-jS”.

    Merci de vos lumières,
    JuL

    Reply to this message

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom