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

Version Description

  • Changed: improved Form Submissions view: added tooltips for long labels of form fields.
  • Added: detailed descriptions of form fields inside the form editor
  • Fixed: UTF-8 text in Email body.
Download this release

Release Info

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

Code changes from version 1.12.17 to 1.12.18

admin/controllers/Checkpaypal.php CHANGED
@@ -171,7 +171,7 @@ class FMControllerCheckpaypal {
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_FM_Library::mail($recipient, $subject, $message, $header_arr);
176
  }
177
  }
171
  $message = $this->view->payment_information_template($template_params);
172
  $header_arr = array();
173
  $header_arr['content_type'] = "text/html";
174
+ $header_arr['charset'] = 'UTF-8';
175
  WDW_FM_Library::mail($recipient, $subject, $message, $header_arr);
176
  }
177
  }
admin/views/FormMakerSubmits.php CHANGED
@@ -23,6 +23,8 @@ class FMViewFormMakerSubmits {
23
  padding: 6px;
24
  border: 1px solid #fff;
25
  font-size: 13px;
 
 
26
  }
27
 
28
  .field_label {
23
  padding: 6px;
24
  border: 1px solid #fff;
25
  font-size: 13px;
26
+ max-width:288px;
27
+ word-break: break-all;
28
  }
29
 
30
  .field_label {
admin/views/Manage_fm.php CHANGED
@@ -826,7 +826,8 @@ $stats_labels = $params['stats_labels'];
826
  <label class="wd-label-radio" for="fm_go-savedb-1"><?php _e('Yes', WDFM()->prefix); ?></label>
827
  <input type="radio" name="savedb" <?php echo $row->savedb == 0 ? 'checked="checked"' : '' ?> id="fm_go-savedb-0" class="wd-radio" value="0">
828
  <label class="wd-label-radio" for="fm_go-savedb-0"><?php _e('No', WDFM()->prefix); ?></label>
829
- </span>
 
830
  <span class="wd-group theme-wrap">
831
  <label class="wd-label"><?php _e('Theme', WDFM()->prefix); ?></label>
832
  <select id="theme" name="theme" onChange="set_theme()">
@@ -852,18 +853,22 @@ $stats_labels = $params['stats_labels'];
852
  WDFM()->nonce => wp_create_nonce(WDFM()->nonce)
853
  ), admin_url('admin.php?page=themes' . WDFM()->menu_postfix . '&task=edit')); ?>'); return false;"><?php _e('Edit', WDFM()->prefix); ?></a>
854
  <div id="old_theme_notice" class="error inline" style="display: none;"><p><?php _e('The theme you have selected is outdated. Please choose one from New Themes section.', WDFM()->prefix); ?></p></div>
855
- </span>
 
 
856
  <span class="wd-group">
857
  <label class="wd-label" for="requiredmark"><?php _e('Required fields mark', WDFM()->prefix); ?></label>
858
  <input type="text" id="requiredmark" name="requiredmark" value="<?php echo $row->requiredmark; ?>">
859
- </span>
 
860
  <span class="wd-group">
861
  <label class="wd-label"><?php _e('Save Uploads', WDFM()->prefix); ?></label>
862
  <input type="radio" name="save_uploads" <?php echo $row->save_uploads == 1 ? 'checked="checked"' : '' ?> id="fm_go-save_uploads-1" class="wd-radio" value="1">
863
  <label class="wd-label-radio" for="fm_go-save_uploads-1"><?php _e('Yes', WDFM()->prefix); ?></label>
864
  <input type="radio" name="save_uploads" <?php echo $row->save_uploads == 0 ? 'checked="checked"' : '' ?> id="fm_go-save_uploads-0" class="wd-radio" value="0">
865
  <label class="wd-label-radio" for="fm_go-save_uploads-0"><?php _e('No', WDFM()->prefix); ?></label>
866
- </span>
 
867
  </div>
868
  </div>
869
  </div>
@@ -871,7 +876,7 @@ $stats_labels = $params['stats_labels'];
871
  <div class="wd-box-section">
872
  <div class="wd-box-content">
873
  <span class="wd-group">
874
- <label class="wd-label"><?php _e('Allow User to see submissions:', WDFM()->prefix); ?></label>
875
  <?php
876
  $checked_UserGroup = explode(',', $row->user_id_wd);
877
  $i = 0;
@@ -886,7 +891,8 @@ $stats_labels = $params['stats_labels'];
886
  ?>
887
  <input type="checkbox" value="guest" id="user_<?php echo $i; ?>" onchange="acces_level(<?php echo count($userGroups); ?>)"<?php echo(in_array('guest', $checked_UserGroup) ? 'checked="checked"' : '') ?>/><label for="user_<?php echo $i; ?>">Guest</label>
888
  <input type="hidden" name="user_id_wd" value="<?php echo $row->user_id_wd ?>" id="user_id_wd" />
889
- </span>
 
890
  <?php if ( count($label_titles_for_submissions) ) { ?>
891
  <span class="wd-group">
892
  <label class="wd-label"><?php _e('Fields to hide in frontend submissions', WDFM()->prefix); ?></label>
@@ -906,25 +912,27 @@ $stats_labels = $params['stats_labels'];
906
  }
907
  ?>
908
  </ul>
909
- <input type="hidden" name="frontend_submit_fields" value="<?php echo $row->frontend_submit_fields ?>" id="frontend_submit_fields" />
910
- </span>
 
911
  <?php if ( $stats_labels ) { ?>
912
  <span class="wd-group">
913
- <label class="wd-label"><?php _e('Stats fields:', WDFM()->prefix); ?></label>
914
- <ul id="stats_fields">
915
- <li>
916
- <input type="checkbox" name="all_stats_fields" id="all_stats_fields" onclick="checkAllByParentId('stats_fields'); checked_labels('stats_filed_label');" value="<?php echo implode(',', $stats_labels_ids) . ","; ?>">
917
- <label for="all_stats_fields"><?php _e('Select All', WDFM()->prefix); ?></label>
918
- </li>
919
- <?php
920
- for ( $i = 0, $n = count($stats_labels); $i < $n; $i++ ) {
921
- $field_label = $stats_labels[$i];
922
- echo "<li><input type=\"checkbox\" id=\"stats_filed_label" . $i . "\" name=\"stats_filed_label" . $i . "\" value=\"" . $stats_labels_ids[$i] . "\" class=\"stats_filed_label\" onclick=\"checked_labels('stats_filed_label')\"><label for=\"stats_filed_label" . $i . "\">" . (strlen($field_label) > 80 ? substr($field_label, 0, 80) . '...' : $field_label) . "</label></li>";
923
- }
924
- ?>
925
- </ul>
926
- <input type="hidden" name="frontend_submit_stat_fields" value="<?php echo $row->frontend_submit_stat_fields ?>" id="frontend_submit_stat_fields" />
927
- </span>
 
928
  <?php }
929
  } ?>
930
  </div>
@@ -943,7 +951,7 @@ $stats_labels = $params['stats_labels'];
943
  <label class="wd-label-radio" for="fm_sendemail-1"><?php _e('Yes', WDFM()->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', WDFM()->prefix); ?></label>
946
- <p class="description"><?php _e('Enable this setting to send submitted information to administrators, as well as the submitter.', WDFM()->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.', WDFM()->prefix); ?></p>
948
  </div>
949
  </div>
@@ -1550,10 +1558,12 @@ $stats_labels = $params['stats_labels'];
1550
  <option value="PHP" <?php echo(($row->payment_currency == 'PHP') ? 'selected' : ''); ?>>&#8369; &#8226; Philippine Peso</option>
1551
  <option value="THB" <?php echo(($row->payment_currency == 'THB') ? 'selected' : ''); ?>>&#xe3f; &#8226; Thai Bahtv</option>
1552
  </select>
 
1553
  </div>
1554
  <div class="wd-group">
1555
  <label class="wd-label" for="tax"><?php _e('Tax', WDFM()->prefix); ?> (%)</label>
1556
  <input type="text" name="tax" id="tax" value="<?php echo $row->tax; ?>" class="text_area" onKeyPress="return check_isnum_point(event)">
 
1557
  </div>
1558
  <div class="wd-group">
1559
  <label class="wd-label"><?php _e('Checkout Mode', WDFM()->prefix); ?></label>
@@ -1565,6 +1575,7 @@ $stats_labels = $params['stats_labels'];
1565
  <div class="wd-group">
1566
  <label class="wd-label" for="paypal_email"><?php _e('Paypal email', WDFM()->prefix); ?></label>
1567
  <input type="text" name="paypal_email" id="paypal_email" value="<?php echo $row->paypal_email; ?>" class="text_area">
 
1568
  </div>
1569
  </div>
1570
  <div class="fm_payment_option_stripe">
@@ -1702,8 +1713,9 @@ $stats_labels = $params['stats_labels'];
1702
  <div class="wd-box-section">
1703
  <div class="wd-box-content">
1704
  <div class="wd-group" id="conditions_fieldset_wrap">
 
1705
  <div style="text-align: right;">
1706
- <button class="wd-button button-primary" onclick="add_condition('<?php echo $chose_ids; ?>', '<?php echo htmlspecialchars(addslashes($chose_labels)); ?>', '<?php echo $chose_types; ?>', '<?php echo htmlspecialchars(addslashes($chose_paramss)); ?>', '<?php echo $all_ids_cond; ?>', '<?php echo htmlspecialchars(addslashes($all_labels_cond)); ?>'); return false;"><?php _e('Add Condition', WDFM()->prefix); ?></button>
1707
  </div>
1708
  <?php
1709
  for ( $k = 0; $k < $count_of_conditions; $k++ ) {
@@ -1919,6 +1931,7 @@ $stats_labels = $params['stats_labels'];
1919
  <div class="wd-box-section">
1920
  <div class="wd-box-content">
1921
  <div class="wd-group">
 
1922
  <div style="text-align: right; padding-bottom: 20px;">
1923
  <button id="add_query" class="wd-button button-primary" onclick="tb_show('', '<?php echo add_query_arg(array(
1924
  'action' => 'FormMakerSQLMapping' . WDFM()->plugin_postfix,
826
  <label class="wd-label-radio" for="fm_go-savedb-1"><?php _e('Yes', WDFM()->prefix); ?></label>
827
  <input type="radio" name="savedb" <?php echo $row->savedb == 0 ? 'checked="checked"' : '' ?> id="fm_go-savedb-0" class="wd-radio" value="0">
828
  <label class="wd-label-radio" for="fm_go-savedb-0"><?php _e('No', WDFM()->prefix); ?></label>
829
+ <p class="description"><?php _e('IMPORTANT! If you disable this option, the information submitted through this form will not be saved in the database and will not be displayed on the Submissions page.', WDFM()->prefix); ?></p>
830
+ </span>
831
  <span class="wd-group theme-wrap">
832
  <label class="wd-label"><?php _e('Theme', WDFM()->prefix); ?></label>
833
  <select id="theme" name="theme" onChange="set_theme()">
853
  WDFM()->nonce => wp_create_nonce(WDFM()->nonce)
854
  ), admin_url('admin.php?page=themes' . WDFM()->menu_postfix . '&task=edit')); ?>'); return false;"><?php _e('Edit', WDFM()->prefix); ?></a>
855
  <div id="old_theme_notice" class="error inline" style="display: none;"><p><?php _e('The theme you have selected is outdated. Please choose one from New Themes section.', WDFM()->prefix); ?></p></div>
856
+ <p class="description"><?php _e('The appearance of your forms is controlled by the theme you select with this option. Press Edit button to open and modify your form theme.', WDFM()->prefix); ?></p>
857
+
858
+ </span>
859
  <span class="wd-group">
860
  <label class="wd-label" for="requiredmark"><?php _e('Required fields mark', WDFM()->prefix); ?></label>
861
  <input type="text" id="requiredmark" name="requiredmark" value="<?php echo $row->requiredmark; ?>">
862
+ <p class="description"><?php _e('Use this option to change the mark for required fields of your form.', WDFM()->prefix); ?></p>
863
+ </span>
864
  <span class="wd-group">
865
  <label class="wd-label"><?php _e('Save Uploads', WDFM()->prefix); ?></label>
866
  <input type="radio" name="save_uploads" <?php echo $row->save_uploads == 1 ? 'checked="checked"' : '' ?> id="fm_go-save_uploads-1" class="wd-radio" value="1">
867
  <label class="wd-label-radio" for="fm_go-save_uploads-1"><?php _e('Yes', WDFM()->prefix); ?></label>
868
  <input type="radio" name="save_uploads" <?php echo $row->save_uploads == 0 ? 'checked="checked"' : '' ?> id="fm_go-save_uploads-0" class="wd-radio" value="0">
869
  <label class="wd-label-radio" for="fm_go-save_uploads-0"><?php _e('No', WDFM()->prefix); ?></label>
870
+ <p class="description"><?php _e('IMPORTANT! If you disable this option, the files uploaded through your form will not be saved on your site. The files will still be sent to emails and saved in Google Drive or Dropbox, if configured.', WDFM()->prefix); ?></p>
871
+ </span>
872
  </div>
873
  </div>
874
  </div>
876
  <div class="wd-box-section">
877
  <div class="wd-box-content">
878
  <span class="wd-group">
879
+ <label class="wd-label"><?php _e('Allow User to see submissions', WDFM()->prefix); ?></label>
880
  <?php
881
  $checked_UserGroup = explode(',', $row->user_id_wd);
882
  $i = 0;
891
  ?>
892
  <input type="checkbox" value="guest" id="user_<?php echo $i; ?>" onchange="acces_level(<?php echo count($userGroups); ?>)"<?php echo(in_array('guest', $checked_UserGroup) ? 'checked="checked"' : '') ?>/><label for="user_<?php echo $i; ?>">Guest</label>
893
  <input type="hidden" name="user_id_wd" value="<?php echo $row->user_id_wd ?>" id="user_id_wd" />
894
+ <p class="description"><?php _e('Mark all user roles which will be able to view front-end submissions, when you publish them on a post or page.', WDFM()->prefix); ?></p>
895
+ </span>
896
  <?php if ( count($label_titles_for_submissions) ) { ?>
897
  <span class="wd-group">
898
  <label class="wd-label"><?php _e('Fields to hide in frontend submissions', WDFM()->prefix); ?></label>
912
  }
913
  ?>
914
  </ul>
915
+ <input type="hidden" name="frontend_submit_fields" value="<?php echo $row->frontend_submit_fields ?>" id="frontend_submit_fields" />
916
+ <p class="description"><?php _e('Select fields of the form and Stats Fields which will not to be displayed within front-end submissions, when you publish them.', WDFM()->prefix); ?></p>
917
+ </span>
918
  <?php if ( $stats_labels ) { ?>
919
  <span class="wd-group">
920
+ <label class="wd-label"><?php _e('Stats fields:', WDFM()->prefix); ?></label>
921
+ <ul id="stats_fields">
922
+ <li>
923
+ <input type="checkbox" name="all_stats_fields" id="all_stats_fields" onclick="checkAllByParentId('stats_fields'); checked_labels('stats_filed_label');" value="<?php echo implode(',', $stats_labels_ids) . ","; ?>">
924
+ <label for="all_stats_fields"><?php _e('Select All', WDFM()->prefix); ?></label>
925
+ </li>
926
+ <?php
927
+ for ( $i = 0, $n = count($stats_labels); $i < $n; $i++ ) {
928
+ $field_label = $stats_labels[$i];
929
+ echo "<li><input type=\"checkbox\" id=\"stats_filed_label" . $i . "\" name=\"stats_filed_label" . $i . "\" value=\"" . $stats_labels_ids[$i] . "\" class=\"stats_filed_label\" onclick=\"checked_labels('stats_filed_label')\"><label for=\"stats_filed_label" . $i . "\">" . (strlen($field_label) > 80 ? substr($field_label, 0, 80) . '...' : $field_label) . "</label></li>";
930
+ }
931
+ ?>
932
+ </ul>
933
+ <input type="hidden" name="frontend_submit_stat_fields" value="<?php echo $row->frontend_submit_stat_fields ?>" id="frontend_submit_stat_fields" />
934
+ <p class="description"><?php _e('Select fields of the form and Stats Fields which will not to be displayed within front-end submissions, when you publish them.', WDFM()->prefix); ?></p>
935
+ </span>
936
  <?php }
937
  } ?>
938
  </div>
951
  <label class="wd-label-radio" for="fm_sendemail-1"><?php _e('Yes', WDFM()->prefix); ?></label>
952
  <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)" />
953
  <label class="wd-label-radio" for="fm_sendemail-0"><?php _e('No', WDFM()->prefix); ?></label>
954
+ <p class="description"><?php _e('Enable this setting to send submitted information to administrators and/or the submitter.', WDFM()->prefix); ?></p>
955
  <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.', WDFM()->prefix); ?></p>
956
  </div>
957
  </div>
1558
  <option value="PHP" <?php echo(($row->payment_currency == 'PHP') ? 'selected' : ''); ?>>&#8369; &#8226; Philippine Peso</option>
1559
  <option value="THB" <?php echo(($row->payment_currency == 'THB') ? 'selected' : ''); ?>>&#xe3f; &#8226; Thai Bahtv</option>
1560
  </select>
1561
+ <p class="description"><?php _e('Choose the currency to be used for the payments made through your form.', WDFM()->prefix); ?></p>
1562
  </div>
1563
  <div class="wd-group">
1564
  <label class="wd-label" for="tax"><?php _e('Tax', WDFM()->prefix); ?> (%)</label>
1565
  <input type="text" name="tax" id="tax" value="<?php echo $row->tax; ?>" class="text_area" onKeyPress="return check_isnum_point(event)">
1566
+ <p class="description"><?php _e('Specify the percentage of the tax. It will be calculated from the total payment amount of your form.', WDFM()->prefix); ?></p>
1567
  </div>
1568
  <div class="wd-group">
1569
  <label class="wd-label"><?php _e('Checkout Mode', WDFM()->prefix); ?></label>
1575
  <div class="wd-group">
1576
  <label class="wd-label" for="paypal_email"><?php _e('Paypal email', WDFM()->prefix); ?></label>
1577
  <input type="text" name="paypal_email" id="paypal_email" value="<?php echo $row->paypal_email; ?>" class="text_area">
1578
+ <p class="description"><?php _e('Provide the email address of a valid PayPal account. It will receive the payments made through your form.', WDFM()->prefix); ?></p>
1579
  </div>
1580
  </div>
1581
  <div class="fm_payment_option_stripe">
1713
  <div class="wd-box-section">
1714
  <div class="wd-box-content">
1715
  <div class="wd-group" id="conditions_fieldset_wrap">
1716
+ <p class="description"><?php _e('Press Add Condition button to configure the first condition of your form. Show/Hide select box represents the action which will be completed, if all or any of the condition statements are fulfilled. Use the second drop-down menu to select the field which will be shown or hidden. Click the little Plus (+) icon to add the statement of your form condition.', WDFM()->prefix); ?><br><br></p>
1717
  <div style="text-align: right;">
1718
+ <button class="wd-button button-primary" onclick="add_condition('<?php echo $chose_ids; ?>', '<?php echo htmlspecialchars(addslashes($chose_labels)); ?>', '<?php echo $chose_types; ?>', '<?php echo htmlspecialchars(addslashes($chose_paramss)); ?>', '<?php echo $all_ids_cond; ?>', '<?php echo htmlspecialchars(addslashes($all_labels_cond)); ?>'); return false;"><?php _e('Add Condition', WDFM()->prefix); ?></button>
1719
  </div>
1720
  <?php
1721
  for ( $k = 0; $k < $count_of_conditions; $k++ ) {
1931
  <div class="wd-box-section">
1932
  <div class="wd-box-content">
1933
  <div class="wd-group">
1934
+ <p class="description"><?php _e('WordPress Form Maker stores the submitted information into [prefix]_formmaker_submits MySQL database table of your website by default. With MySQL Mapping functionality of Form Maker you can insert this data into any local or remote table of your choice, or perform other queries based on submitted values. Press Add Query button to configure the first query for this form.', WDFM()->prefix); ?></p><br><br>
1935
  <div style="text-align: right; padding-bottom: 20px;">
1936
  <button id="add_query" class="wd-button button-primary" onclick="tb_show('', '<?php echo add_query_arg(array(
1937
  'action' => 'FormMakerSQLMapping' . WDFM()->plugin_postfix,
admin/views/Options_fm.php CHANGED
@@ -65,7 +65,7 @@ class FMViewOptions_fm extends FMAdminView {
65
  <label class="wd-label" for="private_key"><?php _e('Secret key', WDFM()->prefix); ?></label>
66
  <input id="private_key" name="private_key" value="<?php echo $private_key; ?>" type="text" />
67
  <p class="description">
68
- <?php echo sprintf(__('%s for your site from ReCaptcha website.', WDFM()->prefix), '<a href="https://www.google.com/recaptcha/intro/index.html" target="_blank">' . __('Get ReCaptcha Site and Secret Keys', WDFM()->prefix) . '</a>'); ?>
69
  </p>
70
  </span>
71
  <span class="wd-group wd-right">
@@ -82,9 +82,9 @@ class FMViewOptions_fm extends FMAdminView {
82
  <label class="wd-label" for="map_key"><?php _e('Map API Key', WDFM()->prefix); ?></label>
83
  <input id="map_key" name="map_key" value="<?php echo $map_key; ?>" type="text" />
84
  <p class="description">
85
- <a href="https://console.developers.google.com/flows/enableapi?apiid=maps_backend&keyType=CLIENT_SIDE&reusekey=true" target="_blank"><?php _e('Google Map API key.', WDFM()->prefix); ?></a>
86
- <?php echo _e('Make sure the key does not have restrictions.', WDFM()->prefix); ?>
87
- <?php echo _e('It may take up to 5 minutes for API key change to take effect.', WDFM()->prefix); ?>
88
  </p>
89
  </span>
90
  </div>
65
  <label class="wd-label" for="private_key"><?php _e('Secret key', WDFM()->prefix); ?></label>
66
  <input id="private_key" name="private_key" value="<?php echo $private_key; ?>" type="text" />
67
  <p class="description">
68
+ <?php echo sprintf(__('%s for your site from ReCaptcha website and copy the provided here.', WDFM()->prefix), '<a href="https://www.google.com/recaptcha/intro/index.html" target="_blank">' . __('Get ReCaptcha Site and Secret Keys', WDFM()->prefix) . '</a>'); ?>
69
  </p>
70
  </span>
71
  <span class="wd-group wd-right">
82
  <label class="wd-label" for="map_key"><?php _e('Map API Key', WDFM()->prefix); ?></label>
83
  <input id="map_key" name="map_key" value="<?php echo $map_key; ?>" type="text" />
84
  <p class="description">
85
+ <?php echo _e('Get', WDFM()->prefix); ?>
86
+ <a href="https://console.developers.google.com/flows/enableapi?apiid=maps_backend&keyType=CLIENT_SIDE&reusekey=true" target="_blank"><?php _e('Google Map API key', WDFM()->prefix); ?></a>
87
+ <?php echo _e(' and copy them to this input. Make sure the key does not have restrictions.', WDFM()->prefix); ?>
88
  </p>
89
  </span>
90
  </div>
admin/views/Submissions_fm.php CHANGED
@@ -114,6 +114,7 @@ class FMViewSubmissions_fm extends FMAdminView {
114
  $blocked_ips = $params['blocked_ips'];
115
 
116
  $sorted_labels_id = $params['sorted_labels_id'];
 
117
  $sorted_label_types = $params['sorted_label_types'];
118
  $sorted_label_names = $params['sorted_label_names'];
119
  $sorted_label_names_original = $params['sorted_label_names_original'];
@@ -135,7 +136,6 @@ class FMViewSubmissions_fm extends FMAdminView {
135
 
136
  $oder_class_default = $params['oder_class_default'];
137
  $oder_class = $params['oder_class'];
138
-
139
  $m = $params['m'];
140
 
141
  $group_id_s = $params['group_id_s'];
@@ -253,18 +253,18 @@ class FMViewSubmissions_fm extends FMAdminView {
253
  </a>
254
  </th>
255
  <th scope="col" id="submitterusername_fc" class="submitterusername_fc <?php if ( $order_by == "display_name" ) {
256
- echo $oder_class;
257
- }
258
- else {
259
- echo $oder_class_default;
260
- } ?>" <?php echo $style_username; ?> data-colname="<?php _e('Submitter\'s Username', WDFM()->prefix);?>">
261
  <a href="" onclick="fm_set_input_value('order_by', 'display_name');
262
  fm_set_input_value('asc_or_desc', '<?php echo(($order_by == 'display_name' && $asc_or_desc == 'asc') ? 'desc' : 'asc'); ?>');
263
  fm_form_submit(event, 'admin_form')">
264
  <span><?php _e('Submitter\'s Username', WDFM()->prefix);?></span>
265
  <span class="sorting-indicator"></span>
266
  </a>
267
- </th>
268
  <th scope="col" id="submitteremail_fc" class="submitteremail_fc <?php if ( $order_by == "user_email" ) {
269
  echo $oder_class;
270
  }
@@ -277,12 +277,14 @@ class FMViewSubmissions_fm extends FMAdminView {
277
  <span><?php _e('Submitter\'s Email Address', WDFM()->prefix);?></span>
278
  <span class="sorting-indicator"></span>
279
  </a>
280
- </th>
281
  <?php
282
  $stripe_paypal = false;
283
  for ( $i = 0; $i < count($sorted_label_names); $i++ ) {
284
  $styleStr = $this->model->hide_or_not($lists['hide_label_list'], $sorted_labels_id[$i]);
285
  $field_title = $this->model->get_type_address($sorted_label_types[$i], $sorted_label_names_original[$i]);
 
 
286
  if ( $sorted_label_types[$i] == 'type_paypal_payment_status' || $sorted_label_types[$i] == 'type_stripe' ) {
287
  $stripe_paypal = true;
288
  if ( $sorted_label_types[$i] != 'type_stripe' ) {
@@ -295,7 +297,7 @@ class FMViewSubmissions_fm extends FMAdminView {
295
  echo $oder_class_default . '"';
296
  } ?>" data-colname="<?php echo $field_title; ?>">
297
  <a href="" onclick="fm_set_input_value('order_by', '<?php echo $sorted_labels_id[$i] . '_field'; ?>'); fm_set_input_value('asc_or_desc', '<?php echo(($order_by == $sorted_labels_id[$i] . '_field' && $asc_or_desc == 'asc') ? 'desc' : 'asc'); ?>'); fm_form_submit(event, 'admin_form')">
298
- <span><?php echo $field_title; ?></span>
299
  <span class="sorting-indicator"></span>
300
  </a>
301
  </th>
@@ -313,7 +315,7 @@ class FMViewSubmissions_fm extends FMAdminView {
313
  echo $oder_class_default . '"';
314
  } ?>" data-colname="<?php echo $field_title; ?>">
315
  <a href="" onclick="fm_set_input_value('order_by', '<?php echo $sorted_labels_id[$i] . '_field'; ?>'); fm_set_input_value('asc_or_desc', '<?php echo(($order_by == $sorted_labels_id[$i] . '_field' && $asc_or_desc == 'asc') ? 'desc' : 'asc'); ?>'); fm_form_submit(event, 'admin_form')">
316
- <span><?php echo $field_title; ?></span>
317
  <span class="sorting-indicator"></span>
318
  </a>
319
  </th>
@@ -620,15 +622,16 @@ class FMViewSubmissions_fm extends FMAdminView {
620
  <?php }
621
  else { ?>
622
  <td class="<?php echo $sorted_labels_id[$h]; ?>_fc sub-align" id="<?php echo $sorted_labels_id[$h]; ?>_fc" <?php echo $styleStr; ?> data-colname="<?php echo !empty($label_name_ids[$sorted_labels_id[$h]]) ? $label_name_ids[$sorted_labels_id[$h]] : ''; ?>">
623
- <p><?php echo $temp[$g]->element_value; ?></p>
624
  </td>
625
  <?php }
626
  }
627
  else {
628
  $element_value = str_replace("***br***", '<br>', stripslashes($temp[$g]->element_value));
 
629
  ?>
630
  <td class="<?php echo $sorted_labels_id[$h]; ?>_fc sub-align" id="<?php echo $sorted_labels_id[$h]; ?>_fc" <?php echo $styleStr; ?> data-colname="<?php echo !empty($label_name_ids[$sorted_labels_id[$h]]) ? $label_name_ids[$sorted_labels_id[$h]] : ''; ?>">
631
- <p><?php echo $element_value; ?></p>
632
  </td>
633
  <?php
634
  }
@@ -1320,4 +1323,31 @@ class FMViewSubmissions_fm extends FMAdminView {
1320
  <?php
1321
  }
1322
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1323
  }
114
  $blocked_ips = $params['blocked_ips'];
115
 
116
  $sorted_labels_id = $params['sorted_labels_id'];
117
+
118
  $sorted_label_types = $params['sorted_label_types'];
119
  $sorted_label_names = $params['sorted_label_names'];
120
  $sorted_label_names_original = $params['sorted_label_names_original'];
136
 
137
  $oder_class_default = $params['oder_class_default'];
138
  $oder_class = $params['oder_class'];
 
139
  $m = $params['m'];
140
 
141
  $group_id_s = $params['group_id_s'];
253
  </a>
254
  </th>
255
  <th scope="col" id="submitterusername_fc" class="submitterusername_fc <?php if ( $order_by == "display_name" ) {
256
+ echo $oder_class;
257
+ }
258
+ else {
259
+ echo $oder_class_default;
260
+ } ?>" <?php echo $style_username; ?> data-colname="<?php _e('Submitter\'s Username', WDFM()->prefix);?>">
261
  <a href="" onclick="fm_set_input_value('order_by', 'display_name');
262
  fm_set_input_value('asc_or_desc', '<?php echo(($order_by == 'display_name' && $asc_or_desc == 'asc') ? 'desc' : 'asc'); ?>');
263
  fm_form_submit(event, 'admin_form')">
264
  <span><?php _e('Submitter\'s Username', WDFM()->prefix);?></span>
265
  <span class="sorting-indicator"></span>
266
  </a>
267
+ </th>
268
  <th scope="col" id="submitteremail_fc" class="submitteremail_fc <?php if ( $order_by == "user_email" ) {
269
  echo $oder_class;
270
  }
277
  <span><?php _e('Submitter\'s Email Address', WDFM()->prefix);?></span>
278
  <span class="sorting-indicator"></span>
279
  </a>
280
+ </th>
281
  <?php
282
  $stripe_paypal = false;
283
  for ( $i = 0; $i < count($sorted_label_names); $i++ ) {
284
  $styleStr = $this->model->hide_or_not($lists['hide_label_list'], $sorted_labels_id[$i]);
285
  $field_title = $this->model->get_type_address($sorted_label_types[$i], $sorted_label_names_original[$i]);
286
+ $textdata = $this->gen_shorter_text($field_title, 42);
287
+
288
  if ( $sorted_label_types[$i] == 'type_paypal_payment_status' || $sorted_label_types[$i] == 'type_stripe' ) {
289
  $stripe_paypal = true;
290
  if ( $sorted_label_types[$i] != 'type_stripe' ) {
297
  echo $oder_class_default . '"';
298
  } ?>" data-colname="<?php echo $field_title; ?>">
299
  <a href="" onclick="fm_set_input_value('order_by', '<?php echo $sorted_labels_id[$i] . '_field'; ?>'); fm_set_input_value('asc_or_desc', '<?php echo(($order_by == $sorted_labels_id[$i] . '_field' && $asc_or_desc == 'asc') ? 'desc' : 'asc'); ?>'); fm_form_submit(event, 'admin_form')">
300
+ <span><?php echo $textdata['text']; ?></span>
301
  <span class="sorting-indicator"></span>
302
  </a>
303
  </th>
315
  echo $oder_class_default . '"';
316
  } ?>" data-colname="<?php echo $field_title; ?>">
317
  <a href="" onclick="fm_set_input_value('order_by', '<?php echo $sorted_labels_id[$i] . '_field'; ?>'); fm_set_input_value('asc_or_desc', '<?php echo(($order_by == $sorted_labels_id[$i] . '_field' && $asc_or_desc == 'asc') ? 'desc' : 'asc'); ?>'); fm_form_submit(event, 'admin_form')">
318
+ <span <?php if($textdata['status']) { ?> class="fm_masterTooltip" title="<?php echo $field_title; ?>" <?php } ?> ><?php echo $textdata['text']; ?></span>
319
  <span class="sorting-indicator"></span>
320
  </a>
321
  </th>
622
  <?php }
623
  else { ?>
624
  <td class="<?php echo $sorted_labels_id[$h]; ?>_fc sub-align" id="<?php echo $sorted_labels_id[$h]; ?>_fc" <?php echo $styleStr; ?> data-colname="<?php echo !empty($label_name_ids[$sorted_labels_id[$h]]) ? $label_name_ids[$sorted_labels_id[$h]] : ''; ?>">
625
+ <p><?php echo $temp[$g]->element_value; ?></p>
626
  </td>
627
  <?php }
628
  }
629
  else {
630
  $element_value = str_replace("***br***", '<br>', stripslashes($temp[$g]->element_value));
631
+ $textdata = $this->gen_shorter_text($element_value, 100);
632
  ?>
633
  <td class="<?php echo $sorted_labels_id[$h]; ?>_fc sub-align" id="<?php echo $sorted_labels_id[$h]; ?>_fc" <?php echo $styleStr; ?> data-colname="<?php echo !empty($label_name_ids[$sorted_labels_id[$h]]) ? $label_name_ids[$sorted_labels_id[$h]] : ''; ?>">
634
+ <p><?php echo $textdata['text']; ?></p>
635
  </td>
636
  <?php
637
  }
1323
  <?php
1324
  }
1325
  }
1326
+
1327
+ /**
1328
+ * Generate short text.
1329
+ *
1330
+ * @param $text , $chars_limit
1331
+ *
1332
+ * @return array.
1333
+ */
1334
+ public function gen_shorter_text( $text, $chars_limit ) {
1335
+ $data = array();
1336
+ // Check if length is larger than the character limit.
1337
+ if ( strlen($text) > $chars_limit ) {
1338
+ // If so, cut the string at the character limit.
1339
+ $new_text = substr($text, 0, $chars_limit);
1340
+ // Trim off white space.
1341
+ $new_text = trim($new_text);
1342
+ // Add at end of text ...
1343
+ $data['status'] = TRUE;
1344
+ $data['text'] = $new_text . "...";
1345
+ }
1346
+ // If not just return the text and status as is.
1347
+ else {
1348
+ $data['status'] = FALSE;
1349
+ $data['text'] = $text;
1350
+ }
1351
+ return $data;
1352
+ }
1353
  }
css/form_maker_tables.css CHANGED
@@ -1426,14 +1426,14 @@ table.admintable {
1426
  min-width: 130px;
1427
  max-width: 200px;
1428
  }
1429
- .submit_content #submitid_fc {
1430
- width: 55px;
1431
- max-width: 55px;
1432
  }
1433
  .submit_content #submitsubmitdate_fc,
1434
  .submit_content #submitterusername_fc,
1435
  .submit_content #submitteremail_fc {
1436
- min-width: 165px;
1437
  }
1438
 
1439
  .submitid_fc {
@@ -2459,4 +2459,26 @@ button:focus {
2459
  word-break: break-all;
2460
  display: -webkit-inline-box;
2461
  min-width:100px;
2462
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1426
  min-width: 130px;
1427
  max-width: 200px;
1428
  }
1429
+
1430
+ .form_maker_submissions #submitid_fc {
1431
+ min-width: 55px;
1432
  }
1433
  .submit_content #submitsubmitdate_fc,
1434
  .submit_content #submitterusername_fc,
1435
  .submit_content #submitteremail_fc {
1436
+ min-width: 170px;
1437
  }
1438
 
1439
  .submitid_fc {
2459
  word-break: break-all;
2460
  display: -webkit-inline-box;
2461
  min-width:100px;
2462
+ }
2463
+
2464
+ .fm_tooltip {
2465
+ display:none;
2466
+ position:absolute;
2467
+ border:1px solid #333;
2468
+ background-color:#161616;
2469
+ border-radius:5px;
2470
+ padding:10px;
2471
+ color:#fff;
2472
+ font-size:12px;
2473
+ max-width: 250px;
2474
+ min-width: 100px;
2475
+ word-break: break-all;
2476
+ }
2477
+
2478
+ .form_maker_submissions td,
2479
+ .form_maker_submissions th{
2480
+ max-width: 200px;
2481
+ word-break: break-all;
2482
+ }
2483
+
2484
+ >>>>>>> 3b53056a3dbd48175e7bf31a27c79e26c7e7a830
form-maker.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Form Maker
4
  * Plugin URI: https://web-dorado.com/products/form-maker-wordpress.html
5
  * Description: This plugin is a modern and advanced tool for easy and fast creating of a WordPress Form. The backend interface is intuitive and user friendly which allows users far from scripting and programming to create WordPress Forms.
6
- * Version: 1.12.17
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 WDFM {
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.17';
93
- $this->db_version = '2.12.17';
94
  $this->menu_slug = 'manage_fm';
95
  $this->prefix = 'form_maker';
96
  $this->css_prefix = 'fm_';
@@ -389,8 +389,46 @@ final class WDFM {
389
  'is_demo' => $this->is_demo,
390
  'important_message' => __('The free version is limited up to 7 fields to add. If you need this functionality, you need to buy the commercial version.', $this->prefix),
391
  'no_preview' => __('No preview available.', $this->prefix),
392
- 'invisible_recaptcha_error' => sprintf( __('%s Old reCAPTCHA keys will not work for %s. Please make sure to enable the API keys for Invisible reCAPTCHA.', $this->prefix), '<b>'. __('Note:', $this->prefix) .'</b>', '<b>'. __('Invisible reCAPTCHA', $this->prefix) .'</b>' )
393
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
394
 
395
  wp_register_script('fm-codemirror', $this->plugin_url . '/js/layout/codemirror.js', array(), '2.3');
396
  wp_register_script('fm-clike', $this->plugin_url . '/js/layout/clike.js', array(), '1.0.0');
@@ -485,8 +523,22 @@ final class WDFM {
485
  * admin-ajax actions for site.
486
  */
487
  public function form_maker_ajax_frontend() {
 
 
 
 
 
 
 
 
 
 
 
 
 
488
  $page = WDW_FM_Library::get('page');
489
- if ($page != '') {
 
490
  $this->register_frontend_ajax_scripts();
491
  require_once ($this->plugin_dir . '/frontend/controllers/' . $page . '.php');
492
  $controller_class = 'FMController' . ucfirst($page);
3
  * Plugin Name: Form Maker
4
  * Plugin URI: https://web-dorado.com/products/form-maker-wordpress.html
5
  * Description: This plugin is a modern and advanced tool for easy and fast creating of a WordPress Form. The backend interface is intuitive and user friendly which allows users far from scripting and programming to create WordPress Forms.
6
+ * Version: 1.12.18
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.18';
93
+ $this->db_version = '2.12.18';
94
  $this->menu_slug = 'manage_fm';
95
  $this->prefix = 'form_maker';
96
  $this->css_prefix = 'fm_';
389
  'is_demo' => $this->is_demo,
390
  'important_message' => __('The free version is limited up to 7 fields to add. If you need this functionality, you need to buy the commercial version.', $this->prefix),
391
  'no_preview' => __('No preview available.', $this->prefix),
392
+ 'invisible_recaptcha_error' => sprintf( __('%s Old reCAPTCHA keys will not work for %s. Please make sure to enable the API keys for Invisible reCAPTCHA.', $this->prefix), '<b>'. __('Note:', $this->prefix) .'</b>', '<b>'. __('Invisible reCAPTCHA', $this->prefix) .'</b>' ),
393
+ 'type_text_description' => __('This field is a single line text input.', $this->prefix).'<br><br>'.__('To set a default value, just fill the field above.', $this->prefix).'<br><br>'.__('You can set the text input as Required, making sure the submitter provides a value for it.', $this->prefix).'<br><br>'.__('Validation (RegExp.) option in Advanced options lets you configure Regular Expression for your Single Line Text field. Use Common Regular Expressions select box to use built-in validation patterns. For instance, in case you can add a validation for decimal number, IP address or zip code by selecting corresponding options of Common Regular Expressions drop-down.', $this->prefix) .'<br><br>'.__('Additionally, you can add HTML attributes to your form fields with Additional Attributes.', $this->prefix),
394
+ 'type_textarea_description' => __('This field adds a textarea box to your form. Users can write alphanumeric text, special characters and line breaks.', $this->prefix).'<br><br>'.__('You can set the text input as Required, making sure the submitter provides a value for it.', $this->prefix).'<br><br>'.__('Set the width and height of the textarea box using Size(px) option.', $this->prefix),
395
+ 'type_number_description' => __('This is an input text that accepts only numbers. Users can type a number directly, or use the spinner arrows to specify it.', $this->prefix).'<br><br>'.__('Step option defines the number to increment/decrement the spinner value, when the users press up or down arrows.', $this->prefix).'<br><br>'.__('Use Min Value and Max Value options to set lower and upper limitation for the value of this Number field.', $this->prefix).'<br><br>'.__('To set a default value, just fill the field above.', $this->prefix),
396
+ 'type_select_description' => __('This field allows the submitter to choose values from select box. Just click (+) Option button and fill in all options you will need or click (+) From Database to fill the options from a database table.', $this->prefix) .'<br><br>'.__('In case you need to have option values to be different from option names, mark Enable option\'s value from Advanced options as checked.', $this->prefix),
397
+ 'type_radio_description' => __('Using this field you can add a list of Radio buttons to your form. Just click (+) Option button and fill in all options you will need or click (+) From Database to fill the options from a database table.', $this->prefix).'<br><br>'.__('Relative Position lets you choose the position of options in relation to each other. Whereas Option Label Position lets you select the position of radio button label.', $this->prefix).'<br><br>'.__('In case you need to have option values to be different from option names, mark Enable option\'s value from Advanced options as checked.', $this->prefix).'<br><br>'.__('And by enabling Allow other, you can let the user to write their own specific value.', $this->prefix),
398
+ 'type_checkbox_description' => __('Multiple Choice field lets you have a list of Checkboxes. This field allows the submitter to choose more than one values.', $this->prefix).'<br><br>'.__('Just click (+) Option button and fill in all options you will need or click (+) From Database to fill the options from a database table.', $this->prefix).'<br><br>'.__('Relative Position lets you choose the position of options in relation to each other. Whereas Option Label Position lets you select the position of radio button label.', $this->prefix).'<br><br>'.__('In case you need to have option values to be different from option names, mark Enable option\'s value from Advanced options as checked.', $this->prefix).'<br><br>'.__('And by enabling Allow other, you can let the user to write their own specific value.', $this->prefix),
399
+ 'type_recaptcha_description' => sprintf(__('Form Maker is integrated with Google ReCaptcha, which protects your forms from spam bots. Before adding ReCaptcha to your form, you need to configure Site and Secret Keys by registering your website on %s', $this->prefix),'<a href="https://www.google.com/recaptcha/intro/" target="_blank">'. __('Google ReCaptcha website', $this->prefix) .'</a>').'<br><br>'.__('After registering and creating the keys, copy them to Form Maker > Options page.', $this->prefix),
400
+ 'type_submit_description' => __('The Submit button validates all form field values, saves them on MySQL database of your website, sends emails and performs other actions configured in Form Options. You can have more than one submit button in your form.', $this->prefix),
401
+ 'type_captcha_description' => __('You can use this field as an alternative to ReCaptcha to protect your forms against spambots. It’s a random combination of numbers and letters, and users need to type them in correctly to submit the form.', $this->prefix).'<br><br>'.__('You can specify the number of symbols in Simple Captcha using Symbols (3 - 9) option.', $this->prefix),
402
+ 'type_name_description' => __('This field lets the user write their name.', $this->prefix).'<br><br>'.__('To set a default value, just fill the field above.', $this->prefix).'<br><br>'.__('Enabling Autofill with user name setting will automatically fill in Name field with the name of the logged in user.', $this->prefix).'<br><br>'.__('In case you do not wish to receive the same data for the same Name field twice, activate Allow only unique values option.', $this->prefix),
403
+ 'type_email_description' => __('This field is an input field that accepts an email address.', $this->prefix).'<br><br>'.__('To set a default value, just fill the field above.', $this->prefix).'<br><br>'.__('Using Confirmation Email setting in Advanced Options you can require the submitter to re-type their email address.', $this->prefix).'<br><br>'.__('Autofill with user email will autofill Email field with the email address of the logged in user.', $this->prefix).'<br><br>'.__('Upon successful submission of the Form, you have the option to send the submitted data (or just a confirmation message) to the email address entered here. To do this you need to set the corresponding options on Form Options > Email Options page.', $this->prefix),
404
+ 'type_phone_description' => __('This field is an input for a phone number. It provides a list of country flags, which users can select and have their country code automatically added to the phone number.', $this->prefix).'<br><br>'.__('In case you do not wish to receive the same data for the same Phone field more than once, activate Allow only unique values setting from Advanced options.', $this->prefix),
405
+ 'type_address_description' => __('This field lets you skip a few steps and quickly add one set for requesting the address of the submitter. Use Overall size(px) option to set the width of Address field.', $this->prefix).'<br><br>'.__('You can enable or disable elements of Address field using Disable Field(s) setting in Advanced Options.', $this->prefix).'<br><br>'.__('You can turn State/Province/Region field into a list of US states by activating Use list for US states setting from Advanced Options. Note: This only works in case United States is selected for Country select box.', $this->prefix),
406
+ 'type_mark_on_map_description' => __('Mark on Map field lets users to drag the map pin and drop it on their selected location. You can specify a default address for the location pin with Address option.', $this->prefix).'<br><br>'.__('In addition, Marker Info setting allows you to provide additional details about the location. It will appear after users click on the location pin.', $this->prefix),
407
+ 'type_country_list_description' => __('Country List is a select box which provides a list of all countries in alphabetical order.', $this->prefix).'<br><br>'.__('You can include/exclude specific countries from the list using the Edit country list setting in Advanced Options.', $this->prefix),
408
+ 'type_date_of_birth_description' => __('Users can specify their birthday or any date with this field.', $this->prefix).'<br><br>'.__('Use Fields separator setting in Advanced options to change the divider between day, month and year boxes.', $this->prefix).'<br><br>'.__('You can set the fields to be text inputs or select boxes using Day field type, Month field type and Year field type options.', $this->prefix).'<br><br>'.__('In addition, you can specify the width of day, month and year fields using Day field size(px), Month field size(px) and Year field size(px) settings.', $this->prefix),
409
+ 'type_file_upload_description' => __('You can allow users to upload single or multiple documents, images and various files through your form.', $this->prefix).'<br><br>'.__('Use Allowed file extensions option to specify all acceptable file formats. Make sure to separate them with commas.', $this->prefix).'<br><br>'.__('Mark Allow Uploading Multiple Files option in Advanced Options to allow users to select and upload multiple files.', $this->prefix),
410
+ 'type_map_description' => __('Map field can be used for pinning one or more locations on Google Map and displaying them on your form.', $this->prefix).'<br><br>'.__('Press the small Plus icon to add a location pin.', $this->prefix),
411
+ 'type_time_description' => __('Time field of Form Maker plugin will allow users to specify time value. Set the time format of the field to 24-hour or 12-hour using Time Format option.', $this->prefix),
412
+ 'type_send_copy_description' => __('When users fill in an email address using Email Field, this checkbox will allow them to choose if they wish to receive a copy of the submission email.', $this->prefix).'<br><br>'.__('Note: Make sure to configure Form Options > Email Options of your form.', $this->prefix),
413
+ 'type_stars_description' => __('Add Star rating field to your form with this field. You can display as many stars, as you will need, set the number using Number of Stars option.', $this->prefix),
414
+ 'type_rating_description' => __('Place Rating field on your form to have radio buttons, which indicate rating from worst to best. You can set many radio buttons to display using Scale Range option.', $this->prefix),
415
+ 'type_slider_description' => __('Slider field lets users specify the field value by dragging its handle from Min Value to Max Value.', $this->prefix),
416
+ 'type_range_description' => __('You can use this field to let users choose a numeric range by providing values for 2 number inputs. Its Step option allows to set the increment/decrement of spinners’ values, when users click on up or down arrows.', $this->prefix),
417
+ 'type_grades_description' => __('Users will be able to grade specified items with this field. The sum of all values will appear below the field with Total parameter.', $this->prefix).'<br><br>'.__('Items option allows you to add multiple options to your Grades field.', $this->prefix),
418
+ 'type_matrix_description' => __('Table of Fields lets you place a matrix on your form, which will let the submitter to answer a few questions with one field.', $this->prefix).'<br><br>'.__('It allows you to configure the matrix with radio buttons, checkboxes, text boxes or drop-downs. Use Input Type option to set this.', $this->prefix),
419
+ 'type_hidden_description' => __('Hidden Input field is similar to Single Line Text field, but it is not visible to users. Hidden Fields are handy, in case you need to run a custom Javascript and submit the result with the info on your form.', $this->prefix).'<br><br>'.__('Name option of this field is mandatory. Note: we highly recommend you to avoid using spaces or special characters in Hidden Input name. You can write the custom Javascript code using the editor on Form Options > Javascript page.', $this->prefix),
420
+ 'type_button_description' => __('In case you wish to run custom Javascript on your form, you can place Custom Button on your form. Its lets you call the script with its OnClick function.', $this->prefix).'<br><br>'.__('You can write the custom Javascript code using the editor on Form Options > Javascript page.', $this->prefix),
421
+ 'type_password_description' => __('Password input can be used to allow users provide secret text, such as passwords. All symbols written in this field are replaced with dots.', $this->prefix).'<br><br>'.__('You can activate Password Confirmation option to ask users to repeat the password.', $this->prefix),
422
+ 'type_phone_area_code_description' => __('Phone-Area Code is a Phone type field, which allows users to write Area Code and Phone Number into separate inputs.', $this->prefix),
423
+ 'type_arithmetic_captcha_description' => __('Arithmetic Captcha is quite similar to Simple Captcha. However, instead of showing random symbols, it displays arithmetic operations.', $this->prefix).'<br><br>'.__('You can set the operations using Operations option. The field can use addition (+), subtraction (-), multiplication (*) and division (/).', $this->prefix).'<br><br>'.__('Make sure to separate the operations with commas.', $this->prefix),
424
+ 'type_price_description' => __('Users can set a payment amount of their choice with Price field. Assigns minimum and maximum limits on its value using Range option.', $this->prefix).'<br><br>'.__('To set a default value, just fill the field above.', $this->prefix).'<br><br>'.__('Additionally, you can activate Readonly attribute. This way, users will not be able to edit the value of Price.', $this->prefix).'<br><br>'.__('Note: Make sure to configure Form Options > Payment Options of your form.', $this->prefix),
425
+ 'type_payment_select_description' => __('Payment Select field lets you create lists of products, one of which the submitter can choose to buy through your form. Add or edit list items using Options setting of the fields.', $this->prefix).'<br><br>'.__('Enable Quantity property from Advanced Options, in case you would like the users to mention the quantity of items they purchase.', $this->prefix).'<br><br>'.__('Also, you can configure custom or built-in Product Properties for your products, such as Color, T-Shirt Size or Print Size.', $this->prefix).'<br><br>'.__('Note: Make sure to configure Form Options > Payment Options of your form.', $this->prefix),
426
+ 'type_payment_radio_description' => __('Payment Single Choice field lets you create lists of products, one of which the submitter can choose to buy through your form. Add or edit list items using Options setting of the fields.', $this->prefix).'<br><br>'.__('Enable Quantity property from Advanced Options, in case you would like the users to mention the quantity of items they purchase.', $this->prefix).'<br><br>'.__('Also, you can configure custom or built-in Product Properties for your products, such as Color, T-Shirt Size or Print Size.', $this->prefix).'<br><br>'.__('Note: Make sure to configure Form Options > Payment Options of your form.', $this->prefix),
427
+ 'type_payment_checkbox_description' => __('Payment Multiple Choice field lets you create lists of products, which the submitter can choose to buy through your form. Add or edit list items using Options setting of the fields.', $this->prefix).'<br><br>'.__('Enable Quantity property from Advanced Options, in case you would like the users to mention the quantity of items they purchase.', $this->prefix).'<br><br>'.__('Also, you can configure custom or built-in Product Properties for your products, such as Color, T-Shirt Size or Print Size.', $this->prefix).'<br><br>'.__('Note: Make sure to configure Form Options > Payment Options of your form.', $this->prefix),
428
+ 'type_shipping_description' => __('Shipping allows you to configure shipping types, set price for each of them and display them on your form as radio buttons.', $this->prefix),
429
+ 'type_total_description' => __('Please Total field to your payment form to sum up the values of Payment fields. ', $this->prefix),
430
+ 'type_stripe_description' => __('This field adds the credit card details inputs (card number, expiration date, etc.) and allows you to accept direct payments made by credit cards.', $this->prefix),
431
+ ));
432
 
433
  wp_register_script('fm-codemirror', $this->plugin_url . '/js/layout/codemirror.js', array(), '2.3');
434
  wp_register_script('fm-clike', $this->plugin_url . '/js/layout/clike.js', array(), '1.0.0');
523
  * admin-ajax actions for site.
524
  */
525
  public function form_maker_ajax_frontend() {
526
+ $allowed_pages = array(
527
+ 'form_submissions',
528
+ );
529
+ $allowed_actions = array(
530
+ 'frontend_generate_xml',
531
+ 'frontend_generate_csv',
532
+ 'frontend_paypal_info',
533
+ 'frontend_show_matrix',
534
+ 'frontend_show_map',
535
+ 'get_frontend_stats',
536
+ );
537
+
538
+ $action = WDW_FM_Library::get('action');
539
  $page = WDW_FM_Library::get('page');
540
+ if ( !empty($page) && in_array($page, $allowed_pages)
541
+ && !empty($action) && in_array($action, $allowed_actions) ) {
542
  $this->register_frontend_ajax_scripts();
543
  require_once ($this->plugin_dir . '/frontend/controllers/' . $page . '.php');
544
  $controller_class = 'FMController' . ucfirst($page);
frontend/models/form_maker.php CHANGED
@@ -3064,7 +3064,7 @@ class FMModelForm_maker {
3064
  }
3065
  $header_arr['from_name'] = $fromname;
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;
@@ -3203,7 +3203,7 @@ class FMModelForm_maker {
3203
  }
3204
  $header_arr['from_name'] = $fromname;
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;
3064
  }
3065
  $header_arr['from_name'] = $fromname;
3066
  $header_arr['content_type'] = $content_type;
3067
+ $header_arr['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;
3203
  }
3204
  $header_arr['from_name'] = $fromname;
3205
  $header_arr['content_type'] = $content_type;
3206
+ $header_arr['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;
js/add_field.js CHANGED
@@ -2338,7 +2338,7 @@ function el_map(subtype, new_id) {
2338
  w_info = [''];
2339
  w_attr_name = [];
2340
  w_attr_value = [];
2341
- type_map(new_id, '2.294254', '48.858334', w_long, w_lat, "13", "400", "300", 'wdform_map', w_info, w_attr_name, w_attr_value);
2342
  }
2343
 
2344
  function el_paypal(subtype, new_id) {
@@ -3136,6 +3136,8 @@ function type_text(i, w_field_label, w_field_label_size, w_field_label_pos, w_hi
3136
  div.appendChild(br);
3137
  main_td.appendChild(div);
3138
 
 
 
3139
  if (w_field_label_pos == "top")
3140
  label_top(i);
3141
 
@@ -3326,6 +3328,7 @@ function type_file_upload(i, w_field_label, w_field_label_size, w_field_label_po
3326
  div.appendChild(div_field);
3327
  div.appendChild(br3);
3328
  main_td.appendChild(div);
 
3329
  if (w_field_label_pos == "top")
3330
  label_top(i);
3331
  change_class(w_class, i);
@@ -3404,6 +3407,7 @@ function type_stripe(i, w_size, w_field_label_size, w_field_label_pos, w_class )
3404
  div.appendChild(div_field);
3405
  div.appendChild(br3);
3406
  main_td.appendChild(div);
 
3407
 
3408
  if (w_field_label_pos == "top") {
3409
  label_top_stripe(i);
@@ -3537,6 +3541,9 @@ function type_textarea(i, w_field_label, w_field_label_size, w_field_label_pos,
3537
 
3538
  div.appendChild(div_field);
3539
  main_td.appendChild(div);
 
 
 
3540
  if (w_field_label_pos == "top")
3541
  label_top(i);
3542
  change_class(w_class, i);
@@ -3734,6 +3741,8 @@ function type_spinner(i, w_field_label, w_field_label_size, w_field_label_pos, w
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});
 
 
3737
  }
3738
 
3739
  function create_date_format(i, w_format) {
@@ -4775,6 +4784,7 @@ function type_own_select(i, w_field_label, w_field_label_size, w_field_label_pos
4775
  }
4776
  });
4777
  });
 
4778
  }
4779
 
4780
  function create_relative_position(i, w_flow, type) {
@@ -5304,6 +5314,8 @@ function type_radio(i, w_field_label, w_field_label_size, w_field_label_pos, w_f
5304
  div.appendChild(br3);
5305
  main_td.appendChild(div);
5306
 
 
 
5307
  if (w_field_label_pos == "top") {
5308
  label_top(i);
5309
  }
@@ -5471,6 +5483,8 @@ function type_checkbox(i, w_field_label, w_field_label_size, w_field_label_pos,
5471
  div.appendChild(br3);
5472
  main_td.appendChild(div);
5473
 
 
 
5474
  if (w_field_label_pos == "top") {
5475
  label_top(i);
5476
  }
@@ -5653,6 +5667,8 @@ function type_recaptcha(i, w_field_label, w_field_label_size, w_field_label_pos,
5653
  div.appendChild(div_field);
5654
  div.appendChild(br3);
5655
  main_td.appendChild(div);
 
 
5656
  if (w_field_label_pos == "top") {
5657
  label_top(i);
5658
  }
@@ -5770,7 +5786,7 @@ function type_submit_reset(i, w_submit_title , w_reset_title , w_class, w_act, w
5770
  div.appendChild(div_field);
5771
  div.appendChild(br);
5772
  main_td.appendChild(div);
5773
-
5774
  change_class(w_class, i);
5775
  refresh_attr(i, 'type_submit_reset');
5776
  }
@@ -6534,6 +6550,7 @@ function type_name(i, w_field_label, w_field_label_size, w_field_label_pos, w_hi
6534
  div.appendChild(br);
6535
  div.appendChild(div_for_editable_labels);
6536
  main_td.appendChild(div);
 
6537
 
6538
  if (w_field_label_pos == "top")
6539
  label_top(i);
@@ -6805,6 +6822,7 @@ function type_submitter_mail(i, w_field_label, w_field_label_size, w_field_label
6805
  div.appendChild(div_field);
6806
  div.appendChild(br3);
6807
  main_td.appendChild(div);
 
6808
  if (w_field_label_pos == "top")
6809
  label_top(i);
6810
  change_class(w_class, i);
@@ -6936,6 +6954,7 @@ function type_phone_new(i, w_field_label, w_field_label_size, w_field_label_pos,
6936
  div.appendChild(br);
6937
 
6938
  main_td.appendChild(div);
 
6939
 
6940
  if (w_field_label_pos == "top")
6941
  label_top(i);
@@ -7483,6 +7502,8 @@ function type_address(i, w_field_label, w_field_label_size, w_field_label_pos, w
7483
  div.appendChild(div_for_editable_labels);
7484
  main_td.appendChild(div);
7485
 
 
 
7486
  if (w_field_label_pos == "top")
7487
  label_top(i);
7488
 
@@ -7618,7 +7639,7 @@ function create_markmap_info(i, w_info, j) {
7618
  function go_to_type_mark_map(new_id) {
7619
  w_attr_name = [];
7620
  w_attr_value = [];
7621
- type_mark_map(new_id, 'Mark your place on map', '', 'top', 'no', '2.294254', '48.858334', "2.294254", "48.858334", "13", "400", "300", 'wdform_map', '', w_attr_name, w_attr_value);
7622
  }
7623
 
7624
  function type_mark_map(i, w_field_label, w_field_label_size, w_field_label_pos, w_hide_label, w_center_x, w_center_y, w_long, w_lat, w_zoom, w_width, w_height, w_class, w_info, w_attr_name, w_attr_value) {
@@ -7711,6 +7732,7 @@ function type_mark_map(i, w_field_label, w_field_label_size, w_field_label_pos,
7711
  div.appendChild(div_field);
7712
  div.appendChild(br);
7713
  main_td.appendChild(div);
 
7714
  if (w_field_label_pos == "top") {
7715
  label_top(i);
7716
  }
@@ -7862,6 +7884,7 @@ function type_country(i, w_field_label, w_field_label_size, w_hide_label, w_coun
7862
  div.appendChild(div_field);
7863
  div.appendChild(br3);
7864
  main_td.appendChild(div);
 
7865
 
7866
  if (w_field_label_pos == "top")
7867
  label_top(i);
@@ -8361,6 +8384,8 @@ function type_date_fields(i, w_field_label, w_field_label_size, w_field_label_po
8361
  div.appendChild(div_for_editable_labels);
8362
  main_td.appendChild(div);
8363
 
 
 
8364
  if (w_field_label_pos == "top")
8365
  label_top(i);
8366
 
@@ -8625,6 +8650,7 @@ function type_paypal_price_new(i, w_field_label, w_field_label_size, w_field_lab
8625
  div_field.appendChild(div_element);
8626
  div.appendChild(div_field);
8627
  main_td.appendChild(div);
 
8628
 
8629
  if (w_field_label_pos == "top")
8630
  label_top(i);
@@ -9135,7 +9161,7 @@ function type_paypal_select(i, w_field_label, w_field_label_size, w_field_label_
9135
  div.appendChild(div_field);
9136
  div.appendChild(br3);
9137
  main_td.appendChild(div);
9138
-
9139
  if (w_field_label_pos == "top")
9140
  label_top(i);
9141
 
@@ -9525,6 +9551,7 @@ function type_paypal_radio(i, w_field_label, w_field_label_size, w_field_label_p
9525
  div.appendChild(div_field);
9526
  div.appendChild(br3);
9527
  main_td.appendChild(div);
 
9528
 
9529
  if (w_field_label_pos == "top")
9530
  label_top(i);
@@ -9753,6 +9780,7 @@ function type_paypal_checkbox(i, w_field_label, w_field_label_size, w_field_labe
9753
  div.appendChild(div_field);
9754
  div.appendChild(br3);
9755
  main_td.appendChild(div);
 
9756
 
9757
  if (w_field_label_pos == "top")
9758
  label_top(i);
@@ -9988,6 +10016,7 @@ function type_paypal_shipping(i, w_field_label, w_field_label_size, w_field_labe
9988
  div.appendChild(div_field);
9989
  div.appendChild(br3);
9990
  main_td.appendChild(div);
 
9991
 
9992
  if (w_field_label_pos == "top")
9993
  label_top(i);
@@ -10136,6 +10165,7 @@ function type_paypal_total(i, w_field_label, w_field_label_size, w_field_label_p
10136
  div.appendChild(br3);
10137
  div.appendChild(p_desc_total);
10138
  main_td.appendChild(div);
 
10139
 
10140
  if (w_field_label_pos == "top") {
10141
  label_top(i);
@@ -10266,7 +10296,7 @@ function type_map(i, w_center_x, w_center_y, w_long, w_lat, w_zoom, w_width, w_h
10266
  div.appendChild(div_field);
10267
  div.appendChild(br2);
10268
  main_td.appendChild(div);
10269
-
10270
  change_class(w_class, i);
10271
  refresh_attr(i, 'type_text');
10272
 
@@ -10701,6 +10731,7 @@ function type_time(i, w_field_label, w_field_label_size, w_field_label_pos, w_hi
10701
  div.appendChild(br3);
10702
  div.appendChild(div_for_editable_labels);
10703
  main_td.appendChild(div);
 
10704
 
10705
  if (w_field_label_pos == "top") {
10706
  label_top(i);
@@ -10872,6 +10903,7 @@ function type_send_copy(i, w_field_label, w_field_label_size, w_field_label_pos,
10872
  div.appendChild(div_for_editable_labels);
10873
 
10874
  main_td.appendChild(div);
 
10875
  if (w_field_label_pos == "top")
10876
  label_top(i);
10877
  refresh_attr(i, 'type_text');
@@ -11735,6 +11767,7 @@ function type_star_rating(i, w_field_label, w_field_label_size, w_field_label_po
11735
  div.appendChild(div_field);
11736
  div.appendChild(br1);
11737
  main_td.appendChild(div);
 
11738
  if (w_field_label_pos == "top")
11739
  label_top(i);
11740
 
@@ -11958,6 +11991,7 @@ function type_scale_rating(i, w_field_label, w_field_label_size, w_field_label_p
11958
  div.appendChild(br1);
11959
  div.appendChild(div_for_editable_labels);
11960
  main_td.appendChild(div);
 
11961
  if (w_field_label_pos == "top")
11962
  label_top(i);
11963
 
@@ -12255,6 +12289,7 @@ function type_slider(i, w_field_label, w_field_label_size, w_field_label_pos, w_
12255
  div.appendChild(div_field);
12256
  div.appendChild(br1);
12257
  main_td.appendChild(div);
 
12258
  if (w_field_label_pos == "top")
12259
  label_top(i);
12260
  change_class(w_class, i);
@@ -12478,6 +12513,7 @@ function type_range(i, w_field_label, w_field_label_size, w_field_label_pos, w_h
12478
  div.appendChild(div_for_editable_labels);
12479
 
12480
  main_td.appendChild(div);
 
12481
  if (w_field_label_pos == "top")
12482
  label_top(i);
12483
  change_class(w_class, i);
@@ -12666,6 +12702,7 @@ function type_hidden(i, w_name, w_value, w_attr_name, w_attr_value) {
12666
  div.appendChild(div_field);
12667
  div.appendChild(br3);
12668
  main_td.appendChild(div);
 
12669
  refresh_attr(i, 'type_text');
12670
  }
12671
 
@@ -12817,6 +12854,7 @@ function type_captcha(i,w_field_label, w_field_label_size, w_field_label_pos, w_
12817
  div.appendChild(div_field);
12818
  div.appendChild(br3);
12819
  main_td.appendChild(div);
 
12820
  if (w_field_label_pos == "top")
12821
  label_top(i);
12822
  change_class(w_class, i);
@@ -13011,6 +13049,7 @@ function type_arithmetic_captcha(i,w_field_label, w_field_label_size, w_field_la
13011
  div.appendChild(div_field);
13012
  div.appendChild(br3);
13013
  main_td.appendChild(div);
 
13014
 
13015
  if (w_field_label_pos == "top")
13016
  label_top(i);
@@ -13219,6 +13258,7 @@ function type_phone(i, w_field_label, w_field_label_size, w_field_label_pos, w_h
13219
  div.appendChild(br1);
13220
  div.appendChild(div_for_editable_labels);
13221
  main_td.appendChild(div);
 
13222
 
13223
  if (w_field_label_pos == "top")
13224
  label_top(i);
@@ -13444,6 +13484,7 @@ function type_password(i, w_field_label, w_field_label_size, w_field_label_pos,
13444
 
13445
  div.appendChild(div_field);
13446
  main_td.appendChild(div);
 
13447
  if (w_field_label_pos == "top")
13448
  label_top(i);
13449
  change_class(w_class, i);
@@ -13612,6 +13653,7 @@ function type_button(i, w_title , w_func , w_class, w_attr_name, w_attr_value) {
13612
  div.appendChild(div_field);
13613
  div.appendChild(br1);
13614
  main_td.appendChild(div);
 
13615
  change_class(w_class, i);
13616
  refresh_attr(i, 'type_checkbox');
13617
  }
@@ -13915,7 +13957,7 @@ function type_grading(i, w_field_label, w_field_label_size, w_field_label_pos, w
13915
  div.appendChild(div_field);
13916
  div.appendChild(br3);
13917
  main_td.appendChild(div);
13918
-
13919
  if (w_field_label_pos == "top")
13920
  label_top(i);
13921
 
@@ -14309,6 +14351,7 @@ function type_matrix(i, w_field_label, w_field_label_size, w_field_label_pos, w_
14309
  div.appendChild(div_field);
14310
  div.appendChild(br3);
14311
  main_td.appendChild(div);
 
14312
 
14313
  if (w_field_label_pos == "top")
14314
  label_top(i);
2338
  w_info = [''];
2339
  w_attr_name = [];
2340
  w_attr_value = [];
2341
+ type_map(new_id, '2.294254', '48.858334', w_long, w_lat, "13", "370", "300", 'wdform_map', w_info, w_attr_name, w_attr_value);
2342
  }
2343
 
2344
  function el_paypal(subtype, new_id) {
3136
  div.appendChild(br);
3137
  main_td.appendChild(div);
3138
 
3139
+ jQuery("#main_div").append( form_maker.type_text_description );
3140
+
3141
  if (w_field_label_pos == "top")
3142
  label_top(i);
3143
 
3328
  div.appendChild(div_field);
3329
  div.appendChild(br3);
3330
  main_td.appendChild(div);
3331
+ jQuery("#main_div").append( form_maker.type_file_upload_description );
3332
  if (w_field_label_pos == "top")
3333
  label_top(i);
3334
  change_class(w_class, i);
3407
  div.appendChild(div_field);
3408
  div.appendChild(br3);
3409
  main_td.appendChild(div);
3410
+ jQuery("#main_div").append( form_maker.type_stripe_description );
3411
 
3412
  if (w_field_label_pos == "top") {
3413
  label_top_stripe(i);
3541
 
3542
  div.appendChild(div_field);
3543
  main_td.appendChild(div);
3544
+
3545
+ jQuery("#main_div").append( '<br>'+form_maker.type_textarea_description );
3546
+
3547
  if (w_field_label_pos == "top")
3548
  label_top(i);
3549
  change_class(w_class, i);
3741
  jQuery("#" + i + "_elementform_id_temp").spinner({min: w_field_min_value});
3742
  jQuery("#" + i + "_elementform_id_temp").spinner({max: w_field_max_value});
3743
  jQuery("#" + i + "_elementform_id_temp").spinner({step: w_field_step});
3744
+
3745
+ jQuery("#main_div").append( form_maker.type_number_description );
3746
  }
3747
 
3748
  function create_date_format(i, w_format) {
4784
  }
4785
  });
4786
  });
4787
+ jQuery("#main_div").append( form_maker.type_select_description );
4788
  }
4789
 
4790
  function create_relative_position(i, w_flow, type) {
5314
  div.appendChild(br3);
5315
  main_td.appendChild(div);
5316
 
5317
+ jQuery("#main_div").append( form_maker.type_radio_description );
5318
+
5319
  if (w_field_label_pos == "top") {
5320
  label_top(i);
5321
  }
5483
  div.appendChild(br3);
5484
  main_td.appendChild(div);
5485
 
5486
+ jQuery("#main_div").append( form_maker.type_checkbox_description );
5487
+
5488
  if (w_field_label_pos == "top") {
5489
  label_top(i);
5490
  }
5667
  div.appendChild(div_field);
5668
  div.appendChild(br3);
5669
  main_td.appendChild(div);
5670
+
5671
+ jQuery("#main_div").append( form_maker.type_recaptcha_description );
5672
  if (w_field_label_pos == "top") {
5673
  label_top(i);
5674
  }
5786
  div.appendChild(div_field);
5787
  div.appendChild(br);
5788
  main_td.appendChild(div);
5789
+ jQuery("#main_div").append( form_maker.type_submit_description );
5790
  change_class(w_class, i);
5791
  refresh_attr(i, 'type_submit_reset');
5792
  }
6550
  div.appendChild(br);
6551
  div.appendChild(div_for_editable_labels);
6552
  main_td.appendChild(div);
6553
+ jQuery("#main_div").append( '<br>'+form_maker.type_name_description );
6554
 
6555
  if (w_field_label_pos == "top")
6556
  label_top(i);
6822
  div.appendChild(div_field);
6823
  div.appendChild(br3);
6824
  main_td.appendChild(div);
6825
+ jQuery("#main_div").append( form_maker.type_email_description );
6826
  if (w_field_label_pos == "top")
6827
  label_top(i);
6828
  change_class(w_class, i);
6954
  div.appendChild(br);
6955
 
6956
  main_td.appendChild(div);
6957
+ jQuery("#main_div").append( form_maker.type_phone_description );
6958
 
6959
  if (w_field_label_pos == "top")
6960
  label_top(i);
7502
  div.appendChild(div_for_editable_labels);
7503
  main_td.appendChild(div);
7504
 
7505
+ jQuery("#main_div").append( '<br><br>'+form_maker.type_address_description );
7506
+
7507
  if (w_field_label_pos == "top")
7508
  label_top(i);
7509
 
7639
  function go_to_type_mark_map(new_id) {
7640
  w_attr_name = [];
7641
  w_attr_value = [];
7642
+ type_mark_map(new_id, 'Mark your place on map', '', 'top', 'no', '2.294254', '48.858334', "2.294254", "48.858334", "13", "370", "300", 'wdform_map', '', w_attr_name, w_attr_value);
7643
  }
7644
 
7645
  function type_mark_map(i, w_field_label, w_field_label_size, w_field_label_pos, w_hide_label, w_center_x, w_center_y, w_long, w_lat, w_zoom, w_width, w_height, w_class, w_info, w_attr_name, w_attr_value) {
7732
  div.appendChild(div_field);
7733
  div.appendChild(br);
7734
  main_td.appendChild(div);
7735
+ jQuery("#main_div").append( form_maker.type_mark_on_map_description );
7736
  if (w_field_label_pos == "top") {
7737
  label_top(i);
7738
  }
7884
  div.appendChild(div_field);
7885
  div.appendChild(br3);
7886
  main_td.appendChild(div);
7887
+ jQuery("#main_div").append( form_maker.type_country_list_description );
7888
 
7889
  if (w_field_label_pos == "top")
7890
  label_top(i);
8384
  div.appendChild(div_for_editable_labels);
8385
  main_td.appendChild(div);
8386
 
8387
+ jQuery("#main_div").append( '<br>'+form_maker.type_date_of_birth_description );
8388
+
8389
  if (w_field_label_pos == "top")
8390
  label_top(i);
8391
 
8650
  div_field.appendChild(div_element);
8651
  div.appendChild(div_field);
8652
  main_td.appendChild(div);
8653
+ jQuery("#main_div").append( '<br>'+form_maker.type_price_description );
8654
 
8655
  if (w_field_label_pos == "top")
8656
  label_top(i);
9161
  div.appendChild(div_field);
9162
  div.appendChild(br3);
9163
  main_td.appendChild(div);
9164
+ jQuery("#main_div").append( form_maker.type_payment_select_description );
9165
  if (w_field_label_pos == "top")
9166
  label_top(i);
9167
 
9551
  div.appendChild(div_field);
9552
  div.appendChild(br3);
9553
  main_td.appendChild(div);
9554
+ jQuery("#main_div").append( form_maker.type_payment_radio_description );
9555
 
9556
  if (w_field_label_pos == "top")
9557
  label_top(i);
9780
  div.appendChild(div_field);
9781
  div.appendChild(br3);
9782
  main_td.appendChild(div);
9783
+ jQuery("#main_div").append( form_maker.type_payment_checkbox_description );
9784
 
9785
  if (w_field_label_pos == "top")
9786
  label_top(i);
10016
  div.appendChild(div_field);
10017
  div.appendChild(br3);
10018
  main_td.appendChild(div);
10019
+ jQuery("#main_div").append( form_maker.type_shipping_description );
10020
 
10021
  if (w_field_label_pos == "top")
10022
  label_top(i);
10165
  div.appendChild(br3);
10166
  div.appendChild(p_desc_total);
10167
  main_td.appendChild(div);
10168
+ jQuery("#main_div").append( form_maker.type_total_description );
10169
 
10170
  if (w_field_label_pos == "top") {
10171
  label_top(i);
10296
  div.appendChild(div_field);
10297
  div.appendChild(br2);
10298
  main_td.appendChild(div);
10299
+ jQuery("#main_div").append( form_maker.type_map_description );
10300
  change_class(w_class, i);
10301
  refresh_attr(i, 'type_text');
10302
 
10731
  div.appendChild(br3);
10732
  div.appendChild(div_for_editable_labels);
10733
  main_td.appendChild(div);
10734
+ jQuery("#main_div").append( '<br>'+form_maker.type_time_description );
10735
 
10736
  if (w_field_label_pos == "top") {
10737
  label_top(i);
10903
  div.appendChild(div_for_editable_labels);
10904
 
10905
  main_td.appendChild(div);
10906
+ jQuery("#main_div").append( '<br>'+form_maker.type_send_copy_description );
10907
  if (w_field_label_pos == "top")
10908
  label_top(i);
10909
  refresh_attr(i, 'type_text');
11767
  div.appendChild(div_field);
11768
  div.appendChild(br1);
11769
  main_td.appendChild(div);
11770
+ jQuery("#main_div").append( form_maker.type_stars_description );
11771
  if (w_field_label_pos == "top")
11772
  label_top(i);
11773
 
11991
  div.appendChild(br1);
11992
  div.appendChild(div_for_editable_labels);
11993
  main_td.appendChild(div);
11994
+ jQuery("#main_div").append( '<br>'+form_maker.type_rating_description );
11995
  if (w_field_label_pos == "top")
11996
  label_top(i);
11997
 
12289
  div.appendChild(div_field);
12290
  div.appendChild(br1);
12291
  main_td.appendChild(div);
12292
+ jQuery("#main_div").append( form_maker.type_slider_description );
12293
  if (w_field_label_pos == "top")
12294
  label_top(i);
12295
  change_class(w_class, i);
12513
  div.appendChild(div_for_editable_labels);
12514
 
12515
  main_td.appendChild(div);
12516
+ jQuery("#main_div").append( '<br>'+form_maker.type_range_description );
12517
  if (w_field_label_pos == "top")
12518
  label_top(i);
12519
  change_class(w_class, i);
12702
  div.appendChild(div_field);
12703
  div.appendChild(br3);
12704
  main_td.appendChild(div);
12705
+ jQuery("#main_div").append( form_maker.type_hidden_description );
12706
  refresh_attr(i, 'type_text');
12707
  }
12708
 
12854
  div.appendChild(div_field);
12855
  div.appendChild(br3);
12856
  main_td.appendChild(div);
12857
+ jQuery("#main_div").append( form_maker.type_captcha_description );
12858
  if (w_field_label_pos == "top")
12859
  label_top(i);
12860
  change_class(w_class, i);
13049
  div.appendChild(div_field);
13050
  div.appendChild(br3);
13051
  main_td.appendChild(div);
13052
+ jQuery("#main_div").append( form_maker.type_arithmetic_captcha_description );
13053
 
13054
  if (w_field_label_pos == "top")
13055
  label_top(i);
13258
  div.appendChild(br1);
13259
  div.appendChild(div_for_editable_labels);
13260
  main_td.appendChild(div);
13261
+ jQuery("#main_div").append( '<br>'+form_maker.type_phone_area_code_description );
13262
 
13263
  if (w_field_label_pos == "top")
13264
  label_top(i);
13484
 
13485
  div.appendChild(div_field);
13486
  main_td.appendChild(div);
13487
+ jQuery("#main_div").append( form_maker.type_password_description );
13488
  if (w_field_label_pos == "top")
13489
  label_top(i);
13490
  change_class(w_class, i);
13653
  div.appendChild(div_field);
13654
  div.appendChild(br1);
13655
  main_td.appendChild(div);
13656
+ jQuery("#main_div").append( form_maker.type_button_description );
13657
  change_class(w_class, i);
13658
  refresh_attr(i, 'type_checkbox');
13659
  }
13957
  div.appendChild(div_field);
13958
  div.appendChild(br3);
13959
  main_td.appendChild(div);
13960
+ jQuery("#main_div").append( form_maker.type_grades_description );
13961
  if (w_field_label_pos == "top")
13962
  label_top(i);
13963
 
14351
  div.appendChild(div_field);
14352
  div.appendChild(br3);
14353
  main_td.appendChild(div);
14354
+ jQuery("#main_div").append( form_maker.type_matrix_description );
14355
 
14356
  if (w_field_label_pos == "top")
14357
  label_top(i);
js/form_maker_submissions.js CHANGED
@@ -1,6 +1,7 @@
1
  jQuery( document ).ready(function() {
2
  add_scroll_width();
3
  add_scroll_left();
 
4
  });
5
 
6
  function add_scroll_width() {
@@ -264,3 +265,26 @@ 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
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  jQuery( document ).ready(function() {
2
  add_scroll_width();
3
  add_scroll_left();
4
+ fm_Tooltip();
5
  });
6
 
7
  function add_scroll_width() {
265
  document.getElementById('submission_'+id).value=element+'***matrix***';
266
  document.getElementById(id+'_matrixform_id_temp').value=element;
267
  }
268
+
269
+ // Tooltip for long labels
270
+ function fm_Tooltip(){
271
+ // Tooltip only Text
272
+ jQuery('.fm_masterTooltip').hover(function(){
273
+ // Hover over code
274
+ var title = jQuery(this).attr('title');
275
+ jQuery(this).data('tipText', title).removeAttr('title');
276
+ jQuery('<p class="fm_tooltip"></p>')
277
+ .text(title)
278
+ .appendTo('body')
279
+ .fadeIn('slow');
280
+ }, function() {
281
+ // Hover out code
282
+ jQuery(this).attr('title', jQuery(this).data('tipText'));
283
+ jQuery('.fm_tooltip').remove();
284
+ }).mousemove(function(e) {
285
+ var mousex = e.pageX -100; //Get X coordinates
286
+ var mousey = e.pageY + 10; //Get Y coordinates
287
+ jQuery('.fm_tooltip')
288
+ .css({ top: mousey, left: mousex })
289
+ });
290
+ }
readme.txt CHANGED
@@ -3,11 +3,11 @@ Contributors: webdorado,10web,wdsupport,formmakersupport
3
  Tags: form, form builder, contact form, custom form, feedback, contact, contact forms, captcha, email, form manager, forms, survey
4
  Requires at least: 3.4
5
  Tested up to: 4.9
6
- Stable tag: 1.12.17
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
- Form Maker is a user-friendly form builder plugin that allows to create forms for any purpose, from a simple contact form to a multi page survey
11
 
12
  == Description ==
13
 
@@ -251,8 +251,13 @@ Form Maker uses modern verification methods, such as ReCaptcha and invisible ReC
251
 
252
  == Changelog ==
253
 
 
 
 
 
 
254
  = 1.12.17 =
255
- * Fixed: UTF-8 text for Email subject and Email from name.
256
 
257
  = 1.12.16 =
258
  * Improved: Email functionality.
3
  Tags: form, form builder, contact form, custom form, feedback, contact, contact forms, captcha, email, form manager, forms, survey
4
  Requires at least: 3.4
5
  Tested up to: 4.9
6
+ Stable tag: 1.12.18
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
+ Form Maker is a user-friendly form builder plugin that allows to create forms for any purpose, from a simple contact form to a multi page survey
11
 
12
  == Description ==
13
 
251
 
252
  == Changelog ==
253
 
254
+ = 1.12.18 =
255
+ * Changed: improved Form Submissions view: added tooltips for long labels of form fields.
256
+ * Added: detailed descriptions of form fields inside the form editor
257
+ * Fixed: UTF-8 text in Email body.
258
+
259
  = 1.12.17 =
260
+ * Fixed: UTF-8 text for Email subject and Email from name.
261
 
262
  = 1.12.16 =
263
  * Improved: Email functionality.