Adaptation du formulaire de signup pour gérer des activités payantes

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

J'ai un petit problème sur Drupal. Dernièrement pour un projet on nous a demandé de développer un site pour un association proposant des activités, a ses membres. Le truc c'est que ces activités peuvent être payantes et ne pas coûter le même prix selon la personne qui s'y est inscrit (adhérant de l'association ou simple personne souhaitant la découvrir..)

Donc pour gérer mes activités j'utilise le module event couplé avec signup. Néanmoins je souhaite pouvoir spécifier sur chaque inscription, non refusée, le montant payé, le numéro de chèque et le numéro de banque (visibles seulement par l'individu et le propriétaire du site pour sa compta).

Pour ce faire en cherchant sur le forum j'ai trouvé que je pouvais surcharger la fonction du template comme ceci:

function mon_theme_signup_user_form() {
$form['signup_form_data']['#tree'] = TRUE;
$form['signup_form_data']['Montant'] = array(
'#type' => 'textfield',
'#title' => t('Montant'),
'#size' => 40,
'#maxlength' => 64
);
$form['signup_form_data']['Num_Cheque'] = array(
'#type' => 'textfield',
'#title' => t('Num_Cheque'),
'#size' => 40,
'#maxlength' => 64
);
$form['signup_form_data']['Num_Banque'] = array(
'#type' => 'textfield',
'#title' => t('Num_Banque'),
'#size' => 40,
'#maxlength' => 64
);
return $form;
}

Résultat il y à exactement les champs que je veux pour chaque inscriptions, seul l'individu et l'admin peuvent les voirs, et ça reste bien propre (me semble t'il..) dans le fonctionnement de Drupal.
Seul hic l'individu qui s'inscrit peut lui même remplir ces champs.. donc ça m'est inutile. Comment puis je faire pour qu'ils ne soit modifiable que pour l'administrateur??

Ps: j'avais pensé à utilisé signup status pour simplement précisé payé ou non.. mais le certificates n'est pas valide sur les versions 6+ et donc si je met un statut payé ou non l'individu concerné peut le modifier aussi :'(

Est ce que vous avez une petite solution me permettant de gérer le fait que les activités soient payantes et qu'il faille conserver le montant et les références du paiement??

Merci de votre aide :p

Forum : 
Version de Drupal : 
Tags : 

Bah tu surcharge la fonction qui t affiche le formulaire.

Donc le plus dure est fait.

Si c est juste une question d apparition selon un role, tu récupère dans la variable $user qui est en global le role puis tu unset les champs de ton formulaire si le role n est pas addequat

if(role n est pas administrateur) unset de ce champ, unset de ce champ...

Et dans ton formulaire ces champs n existeron que si tu est administrateur..

Mouep c'est juste que je savais pas trop comment faire, en fait il suffit d'ajouter:
'#disabled' => TRUE

Mais en fait je me rend compte d'un truc au quel j'avais pas fait gaffe... l'admin ne peut pas modifier le contenu des informations additionnelles des autres personnes. Donc ça ferait que seul l'admin aurait ces champs à remplir pour sa propre inscription : /

Y'à pas un moyen quelconque de rajouter des champs, ou même une note (commentaire) sur une inscription? Vu qu'il y'à un système pour marquer si la personne est venue ou non il doit bien y avoir la possibilité d'ajouter des champs qui ne sont concernés que par l'admin et ce sur toutes les inscriptions.