This is a simple but flexible contact form builder that supports translation.
It allows you to create your own (contact) form with custom fields and rules.
All sent data are stored in Messages list.
Admins can be notified of sent form by email, visitors can receive auto reply message.
It also contains passive antispam control (filter about 80% of spam), active antispam with Google reCAPTCHA and IP address protection (limit submits from one address during a day).
Functions overview
- AJAX enabled form that works even when JavaScript is disabled in visitor's browser
- custom fields with own type, label, CSS classes, order and validation
- file uploads support for AJAX and POST
- necessary JS and CSS can be automatically injected if you need to start quick
- translation support with Rainlab Translate
- passive antispam based on checking form sendind time and spam field content
- active antispam with Google reCAPTCHA with locale detection support
- Sendings events to Google Analytics after successful form sent
- IP address protection limits form submits from one address during a day
- store sent data in Messages list, read/unread state and preview of sent data
- auto reply and notification emails
- dynamic redirection URLs after successful sent
- dashboard widgets: Messages stats and New messages
Multiform setup
This plugin was created for a single form usage, but it can be used several times.
There are component properties that can change default form settings (disable some fields, change email addresses or email templates) and allow different look and functions for each component alias.
More info can be found in the documentation.
This plugin is also included into the following bundle
The following themes use this plugin
Vermillion
Vermillion
Ultimate Responsive Company Profile Theme
Yell-Ow!
Yell-Ow!
Yell-Ow! - Ultimate Company Profile
Next Event
Next Event
Next Event is a fully responsive one-page template for events, conferences or workshops.
Small Contact form
Simple but flexible contact form builder with custom fields, validation and passive antispam.
Installation
GitHub clone into /plugins
dir:
git clone https://github.com/jan-vince/smallcontactform
OctoberCMS backend
Just look for 'Small Contact Form' in search field in:
Settings > Updates & Plugins > Install plugins
Permissions
Settings > Administrators
You can set permissions to restrict access to Settings > Small plugins > Contact form and to messages list.
Installation with composer
- Edit composer.json by adding new repository
"repositories": [ { "type": "vcs", "url": "https://github.com/jan-vince/smallcontactform" } ]
- run in command line
composer require janvince/smallcontactform
Setup new Contact form
Settings > Small Contact form
FORM
- You can set your own CSS class name and general success/error messages.
- If you need it, placeholders can be used instead of labels
- Form can be hidden after successful submit.
Enable AJAX
By default, sending form will trigger page reload. With AJAX, everything can be done without page reloading which will be more user friendly.
If user's browser doesn't support (or has disabled) JavaScript, form will still work with page reloads after send.
- For AJAX enabled form, before send confirmation dialog can be required.
Add Assets
If you want to start quickly, you can enable Add assets checkbox - and then Add CSS and JS assets.
This will include necessary styles (Bootstrap, AJAX, October AJAX) and scripts (jQuery, Bootstrap, October AJAX framework and extras).
But you have to include Twig tags {% styles %}
and {% scripts %}
into your layout or page like this:
<html> <head> {% styles %} </head> <body> {% page %} {% scripts %} </body> </html>
If you want to insert assets by hand, you can do it this way (or similar):
<html> <head> <link href="{{['~/modules/system/assets/css/framework.extras.css']|theme }}.css" rel="stylesheet"> </head> <body> {% page %} <script type="text/javascript" src="{{ [ '@jquery', '@framework', '@framework.extras']|theme}}.js"> </script> </body> </html>
Notes
You can add your notes that can be displayed in mail templates. Field is accesiible with {{ form_notes }}.
Form notes content can be overriden in component's properties.
SEND BUTTON
- You can set button class and text.
Redirection after the form is sent
You have some options to control redirection after form is successfully sent:
- In main form settings you can allow redirection and set fixed URL (internal or external)
- In component properties (on CMS Page or Layout) you can override main redirection settings for a specific form
- You can add a dynamic redirect URL as a markup parameter eg.
{% component 'contactForm' redirect_url = ('/success#'~this.page.id) %}
If you use markup parameter do not forget to allow form redirection in form main settings or (rather) in component parameters ! There is no markup parametr to allow redirection.
FIELDS
Here you can add fields to build your contact (or other) form.
The idea is simple (and solution is so I hope):
- Click to add new field
- Set it's name (this is used for
<input name="{{name}}" id="{{name}}">
), so it should be lowercase without special characters. - Set Label if you need one (it is used for descriptive text above input field)
- Set autofocus if you want cursor to automatically jump to this field (if checked more than one field, cursor jumps to first one)
- Set it's name (this is used for
When dropdown is selected there will be values/options repeater shown. You can add as many values you need.
Hint: you can add dropdown empty option by adding a value with empty ID.
You can also use Custom code and have complete control of generated code.
There is also a Custom content field to add formated content in place of a field.
Field data validation
You can select from predefined rules or add custom Validator rules (read documentation).
Some rules require additional validation pattern some of them not.
- You can add one or more validation rules and error messages for them
- Error messages will be shown above input field
- You can reorder fields by drag and drop left circle (all fields can be collapsed by pressing Ctrl+click (Cmd+click on MacOS) on arrow in right top corners)
Hint: For dropdown validation you can use
custom
validation type with rulein
and list of IDs inpattern
field (eg: 1,2,3).Note: There is a
custom_not_regex
validation rule as an inverse to built inregex
.
COLUMNS MAPPING
System writes all form data in database, but for quick overview Name, Email and Message columns are visible separately in Messages list.
But you have to help system to identify these columns by mapping to your form fields.
These mappings are also used for autoreply emails where at least Email field mapping is important.
ANTISPAM
Passive antispam
Very simple implementation of passive antispam (inspired by Nette AntiSpam Control).
The idea behind this is to check how fast is form send and if robots-catching field is filled.
- When allowed, you can set form delay (in seconds) to prevent too fast form sending (mostly by robots). You can add custom error message (will be shown in general error message box above form).
- You can add antispam field label and error message for non JavaScript enabled browsers.
- If JavaScript is working, antispam field is automatically hidden and cleared.
Google reCaptcha
Implementation of Google reCaptcha antispam protection.
Setup
First you have to create new API keys pair in reCaptcha admin panel.
Hit Get reCAPTCHA button on reCaptcha wellcome page. Set label and check reCAPTCHA v2 (or v2 invisible) option and hit button Register.
Copy Site key and Secret key to Contact Form's settings fields.
If you want Contact Form to automatically include server scripts in your layout, check the button in Form settings.
reCaptcha invisible
If you use reCaptcha invisible and want to hide reCaptcha badge, you can add to your styles:
.grecaptcha-badge { visibility: hidden; }
But remember to add info about Privacy policy near your contact form (or as a custom content field).
Check sender's IP
You can add an extra form protection with limit submits from one IP address.
This check has own error message and custom field to set maximum submits.
Mails can be sent directly or queued (OctoberCMS queue must be configured!).
Don't forget to configure mail preferences in Settings > Mail > Mail configuration!
Data in email templates
There are variables available in all email templates:
-
fields is array of [ 'field name' => 'post value' ]
-
fieldsDetails is array of [ 'field name' => ['name', 'value', 'type', ...] ]
-
uploads is array of uploads (of class
System\Models\File
) -
messageObject is a model instance of a selected message
Allow autoreply
Email can be send to form sender as confirmation.
- You have to enter email address and name - it will be used as FROM field
- Email subject can be manually added here (or edited in Settings > Mail > Mail templates (code: janvince.smallcontactform::mail.autoreply))
- Email TO address and name have to be assigned to form fields (in selections only corresponding field types are shown - if you don't see one, try to check it's type in Fields tab)
- Email REPLY TO address can be set
- Message field can be also assigned (and will be saved separately into database)
Allow notifications
Once a Contact form is sent a notification can be immediately send to a provided email address (or comma-separated list of addresses).
A Reply to address of notification email will be set to an email address from Contact form (if this field is used).
You can also force From address to be set to the one entered in Contact form - but not all email systems support this!
TRANSLATION
You can allow translation with RainLab Translate plugin.
After installation of Translate plugin, please add at least two languages in Settings > Translate > Manage languages. For translations to work there must be a localePicker component included in your layout/page.
Form texts
Most of Small Contact form texts can be edited right in Settings > Small plugins > Contact form.
Custom form fields
Translate plugin doesn't supports translation of individual repeater fields yet, so form field texts (label, validation error messages) have to be - for now - translated in a dictionary: Settings > Translate > Translate messages
Please note that form fields labels will be shown in dictionary after first form render (on your frontend page) and validation error messages after first send.
Email templates
You can create your own email templates in Settings > Mail > Mail templates (for hint look inside of default templates starting with janvince.smallcontactform::).
Remember your email templates CODE and put in in Small Contact form email settings in Settings > Small plugins > Contact form > Email tab. For each language there can be specific template.
There are {{fields}}
and {{fieldsDetails}}
arrays available inside of email templates.
You can also use {{url}}
variable to get original request URL.
If your custom form field has name eg. 'email', you use it in template with {{fields.email}}
.
You can itterate over uploaded files with:
{% for item in uploads %} <a href="{{ item.getPath }}">Uploaded file</a> {% endfor %}
You can access model data with eg. {{ messageObject.id }}
.
GOOGLE ANALYTICS
if you want to use these settings, be sure to have Google Analytics scripts included on your site. You can use Rainlab Google Analytics plugin.
Events
You can allow events to be send to your GA account when the form is successfully sent.
There are (translatable) fields for category, action and label.
All event settings can be overriden in component property so if you use more then one form, you can custommize events for each of them.
MESSAGES LIST
All sent data from Contact form are saved and listed in backend Messages list.
If email, name and message fields are assigned on Settings > Small plugins > contact form > Columns mapping tab, they will be saved and shown in separate columns.
You can click on a record to see all form data. The message will be marked as read.
DASHBOARD REPORT WIDGETS
There are available report widgets to be used on OctoberCMS dashboard.
Messages stats
Shows basic messages statistics.
New messages
Shows number of new messages. The color changes to green if there are any.
You can simply click widget to open Messages list.
Overriding form settings
You can override some of the form settings in component dropdown (on page or layout) or by passing them in component call.
Form settings
There is also an Alias column that contain component's alias of the used form and is saved in messages log (this field is invisible by default in messages table).
[contactForm myForm] form_description = 'Form used in home page' disable_fields = 'name|message' send_btn_label = 'Go' form_success_msg = 'Ok, sent :)' form_error_msg = 'Houston, we have a problem'
You can override form's property in Twig component tag, eg:
{% component 'myForm' form_description = 'My other description' send_btn_label = 'Stay in touch' %}
This can be even more complex:
{% set myVar = 12345 %} {% component 'myForm' form_description = ('Current value: ' ~ myVar) %}
In email template you can access some of these variables like this:
Form alias: {{fields.form_alias}} Form description: {{fields.form_description}}
When you override form description in
{% component form_description = 'My description' %}
, description will be added as a hidden field into a form. Do not use this to store private data as this is easily visible in page HTML code!
Override notification email options
You can set different email address to which notification about sent form will be delivered and also change a notification template.
Template must exist in Settings > Mail > Mail configuration.
If you add a locale string to _template
property (like _template_en
) than that one has priority and will be used if ::getLocale()
returns ````````.
[contactForm salesForm] disable_notifications = true notification_address_to = 'sales@domain.com' notification_address_from = 'contactform@domain.com' notification_template = 'notification-sales' notification_template_en = 'notification-sales-en' notification_template_cs = 'notification-sales-cs' notification_subject = 'Notification sent by form {{ fields.form_alias }} on {{ "now"|date }}'
Local strings in
notification_template
canot be used in Twig!
Override autoreply email options
You can set different email address and name for autoreply message and also use different autoreply template.
Template must exist in Settings > Mail > Mail configuration.
If you add a locale string to _template
or _address_from_name
property (like _template_en
or _address_from_name_en
) than that one has priority and will be used if ::getLocale()
returns ````````.
[contactForm orderForm] autoreply_address_from = 'order@domain.com' autoreply_address_from_name = 'Orders' autoreply_address_from_name_en = 'Orders' autoreply_address_from_name_cs = 'Objednávky' autoreply_template = 'autoreply-order' autoreply_template_en = 'autoreply-order-en' autoreply_template_cs = 'autoreply-order-cs' autoreply_subject = 'Autoreply sent by form {{ fields.form_alias }} on {{ "now"|date }}'
Do you know that you can use form variables in an email template subject. In Settings > Mail templates create new template and set the Subject field to eg:
My form {{ fields.form_alias }}
.
Disable some form fields
You can disable some of defined form fields by passing their names in _fields
component property.
Several fields can be added while separated with pipe |
.
[contactForm] disable_fields = 'phone|name|confirmation'
Or you can disable some of functions:
[contactForm] disable_notifications = true disable_autoreply = true
HOWTO
Fight SPAM
Prohibit sending URLs in a (message) field.
- Use Custom rule
- Add your validation error text
- Use validation rule:
custom_not_regex
- Use validation:
/(http|https|ftp|ftps)\:\/\/?/
Add an empty option to dropdown field
You can easily add an empty option with empty ID and some value.
Validate dropdown field
If you want to validate dropdown options, you can use custom validation rule in
with list of IDs as a validation pattern.
My thanks goes to:
OctoberCMS team members and supporters for this great system.
Andrew Measham for his photo.
Font Awesome for nice icons.
Created by Jan Vince, freelance web designer from Czech Republic.
-
David Scherrer
Found the plugin useful on 4 Oct, 2021
Hey Jan!
Thanks so much for this great plugin. As promised, it's very lightweight and straight-forward.
I'm having some difficulties with transferring the contact fields from my local development environment to my online host. Can you tell me where those fields get saved. Haven't found them on the database nor in the file system.
Thanks so much again!
-
Jan Vince author
Replied on 5 Oct, 2021
Hi David and thank you!
Small Contact Form uses October system Settings so you can find saved options in table
system_settings
and itemjanvince_smallcontactform_settings
.I do not have import/export feature as I have never needed it :)
Best regards,
Jan
-
Bunker Srl
Found the plugin useful on 4 Jun, 2021
Very well done plug in! I am going to use this for a module with a very anomalous structure (columns, form filling in several steps...) Do you see any drawback if I override the component HTML, creating a new partial { component_alias }/default.htm? I am aware that I will have to keep it in sync with future updates of components / smallcontactform. Thank you again!
-
Jan Vince author
Replied on 5 Jun, 2021
Hi,
I would recommend to write your own plugin as Small Contact Form was meant to be very simple and not very developer customizable.
All HTML code is prepared through components methods so it is not so easy to change.
Best regards,
Jan
-
Ryan Stubbs
Found the plugin useful on 11 Nov, 2020
Just set this up for my website - really quick and simple. Everything I needed to change to make it fit in with my design was easy to find and quite customisable. Thumbs up from me!
-
Jan Vince author
Replied on 12 Nov, 2020
Thanks ;)
-
Tom Steventon
Found the plugin useful on 17 Sep, 2020
A very useful little plugin with plenty of configuration option.
A nice feature would be the option to specify a "Reply-To" header with the contacts email address. Over-riding the "From" header can potentially be flagged as spam.
-
Jan Vince author
Replied on 17 Sep, 2020
Hi and thank you :)
I will add this on my todo list!
-
Lee Ching Yen
Found the plugin useful on 29 Jun, 2020
Hi, is there any tutorial for translation on the fieldname or label?
-
Jan Vince author
Replied on 29 Jun, 2020
Hi,
I use Rainlab Translat plugin so you can learn more about it on plugin's page.
In my plugin you translate whole fields repeater - so you can change language in right top conner and define fields for each language individually.
Please open issue on GitHub if you need more help.
Best regards,
Jan
-
Timo Weigel
Found the plugin useful on 26 Jun, 2020
As the name promises it's super ease to use, I am thrilled. Is there a way to put a text between the submit button and the last form-field?
-
Jan Vince author
Replied on 27 Jun, 2020
-
cc08
Found the plugin useful on 18 Jun, 2020
Wonderful plugin ! It is a pity that there is no possibility of attaching a file for upload.
-
Jan Vince author
Replied on 19 Jun, 2020
Hi and thanks :)
Upload field is on my todo list so maybe in some next release.
Best regards,
Jan
-
jaans
Found the plugin useful on 6 Mar, 2020
Спасибо за великолепный плагин. Очень пригодился.
-
Jan Vince author
Replied on 7 Mar, 2020
You are welcome :)
-
Hui Bin
Found the plugin useful on 4 Dec, 2019
Good job! this is a very useful plugin, Thank you! The plugin can easily customize form fields and styles. It's very good. Just because of the different regions, I can't use Google reCAPTCHA. If I can have other image verification code functions (such as mewebstudio/captcha) options, it will be more perfect!
-
Jan Vince author
Replied on 5 Dec, 2019
Hi and thank you!
-
Alex
Found the plugin useful on 11 Oct, 2019
Hello, I worked on localhost I added some fields and after I put the changes on the dev the form doesn't have the fields anymore. how can I keep the fields fields?
-
Jan Vince author
Replied on 11 Oct, 2019
Hi Alex,
Contact Form configuration is saved in the database, so you have to upload it (or at least changed parts).
If you need more help, you can open an issue on GitHub.
Best regards,
Jan
-
Koek&Peer B.V.
Found the plugin useful on 20 Sep, 2019
Works perfectly and lots of customable options.
Only one minor issue I stumbled upon: when I enable Google reCaptcha, by default the Google Checkbox reCaptcha is used. How can I edit the template to use the Invisible Google reCaptcha?
-
Jan Vince author
Replied on 21 Sep, 2019
Hi and thank you!
Plugin currently supports only classic reCaptcha, but I will add to my todo list to add also invisible.
If you want to speed it up, you can create issue on GitHub and maybe help with PR.
Best regards,
Jan
-
Meysam Mahfouzi
Found the plugin useful on 28 Jun, 2019
Works perfectly with the flexibility of doing lots of customizations! Thanks a lot!
-
Lukas Cornille
Found the plugin useful on 2 Feb, 2019
Hey, I was wondering if you could add the option to add placeholders for your fields? Otherwise great plugin!
-
Jan Vince author
Replied on 2 Feb, 2019
Hi Lukas, you can enable placeholders in pugin settings and they will be used instead of labels.
-
MSTL
Found the plugin useful on 4 Oct, 2018
Great plugin and easy to use. It just has everything I need to create a simple contact form. Thank you.
A minor thing is that the custom error message for field validation doesn't not show up. In the tooltip that seems it is still using the default error message.
-
Jan Vince author
Replied on 5 Oct, 2018
Thank you!
And please feel free to open new issue on GitHub so we can solve your problem!
Best regards,
Jan -
ituomz
Found the plugin useful on 27 Aug, 2018
Thanks for a great plugin.
-
Jan Vince author
Replied on 27 Aug, 2018
You're welcome :)
-
Chiwawa Lee
Found the plugin useful on 23 Jul, 2018
I really love your plugin, very neat and clean yet very configurable. But I get this error, "Connection could not be established with host smtp.mailgun.org [Connection timed out #110]" on line 269 of /homepages/38/d741803717/htdocs/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php
I'm still learning on how to be on github, please be patient with me :( And I know this is spoonfeed but if you don't mind helping me, you can contact me on chiwawa_lee1@yahoo.com
Thank you very much!
-
Jan Vince author
Replied on 23 Jul, 2018
Hi and thanks!
Your problem is probably in mail configuration of your October installation. I will send you some info in your email.
-
Chaomein Toring
Found the plugin useful on 20 Jul, 2018
How to add multiple email address for notification?
-
Jan Vince author
Replied on 23 Jul, 2018
Hi and thanks for the review!
I have added the option for several notification email addresses in a 1.16 version. You can update now and test it. But please use GitHub for issues.
-
Andriy Haydash
Found the plugin useful on 30 Jun, 2018
Hi. Thanks for a great plugin.
I am only having a small problem. If I send my form (no matter if via ajax or the normal way) and then simply refresh the page the error messages are still visible. Why is this happening?
Thanks, Andriy
-
Jan Vince author
Replied on 9 Jul, 2018
Hi Andriy and thanks!
I will look at the flash messages problem and send answer to your GitHub issue.
-
Kurt Jensen
Found the plugin useful on 6 May, 2018
Works good once I figured out how to get the Drivers plugin to upgrade Guzzle to 6.3.3 to get rid of the error under PHP 7.2: when sending Mails via Mailgun.
Thank you for this plugin. It will save me a lot of time and is flexible enough to use out of the box.
P.S. I posted an issue on github to help others fix the Mailgun Error on PHP 7.2
-
Jan Vince author
Replied on 7 May, 2018
Hi Kurt and thanks!
-
Denys
Found the plugin useful on 10 Jan, 2018
Excellent work!
-
Jan Vince author
Replied on 10 Jan, 2018
Thank you!
-
Domagoj
Found the plugin useful on 20 Dec, 2017
Great plugin, works with absolutely minimum configuration. Big plus is the fact that you can wrap some css around it immediately minimizing the actual dive into the code itself, perfect for small projects where the design is not so much important but merely the functionality.
-
Jan Vince author
Replied on 21 Dec, 2017
Hi and thanks! :)
-
saman s
Found the plugin useful on 19 Oct, 2017
hi
Please tell me how can I use this plugin on 2 pages of the site?
I do not see the second page when I use this plugin on two separate pages of the site.
-
Jan Vince author
Replied on 19 Oct, 2017
Hi,
can we move this to GitHub issues? Reviews are not good place for discussion.
I am using Contact form on several pages in my projects so we should be able to solve your problem.
-
web
Found the plugin useful on 17 Aug, 2017
Site users can not send the messages through the contact form.
Please help me!
-
Jan Vince author
Replied on 17 Aug, 2017
Hi,
can you please open an issue on GitHub?Reviews are not a good place to discuss problems.
Thank you,
Jan -
Alex Bass
Found the plugin useful on 14 Aug, 2017
Excellent work! This seems like it is the only actual active contact form plugin on OctoberCMS. I'll probably be switching over all of my projects to it!
One request, could you allow for multiple templates? E.g. we have a general sales "contact" form (that sends to sales@companyname.com) and we have a "support" form (that sends to support@companyname.com). It seems this plugin only allows for one form unless I am mistaken?
Thanks so much for your hard work! Please don't vanish like the other contact form devs :)
-
Jan Vince author
Replied on 14 Aug, 2017
Hi Alex and thanks for your review!
This was supposed to be a simple plugin, so only one instance/setup is possible for one OctoberCMS installation. But maybe there are some ways.
Please open a GitHub issue for this so we can discuss how I can help you.
-
zooks
Found the plugin useful on 13 Aug, 2017
Slow sending, but it works. Thank you! Please add reCaptcha support.
-
Jan Vince author
Replied on 13 Aug, 2017
Hi @zooks and thanks for review!
You can maybe open an issue on GitHub and write more details about the slowness as I have never experienced it.
-
Mathieu DORMEVAL
Found the plugin useful on 28 Jun, 2017
The only form plugin who allow a to translate form fields.
It's higthly configurable...
-
Jan Vince author
Replied on 5 Oct, 2017
Thanks! :)
-
1.68.0 |
Added option to hide form only visually Jun 21, 2024 |
---|---|
1.67.1 |
Fixed pl language folder Mar 15, 2024 |
1.67.0 |
Updated mail templates for OC v3.6 Mar 07, 2024 |
1.66.3 |
Fixed passive antispam validation (thanks @Quendi6) Feb 22, 2024 |
1.66.2 |
Added snippetAjax option (thanks @DenSit-be) Oct 19, 2023 |
1.66.1 |
Fixed mail notification text for Czech language Sep 16, 2023 |
1.66.0 |
Updated message preview page Sep 14, 2023 |
1.65.2 |
Updated default mail views subjects Sep 14, 2023 |
1.65.1 |
Hide fields with empty values in default mail views for autoreply Sep 14, 2023 |
1.65.0 |
Updated Messages export Sep 14, 2023 |
1.64.0 |
Simplified default mail views for EN and CS. Added demo CMS page for mail views testing. Sep 14, 2023 |
1.63.7 |
Added check to empty form fields array Aug 09, 2023 |
1.63.6 |
Fixed Bootstrap 5 validation classes Aug 02, 2023 |
1.63.5 |
Fixed messages counter Jul 14, 2023 |
1.63.4 |
Added navigation item counter (thanks @ZhiweiWu0425) Jun 26, 2023 |
1.63.3 |
Fixed valid HTML for placeholders Apr 20, 2023 |
1.63.2 |
Better invisible reCaptcha implementation Apr 20, 2023 |
1.63.1 |
Fixed reCaptcha script Apr 20, 2023 |
1.63.0 |
Added option to disable PLAIN post when AJAX is enabled (thanks @TimFoerster) Apr 20, 2023 |
1.62.0 |
Fixed error messages translation (thanks @massimomegistus) Mar 23, 2023 |
1.61.0 |
Fixed custom validation rule (thanks @SamBrishes) Mar 23, 2023 |
1.60.2 |
Fixed JS code for multiple form usage Jan 12, 2023 |
1.60.1 |
Fixed OCv1 and OCv2 compatibility Jan 04, 2023 |
1.60.0 |
Fixed OCv2 compatibility (thanks @LZaplata) Dec 22, 2022 |
1.59.2 |
Fix for support more forms on page Dec 19, 2022 |
1.59.1 |
Updated recaptcha invisible to support more forms on page Dec 19, 2022 |
1.59.0 |
Simplified recapchta code Dec 16, 2022 |
1.58.0 |
Rewritten recaptcha implementation Dec 15, 2022 |
1.57.0 |
Updated OC3 compatibility Oct 10, 2022 |
1.56.1 |
Fixed XSS vulnerability (thanks lex0r) Jul 02, 2022 |
1.56.0 |
Added Finnish language (thanks @mediaclinic) Jun 08, 2022 |
1.55.7 |
Removed optional parametr in sendAutoreplyEmail (thanks @TimFoerster) Jun 08, 2022 |
1.55.6 |
Fixed yaml for OC3 installation May 06, 2022 |
1.55.5 |
Fixed gtag event code after form sent Mar 12, 2022 |
1.55.4 |
Removed unnecessary side panel (thanks @TimFoerster) Jan 27, 2022 |
1.55.3 |
Fixed PHP8 compatibility (thanks @kavishdahekar) Jan 26, 2022 |
1.55.2 |
Added reCaptcha check (thanks @kavishdahekar) Jan 25, 2022 |
1.55.1 |
Fixed migrations Dec 22, 2021 |
1.55.0 |
Form notes will be saved to database with message Dec 22, 2021 |
1.54.0 |
Added option to add notes for form Dec 22, 2021 |
1.53.0 |
Added option to choose tag for Analytics event (analytics.js (oridinal) or gtag.js) Oct 08, 2021 |
1.52.1 |
Fixed project git files Mar 21, 2021 |
1.52.0 |
Changed reCaptcha validation to work with allow_url_fopen disabled Mar 21, 2021 |
1.51.4 |
Fixed passive antispam delay validation Mar 16, 2021 |
1.51.3 |
Changed size of database column url (thanks zlobec) Mar 15, 2021 |
1.51.2 |
Fixed uploads field in email messages Mar 12, 2021 |
1.51.1 |
Removed uploads array from default fields sent to autoreply template Mar 04, 2021 |
1.51.0 |
Added support for (one or many) file uploads Feb 27, 2021 |
1.50.1 |
Removed unnecessarry debug log Oct 15, 2020 |
1.50.0 |
Auto store form request URL in DB (is available also in Mail templates) Oct 08, 2020 |
1.49.0 |
Fixed missing description and redirect url after AJAX calls Oct 08, 2020 |
1.48.3 |
Fixed getFieldHtmlCode method (thanks sdlb) Oct 06, 2020 |
1.48.2 |
Fixed empty ReplyTo field error Sep 29, 2020 |
1.48.1 |
Fixed autoreply email addresses checks Sep 25, 2020 |
1.48.0 |
Added option to set ReplyTo email address for autoreply emails Sep 25, 2020 |
1.47.4 |
Fixed typo in field attributes Sep 07, 2020 |
1.47.3 |
Removed unnecessarry name attribute from custom_content field Sep 04, 2020 |
1.47.2 |
Fixed checkbox validation (thanks Chocofede) Aug 25, 2020 |
1.47.1 |
Fixed typo in README (wrong component redirection parameter name) Aug 25, 2020 |
1.47.0 |
Added Custom code and Custom content field types Aug 18, 2020 |
1.46.0 |
Fixed backend validation for reCaptcha invisible Aug 05, 2020 |
1.45.0 |
Added German translation (thanks NiklasDah) Aug 05, 2020 |
1.44.0 |
Added component properties to override notification and autoreply email subject (with support for Twig variables) Jul 15, 2020 |
1.43.0 |
!!! Rewritten component partials. No action is needed if you use plugin as is. But if you override component partials test them before update! Jun 16, 2020 |
1.42.0 |
Added Google Analytics events after form is successfully sent Jun 16, 2020 |
1.41.1 |
Set redirect URL property default value to null. Jun 16, 2020 |
1.41.0 |
Added component redirect properties and allow dynamic redirect URL as a component markup parameter. More info in README file. Jun 16, 2020 |
1.40.1 |
Fixed notification From name to be correctly set from component properties (thanks @pavsid) Jun 16, 2020 |
1.40.0 |
Added validation rule custom_not_regex (inverse of default regex validation rule) Jan 30, 2020 |
1.32.1 |
Fixed test on empty values if some fields are disabled Nov 30, 2019 |
1.32.0 |
Added all settings overrides as regular component properties (can be used to override some form settings in multi-form setup) Nov 30, 2019 |
1.31.4 |
Fixed unnecessary refresh after Ajax send (thanks cregx) Oct 17, 2019 |
1.31.3 |
Fixed reCaptcha checkbox version not showing up on older installations Oct 10, 2019 |
1.31.2 |
Fixed AJAX redirect when validation error (thanks zlobec) Oct 06, 2019 |
1.30.1 |
Fixed reCaptcha scripts load Oct 06, 2019 |
1.30.0 |
Added invisible reCaptcha Oct 06, 2019 |
1.25.0 |
Added polish (thanks Magiczne) and spanish (thanks codibit) translations Sep 16, 2019 |
1.24.0 |
Added option to set custom reCaptcha wrapper CSS class Mar 30, 2019 |
1.23.0 |
When placeholders are used, labels are now still present and only hidden by style attribute Feb 13, 2019 |
1.22.0 |
Fixed multiple flash messages shown Feb 13, 2019 |
1.21.0 |
Form fields repeater is not translatable Feb 05, 2019 |
1.20.0 |
Added dropdown field type Nov 29, 2018 |
1.19.0 |
Added custom validation fields (thanks petr-vytlacil for help) Nov 29, 2018 |
1.18.0 |
Added French translations (thx FelixINX) Nov 06, 2018 |
1.17.0 |
Added Slovak translation (thx vosco88) Oct 22, 2018 |
1.16.3 |
Fixed checkbox validation and validation state Sep 05, 2018 |
1.16.2 |
Updated hungarian translation (thx gergo85) Aug 08, 2018 |
1.16.1 |
Fixed missing form data in autoreply templates. Updated default autoreply messages. Aug 06, 2018 |
1.16.0 |
Added option to have more than one notification email address Jul 23, 2018 |
1.15.3 |
Allowed combination of disabled messages saving and allowed passive antispam Jul 19, 2018 |
1.15.2 |
Fixed default values for recaptcha settings to false Jul 17, 2018 |
1.15.1 |
Fixed settings fields trigger Jun 05, 2018 |
1.15.0 |
Added Privacy tab and new option to disable sent messages saving Jun 05, 2018 |
1.14.0 |
Added option to export messages list Apr 23, 2018 |
1.13.2 |
Disabled placeholder attribute for checkbox Apr 11, 2018 |
1.13.1 |
Added form_alias and form_description variables to email (notification and autoreply) templates Mar 26, 2018 |
1.12.1 |
Chanded input custom list column type for switch to prevent interaction with toolbar JS Mar 05, 2018 |
1.12.0 |
Added Russian translation (thank Dinver) Feb 20, 2018 |
1.11.1 |
Added form description field to message preview Feb 15, 2018 |
1.11.0 |
Added form fields alias and description (can be used to distinquish between more forms or to save extra data). More info in README file. Feb 15, 2018 |
1.10.0 |
Added form componnet hacks group (now only for disabling notification emails, more will come) Feb 14, 2018 |
1.9.3 |
Fixed label 'for' attribute to point to input ID (as required by specification) Feb 12, 2018 |
1.9.2 |
Fix problem when ReCaptcha field was logged as an undefined field to system log (thx LukeTowers) Feb 11, 2018 |
1.9.1 |
REPLY TO address is now used for notification email by default. You can still force FROM address to be used (but this is not supported by all email systems!). Feb 09, 2018 |
1.9.0 |
Form registered as Page snippet to be used in Rainlab.Page content (thx BtzLeon) Feb 09, 2018 |
1.8.0 |
Added option to disable built-in browser form validation. Added class 'is-invalid' for fields with error (as used Bootstrap 4). Feb 06, 2018 |
1.7.2 |
Changed count() to mb_strlen() function in custom list type definition Feb 06, 2018 |
1.7.1 |
Fixed 'text_preview' list field type truncate function (thx kuzyk) Feb 01, 2018 |
1.7.0 |
Added option to specify <label> custom CSS class Feb 01, 2018 |
1.6.2 |
Removed reCAPTCHA hard coded locale string (thx kuzyk). Added settings option to allow locale detection. Jan 10, 2018 |
1.6.1 |
Changed All messages large indicator to New messages in scoreboard Jan 08, 2018 |
1.6.0 |
Added Google reCAPTCHA validation Jan 08, 2018 |
1.5.9 |
Added direct link to messages list from dashboard widget Jan 08, 2018 |
1.5.8 |
Fixed typo in lang files Dec 22, 2017 |
1.5.7 |
Added component alias to id attributes for multi-form usage Nov 30, 2017 |
1.5.6 |
Removed value attribute in textarea field Nov 30, 2017 |
1.5.5 |
Changed JSON type for repeater DB column Sep 17, 2017 |
1.5.4 |
Added option to mark selected messages as read Sep 15, 2017 |
1.5.3 |
Added option for notification emails to have FROM address set from contact form email field Aug 25, 2017 |
1.5.2 |
Fixed flash error for IP protection visibility Aug 24, 2017 |
1.5.1 |
Fixed flash message visibility when where are some errors Aug 24, 2017 |
1.5.0 |
Added some component hacking options (override autoreply and notification emails and template, disable fields) Aug 24, 2017 |
1.4.11 |
Added "fieldsDetails" array to all email templates to have access to field labels, types and more Aug 14, 2017 |
1.4.10 |
Fidex typo in lang filename Jul 12, 2017 |
1.4.9 |
Added scoreboard button to quickly open form settings Jul 11, 2017 |
1.4.8 |
Changes to allow multiple use of contact form (form and message blocks has now unique IDs) Jul 11, 2017 |
1.4.7 |
Removed hardcoded date format for created_at column in messages list, updated README and added hungarian language (thanks Szabó Gergő for all this) Jul 07, 2017 |
1.4.6 |
Removed field type restriction for Fields mapping Jun 22, 2017 |
1.4.5 |
Fixed email template check Jun 14, 2017 |
1.4.4 |
Fixed array of enabledLocales Jun 14, 2017 |
1.4.3 |
Fixed translation of mail templates description in Settings > Mail templates Jun 02, 2017 |
1.4.2 |
Added support for default translated mail templates (Czech and English for now) Jun 02, 2017 |
1.4.1 |
Minor UI fix (thanks Szabó Gergő) Jun 02, 2017 |
1.4.0 |
Added redirect option after successful submit (internal and external URL) Jun 01, 2017 |
1.3.2 |
Added custom send button wrapper class May 30, 2017 |
1.3.1 |
Added default value for getTranslated() method May 26, 2017 |
1.3.0 |
Added translation support for Rainlab Translate plugin May 26, 2017 |
1.2.8 |
Added option to use placeholders instead of labels May 25, 2017 |
1.2.7 |
Changed remote_ip column type to string May 25, 2017 |
1.2.6 |
Fixed IP protection error message May 24, 2017 |
1.2.5 |
Added IP protection function (limit too many submits from one IP address) May 24, 2017 |
1.2.4 |
Updated README.md with assets usage example May 21, 2017 |
1.2.3 |
Fields mapping moved to separate tab *Columns mapping* May 21, 2017 |
1.2.2 |
Mail templates convert new lines to <br> with {{ values|raw|nl2br }} May 19, 2017 |
1.2.1 |
Mail templates now render values with {{ values|raw }} May 19, 2017 |
1.2.0 |
Added dashboard report widgets (Stats and New messages) May 19, 2017 |
1.1.0 |
Added function to delete records in Messages list May 19, 2017 |
1.0.2 |
Fix some typos and add LICENCE file (thank to Szabó Gergő) May 19, 2017 |
1.0.1 |
Fix form hiding after successful send May 19, 2017 |
1.0.0 |
First version of Small Contact Form plugin May 18, 2017 |