Contact Form by WD – responsive drag & drop contact form builder tool - Version 1.12.16

Version Description

  • Improved: Email functionality.
  • Fixed: Multiple choice and single choice with long labels.
  • Fixed: Submissions CSV export with UTF-8 encoding.
  • Fixed: Form preview for not embedded forms.
Download this release

Release Info

Developer webdorado
Plugin Icon 128x128 Contact Form by WD – responsive drag & drop contact form builder tool
Version 1.12.16
Comparing to
See all releases

Code changes from version 1.12.15 to 1.12.16

admin/controllers/Checkpaypal.php CHANGED
@@ -161,15 +161,19 @@ class FMControllerCheckpaypal {
161
  }
162
  // Get form session by group id.
163
  $form_session = $this->model->get_form_session_by_group_id($group_id);
164
- // Send mail to payer
165
- if ( $form->mail && !empty($form_session) ) {
166
- $to = $form->mail;
167
- $subject = "Payment information";
168
- // Get template for payment information.
169
- $template_params = array( 'form_session' => $form_session, 'data' => $post );
170
- $message = $this->view->payment_information_template($template_params);
171
- add_filter('wp_mail_content_type', create_function('', 'return "text/html";'));
172
- wp_mail($to, $subject, $message);
 
 
 
 
173
  }
174
 
175
  return 0;
161
  }
162
  // Get form session by group id.
163
  $form_session = $this->model->get_form_session_by_group_id($group_id);
164
+ // Send mail to payer.
165
+ if ( !empty($form_session) ) {
166
+ $recipient = $form->mail ? $form->mail : '';
167
+ if ( $recipient ) {
168
+ $subject = __("Payment information", WDCFM()->prefix);
169
+ // Get template for payment information.
170
+ $template_params = array( 'form_session' => $form_session, 'data' => $post );
171
+ $message = $this->view->payment_information_template($template_params);
172
+ $header_arr = array();
173
+ $header_arr['content_type'] = "text/html";
174
+ $header_arr['charset'] = 'charset=UTF-8';
175
+ WDW_FMC_Library::mail($recipient, $subject, $message, $header_arr);
176
+ }
177
  }
178
 
179
  return 0;
admin/controllers/Generete_csv.php CHANGED
@@ -60,9 +60,13 @@ class FMControllerGenerete_csv_fmc {
60
  $txtfilecontent = fread($txtfile, filesize($tempfile));
61
  fclose($txtfile);
62
  $filename = $title . "_" . date('Ymd') . ".csv";
63
- header('Content-Encoding: Windows-1252');
64
- header('Content-type: text/csv; charset=Windows-1252');
 
 
65
  header("Content-Disposition: attachment; filename=\"$filename\"");
 
 
66
  echo $txtfilecontent;
67
  unlink($tempfile);
68
  }
60
  $txtfilecontent = fread($txtfile, filesize($tempfile));
61
  fclose($txtfile);
62
  $filename = $title . "_" . date('Ymd') . ".csv";
63
+ header('Content-Encoding: UTF-8');
64
+ header('content-type: application/csv; charset=UTF-8');
65
+ // header('Content-Encoding: Windows-1252');
66
+ // header('Content-type: text/csv; charset=Windows-1252');
67
  header("Content-Disposition: attachment; filename=\"$filename\"");
68
+ // Set UTF-8 BOM.
69
+ echo "\xEF\xBB\xBF";
70
  echo $txtfilecontent;
71
  unlink($tempfile);
72
  }
admin/controllers/Manage_fm.php CHANGED
@@ -124,7 +124,7 @@ class FMControllerManage_fmc {
124
 
125
  $params['actions'] = $this->actions;
126
  $params['page'] = $this->page;
127
- $params['form_preview_link'] = $this->model->get_form_preview_post();
128
 
129
  $this->view->display($params);
130
  }
@@ -312,12 +312,12 @@ class FMControllerManage_fmc {
312
  $params['id'] = $backup_id;
313
  $params['row'] = $this->model->get_row_data_new($backup_id);
314
  $params['page_url'] = $this->page_url;
315
- // Check if Stripe add-on is active.
316
- $stripe_addon = array('enable' => 0);
317
- $addon_stripe = $this->get_stripe_addon(0);
318
- if( !empty($addon_stripe['html']) ) {
319
- $stripe_addon = $addon_stripe;
320
- }
321
  $params['stripe_addon'] = $stripe_addon;
322
 
323
  $params['themes'] = $this->model->get_theme_rows_data();
@@ -377,10 +377,10 @@ class FMControllerManage_fmc {
377
 
378
  $params = array();
379
  $params['id'] = $id;
380
- $params['row'] = $this->model->get_row_data_new($backup_id);
381
- if ( empty($params['row']) ) {
382
- WDW_FMC_Library::fm_redirect( add_query_arg( array('page' => $this->page, 'task' => 'display'), admin_url('admin.php') ) );
383
- }
384
 
385
  // Check stripe add-on is active.
386
  $stripe_addon = array( 'enable' => 0 );
@@ -646,6 +646,9 @@ function before_reset() {
646
  $reply_to = stripslashes(WDW_FMC_Library::get('reply_to_other', ''));
647
  }
648
  $script_mail = WDW_FMC_Library::get('script_mail', '%all%', FALSE);
 
 
 
649
  $mail_from_user = WDW_FMC_Library::get('mail_from_user', '');
650
  $mail_from_name_user = WDW_FMC_Library::get('mail_from_name_user', '');
651
  $reply_to_user = WDW_FMC_Library::get('reply_to_user', '');
@@ -661,6 +664,9 @@ function before_reset() {
661
  $mail_attachment = WDW_FMC_Library::get('mail_attachment', '');
662
  $mail_attachment_user = WDW_FMC_Library::get('mail_attachment_user', '');
663
  $script_mail_user = WDW_FMC_Library::get('script_mail_user', '%all%', FALSE);
 
 
 
664
  $submit_text = WDW_FMC_Library::get('submit_text', '', FALSE);
665
  $url = WDW_FMC_Library::get('url', '');
666
  $tax = WDW_FMC_Library::get('tax', 0);
@@ -752,7 +758,7 @@ function before_reset() {
752
  'payment_currency' => $payment_currency,
753
  'paypal_email' => $paypal_email,
754
  'checkout_mode' => $checkout_mode,
755
- 'paypal_mode' => $paypal_mode,
756
  'javascript' => $javascript,
757
  'user_id_wd' => $user_id_wd,
758
  'send_to' => $send_to,
124
 
125
  $params['actions'] = $this->actions;
126
  $params['page'] = $this->page;
127
+ $params['form_preview_link'] = $this->model->get_form_preview_post();
128
 
129
  $this->view->display($params);
130
  }
312
  $params['id'] = $backup_id;
313
  $params['row'] = $this->model->get_row_data_new($backup_id);
314
  $params['page_url'] = $this->page_url;
315
+ // Check if Stripe add-on is active.
316
+ $stripe_addon = array('enable' => 0);
317
+ $addon_stripe = $this->get_stripe_addon(0);
318
+ if( !empty($addon_stripe['html']) ) {
319
+ $stripe_addon = $addon_stripe;
320
+ }
321
  $params['stripe_addon'] = $stripe_addon;
322
 
323
  $params['themes'] = $this->model->get_theme_rows_data();
377
 
378
  $params = array();
379
  $params['id'] = $id;
380
+ $params['row'] = $this->model->get_row_data_new($backup_id);
381
+ if ( empty($params['row']) ) {
382
+ WDW_FMC_Library::fm_redirect( add_query_arg( array('page' => $this->page, 'task' => 'display'), admin_url('admin.php') ) );
383
+ }
384
 
385
  // Check stripe add-on is active.
386
  $stripe_addon = array( 'enable' => 0 );
646
  $reply_to = stripslashes(WDW_FMC_Library::get('reply_to_other', ''));
647
  }
648
  $script_mail = WDW_FMC_Library::get('script_mail', '%all%', FALSE);
649
+ if ( $script_mail == '' ) {
650
+ $script_mail = '%all%';
651
+ }
652
  $mail_from_user = WDW_FMC_Library::get('mail_from_user', '');
653
  $mail_from_name_user = WDW_FMC_Library::get('mail_from_name_user', '');
654
  $reply_to_user = WDW_FMC_Library::get('reply_to_user', '');
664
  $mail_attachment = WDW_FMC_Library::get('mail_attachment', '');
665
  $mail_attachment_user = WDW_FMC_Library::get('mail_attachment_user', '');
666
  $script_mail_user = WDW_FMC_Library::get('script_mail_user', '%all%', FALSE);
667
+ if ( $script_mail_user == '' ) {
668
+ $script_mail_user = '%all%';
669
+ }
670
  $submit_text = WDW_FMC_Library::get('submit_text', '', FALSE);
671
  $url = WDW_FMC_Library::get('url', '');
672
  $tax = WDW_FMC_Library::get('tax', 0);
758
  'payment_currency' => $payment_currency,
759
  'paypal_email' => $paypal_email,
760
  'checkout_mode' => $checkout_mode,
761
+ 'paypal_mode' => $paypal_mode,
762
  'javascript' => $javascript,
763
  'user_id_wd' => $user_id_wd,
764
  'send_to' => $send_to,
admin/views/Manage_fm.php CHANGED
@@ -228,7 +228,12 @@ class FMViewManage_fmc extends FMAdminView_fmc {
228
  wp_enqueue_script('jquery-ui-slider');
229
  wp_enqueue_script('jquery-ui-spinner');
230
  wp_enqueue_script('jquery-ui-datepicker');
231
- wp_add_inline_script('jquery-ui-datepicker', WDW_FMC_Library::localize_ui_datepicker());
 
 
 
 
 
232
  wp_enqueue_media();
233
  wp_enqueue_script('google-maps');
234
  wp_enqueue_script('fm-gmap_form');
@@ -666,7 +671,12 @@ class FMViewManage_fmc extends FMAdminView_fmc {
666
  wp_enqueue_script('jquery-ui-slider');
667
  wp_enqueue_script('jquery-ui-spinner');
668
  wp_enqueue_script('jquery-ui-datepicker');
669
- wp_add_inline_script('jquery-ui-datepicker', WDW_FMC_Library::localize_ui_datepicker());
 
 
 
 
 
670
  wp_enqueue_media();
671
  wp_enqueue_script('google-maps');
672
  wp_enqueue_script('fm-form-options');
@@ -922,7 +932,6 @@ $stats_labels = $params['stats_labels'];
922
  </div>
923
  </div>
924
  </div>
925
-
926
  <div id="emailTab_fieldset" class="adminform fm_fieldset_deactive js">
927
  <div class="wd-table">
928
  <div class="wd-table-col wd-table-col-100">
@@ -934,13 +943,15 @@ $stats_labels = $params['stats_labels'];
934
  <label class="wd-label-radio" for="fm_sendemail-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
935
  <input type="radio" name="sendemail" <?php echo $row->sendemail == 0 ? 'checked="checked"' : '' ?> id="fm_sendemail-0" class="wd-radio" value="0" onchange="fm_toggle_email_options(false)" />
936
  <label class="wd-label-radio" for="fm_sendemail-0"><?php _e('No', WDCFM()->prefix); ?></label>
 
 
937
  </div>
938
  </div>
939
  </div>
940
  </div>
941
  </div>
942
  <div class="fm-clear"></div>
943
- <div class="wd-table meta-box-sortables" id="fm_email_options">
944
  <div class="wd-table-col wd-table-col-50 wd-table-col-left">
945
  <div class="wd-box-section">
946
  <div class="wd-box-title">
@@ -966,6 +977,7 @@ $stats_labels = $params['stats_labels'];
966
  }
967
  ?>
968
  </div>
 
969
  </div>
970
  <div class="wd-group">
971
  <label class="wd-label" for="mail_subject"><?php _e('Subject', WDCFM()->prefix); ?></label>
@@ -991,6 +1003,7 @@ $stats_labels = $params['stats_labels'];
991
  echo "<a onClick=\"insertAtCursor(" . $choise . ",'username'); document.getElementById('mail_from_name_user_labels').style.display='none';\" style=\"display:block; text-decoration:none;\">Username</a>";
992
  echo '</div></div>';
993
  ?>
 
994
  </div>
995
  <div class="wd-group">
996
  <label class="wd-label" for="script_mail"><?php _e('Custom Text in Email For Administrator', WDCFM()->prefix); ?></label>
@@ -1042,6 +1055,7 @@ $stats_labels = $params['stats_labels'];
1042
  <?php
1043
  }
1044
  ?>
 
1045
  </div>
1046
  <div class="postbox closed">
1047
  <button class="button-link handlediv" type="button" aria-expanded="true">
@@ -1078,6 +1092,7 @@ $stats_labels = $params['stats_labels'];
1078
  <p style="display: <?php echo ($is_other) ? 'block;' : 'none;'; ?>" id="mail_from_other_wrap">
1079
  <input type="text" name="mail_from_other" id="mail_from_other" value="<?php echo ($is_other) ? $row->from_mail : ''; ?>" />
1080
  </p>
 
1081
  </div>
1082
  <div class="wd-group">
1083
  <label class="wd-label" for="from_name"><?php _e('From Name', WDCFM()->prefix); ?></label>
@@ -1106,6 +1121,7 @@ $stats_labels = $params['stats_labels'];
1106
  ?>
1107
  </div>
1108
  </div>
 
1109
  </div>
1110
  <div class="wd-group">
1111
  <label class="wd-label" for="from_name"><?php _e('Reply to (if different from "Email From")', WDCFM()->prefix); ?></label>
@@ -1133,14 +1149,17 @@ $stats_labels = $params['stats_labels'];
1133
  <p style="display: <?php echo ($is_other) ? 'block;' : 'none;'; ?>" id="reply_to_other_wrap">
1134
  <input type="text" name="reply_to_other" value="<?php echo ($is_other && $row->reply_to) ? $row->reply_to : ''; ?>" id="reply_to_other" />
1135
  </p>
 
1136
  </div>
1137
  <div class="wd-group">
1138
  <label class="wd-label" for="mail_cc"><?php _e('CC', WDCFM()->prefix); ?></label>
1139
  <input type="text" id="mail_cc" name="mail_cc" value="<?php echo $row->mail_cc ?>" />
 
1140
  </div>
1141
  <div class="wd-group">
1142
  <label class="wd-label" for="mail_bcc"><?php _e('BCC', WDCFM()->prefix); ?></label>
1143
  <input type="text" id="mail_bcc" name="mail_bcc" value="<?php echo $row->mail_bcc ?>" />
 
1144
  </div>
1145
  <div class="wd-group">
1146
  <label class="wd-label"><?php _e('Mode', WDCFM()->prefix); ?></label>
@@ -1148,6 +1167,7 @@ $stats_labels = $params['stats_labels'];
1148
  <label class="wd-label-radio" for="fm_mo_mail_mode-1"><?php _e('HTML', WDCFM()->prefix); ?></label>
1149
  <input type="radio" name="mail_mode" <?php echo $row->mail_mode == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_mode-0" class="wd-radio" value="0">
1150
  <label class="wd-label-radio" for="fm_mo_mail_mode-0"><?php _e('Text', WDCFM()->prefix); ?></label>
 
1151
  </div>
1152
  <div class="wd-group">
1153
  <label class="wd-label"><?php _e('Attach File', WDCFM()->prefix); ?></label>
@@ -1155,6 +1175,7 @@ $stats_labels = $params['stats_labels'];
1155
  <label class="wd-label-radio" for="fm_mo_mail_attachment-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
1156
  <input type="radio" name="mail_attachment" <?php echo $row->mail_attachment == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_attachment-0" class="wd-radio" value="0">
1157
  <label class="wd-label-radio" for="fm_mo_mail_attachment-0"><?php _e('No', WDCFM()->prefix); ?></label>
 
1158
  </div>
1159
  <div class="wd-group">
1160
  <label class="wd-label"><?php _e('Email empty fields', WDCFM()->prefix); ?></label>
@@ -1162,6 +1183,7 @@ $stats_labels = $params['stats_labels'];
1162
  <label class="wd-label-radio" for="fm_mo_mail_emptyfields-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
1163
  <input type="radio" name="mail_emptyfields" <?php echo $row->mail_emptyfields == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_emptyfields-0" class="wd-radio" value="0">
1164
  <label class="wd-label-radio" for="fm_mo_mail_emptyfields-0"><?php _e('No', WDCFM()->prefix); ?></label>
 
1165
  </div>
1166
  </div>
1167
  </div>
@@ -1193,6 +1215,7 @@ $stats_labels = $params['stats_labels'];
1193
  }
1194
  }
1195
  ?>
 
1196
  </div>
1197
  <div class="wd-group">
1198
  <label class="wd-label" for="mail_subject_user"><?php _e('Subject', WDCFM()->prefix); ?></label>
@@ -1220,6 +1243,7 @@ $stats_labels = $params['stats_labels'];
1220
  ?>
1221
  </div>
1222
  </div>
 
1223
  </div>
1224
  <div class="wd-group">
1225
  <label class="wd-label" for="script_mail_user"><?php _e('Custom Text in Email For User', WDCFM()->prefix); ?></label>
@@ -1272,6 +1296,7 @@ $stats_labels = $params['stats_labels'];
1272
  <?php
1273
  }
1274
  ?>
 
1275
  </div>
1276
  <div class="postbox closed">
1277
  <button class="button-link handlediv" type="button" aria-expanded="true">
@@ -1285,6 +1310,7 @@ $stats_labels = $params['stats_labels'];
1285
  <div class="wd-group">
1286
  <label class="wd-label" for="mail_from_user"><?php _e('Email From', WDCFM()->prefix); ?></label>
1287
  <input type="text" id="mail_from_user" name="mail_from_user" value="<?php echo $row->mail_from_user; ?>" />
 
1288
  </div>
1289
  <div class="wd-group">
1290
  <label class="wd-label" for="mail_from_name_user"><?php _e('From Name', WDCFM()->prefix); ?></label>
@@ -1312,18 +1338,22 @@ $stats_labels = $params['stats_labels'];
1312
  ?>
1313
  </div>
1314
  </div>
 
1315
  </div>
1316
  <div class="wd-group">
1317
  <label class="wd-label" for="reply_to_user"><?php _e('Reply to (if different from "Email From")', WDCFM()->prefix); ?></label>
1318
  <input type="text" name="reply_to_user" value="<?php echo $row->reply_to_user; ?>" id="reply_to_user" />
 
1319
  </div>
1320
  <div class="wd-group">
1321
  <label class="wd-label" for="mail_cc_user"><?php _e('CC', WDCFM()->prefix); ?></label>
1322
  <input type="text" name="mail_cc_user" value="<?php echo $row->mail_cc_user ?>" id="mail_cc_user" />
 
1323
  </div>
1324
  <div class="wd-group">
1325
  <label class="wd-label" for="mail_bcc_user"><?php _e('BCC', WDCFM()->prefix); ?></label>
1326
  <input type="text" name="mail_bcc_user" value="<?php echo $row->mail_bcc_user ?>" id="mail_bcc_user" />
 
1327
  </div>
1328
  <div class="wd-group">
1329
  <label class="wd-label"><?php _e('Mode', WDCFM()->prefix); ?></label>
@@ -1331,6 +1361,7 @@ $stats_labels = $params['stats_labels'];
1331
  <label class="wd-label-radio" for="fm_mo_mail_mode_user-1"><?php _e('HTML', WDCFM()->prefix); ?></label>
1332
  <input type="radio" name="mail_mode_user" <?php echo $row->mail_mode_user == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_mode_user-0" class="wd-radio" value="0">
1333
  <label class="wd-label-radio" for="fm_mo_mail_mode_user-0"><?php _e('Text', WDCFM()->prefix); ?></label>
 
1334
  </div>
1335
  <div class="wd-group">
1336
  <label class="wd-label"><?php _e('Attach File', WDCFM()->prefix); ?></label>
@@ -1338,6 +1369,7 @@ $stats_labels = $params['stats_labels'];
1338
  <label class="wd-label-radio" for="fm_mo_mail_attachment_user-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
1339
  <input type="radio" name="mail_attachment_user" <?php echo $row->mail_attachment_user == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_attachment_user-0" class="wd-radio" value="0">
1340
  <label class="wd-label-radio" for="fm_mo_mail_attachment_user-0"><?php _e('No', WDCFM()->prefix); ?></label>
 
1341
  </div>
1342
  <div class="wd-group">
1343
  <label class="wd-label"><?php _e('Email verification', WDCFM()->prefix); ?></label>
@@ -1345,6 +1377,7 @@ $stats_labels = $params['stats_labels'];
1345
  <label class="wd-label-radio" for="fm_mo_mail_verify-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
1346
  <input type="radio" name="mail_verify" <?php echo $row->mail_verify == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_verify-0" onclick="wdhide('expire_link')" class="wd-radio" value="0">
1347
  <label class="wd-label-radio" for="fm_mo_mail_verify-0"><?php _e('No', WDCFM()->prefix); ?></label>
 
1348
  </div>
1349
  <div class="wd-group" <?php echo($row->mail_verify == 0 ? 'style="display:none;"' : '') ?> id="expire_link">
1350
  <label class="wd-label" for="mail_verify_expiretime"><?php _e('Verification link expires in', WDCFM()->prefix); ?></label>
@@ -1354,6 +1387,7 @@ $stats_labels = $params['stats_labels'];
1354
  'post' => $params["mail_ver_id"],
1355
  'action' => 'edit',
1356
  ), admin_url('post.php')); ?>"><?php _e('Edit post', WDCFM()->prefix); ?></a>
 
1357
  </div>
1358
  </div>
1359
  </div>
@@ -1362,7 +1396,6 @@ $stats_labels = $params['stats_labels'];
1362
  </div>
1363
  </div>
1364
  </div>
1365
-
1366
  <div id="actions_fieldset" class="adminform fm_fieldset_deactive">
1367
  <div class="wd-table">
1368
  <div class="wd-table-col-70">
228
  wp_enqueue_script('jquery-ui-slider');
229
  wp_enqueue_script('jquery-ui-spinner');
230
  wp_enqueue_script('jquery-ui-datepicker');
231
+ if ( function_exists('wp_add_inline_script') ) { // Since Wordpress 4.5.0
232
+ wp_add_inline_script('jquery-ui-datepicker', WDW_FMC_Library::localize_ui_datepicker());
233
+ }
234
+ else {
235
+ echo '<script>' . WDW_FMC_Library::localize_ui_datepicker() . '</script>';
236
+ }
237
  wp_enqueue_media();
238
  wp_enqueue_script('google-maps');
239
  wp_enqueue_script('fm-gmap_form');
671
  wp_enqueue_script('jquery-ui-slider');
672
  wp_enqueue_script('jquery-ui-spinner');
673
  wp_enqueue_script('jquery-ui-datepicker');
674
+ if ( function_exists('wp_add_inline_script') ) { // Since Wordpress 4.5.0
675
+ wp_add_inline_script('jquery-ui-datepicker', WDW_FMC_Library::localize_ui_datepicker());
676
+ }
677
+ else {
678
+ echo '<script>' . WDW_FMC_Library::localize_ui_datepicker() . '</script>';
679
+ }
680
  wp_enqueue_media();
681
  wp_enqueue_script('google-maps');
682
  wp_enqueue_script('fm-form-options');
932
  </div>
933
  </div>
934
  </div>
 
935
  <div id="emailTab_fieldset" class="adminform fm_fieldset_deactive js">
936
  <div class="wd-table">
937
  <div class="wd-table-col wd-table-col-100">
943
  <label class="wd-label-radio" for="fm_sendemail-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
944
  <input type="radio" name="sendemail" <?php echo $row->sendemail == 0 ? 'checked="checked"' : '' ?> id="fm_sendemail-0" class="wd-radio" value="0" onchange="fm_toggle_email_options(false)" />
945
  <label class="wd-label-radio" for="fm_sendemail-0"><?php _e('No', WDCFM()->prefix); ?></label>
946
+ <p class="description"><?php _e('Enable this setting to send submitted information to administrators, as well as the submitter.', WDCFM()->prefix); ?></p>
947
+ <p class="description fm_email_options"><?php _e('In case you cannot find the submission email in your Inbox, make sure to check the Spam folder as well.', WDCFM()->prefix); ?></p>
948
  </div>
949
  </div>
950
  </div>
951
  </div>
952
  </div>
953
  <div class="fm-clear"></div>
954
+ <div class="wd-table meta-box-sortables fm_email_options" id="fm_email_options">
955
  <div class="wd-table-col wd-table-col-50 wd-table-col-left">
956
  <div class="wd-box-section">
957
  <div class="wd-box-title">
977
  }
978
  ?>
979
  </div>
980
+ <p class="description"><?php _e('Specify all email addresses, to which submitted form information will be sent. If this field is left blank, the submission email will be sent to the address provided in WordPress General Settings.', WDCFM()->prefix); ?></p>
981
  </div>
982
  <div class="wd-group">
983
  <label class="wd-label" for="mail_subject"><?php _e('Subject', WDCFM()->prefix); ?></label>
1003
  echo "<a onClick=\"insertAtCursor(" . $choise . ",'username'); document.getElementById('mail_from_name_user_labels').style.display='none';\" style=\"display:block; text-decoration:none;\">Username</a>";
1004
  echo '</div></div>';
1005
  ?>
1006
+ <p class="description"><?php _e('Add a custom subject for the submission email. Click the Plus (+) button to select a form field, the value of which will be set as the subject. In case it’s left blank, Form Title will be set as the subject of submission emails.', WDCFM()->prefix); ?></p>
1007
  </div>
1008
  <div class="wd-group">
1009
  <label class="wd-label" for="script_mail"><?php _e('Custom Text in Email For Administrator', WDCFM()->prefix); ?></label>
1055
  <?php
1056
  }
1057
  ?>
1058
+ <p class="description"><?php _e('Write custom content to the email message which is sent to administrator. Include All Fields List to forward all submitted information, or click on fields buttons to use individual field values in the content.', WDCFM()->prefix); ?></p>
1059
  </div>
1060
  <div class="postbox closed">
1061
  <button class="button-link handlediv" type="button" aria-expanded="true">
1092
  <p style="display: <?php echo ($is_other) ? 'block;' : 'none;'; ?>" id="mail_from_other_wrap">
1093
  <input type="text" name="mail_from_other" id="mail_from_other" value="<?php echo ($is_other) ? $row->from_mail : ''; ?>" />
1094
  </p>
1095
+ <p class="description"><?php _e('Specify the email address from which the administrator will receive the email.', WDCFM()->prefix); ?></p>
1096
  </div>
1097
  <div class="wd-group">
1098
  <label class="wd-label" for="from_name"><?php _e('From Name', WDCFM()->prefix); ?></label>
1121
  ?>
1122
  </div>
1123
  </div>
1124
+ <p class="description"><?php _e('Set the name which is shown as the sender’s name in submission or confirmation emails. Press the Plus (+) button to select a field value.', WDCFM()->prefix); ?></p>
1125
  </div>
1126
  <div class="wd-group">
1127
  <label class="wd-label" for="from_name"><?php _e('Reply to (if different from "Email From")', WDCFM()->prefix); ?></label>
1149
  <p style="display: <?php echo ($is_other) ? 'block;' : 'none;'; ?>" id="reply_to_other_wrap">
1150
  <input type="text" name="reply_to_other" value="<?php echo ($is_other && $row->reply_to) ? $row->reply_to : ''; ?>" id="reply_to_other" />
1151
  </p>
1152
+ <p class="description"><?php _e('Specify an alternative email address, to which the administrator will be able to reply upon receiving the message.', WDCFM()->prefix); ?></p>
1153
  </div>
1154
  <div class="wd-group">
1155
  <label class="wd-label" for="mail_cc"><?php _e('CC', WDCFM()->prefix); ?></label>
1156
  <input type="text" id="mail_cc" name="mail_cc" value="<?php echo $row->mail_cc ?>" />
1157
+ <p class="description"><?php _e('Provide additional email addresses to send the submission or confirmation email to. The receiver will be able to view all other recipients.', WDCFM()->prefix); ?></p>
1158
  </div>
1159
  <div class="wd-group">
1160
  <label class="wd-label" for="mail_bcc"><?php _e('BCC', WDCFM()->prefix); ?></label>
1161
  <input type="text" id="mail_bcc" name="mail_bcc" value="<?php echo $row->mail_bcc ?>" />
1162
+ <p class="description"><?php _e('Write additional email addresses to send the submission or confirmation email to. The receiver will not be able to view other recipients.', WDCFM()->prefix); ?></p>
1163
  </div>
1164
  <div class="wd-group">
1165
  <label class="wd-label"><?php _e('Mode', WDCFM()->prefix); ?></label>
1167
  <label class="wd-label-radio" for="fm_mo_mail_mode-1"><?php _e('HTML', WDCFM()->prefix); ?></label>
1168
  <input type="radio" name="mail_mode" <?php echo $row->mail_mode == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_mode-0" class="wd-radio" value="0">
1169
  <label class="wd-label-radio" for="fm_mo_mail_mode-0"><?php _e('Text', WDCFM()->prefix); ?></label>
1170
+ <p class="description"><?php _e('Select the layout of the submission email, Text or HTML.', WDCFM()->prefix); ?></p>
1171
  </div>
1172
  <div class="wd-group">
1173
  <label class="wd-label"><?php _e('Attach File', WDCFM()->prefix); ?></label>
1175
  <label class="wd-label-radio" for="fm_mo_mail_attachment-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
1176
  <input type="radio" name="mail_attachment" <?php echo $row->mail_attachment == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_attachment-0" class="wd-radio" value="0">
1177
  <label class="wd-label-radio" for="fm_mo_mail_attachment-0"><?php _e('No', WDCFM()->prefix); ?></label>
1178
+ <p class="description"><?php _e('If you have File Upload fields on your form, enable this setting to attach uploaded files to submission or confirmation email.', WDCFM()->prefix); ?></p>
1179
  </div>
1180
  <div class="wd-group">
1181
  <label class="wd-label"><?php _e('Email empty fields', WDCFM()->prefix); ?></label>
1183
  <label class="wd-label-radio" for="fm_mo_mail_emptyfields-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
1184
  <input type="radio" name="mail_emptyfields" <?php echo $row->mail_emptyfields == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_emptyfields-0" class="wd-radio" value="0">
1185
  <label class="wd-label-radio" for="fm_mo_mail_emptyfields-0"><?php _e('No', WDCFM()->prefix); ?></label>
1186
+ <p class="description"><?php _e('Disable this setting, in case you do not want to include form fields, which are left empty by the submitter.', WDCFM()->prefix); ?></p>
1187
  </div>
1188
  </div>
1189
  </div>
1215
  }
1216
  }
1217
  ?>
1218
+ <p class="description"><?php _e('Use this setting to select the email field of your form, to which the submissions will be sent.', WDCFM()->prefix); ?></p>
1219
  </div>
1220
  <div class="wd-group">
1221
  <label class="wd-label" for="mail_subject_user"><?php _e('Subject', WDCFM()->prefix); ?></label>
1243
  ?>
1244
  </div>
1245
  </div>
1246
+ <p class="description"><?php _e('Add a custom subject for the submission email. Click the Plus (+) button to select a form field, the value of which will be set as the subject. In case it’s left blank, Form Title will be set as the subject of submission emails.', WDCFM()->prefix); ?></p>
1247
  </div>
1248
  <div class="wd-group">
1249
  <label class="wd-label" for="script_mail_user"><?php _e('Custom Text in Email For User', WDCFM()->prefix); ?></label>
1296
  <?php
1297
  }
1298
  ?>
1299
+ <p class="description"><?php _e('Write custom content to the email message which is sent to submitter. Include All Fields List to forward all submitted information, or click on fields buttons to use individual field values in the content.', WDCFM()->prefix); ?></p>
1300
  </div>
1301
  <div class="postbox closed">
1302
  <button class="button-link handlediv" type="button" aria-expanded="true">
1310
  <div class="wd-group">
1311
  <label class="wd-label" for="mail_from_user"><?php _e('Email From', WDCFM()->prefix); ?></label>
1312
  <input type="text" id="mail_from_user" name="mail_from_user" value="<?php echo $row->mail_from_user; ?>" />
1313
+ <p class="description"><?php _e('Specify the email address from which the submitter will receive the email.', WDCFM()->prefix); ?></p>
1314
  </div>
1315
  <div class="wd-group">
1316
  <label class="wd-label" for="mail_from_name_user"><?php _e('From Name', WDCFM()->prefix); ?></label>
1338
  ?>
1339
  </div>
1340
  </div>
1341
+ <p class="description"><?php _e('Set the name which is shown as the sender’s name in submission or confirmation emails. Press the Plus (+) button to select a field value.', WDCFM()->prefix); ?></p>
1342
  </div>
1343
  <div class="wd-group">
1344
  <label class="wd-label" for="reply_to_user"><?php _e('Reply to (if different from "Email From")', WDCFM()->prefix); ?></label>
1345
  <input type="text" name="reply_to_user" value="<?php echo $row->reply_to_user; ?>" id="reply_to_user" />
1346
+ <p class="description"><?php _e('Specify an alternative email address, to which the submitter will be able to reply upon receiving the message.', WDCFM()->prefix); ?></p>
1347
  </div>
1348
  <div class="wd-group">
1349
  <label class="wd-label" for="mail_cc_user"><?php _e('CC', WDCFM()->prefix); ?></label>
1350
  <input type="text" name="mail_cc_user" value="<?php echo $row->mail_cc_user ?>" id="mail_cc_user" />
1351
+ <p class="description"><?php _e('Provide additional email addresses to send the submission or confirmation email to. The receiver will be able to view all other recipients.', WDCFM()->prefix); ?></p>
1352
  </div>
1353
  <div class="wd-group">
1354
  <label class="wd-label" for="mail_bcc_user"><?php _e('BCC', WDCFM()->prefix); ?></label>
1355
  <input type="text" name="mail_bcc_user" value="<?php echo $row->mail_bcc_user ?>" id="mail_bcc_user" />
1356
+ <p class="description"><?php _e('Write additional email addresses to send the submission or confirmation email to. The receiver will not be able to view other recipients.', WDCFM()->prefix); ?></p>
1357
  </div>
1358
  <div class="wd-group">
1359
  <label class="wd-label"><?php _e('Mode', WDCFM()->prefix); ?></label>
1361
  <label class="wd-label-radio" for="fm_mo_mail_mode_user-1"><?php _e('HTML', WDCFM()->prefix); ?></label>
1362
  <input type="radio" name="mail_mode_user" <?php echo $row->mail_mode_user == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_mode_user-0" class="wd-radio" value="0">
1363
  <label class="wd-label-radio" for="fm_mo_mail_mode_user-0"><?php _e('Text', WDCFM()->prefix); ?></label>
1364
+ <p class="description"><?php _e('Select the layout of the submission email, Text or HTML.', WDCFM()->prefix); ?></p>
1365
  </div>
1366
  <div class="wd-group">
1367
  <label class="wd-label"><?php _e('Attach File', WDCFM()->prefix); ?></label>
1369
  <label class="wd-label-radio" for="fm_mo_mail_attachment_user-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
1370
  <input type="radio" name="mail_attachment_user" <?php echo $row->mail_attachment_user == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_attachment_user-0" class="wd-radio" value="0">
1371
  <label class="wd-label-radio" for="fm_mo_mail_attachment_user-0"><?php _e('No', WDCFM()->prefix); ?></label>
1372
+ <p class="description"><?php _e('If you have File Upload fields on your form, enable this setting to attach uploaded files to submission or confirmation email.', WDCFM()->prefix); ?></p>
1373
  </div>
1374
  <div class="wd-group">
1375
  <label class="wd-label"><?php _e('Email verification', WDCFM()->prefix); ?></label>
1377
  <label class="wd-label-radio" for="fm_mo_mail_verify-1"><?php _e('Yes', WDCFM()->prefix); ?></label>
1378
  <input type="radio" name="mail_verify" <?php echo $row->mail_verify == 0 ? 'checked="checked"' : '' ?> id="fm_mo_mail_verify-0" onclick="wdhide('expire_link')" class="wd-radio" value="0">
1379
  <label class="wd-label-radio" for="fm_mo_mail_verify-0"><?php _e('No', WDCFM()->prefix); ?></label>
1380
+ <p class="description"><?php _e('Activate this option, in case you would like the users to verify their email addresses. If it’s enabled, the user email will contain a verification link.', WDCFM()->prefix); ?></p>
1381
  </div>
1382
  <div class="wd-group" <?php echo($row->mail_verify == 0 ? 'style="display:none;"' : '') ?> id="expire_link">
1383
  <label class="wd-label" for="mail_verify_expiretime"><?php _e('Verification link expires in', WDCFM()->prefix); ?></label>
1387
  'post' => $params["mail_ver_id"],
1388
  'action' => 'edit',
1389
  ), admin_url('post.php')); ?>"><?php _e('Edit post', WDCFM()->prefix); ?></a>
1390
+ <p class="description"><?php _e('Use this option to specify a time period (hours), during which the user will be able to verify their email address.', WDCFM()->prefix); ?></p>
1391
  </div>
1392
  </div>
1393
  </div>
1396
  </div>
1397
  </div>
1398
  </div>
 
1399
  <div id="actions_fieldset" class="adminform fm_fieldset_deactive">
1400
  <div class="wd-table">
1401
  <div class="wd-table-col-70">
admin/views/Submissions_fm.php CHANGED
@@ -23,7 +23,12 @@ class FMViewSubmissions_fmc extends FMAdminView_fmc {
23
  wp_enqueue_script('jquery-ui-mouse');
24
  wp_enqueue_script('jquery-ui-core');
25
  wp_enqueue_script('jquery-ui-datepicker');
26
- wp_add_inline_script('jquery-ui-datepicker', WDW_FMC_Library::localize_ui_datepicker());
 
 
 
 
 
27
  wp_enqueue_script('fmc-admin');
28
  wp_enqueue_script('fm-manage');
29
  wp_enqueue_script('fm-submissions');
23
  wp_enqueue_script('jquery-ui-mouse');
24
  wp_enqueue_script('jquery-ui-core');
25
  wp_enqueue_script('jquery-ui-datepicker');
26
+ if ( function_exists('wp_add_inline_script') ) { // Since Wordpress 4.5.0
27
+ wp_add_inline_script('jquery-ui-datepicker', WDW_FMC_Library::localize_ui_datepicker());
28
+ }
29
+ else {
30
+ echo '<script>' . WDW_FMC_Library::localize_ui_datepicker() . '</script>';
31
+ }
32
  wp_enqueue_script('fmc-admin');
33
  wp_enqueue_script('fm-manage');
34
  wp_enqueue_script('fm-submissions');
contact-form-maker.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Contact Form Maker
4
  * Plugin URI: https://web-dorado.com/products/form-maker-wordpress.html
5
  * Description: WordPress Contact Form Maker is a simple contact form builder, which allows the user with almost no knowledge of programming to create and edit different type of contact forms.
6
- * Version: 1.12.15
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
@@ -89,8 +89,8 @@ final class WDCFM {
89
  $this->plugin_dir = WP_PLUGIN_DIR . "/" . plugin_basename(dirname(__FILE__));
90
  $this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
91
  $this->main_file = plugin_basename(__FILE__);
92
- $this->plugin_version = '1.12.15';
93
- $this->db_version = '2.12.15';
94
  $this->menu_slug = 'manage_fmc';
95
  $this->prefix = 'form_maker_fmc';
96
  $this->css_prefix = 'fmc_';
@@ -1095,7 +1095,7 @@ final class WDCFM {
1095
  $add_ons = array(
1096
  'form-maker-export-import' => array('version' => '2.0.7', 'file' => 'fm_exp_imp.php'),
1097
  'form-maker-save-progress' => array('version' => '1.0.1', 'file' => 'fm_save.php'),
1098
- 'form-maker-conditional-emails' => array('version' => '1.0.1', 'file' => 'fm_conditional_emails.php'),
1099
  'form-maker-pushover' => array('version' => '1.0.1', 'file' => 'fm_pushover.php'),
1100
  'form-maker-mailchimp' => array('version' => '1.0.1', 'file' => 'fm_mailchimp.php'),
1101
  'form-maker-reg' => array('version' => '1.1.0', 'file' => 'fm_reg.php'),
3
  * Plugin Name: Contact Form Maker
4
  * Plugin URI: https://web-dorado.com/products/form-maker-wordpress.html
5
  * Description: WordPress Contact Form Maker is a simple contact form builder, which allows the user with almost no knowledge of programming to create and edit different type of contact forms.
6
+ * Version: 1.12.16
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
89
  $this->plugin_dir = WP_PLUGIN_DIR . "/" . plugin_basename(dirname(__FILE__));
90
  $this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
91
  $this->main_file = plugin_basename(__FILE__);
92
+ $this->plugin_version = '1.12.16';
93
+ $this->db_version = '2.12.16';
94
  $this->menu_slug = 'manage_fmc';
95
  $this->prefix = 'form_maker_fmc';
96
  $this->css_prefix = 'fmc_';
1095
  $add_ons = array(
1096
  'form-maker-export-import' => array('version' => '2.0.7', 'file' => 'fm_exp_imp.php'),
1097
  'form-maker-save-progress' => array('version' => '1.0.1', 'file' => 'fm_save.php'),
1098
+ 'form-maker-conditional-emails' => array('version' => '1.1.2', 'file' => 'fm_conditional_emails.php'),
1099
  'form-maker-pushover' => array('version' => '1.0.1', 'file' => 'fm_pushover.php'),
1100
  'form-maker-mailchimp' => array('version' => '1.0.1', 'file' => 'fm_mailchimp.php'),
1101
  'form-maker-reg' => array('version' => '1.1.0', 'file' => 'fm_reg.php'),
css/form_maker_frontend.css CHANGED
@@ -977,6 +977,7 @@ input[type=number].wd-type-number {
977
  .fm-form .wd-choice label {
978
  cursor: pointer;
979
  margin: 0 5px;
 
980
  }
981
 
982
  .fm-form div[type='type_date_new'] .wdform-element-section,
977
  .fm-form .wd-choice label {
978
  cursor: pointer;
979
  margin: 0 5px;
980
+ word-break: break-all;
981
  }
982
 
983
  .fm-form div[type='type_date_new'] .wdform-element-section,
css/form_maker_tables.css CHANGED
@@ -2452,4 +2452,11 @@ button:focus {
2452
  }
2453
  .fm-page-header .wp-heading-inline {
2454
  display: inline-block;
 
 
 
 
 
 
 
2455
  }
2452
  }
2453
  .fm-page-header .wp-heading-inline {
2454
  display: inline-block;
2455
+ }
2456
+
2457
+ .ch-rad-label {
2458
+ width: calc(100% - 50px);
2459
+ word-break: break-all;
2460
+ display: -webkit-inline-box;
2461
+ min-width:100px;
2462
  }
featured/admin.css CHANGED
@@ -583,6 +583,7 @@ span.fm_error{
583
  box-sizing: border-box;
584
  -webkit-box-sizing: border-box;
585
  -moz-box-sizing: border-box;
 
586
  }
587
  #fm-settings-content .fm-addon-price{
588
  background: #FFFFFF;
@@ -595,6 +596,7 @@ span.fm_error{
595
  color: #DDECF1;
596
  }
597
  #fm-settings-content .fm-add-on:hover .fm-addon,
 
598
  #fm-settings-content .fm-addon:hover{
599
  background: #23282D url(../images/Add_Ons_hover.jpg) no-repeat 6px center;
600
  color: #DDDEDE;
@@ -646,13 +648,15 @@ span.fm_error{
646
  -moz-transition: -moz-transform 0.4s;
647
  transition: transform 0.4s;
648
  }
649
- #fm-settings-content .fm-figure:hover img{
 
650
  -webkit-transform: translateX(25%);
651
  -moz-transform: translateX(25%);
652
  -ms-transform: translateX(25%);
653
  transform: translateX(25%);
654
  }
655
- #fm-settings-content .fm-figure:hover figcaption{
 
656
  opacity: 1;
657
  -webkit-transform: rotateY(0deg);
658
  -moz-transform: rotateY(0deg);
583
  box-sizing: border-box;
584
  -webkit-box-sizing: border-box;
585
  -moz-box-sizing: border-box;
586
+ text-transform: uppercase;
587
  }
588
  #fm-settings-content .fm-addon-price{
589
  background: #FFFFFF;
596
  color: #DDECF1;
597
  }
598
  #fm-settings-content .fm-add-on:hover .fm-addon,
599
+ #fm-settings-content .fm-addon.activated,
600
  #fm-settings-content .fm-addon:hover{
601
  background: #23282D url(../images/Add_Ons_hover.jpg) no-repeat 6px center;
602
  color: #DDDEDE;
648
  -moz-transition: -moz-transform 0.4s;
649
  transition: transform 0.4s;
650
  }
651
+ #fm-settings-content .fm-figure:hover img,
652
+ #fm-settings-content .fm-figure.activated img {
653
  -webkit-transform: translateX(25%);
654
  -moz-transform: translateX(25%);
655
  -ms-transform: translateX(25%);
656
  transform: translateX(25%);
657
  }
658
+ #fm-settings-content .fm-figure:hover figcaption,
659
+ #fm-settings-content .fm-figure.activated figcaption {
660
  opacity: 1;
661
  -webkit-transform: rotateY(0deg);
662
  -moz-transform: rotateY(0deg);
featured/featured.php CHANGED
@@ -2,97 +2,106 @@
2
  function fm_extensions_page($current_plugin = '') {
3
  wp_enqueue_style('fm-featured');
4
  wp_enqueue_style('fm-featured-admin');
5
- $addons = array(
6
- 'Form Maker Add-ons' => array(
7
- 'imp_exp' => array(
8
- 'name' => 'Import/Export',
9
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/export-import.html',
10
- 'description' => 'Form Maker Export/Import WordPress plugin allows exporting and importing forms with/without submissions.',
11
- 'icon' => '',
12
- 'image' => plugins_url( '../assets/import_export.png', __FILE__ ),
13
- ),
14
- 'mailchimp' => array(
15
- 'name' => 'MailChimp',
16
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/mailchimp.html',
17
- 'description' => 'This add-on is an integration of the Form Maker with MailChimp which allows to add contacts to your subscription lists just from submitted forms.',
18
- 'icon' => '',
19
- 'image' => plugins_url( '../assets/mailchimp.png', __FILE__ ),
20
- ),
21
- 'reg' => array(
22
- 'name' => 'Registration',
23
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/registration.html',
24
- 'description' => 'User Registration add-on integrates with Form maker forms allowing users to create accounts at your website.',
25
- 'icon' => '',
26
- 'image' => plugins_url( '../assets/reg.png', __FILE__ ),
27
- ),
28
- 'post_generation' => array(
29
- 'name' => 'Post Generation',
30
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/post-generation.html',
31
- 'description' => 'Post Generation add-on allows creating a post, page or custom post based on the submitted data.',
32
- 'icon' => '',
33
- 'image' => plugins_url( '../assets/post-generation-update.png', __FILE__ ),
34
- ),
35
- 'conditional_emails' => array(
36
- 'name' => 'Conditional Emails',
37
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/conditional-emails.html',
38
- 'description' => 'Conditional Emails add-on allows to send emails to different recipients depending on the submitted data .',
39
- 'icon' => '',
40
- 'image' => plugins_url( '../assets/conditional-emails-update.png', __FILE__ ),
41
- ),
42
- 'dropbox_integration' => array(
43
- 'name' => 'Dropbox Integration',
44
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/dropbox.html',
45
- 'description' => 'The Form Maker Dropbox Integration addon is extending the Form Maker capabilities allowing to store the form attachments straight to your Dropbox account.',
46
- 'icon' => '',
47
- 'image' => plugins_url( '../assets/dropbox-integration-update.png', __FILE__ ),
48
- ),
49
- 'gdrive_integration' => array(
50
- 'name' => 'Google Drive Integration',
51
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/google-drive.html',
52
- 'description' => 'The Google Drive Integration add-on integrates Form Maker with Google Drive and allows you to send the file uploads to the Google Drive',
53
- 'icon' => '',
54
- 'image' => plugins_url( '../assets/google_drive_integration.png', __FILE__ ),
55
- ),
56
- 'pdf_integration' => array(
57
- 'name' => 'PDF Integration',
58
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/pdf.html',
59
- 'description' => 'The Form Maker PDF Integration add-on allows sending submitted forms in PDF format.',
60
- 'icon' => '',
61
- 'image' => plugins_url( '../assets/pdf-integration.png', __FILE__ ),
62
- ),
63
- 'pushover' => array(
64
- 'name' => 'Pushover',
65
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/pushover.html',
66
- 'description' => 'Form Maker Pushover integration allows to receive real-time notifications when a user submits a new form. This means messages can be pushed to Android and Apple devices, as well as desktop notification board.',
67
- 'icon' => '',
68
- 'image' => plugins_url( '../assets/pushover.png', __FILE__ ),
69
- ),
70
- 'form-maker-save-progress' => array(
71
- 'name' => 'Save Progress',
72
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/save-progress.html',
73
- 'description' => 'The add-on allows to save filled in forms as draft and continue editing them subsequently.',
74
- 'icon' => '',
75
- 'image' => plugins_url( '../assets/save-progress.png', __FILE__ ),
76
- ),
77
- 'stripe' => array(
78
- 'name' => 'Stripe',
79
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/stripe.html',
80
- 'description' => 'Form Maker Stripe Integration Add-on allows to accept direct payments made by Credit Cards. Users will remain on your website during the entire process.',
81
- 'icon' => '',
82
- 'image' => plugins_url( '../assets/stripe-integration-update.png', __FILE__ ),
83
- ),
84
- 'calculator' => array(
85
- 'name' => 'Calculator',
86
- 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/calculator.html',
87
- 'description' => 'The Form Maker Calculator add-on allows creating forms with dynamically calculated fields.',
88
- 'icon' => '',
89
- 'image' => plugins_url( '../assets/calculator.png', __FILE__ ),
90
- )
 
 
 
 
 
 
 
 
 
 
 
91
  )
92
- );
93
-
94
-
95
-
96
  ?>
97
  <div class="wrap">
98
  <?php settings_errors(); ?>
@@ -101,16 +110,16 @@ function fm_extensions_page($current_plugin = '') {
101
  <h2 id="add_on_title"><?php echo esc_html(get_admin_page_title()); ?></h2>
102
  <?php
103
  if($addons){
104
- foreach ($addons as $name=>$cat) {
105
- ?>
106
-
107
- <!-- <div style="clear: both; margin-top: 15px;"> <h3 class="fm-addon-subtitle"><?php echo $name?> </h3></div> -->
108
- <?php
109
  foreach ( $cat as $addon ) {
 
 
 
 
110
  ?>
111
  <div class="fm-add-on">
112
  <h2><?php echo $addon['name'] ?></h2>
113
- <figure class="fm-figure">
114
  <div class="fm-figure-img">
115
  <a href="<?php echo $addon['url'] ?>" target="_blank">
116
  <?php if ( $addon['image'] ) { ?>
@@ -118,23 +127,25 @@ function fm_extensions_page($current_plugin = '') {
118
  <?php } ?>
119
  </a>
120
  </div>
121
-
122
  <figcaption class="fm-addon-descr fm-figcaption">
123
-
124
  <?php if ( $addon['icon'] ) { ?>
125
  <img src="<?php echo $addon['icon'] ?>"/>
126
  <?php } ?>
127
  <?php echo $addon['description'] ?>
128
  </figcaption>
129
  </figure>
130
- <?php if ( $addon['url'] !== '#' ) { ?>
131
- <a href="<?php echo $addon['url'] ?>"
132
- target="_blank" class="fm-addon"><span>GET THIS ADD ON</span></a>
133
-
134
- <?php } else { ?>
 
 
 
 
 
135
  <div class="fm_coming_soon">
136
- <img
137
- src="<?php echo plugins_url( '../../assets/coming_soon.png', __FILE__ ); ?>"/>
138
  </div>
139
  <?php } ?>
140
  </div>
@@ -143,12 +154,10 @@ function fm_extensions_page($current_plugin = '') {
143
  }
144
  }
145
  ?>
146
-
147
  </div>
148
  <!-- #fm-settings-content -->
149
  </div>
150
  <!-- #fm-settings -->
151
  </div><!-- .wrap -->
152
-
153
  <?php
154
  }
2
  function fm_extensions_page($current_plugin = '') {
3
  wp_enqueue_style('fm-featured');
4
  wp_enqueue_style('fm-featured-admin');
5
+ $addons = array(
6
+ 'Form Maker Add-ons' => array(
7
+ 'imp_exp' => array(
8
+ 'name' => 'Import/Export',
9
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/export-import.html',
10
+ 'description' => 'Form Maker Export/Import WordPress plugin allows exporting and importing forms with/without submissions.',
11
+ 'icon' => '',
12
+ 'image' => plugins_url( '../assets/import_export.png', __FILE__ ),
13
+ 'file_dir' => 'form-maker-export-import/fm_exp_imp.php'
14
+ ),
15
+ 'mailchimp' => array(
16
+ 'name' => 'MailChimp',
17
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/mailchimp.html',
18
+ 'description' => 'This add-on is an integration of the Form Maker with MailChimp which allows to add contacts to your subscription lists just from submitted forms.',
19
+ 'icon' => '',
20
+ 'image' => plugins_url( '../assets/mailchimp.png', __FILE__ ),
21
+ 'file_dir' => 'form-maker-mailchimp/fm_mailchimp.php'
22
+ ),
23
+ 'reg' => array(
24
+ 'name' => 'Registration',
25
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/registration.html',
26
+ 'description' => 'User Registration add-on integrates with Form maker forms allowing users to create accounts at your website.',
27
+ 'icon' => '',
28
+ 'image' => plugins_url( '../assets/reg.png', __FILE__ ),
29
+ 'file_dir' => 'form-maker-reg/fm_reg.php'
30
+ ),
31
+ 'post_generation' => array(
32
+ 'name' => 'Post Generation',
33
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/post-generation.html',
34
+ 'description' => 'Post Generation add-on allows creating a post, page or custom post based on the submitted data.',
35
+ 'icon' => '',
36
+ 'image' => plugins_url( '../assets/post-generation-update.png', __FILE__ ),
37
+ 'file_dir' => 'form-maker-post-generation/fm_post_generation.php'
38
+ ),
39
+ 'conditional_emails' => array(
40
+ 'name' => 'Conditional Emails',
41
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/conditional-emails.html',
42
+ 'description' => 'Conditional Emails add-on allows to send emails to different recipients depending on the submitted data .',
43
+ 'icon' => '',
44
+ 'image' => plugins_url( '../assets/conditional-emails-update.png', __FILE__ ),
45
+ 'file_dir' => 'form-maker-conditional-emails/fm_conditional_emails.php'
46
+ ),
47
+ 'dropbox_integration' => array(
48
+ 'name' => 'Dropbox Integration',
49
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/dropbox.html',
50
+ 'description' => 'The Form Maker Dropbox Integration addon is extending the Form Maker capabilities allowing to store the form attachments straight to your Dropbox account.',
51
+ 'icon' => '',
52
+ 'image' => plugins_url( '../assets/dropbox-integration-update.png', __FILE__ ),
53
+ 'file_dir' => 'form-maker-dropbox-integration/fm_dropbox_integration.php'
54
+ ),
55
+ 'gdrive_integration' => array(
56
+ 'name' => 'Google Drive Integration',
57
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/google-drive.html',
58
+ 'description' => 'The Google Drive Integration add-on integrates Form Maker with Google Drive and allows you to send the file uploads to the Google Drive',
59
+ 'icon' => '',
60
+ 'image' => plugins_url( '../assets/google_drive_integration.png', __FILE__ ),
61
+ 'file_dir' => 'form-maker-gdrive-integration/fm_gdrive_integration.php'
62
+ ),
63
+ 'pdf_integration' => array(
64
+ 'name' => 'PDF Integration',
65
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/pdf.html',
66
+ 'description' => 'The Form Maker PDF Integration add-on allows sending submitted forms in PDF format.',
67
+ 'icon' => '',
68
+ 'image' => plugins_url( '../assets/pdf-integration.png', __FILE__ ),
69
+ 'file_dir' => 'form-maker-pdf-integration/fm_pdf_integration.php'
70
+ ),
71
+ 'pushover' => array(
72
+ 'name' => 'Pushover',
73
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/pushover.html',
74
+ 'description' => 'Form Maker Pushover integration allows to receive real-time notifications when a user submits a new form. This means messages can be pushed to Android and Apple devices, as well as desktop notification board.',
75
+ 'icon' => '',
76
+ 'image' => plugins_url( '../assets/pushover.png', __FILE__ ),
77
+ 'file_dir' => 'form-maker-pushover/fm_pushover.php'
78
+ ),
79
+ 'form-maker-save-progress' => array(
80
+ 'name' => 'Save Progress',
81
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/save-progress.html',
82
+ 'description' => 'The add-on allows to save filled in forms as draft and continue editing them subsequently.',
83
+ 'icon' => '',
84
+ 'image' => plugins_url( '../assets/save-progress.png', __FILE__ ),
85
+ 'file_dir' => 'form-maker-save-progress/fm_save.php'
86
+ ),
87
+ 'stripe' => array(
88
+ 'name' => 'Stripe',
89
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/stripe.html',
90
+ 'description' => 'Form Maker Stripe Integration Add-on allows to accept direct payments made by Credit Cards. Users will remain on your website during the entire process.',
91
+ 'icon' => '',
92
+ 'image' => plugins_url( '../assets/stripe-integration-update.png', __FILE__ ),
93
+ 'file_dir' => 'form-maker-stripe/fm_stripe.php'
94
+ ),
95
+ 'calculator' => array(
96
+ 'name' => 'Calculator',
97
+ 'url' => 'https://web-dorado.com/products/wordpress-form/add-ons/calculator.html',
98
+ 'description' => 'The Form Maker Calculator add-on allows creating forms with dynamically calculated fields.',
99
+ 'icon' => '',
100
+ 'image' => plugins_url( '../assets/calculator.png', __FILE__ ),
101
+ 'file_dir' => 'form-maker-calculator/fm_calculator.php'
102
  )
103
+ )
104
+ );
 
 
105
  ?>
106
  <div class="wrap">
107
  <?php settings_errors(); ?>
110
  <h2 id="add_on_title"><?php echo esc_html(get_admin_page_title()); ?></h2>
111
  <?php
112
  if($addons){
113
+ foreach ($addons as $name => $cat) {
 
 
 
 
114
  foreach ( $cat as $addon ) {
115
+ $activated = '';
116
+ if ( is_plugin_active( $addon['file_dir'] ) ) {
117
+ $activated = 'activated';
118
+ }
119
  ?>
120
  <div class="fm-add-on">
121
  <h2><?php echo $addon['name'] ?></h2>
122
+ <figure class="fm-figure <?php echo $activated; ?>">
123
  <div class="fm-figure-img">
124
  <a href="<?php echo $addon['url'] ?>" target="_blank">
125
  <?php if ( $addon['image'] ) { ?>
127
  <?php } ?>
128
  </a>
129
  </div>
 
130
  <figcaption class="fm-addon-descr fm-figcaption">
 
131
  <?php if ( $addon['icon'] ) { ?>
132
  <img src="<?php echo $addon['icon'] ?>"/>
133
  <?php } ?>
134
  <?php echo $addon['description'] ?>
135
  </figcaption>
136
  </figure>
137
+ <?php
138
+ if ( $addon['url'] !== '#' ) {
139
+ if ( !empty($activated) ) {
140
+ ?>
141
+ <span class="fm-addon activated"><span><?php _e('Add on activated', WDCFM()->prefix); ?></span></span>
142
+ <?php }
143
+ else { ?>
144
+ <a href="<?php echo $addon['url'] ?>" target="_blank" class="fm-addon"><span><?php _e('Get this add on', WDCFM()->prefix); ?></span></a>
145
+ <?php }
146
+ } else { ?>
147
  <div class="fm_coming_soon">
148
+ <img src="<?php echo plugins_url( '../../assets/coming_soon.png', __FILE__ ); ?>"/>
 
149
  </div>
150
  <?php } ?>
151
  </div>
154
  }
155
  }
156
  ?>
 
157
  </div>
158
  <!-- #fm-settings-content -->
159
  </div>
160
  <!-- #fm-settings -->
161
  </div><!-- .wrap -->
 
162
  <?php
163
  }
framework/WDW_FM_Library.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
 
3
  class WDW_FMC_Library {
 
 
4
  /**
5
  * Get request value.
6
  *
@@ -3335,7 +3337,8 @@ class WDW_FMC_Library {
3335
  $onload_js .= '
3336
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '")[0].spin = null;
3337
  spinner = jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner();
3338
- ' . ($param['w_field_value'] != 'null' ? 'spinner.spinner( "value", "' . $param['w_field_value'] . '");' : '') . ' jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ min: "' . $param['w_field_min_value'] . '"});
 
3339
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ max: "' . $param['w_field_max_value'] . '"});
3340
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ step: "' . $param['w_field_step'] . '"});';
3341
  if ( $required ) {
@@ -3429,10 +3432,10 @@ class WDW_FMC_Library {
3429
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '0")[0].spin = null;
3430
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '1")[0].spin = null;
3431
  spinner0 = jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '0").spinner();
3432
- ' . ($param['w_field_value1'] != 'null' ? 'spinner0.spinner( "value", "' . $param['w_field_value1'] . '");' : '') . '
3433
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ step: ' . $param['w_field_range_step'] . '});
3434
  spinner1 = jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '1").spinner();
3435
- ' . ($param['w_field_value2'] != 'null' ? 'spinner1.spinner( "value", "' . $param['w_field_value2'] . '");' : '') . '
3436
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ step: ' . $param['w_field_range_step'] . '});';
3437
  if ( $required ) {
3438
  array_push($req_fields, $id1);
@@ -3540,7 +3543,7 @@ class WDW_FMC_Library {
3540
  }
3541
  $onsubmit_js .= '
3542
  var disabled_fields = "";
3543
- jQuery("div[wdid]").each(function() {
3544
  if(jQuery(this).css("display") == "none") {
3545
  disabled_fields += jQuery(this).attr("wdid");
3546
  disabled_fields += ",";
@@ -3600,6 +3603,7 @@ class WDW_FMC_Library {
3600
  });
3601
  <?php
3602
  $js_content = ob_get_clean();
 
3603
  fwrite($jsfile, $js_content);
3604
  fclose($jsfile);
3605
  clearstatcache();
@@ -4263,6 +4267,110 @@ class WDW_FMC_Library {
4263
  </body>
4264
  </html>';
4265
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4266
  }
4267
 
4268
  /*
1
  <?php
2
 
3
  class WDW_FMC_Library {
4
+
5
+ public static $fm_js_content;
6
  /**
7
  * Get request value.
8
  *
3337
  $onload_js .= '
3338
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '")[0].spin = null;
3339
  spinner = jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner();
3340
+ if ("' . $param['w_field_value'] . '" == "null") { spinner.spinner("value", ""); }
3341
+ jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ min: "' . $param['w_field_min_value'] . '"});
3342
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ max: "' . $param['w_field_max_value'] . '"});
3343
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ step: "' . $param['w_field_step'] . '"});';
3344
  if ( $required ) {
3432
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '0")[0].spin = null;
3433
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '1")[0].spin = null;
3434
  spinner0 = jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '0").spinner();
3435
+ if ("' . $param['w_field_value1'] . '" == "null") { spinner0.spinner("value", ""); }
3436
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ step: ' . $param['w_field_range_step'] . '});
3437
  spinner1 = jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '1").spinner();
3438
+ if ("' . $param['w_field_value2'] . '" == "null") { spinner1.spinner("value", ""); }
3439
  jQuery("#form' . $form_id . ' #wdform_' . $id1 . '_element' . $form_id . '").spinner({ step: ' . $param['w_field_range_step'] . '});';
3440
  if ( $required ) {
3441
  array_push($req_fields, $id1);
3543
  }
3544
  $onsubmit_js .= '
3545
  var disabled_fields = "";
3546
+ jQuery("#form' . $form_id . ' div[wdid]").each(function() {
3547
  if(jQuery(this).css("display") == "none") {
3548
  disabled_fields += jQuery(this).attr("wdid");
3549
  disabled_fields += ",";
3603
  });
3604
  <?php
3605
  $js_content = ob_get_clean();
3606
+ WDW_FMC_Library::$fm_js_content = $js_content;
3607
  fwrite($jsfile, $js_content);
3608
  fclose($jsfile);
3609
  clearstatcache();
4267
  </body>
4268
  </html>';
4269
  }
4270
+
4271
+ /**
4272
+ * Sanitize parameters and send email.
4273
+ *
4274
+ * @param string $recipient
4275
+ * @param string $subject
4276
+ * @param string $message
4277
+ * @param array $header_arr
4278
+ * @param array $attachment
4279
+ *
4280
+ * @return bool
4281
+ */
4282
+ public static function mail($recipient, $subject, $message = '', $header_arr = array(), $attachment = array()) {
4283
+ $recipient = trim($recipient, ',');
4284
+ $recipient = explode(',', $recipient);
4285
+ $recipient = array_map('trim', $recipient);
4286
+ if ( empty($recipient) ) {
4287
+ return FALSE;
4288
+ }
4289
+
4290
+ $subject = html_entity_decode($subject, ENT_QUOTES);
4291
+ $subject = stripslashes($subject);
4292
+
4293
+ $message = stripslashes($message);
4294
+
4295
+ $headers = array();
4296
+
4297
+ if ( isset($header_arr['from']) && $header_arr['from'] ) {
4298
+ $from = $header_arr['from'];
4299
+ $from = trim($from);
4300
+ $from = trim($from, ',');
4301
+ // $from_str = "From: ";
4302
+ if ( isset($header_arr['from_name']) && $header_arr['from_name'] ) {
4303
+ $from_name = $header_arr['from_name'];
4304
+ $from_name = html_entity_decode($from_name, ENT_QUOTES);
4305
+ $from_name = stripslashes($from_name);
4306
+ // $from_str .= "'" . $from_name . "' ";
4307
+ self::$email_from_name = $from_name;
4308
+ add_filter('wp_mail_from_name', array('WDW_FMC_Library', 'mail_from_name'));
4309
+ }
4310
+ // $from_str .= "<" . $from . ">";
4311
+ // $headers[] = $from_str;
4312
+ self::$email_from = $from;
4313
+ add_filter('wp_mail_from', array('WDW_FMC_Library', 'mail_from'));
4314
+ }
4315
+
4316
+ if ( isset($header_arr['content_type']) && $header_arr['content_type'] ) {
4317
+ // $headers[] = "Content-Type: " . $header_arr['content_type'];
4318
+ self::$email_content_type = $header_arr['content_type'];
4319
+ add_filter('wp_mail_content_type', array('WDW_FMC_Library', 'mail_content_type'));
4320
+ }
4321
+
4322
+ if ( isset($header_arr['charset']) && $header_arr['charset'] ) {
4323
+ // $headers[] = $header_arr['charset'];
4324
+ self::$email_charset = $header_arr['charset'];
4325
+ add_filter('wp_mail_charset', array('WDW_FMC_Library', 'mail_charset'));
4326
+ }
4327
+
4328
+ if ( isset($header_arr['reply_to']) && $header_arr['reply_to'] ) {
4329
+ $reply_to = $header_arr['reply_to'];
4330
+ $reply_to = trim($reply_to);
4331
+ $reply_to = trim($reply_to, ',');
4332
+ $headers[] = "Reply-To: <" . $reply_to . ">";
4333
+ }
4334
+
4335
+ if ( isset($header_arr['cc']) && $header_arr['cc'] ) {
4336
+ $cc = $header_arr['cc'];
4337
+ $cc = trim($cc);
4338
+ $cc = trim($cc, ',');
4339
+ $headers[] = "Cc: " . $cc;
4340
+ }
4341
+
4342
+ if ( isset($header_arr['bcc']) && $header_arr['bcc'] ) {
4343
+ $bcc = $header_arr['bcc'];
4344
+ $bcc = trim($bcc);
4345
+ $bcc = trim($bcc, ',');
4346
+ $headers[] = "Bcc: " . $bcc;
4347
+ }
4348
+
4349
+ $sent = wp_mail($recipient, $subject, $message, $headers, $attachment);
4350
+
4351
+ remove_filter('wp_mail_content_type', array('WDW_FMC_Library', 'mail_content_type'));
4352
+ remove_filter('wp_mail_charset', array('WDW_FMC_Library', 'mail_charset'));
4353
+ remove_filter('wp_mail_from', array('WDW_FMC_Library', 'mail_from'));
4354
+ remove_filter('wp_mail_from_name', array('WDW_FMC_Library', 'mail_from_name'));
4355
+
4356
+ return $sent;
4357
+ }
4358
+ public static $email_content_type;
4359
+ public static $email_charset;
4360
+ public static $email_from;
4361
+ public static $email_from_name;
4362
+ public static function mail_content_type() {
4363
+ return self::$email_content_type;
4364
+ }
4365
+ public static function mail_charset() {
4366
+ return self::$email_charset;
4367
+ }
4368
+ public static function mail_from() {
4369
+ return self::$email_from;
4370
+ }
4371
+ public static function mail_from_name() {
4372
+ return self::$email_from_name;
4373
+ }
4374
  }
4375
 
4376
  /*
frontend/controllers/form_maker.php CHANGED
@@ -14,7 +14,7 @@ class FMControllerForm_maker_fmc {
14
  public function __construct() {
15
  $queried_obj = get_queried_object();
16
  // check is custom post type in review page.
17
- if ($queried_obj && isset($queried_obj->post_type) && $queried_obj->post_type == 'form-maker' && $queried_obj->post_name == 'preview') {
18
  $this->form_preview = true;
19
  }
20
 
14
  public function __construct() {
15
  $queried_obj = get_queried_object();
16
  // check is custom post type in review page.
17
+ if ($queried_obj && isset($queried_obj->post_type) && $queried_obj->post_type == 'form-maker_fmc' && $queried_obj->post_name == 'preview') {
18
  $this->form_preview = true;
19
  }
20
 
frontend/models/form_maker.php CHANGED
@@ -4,6 +4,8 @@
4
  * Class FMModelForm_maker_fmc
5
  */
6
  class FMModelForm_maker_fmc {
 
 
7
  /**
8
  * @param $id
9
  * @param string $type
@@ -56,8 +58,19 @@ class FMModelForm_maker_fmc {
56
  $wp_upload_dir = wp_upload_dir();
57
  $frontend_dir ='/form-maker-frontend/';
58
  $fm_style = $wp_upload_dir['baseurl'] . $frontend_dir . 'css/fm-style-' . $theme_id . '.css';
59
- wp_register_style('fm-style-' . $theme_id, $fm_style, array(), $cssver);
60
- wp_enqueue_style('fm-style-' . $theme_id);
 
 
 
 
 
 
 
 
 
 
 
61
  $label_id = array();
62
  $label_type = array();
63
  $label_all = explode('#****#', $row->label_order);
@@ -702,6 +715,7 @@ class FMModelForm_maker_fmc {
702
  ( !empty($form_theme['SCPBGColor']) ? 'background-color:' . $form_theme['SCPBGColor'] . ';' : '').
703
  ( !empty($form_theme['SCPBoxShadow']) ? 'box-shadow:' . $form_theme['SCPBoxShadow'] . ';' : '').
704
  ( (isset($form_theme['SCPBorderRadius']) && $form_theme['SCPBorderRadius'] !== '') ? 'border-radius:' . $form_theme['SCPBorderRadius'] . 'px;' : '').
 
705
  '}';
706
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .radio-div input[type="radio"]:checked + label span:after {'.
707
  ( !empty($form_theme['SCCPWidth']) ? 'content:""; display: block;' : '').
@@ -735,6 +749,7 @@ class FMModelForm_maker_fmc {
735
  ( !empty($form_theme['MCPBGColor']) ? 'background-color:' . $form_theme['MCPBGColor'] . ';' : '').
736
  ( !empty($form_theme['MCPBoxShadow']) ? 'box-shadow:' . $form_theme['MCPBoxShadow'] . ';' : '').
737
  ( (isset($form_theme['MCPBorderRadius']) && $form_theme['MCPBorderRadius'] !== '') ? 'border-radius:' . $form_theme['MCPBorderRadius'] . 'px;' : '').
 
738
  '}';
739
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .checkbox-div input[type="checkbox"]:checked + label span:after {'.
740
  ( (!empty($form_theme['MCCPBackground']) || !empty($form_theme['MCCPBGColor'])) ? 'content:""; display: block;' : '').
@@ -1059,6 +1074,7 @@ class FMModelForm_maker_fmc {
1059
  $theme = preg_replace($pattern, ' ', $theme);
1060
  $css_content .= str_replace('[SITE_ROOT]', WDCFM()->plugin_url, $theme);
1061
  }
 
1062
  file_put_contents($frontend_css, $css_content);
1063
  }
1064
 
@@ -1998,6 +2014,7 @@ class FMModelForm_maker_fmc {
1998
  "***grading***",
1999
  "***br***",
2000
  ), array( " ", "", " ", " ", " ", ", " ), addslashes($value));
 
2001
  if( $type == 'type_checkbox' ) {
2002
  $fvals['{' . $i . '}'] = rtrim( $fvals['{' . $i . '}'], ', ' );
2003
  }
@@ -2395,7 +2412,6 @@ class FMModelForm_maker_fmc {
2395
  }
2396
  }
2397
  $ip = $_SERVER['REMOTE_ADDR'];
2398
- $replyto = '';
2399
  global $wpdb;
2400
  $row = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "formmaker WHERE id=%d", $id));
2401
  if ( !$row->form_front ) {
@@ -2989,9 +3005,6 @@ class FMModelForm_maker_fmc {
2989
  else {
2990
  $subject = $row->title;
2991
  }
2992
- if ( $row->reply_to_user ) {
2993
- $replyto = $row->reply_to_user;
2994
- }
2995
  $attachment_user = array();
2996
  if ( !WDCFM()->is_demo ) {
2997
  for ( $k = 0; $k < count($all_files); $k++ ) {
@@ -3043,30 +3056,19 @@ class FMModelForm_maker_fmc {
3043
  $subject = str_replace("%" . $label_each . "%", $new_value, $subject);
3044
  }
3045
  }
3046
- $recipient = '';
3047
- $cca = $row->mail_cc_user;
3048
- $bcc = $row->mail_bcc_user;
3049
  if ( $row->mail_from_user != '' ) {
3050
- if ( $fromname != '' ) {
3051
- $from = "From: '" . $fromname . "' <" . $row->mail_from_user . ">" . "\r\n";
3052
- }
3053
- else {
3054
- $from = "From: '' <" . $row->mail_from_user . ">" . "\r\n";
3055
- }
3056
- }
3057
- else {
3058
- $from = '';
3059
- }
3060
- $headers = $from . " Content-Type: " . $content_type . "; charset=\"" . get_option('blog_charset') . "\"\n";
3061
- if ( $replyto ) {
3062
- $headers .= "Reply-To: <" . $replyto . ">\r\n";
3063
- }
3064
- if ( $cca ) {
3065
- $headers .= "Cc: " . $cca . "\r\n";
3066
- }
3067
- if ( $bcc ) {
3068
- $headers .= "Bcc: " . $bcc . "\r\n";
3069
- }
3070
  $custom_fields_value = array( $ip, $useremail, $username, $subid, $list_user );
3071
  foreach ( $custom_fields as $key => $custom_field ) {
3072
  if ( strpos($new_script, "%" . $custom_field . "%") > -1 ) {
@@ -3100,20 +3102,22 @@ class FMModelForm_maker_fmc {
3100
  $mail_verification_post_id = (int) $wpdb->get_var($wpdb->prepare('SELECT mail_verification_post_id FROM ' . $wpdb->prefix . 'formmaker WHERE id="%d"', $id));
3101
  $verification_link = get_post($mail_verification_post_id);
3102
  foreach ( $send_tos as $index => $send_to ) {
3103
- $recipient = isset($_POST['wdform_' . str_replace('*', '', $send_to) . "_element" . $id]) ? $_POST['wdform_' . str_replace('*', '', $send_to) . "_element" . $id] : NULL;
3104
  if ( strpos($new_script, "%Verification link%") > -1 && $verification_link !== NULL ) {
3105
  $ver_link = $row->mail_mode_user ? "<a href =" . add_query_arg(array(
3106
  'gid' => $_SESSION['gid'],
3107
- 'h' => $_SESSION['hash'][$index] . '@' . str_replace("*", "", $send_to),
3108
  ), get_post_permalink($mail_verification_post_id)) . ">" . add_query_arg(array(
3109
  'gid' => $_SESSION['gid'],
3110
- 'h' => $_SESSION['hash'][$index] . '@' . str_replace("*", "", $send_to),
3111
  ), get_post_permalink($mail_verification_post_id)) . "</a><br/>" : add_query_arg(array(
3112
  'gid' => $_SESSION['gid'],
3113
- 'h' => $_SESSION['hash'][$index] . '@' . str_replace("*", "", $send_to),
3114
  ), get_post_permalink($mail_verification_post_id));
3115
  $body = $row->mail_verify ? str_replace("%Verification link%", $ver_link, $new_script) : str_replace("%Verification link%", '', $new_script);
3116
  }
 
 
3117
  if ( $recipient ) {
3118
  if ( $row->mail_attachment_user ) {
3119
  $remove_parrent_array_user = new RecursiveIteratorIterator(new RecursiveArrayIterator($attachment_user));
@@ -3122,7 +3126,7 @@ class FMModelForm_maker_fmc {
3122
  else {
3123
  $attachment_user = array();
3124
  }
3125
- $send = wp_mail(str_replace(' ', '', $recipient), $subject, stripslashes($body), $headers, $attachment_user);
3126
  }
3127
  }
3128
  }
@@ -3130,19 +3134,10 @@ class FMModelForm_maker_fmc {
3130
  }
3131
 
3132
  if ( $row->sendemail ) {
3133
- if ( $row->reply_to ) {
3134
- $replyto = isset($_POST['wdform_' . $row->reply_to . "_element" . $id]) ? $_POST['wdform_' . $row->reply_to . "_element" . $id] : NULL;
3135
- if ( !isset($replyto) ) {
3136
- $replyto = $row->reply_to;
3137
- }
3138
- }
3139
- $recipient = $row->mail;
3140
- if ( $row->mail_subject ) {
3141
- $subject = $row->mail_subject;
3142
- }
3143
- else {
3144
- $subject = $row->title;
3145
- }
3146
  $fromname = $row->from_name;
3147
  $attachment = array();
3148
  if ( !WDCFM()->is_demo ) {
@@ -3172,6 +3167,7 @@ class FMModelForm_maker_fmc {
3172
  $list = wordwrap($list, 1000, "\n", TRUE);
3173
  $new_script = str_replace(array( '<p>', '</p>' ), '', $row->script_mail);
3174
  }
 
3175
  foreach ( $label_order_original as $key => $label_each ) {
3176
  $type = $label_type[$key];
3177
  $key1 = $type == 'type_hidden' ? $label_each : $key;
@@ -3203,32 +3199,14 @@ class FMModelForm_maker_fmc {
3203
  }
3204
  }
3205
  if ( $row->from_mail ) {
3206
- $from = isset($_POST['wdform_' . $row->from_mail . "_element" . $id]) ? $_POST['wdform_' . $row->from_mail . "_element" . $id] : NULL;
3207
- if ( !isset($from) ) {
3208
- $from = $row->from_mail;
3209
- }
3210
- if ( $fromname != '' ) {
3211
- $from = "From: '" . $fromname . "' <" . $from . ">" . "\r\n";
3212
- }
3213
- else {
3214
- $from = "From: '' <" . $from . ">" . "\r\n";
3215
- }
3216
- }
3217
- else {
3218
- $from = "";
3219
- }
3220
- $cca = $row->mail_cc;
3221
- $bcc = $row->mail_bcc;
3222
- $headers = $from . " Content-Type: " . $content_type . "; charset=\"" . get_option('blog_charset') . "\"\n";
3223
- if ( $replyto ) {
3224
- $headers .= "Reply-To: <" . $replyto . ">\r\n";
3225
- }
3226
- if ( $cca ) {
3227
- $headers .= "Cc: " . $cca . "\r\n";
3228
- }
3229
- if ( $bcc ) {
3230
- $headers .= "Bcc: " . $bcc . "\r\n";
3231
- }
3232
  $custom_fields_value = array( $ip, $useremail, $username, $subid, $list );
3233
  foreach ( $custom_fields as $key => $custom_field ) {
3234
  if ( strpos($new_script, "%" . $custom_field . "%") > -1 ) {
@@ -3251,20 +3229,17 @@ class FMModelForm_maker_fmc {
3251
  else {
3252
  $attachment = array();
3253
  }
3254
- if ( $recipient ) {
3255
- $send = wp_mail(str_replace(' ', '', $recipient), $subject, stripslashes($admin_body), $headers, $attachment);
3256
- }
3257
  }
3258
  $_SESSION['error_or_no' . $id] = 0;
3259
  $msg = addslashes(__('Your form was successfully submitted.', WDCFM()->prefix));
3260
- $succes = 1;
3261
  if ( $row->sendemail ) {
3262
  if ( $row->mail || $row->send_to ) {
3263
  if ( $send ) {
3264
  if ( $send !== TRUE ) {
3265
  $_SESSION['error_or_no' . $id] = 1;
3266
  $msg = addslashes(__('Error, email was not sent.', WDCFM()->prefix));
3267
- $succes = 0;
3268
  }
3269
  else {
3270
  $_SESSION['error_or_no' . $id] = 0;
@@ -3279,7 +3254,7 @@ class FMModelForm_maker_fmc {
3279
  'admin_body' => $admin_body,
3280
  'body' => $body,
3281
  'subject' => $subject,
3282
- 'headers' => $headers,
3283
  'attachment' => $attachment,
3284
  'attachment_user' => $attachment_user,
3285
  ) : array();
4
  * Class FMModelForm_maker_fmc
5
  */
6
  class FMModelForm_maker_fmc {
7
+
8
+ public $fm_css_content;
9
  /**
10
  * @param $id
11
  * @param string $type
58
  $wp_upload_dir = wp_upload_dir();
59
  $frontend_dir ='/form-maker-frontend/';
60
  $fm_style = $wp_upload_dir['baseurl'] . $frontend_dir . 'css/fm-style-' . $theme_id . '.css';
61
+ $fm_style_dir = $wp_upload_dir['basedir'] . $frontend_dir . 'css/fm-style-' . $theme_id . '.css';
62
+
63
+ if( !file_exists( $fm_style_dir ) ) {
64
+ if( function_exists('wp_add_inline_style') ) {
65
+ wp_add_inline_style( 'fm-frontend', $this->fm_css_content );
66
+ } else {
67
+ echo '<style>'.$this->fm_css_content.'</style>';
68
+ }
69
+ } else {
70
+ wp_register_style('fm-style-' . $theme_id, $fm_style, array(), $cssver);
71
+ wp_enqueue_style('fm-style-' . $theme_id);
72
+ }
73
+
74
  $label_id = array();
75
  $label_type = array();
76
  $label_all = explode('#****#', $row->label_order);
715
  ( !empty($form_theme['SCPBGColor']) ? 'background-color:' . $form_theme['SCPBGColor'] . ';' : '').
716
  ( !empty($form_theme['SCPBoxShadow']) ? 'box-shadow:' . $form_theme['SCPBoxShadow'] . ';' : '').
717
  ( (isset($form_theme['SCPBorderRadius']) && $form_theme['SCPBorderRadius'] !== '') ? 'border-radius:' . $form_theme['SCPBorderRadius'] . 'px;' : '').
718
+ ( !empty($form_theme['SCPWidth']) ? 'min-width:' . $form_theme['SCPWidth'] . 'px;' : '').
719
  '}';
720
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .radio-div input[type="radio"]:checked + label span:after {'.
721
  ( !empty($form_theme['SCCPWidth']) ? 'content:""; display: block;' : '').
749
  ( !empty($form_theme['MCPBGColor']) ? 'background-color:' . $form_theme['MCPBGColor'] . ';' : '').
750
  ( !empty($form_theme['MCPBoxShadow']) ? 'box-shadow:' . $form_theme['MCPBoxShadow'] . ';' : '').
751
  ( (isset($form_theme['MCPBorderRadius']) && $form_theme['MCPBorderRadius'] !== '') ? 'border-radius:' . $form_theme['MCPBorderRadius'] . 'px;' : '').
752
+ ( !empty($form_theme['MCPWidth']) ? 'min-width:' . $form_theme['MCPWidth'] . 'px;' : '').
753
  '}';
754
  $css_content .= '.fm-form-container.fm-theme' . $theme_id . ' .fm-form .checkbox-div input[type="checkbox"]:checked + label span:after {'.
755
  ( (!empty($form_theme['MCCPBackground']) || !empty($form_theme['MCCPBGColor'])) ? 'content:""; display: block;' : '').
1074
  $theme = preg_replace($pattern, ' ', $theme);
1075
  $css_content .= str_replace('[SITE_ROOT]', WDCFM()->plugin_url, $theme);
1076
  }
1077
+ $this->fm_css_content = $css_content;
1078
  file_put_contents($frontend_css, $css_content);
1079
  }
1080
 
2014
  "***grading***",
2015
  "***br***",
2016
  ), array( " ", "", " ", " ", " ", ", " ), addslashes($value));
2017
+
2018
  if( $type == 'type_checkbox' ) {
2019
  $fvals['{' . $i . '}'] = rtrim( $fvals['{' . $i . '}'], ', ' );
2020
  }
2412
  }
2413
  }
2414
  $ip = $_SERVER['REMOTE_ADDR'];
 
2415
  global $wpdb;
2416
  $row = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "formmaker WHERE id=%d", $id));
2417
  if ( !$row->form_front ) {
3005
  else {
3006
  $subject = $row->title;
3007
  }
 
 
 
3008
  $attachment_user = array();
3009
  if ( !WDCFM()->is_demo ) {
3010
  for ( $k = 0; $k < count($all_files); $k++ ) {
3056
  $subject = str_replace("%" . $label_each . "%", $new_value, $subject);
3057
  }
3058
  }
3059
+
3060
+ $header_arr = array();
3061
+
3062
  if ( $row->mail_from_user != '' ) {
3063
+ $header_arr['from'] = $row->mail_from_user;
3064
+ $header_arr['from_name'] = $fromname;
3065
+ }
3066
+ $header_arr['content_type'] = $content_type;
3067
+ $header_arr['charset'] = 'charset=UTF-8';
3068
+ $header_arr['reply_to'] = $row->reply_to_user;
3069
+ $header_arr['cc'] = $row->mail_cc_user;
3070
+ $header_arr['bcc'] = $row->mail_bcc_user;
3071
+
 
 
 
 
 
 
 
 
 
 
 
3072
  $custom_fields_value = array( $ip, $useremail, $username, $subid, $list_user );
3073
  foreach ( $custom_fields as $key => $custom_field ) {
3074
  if ( strpos($new_script, "%" . $custom_field . "%") > -1 ) {
3102
  $mail_verification_post_id = (int) $wpdb->get_var($wpdb->prepare('SELECT mail_verification_post_id FROM ' . $wpdb->prefix . 'formmaker WHERE id="%d"', $id));
3103
  $verification_link = get_post($mail_verification_post_id);
3104
  foreach ( $send_tos as $index => $send_to ) {
3105
+ $send_to = str_replace('*', '', $send_to);
3106
  if ( strpos($new_script, "%Verification link%") > -1 && $verification_link !== NULL ) {
3107
  $ver_link = $row->mail_mode_user ? "<a href =" . add_query_arg(array(
3108
  'gid' => $_SESSION['gid'],
3109
+ 'h' => $_SESSION['hash'][$index] . '@' . $send_to,
3110
  ), get_post_permalink($mail_verification_post_id)) . ">" . add_query_arg(array(
3111
  'gid' => $_SESSION['gid'],
3112
+ 'h' => $_SESSION['hash'][$index] . '@' . $send_to,
3113
  ), get_post_permalink($mail_verification_post_id)) . "</a><br/>" : add_query_arg(array(
3114
  'gid' => $_SESSION['gid'],
3115
+ 'h' => $_SESSION['hash'][$index] . '@' . $send_to,
3116
  ), get_post_permalink($mail_verification_post_id));
3117
  $body = $row->mail_verify ? str_replace("%Verification link%", $ver_link, $new_script) : str_replace("%Verification link%", '', $new_script);
3118
  }
3119
+
3120
+ $recipient = isset($_POST['wdform_' . str_replace('*', '', $send_to) . "_element" . $id]) ? $_POST['wdform_' . $send_to . "_element" . $id] : NULL;
3121
  if ( $recipient ) {
3122
  if ( $row->mail_attachment_user ) {
3123
  $remove_parrent_array_user = new RecursiveIteratorIterator(new RecursiveArrayIterator($attachment_user));
3126
  else {
3127
  $attachment_user = array();
3128
  }
3129
+ WDW_FMC_Library::mail($recipient, $subject, $body, $header_arr, $attachment_user);
3130
  }
3131
  }
3132
  }
3134
  }
3135
 
3136
  if ( $row->sendemail ) {
3137
+ $recipient = $row->mail ? $row->mail : '';
3138
+
3139
+ $subject = $row->mail_subject ? $row->mail_subject : $row->title;
3140
+
 
 
 
 
 
 
 
 
 
3141
  $fromname = $row->from_name;
3142
  $attachment = array();
3143
  if ( !WDCFM()->is_demo ) {
3167
  $list = wordwrap($list, 1000, "\n", TRUE);
3168
  $new_script = str_replace(array( '<p>', '</p>' ), '', $row->script_mail);
3169
  }
3170
+ $header_arr = array();
3171
  foreach ( $label_order_original as $key => $label_each ) {
3172
  $type = $label_type[$key];
3173
  $key1 = $type == 'type_hidden' ? $label_each : $key;
3199
  }
3200
  }
3201
  if ( $row->from_mail ) {
3202
+ $header_arr['from'] = isset($_POST['wdform_' . $row->from_mail . "_element" . $id]) ? $_POST['wdform_' . $row->from_mail . "_element" . $id] : $row->from_mail;
3203
+ $header_arr['from_name'] = $fromname;
3204
+ }
3205
+ $header_arr['content_type'] = $content_type;
3206
+ $header_arr['charset'] = 'charset=UTF-8';
3207
+ $header_arr['reply_to'] = isset($_POST['wdform_' . $row->reply_to . "_element" . $id]) ? $_POST['wdform_' . $row->reply_to . "_element" . $id] : $row->reply_to;
3208
+ $header_arr['cc'] = $row->mail_cc;
3209
+ $header_arr['bcc'] = $row->mail_bcc;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3210
  $custom_fields_value = array( $ip, $useremail, $username, $subid, $list );
3211
  foreach ( $custom_fields as $key => $custom_field ) {
3212
  if ( strpos($new_script, "%" . $custom_field . "%") > -1 ) {
3229
  else {
3230
  $attachment = array();
3231
  }
3232
+
3233
+ $send = WDW_FMC_Library::mail($recipient, $subject, $admin_body, $header_arr, $attachment);
 
3234
  }
3235
  $_SESSION['error_or_no' . $id] = 0;
3236
  $msg = addslashes(__('Your form was successfully submitted.', WDCFM()->prefix));
 
3237
  if ( $row->sendemail ) {
3238
  if ( $row->mail || $row->send_to ) {
3239
  if ( $send ) {
3240
  if ( $send !== TRUE ) {
3241
  $_SESSION['error_or_no' . $id] = 1;
3242
  $msg = addslashes(__('Error, email was not sent.', WDCFM()->prefix));
 
3243
  }
3244
  else {
3245
  $_SESSION['error_or_no' . $id] = 0;
3254
  'admin_body' => $admin_body,
3255
  'body' => $body,
3256
  'subject' => $subject,
3257
+ 'headers' => $header_arr,
3258
  'attachment' => $attachment,
3259
  'attachment_user' => $attachment_user,
3260
  ) : array();
frontend/views/form_maker.php CHANGED
@@ -1099,7 +1099,12 @@ class FMViewForm_maker_fmc {
1099
  }
1100
  case 'type_date': { //Todo: Depricated.
1101
  wp_enqueue_script('jquery-ui-datepicker');
1102
- wp_add_inline_script('jquery-ui-datepicker', WDW_FMC_Library::localize_ui_datepicker());
 
 
 
 
 
1103
 
1104
  $params_names = array(
1105
  'w_field_label_size',
@@ -1672,10 +1677,20 @@ class FMViewForm_maker_fmc {
1672
  $form_maker_front_end .= '</form>';
1673
  $jsversion = $row->jsversion ? $row->jsversion : 1;
1674
  $wp_upload_dir = wp_upload_dir();
 
 
1675
 
1676
  WDW_FMC_Library::create_js($form_id);
1677
- wp_register_script('fm-script-' . $form_id, $wp_upload_dir['baseurl'] . '/form-maker-frontend/js/fm-script-' . $form_id . '.js', array(), $jsversion);
1678
- wp_enqueue_script('fm-script-' . $form_id);
 
 
 
 
 
 
 
 
1679
 
1680
  $_GET['addon_view'] = 'frontend';
1681
  $_GET['form_id'] = $form_id;
@@ -1917,7 +1932,12 @@ class FMViewForm_maker_fmc {
1917
  if ( $onload_js ) {
1918
  $onload_js = 'jQuery(document).ready(function () {' . $onload_js . '})';
1919
  }
1920
- wp_add_inline_script('fm-script-' . $id, $onload_js);
 
 
 
 
 
1921
 
1922
  return WDW_FMC_Library::fm_container($form->theme, $fm_form);
1923
  }
1099
  }
1100
  case 'type_date': { //Todo: Depricated.
1101
  wp_enqueue_script('jquery-ui-datepicker');
1102
+ if ( function_exists('wp_add_inline_script') ) { // Since Wordpress 4.5.0
1103
+ wp_add_inline_script('jquery-ui-datepicker', WDW_FMC_Library::localize_ui_datepicker());
1104
+ }
1105
+ else {
1106
+ echo '<script>' . WDW_FMC_Library::localize_ui_datepicker() . '</script>';
1107
+ }
1108
 
1109
  $params_names = array(
1110
  'w_field_label_size',
1677
  $form_maker_front_end .= '</form>';
1678
  $jsversion = $row->jsversion ? $row->jsversion : 1;
1679
  $wp_upload_dir = wp_upload_dir();
1680
+ $fm_script = $wp_upload_dir['baseurl'] . '/form-maker-frontend/js/fm-script-' . $form_id . '.js';
1681
+ $fm_script_dir = $wp_upload_dir['basedir'] . '/form-maker-frontend/js/fm-script-' . $form_id . '.js';
1682
 
1683
  WDW_FMC_Library::create_js($form_id);
1684
+ if ( !file_exists($fm_script_dir) ) {
1685
+ if ( function_exists('wp_add_inline_script') ) {
1686
+ wp_add_inline_script('fm-frontend', WDW_FMC_Library::$fm_js_content);
1687
+ } else {
1688
+ echo '<script>' . WDW_FMC_Library::$fm_js_content . '</script>';
1689
+ }
1690
+ } else {
1691
+ wp_register_script('fm-script-' . $form_id, $fm_script, array(), $jsversion);
1692
+ wp_enqueue_script('fm-script-' . $form_id);
1693
+ }
1694
 
1695
  $_GET['addon_view'] = 'frontend';
1696
  $_GET['form_id'] = $form_id;
1932
  if ( $onload_js ) {
1933
  $onload_js = 'jQuery(document).ready(function () {' . $onload_js . '})';
1934
  }
1935
+ if ( function_exists('wp_add_inline_script') ) { // Since Wordpress 4.5.0
1936
+ wp_add_inline_script('fm-script-' . $id, $onload_js);
1937
+ }
1938
+ else {
1939
+ echo '<script>' . $onload_js . '</script>';
1940
+ }
1941
 
1942
  return WDW_FMC_Library::fm_container($form->theme, $fm_form);
1943
  }
js/add_field.js CHANGED
@@ -942,7 +942,7 @@ function edit(id) {
942
  w_field_range_step = document.getElementById(id + "_range_stepform_id_temp").value;
943
  w_field_value1 = document.getElementById(id + "_elementform_id_temp0").getAttribute("aria-valuenow");
944
  w_field_value2 = document.getElementById(id + "_elementform_id_temp1").getAttribute("aria-valuenow");
945
- atrs = return_attributes(id + '_elementform_id_temp');
946
  w_attr_name = atrs[0];
947
  w_attr_value = atrs[1];
948
  w_mini_labels = [document.getElementById(id + "_mini_label_from").innerHTML, document.getElementById(id + "_mini_label_to").innerHTML];
@@ -2723,16 +2723,16 @@ function change_regExpAlert(regAlert, id) {
2723
  document.getElementById(id).value = regAlert;
2724
  }
2725
 
2726
- function create_additional_attributes(i, w_attr_name) {
2727
  var label = jQuery('<label class="fm-field-label">Additional Attributes</label>');
2728
- var button = jQuery('<span class="fm-add-attribute dashicons dashicons-plus-alt" onClick="add_attr(' + i + ', \'type_text\')" title="Add"></span>');
2729
  var attr_table = jQuery('<div id="attributes" class="fm-width-100"></div>');
2730
  var attr_header = jQuery('<div idi="0" class="fm-width-100"><div class="fm-header-label fm-width-45">Name</div><div class="fm-header-label fm-width-45">Value</div><div></div></div>');
2731
  attr_table.append(attr_header);
2732
  attr_table.hide();
2733
  n = w_attr_name.length;
2734
  for (j = 1; j <= n; j++) {
2735
- var attr = jQuery('<div idi="' + j + '" id="attr_row_' + j + '" class="fm-width-100"><div class="fm-table-col fm-width-45"><input type="text" class="fm-field-choice" id="attr_name' + j + '" value="' + w_attr_name[j - 1] + '" onChange="change_attribute_name(\'' + i + '\', this, \'type_text\')" /></div><div class="fm-table-col fm-width-45"><input type="text" class="fm-field-choice" id="attr_value' + j + '" value="' + w_attr_value[j - 1] + '" onChange="change_attribute_value(' + i + ', ' + j + ', \'type_text\')" /></div><div class="fm-table-col"><span class="fm-remove-attribute dashicons dashicons-dismiss" id="el_choices' + j + '_remove" onClick="remove_attr(' + j + ', ' + i + ', \'type_text\')"></span></div></div>');
2736
  attr_table.append(attr);
2737
  attr_table.show();
2738
  }
@@ -2749,7 +2749,7 @@ function add_attr(i, type) {
2749
  j = parseInt(el_attr_table.children().last().attr('idi')) + 1;
2750
  w_attr_name = "attribute";
2751
  w_attr_value = "value";
2752
- var attr = jQuery('<div idi="' + j + '" id="attr_row_' + j + '" class="fm-width-100"><div class="fm-table-col fm-width-45"><input type="text" class="fm-field-choice" id="attr_name' + j + '" value="' + w_attr_name + '" onChange="change_attribute_name(\'' + i + '\', this, \'type_text\')" /></div><div class="fm-table-col fm-width-45"><input type="text" class="fm-field-choice" id="attr_value' + j + '" value="' + w_attr_value + '" onChange="change_attribute_value(' + i + ', ' + j + ', \'type_text\')" /></div><div class="fm-table-col"><span class="fm-remove-attribute dashicons dashicons-dismiss" id="el_choices' + j + '_remove" onClick="remove_attr(' + j + ', ' + i + ', \'type_text\')"></span></div></div>');
2753
  el_attr_table.append(attr);
2754
  refresh_attr(i, type);
2755
 
@@ -2998,7 +2998,7 @@ function type_text(i, w_field_label, w_field_label_size, w_field_label_pos, w_hi
2998
  advanced_options_container.append(create_custom_regexp(i, w_regExp_status, w_regExp_value));
2999
  advanced_options_container.append(create_case_sensitive(i, w_regExp_status, w_regExp_arg));
3000
  advanced_options_container.append(create_alert_message(i, w_regExp_status, w_regExp_alert));
3001
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
3002
 
3003
  // Preview
3004
  element = 'input';
@@ -3224,7 +3224,7 @@ function type_file_upload(i, w_field_label, w_field_label_size, w_field_label_po
3224
 
3225
  advanced_options_container.append(create_class(i, w_class));
3226
  advanced_options_container.append(create_multiple_upload(i, w_multiple));
3227
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
3228
 
3229
  // Preview
3230
  element = 'input';
@@ -3449,7 +3449,7 @@ function type_textarea(i, w_field_label, w_field_label_size, w_field_label_pos,
3449
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
3450
  advanced_options_container.append(create_unique_values(i, w_unique));
3451
  advanced_options_container.append(create_class(i, w_class));
3452
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
3453
 
3454
  // Preview
3455
  element = 'textarea';
@@ -3616,7 +3616,7 @@ function type_spinner(i, w_field_label, w_field_label_size, w_field_label_pos, w
3616
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
3617
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
3618
  advanced_options_container.append(create_class(i, w_class));
3619
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
3620
 
3621
  // Preview
3622
  var adding_type = document.createElement("input");
@@ -3727,7 +3727,10 @@ function type_spinner(i, w_field_label, w_field_label_size, w_field_label_pos, w
3727
 
3728
  jQuery("#" + i + "_elementform_id_temp").spinner();
3729
  var spinner = jQuery("#" + i + "_elementform_id_temp").spinner();
3730
- spinner.spinner("value", w_field_value);
 
 
 
3731
  jQuery("#" + i + "_elementform_id_temp").spinner({min: w_field_min_value});
3732
  jQuery("#" + i + "_elementform_id_temp").spinner({max: w_field_max_value});
3733
  jQuery("#" + i + "_elementform_id_temp").spinner({step: w_field_step});
@@ -3984,7 +3987,7 @@ function type_date_new(i, w_field_label, w_field_label_size, w_field_label_pos,
3984
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
3985
  advanced_options_container.append(create_class(i, w_class));
3986
  advanced_options_container.append(create_show_date_picker_button(i, w_show_image, 'new_date'));
3987
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
3988
 
3989
  // Preview.
3990
  var adding_type = document.createElement("input");
@@ -4622,7 +4625,7 @@ function type_own_select(i, w_field_label, w_field_label_size, w_field_label_pos
4622
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
4623
  advanced_options_container.append(create_class(i, w_class));
4624
  advanced_options_container.append(create_enable_options_value(i, w_value_disabled, 'select'));
4625
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
4626
 
4627
  // Preview.
4628
  n = w_choices.length;
@@ -5164,7 +5167,7 @@ function type_radio(i, w_field_label, w_field_label_size, w_field_label_pos, w_f
5164
  advanced_options_container.append(create_randomize(i, w_randomize));
5165
  advanced_options_container.append(create_enable_options_value(i, w_value_disabled, 'radio'));
5166
  advanced_options_container.append(create_allow_other(i, w_allow_other, 'radio'));
5167
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
5168
 
5169
  // Preview.
5170
  element = 'input';
@@ -5346,7 +5349,7 @@ function type_checkbox(i, w_field_label, w_field_label_size, w_field_label_pos,
5346
  advanced_options_container.append(create_randomize(i, w_randomize));
5347
  advanced_options_container.append(create_enable_options_value(i, w_value_disabled, 'checkbox'));
5348
  advanced_options_container.append(create_allow_other(i, w_allow_other, 'checkbox'));
5349
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
5350
 
5351
  // Preview.
5352
  element = 'input';
@@ -5708,7 +5711,7 @@ function type_submit_reset(i, w_submit_title , w_reset_title , w_class, w_act, w
5708
  var advanced_options_container = jQuery('<div class="inside"></div>');
5709
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
5710
  advanced_options_container.append(create_class(i, w_class));
5711
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
5712
 
5713
  // Preview.
5714
  var br = document.createElement('br');
@@ -6052,7 +6055,7 @@ function type_page_break(i,w_page_title, w_title , w_type , w_class, w_check, w_
6052
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
6053
  advanced_options_container.append(create_next_class(i, w_class));
6054
  advanced_options_container.append(create_previous_class(i, w_class));
6055
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
6056
 
6057
  // Preview.
6058
  var br = document.createElement('br');
@@ -6360,7 +6363,7 @@ function type_name(i, w_field_label, w_field_label_size, w_field_label_pos, w_hi
6360
  advanced_options_container.append(create_unique_values(i, w_unique));
6361
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
6362
  advanced_options_container.append(create_class(i, w_class));
6363
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
6364
 
6365
  // Preview.
6366
  var br = document.createElement('br');
@@ -6646,7 +6649,7 @@ function type_submitter_mail(i, w_field_label, w_field_label_size, w_field_label
6646
  advanced_options_container.append(create_unique_values(i, w_unique));
6647
  advanced_options_container.append(create_field_label_size(i, w_field_label_size, '\'' + i + '_label_sectionform_id_temp\'', '\'' + i + '_1_label_sectionform_id_temp\''));
6648
  advanced_options_container.append(create_class(i, w_class));
6649
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
6650
 
6651
  // Preview.
6652
  element = 'input';
@@ -6835,7 +6838,7 @@ function type_phone_new(i, w_field_label, w_field_label_size, w_field_label_pos,
6835
  advanced_options_container.append(create_unique_values(i, w_unique));
6836
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
6837
  advanced_options_container.append(create_class(i, w_class));
6838
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
6839
 
6840
  // Preview.
6841
  var br = document.createElement('br');
@@ -6938,7 +6941,7 @@ function type_phone_new(i, w_field_label, w_field_label_size, w_field_label_pos,
6938
  label_top(i);
6939
 
6940
  change_class(w_class, i);
6941
- refresh_attr(i, 'type_name');
6942
 
6943
  jQuery("#" + i + "_elementform_id_temp").intlTelInput({
6944
  nationalMode: false,
@@ -7264,7 +7267,7 @@ function type_address(i, w_field_label, w_field_label_size, w_field_label_pos, w
7264
  advanced_options_container.append(create_disable_address_fields(i, w_disabled_fields, w_mini_labels));
7265
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
7266
  advanced_options_container.append(create_class(i, w_class));
7267
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
7268
 
7269
  // Preview.
7270
  var adding_type = document.createElement("input");
@@ -7643,7 +7646,7 @@ function type_mark_map(i, w_field_label, w_field_label_size, w_field_label_pos,
7643
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
7644
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
7645
  advanced_options_container.append(create_class(i, w_class));
7646
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
7647
 
7648
  // Preview.
7649
  element = 'div';
@@ -7751,7 +7754,7 @@ function type_country(i, w_field_label, w_field_label_size, w_hide_label, w_coun
7751
  advanced_options_container.append(create_edit_country_list(i));
7752
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
7753
  advanced_options_container.append(create_class(i, w_class));
7754
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
7755
 
7756
  // Preview.
7757
  var br = document.createElement('br');
@@ -8163,7 +8166,7 @@ function type_date_fields(i, w_field_label, w_field_label_size, w_field_label_po
8163
  advanced_options_container.append(jQuery('<div class="notice notice-info"><p>Leave the second field empty and the current year will be used automatically. For a specific year (other than current) fill out both the start and finish points of the range.</p></div>'));
8164
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
8165
  advanced_options_container.append(create_class(i, w_class));
8166
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
8167
 
8168
  // Preview.
8169
  var br = document.createElement('br');
@@ -8470,7 +8473,7 @@ function type_paypal_price_new(i, w_field_label, w_field_label_size, w_field_lab
8470
  advanced_options_container.append(create_hide_payment_currency(i, w_currency));
8471
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
8472
  advanced_options_container.append(create_class(i, w_class));
8473
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
8474
 
8475
  // Preview
8476
  var adding_type = document.createElement("input");
@@ -9004,7 +9007,7 @@ function type_paypal_select(i, w_field_label, w_field_label_size, w_field_label_
9004
  advanced_options_container.append(create_payment_property(i));
9005
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
9006
  advanced_options_container.append(create_class(i, w_class));
9007
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
9008
 
9009
  // Preview.
9010
  var adding_type = document.createElement("input");
@@ -9353,7 +9356,7 @@ function type_paypal_radio(i, w_field_label, w_field_label_size, w_field_label_p
9353
  advanced_options_container.append(create_payment_property(i));
9354
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
9355
  advanced_options_container.append(create_class(i, w_class));
9356
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
9357
 
9358
  // Preview.
9359
  var br3 = document.createElement('br');
@@ -9583,7 +9586,7 @@ function type_paypal_checkbox(i, w_field_label, w_field_label_size, w_field_labe
9583
  advanced_options_container.append(create_payment_property(i));
9584
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
9585
  advanced_options_container.append(create_class(i, w_class));
9586
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
9587
 
9588
  // Preview.
9589
  element = 'input';
@@ -9810,7 +9813,7 @@ function type_paypal_shipping(i, w_field_label, w_field_label_size, w_field_labe
9810
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
9811
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
9812
  advanced_options_container.append(create_class(i, w_class));
9813
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
9814
 
9815
  // Preview.
9816
  element = 'input';
@@ -10215,7 +10218,7 @@ function type_map(i, w_center_x, w_center_y, w_long, w_lat, w_zoom, w_width, w_h
10215
  var advanced_options_container = jQuery('<div class="inside"></div>');
10216
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
10217
  advanced_options_container.append(create_class(i, w_class));
10218
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
10219
 
10220
  // Preview.
10221
  var br2 = document.createElement('br');
@@ -10494,7 +10497,7 @@ function type_time(i, w_field_label, w_field_label_size, w_field_label_pos, w_hi
10494
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
10495
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
10496
  advanced_options_container.append(create_class(i, w_class));
10497
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
10498
 
10499
  // Preview.
10500
  var adding_type = document.createElement("input");
@@ -10779,7 +10782,7 @@ function type_send_copy(i, w_field_label, w_field_label_size, w_field_label_pos,
10779
  var advanced_options_container = jQuery('<div class="inside"></div>');
10780
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
10781
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
10782
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
10783
 
10784
  // Preview.
10785
  element = 'input';
@@ -11066,7 +11069,7 @@ function type_date_range(i, w_field_label, w_field_label_size, w_field_label_pos
11066
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
11067
  advanced_options_container.append(create_class(i, w_class));
11068
  advanced_options_container.append(create_show_date_picker_button(i, w_show_image, 'date_range'));
11069
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
11070
 
11071
  // Preview.
11072
  var adding_type = document.createElement("input");
@@ -11636,7 +11639,7 @@ function type_star_rating(i, w_field_label, w_field_label_size, w_field_label_po
11636
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
11637
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
11638
  advanced_options_container.append(create_class(i, w_class));
11639
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
11640
 
11641
  // Preview
11642
  var adding_type = document.createElement("input");
@@ -11812,7 +11815,7 @@ function type_scale_rating(i, w_field_label, w_field_label_size, w_field_label_p
11812
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
11813
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
11814
  advanced_options_container.append(create_class(i, w_class));
11815
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
11816
 
11817
  // Preview
11818
  var adding_type = document.createElement("input");
@@ -12096,7 +12099,7 @@ function type_slider(i, w_field_label, w_field_label_size, w_field_label_pos, w_
12096
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12097
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
12098
  advanced_options_container.append(create_class(i, w_class));
12099
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
12100
 
12101
  // Preview
12102
  var adding_type = document.createElement("input");
@@ -12318,7 +12321,7 @@ function type_range(i, w_field_label, w_field_label_size, w_field_label_pos, w_h
12318
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12319
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
12320
  advanced_options_container.append(create_class(i, w_class));
12321
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
12322
 
12323
  // Preview
12324
  var adding_type = document.createElement("input");
@@ -12482,12 +12485,12 @@ function type_range(i, w_field_label, w_field_label_size, w_field_label_pos, w_h
12482
 
12483
  jQuery("#" + i + "_elementform_id_temp0").spinner();
12484
  var spinner1 = jQuery("#" + i + "_elementform_id_temp0").spinner();
12485
- spinner1.spinner("value", w_field_value1);
12486
  jQuery("#" + i + "_elementform_id_temp0").spinner({step: w_field_range_step});
12487
 
12488
  jQuery("#" + i + "_elementform_id_temp1").spinner();
12489
  var spinner2 = jQuery("#" + i + "_elementform_id_temp1").spinner();
12490
- spinner2.spinner("value", w_field_value2);
12491
  jQuery("#" + i + "_elementform_id_temp1").spinner({step: w_field_range_step});
12492
 
12493
  jQuery(document).ready(function () {
@@ -12576,7 +12579,7 @@ function type_hidden(i, w_name, w_value, w_attr_name, w_attr_value) {
12576
 
12577
  var advanced_options_container = jQuery('<div class="inside"></div>');
12578
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12579
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
12580
 
12581
  // Preview
12582
  element = 'input';
@@ -12708,7 +12711,7 @@ function type_captcha(i,w_field_label, w_field_label_size, w_field_label_pos, w_
12708
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12709
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
12710
  advanced_options_container.append(create_class(i, w_class));
12711
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
12712
 
12713
  // Preview
12714
  element = 'img';
@@ -12905,7 +12908,7 @@ function type_arithmetic_captcha(i,w_field_label, w_field_label_size, w_field_la
12905
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12906
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
12907
  advanced_options_container.append(create_class(i, w_class));
12908
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
12909
 
12910
  // Preview
12911
  var adding_type = document.createElement("input");
@@ -13058,7 +13061,7 @@ function type_phone(i, w_field_label, w_field_label_size, w_field_label_pos, w_h
13058
  advanced_options_container.append(create_unique_values(i, w_unique));
13059
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
13060
  advanced_options_container.append(create_class(i, w_class));
13061
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
13062
 
13063
  // Preview.
13064
  var br1 = document.createElement('br');
@@ -13306,7 +13309,7 @@ function type_password(i, w_field_label, w_field_label_size, w_field_label_pos,
13306
  advanced_options_container.append(create_confirmation_password_label(i, w_verification, w_verification_label));
13307
  advanced_options_container.append(create_field_label_size(i, w_field_label_size, '\'' + i + '_label_sectionform_id_temp\'', '\'' + i + '_1_label_sectionform_id_temp\''));
13308
  advanced_options_container.append(create_class(i, w_class));
13309
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
13310
 
13311
  // Preview.
13312
  element = 'input';
@@ -13547,7 +13550,7 @@ function type_button(i, w_title , w_func , w_class, w_attr_name, w_attr_value) {
13547
  var advanced_options_container = jQuery('<div class="inside"></div>');
13548
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
13549
  advanced_options_container.append(create_class(i, w_class));
13550
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
13551
 
13552
  // Preview.
13553
  element = 'button';
@@ -13620,7 +13623,7 @@ function create_grading_total(i, w_total) {
13620
  }
13621
 
13622
  function check_isnum_or_minus(e) {
13623
- var chCode1 = e.which || e.keyCode;
13624
  if (chCode1 != 45) {
13625
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
13626
  return false;
@@ -13628,6 +13631,15 @@ function check_isnum_or_minus(e) {
13628
  else if(e.target.selectionStart != 0 || e.target.value[0] == '-') {
13629
  return false;
13630
  }
 
 
 
 
 
 
 
 
 
13631
  return true;
13632
  }
13633
 
@@ -13821,7 +13833,7 @@ function type_grading(i, w_field_label, w_field_label_size, w_field_label_pos, w
13821
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
13822
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
13823
  advanced_options_container.append(create_class(i, w_class));
13824
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
13825
 
13826
  // Preview.
13827
  element = 'input';
@@ -14202,7 +14214,7 @@ function type_matrix(i, w_field_label, w_field_label_size, w_field_label_pos, w_
14202
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
14203
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
14204
  advanced_options_container.append(create_class(i, w_class));
14205
- advanced_options_container.append(create_additional_attributes(i, w_attr_name));
14206
 
14207
  // Preview.
14208
  element = 'input';
@@ -15702,7 +15714,7 @@ function gen_form_fields() {
15702
  w_field_value1 = document.getElementById(id + "_elementform_id_temp0").getAttribute("aria-valuenow");
15703
  w_field_value2 = document.getElementById(id + "_elementform_id_temp1").getAttribute("aria-valuenow");
15704
 
15705
- atrs = return_attributes(id + '_elementform_id_temp');
15706
  w_attr_name = atrs[0];
15707
  w_attr_value = atrs[1];
15708
 
942
  w_field_range_step = document.getElementById(id + "_range_stepform_id_temp").value;
943
  w_field_value1 = document.getElementById(id + "_elementform_id_temp0").getAttribute("aria-valuenow");
944
  w_field_value2 = document.getElementById(id + "_elementform_id_temp1").getAttribute("aria-valuenow");
945
+ atrs = return_attributes(id + '_elementform_id_temp0');
946
  w_attr_name = atrs[0];
947
  w_attr_value = atrs[1];
948
  w_mini_labels = [document.getElementById(id + "_mini_label_from").innerHTML, document.getElementById(id + "_mini_label_to").innerHTML];
2723
  document.getElementById(id).value = regAlert;
2724
  }
2725
 
2726
+ function create_additional_attributes(i, w_attr_name, type) {
2727
  var label = jQuery('<label class="fm-field-label">Additional Attributes</label>');
2728
+ var button = jQuery('<span class="fm-add-attribute dashicons dashicons-plus-alt" onClick="add_attr(' + i + ', \'' + type + '\')" title="Add"></span>');
2729
  var attr_table = jQuery('<div id="attributes" class="fm-width-100"></div>');
2730
  var attr_header = jQuery('<div idi="0" class="fm-width-100"><div class="fm-header-label fm-width-45">Name</div><div class="fm-header-label fm-width-45">Value</div><div></div></div>');
2731
  attr_table.append(attr_header);
2732
  attr_table.hide();
2733
  n = w_attr_name.length;
2734
  for (j = 1; j <= n; j++) {
2735
+ var attr = jQuery('<div idi="' + j + '" id="attr_row_' + j + '" class="fm-width-100"><div class="fm-table-col fm-width-45"><input type="text" class="fm-field-choice" id="attr_name' + j + '" value="' + w_attr_name[j - 1] + '" onChange="change_attribute_name(\'' + i + '\', this, \'' + type + '\')" /></div><div class="fm-table-col fm-width-45"><input type="text" class="fm-field-choice" id="attr_value' + j + '" value="' + w_attr_value[j - 1] + '" onChange="change_attribute_value(' + i + ', ' + j + ', \'' + type + '\')" /></div><div class="fm-table-col"><span class="fm-remove-attribute dashicons dashicons-dismiss" id="el_choices' + j + '_remove" onClick="remove_attr(' + j + ', ' + i + ', \'' + type + '\')"></span></div></div>');
2736
  attr_table.append(attr);
2737
  attr_table.show();
2738
  }
2749
  j = parseInt(el_attr_table.children().last().attr('idi')) + 1;
2750
  w_attr_name = "attribute";
2751
  w_attr_value = "value";
2752
+ var attr = jQuery('<div idi="' + j + '" id="attr_row_' + j + '" class="fm-width-100"><div class="fm-table-col fm-width-45"><input type="text" class="fm-field-choice" id="attr_name' + j + '" value="' + w_attr_name + '" onChange="change_attribute_name(\'' + i + '\', this, \'' + type + '\')" /></div><div class="fm-table-col fm-width-45"><input type="text" class="fm-field-choice" id="attr_value' + j + '" value="' + w_attr_value + '" onChange="change_attribute_value(' + i + ', ' + j + ', \'' + type + '\')" /></div><div class="fm-table-col"><span class="fm-remove-attribute dashicons dashicons-dismiss" id="el_choices' + j + '_remove" onClick="remove_attr(' + j + ', ' + i + ', \'' + type + '\')"></span></div></div>');
2753
  el_attr_table.append(attr);
2754
  refresh_attr(i, type);
2755
 
2998
  advanced_options_container.append(create_custom_regexp(i, w_regExp_status, w_regExp_value));
2999
  advanced_options_container.append(create_case_sensitive(i, w_regExp_status, w_regExp_arg));
3000
  advanced_options_container.append(create_alert_message(i, w_regExp_status, w_regExp_alert));
3001
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_text'));
3002
 
3003
  // Preview
3004
  element = 'input';
3224
 
3225
  advanced_options_container.append(create_class(i, w_class));
3226
  advanced_options_container.append(create_multiple_upload(i, w_multiple));
3227
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_file_upload'));
3228
 
3229
  // Preview
3230
  element = 'input';
3449
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
3450
  advanced_options_container.append(create_unique_values(i, w_unique));
3451
  advanced_options_container.append(create_class(i, w_class));
3452
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_textarea'));
3453
 
3454
  // Preview
3455
  element = 'textarea';
3616
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
3617
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
3618
  advanced_options_container.append(create_class(i, w_class));
3619
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_spinner'));
3620
 
3621
  // Preview
3622
  var adding_type = document.createElement("input");
3727
 
3728
  jQuery("#" + i + "_elementform_id_temp").spinner();
3729
  var spinner = jQuery("#" + i + "_elementform_id_temp").spinner();
3730
+ if ( w_field_value == null ) {
3731
+ spinner.spinner("value", "");
3732
+ }
3733
+
3734
  jQuery("#" + i + "_elementform_id_temp").spinner({min: w_field_min_value});
3735
  jQuery("#" + i + "_elementform_id_temp").spinner({max: w_field_max_value});
3736
  jQuery("#" + i + "_elementform_id_temp").spinner({step: w_field_step});
3987
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
3988
  advanced_options_container.append(create_class(i, w_class));
3989
  advanced_options_container.append(create_show_date_picker_button(i, w_show_image, 'new_date'));
3990
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_date_new'));
3991
 
3992
  // Preview.
3993
  var adding_type = document.createElement("input");
4625
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
4626
  advanced_options_container.append(create_class(i, w_class));
4627
  advanced_options_container.append(create_enable_options_value(i, w_value_disabled, 'select'));
4628
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_own_select'));
4629
 
4630
  // Preview.
4631
  n = w_choices.length;
5167
  advanced_options_container.append(create_randomize(i, w_randomize));
5168
  advanced_options_container.append(create_enable_options_value(i, w_value_disabled, 'radio'));
5169
  advanced_options_container.append(create_allow_other(i, w_allow_other, 'radio'));
5170
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_radio'));
5171
 
5172
  // Preview.
5173
  element = 'input';
5349
  advanced_options_container.append(create_randomize(i, w_randomize));
5350
  advanced_options_container.append(create_enable_options_value(i, w_value_disabled, 'checkbox'));
5351
  advanced_options_container.append(create_allow_other(i, w_allow_other, 'checkbox'));
5352
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_checkbox'));
5353
 
5354
  // Preview.
5355
  element = 'input';
5711
  var advanced_options_container = jQuery('<div class="inside"></div>');
5712
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
5713
  advanced_options_container.append(create_class(i, w_class));
5714
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_submit_reset'));
5715
 
5716
  // Preview.
5717
  var br = document.createElement('br');
6055
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
6056
  advanced_options_container.append(create_next_class(i, w_class));
6057
  advanced_options_container.append(create_previous_class(i, w_class));
6058
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_page_break'));
6059
 
6060
  // Preview.
6061
  var br = document.createElement('br');
6363
  advanced_options_container.append(create_unique_values(i, w_unique));
6364
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
6365
  advanced_options_container.append(create_class(i, w_class));
6366
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_name'));
6367
 
6368
  // Preview.
6369
  var br = document.createElement('br');
6649
  advanced_options_container.append(create_unique_values(i, w_unique));
6650
  advanced_options_container.append(create_field_label_size(i, w_field_label_size, '\'' + i + '_label_sectionform_id_temp\'', '\'' + i + '_1_label_sectionform_id_temp\''));
6651
  advanced_options_container.append(create_class(i, w_class));
6652
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_submitter_mail'));
6653
 
6654
  // Preview.
6655
  element = 'input';
6838
  advanced_options_container.append(create_unique_values(i, w_unique));
6839
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
6840
  advanced_options_container.append(create_class(i, w_class));
6841
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_phone_new'));
6842
 
6843
  // Preview.
6844
  var br = document.createElement('br');
6941
  label_top(i);
6942
 
6943
  change_class(w_class, i);
6944
+ refresh_attr(i, 'type_text');
6945
 
6946
  jQuery("#" + i + "_elementform_id_temp").intlTelInput({
6947
  nationalMode: false,
7267
  advanced_options_container.append(create_disable_address_fields(i, w_disabled_fields, w_mini_labels));
7268
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
7269
  advanced_options_container.append(create_class(i, w_class));
7270
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_address'));
7271
 
7272
  // Preview.
7273
  var adding_type = document.createElement("input");
7646
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
7647
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
7648
  advanced_options_container.append(create_class(i, w_class));
7649
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_mark_map'));
7650
 
7651
  // Preview.
7652
  element = 'div';
7754
  advanced_options_container.append(create_edit_country_list(i));
7755
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
7756
  advanced_options_container.append(create_class(i, w_class));
7757
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_country'));
7758
 
7759
  // Preview.
7760
  var br = document.createElement('br');
8166
  advanced_options_container.append(jQuery('<div class="notice notice-info"><p>Leave the second field empty and the current year will be used automatically. For a specific year (other than current) fill out both the start and finish points of the range.</p></div>'));
8167
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
8168
  advanced_options_container.append(create_class(i, w_class));
8169
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_date_fields'));
8170
 
8171
  // Preview.
8172
  var br = document.createElement('br');
8473
  advanced_options_container.append(create_hide_payment_currency(i, w_currency));
8474
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
8475
  advanced_options_container.append(create_class(i, w_class));
8476
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_paypal_price_new'));
8477
 
8478
  // Preview
8479
  var adding_type = document.createElement("input");
9007
  advanced_options_container.append(create_payment_property(i));
9008
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
9009
  advanced_options_container.append(create_class(i, w_class));
9010
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_paypal_select'));
9011
 
9012
  // Preview.
9013
  var adding_type = document.createElement("input");
9356
  advanced_options_container.append(create_payment_property(i));
9357
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
9358
  advanced_options_container.append(create_class(i, w_class));
9359
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_paypal_radio'));
9360
 
9361
  // Preview.
9362
  var br3 = document.createElement('br');
9586
  advanced_options_container.append(create_payment_property(i));
9587
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
9588
  advanced_options_container.append(create_class(i, w_class));
9589
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_paypal_checkbox'));
9590
 
9591
  // Preview.
9592
  element = 'input';
9813
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
9814
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
9815
  advanced_options_container.append(create_class(i, w_class));
9816
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_paypal_shipping'));
9817
 
9818
  // Preview.
9819
  element = 'input';
10218
  var advanced_options_container = jQuery('<div class="inside"></div>');
10219
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
10220
  advanced_options_container.append(create_class(i, w_class));
10221
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_map'));
10222
 
10223
  // Preview.
10224
  var br2 = document.createElement('br');
10497
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
10498
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
10499
  advanced_options_container.append(create_class(i, w_class));
10500
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_time'));
10501
 
10502
  // Preview.
10503
  var adding_type = document.createElement("input");
10782
  var advanced_options_container = jQuery('<div class="inside"></div>');
10783
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
10784
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
10785
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_send_copy'));
10786
 
10787
  // Preview.
10788
  element = 'input';
11069
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
11070
  advanced_options_container.append(create_class(i, w_class));
11071
  advanced_options_container.append(create_show_date_picker_button(i, w_show_image, 'date_range'));
11072
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_date_range'));
11073
 
11074
  // Preview.
11075
  var adding_type = document.createElement("input");
11639
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
11640
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
11641
  advanced_options_container.append(create_class(i, w_class));
11642
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_star_rating'));
11643
 
11644
  // Preview
11645
  var adding_type = document.createElement("input");
11815
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
11816
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
11817
  advanced_options_container.append(create_class(i, w_class));
11818
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_scale_rating'));
11819
 
11820
  // Preview
11821
  var adding_type = document.createElement("input");
12099
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12100
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
12101
  advanced_options_container.append(create_class(i, w_class));
12102
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_slider'));
12103
 
12104
  // Preview
12105
  var adding_type = document.createElement("input");
12321
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12322
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
12323
  advanced_options_container.append(create_class(i, w_class));
12324
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_range'));
12325
 
12326
  // Preview
12327
  var adding_type = document.createElement("input");
12485
 
12486
  jQuery("#" + i + "_elementform_id_temp0").spinner();
12487
  var spinner1 = jQuery("#" + i + "_elementform_id_temp0").spinner();
12488
+ /*spinner1.spinner("value", w_field_value1);*/
12489
  jQuery("#" + i + "_elementform_id_temp0").spinner({step: w_field_range_step});
12490
 
12491
  jQuery("#" + i + "_elementform_id_temp1").spinner();
12492
  var spinner2 = jQuery("#" + i + "_elementform_id_temp1").spinner();
12493
+ /*spinner2.spinner("value", w_field_value2);*/
12494
  jQuery("#" + i + "_elementform_id_temp1").spinner({step: w_field_range_step});
12495
 
12496
  jQuery(document).ready(function () {
12579
 
12580
  var advanced_options_container = jQuery('<div class="inside"></div>');
12581
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12582
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_hidden'));
12583
 
12584
  // Preview
12585
  element = 'input';
12711
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12712
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
12713
  advanced_options_container.append(create_class(i, w_class));
12714
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_captcha'));
12715
 
12716
  // Preview
12717
  element = 'img';
12908
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
12909
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
12910
  advanced_options_container.append(create_class(i, w_class));
12911
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_arithmetic_captcha'));
12912
 
12913
  // Preview
12914
  var adding_type = document.createElement("input");
13061
  advanced_options_container.append(create_unique_values(i, w_unique));
13062
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
13063
  advanced_options_container.append(create_class(i, w_class));
13064
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_phone'));
13065
 
13066
  // Preview.
13067
  var br1 = document.createElement('br');
13309
  advanced_options_container.append(create_confirmation_password_label(i, w_verification, w_verification_label));
13310
  advanced_options_container.append(create_field_label_size(i, w_field_label_size, '\'' + i + '_label_sectionform_id_temp\'', '\'' + i + '_1_label_sectionform_id_temp\''));
13311
  advanced_options_container.append(create_class(i, w_class));
13312
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_password'));
13313
 
13314
  // Preview.
13315
  element = 'input';
13550
  var advanced_options_container = jQuery('<div class="inside"></div>');
13551
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
13552
  advanced_options_container.append(create_class(i, w_class));
13553
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_button'));
13554
 
13555
  // Preview.
13556
  element = 'button';
13623
  }
13624
 
13625
  function check_isnum_or_minus(e) {
13626
+ /*var chCode1 = e.which || e.keyCode;
13627
  if (chCode1 != 45) {
13628
  if (chCode1 > 31 && (chCode1 < 48 || chCode1 > 57))
13629
  return false;
13631
  else if(e.target.selectionStart != 0 || e.target.value[0] == '-') {
13632
  return false;
13633
  }
13634
+ return true;*/
13635
+ var chCode1 = e.which || e.keyCode;
13636
+ if ( chCode1 > 31
13637
+ && (chCode1 < 48 || chCode1 > 57)
13638
+ && (chCode1 != 46)
13639
+ && (chCode1 != 45)
13640
+ && (chCode1 < 35 || chCode1 > 40) ) {
13641
+ return false;
13642
+ }
13643
  return true;
13644
  }
13645
 
13833
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
13834
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
13835
  advanced_options_container.append(create_class(i, w_class));
13836
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_grading'));
13837
 
13838
  // Preview.
13839
  element = 'input';
14214
  edit_main_table.append(create_advanced_options_container(advanced_options_container));
14215
  advanced_options_container.append(create_field_label_size(i, w_field_label_size));
14216
  advanced_options_container.append(create_class(i, w_class));
14217
+ advanced_options_container.append(create_additional_attributes(i, w_attr_name, 'type_matrix'));
14218
 
14219
  // Preview.
14220
  element = 'input';
15714
  w_field_value1 = document.getElementById(id + "_elementform_id_temp0").getAttribute("aria-valuenow");
15715
  w_field_value2 = document.getElementById(id + "_elementform_id_temp1").getAttribute("aria-valuenow");
15716
 
15717
+ atrs = return_attributes(id + '_elementform_id_temp0');
15718
  w_attr_name = atrs[0];
15719
  w_attr_value = atrs[1];
15720
 
js/form_maker_form_options.js CHANGED
@@ -191,9 +191,9 @@ function codemirror_for_javascript() {
191
 
192
  function fm_toggle_email_options(show) {
193
  if (show) {
194
- jQuery('#fm_email_options').show();
195
  }
196
  else {
197
- jQuery('#fm_email_options').hide();
198
  }
199
  }
191
 
192
  function fm_toggle_email_options(show) {
193
  if (show) {
194
+ jQuery('.fm_email_options').show();
195
  }
196
  else {
197
+ jQuery('.fm_email_options').hide();
198
  }
199
  }
js/form_maker_manage_edit.js CHANGED
@@ -583,7 +583,9 @@ function formOnload(rows) {
583
  var spinner_step = document.getElementById(t + "_stepform_id_temp").value;
584
  jQuery("#" + t + "_elementform_id_temp")[0].spin = null;
585
  spinner = jQuery("#" + t + "_elementform_id_temp").spinner();
586
- spinner.spinner("value", spinner_value);
 
 
587
  jQuery("#" + t + "_elementform_id_temp").spinner({ min:spinner_min_value});
588
  jQuery("#" + t + "_elementform_id_temp").spinner({ max:spinner_max_value});
589
  jQuery("#" + t + "_elementform_id_temp").spinner({ step:spinner_step});
@@ -614,11 +616,15 @@ function formOnload(rows) {
614
  jQuery("#" + t + "_elementform_id_temp0")[0].spin = null;
615
  jQuery("#" + t + "_elementform_id_temp1")[0].spin = null;
616
  spinner0 = jQuery("#" + t + "_elementform_id_temp0").spinner();
617
- spinner0.spinner("value", spinner_value0);
 
 
618
  jQuery("#" + t + "_elementform_id_temp0").spinner({ step:spinner_step});
619
  var spinner_value1 = document.getElementById(t + "_elementform_id_temp1").value;
620
  spinner1 = jQuery("#" + t + "_elementform_id_temp1").spinner();
621
- spinner1.spinner("value", spinner_value1);
 
 
622
  jQuery("#" + t + "_elementform_id_temp1").spinner({ step:spinner_step});
623
  var myu = t;
624
  jQuery(document).ready(function () {
@@ -711,8 +717,8 @@ function formOnload(rows) {
711
  remove_whitespace(document.getElementById('take'));
712
  form_view = 1;
713
  form_view_count = 0;
714
-
715
- for (i = 1; i <= 30; i++) {
716
  if (document.getElementById('form_id_tempform_view' + i)) {
717
  form_view_count++;
718
  form_view_max = i;
583
  var spinner_step = document.getElementById(t + "_stepform_id_temp").value;
584
  jQuery("#" + t + "_elementform_id_temp")[0].spin = null;
585
  spinner = jQuery("#" + t + "_elementform_id_temp").spinner();
586
+ if ( spinner_value == null ) {
587
+ spinner.spinner("value", "");
588
+ }
589
  jQuery("#" + t + "_elementform_id_temp").spinner({ min:spinner_min_value});
590
  jQuery("#" + t + "_elementform_id_temp").spinner({ max:spinner_max_value});
591
  jQuery("#" + t + "_elementform_id_temp").spinner({ step:spinner_step});
616
  jQuery("#" + t + "_elementform_id_temp0")[0].spin = null;
617
  jQuery("#" + t + "_elementform_id_temp1")[0].spin = null;
618
  spinner0 = jQuery("#" + t + "_elementform_id_temp0").spinner();
619
+ if ( spinner_value0 == null ) {
620
+ spinner0.spinner("value", "");
621
+ }
622
  jQuery("#" + t + "_elementform_id_temp0").spinner({ step:spinner_step});
623
  var spinner_value1 = document.getElementById(t + "_elementform_id_temp1").value;
624
  spinner1 = jQuery("#" + t + "_elementform_id_temp1").spinner();
625
+ if ( spinner_value1 == null ) {
626
+ spinner1.spinner("value", "");
627
+ }
628
  jQuery("#" + t + "_elementform_id_temp1").spinner({ step:spinner_step});
629
  var myu = t;
630
  jQuery(document).ready(function () {
717
  remove_whitespace(document.getElementById('take'));
718
  form_view = 1;
719
  form_view_count = 0;
720
+ var pagebreak_count = jQuery('.wdform-page-and-images').length;
721
+ for (i = 1; i <= pagebreak_count; i++) {
722
  if (document.getElementById('form_id_tempform_view' + i)) {
723
  form_view_count++;
724
  form_view_max = i;
js/form_maker_submissions.js CHANGED
@@ -264,4 +264,3 @@ function change_option_values(a,id,rows_count,columns_count){
264
  document.getElementById('submission_'+id).value=element+'***matrix***';
265
  document.getElementById(id+'_matrixform_id_temp').value=element;
266
  }
267
-
264
  document.getElementById('submission_'+id).value=element+'***matrix***';
265
  document.getElementById(id+'_matrixform_id_temp').value=element;
266
  }
 
js/formmaker_div.js CHANGED
@@ -2999,8 +2999,8 @@ function remove_page_all(id) {
2999
  if (confirm('Do you want to delete the all fields in this page?')) {
3000
  form_view_elemet = document.getElementById("form_id_tempform_view" + id);
3001
  form_view_count = 0;
3002
-
3003
- for (i = 1; i <= 30; i++) {
3004
  if (document.getElementById('form_id_tempform_view' + i)) {
3005
  form_view_count++;
3006
  }
@@ -3059,13 +3059,14 @@ function refresh_pages(id) {
3059
  temp = 1;
3060
  form_view_count = 0;
3061
  destroyChildren(document.getElementById("pages"));
3062
- for (i = 1; i <= 30; i++) {
 
3063
  if (document.getElementById('form_id_tempform_view' + i)) {
3064
  form_view_count++;
3065
  }
3066
  }
3067
  if (form_view_count > 1) {
3068
- for (i = 1; i <= 30; i++) {
3069
  if (document.getElementById('form_id_tempform_view' + i)) {
3070
  page_number = document.createElement('span');
3071
  page_number.setAttribute('id', 'page_' + i);
@@ -3078,7 +3079,7 @@ function refresh_pages(id) {
3078
  }
3079
  else {
3080
  destroyChildren(document.getElementById("edit_page_navigation"));
3081
- for (i = 1; i <= 30; i++) {
3082
  if (document.getElementById('form_id_tempform_view' + i)) {
3083
  document.getElementById('form_id_tempform_view' + i).parentNode.style.borderWidth = "0px";
3084
  document.getElementById('form_id_tempform_view' + i).style.display = "block";
@@ -3088,7 +3089,7 @@ function refresh_pages(id) {
3088
  }
3089
  }
3090
  }
3091
- for (i = parseInt(id) + 1; i <= 30; i++) {
3092
  if (document.getElementById('form_id_tempform_view' + i)) {
3093
  generate_page_nav(i);
3094
  return;
@@ -3106,8 +3107,8 @@ function refresh_pages_without_deleting(id) {
3106
  form_view_count = 0;
3107
  form_view_elemet = document.getElementById("form_id_tempform_view" + id);
3108
  wdform_row = form_view_elemet.getElementsByClassName('wdform_row');
3109
-
3110
- for (i = 1; i <= 30; i++) {
3111
  if (document.getElementById('form_id_tempform_view' + i)) {
3112
  form_view_count++;
3113
  }
2999
  if (confirm('Do you want to delete the all fields in this page?')) {
3000
  form_view_elemet = document.getElementById("form_id_tempform_view" + id);
3001
  form_view_count = 0;
3002
+ var pagebreak_count = jQuery(".wdform-page-and-images").length;
3003
+ for (i = 1; i <= pagebreak_count; i++) {
3004
  if (document.getElementById('form_id_tempform_view' + i)) {
3005
  form_view_count++;
3006
  }
3059
  temp = 1;
3060
  form_view_count = 0;
3061
  destroyChildren(document.getElementById("pages"));
3062
+ var pagebreak_count = jQuery(".wdform-page-and-images").length;
3063
+ for (i = 1; i <= pagebreak_count; i++) {
3064
  if (document.getElementById('form_id_tempform_view' + i)) {
3065
  form_view_count++;
3066
  }
3067
  }
3068
  if (form_view_count > 1) {
3069
+ for (i = 1; i <= pagebreak_count; i++) {
3070
  if (document.getElementById('form_id_tempform_view' + i)) {
3071
  page_number = document.createElement('span');
3072
  page_number.setAttribute('id', 'page_' + i);
3079
  }
3080
  else {
3081
  destroyChildren(document.getElementById("edit_page_navigation"));
3082
+ for (i = 1; i <= pagebreak_count; i++) {
3083
  if (document.getElementById('form_id_tempform_view' + i)) {
3084
  document.getElementById('form_id_tempform_view' + i).parentNode.style.borderWidth = "0px";
3085
  document.getElementById('form_id_tempform_view' + i).style.display = "block";
3089
  }
3090
  }
3091
  }
3092
+ for (i = parseInt(id) + 1; i <= pagebreak_count; i++) {
3093
  if (document.getElementById('form_id_tempform_view' + i)) {
3094
  generate_page_nav(i);
3095
  return;
3107
  form_view_count = 0;
3108
  form_view_elemet = document.getElementById("form_id_tempform_view" + id);
3109
  wdform_row = form_view_elemet.getElementsByClassName('wdform_row');
3110
+ var pagebreak_count = jQuery(".wdform-page-and-images").length;
3111
+ for (i = 1; i <= pagebreak_count; i++) {
3112
  if (document.getElementById('form_id_tempform_view' + i)) {
3113
  form_view_count++;
3114
  }
js/main_div_front_end.js CHANGED
@@ -246,7 +246,6 @@ function add_0(that) {
246
  * @returns {boolean}
247
  */
248
  function wd_validate(that, ids) {
249
- //console.log();
250
  if ( !jQuery(that).is("input") ) {
251
  return true;
252
  }
@@ -285,7 +284,7 @@ function wd_validate(that, ids) {
285
  }
286
  case "number": {
287
  error_message = fm_objectL10n.number_validation;
288
- reg_exp = /^$|^-?\d+$/;
289
  break;
290
  }
291
  case "day": {
@@ -306,20 +305,24 @@ function wd_validate(that, ids) {
306
  }
307
 
308
  // To differ empty string value from invalid value.
309
- var isValid = document.getElementById(id).validity.valid;
310
 
311
- if ( isValid ) {
312
- isValid = reg_exp.test(value);
313
- }
314
 
315
- if ( isValid ) {
316
- for ( var i in ids ) {
317
- isValid = wd_validate("#" + ids[i], '');
318
- if ( !isValid ) {
319
- break;
320
- }
321
- }
322
- }
 
 
 
 
323
 
324
  jQuery("#check_email_" + wdid + "_" + form_id).remove();
325
  if ( !isValid ) {
@@ -548,7 +551,8 @@ function fm_initilize_form(form_id) {
548
  }
549
 
550
  function display_none_form_views_all(form_id) {
551
- for(t=1; t<30; t++) {
 
552
  if(document.getElementById(form_id+'form_view'+t)) {
553
  document.getElementById(form_id+'form_view'+t).parentNode.style.display="none";
554
  }
@@ -1988,7 +1992,8 @@ function formOnload(form_id) {
1988
  }
1989
 
1990
  function fm_document_ready(form_id) {
1991
- for(i=1; i<=30; i++) {
 
1992
  if (document.getElementById(form_id + 'form_view' + i)) {
1993
  window['form_view_count' + form_id]++;
1994
  window['form_view_max' + form_id] = i;
246
  * @returns {boolean}
247
  */
248
  function wd_validate(that, ids) {
 
249
  if ( !jQuery(that).is("input") ) {
250
  return true;
251
  }
284
  }
285
  case "number": {
286
  error_message = fm_objectL10n.number_validation;
287
+ reg_exp = /^\-{0,1}\d+(.\d+){0,1}$/;
288
  break;
289
  }
290
  case "day": {
305
  }
306
 
307
  // To differ empty string value from invalid value.
308
+ //var isValid = document.getElementById(id).validity.valid;
309
 
310
+ //if ( isValid ) {
311
+ // isValid = reg_exp.test(value);
312
+ //}
313
 
314
+ isValid = reg_exp.test(value);
315
+ if ( value == '' ) {
316
+ isValid = true;
317
+ }
318
+ if ( isValid ) {
319
+ for ( var i in ids ) {
320
+ isValid = wd_validate("#" + ids[i], '');
321
+ if ( !isValid ) {
322
+ break;
323
+ }
324
+ }
325
+ }
326
 
327
  jQuery("#check_email_" + wdid + "_" + form_id).remove();
328
  if ( !isValid ) {
551
  }
552
 
553
  function display_none_form_views_all(form_id) {
554
+ var pagebreak_count = jQuery(".wdform-page-and-images").length;
555
+ for( t = 1; t <= pagebreak_count; t++ ) {
556
  if(document.getElementById(form_id+'form_view'+t)) {
557
  document.getElementById(form_id+'form_view'+t).parentNode.style.display="none";
558
  }
1992
  }
1993
 
1994
  function fm_document_ready(form_id) {
1995
+ var pagebreak_count = jQuery(".wdform-page-and-images").length;
1996
+ for( i = 1; i <= pagebreak_count; i++ ) {
1997
  if (document.getElementById(form_id + 'form_view' + i)) {
1998
  window['form_view_count' + form_id]++;
1999
  window['form_view_max' + form_id] = i;
readme.txt CHANGED
@@ -3,28 +3,24 @@ Contributors: webdorado,10web
3
  Tags: contact, contact form, email, forms, contact forms, custom form, feedback, form builder, form manager, form maker, forms builder, form builder wordpress
4
  Requires at least: 3.4
5
  Tested up to: 4.9
6
- Stable tag: 1.12.15
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
  Contact Form by WD plugin is a simple contact form builder tool, which allows the user to create and edit different types of contact forms.
11
 
12
  == Description ==
13
- Special offer:
14
-
15
- [Try Contact Form premium and 60 other plugins for free at 10Web](https://10web.io/plugins/wordpress-form-maker/)
16
-
17
- 10Web is a new platform from WebDorado
18
-
19
-
20
-
21
  Create simple contact forms or complex applications forms with this FREE and intuitive WordPress plugin. No coding knowledge is required.
22
 
 
 
 
23
  [WordPress Contact Form Maker](http://web-dorado.com/products/wordpress-contact-form-maker-plugin.html)
24
 
25
- WordPress Contact Form Maker is a simple contact form creator, which allows the user with almost no knowledge of programming to create and edit different type of responsive forms. The product is similar to the WordPress Form Maker using most of its functionality, whereas there are also some differences. If want to build complicated contact forms with various field types like Date, Time, Single choice, Multiple choice, etc., than you can use [WordPress Form Builder](http://wordpress.org/extend/plugins/form-maker).
26
 
27
- The number of fields for the WordPress forms builder plugin is unlimited and having large amount of fields will not cause any malfunctioning of the contact form. You can add different types of contact form fields, including inputs (e.g. e-mail, password, text area, text input and etc.), Captcha (as well as possibility of adding Google standard ReCaptcha), custom and standard buttons, as well as Map field.
28
 
29
  The WordPress free form builder uses simple and easy to manage backend interface, thus the users who are not able to make code-level changes, will be able to make customization and changes using parameters. The drag and drop form builder allows you to choose from a number of form options to get just the form you need. From simple one line form to a more complex email form for the site or conditional mailing form - the free responsive form builder is a perfect solution for every website.
30
 
@@ -32,126 +28,37 @@ The dynamic web form builder allows you to view and manage all form submissions.
32
 
33
  This contact form builder will equally fit the needs of the novice and experienced developers and designers.
34
 
35
- The product has cross-browser compatibility, which allows using the Contact form for with any browser.
 
 
 
 
 
 
 
 
 
 
 
36
 
37
  Contact Form Maker WordPress plugin comes with pre-built templates, but in case you need custom forms, feel free to create your own advanced forms. The form creation process with the plugin is quick and easy.
38
 
39
- Contact form plugin is a must have free form builder for any website. It allows you to share contact info like address, email, phone, etc., but also allows you to add email forms, making it possible for your users to leave their feedback and comments directly through email submit forms. Try contact form plugin today and create web forms free and easy today!
40
-
41
- ###IMPORTANT: If you think you found a bug in the Contact Form Maker or have any problem or question concerning Contact Form Maker, do not hesitate to contact us at [info@web-dorado.com](mailto:info@web-dorado.com).
42
-
43
-
44
- ###Features of the Contact Form Maker
45
-
46
- * WordPress 3.0+
47
- * 7 field types of the Contact Form Maker.
48
- * Custom HTML
49
- * Text Input (10 sub-types)
50
- * Captcha
51
- * Page break
52
- * Section break
53
- * Map
54
- * Button
55
- * Possibility to add Custom HTML between the fields.
56
- * Possibility to re-order fields with drag and drop forms functionality.
57
- * Pagination.
58
- * Support for section break.
59
- * Possibility of add custom CSS and Javascript to create custom contact forms.
60
- * Additional attributes for each field to add certain properties using Java Script.
61
- * Submissions are send to the provided admin address(es) and submitter (optional).
62
- * Custom text for admin and users
63
- * Shortcode for easier input of the created contact form into Pages/Posts.
64
- * Chance to add custom HTML.
65
- * Detailed parameters for each field type.
66
- * Data validation before the submission of the contact form.
67
- * Detailed Submissions field including the submissions of all contact forms.
68
- * 10 built-in templates.
69
- * Intuitive form editor.
70
- * Required and hidden fields for advanced contact forms.
71
- * Conditional fields
72
-
73
-
74
- Please note that if you’re looking to add more complex, custom online forms, like Stripe form, PayPal form, online application form, order forms, as well as other online custom forms, you can use the Form Maker plugin, which is a more advanced form builder tool.
75
-
76
- ### Supported languages Of the Contact Form Maker
77
-
78
- *If you need language of the Contact Form Maker which is not included in this list, please contact us and we will do the translation of Contact Form Maker within 3 days. If you find any mistakes in the translation of the Contact Form Maker, please contact us and we will make relevant corrections within 3 days.*
79
-
80
- Afrikaans (af)
81
- Albanian (sq)
82
- Arabic (ar)
83
- Armenian (hy_AM)
84
- Belarusian (be_BY)
85
- Bulgarian (bg_BG)
86
- Catalan (ca)
87
- Chinese, Simplified (zh_CN)
88
- Croatian (hr)
89
- Czech (cs_CZ)
90
- Danish (da_DK)
91
- Dutch (nl_NL)
92
- Esperanto (eo_EO)
93
- Estonian (et)
94
- Finnish (fi)
95
- French (fr_FR)
96
- Galician (gl_ES)
97
- Georgian (ka_GE)
98
- German (de_DE)
99
- Greek (el)
100
- Hebrew (he_IL)
101
- Hindi (hi_IN)
102
- Hungarian (hu_HU)
103
- Indonesian (id_ID)
104
- Italian (it_IT)
105
- Japanese (ja)
106
- Korean (ko_KR)
107
- Latvian (lv)
108
- Lithuanian (lt_LT)
109
- Macedonian (mk_MK)
110
- Malay (ms_MY)
111
- Maltese (mt_MT)
112
- Norwegian (nb_NO)
113
- Persian (fa_IR)
114
- Polish (pl_PL)
115
- Portuguese (pt_PT)
116
- Russian (ru_RU)
117
- Romanian (ro_RO)
118
- Serbian (sr_RS)
119
- Slovak (sk_SK)
120
- Spanish (es_ES)
121
- Swedish (sv_SE)
122
- Tamil (ta)
123
- Thai (th)
124
- Turkish (tr_TR)
125
- Ukrainian (uk_UA)
126
- Vietnamese (vi)
127
-
128
-
129
- == Installation ==
130
-
131
- ####Thank you for your interest in [WordPress Contact Form](http://wordpress.org/plugins/contact-form-maker/).
132
-
133
- ### Minimum requirements.
134
- * Wordpress 3.0+
135
- * PHP 5.x
136
- * MySQL 5.x
137
-
138
- ### Perform a new installation
139
 
140
  After downloading the ZIP file,
141
 
142
  1. Log in to the administrator panel.
143
  2. Go to Plugins Add > New > Upload.
144
- 3. Click Choose file (Browse) and select the downloaded zip file.
145
  *For Mac Users*
146
  *Go to your Downloads folder and locate the folder with the plugin. Right-click on the folder and select Compress. Now you have a newly created .zip file which can be installed as described here.*
147
- 4. Click Install Now button.
148
- 5. Click Activate Plugin button for activating the plugin.
149
- 6.If the installation does not succeed, please contact us at info@web-dorado.com.
150
-
151
- ### Updating the contact form.
152
-
153
- If you want to update the plugin while preserving your existing contact forms, you need to deactivate and delete the Contact Form Maker from the list of installed plugins (Do not uninstall it using the Uninstall Contact Form Maker option of the plugin) and install the new plugin. Afterwards, go to Contact Form Maker>Manager and on the upper hand of the screen click on the “Update Contact Forms” button. If the update is successful, you will see a notification message saying, “All Contact forms are updated!”.
154
-
155
 
156
  == Screenshots ==
157
  1. [WordPress Contact Form](http://wordpress.org/plugins/contact-form-maker/) - Sample RSVP
@@ -164,6 +71,13 @@ If you want to update the plugin while preserving your existing contact forms, y
164
  8. Contact Form Maker - Select Columns
165
 
166
  == Changelog ==
 
 
 
 
 
 
 
167
  = 1.12.15 =
168
  * Fixed: Error on adding a field.
169
 
@@ -376,168 +290,207 @@ If you want to update the plugin while preserving your existing contact forms, y
376
  * Conversion Rate of a contact form: The percentage of submitted contact forms to the overall number of views.
377
 
378
 
379
- ==Contact Form Maker Step by step guide==
380
- ### Step 1: Installing the [wordpress contact form](http://wordpress.org/plugins/contact-form-maker/)
381
 
382
- 1.1 Minimum requirements.
383
- Wordpress 3.0+
384
- PHP 5.x
385
- MySQL 5.x
386
 
387
- 1.2 Perform a new installation.
388
- Log in to the administrator panel.
389
- Go to Plugins Add > New > Upload.
390
- Click “Choose file” (“Browse”) and select the Contact Form Maker zip file.
391
- *For Mac Users*
392
- *Go to your Downloads folder and locate the folder with the plugin. Right-click on the folder and select Compress. Now you have a newly created .zip file which can be installed as described here.*
393
- Click “Install Now” button.
394
- If the installation succeeded you will see the message in the picture. Click “Activate Plugin” button for activating the plugin.
395
- If any problem occurs, please contact us at info@web-dorado.com.
396
 
397
- 1.3 Updating the contact form.
398
 
399
- If you want to update the plugin while preserving your existing contact forms, you need to deactivate and delete the Contact Form Maker from the list of installed plugins (Do not uninstall it using the Uninstall Contact Form Maker option of the plugin) and install the new plugin. Afterwards, go to Contact Form Maker>Manager and on the upper hand of the screen click on the “Update Contact Forms” button. If the update is successful, you will see a notification message saying, “All Contact forms are updated!”.
400
 
 
401
 
402
- = Step 2: Creating a new contact form =
403
 
404
- 2.1 On the left menu select Contact Form Maker > Manager
405
- 2.2 In the upper left corner click on the “Add a form” button.
406
- 2.3 Contact Form Title. Specify a title for the contact form.
407
 
 
408
 
409
- = Step 3: Configuring Contact Form Options =
410
 
411
- 3.1 General Options
412
- 3.1.1 Email to send submissions to. Here you provide e-mails to which submitted contact form information is sent. If you need more than one e-mail address, you must separate them by commas. This field is not required. In any case, the submitted information is stored in “Submissions” part, where it can be easily managed.
413
- 3.1.2 Email From. Here you define the email address from which the users receive the submission email (sender’s email).
414
- 3.1.3 From Name. Here you define the sender’s name which is shown in submission email.
415
- 3.1.4 Theme. A distinct theme can be applied to each new contact form. The themes can be accessed by selecting Contact Form Maker > Themes on the top menu. 41 themes are available for selection. There is an option for creating new themes, which you can access by clicking “New” on the upper right corner of the section.
416
 
417
- 3.2 Actions after Submission
418
  Here you can select the action that takes place after contact form submission. Following options are available:
419
- - Stay on contact form: The user stays on the contact form page.
420
- - Article: The user is redirected to the selected article.
421
- - Custom text: Custom text is displayed on the screen.
422
- - URL: The user is redirected to the provided URL.
423
- 3.3 Payment Options
424
- 3.3.1 Turn on PayPal. Allows making PayPal paymentsusing Contact Form Maker.
425
- 3.3.2 Checkout Mode. Choose the checkout mode:
426
- Production (https://developer.paypal.com/webapps/developer/docs/classic/lifecycle/goingLive/)
427
- Test Mode (https://developer.paypal.com/webapps/developer/docs/integration/direct/test-the-api/)
428
- 3.3.3 PayPal Email. Enter your PayPal email.
429
- 3.3.4 PayPal Currency. Choose your PayPal currency.
430
- 3.3.5 Tax. Add the tax amount if any.
431
- 3.4 JavaScript
 
 
 
 
 
432
  Here you can define new JavaScript functions, which can be applied to the contact form. Three empty event functions are included:
433
- - before_load(): before the contact form is loaded
434
- - before_submit(): before the contact form is submitted
435
- - before_reset(): before the contact form is reset
436
- 3.5 Custom Text in Email
437
- For Administrator. Here you can add custom texts, images, and custom HTML to the e-mail message that is sent to the administrator, as well as choose which fields of the submitted contact form are included in the e-mail (set to ‘all’ by default).
438
- For User. Here you can add custom texts, images, and custom HTML to the e-mail message that is sent to the users, as well as choose which fields of the submitted contact form are included in the e-mail (set to ‘all’ by default).
439
-
440
- = Step 4: Description of the contact form fields =
441
-
442
- 4.1 Custom HTML:An HTML editor. You can insert your own HTML content to your WordPress contact form.
443
-
444
- 4.2 Text Input: At first choose the Field Type according to your preference. There are several options:
445
- Simple Text: This can be used for typing some text. It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Field Size, Value If Empty, Class Name, Required, Allow only unique values, Additional Attributes
446
-
447
- Password: This field can be used for adding a password field to your contact form. It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Field Size, Class Name, Required, Allow only unique values, Additional Attributes
448
- Text Area: This field can be used for typing some text. The difference between Text Area and Simple Text is that Simple Text has only one row while Text Area can have several rows. It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Field Size, Value If Empty, Class Name, Required, Allow only unique values, Additional Attributes
449
- Name: This can be used for typing a name. Default field labels can be edited clicking on the field label and typing in a custom label. It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Value If Empty, Field Size, Name Format, Class Name, Required, Allow only unique values, Additional Attributes
450
- Address: This field can be used for adding an address. Default field labels can be edited clicking on the label and typing in a custom label. It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Overall Size, Class Name, Disable Fields, Required, Additional Attributes
451
- Address (Mark on Map):This filed can be used for adding an address by directly marking it on the map. It has several attributes: Field Label, Field Label Position, Default Location, Map Size, Marker Info, Class Name, Additional Attributes
452
- E-mail:This field can be used for typing the submitter’s e-mail. The submitted e-mail validation is checked. It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Field Size, Value If Empty, Class Name, Send mail to submitter, Required, Allow only unique values, Additional Attributes.
453
- Number: This field can be used to provide numbers for different purposes (e.g. serial number). It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Field Size, Value If Empty, Class Name, Required, Allow only unique values, Additional Attributes
454
- Phone: This field can be used to provide a phone number. Default field labels can be edited clicking on the label and typing in a custom label. It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Value If Empty, Field Size, Class Name, Required, Allow only unique values, Additional Attributes
455
- Hidden Field: This field can be used to store additional information that does not need to be displayed. It has several attributes : Field ld, Field Name, Field Value, Additional Attributes.
456
- 4.3 Time and Date: Choose the Field Type according to your preference. There are several options:
457
- Date (single field with a picker): This field can be used for typing a date or choosing by the picker. It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Date format, Date Picker Label, Class Name, Required, Additional Attributes.
458
- Date (3 separate fields): This field can be used for typing a date in 3 field format(day, month, year). Default field labels can be edited clicking on the field label and typing in a custom label. Each of the 3 fields can be set as text input or select list. Each of the 3 fields has the attributes Field Size and Field Label. For year field the select list interval can be defined. These 3 fields can be separated in the format set by the fields separator attribute. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Class Name, Required, Additional Attributes.
459
- Time: This field can be used for typing a time. Default field labels can be edited clicking on the field label and typing in a custom label. Time can be shown in 24 hour or 12 hour formats by setting the time format attribute. The seconds preview can be enabled/disabled by setting the Display Seconds attribute. The field has several standard attributes: Field Id, Field Name, Field Label, Field Label Position, Class Name, Required, Additional Attributes.
460
- 4.4 Select: Choose the Field Type according to your preference. There are several options:
461
- Custom select: This field can be used for selecting the values from a list. The list can be defined by Options attribute. You can easily add and remove list items. The checked items are considered as empty values. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Field Size, Class Name, Required, Additional Attributes.
462
- Country list: This field can be used for selecting a country from a list. It has several attributes: Field Id, Field Name, Field Label, Field Label Position, Field Size, Class Name, Required, Additional Attributes.
463
- 4.5 Checkbox: This field can be used for selecting the values from a list of checkboxes. The list can be defined by Options attribute. You can easily add and remove list items. The list can be displayed in horizontal/vertical positions by setting the Relative Position attribute. You can use Rows/Columns field if you want the options to be displayed in a row/column (depending on the positioning choice). The number of rows/columns should be specified. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Field Size, Class Name, Required, Randomize in frontend, Allow other, Additional Attributes.
464
-
465
- 4.6Radio:This field can be used for selecting the values from a list of radio buttons. The list can be defined by Options attribute. You can use Rows/Columns field if you want the options to be displayed in a row/column (depending on the positioning choice). The number of rows/columns should be specified. You can easily add and remove list items. The list can be displayed in horizontal/vertical positions by setting the Relative Position attribute.The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Field Size, Class Name, Required, Randomize in frontend, Allow other, Additional Attributes.
466
-
467
- 4.7 File Upload: This field can be used for uploading a file. The size of the uploaded file can be limited by setting the value of Maximum Size attribute in KB. The upload folder can be mentioned by setting the Destination attribute. Only files with extensions listed in Allowed file extensions attribute can be uploaded. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Class Name, Required, Additional Attributes.
468
-
469
- 4.8 Captcha:This field can be used for the ensuring that the submission is generated by a person. Choose the Field Type according to your preference. There are several options:
470
- Simple Captcha This is a easy to configure Simple Captcha. The number of randomly generated symbols can be set by the value of Captcha size attribute. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Class Name, Additional Attributes.
471
- Recaptcha This is an alternative option for Captcha that uses Public and Private Keys. You will need to create reCaptcha keys with the help of a dedicated tool.The tool can be found on https://www.google.com/recaptcha/admin/create.
472
-
473
- 4.9 Page Break: This can be used to break the contact form into distinct pages. Use Page Title to provide a title for the given page. Furthermore, the following parameters of the “Next” and “Previous” navigation buttons can be customized:
474
- Type, Name, Class Name, Check the required fields , Additional Attributes.
475
 
476
- 4.10 Section Break: This option allows adding a section break to the contact form page.
477
 
478
- 4.11 Map: This field can be used for pointing out some position on the map. The position of the marker is fixed at the front end. Multiple locations can be selected by clicking the + button. The field has several attributes:
479
- Location, Map Size, Marker Info, Class Name, Additional Attributes.
480
 
481
- 4.12 PayPal: Choose the Field Type. The following options are available:
482
- Amount (Price) This field is for indicating the amount of payment. Default field labels can be edited clicking on the field label and typing in a custom label. You can configure the following attributes: Field Label, Field Label Position, Range, Value If Empty, Field Size, Class Name, Required, Hide Cents, and Additional Attributes.
483
- Select This field can be used for selecting a product/service for which the payment is being made. The list (each item consists of “Product name” and its “Price”)can be specified by the Options attribute. You can easily add and remove list items. There is also a Product Properties parameter, where you can add different properties (e.g. size) by specifying the type, the name, and adding options for selection. The checked items are considered as empty values. You can configure the following attributes: Field Label, Field Label Position, Field Size, Class Name, Required, and Additional Attributes.
484
- Checkbox This field can be used for selecting multiple products/services for which the payment is being made. The options (each item consists of “Product name” and its “Price”) can be specified by the Options attribute. You can easily add and remove list items. There is also a quantity property parameter where the quantity of products/services can be specified. Moreover, there is a Product Properties parameter, where you can add different properties (e.g. size) by specifying the type, the name, and adding options for selection. You can configure the following attributes: Field Label, Field Label Position, Relative Position, Class Name, Required, and Additional Attributes.
485
- Radio This field can be used for selecting the product/service for which the payment is being made. The options (each item consists of “Product name” and its “Price”) can be specified by the Options attribute. You can easily add and remove list items. There is also a quantity property parameter where the quantity of products/services can be specified. Moreover, there is a Product Properties parameter, where you can add different properties (e.g. size) by specifying the type, the name, and adding options for selection. You can configure the following attributes: Field Label, Field Label Position, Relative Position, Class Name, Required, and Additional Attributes.
486
- Shipping This field can be used for selecting the shipping option for the selected product. The options (each item consists of a “Type” and “Price” parameters) can be specified by the Options attribute. You can easily add and remove list items. You can configure the following attributes: Field Label, Field Label Position, Relative Position, Class Name, Required, and Additional Attributes.
487
- Total This field calculates the total sum to be paid via PayPal, including the payments for the shipping and taxes (if applicable).
488
 
489
- 4.13 Survey Tools: Choose the Field Type according to your preferences. There are several options:
490
- Star Rating: This field can be used for inserting star rating field in the contact form. Type the name of the field to be displayed with the rating system. The field has several attributes: Field Label Position, Star Amount, Star Color, Class Name, Required, and Additional Attributes.
491
- Scale Rating: This field can be used for inserting scale rating in the contact form. Type the name of the field to be displayed with the rating system.Default field labels for lowest/highest satisfaction/grading can be edited clicking on the field label and typing in a custom label. The field has several attributes: Field Label Position, Scale Amount, Class Name, Required, and Additional Attributes.
492
- Spinner: This field can be used for inserting spinner as a rating system in the contact form. Type the name of the field to be displayed with the rating system. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Width, Min Value, Max Value, Step, Class Name, Required, and Additional Attributes.
493
- Slider: This field can be used for inserting slider as a rating system in the contact form. Type the name of the field to be displayed with the rating system. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Width, Min Value, Max Value, Class Name, Required, and Additional Attributes.
494
- Range: This field can be used for inserting range system in the contact form. Type the name of the field to be displayed with the range system. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Width, Step, Class Name, Required, and Additional Attributes.
495
- Grading: This field can be used for inserting grading system in the contact form. Type the name of the field to be displayed with the grading system. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Total, Items, Class Name, Required, and Additional Attributes.
496
- Matrix: This field can be used for inserting a matrix in the contact form. Type the name of the field to be displayed with the matrix. The field has several attributes: Field Label, Field Label Position, Input Type, Rows, Columns, Class Name, Required, and Additional Attributes.
497
- 4.14 Submit Button: Choose the Field Type according to your preference. There are several options:
498
- Submit and Reset: This field can be used for inserting a submit/reset button into the contact form. You can display reset button by checking the box called Display reset button. Type the name of the submit and reset buttons in Submit button label and Reset button label. The field also has several attributes: Class Name and Additional Attributes.
499
- Custom: This field can be used for inserting custom buttons into the contact form. Type the name of each button in button name field. You can define click functions for each button. The field also has several attributes: Class Name and Additional Attributes.
500
 
501
- = Step 5: Publishing the created contact form. =
502
 
503
- To insert a contact form into a Page or a Post.
504
 
 
505
 
506
-
507
- 5.1. Press the button named Insert Contact Form Maker in a post or a page you want to show the contact form.
508
 
509
- 5.2. Select a contact form from the list.
510
 
 
511
 
512
-
513
- 5.3. Save the page or the post.
514
 
515
- Alternatively, you can use Contact Form Maker without the button on the toolbar: Add the shortcode [wd_contact_form id="N"] (where N is the id of the contact form, for the contact form with id=2, the shortcode must be [wd_contact_form id="2"]) to the pages and posts, where you want the contact form to appear.
516
 
517
-
518
- = Step 6: Managing submissions of the contact form. =
519
-
520
- 6.1 On the left menu select Contact Form Maker > Submissions
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
521
 
522
- 6.2 In order to manage a contact form's submissions, select the contact form from the list.
523
 
524
- 6.3 For each contact form certain types of statistical data are available:
525
- - Entries: The number of submitted contact forms.
526
- - Views: The number of times the contact form has been viewed.
527
- - Conversion Rate: The percentage of submitted contact forms to the overall number of views.
528
 
529
- 6.4 For the contact forms that contain checkboxes or radio buttons a separate statistics is available. It shows how many times a particular checkbox/radio button has been checked, and what is the ratio of that number to the overall number of checks.
530
 
531
- 6.5 There is a possibility to search the submissions database by all the relevant fields of the given contact form. Submissions can be sorted by any of the fields of the contact form by clicking the labels.
532
 
 
533
 
534
- 6.6 You can delete any of submissions by selecting them and pressing the “Delete” button on the top of the page.
535
 
536
- 6.7 It is also possible to edit the submissions by clicking on the “Edit” icon on the upper right corner of the “Submissions” section.
537
 
 
538
 
539
- 6.8 You can add/remove any column of the submissions by “Add/Remove Columns” button.
540
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
541
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
542
 
543
- 6.9 The submissions can be exported to the CSV and XML formats.
3
  Tags: contact, contact form, email, forms, contact forms, custom form, feedback, form builder, form manager, form maker, forms builder, form builder wordpress
4
  Requires at least: 3.4
5
  Tested up to: 4.9
6
+ Stable tag: 1.12.16
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
  Contact Form by WD plugin is a simple contact form builder tool, which allows the user to create and edit different types of contact forms.
11
 
12
  == Description ==
13
+
 
 
 
 
 
 
 
14
  Create simple contact forms or complex applications forms with this FREE and intuitive WordPress plugin. No coding knowledge is required.
15
 
16
+ [Special Offer for all Premium Plugins](https://web-dorado.com/wordpress-plugins-bundle.html)
17
+
18
+
19
  [WordPress Contact Form Maker](http://web-dorado.com/products/wordpress-contact-form-maker-plugin.html)
20
 
21
+ WordPress Contact Form Maker is a simple form creator, which allows the user with almost no knowledge of programming to create and edit different type of responsive forms. The product is similar to the WordPress Form Maker using most of its functionality, whereas there are also some differences. If want to build advanced forms with various field types like Date, Time, Single choice, Multiple choice, etc., than you can use [WordPress Form Builder](http://wordpress.org/extend/plugins/form-maker).
22
 
23
+ The number of fields for the WordPress forms builder plugin is unlimited and having large amount of fields will not cause any malfunctioning of the contact form. You can add different types of fields, including inputs (e.g. e-mail, password, text area, text input and etc.), Captcha (as well as possibility of adding Google standard ReCaptcha), custom and standard buttons, as well as Map field.
24
 
25
  The WordPress free form builder uses simple and easy to manage backend interface, thus the users who are not able to make code-level changes, will be able to make customization and changes using parameters. The drag and drop form builder allows you to choose from a number of form options to get just the form you need. From simple one line form to a more complex email form for the site or conditional mailing form - the free responsive form builder is a perfect solution for every website.
26
 
28
 
29
  This contact form builder will equally fit the needs of the novice and experienced developers and designers.
30
 
31
+ ###Features
32
+ * Intuitive form editor
33
+ * Custom HTML between the fields
34
+ * Possibility to re-order fields with drag and drop
35
+ * Pagination
36
+ * Section breaks
37
+ * Custom email messages for admin and users
38
+ * Detailed parameters for each field type
39
+ * Data validation before the submission of the form.
40
+ * Conditional logic
41
+
42
+ Please note, that if you’re looking to add more complex, custom online forms with more field types, File upload field, Stripe and PayPal integrations, and many other premium features, you can use the [Contact Form Maker premium plugin](https://web-dorado.com/products/wordpress-contact-form-maker-plugin.html), which is a more advanced form builder tool.
43
 
44
  Contact Form Maker WordPress plugin comes with pre-built templates, but in case you need custom forms, feel free to create your own advanced forms. The form creation process with the plugin is quick and easy.
45
 
46
+ This WordPress plugin is a must have free form builder for any website. It allows you to share contact info like address, email, phone, etc., but also allows you to add email forms, making it possible for your users to leave their feedback and comments directly through email submit forms. Try contact form plugin today and create web forms free and easy!
47
+
48
+ ###IMPORTANT: If you think you found a bug in the plugin or have any problem or question concerning Contact Form Maker, do not hesitate to contact us at [info@web-dorado.com](mailto:info@web-dorado.com).
49
+
50
+ == Installation ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  After downloading the ZIP file,
53
 
54
  1. Log in to the administrator panel.
55
  2. Go to Plugins Add > New > Upload.
56
+ 3. Click "Choose file" ("Browse") and select the downloaded zip file.
57
  *For Mac Users*
58
  *Go to your Downloads folder and locate the folder with the plugin. Right-click on the folder and select Compress. Now you have a newly created .zip file which can be installed as described here.*
59
+ 4. Click "Install Now" button.
60
+ 5. Click "Activate Plugin" button for activating the plugin.
61
+ 6.If the installation does not succeed, please contact us at [info@web-dorado.com](mailto:info@web-dorado.com).
 
 
 
 
 
62
 
63
  == Screenshots ==
64
  1. [WordPress Contact Form](http://wordpress.org/plugins/contact-form-maker/) - Sample RSVP
71
  8. Contact Form Maker - Select Columns
72
 
73
  == Changelog ==
74
+
75
+ = 1.12.16 =
76
+ * Improved: Email functionality.
77
+ * Fixed: Multiple choice and single choice with long labels.
78
+ * Fixed: Submissions CSV export with UTF-8 encoding.
79
+ * Fixed: Form preview for not embedded forms.
80
+
81
  = 1.12.15 =
82
  * Fixed: Error on adding a field.
83
 
290
  * Conversion Rate of a contact form: The percentage of submitted contact forms to the overall number of views.
291
 
292
 
293
+ == Frequently Asked Questions ==
 
294
 
295
+ = How should I create a new contact form? =
 
 
 
296
 
297
+ On the left menu select Contact Form > Forms
298
+ In the upper left corner click on the "Add New" button.
299
+ Contact Form Title. Specify a title for the contact form.
300
+
301
+ = Can I configure Contact Form general options? =
 
 
 
 
302
 
303
+ Open your form, then navigate to Contact Form Options > General Options tab. You will find a variety of options here.
304
 
305
+ = Where can I setup submission notifications via emal? =
306
 
307
+ Switch to Email Options tab of Form Options page and configure the following settings:
308
 
309
+ Email to send submissions to. Here you provide e-mails to which submitted contact form information is sent. If you need more than one e-mail address, you must separate them by commas. This field is not required. In any case, the submitted information is stored in "Submissions" part, where it can be easily managed.
310
 
311
+ Email From. Here you define the email address from which the users receive the submission email (sender’s email).
 
 
312
 
313
+ From Name. Here you define the sender’s name which is shown in submission email.
314
 
315
+ Theme. A distinct theme can be applied to each new contact form. The themes can be accessed by selecting Contact Form Maker > Themes on the top menu. 41 themes are available for selection. There is an option for creating new themes, which you can access by clicking "New" on the upper right corner of the section.
316
 
317
+ = Is it possible to set an action after submission? =
318
+
319
+ Actions after Submission feature of Contact Form Maker lets you do this. Go to Form Options > Actions after Submission.
 
 
320
 
 
321
  Here you can select the action that takes place after contact form submission. Following options are available:
322
+ * Stay on contact form: The user stays on the contact form page.
323
+ * Article: The user is redirected to the selected article.
324
+ * Custom text: Custom text is displayed on the screen.
325
+ * URL: The user is redirected to the provided URL.
326
+
327
+ = Is it possible to make payments through contact form? =
328
+
329
+ [Premium version of Contact Form Maker plugin](https://web-dorado.com/products/wordpress-contact-form-maker-plugin.html) is integrated with PayPal. It provides the following Payment Options.
330
+
331
+ * Turn on PayPal. Allows making PayPal paymentsusing Contact Form Maker.
332
+ * Checkout Mode. Choose the checkout mode: [Production](https://developer.paypal.com/webapps/developer/docs/classic/lifecycle/goingLive/) or [Test Mode](https://developer.paypal.com/webapps/developer/docs/integration/direct/test-the-api/)
333
+ * PayPal Email. Enter your PayPal email.
334
+ * PayPal Currency. Choose your PayPal currency.
335
+ * Tax. Add the tax amount if any.
336
+
337
+ = How can I apply custom Javascript code to the form? =
338
+
339
+ You can do that through JavaScript editor of
340
  Here you can define new JavaScript functions, which can be applied to the contact form. Three empty event functions are included:
341
+ * before_load(): before the contact form is loaded
342
+ * before_submit(): before the contact form is submitted
343
+ * before_reset(): before the contact form is reset
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
 
345
+ = Can I edit the text in submission email? =
346
 
347
+ You can do this from Form Options > Email Options of your contact form.
 
348
 
349
+ **For Administrator**
 
 
 
 
 
 
350
 
351
+ Here you can add custom texts, images, and custom HTML to the e-mail message that is sent to the administrator, as well as choose which fields of the submitted contact form are included in the e-mail (set to ‘all’ by default).
 
 
 
 
 
 
 
 
 
 
352
 
353
+ **For User**
354
 
355
+ Here you can add custom texts, images, and custom HTML to the e-mail message that is sent to the users, as well as choose which fields of the submitted contact form are included in the e-mail (set to ‘all’ by default).
356
 
357
+ = Can I insert text or HTML into a form? =
358
 
359
+ Yes, you can do this using Custom HTML field, which is an HTML editor. You can insert your own HTML content to your WordPress contact form.
 
360
 
361
+ = How can I add a single line text input? =
362
 
363
+ You can place Text Input field on your form. At first choose the Field Type according to your preference. There are several options:
364
 
365
+ Simple Text: This can be used for typing some text. It has several attributes:
 
366
 
367
+ Field Id, Field Name, Field Label, Field Label Position, Field Size, Value If Empty, Class Name, Required, Allow only unique values, Additional Attributes.
368
 
369
+ = Can I allow users to write hidden text? =
370
+
371
+ You can use Password field. This field can be used for adding a password field to your contact form. It has several attributes:
372
+
373
+ Field Id, Field Name, Field Label, Field Label Position, Field Size, Class Name, Required, Allow only unique values, Additional Attributes.
374
+
375
+ = Is it possible to enter a paragraph text with the form? =
376
+
377
+ Text Area field can be used for typing some text. The difference between Text Area and Simple Text is that Simple Text has only one row while Text Area can have several rows. It has several attributes:
378
+
379
+ Field Id, Field Name, Field Label, Field Label Position, Field Size, Value If Empty, Class Name, Required, Allow only unique values, Additional Attributes.
380
+
381
+ = Can I let users provide their names? =
382
+
383
+ Name field can be used for typing a name. Default field labels can be edited clicking on the field label and typing in a custom label. It has several attributes:
384
+
385
+ Field Id, Field Name, Field Label, Field Label Position, Value If Empty, Field Size, Name Format, Class Name, Required, Allow only unique values, Additional Attributes.
386
+
387
+ = How can I ask the submitter to provide address? =
388
+
389
+ Address field can be used for adding an address. Default field labels can be edited clicking on the label and typing in a custom label. It has several attributes:
390
 
391
+ Field Id, Field Name, Field Label, Field Label Position, Overall Size, Class Name, Disable Fields, Required, Additional Attributes
392
 
393
+ Alternatively, you can use Address (Mark on Map). This filed can be used for adding an address by directly marking it on the map. It has several attributes:
 
 
 
394
 
395
+ Field Label, Field Label Position, Default Location, Map Size, Marker Info, Class Name, Additional Attributes.
396
 
397
+ = Is there a field with email validation? =
398
 
399
+ E-mail field can be used for typing the submitter’s e-mail. The submitted e-mail validation is checked. It has several attributes:
400
 
401
+ Field Id, Field Name, Field Label, Field Label Position, Field Size, Value If Empty, Class Name, Send mail to submitter, Required, Allow only unique values, Additional Attributes.
402
 
403
+ = Can the contact form have a phone number field? =
404
 
405
+ Phone field can be used to provide a phone number. Default field labels can be edited clicking on the label and typing in a custom label. It has several attributes:
406
 
407
+ Field Id, Field Name, Field Label, Field Label Position, Value If Empty, Field Size, Class Name, Required, Allow only unique values, Additional Attributes.
408
 
409
+ = Is it possible to place a field hidden from users? =
410
+
411
+ You can use Hidden Field of Contact Form Maker. This field can be used to store additional information that does not need to be displayed. It has several attributes:
412
+
413
+ Field ld, Field Name, Field Value, Additional Attributes.
414
+
415
+ = Is it possible to allow users upload files through forms? =
416
+
417
+ To add a file upload field, you need to purchase the [Premium version of Contact Form Maker plugin](https://web-dorado.com/products/wordpress-contact-form-maker-plugin.html). This field can be used for uploading a file. The size of the uploaded file can be limited by setting the value of Maximum Size attribute in KB. The upload folder can be mentioned by setting the Destination attribute. Only files with extensions listed in Allowed file extensions attribute can be uploaded.
418
+
419
+ The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Class Name, Required, Additional Attributes.
420
+
421
+ = What should I do to avoid spam submissions? =
422
+
423
+ Contact Form Maker plugin provides the following two spam protection features.
424
+
425
+ **Captcha**
426
+
427
+ This field can be used for the ensuring that the submission is generated by a person. Choose the Field Type according to your preference. There are several options:
428
+
429
+ * Simple Captcha. The number of randomly generated symbols can be set by the value of Captcha size attribute. The field has several attributes: Field Id, Field Name, Field Label, Field Label Position, Class Name, Additional Attributes.
430
+ * Recaptcha This is an alternative option for Captcha that uses Public and Private Keys. You will need to create reCaptcha keys with the help of a dedicated tool.The tool can be found on https://www.google.com/recaptcha/admin/create.
431
+
432
+ = How can I separate the form into pages? =
433
+
434
+ You need to place Page Break field on your form. This can be used to break the contact form into distinct pages. Use Page Title to provide a title for the given page.
435
+
436
+ Furthermore, the following parameters of the "Next" and "Previous" navigation buttons can be customized:
437
+ Type, Name, Class Name, Check the required fields , Additional Attributes.
438
+
439
+ = Can the form have multiple sections? =
440
+
441
+ Yes, you can do that by adding Section Break fields to your form. This option allows adding a section break to the contact form page.
442
+
443
+ = Is it possible to display a map on the form? =
444
+
445
+ Map field can be used for pointing out some position on the map. The position of the marker is fixed at the front end. Multiple locations can be selected by clicking the + button.
446
+
447
+ The field has several attributes:
448
+ Location, Map Size, Marker Info, Class Name, Additional Attributes.
449
+
450
+ = What buttons can I use the form? =
451
+
452
+ Contact Form Maker provides the following types of buttons.
453
+
454
+ **Submit Button**
455
+
456
+ Choose the Field Type according to your preference. There are several options:
457
+
458
+ **Submit and Reset:** This field can be used for inserting a submit/reset button into the contact form. You can display reset button by checking the box called Display reset button. Type the name of the submit and reset buttons in Submit button label and Reset button label.
459
+
460
+ The field also has several attributes: Class Name and Additional Attributes.
461
+
462
+ **Custom**
463
+
464
+ This field can be used for inserting custom buttons into the contact form. Type the name of each button in button name field. You can define click functions for each button. The field also has several attributes: Class Name and Additional Attributes.
465
+
466
+ = How can I publish the created contact form? =
467
+
468
+ To insert a contact form into a Page or a Post.
469
+
470
+ Press the button named Insert Contact Form Maker in a post or a page you want to show the contact form.
471
+ Select a contact form from the list.
472
+
473
+ Save the page or the post.
474
+
475
+ Alternatively, you can use Contact Form Maker without the button on the toolbar: Add the shortcode [wd_contact_form id="N"] (where N is the id of the contact form, for the contact form with id=2, the shortcode must be [wd_contact_form id="2"]) to the pages and posts, where you want the contact form to appear.
476
 
477
+ = Where can I find the submissions of the contact form? =
478
+
479
+ On the left menu select Contact Form Maker > Submissions
480
+
481
+ In order to manage a contact form's submissions, select the contact form from the list.
482
+
483
+ For each contact form certain types of statistical data are available:
484
+ * Entries: The number of submitted contact forms.
485
+ * Views: The number of times the contact form has been viewed.
486
+ * Conversion Rate: The percentage of submitted contact forms to the overall number of views.
487
+
488
+ There is a possibility to search the submissions database by all the relevant fields of the given contact form. Submissions can be sorted by any of the fields of the contact form by clicking the labels.
489
+
490
+ You can delete any of submissions by selecting them and pressing the "Delete" button on the top of the page.
491
+
492
+ It is also possible to edit the submissions by clicking "Edit" on the particular submission.
493
+
494
+ You can add/remove any column of the submissions by "Add/Remove Columns" button.
495
 
496
+ The submissions can be exported to the CSV and XML formats.