Spip4 et formulaires

Bonjour

Je me suis attaqué aux formulaires d'Escal pour les charter.
En effet, ceux-ci ont été fait il y a longtemps et un peu à l'arrache.

Du coup j'ai plein de questions ...

Commençons par les boutons radio

Dans le formulaire de la charte les radio oui/non sont l'un en-dessous de l'autre mais je vois dans exec=configurer_contenu qu'ils sont l'un à côté de l'autre.
En effet, les 2 sont dans le même .choix alors qu'on m'a dit 1 seul input par .choix
Donc on peut ou pas ?

Ensuite j'ai pas bien compris comment gérer le choix par défaut avec
#SET{defaut,''}
#SET{val,oui}
et
[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"]

JC

Le 11.05.21 à 12:29, Jean-Christophe Villeneuve a écrit :

Bonjour

Je me suis attaqué aux formulaires d'Escal pour les charter.
En effet, ceux-ci ont été fait il y a longtemps et un peu à l'arrache.

Du coup j'ai plein de questions ...

Commençons par les boutons radio

Dans le formulaire de la charte les radio oui/non sont l'un en-dessous de l'autre mais je vois dans exec=configurer_contenu qu'ils sont l'un à côté de l'autre.
En effet, les 2 sont dans le même .choix alors qu'on m'a dit 1 seul input par .choix
Donc on peut ou pas ?

Ensuite j'ai pas bien compris comment gérer le choix par défaut avec
#SET{defaut,''}
#SET{val,oui}
et
[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"]

JC

prend saisies pour gerer les choix par défaut :stuck_out_tongue:

ensuite pour les boutons inline, c'est à voir, je sais plus où cela en est (et lorsqu'une décision sera prise, on intégrera cela à saisie)

Bon j'ai essayé d'utiliser le plugin saisies pour créer un formuliare de configuration pour Escal.
J'avoue que kje n't comprends pas grand-chose.

Où pourrais-je trouver quelques exemples pour mieux comprendre ?

JC

Le 11/05/2021 à 12:29, Jean-Christophe Villeneuve a écrit :

Bonjour

Je me suis attaqué aux formulaires d'Escal pour les charter.
En effet, ceux-ci ont été fait il y a longtemps et un peu à l'arrache.

Du coup j'ai plein de questions ...

Commençons par les boutons radio

Dans le formulaire de la charte les radio oui/non sont l'un en-dessous de l'autre mais je vois dans exec=configurer_contenu qu'ils sont l'un à côté de l'autre.
En effet, les 2 sont dans le même .choix alors qu'on m'a dit 1 seul input par .choix
Donc on peut ou pas ?

Ensuite j'ai pas bien compris comment gérer le choix par défaut avec
#SET{defaut,''}
#SET{val,oui}
et
[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"]

JC

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le 13.05.21 à 22:07, Jean-Christophe Villeneuve a écrit :

Bon j'ai essayé d'utiliser le plugin saisies pour créer un formuliare de configuration pour Escal.
J'avoue que kje n't comprends pas grand-chose.

Où pourrais-je trouver quelques exemples pour mieux comprendre ?

JC

Le 13.05.21 à 23:43, Maïeul Rouquette a écrit :

Le 13.05.21 à 22:07, Jean-Christophe Villeneuve a écrit :

Bon j'ai essayé d'utiliser le plugin saisies pour créer un formuliare de configuration pour Escal.
J'avoue que kje n't comprends pas grand-chose.

Où pourrais-je trouver quelques exemples pour mieux comprendre ?

Formulaire de configuration avec le plugin Saisies - SPIP-Contrib

c'est relativement simple en fait : tu declare juste les saisies qui t'intéresse, et tu laisse le plugin s'occuper tout seuls de faire le formulaire :wink:

Oui, le principe parait simple mais ce sont les différentes saisies possibles qui m’intéressent.
Et l’exemple sur la page est trop simpliste pour comprendre vraiment. Imaginons que je veuille un formulaire avec juste 3 boutons radio J’ai donc <?php if (!defined(’_ECRIRE_INC_VERSION’)) return; function formulaires_configurer_escal_favicon_saisies_dist(){ // $saisies est un tableau décrivant les saisies à afficher dans le formulaire de configuration $saisies = array( array( ‹ saisie › => ‹ radio ›, ‹ options › => array( ‹ nom › => ‹ Option1 ›, ‹ label › => ‹ <:escal:favicon_choix1:> › ) ) array( ‹ saisie › => ‹ radio ›, ‹ options › => array( ‹ nom › => ‹ Option2 ›, ‹ label › => ‹ <:escal:favicon_choix2:> › ) ) array( ‹ saisie › => ‹ radio ›, ‹ options › => array( ‹ nom › => ‹ Option3 ›, ‹ label › => ‹ <:escal:favicon_choix3:> › ) ) ); return $saisies; } Et … rien ne s’affiche. Et ensuite comment s’enregistre le choix fait dans la base données ? JC

Le 14.05.21 à 10:34, Jean-Christophe Villeneuve a écrit :

Oui, le principe parait simple mais ce sont les différentes saisies possibles qui m'intéressent.
Et l'exemple sur la page Formulaire de configuration avec le plugin Saisies - SPIP-Contrib est trop simpliste pour comprendre vraiment.

Imaginons que je veuille un formulaire avec juste 3 boutons radio

J'ai donc

  * un formulaire plus général qui appelle ce formulaire avec

 &lt;div class=&quot;ajax&quot;&gt;
     \#FORMULAIRE\_CONFIGURER\_ESCAL\_FAVICON
 &lt;/div&gt;

  * un fichier configurer_escal_favicon.html vide
  * un fichier configurer_escal_favicon.php avec

<?php
if (!defined('_ECRIRE_INC_VERSION')) return;

function formulaires_configurer_escal_favicon_saisies_dist(){
// $saisies est un tableau décrivant les saisies à afficher dans le formulaire de configuration
$saisies = array(
array(
'saisie' => 'radio',
'options' => array(
'nom' => 'Option1',
'label' => '<:escal:favicon_choix1:>'
)
)
array(
'saisie' => 'radio',
'options' => array(
'nom' => 'Option2',
'label' => '<:escal:favicon_choix2:>'
)
)
array(
'saisie' => 'radio',
'options' => array(
'nom' => 'Option3',
'label' => '<:escal:favicon_choix3:>'
)
)
);
return $saisies;
}

Et ... rien ne s'affiche.
Et ensuite comment s'enregistre le choix fait dans la base données ?

JC

là tu a créé 3 saisies radio comprenant chacune 0 bouton radios, et non pas 1 saisie radio comprenant 3 boutons (je sais pas si tu a deja manipulé formidable ou l'interface graphique des champs extra, mais tu vois que quand tu veux ajouter des boutons radio tu choisi une seule fois "boutons radio", et ensuite tu précise le contenu).

Ce qu'il te faut c'est une saisie radio avec le detail des choix dans data

quelque chose comme

array(
  'saisie' => 'radio',
  'options' => array(
    'nom' => 'favicon',
    'data' => array(
      'Option1' => '<:escal:favicon_choix1:>',
      'Option1' => '<:escal:favicon_choix2:>',
      'Option3' => '<:escal:favicon_choix3:>',
      )
  )
)

Ensuite une fois que la personne aura choisi le formulaire, la valeur choisie (donc soit Option1, soit Option2, soit Option3) sera disponible via #CONFIG{escal_favicon/favicon} (ou lire_config('escal_favicon/favicon').

La liste des saisies disponibles en standard avec les différentes options se trouve ici Référence des saisies - SPIP-Contrib

Par CONTRE, il ne faut pas faire un formulaire qui appelle un formulaire. Les formulaires imbriqués, c'est pas une bonne idée.

- Soit tu fais une une page qui appelle plusieurs formulaires
- Soit, sans doute le plus simple, y compris pour l'user, tu fais un formulaire global avec toutes les options possible.

Le 14/05/2021 à 10:44, Maïeul Rouquette a écrit :

- Soit, sans doute le plus simple, y compris pour l'user, tu fais un formulaire global avec toutes les options possible.

Surtout que tu peux découper un formulaire en fieldset pliable OU en fieldset transformé en onglets (option récente des fieldsets)

Et ensuite comment s'enregistre le choix fait dans la base données ?

Ni plus ni moins que si tu faisais ton formulaire direct en HTML, ça c'est sans rapport avec Saisies, c'est l'API "configurer" de SPIP.

--
RastaPopoulos

Bonjour,

Pourriez indiquer l’avantage à utiliser SAISIE par rapport a une saisie de formulaire directe si ce n’est pour faciliter la tache en particulier pour un développeur débutant ?

sécurité ? rapidité d’exécution ? maintenance ?

merci

Message du 14/05/21 11:13
De : « RastaPopoulos » rastapopoulos@spip.org
A : spip@rezo.net
Copie à :
Objet : Re: [Spip] Spip4 et formulaires

Le 14/05/2021 à 10:44, Maïeul Rouquette a écrit :

  • Soit, sans doute le plus simple, y compris pour l’user, tu fais un formulaire global avec toutes les options possible.

Surtout que tu peux découper un formulaire en fieldset pliable OU en fieldset transformé en onglets (option récente des fieldsets)

Et ensuite comment s’enregistre le choix fait dans la base données ?

Ni plus ni moins que si tu faisais ton formulaire direct en HTML, ça c’est sans rapport avec Saisies, c’est l’API « configurer » de SPIP.


RastaPopoulos


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Ok merci, j'ai bien mes 3 options qui s'affichent mais pas de titre.

Donc comment indiquer un titre au formulaire ?

JC

Le 14/05/2021 à 10:44, Maïeul Rouquette a écrit :

Le 14.05.21 à 10:34, Jean-Christophe Villeneuve a écrit :

Oui, le principe parait simple mais ce sont les différentes saisies possibles qui m'intéressent.
Et l'exemple sur la page Formulaire de configuration avec le plugin Saisies - SPIP-Contrib est trop simpliste pour comprendre vraiment.

Imaginons que je veuille un formulaire avec juste 3 boutons radio

J'ai donc

* un formulaire plus général qui appelle ce formulaire avec

 &lt;div class=&quot;ajax&quot;&gt;
     \#FORMULAIRE\_CONFIGURER\_ESCAL\_FAVICON
 &lt;/div&gt;

* un fichier configurer_escal_favicon.html vide
* un fichier configurer_escal_favicon.php avec

<?php
if (!defined('_ECRIRE_INC_VERSION')) return;

function formulaires_configurer_escal_favicon_saisies_dist(){
// $saisies est un tableau décrivant les saisies à afficher dans le formulaire de configuration
$saisies = array(
array(
'saisie' => 'radio',
'options' => array(
'nom' => 'Option1',
'label' => '<:escal:favicon_choix1:>'
)
)
array(
'saisie' => 'radio',
'options' => array(
'nom' => 'Option2',
'label' => '<:escal:favicon_choix2:>'
)
)
array(
'saisie' => 'radio',
'options' => array(
'nom' => 'Option3',
'label' => '<:escal:favicon_choix3:>'
)
)
);
return $saisies;
}

Et ... rien ne s'affiche.
Et ensuite comment s'enregistre le choix fait dans la base données ?

JC

là tu a créé 3 saisies radio comprenant chacune 0 bouton radios, et non pas 1 saisie radio comprenant 3 boutons (je sais pas si tu a deja manipulé formidable ou l'interface graphique des champs extra, mais tu vois que quand tu veux ajouter des boutons radio tu choisi une seule fois "boutons radio", et ensuite tu précise le contenu).

Ce qu'il te faut c'est une saisie radio avec le detail des choix dans data

quelque chose comme

array(
'saisie' => 'radio',
'options' => array(
'nom' => 'favicon',
'data' => array(
'Option1' => '<:escal:favicon_choix1:>',
'Option1' => '<:escal:favicon_choix2:>',
'Option3' => '<:escal:favicon_choix3:>',
)
)
)

Ensuite une fois que la personne aura choisi le formulaire, la valeur choisie (donc soit Option1, soit Option2, soit Option3) sera disponible via #CONFIG{escal_favicon/favicon} (ou lire_config('escal_favicon/favicon').

La liste des saisies disponibles en standard avec les différentes options se trouve ici Référence des saisies - SPIP-Contrib

Par CONTRE, il ne faut pas faire un formulaire qui appelle un formulaire. Les formulaires imbriqués, c'est pas une bonne idée.

- Soit tu fais une une page qui appelle plusieurs formulaires
- Soit, sans doute le plus simple, y compris pour l'user, tu fais un formulaire global avec toutes les options possible.

Le 14/05/2021 à 12:04, Jean-Christophe Villeneuve a écrit :

Donc comment indiquer un titre au formulaire ?

Un formulaire n'a pas de titre. Ce sont les pages qui ont des titres. Donc c'est pas dans le formulaire à priori. C'est ta page qui a un <h1> quoi (ou autre si plusieurs intertitres) et dedans qui affiche un ou plusieurs formulaires. Donc c'est dans tes squelettes.

--
RastaPopoulos

Le 14/05/2021 à 11:12, RastaPopoulos a écrit :

Le 14/05/2021 à 10:44, Maïeul Rouquette a écrit :

- Soit, sans doute le plus simple, y compris pour l'user, tu fais un formulaire global avec toutes les options possible.

Surtout que tu peux découper un formulaire en fieldset pliable OU en fieldset transformé en onglets (option récente des fieldsets)

Faudra que je regarde ça aussi mais une chose à la fois.

  Et ensuite comment s'enregistre le choix fait dans la base données ?

Ni plus ni moins que si tu faisais ton formulaire direct en HTML, ça c'est sans rapport avec Saisies, c'est l'API "configurer" de SPIP.

Ok mais où est-ce enregistré.
Avec mes formulaires actuels ça enregistre tout dans spip_metas/escal grâce à
<input type="hidden" name="_meta_casier" value="escal/config" />

J'aimerais bien conserver ce fonctionnement

JC

Le 14.05.21 à 11:36, Josiane ALETTO a écrit :

Bonjour,

Pourriez indiquer l'avantage à utiliser SAISIE par rapport a une saisie de formulaire directe si ce n'est pour faciliter la tache en particulier pour un développeur débutant ?

sécurité ? rapidité d'exécution ? maintenance ?

merci

- sécurité : pas d'avantage comparatif, puisque saisie ne s'occupe que de fournir les saisies, pas les traitements, et c'est plutot au niveau des traitements
- rapidié d'execution : non plus, et même saisies est sans doute plus lent (sans que ce ne soit forcément très fort)
- lisibilité du code : en se focalisant uniquement sur la structure logique des saisies et non pas sur l'affichage des saisies, on gagne en lisibilité du code (notamment lorsqu'on veut charger des valeurs par défaut, gerer les erreurs etc). Plus besoin de mettre des #GET / #SET partout :stuck_out_tongue:
- et du coup on y a gagne en rapidité d'écriture (une fois l'apprentissage de base fait)
- structure html : avec saisies, on est sûr que la structure html du formulaire respecte les conventions SPIP
- autres avantages :
  - possibilité de vérifier automatiquement certaines valeurs par simple déclaration (exemple, si je veux tester que la valeur est
  - possibilité de gerer facilement des formulaires multiétapes (avec les dernières versions du plugins + les versions de dev de SPIP)
  - possibilité de profiter des affichages conditionnels des saisies (si tel saisie a telle valeur, alors afficher telle autre saisie)

merci

donc en résumé : facilite la création et la maintenance.

Message du 14/05/21 12:17
De : « Maïeul Rouquette » maieul@maieul.net
A : « Josiane ALETTO » josiane.aletto@orange.fr, « RastaPopoulos » rastapopoulos@spip.org, spip@rezo.net
Copie à :
Objet : Re: Spip4 et formulaires

Le 14.05.21 à 11:36, Josiane ALETTO a écrit :

Bonjour,

Pourriez indiquer l’avantage à utiliser SAISIE par rapport a une saisie
de formulaire directe si ce n’est pour faciliter la tache en particulier
pour un développeur débutant ?

sécurité ? rapidité d’exécution ? maintenance ?

merci

  • sécurité : pas d’avantage comparatif, puisque saisie ne s’occupe que
    de fournir les saisies, pas les traitements, et c’est plutot au niveau
    des traitements
  • rapidié d’execution : non plus, et même saisies est sans doute plus
    lent (sans que ce ne soit forcément très fort)
  • lisibilité du code : en se focalisant uniquement sur la structure
    logique des saisies et non pas sur l’affichage des saisies, on gagne en
    lisibilité du code (notamment lorsqu’on veut charger des valeurs par
    défaut, gerer les erreurs etc). Plus besoin de mettre des #GET / #SET
    partout :stuck_out_tongue:
  • et du coup on y a gagne en rapidité d’écriture (une fois
    l’apprentissage de base fait)
  • structure html : avec saisies, on est sûr que la structure html du
    formulaire respecte les conventions SPIP
  • autres avantages :
  • possibilité de vérifier automatiquement certaines valeurs par simple
    déclaration (exemple, si je veux tester que la valeur est
  • possibilité de gerer facilement des formulaires multiétapes (avec les
    dernières versions du plugins + les versions de dev de SPIP)
  • possibilité de profiter des affichages conditionnels des saisies (si
    tel saisie a telle valeur, alors afficher telle autre saisie)

Le 14.05.21 à 12:10, Jean-Christophe Villeneuve a écrit :

Le 14/05/2021 à 11:12, RastaPopoulos a écrit :

Le 14/05/2021 à 10:44, Maïeul Rouquette a écrit :

- Soit, sans doute le plus simple, y compris pour l'user, tu fais un formulaire global avec toutes les options possible.

Surtout que tu peux découper un formulaire en fieldset pliable OU en fieldset transformé en onglets (option récente des fieldsets)

Faudra que je regarde ça aussi mais une chose à la fois.

Et ensuite comment s'enregistre le choix fait dans la base données ?

Ni plus ni moins que si tu faisais ton formulaire direct en HTML, ça c'est sans rapport avec Saisies, c'est l'API "configurer" de SPIP.

Ok mais où est-ce enregistré.
Avec mes formulaires actuels ça enregistre tout dans spip_metas/escal grâce à
<input type="hidden" name="_meta_casier" value="escal/config" />

J'aimerais bien conserver ce fonctionnement

JC

ca pareil, ca n'a rien à voir avec saisies, c'est l'api de config de SPIP.

si tu a un formulaire #CONFIGURER_TOTO

bah ca enregistre par défaut dans spip_metas/toto, et tu y accède avec lire_config / #CONFIG

et si tu met un _meta_casier, bah ca met ailleurs (et rien ne t'empeche de le faire avec saisies, vu qu'on a la possibilité d'avoir des saisies hidden), bah ca te stocke ailleurs

Ok

Donc des pages dans /prive/squelettes/contenu qui appellent 1 ou plusieurs formulaires

Reste à articuler tout ça car la config d'escal, c'est un bon paquet de formulaires.
Donc comment s'y prendre pour avoir un menu à gauche.

Pour l'instant j'ai ça que j'avais piqué à sarkaspip

if (!defined('_ESCAL_PAGES_CONFIG')) define('_ESCAL_PAGES_CONFIG',
'accueil
|generalites!layout:elements:bandeau:menuh:multilinguisme:pied
|colonne_principale!sommaire_principal:rubrique_principal:article_principal:contact_principal:forumsite_principal
|choix_blocs!sommaire_lateral:rubrique_lateral:article_lateral:forumsite_lateral:autres_lateral
|parametrage_blocs!deplier_replier:titre_contenu
|style!fonds:bords:arrondis
|plugins!galleria:rainette:mentions:articlepdf:spipdf:licence:spip400:socialtags:liens_sociaux:qrcode:facebook:signalement:shoutbox
');

Mais ça appelle des formulaires, pas des pages

JC

Le 14/05/2021 à 12:42, Maïeul Rouquette a écrit :

Le 14.05.21 à 12:10, Jean-Christophe Villeneuve a écrit :

Le 14/05/2021 à 11:12, RastaPopoulos a écrit :

Le 14/05/2021 à 10:44, Maïeul Rouquette a écrit :

- Soit, sans doute le plus simple, y compris pour l'user, tu fais un formulaire global avec toutes les options possible.

Surtout que tu peux découper un formulaire en fieldset pliable OU en fieldset transformé en onglets (option récente des fieldsets)

Faudra que je regarde ça aussi mais une chose à la fois.

Et ensuite comment s'enregistre le choix fait dans la base données ?

Ni plus ni moins que si tu faisais ton formulaire direct en HTML, ça c'est sans rapport avec Saisies, c'est l'API "configurer" de SPIP.

Ok mais où est-ce enregistré.
Avec mes formulaires actuels ça enregistre tout dans spip_metas/escal grâce à
<input type="hidden" name="_meta_casier" value="escal/config" />

J'aimerais bien conserver ce fonctionnement

JC

ca pareil, ca n'a rien à voir avec saisies, c'est l'api de config de SPIP.

si tu a un formulaire #CONFIGURER_TOTO

bah ca enregistre par défaut dans spip_metas/toto, et tu y accède avec lire_config / #CONFIG

et si tu met un _meta_casier, bah ca met ailleurs (et rien ne t'empeche de le faire avec saisies, vu qu'on a la possibilité d'avoir des saisies hidden), bah ca te stocke ailleurs