justb3a

Simple Contact Form

Recommended Posts

Just a simple contact form including spam protection.
Optional support for Twig (TemplateTwigReplace) as template engine.
 
---
 
Please have a look at the readme on github!
If you upgrade from version 0.0.9 and below, there are some extra steps to be taken.

The Guides

Edited by justb3a
Added the "module" tag and removed it from title.
  • Like 27

Share this post


Link to post
Share on other sites

This is great. I thought about doing a contact form module myself as i would have needed it in nearly every single project we've done recently.

Btw: I like that all of your modules support TemplateTwigReplace! :)

Share this post


Link to post
Share on other sites

Looks great, have to try it out soon. Thanks for your contribution.

Share this post


Link to post
Share on other sites

Amazing!

I've been mostly doing this functionality in my templates as far as I haven't needed any save functionality but I will be defiantly be checking this out when i do.

Share this post


Link to post
Share on other sites

Little update: I added one more spam protection:

  • antiSpamCountAdditionalInputs - Number of additional inputs. Spam bots often send more than the number of available fields.

Thanks for your feedback  :)

Share this post


Link to post
Share on other sites

Very nice.. just tryed it out and works perfectly.

I had a little trouble with ajax but sorted out in the end.

My fault for copy and pasting from the instructions but this code below needs to be changed:

if ($('.js-simplecontactform').length) {
  $.simplecontactform($('.js-simplecontactform'));
}

to

if ($('.js-simple_contact_form').length) {
   $.simplecontactform($('.js-simple_contact_form'));
}

just a matter of class name if using the default class of the form in simple_contact_form.php

  • Like 2

Share this post


Link to post
Share on other sites

@dazzyweb thanks for pointing that out! I wanted to answer your message but you solved it too fast  :)

Share this post


Link to post
Share on other sites

Hello, 

I was glad to find this module, cause that was just what I looked for.. but I upload the module and when I Install it, I have an error : Method Modules::getInstall does not exist or is not callable in this context

But If I go back in the module page, It seems well installed (I have access to the settings), but when I call the form in my template, an error appears : Error Exception: Method Modules::getInstall does not exist or is not callable in this context (in /home/www/d7a3bc5db5bed31cde906ac7976f3d83/web/wire/core/Wire.php line 231)

Any ideas ? Maybe I skipped a step...

I'm not a Master in PW, but I globally understand how it works..

Thanks in advance.

Share this post


Link to post
Share on other sites

Hi @nyo08,

which version of ProcessWire are you using?

I found a similar error and changed my code as explained.

Please clone the module (github) and checkout  hotfix/2.4-dependency and try again. And please let me know if everything works as expected.

I tested it (ProcessWire 2.5.3) without any problems.

git clone git@github.com:justonestep/processwire-simplecontactform.git SimpleContactForm
cd SimpleContactForm
git checkout  hotfix/2.4-dependency

Share this post


Link to post
Share on other sites

Hi @nyo08,

which version of ProcessWire are you using?

I found a similar error and changed my code as explained.

Please clone the module (github) and checkout  hotfix/2.4-dependency and try again. And please let me know if everything works as expected.

I tested it (ProcessWire 2.5.3) without any problems.

git clone git@github.com:justonestep/processwire-simplecontactform.git SimpleContactForm
cd SimpleContactForm
git checkout  hotfix/2.4-dependency

Indeed I update my PW (I had the 2.2.4 version... looks like I miss some update ahah) and that's perfecly work

O0

Share this post


Link to post
Share on other sites

This module seems to be great.

Is there any option to set the Labeltext for the Inputfields?

Share this post


Link to post
Share on other sites

It would be great if the wireMail function could be used for sending emails instead of the php mail function.

This way people would be able to use it together with their favourite mail extensions. For example with SMTP support: wiremail-swiftmailer or wiremailsmtp

  • Like 5

Share this post


Link to post
Share on other sites

@makari: This module creates a simple template, you can / should change the html structure as well as the label texts. If you need multi language support you have to change the text like this echo __("the label text here!"). Now you can translate the labels via Processwire Backend.

@horst: Thats a good point but first I have to finish another project. I will keep it in mind – as some other things (I did not forget your message  ;) ).

  • Like 2

Share this post


Link to post
Share on other sites

Hey there,

I've installed this module. It has created a new template simple_contact_form.php

I've created a page and used simple_contact_form.php as its template

So I see the contact form on the new page, but it doesn't seem to work (I've used my @gmail.com as emailTo)

is there anything else I should do to make it work?

Share this post


Link to post
Share on other sites
but it doesn't seem to work (I've used my @gmail.com as emailTo)

Gmail doesn't allow you to send an email from yourself to yourself, unlike other email platforms.  The message gets sent but you don't receive the copy, since if's from yourself.

Share this post


Link to post
Share on other sites

I didn't try to send an e-mail to myself?

I have sent @gmail e-mail in the module settings and was testing it on the site using another e-mail, but nothing much happens there..

Share this post


Link to post
Share on other sites

Ok, then I would then look at the php mail function on your server.  I believe this module doesn't make use of enhanced PW capabilities for email sending.

It would be great if the wireMail function could be used for sending emails instead of the php mail function.
 
This way people would be able to use it together with their favourite mail extensions. For example with SMTP support: wiremail-swiftmailer or wiremailsmtp

Share this post


Link to post
Share on other sites

The module uses now the WireMail function instead of php mail.

Besides I added the tag "scf" for fields and templates created by this module (just available on a new installation).

  • Like 5

Share this post


Link to post
Share on other sites

Hi,

Just experienced a couple of bugs with this module which happen when the save messages setting is off.

SimpleContactForm.module

First bug:

if (!$this->pages->findOne('name=' . $this->pageName) instanceof Pages) {

I believe this should be without the "!" at the start as it is currently the wrong way around. Removing it fixed it for me.

Next bug:

} elseif (!in_array($currentIp, $excludeIps)) {

This line should also check if the saveMessages setting is on, i.e.:

} elseif (!in_array($currentIp, $excludeIps) && $this->saveMessages) {

I haven't tested any of these with other settings and I'm not sure they are correct - just needs some looking into.

  • Like 1

Share this post


Link to post
Share on other sites

@pwired:

@makari: This module creates a simple template, you can / should change the html structure as well as the label texts. If you need multi language support you have to change the text like this echo __("the label text here!"). Now you can translate the labels via Processwire Backend.

@BrettMW: Indeed, I only tested this at the beginning with save message settings deactivated. Thanks for your feedback, I will test and implement this as soon as possible. 

Share this post


Link to post
Share on other sites

New version 0.0.9 includes fixes for deactivated save message setting.

On line :343 I removed the exclamation mark (!) and I corrected the instance to compare with. This has to be Page instead of Pages because findOne returns a single page (because of this double bug the messages has been stored). I included a second check here just to make sure that save messages is on. I also included this additional check on line :396. 

  • Like 3

Share this post


Link to post
Share on other sites

New version 0.1.0 adds some more spam protection possibilities and logging.

  • CSRF validation
  • mark messages as spam (by mail or/and ip address)
  • logging for received messages and spam
  • sort option for repeater items in backend to get the latest to the beginning of the list

For more information have a look at the readme.

NOTICE: If you upgrade an existing installation from 0.0.9 and below to the current version, there are some steps to be taken.

  • Like 4

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By kixe
      Email Verification
      This module provides functions to validate email adresses and hosts. The module generates a textfile for blacklisted mailhosts (trashmail), which will be always up to date.
      Download
      https://modules.processwire.com/modules/email-verification/
      API
      // get module $mailcheck = $modules->get('EmailVerification'); // return bool/ string - automatted update of blacklist file $mailcheck->blacklisted(email|domain) // return bool - validate a top level domain, checks against IANA list $mailcheck->validTLD(tld) // return array of punycoded TLDs - cyclic updated, data pulled from IANA $mailcheck->getTLDs(cycle=2592000) // return bool - checks syntax converts to punycode $mailcheck->validDomainName(domain); // return bool - checks punycode encoded syntax $mailcheck->validHostName(host); // return bool - checks syntax and accessibility $mailcheck->validHost(email|domain) // add a single value to blacklist $mailcheck->addToBlacklist(email|domain) USAGE
      $mailcheck = $modules->get('EmailCheck'); $email = 'susi@trashmail.com'; if($mailcheck->blacklisted($email)) echo 'Email Provider not allowed'; if(!$mailcheck->validHost($email)) echo 'Mailhost not available'; Example blacklist file:  blacklist.txt
       
    • By teppo
      Code Blocks Textformatter is a tiny Textformatter module I cooked up to add support for code blocks to text/textarea/RTE fields on some of the sites I work with. Unlike a full-blown Markdown Textformatter – which is something that we already have in the core – this module simply adds support for fenced and inline code blocks.
      The syntax is based on the GitHub code block documentation, so please refer to that for additional instructions. The README at GitHub also includes some basic examples. As with any Textformatter, in order to enable this one, install it and enable it via field settings. Note that there's no syntax highlighting built in (at least for the time being), so use a tool of your choice for that – personally I prefer Prism.js.
      Since this module doesn't use a Markdown tool behind the scenes, but rather some home baked regular expressions, there's always the possibility that I've missed something – but please let me know if you use this module and run into any issues. On the other hand this module should be relatively fast and unobtrusive, as there are no unnecessary bits of code to run 
      GitHub repository: https://github.com/teppokoivula/TextformatterCodeBlocks Modules directory: http://modules.processwire.com/modules/textformatter-code-blocks/
    • By theo
      Here is my first processwire module (beta).
      https://github.com/theo222/ImagePickerField
      A lot of "first times". First time Github, Markdown and of course PW Modules.
      So be gentle please.
      I hope it works.

    • By horst
      Image Animated GIF  v 2.0.2
       
      Module for PW 2.5 stable or newer, but is obsolete for PW Versions greater then 3.0.89 (... read more ...)
       
      This module helps with resizing and cropping of animated GIFs when using the GD-Library.
      The GD-Library does not support this.


      This module is completely based upon the fantastic work of

         László Zsidi (http://www.gifs.hu/, builts the initial classes)
         xurei (https://github.com/xurei/GIFDecoder_optimized, enhanced the classes)


      I have ported it to a PW module and it works with core imagefields, together with Pia and with CropImagefields that uses the new naming scheme since PW 2.5.
       
      ------------------------------------------------------------------------------------------------------------------------------------------
      read more in this post about the rewrite from version 1.0.0 to version 2.0.0
      ------------------------------------------------------------------------------------------------------------------------------------------
      You can find it in the modules directory: https://modules.processwire.com/modules/image-animated-gif/
      and on Github: https://github.com/horst-n/ImageAnimatedGif
      ------
      A preview can be found here