Contact Form Email - Version 1.2.37

Version Description

  • Added field for Accept terms / GDPR compliant feature
Download this release

Release Info

Developer codepeople
Plugin Icon 128x128 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 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. Full GDPR compliant forms can be built using the commercial versions of the plugin.
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.36 =
866
- * Added indicator of form being edited
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.36
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",