Form Maker by WD – user-friendly drag & drop Form Builder plugin - Version 1.7.21

Version Description

wp 4.0.1 shortcode issue fixed

Download this release

Release Info

Developer webdorado
Plugin Icon 128x128 Form Maker by WD – user-friendly drag & drop Form Builder plugin
Version 1.7.21
Comparing to
See all releases

Code changes from version 1.7.19 to 1.7.21

Files changed (3) hide show
  1. form-maker.php +14 -3
  2. js/main_div_front_end.js +1 -1
  3. readme.txt +4 -1
form-maker.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Form Maker
4
  * Plugin URI: http://web-dorado.com/products/form-maker-wordpress.html
5
  * Description: This plugin is a modern and advanced tool for easy and fast creating of a WordPress Form. The backend interface is intuitive and user friendly which allows users far from scripting and programming to create WordPress Forms.
6
- * Version: 1.7.19
7
  * Author: WebDorado
8
  * Author URI: http://web-dorado.com/
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
@@ -155,17 +155,28 @@ function do_output_buffer() {
155
  }
156
  add_action('init', 'do_output_buffer');
157
 
 
 
 
 
 
 
 
 
 
 
 
158
  function Form_maker_fornt_end_main($content) {
159
  global $form_maker_generate_action;
160
  if ($form_maker_generate_action) {
161
- $pattern = '[\[Form id=("|”)([0-9]*)("|″)\]]';
162
  $count_forms_in_post = preg_match_all($pattern, $content, $matches_form);
163
  if ($count_forms_in_post) {
164
  require_once (WD_FM_DIR . '/frontend/controllers/FMControllerForm_maker.php');
165
  $controller = new FMControllerForm_maker();
166
  for ($jj = 0; $jj < $count_forms_in_post; $jj++) {
167
  $padron = $matches_form[0][$jj];
168
- $replacment = $controller->execute($matches_form[2][$jj]);
169
  $content = str_replace($padron, $replacment, $content);
170
  }
171
  }
3
  * Plugin Name: Form Maker
4
  * Plugin URI: http://web-dorado.com/products/form-maker-wordpress.html
5
  * Description: This plugin is a modern and advanced tool for easy and fast creating of a WordPress Form. The backend interface is intuitive and user friendly which allows users far from scripting and programming to create WordPress Forms.
6
+ * Version: 1.7.21
7
  * Author: WebDorado
8
  * Author URI: http://web-dorado.com/
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
155
  }
156
  add_action('init', 'do_output_buffer');
157
 
158
+ add_shortcode('Form', 'fm_shortcode');
159
+
160
+ function fm_shortcode($attrs) {
161
+ $new_shortcode = '[Form';
162
+ foreach ($attrs as $key=>$value) {
163
+ $new_shortcode .= ' ' . $key . '="' . $value . '"';
164
+ }
165
+ $new_shortcode .= ']';
166
+ return $new_shortcode;
167
+ }
168
+
169
  function Form_maker_fornt_end_main($content) {
170
  global $form_maker_generate_action;
171
  if ($form_maker_generate_action) {
172
+ $pattern = '[\[Form id="([0-9]*)"\]]';
173
  $count_forms_in_post = preg_match_all($pattern, $content, $matches_form);
174
  if ($count_forms_in_post) {
175
  require_once (WD_FM_DIR . '/frontend/controllers/FMControllerForm_maker.php');
176
  $controller = new FMControllerForm_maker();
177
  for ($jj = 0; $jj < $count_forms_in_post; $jj++) {
178
  $padron = $matches_form[0][$jj];
179
+ $replacment = $controller->execute($matches_form[1][$jj]);
180
  $content = str_replace($padron, $replacment, $content);
181
  }
182
  }
js/main_div_front_end.js CHANGED
@@ -1 +1 @@
1
- F=2;
2
  var chCode1 = e.which || e.keyCode;
3
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
4
  return false;
5
  if(document.getElementById(num+'_total_element'+form_id)){
6
  var chCode1 = e.which || e.keyCode;
7
  if ( jQuery.inArray(chCode1,[46,8,9,27,13,190]) != -1 || e.ctrlKey === true || (chCode1 >= 35 && chCode1 < 39))
8
  return true;
9
  return false;
10
  var chCode1 = e.which || e.keyCode;
11
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
12
  return false;
13
  return false;
14
  var chCode1 = e.which || e.keyCode;
15
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
16
  return false;
17
  return false;
18
  var chCode1 = e.which || e.keyCode;
19
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
20
  return false;
21
  return false;
22
  var chCode1 = e.which || e.keyCode;
23
  if (jQuery.inArray(chCode1,[46,8,9,27,13,190]) != -1 || e.ctrlKey === true || (chCode1 >= 35 && chCode1 < 39)) {
24
  return true;
25
  }
26
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57)) {
27
  return false;
28
  }
29
  return false;
30
  return false;
31
  return false;
32
  var chCode1 = e.which || e.keyCode;
33
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
34
  return false;
35
  return false;
36
  return false;
37
  return false;
38
  var chCode1 = e.which || e.keyCode;
39
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
40
  return false;
41
  return false;
42
  return false;
43
  return false;
44
  var chCode1 = e.which || e.keyCode;
45
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
46
  return false;
47
  return false;
48
  while (node.firstChild)
49
  node.removeChild(node.firstChild);
50
 
51
  }
52
 
53
  }
54
  jQuery('.wdform-element-section').each(function() {
55
  var div_parent = document.createElement('div');
56
  div_parent.setAttribute("class", "page_percentage_deactive");
57
  var div = document.createElement('div');
58
  div.setAttribute("id", "div_percentage");
59
  div.setAttribute("class", "page_percentage_active");
60
  div.setAttribute("align", "right");
61
  var div_arrow = document.createElement('div');
62
  div_arrow.setAttribute("class", "wdform_percentage_arrow");
63
  b.setAttribute("class", "wdform_percentage_text");
64
  var curtop = 0;
65
  if (obj.offsetParent) {
66
  do {
67
  curtop += obj.offsetTop;
68
  } while (obj = obj.offsetParent);
69
  return [curtop];
70
  }
71
  addclass = typeof(addclass) != 'undefined' ? addclass : '';
72
  jQuery(select).wrap('<div class="sel-wrap ' + addclass + '"/>');
73
  var sel_options = '';
74
  var selected_option = false;
75
  jQuery(select).children('option').each(function() {
76
  if(jQuery(this).is(':selected')){
77
  selected_option = jQuery(this).index();
78
  }
79
  sel_options = sel_options + '<div class="sel-option" value="' + jQuery(this).val() + '">' + jQuery(this).html() + '</div>';
80
  });
81
  <div class="sel-selected">\
82
  <div class="selected-text">' + jQuery(select).children('option').eq(selected_option).html() + '</div>\
83
  <div class="sel-arraw"></div>\
84
  </div>\
85
  <div class="sel-options">' + sel_options + '</div>\
86
  </div>';
87
  jQuery(select).before(sel_imul);
88
  jQuery('.sel-imul').removeClass('act');
89
  jQuery(this).addClass('act');
90
  if (jQuery(this).children('.sel-options').is(':visible')) {
91
  jQuery('.sel-options').hide();
92
  }
93
  else {
94
  jQuery('.sel-options').hide();
95
  jQuery(this).children('.sel-options').show();
96
  }
97
  var tektext = jQuery(this).html();
98
  jQuery(this).parent('.sel-options').parent('.sel-imul').children('.sel-selected').children('.selected-text').html(tektext);
99
  jQuery(this).parent('.sel-options').children('.sel-option').removeClass('sel-ed');
100
  jQuery(this).addClass('sel-ed');
101
  var tekval = jQuery(this).attr('value');
102
  tekval = typeof(tekval) != 'undefined' ? tekval : tektext;
103
  jQuery(this).parent('.sel-options').parent('.sel-imul').parent('.sel-wrap').children('select').children('option').removeAttr('selected').each(function() {
104
  if (jQuery(this).html() == tektext) {
105
 
106
  jQuery(this).attr('selected', 'select');
107
  }
108
  });
109
  selenter = true;
110
  selenter = false;
111
  if (!selenter) {
112
  jQuery('.sel-options').hide();
113
  jQuery('.sel-imul').removeClass('act');
114
  }
115
  if( node.childNodes[ttt] && node.childNodes[ttt].nodeType == '3' && !/\S/.test( node.childNodes[ttt].nodeValue ))
 
116
  var chCode1 = e.which || e.keyCode;
117
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
118
  return false;
119
  if(document.getElementById(num+'_total_element'+form_id)){
120
  var chCode1 = e.which || e.keyCode;
121
  if ( jQuery.inArray(chCode1,[46,8,9,27,13,190]) != -1 || e.ctrlKey === true || (chCode1 >= 35 && chCode1 < 39))
122
  return true;
123
  return false;
124
  var chCode1 = e.which || e.keyCode;
125
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
126
  return false;
127
  return false;
128
  var chCode1 = e.which || e.keyCode;
129
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
130
  return false;
131
  return false;
132
  var chCode1 = e.which || e.keyCode;
133
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
134
  return false;
135
  return false;
136
  var chCode1 = e.which || e.keyCode;
137
  if (jQuery.inArray(chCode1,[46,8,9,27,13,190]) != -1 || e.ctrlKey === true || (chCode1 >= 35 && chCode1 < 39)) {
138
  return true;
139
  }
140
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57)) {
141
  return false;
142
  }
143
  return false;
144
  return false;
145
  return false;
146
  var chCode1 = e.which || e.keyCode;
147
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
148
  return false;
149
  return false;
150
  return false;
151
  return false;
152
  var chCode1 = e.which || e.keyCode;
153
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
154
  return false;
155
  return false;
156
  return false;
157
  return false;
158
  var chCode1 = e.which || e.keyCode;
159
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
160
  return false;
161
  return false;
162
  while (node.firstChild)
163
  node.removeChild(node.firstChild);
164
 
165
  }
166
 
167
  }
168
  jQuery('.wdform-element-section').each(function() {
169
  var div_parent = document.createElement('div');
170
  div_parent.setAttribute("class", "page_percentage_deactive");
171
  var div = document.createElement('div');
172
  div.setAttribute("id", "div_percentage");
173
  div.setAttribute("class", "page_percentage_active");
174
  div.setAttribute("align", "right");
175
  var div_arrow = document.createElement('div');
176
  div_arrow.setAttribute("class", "wdform_percentage_arrow");
177
  b.setAttribute("class", "wdform_percentage_text");
178
  var curtop = 0;
179
  if (obj.offsetParent) {
180
  do {
181
  curtop += obj.offsetTop;
182
  } while (obj = obj.offsetParent);
183
  return [curtop];
184
  }
185
  addclass = typeof(addclass) != 'undefined' ? addclass : '';
186
  jQuery(select).wrap('<div class="sel-wrap ' + addclass + '"/>');
187
  var sel_options = '';
188
  var selected_option = false;
189
  jQuery(select).children('option').each(function() {
190
  if(jQuery(this).is(':selected')){
191
  selected_option = jQuery(this).index();
192
  }
193
  sel_options = sel_options + '<div class="sel-option" value="' + jQuery(this).val() + '">' + jQuery(this).html() + '</div>';
194
  });
195
  <div class="sel-selected">\
196
  <div class="selected-text">' + jQuery(select).children('option').eq(selected_option).html() + '</div>\
197
  <div class="sel-arraw"></div>\
198
  </div>\
199
  <div class="sel-options">' + sel_options + '</div>\
200
  </div>';
201
  jQuery(select).before(sel_imul);
202
  jQuery('.sel-imul').removeClass('act');
203
  jQuery(this).addClass('act');
204
  if (jQuery(this).children('.sel-options').is(':visible')) {
205
  jQuery('.sel-options').hide();
206
  }
207
  else {
208
  jQuery('.sel-options').hide();
209
  jQuery(this).children('.sel-options').show();
210
  }
211
  var tektext = jQuery(this).html();
212
  jQuery(this).parent('.sel-options').parent('.sel-imul').children('.sel-selected').children('.selected-text').html(tektext);
213
  jQuery(this).parent('.sel-options').children('.sel-option').removeClass('sel-ed');
214
  jQuery(this).addClass('sel-ed');
215
  var tekval = jQuery(this).attr('value');
216
  tekval = typeof(tekval) != 'undefined' ? tekval : tektext;
217
  jQuery(this).parent('.sel-options').parent('.sel-imul').parent('.sel-wrap').children('select').children('option').removeAttr('selected').each(function() {
218
  if (jQuery(this).html() == tektext) {
219
 
220
  jQuery(this).attr('selected', 'select');
221
  }
222
  });
223
  selenter = true;
224
  selenter = false;
225
  if (!selenter) {
226
  jQuery('.sel-options').hide();
227
  jQuery('.sel-imul').removeClass('act');
228
  }
229
  if( node.childNodes[ttt] && node.childNodes[ttt].nodeType == '3' && !/\S/.test( node.childNodes[ttt].nodeValue ))
 
1
  var chCode1 = e.which || e.keyCode;
2
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
3
  return false;
4
  if(document.getElementById(num+'_total_element'+form_id)){
5
  var chCode1 = e.which || e.keyCode;
6
  if ( jQuery.inArray(chCode1,[46,8,9,27,13,190]) != -1 || e.ctrlKey === true || (chCode1 >= 35 && chCode1 < 39))
7
  return true;
8
  return false;
9
  var chCode1 = e.which || e.keyCode;
10
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
11
  return false;
12
  return false;
13
  var chCode1 = e.which || e.keyCode;
14
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
15
  return false;
16
  return false;
17
  var chCode1 = e.which || e.keyCode;
18
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
19
  return false;
20
  return false;
21
  var chCode1 = e.which || e.keyCode;
22
  if (jQuery.inArray(chCode1,[46,8,9,27,13,190]) != -1 || e.ctrlKey === true || (chCode1 >= 35 && chCode1 < 39)) {
23
  return true;
24
  }
25
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57)) {
26
  return false;
27
  }
28
  return false;
29
  return false;
30
  return false;
31
  var chCode1 = e.which || e.keyCode;
32
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
33
  return false;
34
  return false;
35
  return false;
36
  return false;
37
  var chCode1 = e.which || e.keyCode;
38
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
39
  return false;
40
  return false;
41
  return false;
42
  return false;
43
  var chCode1 = e.which || e.keyCode;
44
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
45
  return false;
46
  return false;
47
  while (node.firstChild)
48
  node.removeChild(node.firstChild);
49
 
50
  }
51
 
52
  }
53
  jQuery('.wdform-element-section').each(function() {
54
  var div_parent = document.createElement('div');
55
  div_parent.setAttribute("class", "page_percentage_deactive");
56
  var div = document.createElement('div');
57
  div.setAttribute("id", "div_percentage");
58
  div.setAttribute("class", "page_percentage_active");
59
  div.setAttribute("align", "right");
60
  var div_arrow = document.createElement('div');
61
  div_arrow.setAttribute("class", "wdform_percentage_arrow");
62
  b.setAttribute("class", "wdform_percentage_text");
63
  var curtop = 0;
64
  if (obj.offsetParent) {
65
  do {
66
  curtop += obj.offsetTop;
67
  } while (obj = obj.offsetParent);
68
  return [curtop];
69
  }
70
  addclass = typeof(addclass) != 'undefined' ? addclass : '';
71
  jQuery(select).wrap('<div class="sel-wrap ' + addclass + '"/>');
72
  var sel_options = '';
73
  var selected_option = false;
74
  jQuery(select).children('option').each(function() {
75
  if(jQuery(this).is(':selected')){
76
  selected_option = jQuery(this).index();
77
  }
78
  sel_options = sel_options + '<div class="sel-option" value="' + jQuery(this).val() + '">' + jQuery(this).html() + '</div>';
79
  });
80
  <div class="sel-selected">\
81
  <div class="selected-text">' + jQuery(select).children('option').eq(selected_option).html() + '</div>\
82
  <div class="sel-arraw"></div>\
83
  </div>\
84
  <div class="sel-options">' + sel_options + '</div>\
85
  </div>';
86
  jQuery(select).before(sel_imul);
87
  jQuery('.sel-imul').removeClass('act');
88
  jQuery(this).addClass('act');
89
  if (jQuery(this).children('.sel-options').is(':visible')) {
90
  jQuery('.sel-options').hide();
91
  }
92
  else {
93
  jQuery('.sel-options').hide();
94
  jQuery(this).children('.sel-options').show();
95
  }
96
  var tektext = jQuery(this).html();
97
  jQuery(this).parent('.sel-options').parent('.sel-imul').children('.sel-selected').children('.selected-text').html(tektext);
98
  jQuery(this).parent('.sel-options').children('.sel-option').removeClass('sel-ed');
99
  jQuery(this).addClass('sel-ed');
100
  var tekval = jQuery(this).attr('value');
101
  tekval = typeof(tekval) != 'undefined' ? tekval : tektext;
102
  jQuery(this).parent('.sel-options').parent('.sel-imul').parent('.sel-wrap').children('select').children('option').removeAttr('selected').each(function() {
103
  if (jQuery(this).html() == tektext) {
104
 
105
  jQuery(this).attr('selected', 'select');
106
  }
107
  });
108
  selenter = true;
109
  selenter = false;
110
  if (!selenter) {
111
  jQuery('.sel-options').hide();
112
  jQuery('.sel-imul').removeClass('act');
113
  }
114
  if( node.childNodes[ttt] && node.childNodes[ttt].nodeType == '3' && !/\S/.test( node.childNodes[ttt].nodeValue ))
115
+ F=2;
116
  var chCode1 = e.which || e.keyCode;
117
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
118
  return false;
119
  if(document.getElementById(num+'_total_element'+form_id)){
120
  var chCode1 = e.which || e.keyCode;
121
  if ( jQuery.inArray(chCode1,[46,8,9,27,13,190]) != -1 || e.ctrlKey === true || (chCode1 >= 35 && chCode1 < 39))
122
  return true;
123
  return false;
124
  var chCode1 = e.which || e.keyCode;
125
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
126
  return false;
127
  return false;
128
  var chCode1 = e.which || e.keyCode;
129
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
130
  return false;
131
  return false;
132
  var chCode1 = e.which || e.keyCode;
133
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
134
  return false;
135
  return false;
136
  var chCode1 = e.which || e.keyCode;
137
  if (jQuery.inArray(chCode1,[46,8,9,27,13,190]) != -1 || e.ctrlKey === true || (chCode1 >= 35 && chCode1 < 39)) {
138
  return true;
139
  }
140
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57)) {
141
  return false;
142
  }
143
  return false;
144
  return false;
145
  return false;
146
  var chCode1 = e.which || e.keyCode;
147
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
148
  return false;
149
  return false;
150
  return false;
151
  return false;
152
  var chCode1 = e.which || e.keyCode;
153
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
154
  return false;
155
  return false;
156
  return false;
157
  return false;
158
  var chCode1 = e.which || e.keyCode;
159
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
160
  return false;
161
  return false;
162
  while (node.firstChild)
163
  node.removeChild(node.firstChild);
164
 
165
  }
166
 
167
  }
168
  jQuery('.wdform-element-section').each(function() {
169
  var div_parent = document.createElement('div');
170
  div_parent.setAttribute("class", "page_percentage_deactive");
171
  var div = document.createElement('div');
172
  div.setAttribute("id", "div_percentage");
173
  div.setAttribute("class", "page_percentage_active");
174
  div.setAttribute("align", "right");
175
  var div_arrow = document.createElement('div');
176
  div_arrow.setAttribute("class", "wdform_percentage_arrow");
177
  b.setAttribute("class", "wdform_percentage_text");
178
  var curtop = 0;
179
  if (obj.offsetParent) {
180
  do {
181
  curtop += obj.offsetTop;
182
  } while (obj = obj.offsetParent);
183
  return [curtop];
184
  }
185
  addclass = typeof(addclass) != 'undefined' ? addclass : '';
186
  jQuery(select).wrap('<div class="sel-wrap ' + addclass + '"/>');
187
  var sel_options = '';
188
  var selected_option = false;
189
  jQuery(select).children('option').each(function() {
190
  if(jQuery(this).is(':selected')){
191
  selected_option = jQuery(this).index();
192
  }
193
  sel_options = sel_options + '<div class="sel-option" value="' + jQuery(this).val() + '">' + jQuery(this).html() + '</div>';
194
  });
195
  <div class="sel-selected">\
196
  <div class="selected-text">' + jQuery(select).children('option').eq(selected_option).html() + '</div>\
197
  <div class="sel-arraw"></div>\
198
  </div>\
199
  <div class="sel-options">' + sel_options + '</div>\
200
  </div>';
201
  jQuery(select).before(sel_imul);
202
  jQuery('.sel-imul').removeClass('act');
203
  jQuery(this).addClass('act');
204
  if (jQuery(this).children('.sel-options').is(':visible')) {
205
  jQuery('.sel-options').hide();
206
  }
207
  else {
208
  jQuery('.sel-options').hide();
209
  jQuery(this).children('.sel-options').show();
210
  }
211
  var tektext = jQuery(this).html();
212
  jQuery(this).parent('.sel-options').parent('.sel-imul').children('.sel-selected').children('.selected-text').html(tektext);
213
  jQuery(this).parent('.sel-options').children('.sel-option').removeClass('sel-ed');
214
  jQuery(this).addClass('sel-ed');
215
  var tekval = jQuery(this).attr('value');
216
  tekval = typeof(tekval) != 'undefined' ? tekval : tektext;
217
  jQuery(this).parent('.sel-options').parent('.sel-imul').parent('.sel-wrap').children('select').children('option').removeAttr('selected').each(function() {
218
  if (jQuery(this).html() == tektext) {
219
 
220
  jQuery(this).attr('selected', 'select');
221
  }
222
  });
223
  selenter = true;
224
  selenter = false;
225
  if (!selenter) {
226
  jQuery('.sel-options').hide();
227
  jQuery('.sel-imul').removeClass('act');
228
  }
229
  if( node.childNodes[ttt] && node.childNodes[ttt].nodeType == '3' && !/\S/.test( node.childNodes[ttt].nodeValue ))
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://web-dorado.com/products/wordpress-form.html
4
  Tags: form, forms, form builder, form maker, form manager, form plugin, form with recaptcha, forms plugin, multiple forms, paypal form, survey form, feedback form, feedback forms, contact form,contact form plugin, contact form builder, form creator, email form, secure form, web form, form to email, contact forms, custom forms, form widget, captcha form, wordpress contact form ,recaptcha contact form, form creation, contact form with auto reply, widget contact form, builder, feedback, contacts form plugin , custom contact form, contact us form, formular, formulario
5
  Requires at least: 3.0
6
  Tested up to: 4.0
7
- Stable tag: 1.7.19
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -223,6 +223,9 @@ In case you are upgrading your Form Maker to paid version, but still want to pre
223
 
224
  == Changelog ==
225
 
 
 
 
226
  = 1.7.18 =
227
  pagination with input
228
 
4
  Tags: form, forms, form builder, form maker, form manager, form plugin, form with recaptcha, forms plugin, multiple forms, paypal form, survey form, feedback form, feedback forms, contact form,contact form plugin, contact form builder, form creator, email form, secure form, web form, form to email, contact forms, custom forms, form widget, captcha form, wordpress contact form ,recaptcha contact form, form creation, contact form with auto reply, widget contact form, builder, feedback, contacts form plugin , custom contact form, contact us form, formular, formulario
5
  Requires at least: 3.0
6
  Tested up to: 4.0
7
+ Stable tag: 1.7.21
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
223
 
224
  == Changelog ==
225
 
226
+ = 1.7.21 =
227
+ wp 4.0.1 shortcode issue fixed
228
+
229
  = 1.7.18 =
230
  pagination with input
231