Pétition: rendre le champ message obligatoire

Bonjour,
Je cherche à rendre le champ "message" de la pétition obligatoire et j'y
arrive pas. Je sais que les deux fichiers concernés sont signature.html et
signature.php

Merci de votre aide

<fama <at> au-senegal.com> writes:

Bonjour,
Je cherche à rendre le champ "message" de la pétition obligatoire et j'y
arrive pas. Je sais que les deux fichiers concernés sont signature.html et
signature.php

Merci de votre aide

Salut,

j'avais publié une astuce pour répondre à une question similaire il y a
quelques temps :

++
b_b

Merci pour votre réponse, je suis sous spip 2.1.12 et j'ai mis dans ce
code dans mes_options.php mais Hélas ça marche pas

<?php
// on ajoute notre fonction dans le pipeline de verification des
formulaires
// http://programmer.spip.org/Qu-est-ce-qu-un-pipeline
$GLOBALS['spip_pipeline']['formulaire_verifier'] .= '|nom_obligatoire';

// la fonction qui verifie que le nom n'est pas vide
function nom_obligatoire($flux){
        $form = $flux['args']['form'];
        if ($form=='forum'){
                if
(!sinon($GLOBALS['visiteur_session']['message'],$GLOBALS['visiteur_session']['session_message'])){
                        $flux['data']['message_erreur'] .=
_T('nom_obligatoire');
                        $flux['data']['session_message'] =
_T('nom_obligatoire');
                        unset($flux['data']['previsu']);
                }
        }
        return $flux;
}
?>

On Thu, 23 May 2013 08:33:10 +0000 (UTC), b_b <brunobergot@gmail.com>
wrote:

<fama <at> au-senegal.com> writes:

Bonjour,
Je cherche à rendre le champ "message" de la pétition obligatoire et

j'y

arrive pas. Je sais que les deux fichiers concernés sont signature.html
et
signature.php

Merci de votre aide

Salut,

j'avais publié une astuce pour répondre à une question similaire il y a
quelques temps :

Comment rendre obligatoire un champ de formulaire - Le labo

++
b_b

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

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

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

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

Le 23/05/13 13:29, fama@au-senegal.com a écrit :

         if ($form=='forum'){

le code donné en exemple l'était pour être appliqué
au formulaire de *forum*

pour le formulaire de *petitions* il faut l'adapter
en donnant :
   if ($form == 'signature') {

(le nom du formulaire est donné par la variable formulaire_action)

MErci,

C'est après que je l'ai constaté et changé, mais ça marche toujours pas :slight_smile:

<?php
// on ajoute notre fonction dans le pipeline de verification des
formulaires
// http://programmer.spip.org/Qu-est-ce-qu-un-pipeline
$GLOBALS['spip_pipeline']['formulaires_verifier'] .= '|nom_obligatoire';

// la fonction qui verifie que le nom n'est pas vide
function nom_obligatoire($flux){
        $form = $flux['args']['form'];
        if ($form=='signature'){
                if
(!sinon($GLOBALS['visiteur_session']['message'],$GLOBALS['visiteur_session']['session_message'])){
                        $flux['data']['message_erreur'] .=
_T('nom_obligatoire');
                        $flux['data']['session_message'] =
_T('nom_obligatoire');
                }
        }
        return $flux;
}
?>

J'ai même remplacé

$GLOBALS['spip_pipeline']['formulaire_verifier'] .= '|nom_obligatoire';

par

$GLOBALS['spip_pipeline']['formulaires_signature_verifier'] .=
'|nom_obligatoire';

par contre je ne comprend pas cette ligne

if
(!sinon($GLOBALS['visiteur_session']['message'],$GLOBALS['visiteur_session']['session_message'])){

j'ai changé ['nom'] et ['session_nom'] par ['message']['session_message']
mais c'est que fait ['session_message'] ??

Merci

On Thu, 23 May 2013 15:13:25 +0200, denisb
<denisb@a-working-class-hero-is-something-to.be> wrote:

Le 23/05/13 13:29, fama@au-senegal.com a écrit :

         if ($form=='forum'){

le code donné en exemple l'était pour être appliqué
au formulaire de *forum*

pour le formulaire de *petitions* il faut l'adapter
en donnant :
   if ($form == 'signature') {

(le nom du formulaire est donné par la variable formulaire_action)

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

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

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

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

Le 23/05/13 15:44, fama@au-senegal.com a écrit :

C'est après que je l'ai constaté et changé, mais ça marche toujours pas :slight_smile:

oui en effet. au temps pour moi.
la fonction dans ce cas ne peut fonctionner (pour les curieux : les
arguments passés à la fonction verifier de signature.php se limitent
au seul (!) id_article...)

donc en voici une autre (à déposer dans mes_options.php) :

// ajout au pipeline formulaire_verifier qui lui-même ajoute
// des fonctionnalités à la fonction verifier des formulaires cvt
$GLOBALS['spip_pipeline']['formulaire_verifier'] .= '|petition_mess_obli';

// la fonction de vérification ajoutée
function petition_mess_obli($flux) {
   // quel est le formulaire dont nous allons augmenter
   // la fonction verifier ?
   $form = $flux['args']['form'];
   // si ce formulaire est 'formulaires/signature.php'
   // et que la taille de la variable 'message' postée
   // est inférieure à 1 caractère (donc qu'elle est vide)
   if ($form == 'signature' AND strlen(trim(_request('message'))) < 1) {
     // ajout dans le flux du traitement d'un message d'erreur
     // qui bloquera le traitement du formulaire en affichant le texte
     // correspondant à l'item de langue 'et_le_message_alors_!'
     $flux['data']['message_erreur'] = _T('et_le_message_alors_!');
   }
   return $flux;
}

il faudra penser à ajouter, dans squelettes/lang/local_fr.php
une entrée supplémentaire :
   '...' => '...',
   'et_le_message_alors_!' => 'oupsss : pas de message ? vraiment ?',
   '...' => '...',

à noter qu'il faudra sans doute supprimer
   /tmp/cache/charger_pipelines.php
pour que ce nouveau pipeline soit pris en compte.

j'espère que cette fois les explications auront été plus claires.

Oui très claire et merci pour votre aide, ceci va aidé beaucoup de
personnes! On était nombreux dans les forums a cherché une solution pour ce
problème

On Thu, 23 May 2013 21:59:02 +0200, denisb
<denisb@a-working-class-hero-is-something-to.be> wrote:

Le 23/05/13 15:44, fama@au-senegal.com a écrit :

C'est après que je l'ai constaté et changé, mais ça marche toujours pas
:slight_smile:

oui en effet. au temps pour moi.
la fonction dans ce cas ne peut fonctionner (pour les curieux : les
arguments passés à la fonction verifier de signature.php se limitent
au seul (!) id_article...)

donc en voici une autre (à déposer dans mes_options.php) :

// ajout au pipeline formulaire_verifier qui lui-même ajoute
// des fonctionnalités à la fonction verifier des formulaires cvt
$GLOBALS['spip_pipeline']['formulaire_verifier'] .=

'|petition_mess_obli';

// la fonction de vérification ajoutée
function petition_mess_obli($flux) {
   // quel est le formulaire dont nous allons augmenter
   // la fonction verifier ?
   $form = $flux['args']['form'];
   // si ce formulaire est 'formulaires/signature.php'
   // et que la taille de la variable 'message' postée
   // est inférieure à 1 caractère (donc qu'elle est vide)
   if ($form == 'signature' AND strlen(trim(_request('message'))) < 1) {
     // ajout dans le flux du traitement d'un message d'erreur
     // qui bloquera le traitement du formulaire en affichant le texte
     // correspondant à l'item de langue 'et_le_message_alors_!'
     $flux['data']['message_erreur'] = _T('et_le_message_alors_!');
   }
   return $flux;
}

il faudra penser à ajouter, dans squelettes/lang/local_fr.php
une entrée supplémentaire :
   '...' => '...',
   'et_le_message_alors_!' => 'oupsss : pas de message ? vraiment ?',
   '...' => '...',

à noter qu'il faudra sans doute supprimer
   /tmp/cache/charger_pipelines.php
pour que ce nouveau pipeline soit pris en compte.

j'espère que cette fois les explications auront été plus claires.

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

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

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

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