Submitted by aiphes on
Bonjour,
j'utilise ce module avec son cousin webform block.
J'ai toutefois des besoins spéciaux :
- réaliser un formulaire où l'on peut choisir le destinataire
- faire un lien vers ce formulaire qui rempli automatiquement le destinataire en fonction de la provenance du lien (ex: lien placé sur page Lycée A renvoi vers formulaire ou destinataire Lycée A est auto complété )
merci pour vos infos
il me semble que si tu crées
Permalien Soumis par selinav le 25 Février, 2010 - 18:06
il me semble que si tu crées un champ email où l'utilisateur saisira l'adresse email du destinataire tu peux le récupérer comme destinataire du mail.
Pour le remplir automatiquement, il faudra que tu fasses un module où tu pourras par exemple en fonction d'une variable passé dans l'url.
J'avais pas mal galéré, pour ce genre de truc, mais j'ai réussi.
pour la liste j'ai remis la
Permalien Soumis par aiphes le 26 Février, 2010 - 08:51
pour la liste j'ai remis la main sur la solution :
http://drupalfr.org/forum/support/developpement/9854-module-webform-choi...
pour le module, c'est pas gagné car je sais juste "decrypter" le php, pas l'ecrire..
dommage qu'il n'y est pas un portage d'un excellent module de wordpress, Cforms 2, car c'est super puissant en matière de formulaire...
Si je t'expliques mon module
Permalien Soumis par selinav le 26 Février, 2010 - 08:55
Si je t'expliques mon module ça t'intéresse?
ma foi , il faudra bien que
Permalien Soumis par aiphes le 26 Février, 2010 - 08:59
ma foi , il faudra bien que ej m'y mette un jour, moi le critère sera l'url je pense.
je t'ecoute ;)
Bon voici ce que j'avais
Permalien Soumis par selinav le 26 Février, 2010 - 09:12
Bon voici ce que j'avais essayé de faire dans mon cas, un formulaire pour postuler à une offre d'emploi.
Dans ma page offre, j'ai mis un formulaire en-dessous grâce à webform block
quelques questions pratiques
Permalien Soumis par aiphes le 26 Février, 2010 - 09:37
quelques questions pratiques :
mes données propres :
le module n'est pas
Permalien Soumis par selinav le 26 Février, 2010 - 10:03
le module n'est pas disponible sur drupal.org car il s'agit d'un besoin spécifique, tu n'auras pas d'interface d'administration.
Je te laisse faire une recherche en ce qui concerne la création de son premier module.
(fichier .info, .module, nom du module...)
Il faudra donc que tu ajoutes le code ci-dessus dans le fichier .module.
Puis que tu actives le module
Pour ton cas tu peux mettre un bout de php pour récupérer le bon mail.
Au lieu de récupérer le champ CCK comme moi, tu mets un truc du genre
bon j'ai créé le
Permalien Soumis par aiphes le 26 Février, 2010 - 10:31
bon j'ai créé le module,drupal le voit correctement, ensuite niveau code est ce que cela pourrais marcher ? en récupérant l'url,car je ne sais pas passer une variable comme tu l'indique.
<?php
$origine=$_GET['$url']; /* où tu auras passé en variable la page qui appelle le formulaire, par exemple si tu viens de lycée, ton lien vers le form de contact de la page lycée sera contact?origine=lycee, pour une page ecole ça pourrait être contact?origine=ecole ... */ switch ($url) {
case 'lycee-rostand':
$email='mail@lycee.fr;
break;
case '
lycee-grawitz':$email='mail@ecole.fr;
break;
} $form['submitted']['email_offre']['#default_value']=$email; //...
?>
voila le raisonnement à traduire ensuite en code:
1- récupérer le Nid (car les pages sont statiques)ou passer par l'url mais moins évident à cause de pathauto...si le nom de la page change
2- si la page à le Nid 25 alors envoyer le mail à l'adresse lycee-XX@mail.com et ainsi de suite
Sur la page lycée tu vas
Permalien Soumis par selinav le 26 Février, 2010 - 10:51
Sur la page lycée tu vas avoir un lien vers la page contact.
Dans ton menu, au lieu de mettre 'contact' ou 'node/10' tu vas mettre 'contact?origine=lycee' ou 'node/10?origine=lycee'
Pour la page école tu fais pareil sauf que tu mets 'contact?origine=ecole'.
C'est ce que tu vas récupérer dans
$origine=$_GET['origine'];
Et après tu fais un switch où tu détermines le mail du destinataire en fonction de l'origine de la page.
ok j'ai compris le
Permalien Soumis par aiphes le 26 Février, 2010 - 15:33
ok j'ai compris le système.
qu'en est t il de
$form['submitted']['email_offre']['#default_value']=$email;
que faut il que je modifie pour l'adapter à mes besoins ?
j'avais créé un champ caché
Permalien Soumis par selinav le 26 Février, 2010 - 16:39
j'avais créé un champ caché de type email qui s'appelle email offre.
Et mis ce champ là comme destinataire du form.
Il faut donc que tu crées un champ caché par exemple email destinataire qui aura comme nom interne email_destinataire. Et qui sera le destinataire du mail.
Tu remplace donc email_offre par email_destinataire.
Avec firebug tu verras apparaître ton champ caché et sa valeur.
ok j'ai fais un champ
Permalien Soumis par aiphes le 26 Février, 2010 - 17:10
ok j'ai fais un champ "hidden" dans webform et je lui ai donnée comme nom machine "email_destinataire".
au niveau du formulaire ya que ca a faire ?
sinon voila mon code fini :
<?php
$origine=$_GET['origine']; /* où tu auras passé en variable la page qui appelle le formulaire, par exemple si tu viens de lycée, ton lien vers le form de contact de la page lycée sera contact?origine=lycee, pour une page ecole ça pourrait être contact?origine=ecole ... */ switch ($origine) {
case 'lycee-rostand':
$email='mail@lycee.fr;
break;
case '
le-rocher':$email='lerocher@lycee-le-rocher.fr;
break;
} $form['submitted']['email_destinataire']['#default_value']=$email; //...
?>
il manque rien ? car l'éditeur me colore pas tout pareil je trouve,alors j'ai des doutes vu que je ne connais pas trop php
bien j'ai corrigé mon code
Permalien Soumis par aiphes le 27 Février, 2010 - 12:42
bien j'ai corrigé mon code car il manqué des " et des ' , ensuite ca a l'air de marcher, du moins au niveau du code proposé par le formulaire et le champ hidden email_destinataire qui me donne cela en html :
<input type="hidden" value="form-ebda96fa4fa81975131af3b4769fc2b6" id="form-ebda96fa4fa81975131af3b4769fc2b6" name="form_build_id">
je présume que drupal chiffre l'email pour ne pas l'avoir en clair ?
vais essayer d'envoyer le mail pour voir
EDIT: envoi de mail ne marche pas...j'ai testé avec un mail "statique" , la fonction mail php de wampserver marche bien,le mail arive nikel..mais le systeme de switch ne renseigne pas le champ caché semble t il..
bien mon serveur wamp envoi
Permalien Soumis par aiphes le 1 Mars, 2010 - 14:30
bien mon serveur wamp envoi bien les formulaire classiques avec adresse mail "statique" mais le formulaire avec mon module custom ne marche pas, car il ne semble pas recupérer la variable origine...voici le code tel que je l'utilise...
<?php
$origine=$_GET['origine']; /* où tu auras passé en variable la page qui appelle le formulaire, par exemple si tu viens de lycée, ton lien vers le form de contact de la page lycée sera contact?origine=lycee, pour une page ecole ça pourrait être contact?origine=ecole ... */ switch ($origine) {
case 'lycee-grawitz':
$email='webmaster@provence-formation.com';
break;
case
'lycee-le-rocher':$email='frederic.serbeto@provence-formation.com';
break;
} $form['submitted']['email_destinataire']['#default_value']=$email; //...
?>
comment savoir si il récupére bien la variable ?
php n'est pas mon fort, et son debugage encore moins..
Tu dois avoir un champ
Permalien Soumis par selinav le 3 Mars, 2010 - 14:06
Tu dois avoir un champ hidden, tu n'as pas regardé le bon, moi j'ai un truc du genre
<input type="hidden" value="email@orange.fr" id="edit-submitted-email-offre" name="submitted[email_offre]">
Voir http://www.vitrinesderoanne.com/offre-emploi/recherchons-collaborateurs-...
dans mon formulaire, j'ai un
Permalien Soumis par aiphes le 3 Mars, 2010 - 14:13
dans mon formulaire, j'ai un champ destinataire qui est de type hidden, avec comme
Field Key : email_destinataire. donc je comprends pas où est le souci à ce niveau la...
Pour les paramètres de ce champ :
il est obligatoire et doit recevoir un email comme valeur.
au niveau du html :
<input type="hidden" value="" id="edit-submitted-email-destinataire" name="submitted[email_destinataire]">
dans l'url j'ai : http://localhost/drupalPF/contact?origine=lycee-grawitz
donc le champ ne se rempli pas...
j'utilise ce code php:
pour voir si ta variable est
Permalien Soumis par selinav le 3 Mars, 2010 - 15:11
pour voir si ta variable est bien récupéré colle le code suivant en-dessous de
ça doit t'afficher dans la barre de message de rupal :
origine : lycee-grawitz
bien je débugge doucement
Permalien Soumis par aiphes le 3 Mars, 2010 - 15:12
bien je débugge doucement avec des echo, et j'ai pu constater que la variable arrive bien jusuq'a la page du formulaire puisque :
me donne :
Valeur transmise :lycee-grawitz
Valeur email :xxxxxxx@mon-email.com
Valeur form-champ destinataire :
ce qui indique clairement que form n'utilise pas la variable pour renseigner le champ hidden..
met des . à la place des , ça
Permalien Soumis par selinav le 3 Mars, 2010 - 16:04
met des . à la place des , ça devrait mieux s'afficher
echo 'Valeur form-champ destinataire :'.$form['email_destinataire'].'
';
décidément une sacré synchro
Permalien Soumis par aiphes le 3 Mars, 2010 - 16:08
décidément une sacré synchro de post...
bref voici ce que me retourne le code avec des points :
Valeur form-champ submitted :Array
je pensais aussi que je n'utilise pas de fonction qui dit a drupal d'altérer le formulaire, c'est peut etre la cause du problème non ?
oui tu as oublié l'essentiel,
Permalien Soumis par selinav le 3 Mars, 2010 - 16:13
oui tu as oublié l'essentiel, regarde mon code du début
bon voila un début mais ca ne
Permalien Soumis par aiphes le 3 Mars, 2010 - 16:19
bon voila un début mais ca ne marche pas, ou alors faut reactiver le module, en tout cas je ne vois plus mes echo;
je sais pas trop quoi mettre en parametres de la fonction...idem pour les & que j'ai enlevé..
il te manque le test sur l'id
Permalien Soumis par selinav le 3 Mars, 2010 - 16:36
il te manque le test sur l'id du formulaire, regarde le code du début c'est tout expliqué!
je suis planté, j'ai rajouté
Permalien Soumis par aiphes le 3 Mars, 2010 - 16:44
je suis planté, j'ai rajouté le test sur l'id du formulaire mais je n'ai plus mes echo qui s'affichent..alors je comprends plus...un probleme dans le nom de la fonction ? un caractère absent ou en trop ?
les echo ne marchent pas pour
Permalien Soumis par selinav le 3 Mars, 2010 - 17:32
les echo ne marchent pas pour debugger tu dois utiliser la fonction drupal_set_message comme je te l'ai indiqué.
Dans ton champ hidden la valeur est-t-elle toujours vide?
désespérément vide... je
Permalien Soumis par aiphes le 4 Mars, 2010 - 09:08
désespérément vide...
je posterai les résultats de debug via drupalpour les echo je pensais que ca marchais comme les trace avec actionscript..
EDIT : rien ne s'affiche, j'ai ajouté la fonction de cette page : http://planete.drupalfr.org/node/116
mais cela ne change rien donc la variable ne semble pas être récupéré...ou alors le debugging ne marche pas..
met directement la fonction
Permalien Soumis par selinav le 4 Mars, 2010 - 09:16
met directement la fonction en dessous des variables que tu récupères à la place de tes echo
drupal_set_message(t('origine : @origine.', array('@origine' => $origine)));
hors de la fonction ca marche
Permalien Soumis par aiphes le 4 Mars, 2010 - 09:34
hors de la fonction ca marche , mais origine est vide, en fait tout ce qui est dans la fonction est ignoré et ne marche pas...l'intitulé et les variables sont elles les bonnes ?
EDIT: trouvé sur le forum anglais : your function needs to be named modulename_form_alter() donc j'ai changé et j'ai le message, mais origine reste vide...
Met le drupal_set_message
Permalien Soumis par selinav le 4 Mars, 2010 - 09:45
Met le drupal_set_message dans ton test sur le form id
je suis sur qu'il y a un
Permalien Soumis par aiphes le 4 Mars, 2010 - 09:55
je suis sur qu'il y a un souci avec le nom de la fonction ou ses variables , car rien ne sort de cette fonction..pourtant dans le code html ya:
<form enctype="multipart/form-data" class="webform-client-form" id="webform-client-form-20" method="post" accept-charset="UTF-8" action="/drupalPF/contact">
ET
<div id="node-20" class="node ">
l'id est dans un champ caché,
Permalien Soumis par selinav le 4 Mars, 2010 - 10:12
l'id est dans un champ caché, en bas de ton form il a pour name=form_id, il faut récupérer la value de celui-ci et la mettre dans ton if($form_id==...
<input type="hidden"
Permalien Soumis par aiphes le 4 Mars, 2010 - 10:20
<input type="hidden" value="webform_client_form_20" id="edit-webform-client-form-20" name="form_id">
cela confirme que le form id est le bon...
ata on me parle dans l'oreillette...oooo yes le problème vient de trouver sa solution...
une erreur comme il en arrive souvent, un malheureux oubli de signe = dans le if au niveau de
seul le sujet du mail ne se rempli pas pour l'instant..mais les messages fonctionnent et le champ caché du mail se rempli bien...
<input type="hidden" value="webmastergrawitz@mail.com" id="edit-submitted-email-destinataire" name="submitted[email_destinataire]">
punaise que ce fut dur...mais j'ai appris plein de truc grace a toi, MERCI selinav
j'avais beaucoup galéré sur
Permalien Soumis par selinav le 4 Mars, 2010 - 10:28
j'avais beaucoup galéré sur ce module c'est pour cela que j'ai voulu partagé celui-ci car c'est un truc qui peut servir sur pas mal de site.
Bonne continuation
par contre je ne comprends
Permalien Soumis par aiphes le 4 Mars, 2010 - 10:34
par contre je ne comprends pas pourquoi il ne recupere pas le sujet que je lui donne, peut etre que ce n'est pas submitted dans le type de champ du form,je vais creuser cela..ca peut toujours servir...
ton drupal_set_message
Permalien Soumis par selinav le 4 Mars, 2010 - 10:50
ton drupal_set_message t'affiche-t-il le sujet que tu as renseigné?
Si oui, c'est la ligne suivante qui est faux. Le nom du champs n'est pas forcément sujet.
$form['submitted']['sujet']['#default_value']=$sujet_mail;
Pour connaître le nom de chacun des champs qui sont passés dans ton formulaire fait
avant ton drupal_set_message
voila l'extrait du resultat:
Permalien Soumis par aiphes le 4 Mars, 2010 - 11:26
voila l'extrait du resultat:
[submitted] => Array
(
...
[sujet] => Array
(
[#type] => textfield
[#title] => Sujet
[#default_value] =>
[#required] => 0
[#weight] => 3.003
[#field_prefix] =>
[#field_suffix] =>
[#description] =>
[#attributes] => Array
(
)
[#prefix] =>
[#suffix] =>
)
...
[3] => Array
(
[nid] => 20
[cid] => 3
[form_key] => sujet
[name] => Sujet
[type] => textfield
[value] =>
[extra] => Array
ya aussi un probleme, car je ne recois pas le contenu du champ message dans l'email, mais c'est un souci avec webform je pense..
Dans ton cas
Permalien Soumis par selinav le 4 Mars, 2010 - 13:53
Dans ton cas [#default_value] => est vide c'est pour cela que tu as rien.
Essaie de mettre une valeur par défaut dans webform, juste pour voir si ça passe
bof ca donne rien , j'ai mis
Permalien Soumis par aiphes le 4 Mars, 2010 - 14:43
bof ca donne rien , j'ai mis une valeur par defaut dans les reglages du formulaire
E-mail subject :
Component : Sujet
et dans le module
du coup en sortie j'ai :
•contenu de sujet mail : Message pour :. sur la page contact sans ?origine, le champ se rempli bien avec ma valeur :
<input name="submitted[sujet]" class="form-text" id="edit-submitted-sujet" type="text" size="60" maxLength="128" value="Message pour :"/>
par contre sur le page ?origine=lycee-grawitz, ca ne renvoi rien et le champ reste vide...
EDIT: probleme d'accent car sans accent sa passe bien..mes fichiers sont en ANSI..faut que je les passe en UTF8 je pense, vais voir comment on fait avec netbeans