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

Version Description

  • Improved: GDPR compliance options.
  • Added: Step option for slider field.
  • Fixed: Error on form front end when Privacy Policy checkbox is enabled.
  • Fixed: Bug on Actions after submission when Redirect to URL option is empty.
  • Fixed: Notice on form submit.
  • Fixed: Minor issues on Themes.
Download this release

Release Info

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

Code changes from version 1.12.37 to 1.12.38

admin/controllers/Themes_fm.php CHANGED
@@ -1218,9 +1218,8 @@ class FMControllerThemes_fm extends FMAdminController {
1218
  'name' => 'SCCPMargin',
1219
  'type' => 'text',
1220
  'class' => '',
1221
- 'placeholder' => __('e.g.', WDFMInstance(self::PLUGIN)->prefix) .' 5px 10px or 5% 10%',
1222
  'value' => isset($param_values->SCCPMargin) ? $param_values->SCCPMargin : '',
1223
- 'after' => '',
1224
  ),
1225
  array(
1226
  'label' => __('Border Radius', WDFMInstance(self::PLUGIN)->prefix),
1218
  'name' => 'SCCPMargin',
1219
  'type' => 'text',
1220
  'class' => '',
 
1221
  'value' => isset($param_values->SCCPMargin) ? $param_values->SCCPMargin : '',
1222
+ 'after' => 'px',
1223
  ),
1224
  array(
1225
  'label' => __('Border Radius', WDFMInstance(self::PLUGIN)->prefix),
admin/controllers/Uninstall_fm.php CHANGED
@@ -50,10 +50,37 @@ class FMControllerUninstall_fm extends FMAdminController {
50
  public function display() {
51
  $params = array();
52
  $params['addons'] = $this->addons;
 
 
 
53
  $this->view->display($params);
54
  }
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  public function uninstall() {
 
57
  $this->model->delete_db_tables();
58
  global $wpdb;
59
  $params = array();
@@ -61,6 +88,9 @@ class FMControllerUninstall_fm extends FMAdminController {
61
  $params['addons'] = $this->addons;
62
  // Deactivate all addons
63
  WDW_FM_Library(self::PLUGIN)->deactivate_all_addons();
64
- $this->view->uninstall($params);
 
 
 
65
  }
66
  }
50
  public function display() {
51
  $params = array();
52
  $params['addons'] = $this->addons;
53
+ $params['page_title'] = sprintf(__('Uninstall %s', WDFMInstance(self::PLUGIN)->prefix), WDFMInstance(self::PLUGIN)->nicename);
54
+ $params['tables'] = $this->get_tables();
55
+
56
  $this->view->display($params);
57
  }
58
 
59
+ /**
60
+ * Return DB tables names.
61
+ *
62
+ * @return array
63
+ */
64
+ private function get_tables() {
65
+ global $wpdb;
66
+ $tables = array(
67
+ $wpdb->prefix . 'formmaker',
68
+ $wpdb->prefix . 'formmaker_backup',
69
+ $wpdb->prefix . 'formmaker_blocked',
70
+ $wpdb->prefix . 'formmaker_groups',
71
+ $wpdb->prefix . 'formmaker_submits',
72
+ $wpdb->prefix . 'formmaker_views',
73
+ $wpdb->prefix . 'formmaker_themes',
74
+ $wpdb->prefix . 'formmaker_sessions',
75
+ $wpdb->prefix . 'formmaker_query',
76
+ $wpdb->prefix . 'formmaker_display_options',
77
+ );
78
+
79
+ return $tables;
80
+ }
81
+
82
  public function uninstall() {
83
+ $params['tables'] = $this->get_tables();
84
  $this->model->delete_db_tables();
85
  global $wpdb;
86
  $params = array();
88
  $params['addons'] = $this->addons;
89
  // Deactivate all addons
90
  WDW_FM_Library(self::PLUGIN)->deactivate_all_addons();
91
+ $params['page_title'] = sprintf(__('Uninstall %s', WDFMInstance(self::PLUGIN)->prefix), WDFMInstance(self::PLUGIN)->nicename);
92
+ $params['deactivate'] = TRUE;
93
+
94
+ $this->view->display($params);
95
  }
96
  }
admin/models/Manage_fm.php CHANGED
@@ -3164,6 +3164,20 @@ class FMModelManage_fm extends FMAdminModel {
3164
  'w_class',
3165
  );
3166
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3167
  foreach ( $params_names as $params_name ) {
3168
  $temp = explode('*:*' . $params_name . '*:*', $temp);
3169
  $param[$params_name] = $temp[0];
@@ -3178,9 +3192,10 @@ class FMModelManage_fm extends FMAdminModel {
3178
  }
3179
  $param['w_field_label_pos'] = ($param['w_field_label_pos'] == "left" ? "table-cell" : "block");
3180
  $param['w_hide_label'] = (isset($param['w_hide_label']) ? $param['w_hide_label'] : "no");
 
3181
  $display_label = $param['w_hide_label'] == "no" ? $param['w_field_label_pos'] : "none";
3182
  $required_sym = ($param['w_required'] == "yes" ? " *" : "");
3183
- $rep = '<div id="wdform_field' . $id . '" type="type_slider" class="wdform_field" style="display: table-cell;">' . $arrows . '<div align="left" id="' . $id . '_label_sectionform_id_temp" class="' . $param['w_class'] . '" style="display: ' . $display_label . '; vertical-align: top; width: ' . $param['w_field_label_size'] . 'px;"><span id="' . $id . '_element_labelform_id_temp" class="label">' . $label . '</span><span id="' . $id . '_required_elementform_id_temp" class="required">' . $required_sym . '</span></div><div align="left" id="' . $id . '_element_sectionform_id_temp" class="' . $param['w_class'] . '" style="display: ' . $param['w_field_label_pos'] . ';"><input type="hidden" value="type_slider" name="' . $id . '_typeform_id_temp" id="' . $id . '_typeform_id_temp"><input type="hidden" value="' . $param['w_required'] . '" name="' . $id . '_requiredform_id_temp" id="' . $id . '_requiredform_id_temp"><input type="hidden" value="' . $param['w_hide_label'] . '" name="' . $id . '_hide_labelform_id_temp" id="' . $id . '_hide_labelform_id_temp"/><input type="hidden" value="' . $param['w_field_width'] . '" name="' . $id . '_slider_widthform_id_temp" id="' . $id . '_slider_widthform_id_temp"><input type="hidden" value="' . $param['w_field_min_value'] . '" id="' . $id . '_slider_min_valueform_id_temp" name="' . $id . '_slider_min_valueform_id_temp"><input type="hidden" value="' . $param['w_field_max_value'] . '" id="' . $id . '_slider_max_valueform_id_temp" name="' . $id . '_slider_max_valueform_id_temp"><input type="hidden" value="' . $param['w_field_value'] . '" id="' . $id . '_slider_valueform_id_temp" name="' . $id . '_slider_valueform_id_temp"><div id="' . $id . '_slider_tableform_id_temp"><div><div id="' . $id . '_slider_td1form_id_temp"><div name="' . $id . '_elementform_id_temp" id="' . $id . '_elementform_id_temp" style="width: ' . $param['w_field_width'] . 'px;" ' . $param['attributes'] . '"></div></div></div><div><div align="left" id="' . $id . '_slider_td2form_id_temp" style="display: inline-table; width: 33.3%; text-align: left;"><span id="' . $id . '_element_minform_id_temp" class="label">' . $param['w_field_min_value'] . '</span></div><div align="right" id="' . $id . '_slider_td3form_id_temp" style="display: inline-table; width: 33.3%; text-align: center;"><span id="' . $id . '_element_valueform_id_temp" class="label">' . $param['w_field_value'] . '</span></div><div align="right" id="' . $id . '_slider_td4form_id_temp" style="display: inline-table; width: 33.3%; text-align: right;"><span id="' . $id . '_element_maxform_id_temp" class="label">' . $param['w_field_max_value'] . '</span></div></div></div></div></div>';
3184
  break;
3185
  }
3186
  case 'type_range': {
3164
  'w_class',
3165
  );
3166
  }
3167
+ if ( strpos($temp, 'w_field_step') > -1 ) {
3168
+ $params_names = array(
3169
+ 'w_field_label_size',
3170
+ 'w_field_label_pos',
3171
+ 'w_hide_label',
3172
+ 'w_field_width',
3173
+ 'w_field_min_value',
3174
+ 'w_field_max_value',
3175
+ 'w_field_step',
3176
+ 'w_field_value',
3177
+ 'w_required',
3178
+ 'w_class',
3179
+ );
3180
+ }
3181
  foreach ( $params_names as $params_name ) {
3182
  $temp = explode('*:*' . $params_name . '*:*', $temp);
3183
  $param[$params_name] = $temp[0];
3192
  }
3193
  $param['w_field_label_pos'] = ($param['w_field_label_pos'] == "left" ? "table-cell" : "block");
3194
  $param['w_hide_label'] = (isset($param['w_hide_label']) ? $param['w_hide_label'] : "no");
3195
+ $param['w_field_step'] = (isset($param['w_field_step']) ? $param['w_field_step'] : 1);
3196
  $display_label = $param['w_hide_label'] == "no" ? $param['w_field_label_pos'] : "none";
3197
  $required_sym = ($param['w_required'] == "yes" ? " *" : "");
3198
+ $rep = '<div id="wdform_field' . $id . '" type="type_slider" class="wdform_field" style="display: table-cell;">' . $arrows . '<div align="left" id="' . $id . '_label_sectionform_id_temp" class="' . $param['w_class'] . '" style="display: ' . $display_label . '; vertical-align: top; width: ' . $param['w_field_label_size'] . 'px;"><span id="' . $id . '_element_labelform_id_temp" class="label">' . $label . '</span><span id="' . $id . '_required_elementform_id_temp" class="required">' . $required_sym . '</span></div><div align="left" id="' . $id . '_element_sectionform_id_temp" class="' . $param['w_class'] . '" style="display: ' . $param['w_field_label_pos'] . ';"><input type="hidden" value="type_slider" name="' . $id . '_typeform_id_temp" id="' . $id . '_typeform_id_temp"><input type="hidden" value="' . $param['w_required'] . '" name="' . $id . '_requiredform_id_temp" id="' . $id . '_requiredform_id_temp"><input type="hidden" value="' . $param['w_hide_label'] . '" name="' . $id . '_hide_labelform_id_temp" id="' . $id . '_hide_labelform_id_temp"/><input type="hidden" value="' . $param['w_field_width'] . '" name="' . $id . '_slider_widthform_id_temp" id="' . $id . '_slider_widthform_id_temp"><input type="hidden" value="' . $param['w_field_min_value'] . '" id="' . $id . '_slider_min_valueform_id_temp" name="' . $id . '_slider_min_valueform_id_temp"><input type="hidden" value="' . $param['w_field_max_value'] . '" id="' . $id . '_slider_max_valueform_id_temp" name="' . $id . '_slider_max_valueform_id_temp"><input type="hidden" value="' . $param['w_field_step'] . '" id="' . $id . '_slider_stepform_id_temp" name="' . $id . '_slider_stepform_id_temp" /><input type="hidden" value="' . $param['w_field_value'] . '" id="' . $id . '_slider_valueform_id_temp" name="' . $id . '_slider_valueform_id_temp"><div id="' . $id . '_slider_tableform_id_temp"><div><div id="' . $id . '_slider_td1form_id_temp"><div name="' . $id . '_elementform_id_temp" id="' . $id . '_elementform_id_temp" style="width: ' . $param['w_field_width'] . 'px;" ' . $param['attributes'] . '"></div></div></div><div><div align="left" id="' . $id . '_slider_td2form_id_temp" style="display: inline-table; width: 33.3%; text-align: left;"><span id="' . $id . '_element_minform_id_temp" class="label">' . $param['w_field_min_value'] . '</span></div><div align="right" id="' . $id . '_slider_td3form_id_temp" style="display: inline-table; width: 33.3%; text-align: center;"><span id="' . $id . '_element_valueform_id_temp" class="label">' . $param['w_field_value'] . '</span></div><div align="right" id="' . $id . '_slider_td4form_id_temp" style="display: inline-table; width: 33.3%; text-align: right;"><span id="' . $id . '_element_maxform_id_temp" class="label">' . $param['w_field_max_value'] . '</span></div></div></div></div></div>';
3199
  break;
3200
  }
3201
  case 'type_range': {
admin/views/Manage_fm.php CHANGED
@@ -1871,6 +1871,7 @@ class FMViewManage_fm extends FMAdminView {
1871
  <label class="wd-label" for="fm_go-gdpr_checkbox_text"><?php _e('GDPR compliance text.', WDFMInstance(self::PLUGIN)->prefix); ?></label>
1872
  <input type="text" id="fm_go-gdpr_checkbox_text" name="gdpr_checkbox_text" value="<?php echo $row->gdpr_checkbox_text; ?>">
1873
  <p class="description"><?php _e('This text will be used for GDPR compliance checkbox. Place {{privacy_policy}} placeholder to place "Privacy Policy page" link.', WDFMInstance(self::PLUGIN)->prefix); ?></p>
 
1874
  </div>
1875
  <div class="wd-group">
1876
  <label class="wd-label"><?php _e('Save User IP Address to Database', WDFMInstance(self::PLUGIN)->prefix); ?></label>
1871
  <label class="wd-label" for="fm_go-gdpr_checkbox_text"><?php _e('GDPR compliance text.', WDFMInstance(self::PLUGIN)->prefix); ?></label>
1872
  <input type="text" id="fm_go-gdpr_checkbox_text" name="gdpr_checkbox_text" value="<?php echo $row->gdpr_checkbox_text; ?>">
1873
  <p class="description"><?php _e('This text will be used for GDPR compliance checkbox. Place {{privacy_policy}} placeholder to place "Privacy Policy page" link.', WDFMInstance(self::PLUGIN)->prefix); ?></p>
1874
+ <p class="description"><?php echo sprintf(__('You can manage your privacy settings %s.', WDFMInstance(self::PLUGIN)->prefix), '<a href="' . admin_url('privacy.php') . '" target="_blank">' . __('here', WDFMInstance(self::PLUGIN)->prefix)) . '</a>'; ?></p>
1875
  </div>
1876
  <div class="wd-group">
1877
  <label class="wd-label"><?php _e('Save User IP Address to Database', WDFMInstance(self::PLUGIN)->prefix); ?></label>
admin/views/Uninstall_fm.php CHANGED
@@ -16,143 +16,114 @@ class FMViewUninstall_fm extends FMAdminView {
16
  /**
17
  * Display page.
18
  *
19
- * @param array $params
20
  */
21
- public function display( $params = array() ) {
22
- global $wpdb;
23
- $prefix = $wpdb->prefix;
24
- $addons = $params['addons'];
25
- ?>
26
- <form method="post" action="admin.php?page=uninstall<?php echo WDFMInstance(self::PLUGIN)->menu_postfix; ?>" style="width:95%;" class="fm-uninstall-form">
27
- <?php wp_nonce_field(WDFMInstance(self::PLUGIN)->nonce, WDFMInstance(self::PLUGIN)->nonce); ?>
28
- <div class="wrap">
29
- <div class="uninstall-banner">
30
- <div class="uninstall_icon">
31
- </div>
32
- <div class="fm-logo-title"><?php _e('Uninstall', WDFMInstance(self::PLUGIN)->prefix); ?> <?php echo WDFMInstance(self::PLUGIN)->nicename; ?></div>
33
- </div>
34
- <br />
35
- <div class="goodbye-text">
36
- <?php echo sprintf( __('Before uninstalling %s, please contact %s. We\'ll do our best to assist you with any issue. We value every user and what\'s right for our users in everything we do.', WDFMInstance(self::PLUGIN)->prefix), WDFMInstance(self::PLUGIN)->nicename, '<a href="https://web-dorado.com/support/contact-us.html" target="_blank">' . __('Web-Dorado Customer Care', WDFMInstance(self::PLUGIN)->prefix) . '</a>'); ?>
37
- <br>
38
- <?php echo sprintf( __('However, if you have made a decision to uninstall %s in any case, please take a minute to contact %s and let us know what you\'d like to see improved in the plugin. Thank you!', WDFMInstance(self::PLUGIN)->prefix), WDFMInstance(self::PLUGIN)->nicename, '<a href="https://web-dorado.com/support/contact-us.html" target="_blank">' . __('our team', WDFMInstance(self::PLUGIN)->prefix) . '</a>'); ?>
39
- </div>
40
- <div class="goodbye-text" style="color: red;">
41
- <?php echo sprintf( __('Note, that uninstalling %s will remove all forms, submissions and other data on the plugin.', WDFMInstance(self::PLUGIN)->prefix), WDFMInstance(self::PLUGIN)->nicename); ?>
42
- <br>
43
- <?php _e('Please make sure you don\'t have any important information before you proceed.', WDFMInstance(self::PLUGIN)->prefix); ?>
44
- </div>
45
- <p><?php echo sprintf( __('Deactivating %s plugin does not remove any data that may have been created, such as the Forms and the Submissions. To completely remove this plugin, you can uninstall it here.', WDFMInstance(self::PLUGIN)->prefix), WDFMInstance(self::PLUGIN)->nicename); ?></p>
46
- <p style="color: red;">
47
- <strong><?php _e('WARNING:', WDFMInstance(self::PLUGIN)->prefix); ?></strong>
48
- <?php _e('Once uninstalled, this cannot be undone. You should use a Database Backup plugin of WordPress to back up all the data first.', WDFMInstance(self::PLUGIN)->prefix); ?>
49
- </p>
50
- <p style="color: red">
51
- <strong><?php _e('The following WordPress Options/Tables will be DELETED:', WDFMInstance(self::PLUGIN)->prefix); ?></strong>
52
- </p>
53
- <table class="widefat">
54
- <thead>
55
- <tr>
56
- <th><?php _e('Database Tables', WDFMInstance(self::PLUGIN)->prefix); ?></th>
57
- </tr>
58
- </thead>
59
- <tr>
60
- <td valign="top">
61
- <ol>
62
- <li><?php echo $prefix; ?>formmaker</li>
63
- <li><?php echo $prefix; ?>formmaker_backup</li>
64
- <li><?php echo $prefix; ?>formmaker_blocked</li>
65
- <li><?php echo $prefix; ?>formmaker_groups</li>
66
- <li><?php echo $prefix; ?>formmaker_submits</li>
67
- <li><?php echo $prefix; ?>formmaker_views</li>
68
- <li><?php echo $prefix; ?>formmaker_themes</li>
69
- <li><?php echo $prefix; ?>formmaker_sessions</li>
70
- <li><?php echo $prefix; ?>formmaker_query</li>
71
- <li><?php echo $prefix; ?>formmaker_display_options</li>
72
- <?php
73
- foreach ( $addons as $addon => $addon_name ) {
74
- if ( defined($addon) && is_plugin_active(constant($addon)) ) {
75
- if ( is_array($addon_name) ) {
76
- foreach ( $addon_name as $ad_name ) {
77
- echo '<li>' . $prefix . 'formmaker_' . $ad_name . '</li>';
78
- }
79
- }
80
- else {
81
- echo '<li>' . $prefix . 'formmaker_' . $addon_name . '</li>';
82
- }
83
- }
84
- }
85
- ?>
86
- </ol>
87
- </td>
88
- </tr>
89
- </table>
90
- <p style="text-align: center;">
91
- Do you really want to uninstall <?php echo WDFMInstance(self::PLUGIN)->nicename; ?>?
92
- </p>
93
- <p style="text-align: center;">
94
- <input type="checkbox" name="Form Maker" id="check_yes" value="yes" />&nbsp;<label for="check_yes">Yes</label>
95
- </p>
96
- <p style="text-align: center;">
97
- <input type="submit" value="UNINSTALL" class="button-primary fm-uninstall-btn" onclick="if (check_yes.checked) { if (confirm('Are you sure you wish to uninstall <?php echo WDFMInstance(self::PLUGIN)->nicename; ?> from your website?\nAll forms, submissions and other data in the plugin will be removed.')) { fm_set_input_value('task', 'uninstall'); } else { return false; } } else { return false; }" />
98
- </p>
99
- </div>
100
- <input id="task" name="task" type="hidden" value="" />
101
- </form>
102
- <?php
103
  }
104
 
105
  /**
106
- * Uninstall.
107
  *
108
- * @param array $params
109
  */
110
- public function uninstall( $params = array() ) {
111
- $prefix = $params['prefix'];
112
- $addons = $params['addons']; //array
113
  $deactivate_url = add_query_arg(array(
114
  'action' => 'deactivate',
115
  'plugin' => WDFMInstance(self::PLUGIN)->main_file,
116
  ), admin_url('plugins.php'));
117
  $deactivate_url = wp_nonce_url($deactivate_url, 'deactivate-plugin_' . WDFMInstance(self::PLUGIN)->main_file);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  ?>
119
- <div id="message" class="updated fade">
120
- <p>The following Database Tables successfully deleted:</p>
121
- <p><?php echo $prefix; ?>formmaker,</p>
122
- <p><?php echo $prefix; ?>formmaker_backup,</p>
123
- <p><?php echo $prefix; ?>formmaker_blocked,</p>
124
- <p><?php echo $prefix; ?>formmaker_sessions,</p>
125
- <p><?php echo $prefix; ?>formmaker_groups,</p>
126
- <p><?php echo $prefix; ?>formmaker_submits,</p>
127
- <p><?php echo $prefix; ?>formmaker_themes,</p>
128
- <p><?php echo $prefix; ?>formmaker_views,</p>
129
- <p><?php echo $prefix; ?>formmaker_query,</p>
130
- <p><?php echo $prefix; ?>formmaker_display_options.</p>
131
  <?php
132
- foreach ( $addons as $addon => $addon_name ) {
133
- if ( defined($addon) && is_plugin_active(constant($addon)) ) {
134
- if ( is_array($addon_name) ) {
135
- foreach ( $addon_name as $ad_name ) {
136
- echo '<p>' . $prefix . 'formmaker_' . $ad_name . '</p>';
137
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  }
139
- else {
140
- echo '<p>' . $prefix . 'formmaker_' . $addon_name . '</p>';
 
 
 
 
 
 
 
 
 
141
  }
142
- }
143
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  ?>
145
- </div>
146
- <div class="wrap">
147
- <h2><?php _e('Uninstall', WDFMInstance(self::PLUGIN)->prefix); ?> <?php echo WDFMInstance(self::PLUGIN)->nicename; ?></h2>
148
- <p>
149
- <strong>
150
- <a href="<?php echo $deactivate_url; ?>" class="fm_deactivate_link" data-uninstall="1"><?php _e('Click Here', WDFMInstance(self::PLUGIN)->prefix); ?></a>
151
- <?php _e('To Finish the Uninstallation and Form Maker will be Deactivated Automatically.', WDFMInstance(self::PLUGIN)->prefix); ?></a>
152
- </strong>
153
- </p>
154
- <input id="task" name="task" type="hidden" value="" />
155
- </div>
156
  <?php
157
  }
158
  }
16
  /**
17
  * Display page.
18
  *
19
+ * @param $params
20
  */
21
+ public function display($params = array()) {
22
+ ob_start();
23
+ echo $this->body($params);
24
+ // Pass the content to form.
25
+ $form_attr = array(
26
+ 'id' => WDFMInstance(self::PLUGIN)->prefix . '_uninstall',
27
+ 'name' => WDFMInstance(self::PLUGIN)->prefix . '_uninstall',
28
+ 'class' => WDFMInstance(self::PLUGIN)->prefix . '_uninstall wd-form',
29
+ 'action' => add_query_arg(array( 'page' => 'uninstall' . WDFMInstance(self::PLUGIN)->menu_postfix ), 'admin.php'),
30
+ );
31
+ echo $this->form(ob_get_clean(), $form_attr);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  }
33
 
34
  /**
35
+ * Generate page body.
36
  *
37
+ * @param $params
38
  */
39
+ public function body( $params = array() ) {
 
 
40
  $deactivate_url = add_query_arg(array(
41
  'action' => 'deactivate',
42
  'plugin' => WDFMInstance(self::PLUGIN)->main_file,
43
  ), admin_url('plugins.php'));
44
  $deactivate_url = wp_nonce_url($deactivate_url, 'deactivate-plugin_' . WDFMInstance(self::PLUGIN)->main_file);
45
+ echo $this->title(array(
46
+ 'title' => $params['page_title'],
47
+ 'title_class' => 'wd-header',
48
+ 'add_new_button' => FALSE,
49
+ ));
50
+
51
+ if ( isset($params['deactivate']) && $params['deactivate'] == TRUE ) {
52
+ ?>
53
+ <p><strong><?php echo sprintf(__("%s to Finish the Uninstallation and %s will be Deactivated Automatically.", WDFMInstance(self::PLUGIN)->prefix), '<a href="' . $deactivate_url . '" class="bwg_deactivate_link" data-uninstall="1">' . __("Click Here", WDFMInstance(self::PLUGIN)->prefix) . '</a>', WDFMInstance(self::PLUGIN)->nicename); ?></strong></p>
54
+ <?php
55
+
56
+ return;
57
+ }
58
+
59
  ?>
60
+ <div class="goodbye-text">
 
 
 
 
 
 
 
 
 
 
 
61
  <?php
62
+ $support_team = '<a href="https://web-dorado.com/support/contact-us.html" target="_blank">' . __('support team', WDFMInstance(self::PLUGIN)->prefix) . '</a>';
63
+ $contact_us = '<a href="https://web-dorado.com/support/contact-us.html" target="_blank">' . __('Contact us', WDFMInstance(self::PLUGIN)->prefix) . '</a>';
64
+ echo sprintf(__("Before uninstalling the plugin, please Contact our %s. We'll do our best to help you out with your issue. We value each and every user and value what's right for our users in everything we do.<br />
65
+ However, if anyway you have made a decision to uninstall the plugin, please take a minute to %s and tell what you didn't like for our plugins further improvement and development. Thank you !!!", WDFMInstance(self::PLUGIN)->prefix), $support_team, $contact_us); ?>
66
+ </div>
67
+ <p>
68
+ <?php echo sprintf(__("Deactivating %s plugin does not remove any data that may have been created. To completely remove this plugin, you can uninstall it here.", WDFMInstance(self::PLUGIN)->prefix), WDFMInstance(self::PLUGIN)->nicename); ?>
69
+ </p>
70
+ <p class="wd-red">
71
+ <strong><?php _e("WARNING:", WDFMInstance(self::PLUGIN)->prefix); ?></strong>
72
+ <?php _e("Once uninstalled, this can't be undone. You should use a Database Backup plugin of WordPress to back up all the data first.", WDFMInstance(self::PLUGIN)->prefix); ?>
73
+ </p>
74
+ <p class="wd-red">
75
+ <strong><?php _e("The following Database Tables will be deleted:", WDFMInstance(self::PLUGIN)->prefix); ?></strong>
76
+ </p>
77
+ <table class="widefat">
78
+ <thead>
79
+ <tr>
80
+ <th><?php _e("Database Tables", WDFMInstance(self::PLUGIN)->prefix); ?></th>
81
+ </tr>
82
+ </thead>
83
+ <tr>
84
+ <td>
85
+ <?php
86
+ foreach ( $params['tables'] as $table ) {
87
+ ?>
88
+ <p><?php echo $table; ?></p>
89
+ <?php
90
  }
91
+ foreach ( $params['addons'] as $addon => $addon_name ) {
92
+ if ( defined($addon) && is_plugin_active(constant($addon)) ) {
93
+ if ( is_array($addon_name) ) {
94
+ foreach ( $addon_name as $ad_name ) {
95
+ echo '<p>' . WDFMInstance(self::PLUGIN)->prefix . 'formmaker_' . $ad_name . '</p>';
96
+ }
97
+ }
98
+ else {
99
+ echo '<p>' . WDFMInstance(self::PLUGIN)->prefix . 'formmaker_' . $addon_name . '</p>';
100
+ }
101
+ }
102
  }
103
+ ?>
104
+ </td>
105
+ </tr>
106
+ </table>
107
+ <p class="wd-text-center">
108
+ <?php echo sprintf(__("Do you really want to uninstall %s?", WDFMInstance(self::PLUGIN)->prefix), WDFMInstance(self::PLUGIN)->nicename); ?>
109
+ </p>
110
+ <p class="wd-text-center">
111
+ <input type="checkbox" name="Form Maker" id="check_yes" value="yes" />
112
+ <label for="check_yes"><?php _e("Yes", WDFMInstance(self::PLUGIN)->prefix); ?></label>
113
+ </p>
114
+ <p class="wd-text-center">
115
+ <?php
116
+ $buttons = array(
117
+ 'save' => array(
118
+ 'title' => __('UNINSTALL', WDFMInstance(self::PLUGIN)->prefix),
119
+ 'value' => 'uninstall',
120
+ 'onclick' => 'if (check_yes.checked && confirm(\'' . addslashes(sprintf(__("You are About to Uninstall %s from WordPress. This Action Is Not Reversible.", WDFMInstance(self::PLUGIN)->prefix), WDFMInstance(self::PLUGIN)->nicename)) . '\')) { fm_set_input_value(\'task\', \'uninstall\'); } else {return false;}',
121
+ 'class' => 'button-primary',
122
+ ),
123
+ );
124
+ echo $this->buttons($buttons, TRUE);
125
  ?>
126
+ </p>
 
 
 
 
 
 
 
 
 
 
127
  <?php
128
  }
129
  }
css/form_maker_frontend.css CHANGED
@@ -1037,4 +1037,5 @@ div[type="type_slider"] .label {
1037
  }
1038
  .fm-form-container .fm-form .fm-gdpr-checkbox {
1039
  display: initial !important;
 
1040
  }
1037
  }
1038
  .fm-form-container .fm-form .fm-gdpr-checkbox {
1039
  display: initial !important;
1040
+ margin-right: 5px;
1041
  }
css/form_maker_tables.css CHANGED
@@ -4337,4 +4337,36 @@ li.pp_selected > span {
4337
  .tooltip-arrow.top:after {
4338
  bottom: -20px;
4339
  top: auto;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4340
  }
4337
  .tooltip-arrow.top:after {
4338
  bottom: -20px;
4339
  top: auto;
4340
+ }
4341
+
4342
+ .wd-red {
4343
+ color: red;
4344
+ }
4345
+
4346
+ .wd-yellow {
4347
+ color: #FCCD47;
4348
+ }
4349
+
4350
+ .wd-grey {
4351
+ color: #9B9B9B;
4352
+ }
4353
+
4354
+ .goodbye-text {
4355
+ font-size: 16px;
4356
+ font-weight: bold;
4357
+ background: #fff;
4358
+ padding: 15px;
4359
+ line-height: 22px;
4360
+ }
4361
+
4362
+ .goodbye-text a {
4363
+ font-size: 15px;
4364
+ }
4365
+
4366
+ .wd-vertical-middle {
4367
+ vertical-align: middle !important;
4368
+ }
4369
+
4370
+ .wd-text-center {
4371
+ text-align: center;
4372
  }
form-maker.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Form Maker
4
  * Plugin URI: https://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.12.37
7
  * Author: WebDorado Form Builder Team
8
  * Author URI: https://web-dorado.com/wordpress-plugins-bundle.html
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
@@ -95,8 +95,8 @@ final class WDFM {
95
  $this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
96
  $this->front_urls = $this->get_front_urls();
97
  $this->main_file = plugin_basename(__FILE__);
98
- $this->plugin_version = '1.12.37';
99
- $this->db_version = '2.12.37';
100
  $this->menu_postfix = ($this->is_free == 2 ? '_fmc' : '_fm');
101
  $this->plugin_postfix = ($this->is_free == 2 ? '_fmc' : '');
102
  $this->menu_slug = 'manage' . $this->menu_postfix;
3
  * Plugin Name: Form Maker
4
  * Plugin URI: https://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.12.38
7
  * Author: WebDorado Form Builder Team
8
  * Author URI: https://web-dorado.com/wordpress-plugins-bundle.html
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
95
  $this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
96
  $this->front_urls = $this->get_front_urls();
97
  $this->main_file = plugin_basename(__FILE__);
98
+ $this->plugin_version = '1.12.38';
99
+ $this->db_version = '2.12.38';
100
  $this->menu_postfix = ($this->is_free == 2 ? '_fmc' : '_fm');
101
  $this->plugin_postfix = ($this->is_free == 2 ? '_fmc' : '');
102
  $this->menu_slug = 'manage' . $this->menu_postfix;
framework/WDW_FM_Library.php CHANGED
@@ -3688,6 +3688,20 @@ class WDW_FM_Library {
3688
  'w_class',
3689
  );
3690
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3691
  foreach ( $params_names as $params_name ) {
3692
  $temp = explode('*:*' . $params_name . '*:*', $temp);
3693
  $param[$params_name] = $temp[0];
@@ -3697,6 +3711,7 @@ class WDW_FM_Library {
3697
  $onload_js .= '
3698
  jQuery("#wdform_' . $id1 . '_element' . $form_id . '")[0].slide = null;
3699
  jQuery("#wdform_' . $id1 . '_element' . $form_id . '").slider({
 
3700
  range: "min",
3701
  value: eval(' . $param['w_field_value'] . '),
3702
  min: eval(' . $param['w_field_min_value'] . '),
@@ -5255,14 +5270,16 @@ class WDW_FM_Library {
5255
  */
5256
  public static function get_privacy_policy_url() {
5257
  $permalink = '';
 
5258
  $post_id = get_option( 'wp_page_for_privacy_policy' );
5259
  if ( $post_id ) {
5260
  $post = get_post( $post_id, OBJECT );
5261
  if ( $post->post_status == 'publish' ) {
5262
  $permalink = get_permalink( $post_id );
 
5263
  }
5264
  }
5265
- return $permalink;
5266
  }
5267
 
5268
  public static function unique_number() {
3688
  'w_class',
3689
  );
3690
  }
3691
+ if ( strpos($temp, 'w_field_step') > -1 ) {
3692
+ $params_names = array(
3693
+ 'w_field_label_size',
3694
+ 'w_field_label_pos',
3695
+ 'w_hide_label',
3696
+ 'w_field_width',
3697
+ 'w_field_min_value',
3698
+ 'w_field_max_value',
3699
+ 'w_field_step',
3700
+ 'w_field_value',
3701
+ 'w_required',
3702
+ 'w_class',
3703
+ );
3704
+ }
3705
  foreach ( $params_names as $params_name ) {
3706
  $temp = explode('*:*' . $params_name . '*:*', $temp);
3707
  $param[$params_name] = $temp[0];
3711
  $onload_js .= '
3712
  jQuery("#wdform_' . $id1 . '_element' . $form_id . '")[0].slide = null;
3713
  jQuery("#wdform_' . $id1 . '_element' . $form_id . '").slider({
3714
+ step: parseInt(' . $param['w_field_step'] . '),
3715
  range: "min",
3716
  value: eval(' . $param['w_field_value'] . '),
3717
  min: eval(' . $param['w_field_min_value'] . '),
5270
  */
5271
  public static function get_privacy_policy_url() {
5272
  $permalink = '';
5273
+ $title = __('Privacy Policy', WDFMInstance(self::PLUGIN)->prefix);
5274
  $post_id = get_option( 'wp_page_for_privacy_policy' );
5275
  if ( $post_id ) {
5276
  $post = get_post( $post_id, OBJECT );
5277
  if ( $post->post_status == 'publish' ) {
5278
  $permalink = get_permalink( $post_id );
5279
+ $title = $post->post_title;
5280
  }
5281
  }
5282
+ return array('url' => $permalink, 'title' => $title);
5283
  }
5284
 
5285
  public static function unique_number() {
frontend/models/form_maker.php CHANGED
@@ -351,14 +351,13 @@ class FMModelForm_maker {
351
  (!empty( $form_theme[ 'GPFontSize' ] ) ? 'font-size:' . $form_theme[ 'GPFontSize' ] . 'px;' : '') .
352
  (!empty( $form_theme[ 'GPColor' ] ) ? 'color:' . $form_theme[ 'GPColor' ] . ';' : '') .
353
  '}';
354
- if ( !empty( $form_theme[ 'GPAlign' ] ) && $form_theme[ 'GPAlign' ] == 'center' ) {
355
- $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .wdform-page-and-images {' .
356
- 'margin:0 auto;' .
357
- '}';
358
- } else {
359
- $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .wdform-page-and-images {' .
360
- (!empty( $form_theme[ 'GPAlign' ] ) ? 'float:' . $form_theme[ 'GPAlign' ] . ';' : '') .
361
- '}';
362
  }
363
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .wdform_section {' .
364
  (!empty( $form_theme[ 'SEPMargin' ] ) ? 'margin:' . $form_theme[ 'SEPMargin' ] . ';' : '') .
@@ -603,9 +602,9 @@ class FMModelForm_maker {
603
  (!empty( $form_theme[ 'GPBGColor' ] ) ? 'background:' . $form_theme[ 'GPBGColor' ] . ';' : '') .
604
  (!empty( $form_theme[ 'GPFontFamily' ] ) ? 'font-family:' . $form_theme[ 'GPFontFamily' ] . ';' : '') .
605
  '}';
606
- $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .wdform_section {' .
607
- ((!empty( $form_theme[ 'GPBGColor' ] ) && !empty( $form_theme[ 'SEPBGColor' ] ) && $form_theme[ 'GPBGColor' ] != $form_theme[ 'SEPBGColor' ]) ? 'background:' . $form_theme[ 'SEPBGColor' ] . ';' : '') .
608
- '}';
609
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form input[type="text"],
610
  .fm-form-container.fm-theme' . $theme_id . ' .fm-form .ui-corner-all,
611
  .fm-form-container.fm-theme' . $theme_id . ' .fm-form input[type="number"],
@@ -799,9 +798,12 @@ class FMModelForm_maker {
799
  (!empty( $form_theme[ 'SPBoxShadow' ] ) ? 'box-shadow:' . $form_theme[ 'SPBoxShadow' ] . ' !important;' : '') .
800
  ((isset( $form_theme[ 'SPBorderRadius' ] ) && $form_theme[ 'SPBorderRadius' ] !== '') ? 'border-radius:' . $form_theme[ 'SPBorderRadius' ] . 'px !important;' : '') .
801
  '}';
 
 
 
802
  if ( !empty( $borders[ 'SP' ] ) ) {
803
  foreach ( $borders[ 'SP' ] as $border ) {
804
- if ( !empty( $form_theme[ 'SPBorderType' ] ) && ($form_theme[ 'SPBorderType' ] == 'inherit' || $form_theme[ 'SPBorderType' ] == 'initial') ) {
805
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .button-submit {' .
806
  'border-' . $border . '-style:' . $form_theme[ 'SPBorderType' ] . ' !important;' .
807
  '}';
@@ -849,17 +851,22 @@ class FMModelForm_maker {
849
  ((isset( $form_theme[ 'BPBorderRadius' ] ) && $form_theme[ 'BPBorderRadius' ] !== '') ? 'border-radius:' . $form_theme[ 'BPBorderRadius' ] . 'px;' : '') .
850
  (!empty( $form_theme[ 'BPBoxShadow' ] ) ? 'box-shadow:' . $form_theme[ 'BPBoxShadow' ] . ' !important;' : '') .
851
  '}';
 
 
 
 
 
852
  if ( !empty( $borders[ 'BP' ] ) ) {
853
  foreach ( $borders[ 'BP' ] as $border ) {
854
- if ( !empty( $form_theme[ 'BPBorderType' ] ) && ($form_theme[ 'BPBorderType' ] == 'inherit' || $form_theme[ 'BPBorderType' ] == 'initial') ) {
855
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .button-reset,
856
- .fm-form-container.fm-theme' . $theme_id . ' .fm-form button {' .
857
  'border-' . $border . '-style:' . $form_theme[ 'BPBorderType' ] . ' !important;' .
858
  '}';
859
  break;
860
  } else {
861
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .button-reset,
862
- .fm-form-container.fm-theme' . $theme_id . ' .fm-form button {' .
863
  ((isset( $form_theme[ 'BPBorderWidth' ] ) && $form_theme[ 'BPBorderWidth' ] !== '') ? 'border-' . $border . ':' . $form_theme[ 'BPBorderWidth' ] . 'px !important;' : '') .
864
  (!empty( $form_theme[ 'BPBorderType' ] ) ? 'border-' . $border . '-style:' . $form_theme[ 'BPBorderType' ] . ' !important;' : '') .
865
  (!empty( $form_theme[ 'BPBorderColor' ] ) ? 'border-' . $border . '-color:' . $form_theme[ 'BPBorderColor' ] . ' !important;' : '') .
@@ -996,11 +1003,13 @@ class FMModelForm_maker {
996
  .fm-form-container.fm-theme' . $theme_id . ' .fm-form input[type="checkbox"] {' .
997
  (!empty( $form_theme[ 'MCCPBackground' ] ) || !empty( $form_theme[ 'MCCPBGColor' ] ) ? 'display: none;' : '') .
998
  '}';
999
- $css_content .= $form_theme[ 'CUPCSS' ];
 
 
1000
  }
1001
- if ( !empty( $form_theme[ 'CUPCSS' ] ) && empty( $form_theme[ 'HPAlign' ] ) ) {
1002
- $pattern = '/\/\/(.+)(\r\n|\r|\n)/';
1003
  $form_theme_css = $form_theme[ 'CUPCSS' ];
 
1004
  if ( strpos( $form_theme_css, ':checked + label' ) !== FALSE ) {
1005
  $form_theme_css .= '
1006
  .checkbox-div label span {
@@ -3220,47 +3229,47 @@ class FMModelForm_maker {
3220
  array_push( $attachment_user, $pdf_data['pdf_url'] );
3221
  }
3222
 
3223
- if ( $row->sendemail ) {
3224
- if ( $row->send_to ) {
3225
- $body = $new_script;
3226
- $send_tos = explode( '**', $row->send_to );
3227
- $send_copy = isset( $_POST[ "wdform_send_copy_" . $id ] ) ? $_POST[ "wdform_send_copy_" . $id ] : NULL;
3228
- if ( isset( $send_copy ) ) {
3229
- $send = TRUE;
3230
- }
3231
- else {
3232
- $mail_verification_post_id = (int)$wpdb->get_var( $wpdb->prepare( 'SELECT mail_verification_post_id FROM ' . $wpdb->prefix . 'formmaker WHERE id="%d"', $id ) );
3233
- $verification_link = get_post( $mail_verification_post_id );
3234
-
3235
- // Replace pdf link in email body.
3236
- $body = str_replace( '{PDF(link)}', site_url($pdf_data['pdf_url']), $body );
3237
-
3238
- foreach ( $send_tos as $index => $send_to ) {
3239
- $send_to = str_replace( '*', '', $send_to );
3240
- if ( $row->mail_verify && $verification_link !== NULL
3241
- && (strpos( $new_script, "{verificationlink}" ) > -1 || strpos( $new_script, "%Verification link%" ) > -1) ) {
3242
- $ver_link = $row->mail_mode_user ? "<a href =" . add_query_arg( array(
3243
- 'gid' => $_SESSION[ 'gid' ],
3244
- 'h' => $_SESSION[ 'hash' ][ $index ] . '@' . $send_to,
3245
- ), get_post_permalink( $mail_verification_post_id ) ) . ">" . add_query_arg( array(
3246
- 'gid' => $_SESSION[ 'gid' ],
3247
- 'h' => $_SESSION[ 'hash' ][ $index ] . '@' . $send_to,
3248
- ), get_post_permalink( $mail_verification_post_id ) ) . "</a><br/>" : add_query_arg( array(
3249
  'gid' => $_SESSION[ 'gid' ],
3250
  'h' => $_SESSION[ 'hash' ][ $index ] . '@' . $send_to,
3251
- ), get_post_permalink( $mail_verification_post_id ) );
3252
- $body = str_replace( array( '%Verification link%', '{verificationlink}' ), $ver_link, $new_script );
 
 
 
 
 
 
 
 
 
3253
  }
3254
-
3255
- $recipient = isset( $_POST[ 'wdform_' . str_replace( '*', '', $send_to ) . "_element" . $id ] ) ? $_POST[ 'wdform_' . $send_to . "_element" . $id ] : NULL;
3256
- if ( $recipient ) {
3257
- if ( $row->mail_attachment_user ) {
3258
- $remove_parrent_array_user = new RecursiveIteratorIterator( new RecursiveArrayIterator( $attachment_user ) );
3259
- $attachment_user = iterator_to_array( $remove_parrent_array_user, FALSE );
3260
- } else {
3261
- $attachment_user = array();
3262
- }
3263
- WDW_FM_Library(self::PLUGIN)->mail( $recipient, $subject, $body, $header_arr, $attachment_user );
3264
  }
3265
  }
3266
  }
@@ -3268,7 +3277,7 @@ class FMModelForm_maker {
3268
  }
3269
 
3270
  // Admin part.
3271
- if ( $row->sendemail ) {
3272
  $recipient = $row->mail ? $row->mail : '';
3273
  $subject = !empty( $row->mail_subject ) ? $row->mail_subject : $row->title;
3274
 
@@ -3371,7 +3380,9 @@ class FMModelForm_maker {
3371
  // Replace pdf link in email body.
3372
  $admin_body = str_replace( '{PDF(link)}', site_url($pdf_data['pdf_url']), $admin_body );
3373
 
3374
- $send = WDW_FM_Library(self::PLUGIN)->mail( $recipient, $subject, $admin_body, $header_arr, $attachment );
 
 
3375
  }
3376
  $_SESSION[ 'error_or_no' . $id ] = 0;
3377
  $msg = addslashes( __( 'Your form was successfully submitted.', WDFMInstance(self::PLUGIN)->prefix ) );
@@ -3381,38 +3392,37 @@ class FMModelForm_maker {
3381
  if ( $send !== TRUE ) {
3382
  $_SESSION[ 'error_or_no' . $id ] = 1;
3383
  $msg = addslashes( __( 'Error, email was not sent.', WDFMInstance(self::PLUGIN)->prefix ) );
3384
- } else {
 
3385
  $_SESSION[ 'error_or_no' . $id ] = 0;
3386
- $msg = addslashes( __( 'Your form was successfully submitted.', WDFMInstance(self::PLUGIN)->prefix ) );
3387
  }
3388
  }
3389
  }
3390
  }
3391
 
3392
- // Add-on conditional email
3393
- if ( WDFMInstance(self::PLUGIN)->is_free != 2 ) {
3394
- $fm_email_params = $row->sendemail ? array(
3395
- 'admin_body' => $admin_body,
3396
- 'body' => $body,
3397
- 'subject' => $subject,
3398
- 'headers' => $header_arr,
3399
- 'attachment' => $attachment,
3400
- 'attachment_user' => $attachment_user,
3401
- ) : array();
3402
- /*
3403
- * TODO. Need 'custom_fields_value' key. They work with it old conditional-emails.
3404
- */
3405
- $custom_fields_value = array( $this->custom_fields['ip'], $this->custom_fields['useremail'], $this->custom_fields['username'], $this->custom_fields['subid'], $this->custom_fields['all'] );
3406
- $params = array(
3407
- 'form_id' => $id,
3408
- 'fm_email_params' => $fm_email_params,
3409
- 'form_currency' => $form_currency,
3410
- 'custom_fields' => $this->custom_fields,
3411
- 'custom_fields_value' => $custom_fields_value
3412
- );
3413
- do_action( 'fm_set_params_frontend_init', $params );
3414
- }
3415
- // delete files from uploads (save_upload = 0)
3416
  if ( $row->save_uploads == 0 ) {
3417
  foreach ( $all_files as &$all_file ) {
3418
  if ( file_exists( $all_file[ 'tmp_name' ] ) ) {
@@ -3425,7 +3435,7 @@ class FMModelForm_maker {
3425
 
3426
  $https = ((isset( $_SERVER[ 'HTTPS' ] ) && $_SERVER[ 'HTTPS' ] == 'on') ? 'https://' : 'http://');
3427
  $redirect_url = $https . $_SERVER[ "HTTP_HOST" ] . $_SERVER[ "REQUEST_URI" ];
3428
- if ( $row->submit_text_type == 4 ) {
3429
  // Action after submission: URL.
3430
  $redirect_url = $row->url;
3431
  }
@@ -3434,7 +3444,7 @@ class FMModelForm_maker {
3434
  $redirect_url = $row->article_id;
3435
  }
3436
 
3437
- if ( $row->submit_text_type != 4 ) {
3438
  // This ensures that no message is enqueued by an add-on.
3439
  if ( !$_SESSION[ 'massage_after_submit' . $id ] ) {
3440
  $_SESSION[ 'massage_after_submit' . $id ] = $msg;
351
  (!empty( $form_theme[ 'GPFontSize' ] ) ? 'font-size:' . $form_theme[ 'GPFontSize' ] . 'px;' : '') .
352
  (!empty( $form_theme[ 'GPColor' ] ) ? 'color:' . $form_theme[ 'GPColor' ] . ';' : '') .
353
  '}';
354
+ if ( !empty( $form_theme[ 'GPAlign' ] ) ) {
355
+ if ( $form_theme[ 'GPAlign' ] == 'center' ) {
356
+ $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' { margin: 0 auto; }';
357
+ }
358
+ else {
359
+ $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' { float: ' . $form_theme['GPAlign'] . '; }';
360
+ }
 
361
  }
362
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .wdform_section {' .
363
  (!empty( $form_theme[ 'SEPMargin' ] ) ? 'margin:' . $form_theme[ 'SEPMargin' ] . ';' : '') .
602
  (!empty( $form_theme[ 'GPBGColor' ] ) ? 'background:' . $form_theme[ 'GPBGColor' ] . ';' : '') .
603
  (!empty( $form_theme[ 'GPFontFamily' ] ) ? 'font-family:' . $form_theme[ 'GPFontFamily' ] . ';' : '') .
604
  '}';
605
+ if ( !empty( $form_theme[ 'SEPBGColor' ] ) ) {
606
+ $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .wdform_section { background:' . $form_theme['SEPBGColor'] . '; }';
607
+ }
608
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form input[type="text"],
609
  .fm-form-container.fm-theme' . $theme_id . ' .fm-form .ui-corner-all,
610
  .fm-form-container.fm-theme' . $theme_id . ' .fm-form input[type="number"],
798
  (!empty( $form_theme[ 'SPBoxShadow' ] ) ? 'box-shadow:' . $form_theme[ 'SPBoxShadow' ] . ' !important;' : '') .
799
  ((isset( $form_theme[ 'SPBorderRadius' ] ) && $form_theme[ 'SPBorderRadius' ] !== '') ? 'border-radius:' . $form_theme[ 'SPBorderRadius' ] . 'px !important;' : '') .
800
  '}';
801
+ if ( !empty( $form_theme[ 'SPBorderType' ] ) && ($form_theme[ 'SPBorderType' ] == 'none' || $form_theme[ 'SPBorderType' ] == 'inherit' || $form_theme[ 'SPBorderType' ] == 'initial') ) {
802
+ $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .button-submit {' . 'border: ' . $form_theme['SPBorderType'] . '}';
803
+ }
804
  if ( !empty( $borders[ 'SP' ] ) ) {
805
  foreach ( $borders[ 'SP' ] as $border ) {
806
+ if ( !empty( $form_theme[ 'SPBorderType' ] ) && ($form_theme[ 'SPBorderType' ] == 'none' || $form_theme[ 'SPBorderType' ] == 'inherit' || $form_theme[ 'SPBorderType' ] == 'initial') ) {
807
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .button-submit {' .
808
  'border-' . $border . '-style:' . $form_theme[ 'SPBorderType' ] . ' !important;' .
809
  '}';
851
  ((isset( $form_theme[ 'BPBorderRadius' ] ) && $form_theme[ 'BPBorderRadius' ] !== '') ? 'border-radius:' . $form_theme[ 'BPBorderRadius' ] . 'px;' : '') .
852
  (!empty( $form_theme[ 'BPBoxShadow' ] ) ? 'box-shadow:' . $form_theme[ 'BPBoxShadow' ] . ' !important;' : '') .
853
  '}';
854
+ if ( !empty( $form_theme[ 'BPBorderType' ] ) && ($form_theme[ 'BPBorderType' ] == 'none' || $form_theme[ 'BPBorderType' ] == 'inherit' || $form_theme[ 'BPBorderType' ] == 'initial') ) {
855
+ $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .button-reset,
856
+ .fm-form-container.fm-theme' . $theme_id . ' .fm-form button:not(.button-submit) {' .
857
+ 'border: ' . $form_theme[ 'BPBorderType' ] . '; }';
858
+ }
859
  if ( !empty( $borders[ 'BP' ] ) ) {
860
  foreach ( $borders[ 'BP' ] as $border ) {
861
+ if ( !empty( $form_theme[ 'BPBorderType' ] ) && ($form_theme[ 'BPBorderType' ] == 'none' || $form_theme[ 'BPBorderType' ] == 'inherit' || $form_theme[ 'BPBorderType' ] == 'initial') ) {
862
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .button-reset,
863
+ .fm-form-container.fm-theme' . $theme_id . ' .fm-form button:not(.button-submit) {' .
864
  'border-' . $border . '-style:' . $form_theme[ 'BPBorderType' ] . ' !important;' .
865
  '}';
866
  break;
867
  } else {
868
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .button-reset,
869
+ .fm-form-container.fm-theme' . $theme_id . ' .fm-form butto:not(.button-submit)n {' .
870
  ((isset( $form_theme[ 'BPBorderWidth' ] ) && $form_theme[ 'BPBorderWidth' ] !== '') ? 'border-' . $border . ':' . $form_theme[ 'BPBorderWidth' ] . 'px !important;' : '') .
871
  (!empty( $form_theme[ 'BPBorderType' ] ) ? 'border-' . $border . '-style:' . $form_theme[ 'BPBorderType' ] . ' !important;' : '') .
872
  (!empty( $form_theme[ 'BPBorderColor' ] ) ? 'border-' . $border . '-color:' . $form_theme[ 'BPBorderColor' ] . ' !important;' : '') .
1003
  .fm-form-container.fm-theme' . $theme_id . ' .fm-form input[type="checkbox"] {' .
1004
  (!empty( $form_theme[ 'MCCPBackground' ] ) || !empty( $form_theme[ 'MCCPBGColor' ] ) ? 'display: none;' : '') .
1005
  '}';
1006
+ if ( !empty( $form_theme[ 'CUPCSS' ] ) ) {
1007
+ $css_content .= $form_theme['CUPCSS'];
1008
+ }
1009
  }
1010
+ if ( !empty( $form_theme[ 'CUPCSS' ] ) ) {
 
1011
  $form_theme_css = $form_theme[ 'CUPCSS' ];
1012
+ $pattern = '/\/\/(.+)(\r\n|\r|\n)/';
1013
  if ( strpos( $form_theme_css, ':checked + label' ) !== FALSE ) {
1014
  $form_theme_css .= '
1015
  .checkbox-div label span {
3229
  array_push( $attachment_user, $pdf_data['pdf_url'] );
3230
  }
3231
 
3232
+ if ( $row->sendemail && $row->send_to || (has_action('fm_set_params_frontend_init') && WDFMInstance(self::PLUGIN)->is_free != 2) ) {
3233
+ $body = $new_script;
3234
+ $send_tos = explode( '**', $row->send_to );
3235
+ $send_copy = isset( $_POST[ "wdform_send_copy_" . $id ] ) ? $_POST[ "wdform_send_copy_" . $id ] : NULL;
3236
+ if ( isset( $send_copy ) ) {
3237
+ $send = TRUE;
3238
+ }
3239
+ else {
3240
+ $mail_verification_post_id = (int)$wpdb->get_var( $wpdb->prepare( 'SELECT mail_verification_post_id FROM ' . $wpdb->prefix . 'formmaker WHERE id="%d"', $id ) );
3241
+ $verification_link = get_post( $mail_verification_post_id );
3242
+
3243
+ // Replace pdf link in email body.
3244
+ $body = str_replace( '{PDF(link)}', site_url($pdf_data['pdf_url']), $body );
3245
+
3246
+ foreach ( $send_tos as $index => $send_to ) {
3247
+ $send_to = str_replace( '*', '', $send_to );
3248
+ if ( $row->mail_verify && $verification_link !== NULL
3249
+ && (strpos( $new_script, "{verificationlink}" ) > -1 || strpos( $new_script, "%Verification link%" ) > -1) ) {
3250
+ $ver_link = $row->mail_mode_user ? "<a href =" . add_query_arg( array(
3251
+ 'gid' => $_SESSION[ 'gid' ],
3252
+ 'h' => $_SESSION[ 'hash' ][ $index ] . '@' . $send_to,
3253
+ ), get_post_permalink( $mail_verification_post_id ) ) . ">" . add_query_arg( array(
 
 
 
 
3254
  'gid' => $_SESSION[ 'gid' ],
3255
  'h' => $_SESSION[ 'hash' ][ $index ] . '@' . $send_to,
3256
+ ), get_post_permalink( $mail_verification_post_id ) ) . "</a><br/>" : add_query_arg( array(
3257
+ 'gid' => $_SESSION[ 'gid' ],
3258
+ 'h' => $_SESSION[ 'hash' ][ $index ] . '@' . $send_to,
3259
+ ), get_post_permalink( $mail_verification_post_id ) );
3260
+ $body = str_replace( array( '%Verification link%', '{verificationlink}' ), $ver_link, $new_script );
3261
+ }
3262
+ $recipient = isset( $_POST[ 'wdform_' . str_replace( '*', '', $send_to ) . "_element" . $id ] ) ? $_POST[ 'wdform_' . $send_to . "_element" . $id ] : NULL;
3263
+ if ( $recipient ) {
3264
+ if ( $row->mail_attachment_user ) {
3265
+ $remove_parrent_array_user = new RecursiveIteratorIterator( new RecursiveArrayIterator( $attachment_user ) );
3266
+ $attachment_user = iterator_to_array( $remove_parrent_array_user, FALSE );
3267
  }
3268
+ else {
3269
+ $attachment_user = array();
3270
+ }
3271
+ if ( $row->sendemail && $row->send_to ) {
3272
+ WDW_FM_Library(self::PLUGIN)->mail($recipient, $subject, $body, $header_arr, $attachment_user);
 
 
 
 
 
3273
  }
3274
  }
3275
  }
3277
  }
3278
 
3279
  // Admin part.
3280
+ if ( $row->sendemail || (has_action('fm_set_params_frontend_init') && WDFMInstance(self::PLUGIN)->is_free != 2) ) {
3281
  $recipient = $row->mail ? $row->mail : '';
3282
  $subject = !empty( $row->mail_subject ) ? $row->mail_subject : $row->title;
3283
 
3380
  // Replace pdf link in email body.
3381
  $admin_body = str_replace( '{PDF(link)}', site_url($pdf_data['pdf_url']), $admin_body );
3382
 
3383
+ if ( $row->sendemail ) {
3384
+ $send = WDW_FM_Library(self::PLUGIN)->mail($recipient, $subject, $admin_body, $header_arr, $attachment);
3385
+ }
3386
  }
3387
  $_SESSION[ 'error_or_no' . $id ] = 0;
3388
  $msg = addslashes( __( 'Your form was successfully submitted.', WDFMInstance(self::PLUGIN)->prefix ) );
3392
  if ( $send !== TRUE ) {
3393
  $_SESSION[ 'error_or_no' . $id ] = 1;
3394
  $msg = addslashes( __( 'Error, email was not sent.', WDFMInstance(self::PLUGIN)->prefix ) );
3395
+ }
3396
+ else {
3397
  $_SESSION[ 'error_or_no' . $id ] = 0;
 
3398
  }
3399
  }
3400
  }
3401
  }
3402
 
3403
+ // Add-on conditional email.
3404
+ if ( has_action('fm_set_params_frontend_init') && WDFMInstance(self::PLUGIN)->is_free != 2 ) {
3405
+ $fm_email_params = $row->sendemail ? array(
3406
+ 'admin_body' => $admin_body,
3407
+ 'body' => $body,
3408
+ 'subject' => $subject,
3409
+ 'headers' => $header_arr,
3410
+ 'attachment' => $attachment,
3411
+ 'attachment_user' => $attachment_user,
3412
+ ) : array();
3413
+ /* TODO. Need 'custom_fields_value' key. They work with it old conditional-emails.*/
3414
+ $custom_fields_value = array( $this->custom_fields['ip'], $this->custom_fields['useremail'], $this->custom_fields['username'], $this->custom_fields['subid'], $this->custom_fields['all'] );
3415
+ $params = array(
3416
+ 'form_id' => $id,
3417
+ 'fm_email_params' => $fm_email_params,
3418
+ 'form_currency' => $form_currency,
3419
+ 'custom_fields' => $this->custom_fields,
3420
+ 'custom_fields_value' => $custom_fields_value
3421
+ );
3422
+ do_action( 'fm_set_params_frontend_init', $params );
3423
+ }
3424
+
3425
+ // Delete files from uploads (save_upload = 0).
 
3426
  if ( $row->save_uploads == 0 ) {
3427
  foreach ( $all_files as &$all_file ) {
3428
  if ( file_exists( $all_file[ 'tmp_name' ] ) ) {
3435
 
3436
  $https = ((isset( $_SERVER[ 'HTTPS' ] ) && $_SERVER[ 'HTTPS' ] == 'on') ? 'https://' : 'http://');
3437
  $redirect_url = $https . $_SERVER[ "HTTP_HOST" ] . $_SERVER[ "REQUEST_URI" ];
3438
+ if ( $row->submit_text_type == 4 && $row->url ) {
3439
  // Action after submission: URL.
3440
  $redirect_url = $row->url;
3441
  }
3444
  $redirect_url = $row->article_id;
3445
  }
3446
 
3447
+ if ( $row->submit_text_type != 4 || $row->url == '' ) {
3448
  // This ensures that no message is enqueued by an add-on.
3449
  if ( !$_SESSION[ 'massage_after_submit' . $id ] ) {
3450
  $_SESSION[ 'massage_after_submit' . $id ] = $msg;
frontend/views/form_maker.php CHANGED
@@ -1535,7 +1535,8 @@ class FMViewForm_maker {
1535
 
1536
  $rep = '';
1537
  if ($row->gdpr_checkbox && $row->gdpr_checkbox_text) {
1538
- $privacy_policy_link = ' <a href="' . WDW_FM_Library(self::PLUGIN)->get_privacy_policy_url() . '" target="_blank">' . __('Privacy Policy', BWG()->prefix) . '</a>';
 
1539
  $row->gdpr_checkbox_text = str_replace('{{privacy_policy}}', $privacy_policy_link, $row->gdpr_checkbox_text);
1540
  $gdpr_checkbox_html = '<label for="fm_privacy_policy' . $form_id . '" class="wdform-label">
1541
  <input id="fm_privacy_policy' . $form_id . '" name="fm_privacy_policy' . $form_id . '" class="wd-flex-row fm-gdpr-checkbox" onclick="' . ($disabled_submit ? '' : 'fm_privacy_policy_check(this)') . '" type="checkbox" value="1">'
@@ -3359,6 +3360,20 @@ class FMViewForm_maker {
3359
  'w_class',
3360
  );
3361
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3362
  foreach ( $params_names as $params_name ) {
3363
  $temp = explode('*:*' . $params_name . '*:*', $temp);
3364
  $param[$params_name] = $temp[0];
1535
 
1536
  $rep = '';
1537
  if ($row->gdpr_checkbox && $row->gdpr_checkbox_text) {
1538
+ $privacy_policy_page = WDW_FM_Library(self::PLUGIN)->get_privacy_policy_url();
1539
+ $privacy_policy_link = ' <a href="' . $privacy_policy_page['url'] . '" target="_blank">' . $privacy_policy_page['title'] . '</a>';
1540
  $row->gdpr_checkbox_text = str_replace('{{privacy_policy}}', $privacy_policy_link, $row->gdpr_checkbox_text);
1541
  $gdpr_checkbox_html = '<label for="fm_privacy_policy' . $form_id . '" class="wdform-label">
1542
  <input id="fm_privacy_policy' . $form_id . '" name="fm_privacy_policy' . $form_id . '" class="wd-flex-row fm-gdpr-checkbox" onclick="' . ($disabled_submit ? '' : 'fm_privacy_policy_check(this)') . '" type="checkbox" value="1">'
3360
  'w_class',
3361
  );
3362
  }
3363
+ if ( strpos($temp, 'w_field_step') > -1 ) {
3364
+ $params_names = array(
3365
+ 'w_field_label_size',
3366
+ 'w_field_label_pos',
3367
+ 'w_hide_label',
3368
+ 'w_field_width',
3369
+ 'w_field_min_value',
3370
+ 'w_field_max_value',
3371
+ 'w_field_step',
3372
+ 'w_field_value',
3373
+ 'w_required',
3374
+ 'w_class',
3375
+ );
3376
+ }
3377
  foreach ( $params_names as $params_name ) {
3378
  $temp = explode('*:*' . $params_name . '*:*', $temp);
3379
  $param[$params_name] = $temp[0];
js/add_field.js CHANGED
@@ -928,12 +928,13 @@ function edit(id) {
928
  w_hide_label = document.getElementById(id + "_hide_labelform_id_temp").value;
929
  w_field_min_value = document.getElementById(id + "_slider_min_valueform_id_temp").value;
930
  w_field_max_value = document.getElementById(id + "_slider_max_valueform_id_temp").value;
 
931
  w_field_width = document.getElementById(id + "_slider_widthform_id_temp").value;
932
  w_field_value = document.getElementById(id + "_slider_valueform_id_temp").value;
933
  atrs = return_attributes(id + '_elementform_id_temp');
934
  w_attr_name = atrs[0];
935
  w_attr_value = atrs[1];
936
- type_slider(id, w_field_label, w_field_label_size, w_field_label_pos, w_hide_label, w_field_width, w_field_min_value, w_field_max_value, w_field_value, w_required, w_class, w_attr_name, w_attr_value);
937
  break;
938
  }
939
  case 'type_range': {
@@ -12098,6 +12099,18 @@ function change_slider_max_value(a, id, form_id) {
12098
  }
12099
  }
12100
 
 
 
 
 
 
 
 
 
 
 
 
 
12101
  function create_slider_width(i, w_field_width) {
12102
  var label = jQuery('<label class="fm-field-label" for="edit_for_slider_width">Width(px)</label>');
12103
  var input = jQuery('<input class="fm-width-100" type="text" id="edit_for_slider_width" onKeyPress="return check_isnum(event)" onKeyUp="change_slider_width(this.value,' + i + ',\'form_id_temp\')" value="' + w_field_width + '" /><p class="description">' + form_maker.leave_empty + '</p>');
@@ -12113,10 +12126,10 @@ function change_slider_width(a, id, form_id) {
12113
  function go_to_type_slider(new_id) {
12114
  w_attr_name = [];
12115
  w_attr_value = [];
12116
- type_slider(new_id, 'Slider', '', 'top', 'no', '', '0', '100', '0', 'no', '', w_attr_name, w_attr_value);
12117
  }
12118
 
12119
- function type_slider(i, w_field_label, w_field_label_size, w_field_label_pos, w_hide_label, w_field_width, w_field_min_value, w_field_max_value, w_field_value, w_required, w_class, w_attr_name, w_attr_value) {
12120
  jQuery("#element_type").val("type_slider");
12121
  delete_last_child();
12122
 
@@ -12132,6 +12145,7 @@ function type_slider(i, w_field_label, w_field_label_size, w_field_label_pos, w_
12132
  edit_main_table.append(create_required(i, w_required));
12133
  edit_main_table.append(create_slider_minvalue(i, w_field_min_value));
12134
  edit_main_table.append(create_slider_maxvalue(i, w_field_max_value));
 
12135
  edit_main_table.append(create_slider_width(i, w_field_width));
12136
 
12137
  var advanced_options_container = jQuery('<div class="inside"></div>');
@@ -12170,6 +12184,12 @@ function type_slider(i, w_field_label, w_field_label_size, w_field_label_pos, w_
12170
  adding_slider_max_value.setAttribute("id", i + "_slider_max_valueform_id_temp");
12171
  adding_slider_max_value.setAttribute("name", i + "_slider_max_valueform_id_temp");
12172
 
 
 
 
 
 
 
12173
  var adding_slider_value = document.createElement("input");
12174
  adding_slider_value.setAttribute("type", "hidden");
12175
  adding_slider_value.setAttribute("value", w_field_value);
@@ -12253,6 +12273,7 @@ function type_slider(i, w_field_label, w_field_label_size, w_field_label_pos, w_
12253
  div_element.appendChild(adding_slider_width);
12254
  div_element.appendChild(adding_slider_min_value);
12255
  div_element.appendChild(adding_slider_max_value);
 
12256
  div_element.appendChild(adding_slider_value);
12257
 
12258
  var slider_min = document.createElement('span');
@@ -12303,6 +12324,7 @@ function type_slider(i, w_field_label, w_field_label_size, w_field_label_pos, w_
12303
 
12304
  jQuery(function () {
12305
  jQuery("#" + i + "_elementform_id_temp").slider({
 
12306
  range: "min",
12307
  value: eval(w_field_value),
12308
  min: eval(w_field_min_value),
@@ -15729,6 +15751,7 @@ function gen_form_fields() {
15729
  w_hide_label = document.getElementById(id + "_hide_labelform_id_temp").value;
15730
  w_field_min_value = document.getElementById(id + "_slider_min_valueform_id_temp").value;
15731
  w_field_max_value = document.getElementById(id + "_slider_max_valueform_id_temp").value;
 
15732
  w_field_width = document.getElementById(id + "_slider_widthform_id_temp").value;
15733
  w_field_value = document.getElementById(id + "_slider_valueform_id_temp").value;
15734
 
@@ -15743,6 +15766,7 @@ function gen_form_fields() {
15743
  form_fields += w_field_width + "*:*w_field_width*:*";
15744
  form_fields += w_field_min_value + "*:*w_field_min_value*:*";
15745
  form_fields += w_field_max_value + "*:*w_field_max_value*:*";
 
15746
  form_fields += w_field_value + "*:*w_field_value*:*";
15747
  form_fields += w_required + "*:*w_required*:*";
15748
  form_fields += w_class + "*:*w_class*:*";
928
  w_hide_label = document.getElementById(id + "_hide_labelform_id_temp").value;
929
  w_field_min_value = document.getElementById(id + "_slider_min_valueform_id_temp").value;
930
  w_field_max_value = document.getElementById(id + "_slider_max_valueform_id_temp").value;
931
+ w_field_step = document.getElementById(id + "_slider_stepform_id_temp") && document.getElementById(id + "_slider_stepform_id_temp").value ? document.getElementById(id + "_slider_stepform_id_temp").value : 1;
932
  w_field_width = document.getElementById(id + "_slider_widthform_id_temp").value;
933
  w_field_value = document.getElementById(id + "_slider_valueform_id_temp").value;
934
  atrs = return_attributes(id + '_elementform_id_temp');
935
  w_attr_name = atrs[0];
936
  w_attr_value = atrs[1];
937
+ type_slider(id, w_field_label, w_field_label_size, w_field_label_pos, w_hide_label, w_field_width, w_field_min_value, w_field_max_value, w_field_step, w_field_value, w_required, w_class, w_attr_name, w_attr_value);
938
  break;
939
  }
940
  case 'type_range': {
12099
  }
12100
  }
12101
 
12102
+ function create_slider_step(i, w_field_slider_step) {
12103
+ var label = jQuery('<label class="fm-field-label" for="edit_for_slider_step">Step</label>');
12104
+ var input = jQuery('<input class="fm-width-100" type="text" id="edit_for_slider_step" onKeyPress="return check_isnum(event)" onChange="change_slider_step(this.value, ' + i + ', \'form_id_temp\')" value="' + w_field_slider_step + '" />');
12105
+
12106
+ return create_option_container(label, input);
12107
+ }
12108
+
12109
+ function change_slider_step(a, id, form_id) {
12110
+ jQuery("#" + id + "_elementform_id_temp").slider({step: eval(a)});
12111
+ document.getElementById(id + "_slider_stepform_id_temp").value = a;
12112
+ }
12113
+
12114
  function create_slider_width(i, w_field_width) {
12115
  var label = jQuery('<label class="fm-field-label" for="edit_for_slider_width">Width(px)</label>');
12116
  var input = jQuery('<input class="fm-width-100" type="text" id="edit_for_slider_width" onKeyPress="return check_isnum(event)" onKeyUp="change_slider_width(this.value,' + i + ',\'form_id_temp\')" value="' + w_field_width + '" /><p class="description">' + form_maker.leave_empty + '</p>');
12126
  function go_to_type_slider(new_id) {
12127
  w_attr_name = [];
12128
  w_attr_value = [];
12129
+ type_slider(new_id, 'Slider', '', 'top', 'no', '', '0', '100', '1', '0', 'no', '', w_attr_name, w_attr_value);
12130
  }
12131
 
12132
+ function type_slider(i, w_field_label, w_field_label_size, w_field_label_pos, w_hide_label, w_field_width, w_field_min_value, w_field_max_value, w_field_step, w_field_value, w_required, w_class, w_attr_name, w_attr_value) {
12133
  jQuery("#element_type").val("type_slider");
12134
  delete_last_child();
12135
 
12145
  edit_main_table.append(create_required(i, w_required));
12146
  edit_main_table.append(create_slider_minvalue(i, w_field_min_value));
12147
  edit_main_table.append(create_slider_maxvalue(i, w_field_max_value));
12148
+ edit_main_table.append(create_slider_step(i, w_field_step));
12149
  edit_main_table.append(create_slider_width(i, w_field_width));
12150
 
12151
  var advanced_options_container = jQuery('<div class="inside"></div>');
12184
  adding_slider_max_value.setAttribute("id", i + "_slider_max_valueform_id_temp");
12185
  adding_slider_max_value.setAttribute("name", i + "_slider_max_valueform_id_temp");
12186
 
12187
+ var adding_slider_step = document.createElement("input");
12188
+ adding_slider_step.setAttribute("type", "hidden");
12189
+ adding_slider_step.setAttribute("value", w_field_step);
12190
+ adding_slider_step.setAttribute("id", i + "_slider_stepform_id_temp");
12191
+ adding_slider_step.setAttribute("name", i + "_slider_stepform_id_temp");
12192
+
12193
  var adding_slider_value = document.createElement("input");
12194
  adding_slider_value.setAttribute("type", "hidden");
12195
  adding_slider_value.setAttribute("value", w_field_value);
12273
  div_element.appendChild(adding_slider_width);
12274
  div_element.appendChild(adding_slider_min_value);
12275
  div_element.appendChild(adding_slider_max_value);
12276
+ div_element.appendChild(adding_slider_step);
12277
  div_element.appendChild(adding_slider_value);
12278
 
12279
  var slider_min = document.createElement('span');
12324
 
12325
  jQuery(function () {
12326
  jQuery("#" + i + "_elementform_id_temp").slider({
12327
+ step: eval(w_field_step),
12328
  range: "min",
12329
  value: eval(w_field_value),
12330
  min: eval(w_field_min_value),
15751
  w_hide_label = document.getElementById(id + "_hide_labelform_id_temp").value;
15752
  w_field_min_value = document.getElementById(id + "_slider_min_valueform_id_temp").value;
15753
  w_field_max_value = document.getElementById(id + "_slider_max_valueform_id_temp").value;
15754
+ w_field_step = document.getElementById(id + "_slider_stepform_id_temp") && document.getElementById(id + "_slider_stepform_id_temp").value ? document.getElementById(id + "_slider_stepform_id_temp").value : 1;
15755
  w_field_width = document.getElementById(id + "_slider_widthform_id_temp").value;
15756
  w_field_value = document.getElementById(id + "_slider_valueform_id_temp").value;
15757
 
15766
  form_fields += w_field_width + "*:*w_field_width*:*";
15767
  form_fields += w_field_min_value + "*:*w_field_min_value*:*";
15768
  form_fields += w_field_max_value + "*:*w_field_max_value*:*";
15769
+ form_fields += w_field_step + "*:*w_field_step*:*";
15770
  form_fields += w_field_value + "*:*w_field_value*:*";
15771
  form_fields += w_required + "*:*w_required*:*";
15772
  form_fields += w_class + "*:*w_class*:*";
js/form_maker_admin.js CHANGED
@@ -339,7 +339,7 @@ function fm_form_submit(event, form_id, task, id) {
339
  // Check if required field is empty.
340
  function fm_check_required(id, name) {
341
  if (jQuery('#' + id).val() == '') {
342
- alert(name + '* field is required.');
343
  jQuery('#' + id).attr('style', 'border-color: #FF0000; border-style: solid; border-width: 1px;');
344
  jQuery('#' + id).focus();
345
  jQuery('html, body').animate({
339
  // Check if required field is empty.
340
  function fm_check_required(id, name) {
341
  if (jQuery('#' + id).val() == '') {
342
+ alert(name + ' field is required.');
343
  jQuery('#' + id).attr('style', 'border-color: #FF0000; border-style: solid; border-width: 1px;');
344
  jQuery('#' + id).focus();
345
  jQuery('html, body').animate({
js/formmaker_div.js CHANGED
@@ -4178,13 +4178,14 @@ function duplicate(id) {
4178
  w_hide_label=document.getElementById(id+"_hide_labelform_id_temp").value;
4179
  w_field_min_value = document.getElementById(id+"_slider_min_valueform_id_temp").value;
4180
  w_field_max_value = document.getElementById(id+"_slider_max_valueform_id_temp").value;
 
4181
  w_field_width = document.getElementById(id+"_slider_widthform_id_temp").value;
4182
  w_field_value = document.getElementById(id+"_slider_valueform_id_temp").value;
4183
 
4184
  atrs=return_attributes(id+'_elementform_id_temp');
4185
  w_attr_name=atrs[0];
4186
  w_attr_value=atrs[1];
4187
- type_slider(gen, w_field_label, w_field_label_size, w_field_label_pos, w_hide_label, w_field_width, w_field_min_value, w_field_max_value, w_field_value, w_required, w_class, w_attr_name, w_attr_value); break;
4188
  }
4189
 
4190
  case 'type_range':
4178
  w_hide_label=document.getElementById(id+"_hide_labelform_id_temp").value;
4179
  w_field_min_value = document.getElementById(id+"_slider_min_valueform_id_temp").value;
4180
  w_field_max_value = document.getElementById(id+"_slider_max_valueform_id_temp").value;
4181
+ w_field_step = document.getElementById(id + "_slider_stepform_id_temp") && document.getElementById(id + "_slider_stepform_id_temp").value ? document.getElementById(id + "_slider_stepform_id_temp").value : 1;
4182
  w_field_width = document.getElementById(id+"_slider_widthform_id_temp").value;
4183
  w_field_value = document.getElementById(id+"_slider_valueform_id_temp").value;
4184
 
4185
  atrs=return_attributes(id+'_elementform_id_temp');
4186
  w_attr_name=atrs[0];
4187
  w_attr_value=atrs[1];
4188
+ type_slider(gen, w_field_label, w_field_label_size, w_field_label_pos, w_hide_label, w_field_width, w_field_min_value, w_field_max_value, w_field_step, w_field_value, w_required, w_class, w_attr_name, w_attr_value); break;
4189
  }
4190
 
4191
  case 'type_range':
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: webdorado,10web,wdsupport,formmakersupport
3
  Tags: form, forms, form builder, contact form, feedback, custom form, contact, web contact form, captcha, email, form manager, survey
4
  Requires at least: 4.6
5
  Tested up to: 4.9
6
- Stable tag: 1.12.37
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -23,9 +23,6 @@ https://www.youtube.com/watch?v=tN3_c6MhqFk
23
  [User Guide](https://web-dorado.com/wordpress-form-maker-guide-1.html)
24
  [Frequently Asked Questions](https://web-dorado.com/blog/wordpress-themes-and-plugins/wordpress-form-maker-plugin-faq/)
25
 
26
-
27
-
28
-
29
  Form Maker is a power-packed yet user-friendly form builder plugin. With an intuitive drag and drop interface, this plugin is the ultimate solution to help you create responsive WordPress Forms easily and in a timely manner. Add modern and functional questionnaires to your website with a few clicks. Using the plugin you can create forms for pretty much any purpose, from simple contact form to multi-page application, registration survey and questionnaire with conditional fields, captcha protection, multiple choice questions and more. It will take you just a few clicks to create them and a couple of minutes to customize with the available themes, styling and display options. This plugin can be a good addition to any website, so go ahead and give it a try.
30
 
31
  **Benefits**
@@ -72,15 +69,15 @@ The plugin comes with 5 pre-built templates, which you can use as they are or cu
72
  Form Maker supports 12 premium add-ons to power up your forms even further. Whether you want to integrate them with Mailchimp service, send out conditional emails, or give your visitors an additional payment method like Stripe. Find the full list of add-ons bellow.
73
 
74
  * [Export/Import](https://web-dorado.com/products/wordpress-form/add-ons/export-import.html)
75
- * [PDF Integration](https://web-dorado.com/products/wordpress-form/add-ons/pdf.html)
76
  * [Save Progress](https://web-dorado.com/products/wordpress-form/add-ons/save-progress.html)
 
77
  * [Stripe Integration](https://web-dorado.com/products/wordpress-form/add-ons/stripe.html)
78
- * [Conditional Emails](https://web-dorado.com/products/wordpress-form/add-ons/conditional-emails.html)
79
  * [WordPress Registration](https://web-dorado.com/products/wordpress-form/add-ons/registration.html)
80
  * [Post Generation](https://web-dorado.com/products/wordpress-form/add-ons/post-generation.html)
81
- * [Mailchimp Integration](https://web-dorado.com/products/wordpress-form/add-ons/mailchimp.html)
82
  * [Dropbox Integration](https://web-dorado.com/products/wordpress-form/add-ons/dropbox.html)
83
  * [Google Drive Integration](https://web-dorado.com/products/wordpress-form/add-ons/google-drive.html)
 
84
  * [Pushover Integration](https://web-dorado.com/products/wordpress-form/add-ons/pushover.html)
85
  * [Calculator](https://web-dorado.com/products/wordpress-form/add-ons/calculator.html)
86
 
@@ -97,10 +94,10 @@ With conditional fields option you can set to hide/show specific fields based on
97
  **[Premium version adds](https://web-dorado.com/products/wordpress-form.html)**
98
 
99
  * Unlimited fields in one form
100
- * File Upload field
101
  * PayPal Integration
102
  * Stripe Integration with add on
103
- * Google Maps API Integration
104
  * Front-End Submissions
105
 
106
 
@@ -452,6 +449,14 @@ Where **{{field_id}}** is the ID of the field you wish to prefill. Also, **{{par
452
 
453
  == Changelog ==
454
 
 
 
 
 
 
 
 
 
455
  = 1.12.37 =
456
  * Fixed: Compatibility with PHP version 5.3.
457
 
3
  Tags: form, forms, form builder, contact form, feedback, custom form, contact, web contact form, captcha, email, form manager, survey
4
  Requires at least: 4.6
5
  Tested up to: 4.9
6
+ Stable tag: 1.12.38
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
23
  [User Guide](https://web-dorado.com/wordpress-form-maker-guide-1.html)
24
  [Frequently Asked Questions](https://web-dorado.com/blog/wordpress-themes-and-plugins/wordpress-form-maker-plugin-faq/)
25
 
 
 
 
26
  Form Maker is a power-packed yet user-friendly form builder plugin. With an intuitive drag and drop interface, this plugin is the ultimate solution to help you create responsive WordPress Forms easily and in a timely manner. Add modern and functional questionnaires to your website with a few clicks. Using the plugin you can create forms for pretty much any purpose, from simple contact form to multi-page application, registration survey and questionnaire with conditional fields, captcha protection, multiple choice questions and more. It will take you just a few clicks to create them and a couple of minutes to customize with the available themes, styling and display options. This plugin can be a good addition to any website, so go ahead and give it a try.
27
 
28
  **Benefits**
69
  Form Maker supports 12 premium add-ons to power up your forms even further. Whether you want to integrate them with Mailchimp service, send out conditional emails, or give your visitors an additional payment method like Stripe. Find the full list of add-ons bellow.
70
 
71
  * [Export/Import](https://web-dorado.com/products/wordpress-form/add-ons/export-import.html)
72
+ * [Conditional Emails](https://web-dorado.com/products/wordpress-form/add-ons/conditional-emails.html)
73
  * [Save Progress](https://web-dorado.com/products/wordpress-form/add-ons/save-progress.html)
74
+ * [PDF Integration](https://web-dorado.com/products/wordpress-form/add-ons/pdf.html)
75
  * [Stripe Integration](https://web-dorado.com/products/wordpress-form/add-ons/stripe.html)
 
76
  * [WordPress Registration](https://web-dorado.com/products/wordpress-form/add-ons/registration.html)
77
  * [Post Generation](https://web-dorado.com/products/wordpress-form/add-ons/post-generation.html)
 
78
  * [Dropbox Integration](https://web-dorado.com/products/wordpress-form/add-ons/dropbox.html)
79
  * [Google Drive Integration](https://web-dorado.com/products/wordpress-form/add-ons/google-drive.html)
80
+ * [Mailchimp Integration](https://web-dorado.com/products/wordpress-form/add-ons/mailchimp.html)
81
  * [Pushover Integration](https://web-dorado.com/products/wordpress-form/add-ons/pushover.html)
82
  * [Calculator](https://web-dorado.com/products/wordpress-form/add-ons/calculator.html)
83
 
94
  **[Premium version adds](https://web-dorado.com/products/wordpress-form.html)**
95
 
96
  * Unlimited fields in one form
97
+ * Google Maps API Integration
98
  * PayPal Integration
99
  * Stripe Integration with add on
100
+ * File Upload field
101
  * Front-End Submissions
102
 
103
 
449
 
450
  == Changelog ==
451
 
452
+ = 1.12.38 =
453
+ * Improved: GDPR compliance options.
454
+ * Added: Step option for slider field.
455
+ * Fixed: Error on form front end when Privacy Policy checkbox is enabled.
456
+ * Fixed: Bug on Actions after submission when Redirect to URL option is empty.
457
+ * Fixed: Notice on form submit.
458
+ * Fixed: Minor issues on Themes.
459
+
460
  = 1.12.37 =
461
  * Fixed: Compatibility with PHP version 5.3.
462