Bonsoir, suite de mes aventures !
Le formulaire fonctionne très bien sur Firefox et chez moi, apparemment chez moi uniquement.
Je me permets de vous soumettre mes deux fichiers modifiés, trop, semble-t-il, du coup.
Sous Safari et Chrome, après avoir rempli les champs et envoyés, la prévisualisation et la confirmation d’envoi n’apparaissent pas, je remarque également que les cookies de correspondance sont absents.
J’ai choisi de supprimer le textarea et j’ai dû retirer des accolades autour de #ENV{editable}
dans la version HTML, car ils apparaissaient sur ma page publique. Voici :
ecrire_auteur.html
<div class="formulaire_spip formulaire_ecrire_auteur ajax" id="formulaire_ecrire_auteur#ENV{id}">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
#ENV{editable}
<form method="post" action="#ENV{action}#formulaire_ecrire_auteur#ENV{id}">
[(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ]
#ACTION_FORMULAIRE
<BOUCLE_article(ARTICLES){id_article}>
<input type="hidden" name="atelier" value="#TITRE" />
<input type="hidden" name="jratelier" value="#SURTITRE" />
<input type="hidden" name="lien" value="#URL_ARTICLE" />
</BOUCLE_article>
[(#REM) Previsualisation... ]
[(#ENV*{erreurs}|table_valeur{previsu}|oui)
<fieldset class="previsu">
<legend><:previsualisation:></legend>
<div>
<div><strong>#ENV{sujet_message_auteur}</strong> - <em>#ENV{email_message_auteur}</em></div>
</div>
<p class="boutons"><input type="submit" class="button small round" name="confirmer" value="<:form_prop_confirmer_envoi:>" /></p>
</fieldset>
]
[(#REM) Sinon, formulaire normal ]
<fieldset>
<!-- <legend><:envoyer_message:></legend> -->
<div class="editer-groupe">
<div class="editer saisie_email_message_auteur obligatoire[ (#ENV*{erreurs}|table_valeur{email_message_auteur}|oui)erreur]">
<label for="email_message_auteur#ENV{id}"><!-- <:entree_adresse_email:> <:info_obligatoire_02:> --></label>
[<span class="erreur_message">(#ENV*{erreurs}|table_valeur{email_message_auteur})</span>]
<input[ (#HTML5|?{required="required" type="email" class="text email",type="text" class="text"})] name="email_message_auteur" id="email_message_auteur#ENV{id}" value="#ENV{email_message_auteur}" placeholder="Votre Email" size="30" />
</div>
<div class="editer saisie_sujet_message_auteur obligatoire[ (#ENV*{erreurs}|table_valeur{sujet_message_auteur}|oui)erreur]">
<label for="sujet_message_auteur#ENV{id}"><!-- <:form_prop_sujet:> <:info_obligatoire_02:> --></label>
[<span class="erreur_message">(#ENV*{erreurs}|table_valeur{sujet_message_auteur})</span>]
<input type="text" class="text" name="sujet_message_auteur" id="sujet_message_auteur#ENV{id}" value="#ENV{sujet_message_auteur}" size="30"[(#HTML5) placeholder="Votre nom" required="required"] />
</div>
</div>
</fieldset>
[(#REM) Piege a robots spammeurs ]
<p style="display: none;">
<label for="nobot"><:antispam_champ_vide:></label>
<input type="text" class="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" />
</p>
<p><input type="submit" name="valide" class="button small round" value="Je réserve" /></p>
</form>
</div>
ecrire_auteur.php
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_ecrire_auteur_charger_dist($id_auteur, $id_article, $mail) {
include_spip('inc/texte');
$puce = definir_puce();
$valeurs = array(
'sujet_message_auteur' => '',
'email_message_auteur' => isset($GLOBALS['visiteur_session']['email']) ?
$GLOBALS['visiteur_session']['email'] : '',
'nobot' => '',
'atelier' => '',
'jratelier' => '',
);
// id du formulaire (pour en avoir plusieurs sur une meme page)
$valeurs['id'] = ($id_auteur ? '_' . $id_auteur : '_ar' . $id_article);
// passer l'id_auteur au squelette
$valeurs['id_auteur'] = $id_auteur;
$valeurs['id_article'] = $id_article;
return $valeurs;
}
function formulaires_ecrire_auteur_verifier_dist($id_auteur, $id_article, $mail) {
$erreurs = array();
include_spip('inc/filtres');
if (!$adres = _request('email_message_auteur')) {
$erreurs['email_message_auteur'] = _T('info_obligatoire');
} elseif (!email_valide($adres)) {
$erreurs['email_message_auteur'] = _T('form_prop_indiquer_email');
} else {
include_spip('inc/session');
session_set('email', $adres);
}
if (!$sujet = _request('sujet_message_auteur')) {
$erreurs['sujet_message_auteur'] = _T('info_obligatoire');
} elseif (!(strlen($sujet) > 3)) {
$erreurs['sujet_message_auteur'] = _T('forum:forum_attention_trois_caracteres');
}
$atelier = _request('atelier');
$jratelier = _request('jratelier');
if (_request('nobot')) {
$erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
}
if (!_request('confirmer') and !count($erreurs)) {
$erreurs['previsu'] = ' ';
$erreurs['message_erreur'] = '';
}
return $erreurs;
}
function formulaires_ecrire_auteur_traiter_dist($id_auteur, $id_article, $mail) {
$adres = _request('email_message_auteur');
$sujet = _request('sujet_message_auteur');
$atelier = _request('atelier');
$jratelier = _request('jratelier');
$sujet = '[' . supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site'])) . '] '
. _T('info_message_2') . ' '
. $sujet;
$texte = "Inscription avec l'adresse mail : $adres \nPour une réservation à l'atelier $atelier prévu le $jratelier";
/*$texte = _request('texte_message_auteur');*/
$texte .= "\n\n-- " . _T('envoi_via_le_site') . ' '
. supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site']))
. ' (' . $GLOBALS['meta']['adresse_site'] . "/) --\n";
$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
$message_ar = "
Bonjour,
\nJe vous confirme la prise en compte de votre inscription pour l’atelier du $jratelier : $atelier.
\nVous recevrez une confirmation de la tenue de cet atelier au plus tard 5 jours avant la date du cours.
\nMerci et au plaisir de vous recevoir à l’atelier.
\n
";
if ($envoyer_mail($mail, $sujet, $texte, $adres,
'X-Originating-IP: ' . $GLOBALS['ip'])) {
$message = _T('form_prop_message_envoye');
$envoyer_mail($adres, $sujet, $message_ar);
return array('message_ok' => $message);
} else {
$message = _T('pass_erreur_probleme_technique');
return array('message_erreur' => $message);
}
}
Merci à vous, car je ne comprends plus rien !