Le formulaire de contact évolue

Il s’agit de présenter une évolution du plugin « Formulaire de contact avancé ».

Les fonctionnalités ajoutées à la version 0.61 concernent la construction de la liste des destinataires et la traçabilité.

La liste des destinataires

Page de configuration du formulaire de contact

Comme pour les versions antérieures vous pouvez configurer une liste de destinataires (appelons-là liste configurée). Il est possible de transmettre une autre liste au formulaire lors de son appel (nommons-la liste transmise).

Pour établir et transmettre une liste de destinataires il faut utiliser l’une des syntaxes suivantes :

  • dans le code d’un squelette on utilisera un tableau. La liste transmise ici groupe les auteurs 1 et 15 #FORMULAIRE_CONTACT{#ARRAY{0,1,1,15}}
  • dans le texte d’un article on peut faire appel au formulaire comme si on invoquait un modèle <formulaire|contact|auteur=1,15 />

Cette version propose en plus trois types de comportement vis à vis de ces listes :

  • on ne tient pas compte de la liste transmise (règles 1, 4 et 7)
  • on concatène la liste transmise avec la liste configurée pour former une nouvelle liste dédoublonnée (règles 3, 6 et 9)
  • on utilise uniquement la liste transmise, lorsqu’elle existe, sans ce soucier de la liste configurée (règles 2, 5 et 8).

Traçabilité

Lorsqu’un site dispose de plusieurs formulaires de contact il peut-être utile de savoir depuis qu’elle page le formulaire a été posté. La version 0.61 offre cette possibilité en calculant un lien configurable vers la page du formulaire.

Pour en bénéficier, il est nécessaire de trasmettre un second argument au formulaire de contact en respectant la syntaxe objet-id_objet, par exemple pour fournir cet argument lors d’un appel au formulaire de contact dans le texte de l’article 12 on écrira le dernier argument |trace=article-12.

L’appel complet s’écrit formulaire|contact|auteur=''|trace=article-12 si on ne souhaite pas transmettre de liste d’auteur-destinataire ou formulaire|contact|auteur=3,8|trace=article-12 pour indiquer de prendre en compte les auteur 3 et 8.

Dans le cas d’une utilisation dans un squelette on écrira
#FORMULAIRE_CONTACT{#ARRAY{0,3,1,8},article-#ID_ARTICLE} ou #FORMULAIRE_CONTACT{'',article-#ID_ARTICLE} selon le cas.

Exemple de mise en œuvre

L’organisation « Yapluca » [1] exerce trois activités : « A1 », « A2 » et « A3 ». Bien sûr, il y a un chef « C1 ».
« Yapluca » organise fréquemment des « sessions de shroumf » qui évidement n’ont aucun lien avec « A1 » ou « A2 » ou « A3 » et « C1 » est trop occupé par ailleurs mais souhaite recevoir tous les messages pour archivage. Il souhaite également être le seul à recevoir les messages issus du formulaire général de contact.

Sur « yapluca .com » chaque page dispose d’un lien vers une page de contact qui doit être expédié à « C1 ». Les activités « A1 », « A2 » et « A3 » sont présentées dans des articles indépendants qui embarquent chacun leur formulaire de contact devant être expédié aux responsables d’activités. Les célèbres « sessions de shroumf » font l’objet d’annonces éditoriales à périodicité variable et dont le responsable chargé de la communication varie. En revanche, toutes les sessions doivent pouvoir bénéficier d’un formulaire de contact qui sera expédié au responsable de la session.

Pour ce site on créera un compte auteur pour chaque responsable et on placera « C1 » comme seul destinataire dans la liste configuré. On optera pour la règle n° 3 (Mettre tous ces auteurs en destinataires du courriel et leur ajouter le groupe d’auteurs éventuellement transmit au formulaire).

La page de contact général est un squelette-article. On appelle le formulaire de contact avec #FORMULAIRE_CONTACT{'',article-#ID_ARTICLE}

Dans le texte de l’article de présentation de l’activité « C1 » on invoquera <formulaire|contact|auteur=21,10|trace=article-55 /> puisque il s’agit de l’article 55, que le responsable de l’activité « A1 » porte l’identifiant 10 et que depuis peu un sous-chef vient d’être nommé avec l’identifiant 21..... Screu gneu gneu, on reproduira le même type d’appel pour les activités « A2 » et « A3 ».

Les annonces concernant les célèbres « sessions de shroumf » utilisent des brèves. On pourra apprendre à chacun des rédacteurs à faire ce type d’appel transparent <formulaire|contact|auteur=18|trace=breve-10 /> puisqu’il s’agit de la breve n° 10 et que son responsable est l’auteur 18.

Non c’est pas fini ! Nous venons d’apprendre que le responsable du site veut lui aussi recevoir tous les messages pour une période de trois mois afin de s’assurer du bon fonctionnement du système. Quelle action minimale entreprendre pour l’insérer dans ce dispositif ? Quel appel devons-nous composer pour la prochaine « sessions de shroumf » sachant que exceptionnellement c’est « C1 » qui en sera le responsable ?

Au plaisir de vous lire...

Notes

[1Toute ressemblance avec une organisation existante ou qui aurait existée ne peut-être que fortuite.

Discussion

12 discussions

  • 2

    Bonjour,
    J’envoie un message à une liste dynamique d’auteurs, soit à un tableau :
    #FORMULAIRE_CONTACT{#GET{ma_liste}}
    Ça fonctionne très bien, mais comment procéder pour envoyer ce message en CCI, de façon à ne pas divulguer cette liste à tous les destinataires de ce message ?
    Merci.

    • Bonjour,
      J’ai surchargé dans mes_fonctions.php, la fonction formulaires_contact_traiter(_dist) qu’on trouve dans le fichier du plugin /formulaires/contact.php, de cette façon :

      // destinataire en copie cachée (cf. Facteur)
      $texte_final['bcc'] = $mail;
      	
      $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
      //$envoyer_mail($mail, $posteur['sujet'], $texte_final , '', 'X-Originating-IP: '.$GLOBALS['ip']);
      $envoyer_mail($posteur['mail'], $posteur['sujet'], $texte_final , '', 'X-Originating-IP: '.$GLOBALS['ip']);

      Les destinataires sont ainsi tous en copie cachée et seul l’email du « posteur » est visible dans le champs « A ».

    • Ochiaberi

      Un immense merci, je cherchais comment faire ça depuis plusieurs jours !

    Répondre à ce message

  • 4
    OneMore

    Bonjour à tous,
    Je souhaiterai que le champs texte ne contienne pas la barre
    d’options (Bold, insérer un lien, etc).
    Est ce possible ?
    Je sais, on me donne un outil abouti et moi je veux du rustique, désolé...

    Merci encore

    • Rapidement, tu peux toujours la masquer en CSS avec un display:none

    • OneMore

      Merci Rastapopoulos,
      plus rapide que The Greatest !

      J’ai mis

      .markItUpTabs, .markItUpPreview, .markItUpHeader
      display:none ;


      dans mon habillage.css, mais il semble, en inspectant
      avec firebug, que barre_outil.css prenne le dessus
      sur ma css.
      Est ce bien normal ?

    • Bonjour,
      Il y a une option de configuration qui permet de ne pas afficher la barre typo. Il suffit de cocher cette option.

    • Bonjour,

      Désolé d’avoir laché le fil.
      De plus, je me suis trompé,
      il s’agit du plug-in « Formulaire contact avancé » et non « évolue »,
      cependant pour répondre à Pierre,
      dans Spip 3, la case « Ne pas proposer de barre typo. » n’apparait plus,
      dans les versions antérieure de Spip c’était dans Réglages du Porte Plume.

      Le fait que le porte plume soit installé en extension avec spip 3 a dû changé
      des choses, mais où ?

      Merci encore

    Répondre à ce message

  • Bonjour

    Est ce que tu as une possibilité pour pré-remplir le sujet ?

    Répondre à ce message

  • bonjour, je ne trouve pas la syntaxe pour remplir la liste des auteurs dynamiquement
    avec un set dans une boucle auteur et un get dans la balise à la place de #ARRAY0,1,1,15
    j’ai essayé sans succes http://forum.spip.org/fr_237678.html#forum239458
    merci pour le taf taf, pi r

    Répondre à ce message

  • 1

    Bonjour, je remets le nez dans spip et je suis un peu rouillé.. suite à une mise à jour de mon site ( http://mammoutt.org/spip.php?rubrique6 ) le formulaire de contact avancé ne fonctionnait plus.
    J’ai donc installé la nouvelle version du plugin et ses dépendances. J’appelle toujours le form avec la balise #FORMULAIRE_CONTACT dans mon squelette et j’obtiens l’erreur suivante : Fatal error : Cannot redeclare balise_config() (previously declared in /homez.99/mammoutt/www/plugins/spip-bonux/configurer/pipelines.php:297) in /homez.99/mammoutt/www/plugins/cfg/cfg_fonctions.php on line 28

    Quelqu’un peut m’aider ?

    merci d’avance.

    Répondre à ce message

  • locks971

    Bonjour,

    J’ai installé le plugin formulaire de contact, et tout fonctionne correctement jusqu’à la visualisation du formulaire sur ma page, où j’obtient le texte suivant (comme si c’était inclus dans l’article) à la place du formulaire :

     <?php include_once("./" . _DIR_RACINE . "ecrire/balise/formulaire_.php"); if ($lang_select = "fr") 
    $lang_select = lang_select($lang_select); inserer_balise_dynamique(balise_FORMULAIRE__dyn('FORMULAIRE_CONTACT'), array('', '', '', '', 'fr')); if 
    ($lang_select) lang_select(); ?>

    Je n’arrive pas à localiser le problème, et je précise qu’après rédaction de l’article ou j’ai inséré le formulaire, la visualisation dans la partie privée est impeccable.

    Merci d’avance

    Répondre à ce message

  • 2

    Si je comprends bien, on ne peut définir en réalité qu’un seul formulaire contact avancé pour le site. Si le formulaire doit être affiché à plusieurs endroits du site, on est assez limité dans les options pour modifier les différentes occurrences du formulaires. En réalité c’est essentiellement la liste des destinataires du message qui peut changer de l’une à l’autre.

    En revanche, le message qui s’affiche à l’écran après validation de l’envoi, en particulier, est en dur dans le fichier de langue. Donc pas personnalisable selon le formulaire

    Donc si je veux utiliser ce plugin pour un formulaire d’adhésion d’une part, et un formulaire d’abonnement d’autre part, qui supposent des réponses différentes, ça ne convient pas...

    Ai-je raté une étape, ou y a-t-il une solution ?

    La possibilité de pouvoir gérer réellement plusieurs formulaires contacts, indépendants les uns des autres, serait un plus énorme...

    • Tu as entièrement raison. Mais rien ne t’empêche de dupliquer les fichiers de formulaire afin d’adapter la chaine de langue en question dans le second.

    • Beurk. Le truc c’est surtout que c’est un plugin volontairement simple et qui doit le rester. C’est pour faire un formulaire de contact, pas pour le transformer en formulaire de commande de grenouilles séchées ou autres bizarreries. :)

      Si tu veux un truc plus complexe et conçu pour être extensible, tu peux essayer Formidable, le générateur de formulaires, qui est « en test », mais qui marche plutôt bien apparemment.

    Répondre à ce message

  • 5

    Bonjour à tous,

    Je n’arrive pas à faire fonctionner la trace.
    J’utilise le code suivant dans l’article 36 :

    <formulaire|contact|auteur=''|trace=article-36 />

    Mais dans le mail, le lien présenté n’est que celui-ci :

    Information transmise par le formulaire :
    http://www.napstec.com/fr/spip.php?...

    Auriez-vous une idée de la cause de cela svp ?

    • Avez-vous enregistré le message dans l’espace privé ?

      Si oui, le lien est il complet ?

    • Bonjour Pierre,

      Oui, je l’ai enregistré dans l’espace privé et en effet, là le lien est complet (du moins la version cliquable). Parce que le texte du lien est coupé....

      Que doi-on en déduie ? Il faut faire un choix entre enregistrer dans l’espace privé mais avoir un texte de lien coupé ou bien avoir un texte complet dans le mail envoyé mais pas d’enregistrement dans l’espace privé ?

      cordialement,
      ECO

    • Je ne sais pas trop mais comme je dois m’en servir pour un projet en cours je regarderais dans la semaine s’il y a un bug ou une amélioration possible.

    • Oh !

      Ce serait top, merci beaucoup :-)

    • Pierre,

      Après quelques tests, voici ce qu’il en ressort : Le mail ne contient le TEXTE du message.

      Donc l’URL d’origine, ajoutée automatiquement, est tronquée (comme c’est le cas quand on poste une URL longue dans un article par exemple).

      La solution serait, peut-être, d’ajouter pour l’URL d’origine pas seulement l’URL mais la syntaxe [URL->URL]

      cordialement,
      ECO

    Répondre à ce message

  • Pourriez-vous reformuler la question ?
    En précisant :
    -  qui insère le code : l’utilisateur, le formulaire ?
    -  le code doit il être stocké ou seulement envoyé dans le message ?
    -  a-t-il un usage en lien avec le formulaire ?
    ....

    Répondre à ce message

  • Vincent François

    Bonjour,

    J’ai besoin d’insérer un code Google pour suivre des objectifs à l’occasion de l’envoi par le formulaire de contact d’un message.

    J’ai regardé ce que retournait $_POST[] mais malheureusement, il retourne exactement la même chose dans les 3 cas suivants :
    -  erreurs de saisie
    -  affichage de la confirmation
    -  envoi final.

    Y a-t-il un moyen de greffer un affichage de HTML au moins au moment de l’envoi final ? Puis-je m’accrocher à pipeline par exemple ? Puis-je placer une fonction quelque part sans qu’une mise à jour future du plug in ne vienne la détruire ?

    Merci.

    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