Un formulaire permettant l’envoi d’un email

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Ce script permet aux visiteurs d’envoyer un email à un auteur (ou visiteur inscrit) sans divulguer l’e-mail de ce dernier.

Objectif

Le script liste le nom de chaque rédacteur sur une page choisie. Les liens permettent l’ouverture d’une fenêtre pop-up qui contient un formulaire généré par la balise #FORMULAIRE_ECRIRE_AUTEUR de Spip, et permet d’envoyer un email.

La boucle d’affichage des auteurs et du lien pour leur envoyer un message

<BOUCLE_mail_auteur(AUTEURS) {id_auteur}{tout}>
    <?php if ("#EMAIL") { ?>
        <a
href="inc_ecrire_auteur.php3?id_auteur=#ID_AUTEUR" target="mail"
title="<:envoyer_message:>"
onclick="javascript:window.open('inc_ecrire_auteur.php3?id_auteur=#ID_AUTEUR', 'mail', 'scrollbars=yes, resizable=yes, width=640, height=640'); return false;">
        [&nbsp;(#NOM)]</a>
    <?php } else  { ?>
        [&nbsp;(#NOM)]
    <?php } ?>
</BOUCLE_mail_auteur>

Le paramètre {tout}
Le paramètre {tout} permet de lister tous les rédacteurs, qu’ils aient écrit quelque chose ou pas. (voir l’article 907)

Il faut bien vérifier dans tout le site qu’il n’y ait plus de #EMAIL qui apparaissent.

La page avec le formulaire

Le fichier inc_ecrire_auteur.php3 :
Le inc_ecrire_auteur.php3 est un fichier .php3 à 1 mois (30*24*3600 secondes) de
délais, il n’est absolument pas nécessaire de mettre un délai court.

Son squelette inc_ecrire_auteur.html :
Son squelette inc_ecrire_auteur.html se contente d’afficher la mise en page avec une simple boucle AUTEUR{id_auteur} et #FORMULAIRE_ECRIRE_AUTEUR

Le voici : adaptez le à cotre convenance.
J’ai placé des commentaire dedans.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<BOUCLE_ecrire_auteur(AUTEURS){id_auteur}{tout}>

<html lang="#LANG">
<head>
<title>&Eacute;crire &agrave; &nbsp;#NOM</title>
<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET">
<!-- Ceci est la feuille de style par defaut pour les types internes a SPIP -->
<link rel="stylesheet" href="spip_style.css" type="text/css">
<!-- Les feuilles de style specifiques aux presents squelettes -->
<link rel="stylesheet" href="typographie.css" type="text/css">
<!-- media="..." permet de ne pas utiliser ce style sous Netscape 4 (sinon plantage) -->
<link rel="stylesheet" href="habillage.css" type="text/css" media="projection, screen, tv">
<!-- media="print" permet d'utiliser cette feuille de style quand vous imprimez depuis votre navigateur -->
<link rel="stylesheet" href="impression.css" type="text/css" media="print">
</head>


<body  dir="#LANG_DIR" OnLoad=self.focus()>
<div class="cartouche">
	<h1 class="titre-texte">&Eacute;crire &agrave #NOM</h1>
</div>
	<div class="texte">
[(#FORMULAIRE_ECRIRE_AUTEUR|sinon{"Ce r&eacute;dacteur ne peut pas &ecirc;tre contact&eacute; de cette fa&ccedil;on"}) ]
</BOUCLE_ecrire_auteur>

<//B_ecrire_auteur>
</div>

</body>
</html>

Démonstration

J’utilise ce pluggin dans ce site http://espace.jdr.ath.cx

Utilisation

Quand vous avez besoin d’afficher les auteurs de l’article avec un lien vers leur formulaire, il suffit de placer la ligne suivante à l’intérieur de la boucle article :

<INCLURE(inc_lien_ecrire_auteur.php3){id_auteur}>

Il faudrait améliorer cela pour qu’un message soit envoyé dans la partie privée si le rédacteur n’a pas mis d’e-mail.

Autres utilisations... :
Vous pourriez utiliser d’autres champs du rédacteur, ou bien les champs EXTRA pour permettre au rédacteur de spécifier une autre adresse e-mail pour recevoir les messages des visiteurs.

améliorations à faire

Je me suis inspiré de la fenêtre qui s’ouvre pour permettre de recevoir ses identifiants par e-mail quand on les a oubliés.
Il faudrait que cette fenêtre pop-up soit refermée et crée, parce que si elle est déjà ouverte mais masquée cela peut poser quelques problèmes quand on a un système anti popup. (la fenêtre ne viendrait pas au premier plan, cela donnerait l’impression que le lien ne fonctionne pas.)
L’autre solution consiste à nommer différement la fenêtre, par exemple mail#id_article.

Grégoire

A rajouter par vos soins, suggestion :
Il manque le style à ajouter pour les rédacteurs, parce q’ils
apparaissent soit sous forme de lien, soit sous forme de texte.


Attention, il ne faut pas confondre les fichiers inc avec les autres.
dans la partie publique du site, les fichiers inc de spip s’écrivent inc- . Donc, inc_ecrire_auteur.php3 se repère tout de suite.
Dans ecrire, par contre, il y aurait des risques de confusions. De toute façon, ce fichier n’a pas à y être.

Libre à vous de changer les noms selon votre propre charte.


S’il y a du PHP, c’est parce que le filtre |sinon n’aime pas certains caractères.

Si vous arrivez à faire la même chose sans PHP, faites-le savoir.
Merci.


Pensez à créer vos propres feuilles de styles, avec des noms différents, et modifier le squelette ici en conséquence.

Discussion

5 discussions

  • 2
    Grégoire

    Bonjour

    Je voulais signaler que cette contibution fonctionne mal sous Spip 1.8pr, la prévisualisation de fait mal mais le message est bien envoyé, probablement parce que le formulaire est appelé dans une fenêtre.

    A bientôt

    Grégoire

    • Bonjour,

      J’avais installé cette boucle qui fonctionnait à merveille en 1.7.2 et en passant en 1.8.2g, le message obtenu devient « Cet auteur ne peut être contacté de cette façon. ».

      Y a-t-il une ruse pour que cela remarche ou bien un réglage à faire quelque part ou encore une autre boucle plus récente ?

      Grand merci par avance pour les réponses ;-)
      @+
      Voldor

    • Bonsoir

      Oui, sous 1.7.2 ça marchait bien....

      Maintenant, avec les nouveaux formulaires, il se pourrait que ce ne soit vraiment plus compatible.

      [(#FORMULAIRE_ECRIRE_AUTEUR|sinon{"Ce r&eacute;dacteur ne peut pas &ecirc;tre contact&eacute; de cette fa&ccedil;on"}) ]

      Indique que #FORMULAIRE_ECRIRE_AUTEUR à retourné une valeur ’0’...

      Il faudrait refaire cette contribution et y intégrer le filtrage anti-spam pour éviter les e-mails en copie dans le champs e-mail...

      Tout un programme

      Je ne toucherais pas à cette contribution avant quelques mois...

      Bon courage
      Grégoire

    Répondre à ce message

  • 1
    Hada de la Luna

    Bonjour :o)

    j’ai créé les fichiers dans la racine du site :

    • inc_ecrire_auteur.php3
    • inc_ecrire_auteur.html

    par simple copié-collé (courageuse mais pas téméraire ;op)

    dans le fichier article.html j’ai :

    	<!-- Auteurs de l'article -->
    
    	<B_auteurs>
    
    	<div class="menu">
    	<h2 class="structure"><:memes_auteurs:></h2>
    	<ul class="divers">
    	<BOUCLE_auteurs(AUTEURS) {id_article} {par nom}>
    		<li>
    		<div class="menu-titre" title="Auteur"><a href="(#FORMULAIRE_ECRIRE_AUTEUR)" target="wclose"
    onclick="window.open('#FORMULAIRE_ECRIRE_AUTEUR','wclose',
    'width=380,height=350,toolbar=no,status=no,left=20,top=30')">#NOM</a></div> 
    		<ul>
    		[<li class="menu-item" style="text-align: center"><a href="(#URL_SITE)">#NOM_SITE</a></li>]
    		[<li class="menu-item" style="text-align: center">(#BIO)</li>]
    	<B_articles_auteur>
    	<BOUCLE_articles_auteur(ARTICLES) {id_auteur} {par popularite} {inverse} {0,5}>
    		<li class="menu-item"><a href="#URL_ARTICLE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>#TITRE</a></li>
    	</BOUCLE_articles_auteur>
    		</ul>
    		</li>
    	</BOUCLE_auteurs>
    	</ul>
    	</div>
    
    	</B_auteurs>

    Cela m’affiche le formulaire dans la page (et de façon très désordonnée) comment faire pour qu’il soit véritablement affiché comme un lien générant un pop-up sur le nom de l’auteur ?

    • Grégoire

      Pardon pour le temps de réponse.

      Pour bien régler l’affichage, il faut bien travailler les feuilles de styles.... je sais que ce n’est pas facile.

      En regardant la source de la page dans le fenêtre, il doit être possible de repérer les styles utilisés.

      Bon courage.

      Grégoire

    Répondre à ce message

  • 1

    voila ou j’en suis :
    -  j’ai inséré le premier script dans auteur.html (c’est indiqué nulle part dans l’article, mais je vois pas ou le mettre sinon)
    -  j’ai créé un fichier inc_ecrire_auteur.php3 comme tu le dis
    -  j’ai créé son pendant html avec ton code plus haut
    -  j’ai inséré le <INCLURE(inc_lien_ecrire_auteur.php3){id_auteur}> dans une boucle article :
    -  

    <BOUCLE_ecrire(ARTICLES){id_article=1}>
    <INCLURE(inc_lien_ecrire_auteur.php3){id_auteur}>
    </BOUCLE_ecrire>


    -  ... et ca plante

    # ligne 243, fichier inclus navigation.html: Unknown(inc_lien_ecrire_auteur.php3): failed to open stream: No such file or directory (2)
    # ligne 243, fichier inclus navigation.html: (null)(): Failed opening 'inc_lien_ecrire_auteur.php3' for inclusion (include_path='.;C:\Program Files\EasyPHP1-7\php\pear\') (2)

    Je précise que je suis en local, et là je sais vraiment plus quoi faire... ;-(

    • As-tu vérifier le nom de tous les fichiers concernés ?

      Et si tu reprenais la procédure ?

      Je travaille parfois aussi en local avec EasyPHP.

      Amicalement

      Grégoire

    Répondre à ce message

  • Bonjour.

    Ici, on utilise un formulaire intégré dans Spip : #FORMULAIRE_ECRIRE_AUTEUR, mais on l’insère dans une boucle, qui fait partie d’un squelette : inc_ecrire_auteur.html qui sera appelé par un include <INCLURE(inc_lien_ecrire_auteur.php3){id_auteur}>.

    De la même façon que article.html est un squelette, qu’il est appelé via un programme en php article.php3.

    Les squelettes doivent être avec les squelettes, les scripts php3 à la racine du site.

    Voir :

    Amicalement
    Grégoire

    Répondre à ce message

  • excuse moi mais j’ai pas bien compris ou on met le premier script...

    merci de m’éclairer

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom