Version Description
- Added field for Accept terms / GDPR compliant feature
Download this release
Release Info
Developer | codepeople |
Plugin | Contact Form Email |
Version | 1.2.37 |
Comparing to | |
See all releases |
Code changes from version 1.2.36 to 1.2.37
- README.txt +7 -3
- css/stylepublic.css +8 -0
- form-to-email.php +1 -1
- js/fbuilderf.jquery.js +71 -2
README.txt
CHANGED
@@ -25,6 +25,7 @@ Contact Form to Email features:
|
|
25 |
► One-click contact form
|
26 |
► Classic and ajax submission available
|
27 |
► Automatic email reports
|
|
|
28 |
► ... and more features (see below)
|
29 |
|
30 |
The main purpose of the **Contact Form to Email** is, as the name indicates, to create **contact forms** and **send their data email addresses**.
|
@@ -337,7 +338,7 @@ To get the modifications shown into the public contact form you may have to refr
|
|
337 |
|
338 |
= Q: Are the forms GDPR compliant? =
|
339 |
|
340 |
-
A: In all plugin versions you can turn off IP tracking to avoid saving that user info
|
341 |
|
342 |
|
343 |
== Other Notes ==
|
@@ -447,6 +448,9 @@ When you click a field already added into the contact form builder area, you can
|
|
447 |
|
448 |
== Changelog ==
|
449 |
|
|
|
|
|
|
|
450 |
= 1.2.36 =
|
451 |
* Added indicator of form being edited
|
452 |
|
@@ -862,5 +866,5 @@ When you click a field already added into the contact form builder area, you can
|
|
862 |
|
863 |
== Upgrade Notice ==
|
864 |
|
865 |
-
= 1.2.
|
866 |
-
* Added
|
25 |
► One-click contact form
|
26 |
► Classic and ajax submission available
|
27 |
► Automatic email reports
|
28 |
+
► Supports GDPR compliant forms
|
29 |
► ... and more features (see below)
|
30 |
|
31 |
The main purpose of the **Contact Form to Email** is, as the name indicates, to create **contact forms** and **send their data email addresses**.
|
338 |
|
339 |
= Q: Are the forms GDPR compliant? =
|
340 |
|
341 |
+
A: In all plugin versions you can turn off IP tracking to avoid saving that user info and an "accept terms" / "accept GDPR" field is available.
|
342 |
|
343 |
|
344 |
== Other Notes ==
|
448 |
|
449 |
== Changelog ==
|
450 |
|
451 |
+
= 1.2.37 =
|
452 |
+
* Added field for Accept terms / GDPR compliant feature
|
453 |
+
|
454 |
= 1.2.36 =
|
455 |
* Added indicator of form being edited
|
456 |
|
866 |
|
867 |
== Upgrade Notice ==
|
868 |
|
869 |
+
= 1.2.37 =
|
870 |
+
* Added field for Accept terms / GDPR compliant feature
|
css/stylepublic.css
CHANGED
@@ -79,3 +79,11 @@ z-index:1000;
|
|
79 |
.ui-tooltip.uh-tooltip{width:250px;font-size:10px;font-weight:normal;padding:5px;}
|
80 |
#fbuilder input[type="checkbox"]{-webkit-appearance:checkbox!important;}
|
81 |
#fbuilder input[type="radio"]{-webkit-appearance:radio!important;}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
.ui-tooltip.uh-tooltip{width:250px;font-size:10px;font-weight:normal;padding:5px;}
|
80 |
#fbuilder input[type="checkbox"]{-webkit-appearance:checkbox!important;}
|
81 |
#fbuilder input[type="radio"]{-webkit-appearance:radio!important;}
|
82 |
+
|
83 |
+
#fbuilder .cff-close-dlg{display:inline-block;width:16px;height:16px;position:absolute;top:10px;right:10px;cursor:pointer;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAowAAAKMB8MeazgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAB5SURBVDiNrZPRCcAwCEQfnUiySAZuF8kSWeH6Yz8KrQZMQAicJ+epAB0YwAmYJKIADLic0/GPPCbQAnLznCd/4NWUFfkgy1VjH8CryA95ApYltAiTRCZxpuoW+gz9WXE6NPeg+ra1UDIxGlWEObe4SGxY5fIxlc75Bkt9V4JS7KWJAAAAAElFTkSuQmCC59ef34356faa7edebc7ed5432ddb673d');
|
84 |
+
}
|
85 |
+
|
86 |
+
#fbuilder .cff-dialog{position:fixed;z-index:999999;padding:30px;width:600px;height:300px;background:#fff;top:50%;left:50%;box-shadow:rgba(0, 0, 0, 0.5) 0px 0px 10px 0px;}
|
87 |
+
|
88 |
+
#fbuilder .cff-dialog-content{width:100%;height:100%;overflow:auto;}
|
89 |
+
#fbuilder .hide{ display:none; }
|
form-to-email.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Contact Form Email
|
4 |
Plugin URI: https://form2email.dwbooster.com/download
|
5 |
Description: Contact form that sends the data to email and also to a database list and CSV file.
|
6 |
-
Version: 1.2.
|
7 |
Author: CodePeople
|
8 |
Author URI: https://form2email.dwbooster.com
|
9 |
Text Domain: contact-form-to-email
|
3 |
Plugin Name: Contact Form Email
|
4 |
Plugin URI: https://form2email.dwbooster.com/download
|
5 |
Description: Contact form that sends the data to email and also to a database list and CSV file.
|
6 |
+
Version: 1.2.37
|
7 |
Author: CodePeople
|
8 |
Author URI: https://form2email.dwbooster.com
|
9 |
Text Domain: contact-form-to-email
|
js/fbuilderf.jquery.js
CHANGED
@@ -4,7 +4,7 @@ jQuery(window).on('load', function(){
|
|
4 |
$.fn.fbuilder = function(options){
|
5 |
var opt = $.extend({},
|
6 |
{
|
7 |
-
typeList:new Array({id:"ftext",name:"Single Line Text"},{id:"fnumber",name:"Number"},{id:"femail",name:"Email"},{id:"fdate",name:"Date"},{id:"ftextarea",name:"Text Area"},{id:"fcheck",name:"Checkboxes"},{id:"fradio",name:"Radio Buttons"},{id:"fdropdown",name:"Dropdown"},{id:"ffile",name:"Upload file"},{id:"fpassword",name:"Password"},{id:"fPhone",name:"Phone field"},{id:"fCommentArea",name:"Instruct. Text"},{id:"fSectionBreak",name:"Section break"},{id:"fPageBreak",name:"Page break"}),
|
8 |
pub:false,
|
9 |
identifier:"",
|
10 |
title:""
|
@@ -41,7 +41,7 @@ jQuery(window).on('load', function(){
|
|
41 |
if (!opt.pub)
|
42 |
{
|
43 |
for (var i=0;i<opt.typeList.length;i++)
|
44 |
-
$("#tabs-1").append('<div class="button width40 '+(((i>5) || (i%2==1))?"n":"itemForm")+'" id="'+opt.typeList[i].id+'">'+opt.typeList[i].name+'</div>');
|
45 |
$("#tabs-1").append('<div class="clearer"></div>');
|
46 |
}
|
47 |
if (!opt.pub) $( ".button").button();
|
@@ -54,6 +54,18 @@ jQuery(window).on('load', function(){
|
|
54 |
$(".helpfbuilder").click(function(){
|
55 |
alert($(this).attr("text"));
|
56 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
$("#sMinDate").change(function(){
|
58 |
items[id].minDate = $(this).val();
|
59 |
reloadItems();
|
@@ -569,6 +581,8 @@ jQuery(window).on('load', function(){
|
|
569 |
} catch(e){}
|
570 |
|
571 |
}
|
|
|
|
|
572 |
}
|
573 |
var showSettings= {
|
574 |
sizeList:new Array({id:"small",name:"Small"},{id:"medium",name:"Medium"},{id:"large",name:"Large"}),
|
@@ -643,6 +657,7 @@ jQuery(window).on('load', function(){
|
|
643 |
csslayout:"",
|
644 |
init:function(){
|
645 |
},
|
|
|
646 |
showSpecialData:function(){
|
647 |
if(typeof this.showSpecialDataInstance != 'undefined')
|
648 |
return this.showSpecialDataInstance();
|
@@ -754,6 +769,60 @@ jQuery(window).on('load', function(){
|
|
754 |
return '<div class="column"><label>Min length/characters</label><br /><input name="sMinlength" id="sMinlength" value="'+this.minlength+'"></div><div class="column"><label>Max length/characters</label><br /><input name="sMaxlength" id="sMaxlength" value="'+this.maxlength+'"></div><div class="clearer"></div>';
|
755 |
}
|
756 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
757 |
var fpassword=function(){};
|
758 |
$.extend(fpassword.prototype,ffields.prototype,{
|
759 |
title:"Untitled",
|
4 |
$.fn.fbuilder = function(options){
|
5 |
var opt = $.extend({},
|
6 |
{
|
7 |
+
typeList:new Array({id:"ftext",name:"Single Line Text"},{id:"fnumber",name:"Number"},{id:"femail",name:"Email"},{id:"fdate",name:"Date"},{id:"ftextarea",name:"Text Area"},{id:"fcheck",name:"Checkboxes"},{id:"fradio",name:"Radio Buttons"},{id:"fdropdown",name:"Dropdown"},{id:"ffile",name:"Upload file"},{id:"fpassword",name:"Password"},{id:"fPhone",name:"Phone field"},{id:"fCommentArea",name:"Instruct. Text"},{id:"fSectionBreak",name:"Section break"},{id:"fPageBreak",name:"Page break"},{id:"facceptance",name:"Accept / GDPR"}),
|
8 |
pub:false,
|
9 |
identifier:"",
|
10 |
title:""
|
41 |
if (!opt.pub)
|
42 |
{
|
43 |
for (var i=0;i<opt.typeList.length;i++)
|
44 |
+
$("#tabs-1").append('<div class="button width40 '+(((i>5 && i!=14) || (i%2==1))?"n":"itemForm")+'" id="'+opt.typeList[i].id+'">'+opt.typeList[i].name+'</div>');
|
45 |
$("#tabs-1").append('<div class="clearer"></div>');
|
46 |
}
|
47 |
if (!opt.pub) $( ".button").button();
|
54 |
$(".helpfbuilder").click(function(){
|
55 |
alert($(this).attr("text"));
|
56 |
});
|
57 |
+
$("#sValue").bind("keyup",function(){
|
58 |
+
items[id].value = $(this).val();
|
59 |
+
reloadItems();
|
60 |
+
});
|
61 |
+
$("#sURL").bind("keyup",function(){
|
62 |
+
items[id].url = $(this).val();
|
63 |
+
reloadItems();
|
64 |
+
});
|
65 |
+
$("#sMessage").bind("keyup",function(){
|
66 |
+
items[id].message = $(this).val();
|
67 |
+
reloadItems();
|
68 |
+
});
|
69 |
$("#sMinDate").change(function(){
|
70 |
items[id].minDate = $(this).val();
|
71 |
reloadItems();
|
581 |
} catch(e){}
|
582 |
|
583 |
}
|
584 |
+
for (var i=0;i<items.length;i++)
|
585 |
+
items[i].after_show();
|
586 |
}
|
587 |
var showSettings= {
|
588 |
sizeList:new Array({id:"small",name:"Small"},{id:"medium",name:"Medium"},{id:"large",name:"Large"}),
|
657 |
csslayout:"",
|
658 |
init:function(){
|
659 |
},
|
660 |
+
after_show:function(){},
|
661 |
showSpecialData:function(){
|
662 |
if(typeof this.showSpecialDataInstance != 'undefined')
|
663 |
return this.showSpecialDataInstance();
|
769 |
return '<div class="column"><label>Min length/characters</label><br /><input name="sMinlength" id="sMinlength" value="'+this.minlength+'"></div><div class="column"><label>Max length/characters</label><br /><input name="sMaxlength" id="sMaxlength" value="'+this.maxlength+'"></div><div class="clearer"></div>';
|
770 |
}
|
771 |
});
|
772 |
+
var facceptance=function(){};
|
773 |
+
$.extend(facceptance.prototype,ffields.prototype,{
|
774 |
+
title:"Accept terms and conditions",
|
775 |
+
ftype:"facceptance",
|
776 |
+
value:"I accept",
|
777 |
+
required:true,
|
778 |
+
url:"",
|
779 |
+
message:"",
|
780 |
+
display:function(){
|
781 |
+
return '<div class="fields" id="field'+opt.identifier+'-'+this.index+'"><div class="arrow ui-icon ui-icon-play "></div><div class="remove ui-icon ui-icon-trash "></div><div class="dfield"><input class="field" disabled="true" type="checkbox"/> '+this.title+((this.required)?"*":"")+'<span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
|
782 |
+
},
|
783 |
+
show:function(){
|
784 |
+
//return '<div class="fields '+this.csslayout+'" id="field'+opt.identifier+'-'+this.index+'"><label>'+this.title+''+((this.required)?"*":"")+'</label><div class="dfield"><input id="'+this.name+'" name="'+this.name+'" minlength="'+(this.minlength)+'" maxlength="'+htmlEncode(this.maxlength)+'" '+((this.equalTo!="")?"equalTo=\"#"+htmlEncode(this.equalTo+opt.identifier)+"\"":"" )+' class="field '+this.size+((this.required)?" required":"")+'" type="text" value="'+htmlEncode(this.predefined)+'"/><span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
|
785 |
+
var me = this,
|
786 |
+
dlg = '',
|
787 |
+
label = me.title;
|
788 |
+
|
789 |
+
if(!/^\s*$/.test(me.url))
|
790 |
+
{
|
791 |
+
label = '<a href="'+htmlEncode($.trim(me.url))+'" target="_blank">'+label+'</a>';
|
792 |
+
}
|
793 |
+
else if(!/^\s*$/.test(me.message))
|
794 |
+
{
|
795 |
+
label = '<a href="javascript:void(0);" class="cff-open-dlg">'+label+'</a>';
|
796 |
+
dlg += '<div class="cff-dialog hide"><span class="cff-close-dlg"></span><div class="cff-dialog-content">'+me.message+'</div></div>'
|
797 |
+
}
|
798 |
+
return '<div class="fields '+me.csslayout+' cff-checkbox-field" id="field'+me.identifier+'-'+me.index+'"><div class="dfield">'+
|
799 |
+
'<div class="one_column"><label><input name="'+me.name+'" id="'+me.name+'" class="field required" value="'+htmlEncode(me.value)+'" vt="'+htmlEncode((/^\s*$/.test(me.value)) ? me.title : me.value)+'" type="checkbox" /> <span>'+
|
800 |
+
( label )+''+((me.required)?'<span class="r">*</span>':'')+
|
801 |
+
'</span></label></div>'+
|
802 |
+
dlg+
|
803 |
+
'</div><div class="clearer"></div></div>';
|
804 |
+
|
805 |
+
},
|
806 |
+
after_show:function()
|
807 |
+
{
|
808 |
+
$(document).on('click','.cff-open-dlg', function(){
|
809 |
+
var dlg = $(this).closest('.fields').find('.cff-dialog'), w = dlg.data('width'), h=dlg.data('height');
|
810 |
+
dlg.removeClass('hide');
|
811 |
+
|
812 |
+
if('undefined' == typeof w) w = MIN($(this).closest('form').width(), $(window).width(), dlg.width());
|
813 |
+
if('undefined' == typeof h) h = MIN($(this).closest('form').height(), $(window).height(), dlg.height());
|
814 |
+
|
815 |
+
dlg.data('width',w);
|
816 |
+
dlg.data('height',h);
|
817 |
+
|
818 |
+
dlg.css({'width': w+'px', 'height': h+'px', 'margin-top': (-1*h/2)+'px', 'margin-left': (-1*w/2)+'px'});
|
819 |
+
});
|
820 |
+
$(document).on('click','.cff-close-dlg', function(){$(this).closest('.cff-dialog').addClass('hide');});
|
821 |
+
},
|
822 |
+
showSpecialDataInstance: function() {
|
823 |
+
return '<div><label>Value</label><input class="large" type="text" name="sValue" id="sValue" value="'+htmlEncode(this.value)+'"></div><div><label>URL to the Consent and Acknowledgement page</label><input class="large" type="text" name="sURL" id="sURL" value="'+htmlEncode(this.url)+'"></div><div><label>- or - enter the Consent and Acknowledgement text</label><textarea class="large" name="sMessage" id="sMessage" style="height:150px;">'+this.message+'</textarea></div>';
|
824 |
+
}
|
825 |
+
});
|
826 |
var fpassword=function(){};
|
827 |
$.extend(fpassword.prototype,ffields.prototype,{
|
828 |
title:"Untitled",
|