Aller au contenu

spip : formulaire écrire auteur


Philippe Batreau

Sujets conseillés

Bonjour,

Dans le formumaire écrire à l'auteur, je souhaiterai rajouter le champ nom et prénom de l'expéditeur.

Pour cela, il me semble qu'il faut modifier la page inc-formulaires.php3 pour récupérer ce champ et l'inclure dans la page inc_mail.php3 pour le mettre dans les entetes.

J'arrive à modifier le formulaire, mais pas à paramètrer inc-mail

voilà ce que j'ai fait dans inc-formulaire modification du script en gras :

function formulaire_ecrire_auteur($id_auteur, $email_auteur) {

global $flag_wordwrap;

include_ecrire("inc_texte.php3");

include_ecrire("inc_filtres.php3");

include_ecrire("inc_mail.php3");

$affiche_formulaire = true;

if ($GLOBALS['texte_message_auteur'.$id_auteur]) {

if ($GLOBALS['sujet_message_auteur'.$id_auteur] == "")

$erreur .= erreur(_T('form_prop_indiquer_sujet'));

else if (! email_valide($GLOBALS['email_message_auteur'.$id_auteur]) )

$erreur .= erreur(_T('form_prop_indiquer_email'));

else if ($GLOBALS['valide_message_auteur'.$id_auteur]) { // verifier hash ?

$GLOBALS['texte_message_auteur'.$id_auteur] .= "\n\n-- Envoi via le site ".lire_meta('nom_site')." (".lire_meta('adresse_site')."/) --\n";

envoyer_mail($email_auteur,

$GLOBALS['sujet_message_auteur'.$id_auteur],

$GLOBALS['texte_message_auteur'.$id_auteur],

$GLOBALS['email_message_auteur'.$id_auteur],

$GLOBALS['nom_message_auteur'.$id_auteur],

"X-Originating-IP: ".$GLOBALS['REMOTE_ADDR']);

$erreur .= erreur(_T('form_prop_message_envoye'));

$affiche_formulaire = false;

} else { //preview

echo "<br /><div class='spip_encadrer'>Sujet : <b>".$GLOBALS['sujet_message_auteur'.$id_auteur]."</b></div>";

if ($flag_wordwrap)

$GLOBALS['texte_message_auteur'.$id_auteur] = wordwrap($GLOBALS['texte_message_auteur'.$id_auteur]);

echo "<pre>".entites_html($GLOBALS['texte_message_auteur'.$id_auteur])."</pre>";

$affiche_formulaire = false;

$link = $GLOBALS['clean_link'];

$link->addVar('nom_message_auteur'.$id_auteur, $GLOBALS['nom_message_auteur'.$id_auteur]);

$link->addVar('email_message_auteur'.$id_auteur, $GLOBALS['email_message_auteur'.$id_auteur]);

$link->addVar('sujet_message_auteur'.$id_auteur, $GLOBALS['sujet_message_auteur'.$id_auteur]);

$link->addVar('texte_message_auteur'.$id_auteur, $GLOBALS['texte_message_auteur'.$id_auteur]);

$link->addVar('valide_message_auteur'.$id_auteur, 'oui');

echo $link->getForm('post');

echo "<div align=\"right\"><input type=\"submit\" name=\"Confirmer\" class=\"spip_bouton\" value=\""._T('form_prop_confirmer_envoi')."\" />";

echo "</div></form>";

}

}

if ($erreur)

echo "<div class='spip_encadrer'><b>$erreur<br /> </b></div>\n";

if ($affiche_formulaire) {

$retour = $GLOBALS['REQUEST_URI'];

$link = $GLOBALS['clean_link'];

echo $link->getForm('post');

echo "<div class='spip_encadrer'><b>"._T('form_pet_votre_nom')."</b><br />";

echo "<input type=\"text\" class=\"forml\" name=\"nom_message_auteur$id_auteur\" value=\"".entites_html($GLOBALS['nom_message_auteur'.$id_auteur])."\" SIZE=\"30\" />\n";

echo "<div class='spip_encadrer'><b>"._T('form_pet_votre_email')."</b><br />";

echo "<input type=\"text\" class=\"forml\" name=\"email_message_auteur$id_auteur\" value=\"".entites_html($GLOBALS['email_message_auteur'.$id_auteur])."\" SIZE=\"30\" />\n";

echo "<p><b>"._t('form_prop_sujet')."</b><br />";

echo "<input type=\"text\" class=\"forml\" name=\"sujet_message_auteur$id_auteur\" value=\"".entites_html($GLOBALS['sujet_message_auteur'.$id_auteur])."\" SIZE=\"30\" /></p>\n";

echo "<p><textarea name='texte_message_auteur$id_auteur' rows='10' class='forml' cols='40' wrap=soft>".entites_html($GLOBALS['texte_message_auteur'.$id_auteur])."</textarea></div>\n";

echo "<div align=\"right\"><input type=\"submit\" name=\"Valider\" class=\"spip_bouton\" value=\""._T('form_prop_envoyer')."\" />";

echo "</div></form>";

}

Et il faut modifier dans inc-mail la fonction envoyer mail :

function envoyer_mail($email, $sujet, $texte, $from = "", $headers = "") {

global $hebergeur, $queue_mails, $flag_wordwrap, $os_serveur;

include_ecrire("inc_filtres.php3");

if (!$from) $from = $email;

if (!email_valide($email)) return false;

if ($email == _T('info_mail_fournisseur')) return false;

spip_log("mail ($email): $sujet");

$charset = lire_meta('charset');

$headers = "From: $from\n".

"MIME-Version: 1.0\n".

"Content-Type: text/plain; charset=$charset\n".

"Content-Transfer-Encoding: 8bit\n$headers";

$texte = filtrer_entites($texte);

$sujet = filtrer_entites($sujet);

// encoder le sujet si possible selon la RFC

if($GLOBALS['flag_multibyte'] AND _AT_mb_internal_encoding($charset))

$sujet = mb_encode_mimeheader($sujet, $charset, 'Q');

if ($flag_wordwrap) $texte = wordwrap($texte);

if ($os_serveur == 'windows') {

$texte = ereg_replace ("\r*\n","\r\n", $texte);

$headers = ereg_replace ("\r*\n","\r\n", $headers);

}

et là, je ne sais plus.

Si vous avez la solution pour les modifications de ces deux scripts...

Lien vers le commentaire
Partager sur d’autres sites

Philippe,

Comme je te l'ai expliqué par messenger, modifier les sources des fichiers php constitutifs de Spip me semble une mauvaise idée.

Tu seras dans l'obligation de réintroduire tes modifications à chaque changement de version, ce qui sera tôt ou tard source d'erreur.

Je te suggère plutôt de poster ce type de requête sur la liste spip-dev.

Si la modification semble souhaitable, elle pourrait être incorporée dans une future version de Spip.

Cordialement,

Dan

Lien vers le commentaire
Partager sur d’autres sites

Merci Dan

Comme je te l'avais aussi dit par messenger, j'avais déjà posé la question à spip-dev, la liste des développeurs de spip dont je profite pour donner l'adresse :

http://listes.rezo.net/mailman/listinfo/spip-dev

ou si vous préférez le newsgroup :

news://news.gmane.org/gmane.comp.web.spip.devel

Cordialement,

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...