[plugin] MyContact : formulaire de contact

StéphaneStéphane Member, Former PluXml Project Manager
Bonjour

plxMyContact est un plugin qui permet d'ajouter un formulaire de contact en ajoutant un lien "Contact" dans la liste des menus des pages statiques

Les paramètres suivant sont à définir :

- le titre du menu "Contact"
- l'emplacement du menu
- l'adresse email d'envoi dumessage de contact
- l'object du mail
- le message de remerciement destiné au visiteur après l'envoi de son message

plxMyContact est compatible avec le capcha par défaut de pluxml et le plugin plxcapchaimage

- téléchargement


Historique
=======
## Version 1.8.1 (10/04/2017) ##
BUG tableau PLX_MYMULTILINGUE non géré avec php 5.x+

## Version 1.8 (29/03/2017) ##
[+] Compatibilité PluXml 5.6
[+] Compatibilité avec le plugin plxMyMultiLingue
[+] Langue néerlandaise (contribution William K.)
[+] Traduction L_MSG_WELCOME manquante dans le fichier de langue en.php (contribution William K.)
[+] Ajout de l'id static-contact
BUG Surbrillance du menu de la page statique
BUG #57 Erreur d'affichage du message L_FORM_SUBJECT

## Version 1.7.3 (31/01/2017) ##
[+] Ajout d'un champ "objet" (désactivable) dans la page contact (contribution asmodai27)
BUG Classe css active non appliquée (contribution EdzeronK)

## Version 1.7.2 (12/02/2016) ##
[+] Ajout traduction occitan (contriution Rubén)
[+] Modification du titre de la page pour avoir Contact / Titre du site (amélioration SEO)
[+] fix #14: application de la méthode plxUtils::title2url sur l'url de la page contact pour un avoir un bon format

## Version 1.7.1 (13/01/2016) ##
[+] ajout attribut autocomplete="off" sur le champ antispam (contribution alexandre-lg)
[+] Configuration de l'affichage des libellés des champs
[+] Configuration de l'affichage des libellés dans les champs (placeholder)
BUG Menu Contact: classe css active non appliquée
BUG Erreur avec des apostrophes dans le titre du menu

## Version 1.7 (20/07/2015) ##
[+] Compatibilité avec le plugin plxMyCapchaImage

## Version 1.6.1 (13/05/2015) ##
[+] Compatibilité PluXml 5.4
BUG fix #11: Dossier themes codé en dur
BUG fix #10: Paramètre de l'URL avec une extension : title absent

## Version 1.6 (27/02/2014) ##
[+] Paramètrage du lien dans l'url
[+] Gestion du paramètrage multilingue
[+] Gestion css à partir de la configuration du plugin
[+] Compatibilité avec le plugin plxMyMultiLingue

## Version 1.5.5 (13/12/2013) ##
[+] Ajout d'un champ texte qui s'affiche au dessus du formulaire paramétrable depuis l'interface (contribution JulesVincent)
[+] Balise title dans le lien du menu de la page de contact

## Version 1.5.4 (13/06/2013) ##
[+] Compatibilité PluXml 5.2
[+] Paramètre pour activer/désactiver le captcha anti-spam dans le formulaire de contact

## Version 1.5.3 (19/03/2013) ##
[+] Possibilité de saisir plusieurs destinataires séparés par une virgule

## Version 1.5.2 (11/03/2013) ##
[+] Ajout destinataire en copie et en copie cachée dans l'envoi du mail de contact
BUG Pas de prise en compte des magic_quotes

## Version 1.5.1 (13/03/2012) ##
BUG Mauvais titre de la page de contact dans la balise <title>

## Version 1.5 (01/02/2012) ##
[+] Ne requiert plus l'utilisation de la fonction staticList pour accèder au formulaire
[+] Affichage de la page dans le sitemap (requiert PluXml 5.1.6 minimum)
BUG Pas d'affichage du message d'alerte dans l'administration si l'adresse email à contacter n'est pas renseignée
BUG Messages d'erreurs à cause de variables non renseignées (warnings)

## Version 1.4 (21/12/2011) ##
[+] Ajout option pour afficher ou non le menu pour accèder à la page de contact
[+] Réencodage des fichiers en UTF-8 (sans BOM)

## Version 1.3 (20/10/2011) ##
[+] Affichage d'un message si l'adresse email du contact n'est pas renseignée
[+] Ajout titre de la page contact dans la balise <title>
[+] Prise en compte activation/désactivation du captcha
BUG Mauvaise initialisation du champ template

## Version 1.2 (15/08/2011) ##
[+] Ajout sélection template + validation xhtml
13/08/2011; version 1.1
BUG lorsqu'une page statique = page de démarrage

## Version 1.0 (12/08/2011) ##
version initiale

Consultant PluXml

Ancien responsable du projet (2010 à 2018)

«13456713

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    BUG connu: le plugin ne fonctionne pas si une page statique est définie comme page de démarrage.
    Je travaille sur sa résolution...

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • GzygGzyg Member
    août 2011 modifié
    Il semble que ça désactive toutes les autres pages statiques... j'ai le cas en local...

    la page contact s'affiche correctement mais les autres pages affichent une page blanche avec seulement le header, le titre "Contact" et rien d'autre, ni sidebar, ni footer

    d'origine, la configuration met la page contact en 2 (je suppose que la page d'accueil est en 1 ?), je l'ai donc repoussé en 3 et j'ai ce bug

    de plus il est impossible, dans la configuration des pages statiques, de modifier l'emplacement des pages supérieures à 2 sans en attribuer au moins une à cette fameuse 2ème place visiblement squattée par la page contact...

    ou alors j'ai merdé quelque part... :)

    <edit>

    toutes pages statiques crées ensuite ont le même problème d'affichage...

    la suppression du plugin ne supprime pas le dossier "lang"

    </edit>


    à plus,

    Gzyg
  • StéphaneStéphane Member, Former PluXml Project Manager
    mise à jour version 1.1 (voir 1er post)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • GzygGzyg Member
    Nickel. :)


    à plus,

    Gzyg
  • l e . n o xl e . n o x Member
    août 2011 modifié
    Bonjour,

    Dans le wiki il est conseillé de de créer une page statique pour avoir un formulaire conatct :
    http://wiki.pluxml.org/index.php?page=Cr%C3%A9er+un+formulaire+de+contact&redirect=no

    cela ne semble pas fonctionner avec la version 5.1.2, faut il maintenant favoriser le plugin plxMyContact ?

    Merci.
  • StéphaneStéphane Member, Former PluXml Project Manager
    J'ai mis à jour le wiki.

    C'est toi qui voit: code du wiki ou plugin. prends ce que tu préfères.
    Avec le plugin pas besoin de manipuler du code, tout ce configure dans l'admin.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Nikel mon Stéphane, juste une correction à faire dans ton code, rien de méchant ^^, un oublie antislash:

    Ligne 56 form.contact.php :
    <input type="reset" name="reset" value="<?php $plxPlugin->lang('L_FORM_BTN_RESET') ?>"/>
    
    Le tout dernier, ce qui donnait une erreur de validation Xhtml.
    Sinon l'envois marche nikel, vachement plus simple et plus propre avec un plugin.
    Merci.
  • Rebonsoir,

    Suite à la modification du wiki voici ce que cela donne dans une installation toute fraîche de pluxml 5.1.2 :
    1313342704.png

    Il doit manquer quelque chose, ou je me suis goffré quelque part ;O)
  • bankaibankai Member
    août 2011 modifié
    Voici le code que j'utilisais avant le plugin de Stéphane:
    <?php
    # Page statique Pluxml : formulaire de contact par florent@pluxml.org
    # revision 1.1 par Sudwebdesign: compatibilité pluxml 5.1b
    
    if(!defined('PLX_ROOT')) exit;
    
    # Renseignez ici votre adresse mail
    $email = 'TON MAILN ICI';
    
    # Notre capcha
    $capcha = new plxCapcha();
    
    # Nos variables
    $erreur = '';
    $succes = '';
    
    if(!empty($_POST)) { # Formulaire valide
    
    	if($_POST['rep2'] == sha1($capcha->gds.$_POST['rep'])) { # Capcha valide 5.1b
    		$_POST['nom'] = trim($_POST['nom']);
    		$_POST['content'] = trim($_POST['content']);
    		$_POST['ip'] = plxUtils::getIp();
    		# On verifie les donnees
    		if(empty($_POST['nom']) OR empty($_POST['mail']) OR empty($_POST['content']))
    			$erreur = 'Merci de remplir tous les champs obligatoires';
    		if($erreur == '' AND !plxUtils::checkMail(trim($_POST['mail'])))
    			$erreur = 'L\'adresse mail saisie n\'est pas valide';
    		# On peut envoyer si pas d'erreur
    		if($erreur == '') {
    			$corps = 'Son nom : '.$_POST['nom']."\n";
    			$corps .= 'Son mail : '.$_POST['mail']."\n";
    			$corps .= 'Son adresse IP : '.$_POST['ip']."n";
    			$corps .= 'Son message : '."\n";
    			$corps .= $_POST['content'];
    			# On peut retirer certains caracteres (enlever // de la ligne suivante)
    			//$corps = str_replace("r"," ",$corps);
    			# On envoi le mail
    			$headers = 'From: '.$_POST['mail']."\n";
    			$headers .= 'MIME-Version: 1.0'."\n";
    			$headers .= 'Content-type: text/plain; charset="'.PLX_CHARSET.'"'."\n";
    			$headers .= 'Content-transfer-encoding: 8bit'."\n";
    			if(mail($email,'## Pluxml ## contact depuis votre formulaire de contact',$corps, $headers))
    				$succes = 'Merci de nous avoir contacté, nous vous répondrons le plus rapidement possible.';
    			else
    				$erreur = 'Une erreur s\'est produite au cours de l\'envoi de votre message...';
    		}
    	} else { # Capcha non valide
    		$erreur = 'la vérification anti-spam a échouée';
    	}
    } else {
    	# Initialisation
    	$erreur = 'Merci de remplir le formulaire ci-dessous';
    	$_POST['nom'] = '';
    	$_POST['content'] = '';
    	$_POST['mail'] = '';
    }
    ?>
    <div id="form">
    	<p class="message_contact"><?php echo (!empty($erreur))?$erreur:$succes; ?></p>
    	<?php if(!empty($erreur) OR empty($_POST)): ?>
    		<form action="#form" method="post">
    				<label for="nom">Votre nom :<br />
    </label><input name="nom" type="text" size="30" value="<?php echo plxUtils::strCheck($_POST['nom']) ?>" maxlength="30" /><br />
    <label for="mail">Votre courriel :<br />
    </label><input name="mail" type="text" size="30" value="<?php echo plxUtils::strCheck($_POST['mail']) ?>" /><br />
    <label for="content">Votre message :<br />
    </label><textarea name="content" cols="60" rows="12"><?php echo plxUtils::strCheck($_POST['content']) ?></textarea><br />
    <br /><br /><br /><br /><br /><br />
    				<label for="rep">Vérification anti-spam :</label>
    				<p><?php echo $capcha->q(); ?> : <input name="rep" type="text" size="10" /></p>
    				<input name="rep2" type="hidden" value="<?php echo $capcha->r(); ?>" />
    				<p><input type="submit" value="Envoyer" /> <input type="reset" value="Effacer" /></p>
    		</form>
    	<?php endif; # Fin du if si mail envoye ?>
    </div>
    
    Je suis sous 5.1.2 est le code fonctionne correctement.
  • l e . n o xl e . n o x Member
    décembre 2011 modifié
    Merci à vous 2 ;O)

    En résumé, avec ma config ngnix + php5-fcgi+pluxml 5.1.2 via firefox5(Ubunutu10.4):

    Le plugin plxMyContact : S'affiche correctement sans erreurs similaires a celle de dessous, mais un message erreur apparaît après avoir cliqué sur "envoyer".

    Message erreur en question : "Une erreur est survenue pendant l'envoi de votre message"

    Le Code du Wiki : ne fonctionnement pas.
    1313342704.png

    Le Code cordialement proposé par bankai : ne fonctionnement pas.
    1313348037.png

    Bonne continuation ;O)

    [EDIT] SOLUTION a mon problème : http://forum.pluxml.org/viewtopic.php?pid=19883#p19883 [/EDIT]
  • Peut-être la config ngnix ou ton hébergeur ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    1) pour le message d'erreur: la fonction mail est-elle disponible ?
    2) si tu vois le code s'affiché, c'est qu'il n'est pas interprété: ça semble carrément à un mauvais paramétrage de ton serveur ngnix + php

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    l e . n o x si ton problème n'est pas résolu, peux-tu ouvrir un nouveau sujet afin de ne pas polluer ce fil de discussion dédié au plugin plxMyContact. Merci

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Mise à jour 1.2 du plugin

    Possibilité de sélectionner un modèle de document (template) pour la page contenant le formulaire de contact
    Le fichier template est à mettre dans le dossier du thème courant.
    Le nom du fichier doit être de la forme static-xxxx.php pour être reconnu et listé dans le déroulant

    nb: le principe est le même que pour le fonctionnement des templates des pages statiques

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • bankaibankai Member
    août 2011 modifié
    Tu as corrigé la petite erreur Xhtml ^^ :)
    Edit: correction faite, il fonctionne parfaitement.
  • Jerry WhamJerry Wham Member
    août 2011 modifié
    Nikwell je vais tester ça ! :P
  • Bonjour,

    Merci pour ton excellent travail :-)

    Je découvre cet outil et souhaite qu'une modification soit apportée à ton plugin si cela est possible ; il s'agit de l'optimisation de certains paramètres :
    . paramétrage du titre de la page (title)
    . paramétrage des balises meta description et keywords
    En effet cela serait meilleur pour le référencement.

    Question complémentaire, pourquoi la page contact n'apparait pas dans le sitemap ?

    Encore merci.
    Yé2
    *** PluXml 5.1.3***
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Yé2

    - pour le titre de la page (balise title) c'est en cours. je suis en train de faire des évols sur le plugin et c'est prévu.
    - pour les metas: pourquoi pas
    - pour le sitemap: parce que le plugin ne le fait pas. je t'avoue que j'avais même pas pensé au sitemap. lol

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Merci pour ta réponse rapide :-)

    Puisque tu en es aux évolutions, je te suggère également celle-ci :
    l'ajout d'un champ "choix de votre destinataire" où l'internaute choisirait dans un menu déroulant la personne ou le service de destination de sa demande. Dans le plugin, il faudrait pouvoir préciser et associer une liste de libellés avec les courriels respectifs.
    Qu'en penses-tu ?

    Yé2
  • Re,
    Une idée de la date de MAJ du plugin ?
    Si besoin de réfléchir à d'autres modifications, je suis disponible :-))
    Merci d'avance pour ta réponse.
    A+
    Yé2
  • StéphaneStéphane Member, Former PluXml Project Manager
    version 1.3 dispo

    [+] Affichage d'un message si l'adresse email du contact n'est pas renseignée
    [+] Ajout titre de la page contact dans la balise <title>
    [+] Prise en compte activation/désactivation du captcha
    BUG Mauvaise initialisation du champ template

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Super,
    C'est testé et mis en place :-)
    Ca fonctionne très bien, merci.

    En revanche, ces remarques subsistent :
    1. absence des balises meta description et meta keyword
    2. page contact absente du sitemap

    Enfin, que penses-tu de l'idée d'un formulaire paramétrable avec possibilité de destinataires multiples ?

    A+
    Yé2
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    1. les balises meta sur une page de contact je vois pas trop l'interet
    2. le sitemap: pas possible pour le moment faudra attendre la 5.1.4 car jai fait des modifs dans sitemap.php pour que les plugins puissent fonctionner

    Pour le formulaire paramétrable c'est discutable sur un blog ou la plupart du temps il n'y a qu'une seule personne qui gère le site, ce qui doit représenter certainement plus de 95% des cas d'utilisation de PluXml. Mais je suis pas contre. Juste que c'est tout en bas de ma TODO :p

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonsoir,

    En réponses :
    1. les meta en question sont tjs utiles au référencement ... cette page a intérêt à être référencée si elles comportent les coordonnées par exemple ...
    2. pour l'intégration de la page contact au sitemap, je patienterai jusqu'à la 5.1.4 :-))
    3. pour le formulaire "multi-destinataires" paramétrables, je note l'accord de principe ET ... the end of the todo list :-(

    En fait, je suis un perfectionniste et trouve énormément de choses positives dans l'approche PluXml ...
    Si tu suis mes divers posts, tu verras que je cherche simplement à faire avancer, vers le haut, ce projet que je trouve vraiment très chouette ;-)

    L'apparition récente de Google Panda en France nous porte à fignoler fortement la globalité du code ... même sur des pages qui paraissent mineures ... si le référencement est jugé important pour le projet bien sûr.

    A ta disposition pour échanger la dessus :-)
    A+
    Yé2
  • Bonjour,

    peut-on imaginer que ce plugin enregistre également les messages envoyés sous forme de fichier xml et que l'historique des messages soit accessible dans l'admin ?
    objectif : éviter de rater un message dans sa boite mail / pallier les perte d'emails, etc ... + utilisations dérivées possible du formulaire.

    Merci.

    Jofdesign
  • StéphaneStéphane Member, Former PluXml Project Manager
    oui tu peux l'imaginer... :D
    (je suis moqueur des fois)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Je l'imagine très bien .... ;)
    Plus sérieusement, ca semble compliqué à mettre en place ? Peut-être que je m'y collerais si j'avais quelques pistes. (peut-être en MP). en plus du guide du développeur.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Non ce n'est pas compliqué à faire. Mais y a quand même du boulot si tu veux avoir un écran qui permet de gerer tous les messages (visu, suppression), de pouvoir répondre à l'expéditeur.

    C'est plus facile de mettre un filtre sur les mails qui arrivent dans ta messagerie pour les orienter dans un dossier dédié aux contacts de ton site.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • orx57orx57 Member
    décembre 2011 modifié
    Hello,

    Une toute petite modification, permettant de ne pas afficher la page dans le menu si la position est renseignée à 0 (zéro).

    Stéphane, il y a certainement plus propre... et ça pourrait s'appliquer aussi à plxMyAllArchive.
    diff -aburN /srv/tmp/plxMyContact/lang/en.php /srv/pub/www/orx57.net/dev/plugins/plxMyContact/lang/en.php
    --- /srv/tmp/plxMyContact/lang/en.php   2011-10-03 14:29:28.000000000 +0200
    +++ /srv/pub/www/orx57.net/dev/plugins/plxMyContact/lang/en.php 2011-12-07 11:41:53.000000000 +0100
    @@ -9,7 +9,7 @@
     'L_MAIL_NOT_AVAILABLE'         => 'Mail sending function unavailable',^M
     ^M
     'L_MENU_TITLE'                 => 'Menu title',^M
    -'L_MENU_POS'                   => 'Menu position',^M
    +'L_MENU_POS'                   => 'Menu position (0 to hide)',^M
     'L_EMAIL'                                      => 'E-mail address',^M
     'L_EMAIL_SUBJECT'                      => 'E-mail subject',^M
     'L_THANKYOU_MESSAGE'           => 'Thank you message',^M
    diff -aburN /srv/tmp/plxMyContact/lang/fr.php /srv/pub/www/orx57.net/dev/plugins/plxMyContact/lang/fr.php
    --- /srv/tmp/plxMyContact/lang/fr.php   2011-10-03 14:37:22.000000000 +0200
    +++ /srv/pub/www/orx57.net/dev/plugins/plxMyContact/lang/fr.php 2011-12-07 11:41:14.000000000 +0100
    @@ -9,7 +9,7 @@
     'L_MAIL_NOT_AVAILABLE'         => 'Fonction d\'envoi de mail non disponible',^M
     ^M
     'L_MENU_TITLE'                 => 'Titre du menu',^M
    -'L_MENU_POS'                   => 'Position du menu',^M
    +'L_MENU_POS'                   => 'Position du menu (0 pour masquer)',^M
     'L_EMAIL'                                      => 'Adresse email',^M
     'L_EMAIL_SUBJECT'                      => 'Objet du mail',^M
     'L_THANKYOU_MESSAGE'           => 'Message de remerciement',^M
    diff -aburN /srv/tmp/plxMyContact/plxMyContact.php /srv/pub/www/orx57.net/dev/plugins/plxMyContact/plxMyContact.php
    --- /srv/tmp/plxMyContact/plxMyContact.php      2011-10-20 19:50:18.000000000 +0200
    +++ /srv/pub/www/orx57.net/dev/plugins/plxMyContact/plxMyContact.php    2011-12-07 11:38:49.000000000 +0100
    @@ -69,11 +69,13 @@
                            $string .= "    \$this->plxMotor->aStats = array_merge(\$this->plxMotor->aStats, \$array);";^M
                            $string .= "}";^M
                            echo "<?php ".$string." ?>";^M
    -                       # ajout du menu pour accèder à la page de contact^M
    +                       # ajout du menu pour accèder à la page de contact (si position différente de 0)^M
    +                        if($this->getParam('mnuPos') != 0) {^M
                            echo "<?php \$class = \$this->plxMotor->mode=='contact'?'active':'noactive'; ?>";^M
                            echo "<?php array_splice(\$menus, ".($this->getParam('mnuPos')-1).", 0, '<li><a class=\"static '.\$class.'\" href=\"'.\$this->plxMotor->urlRewrite('?contact').'\">".$this->getParam('mnuName')."</a></li>'); ?>";^M
                    }^M
         }^M
    +    }^M
     ^M
            /**^M
             * Méthode qui ajoute le fichier css dans le fichier header.php du thème^M
    
    @+
  • Pensez-vous qu'il soit faisable d'ajouter des champs et de les rendre obligatoires? Si oui, comment faire, ou y aura t'il une évolution en ce sens pour ce plugin?
Connectez-vous ou Inscrivez-vous pour répondre.