textbox.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. function ninja_forms_register_field_textbox(){
  3. $args = array(
  4. 'name' => __( 'Textbox', 'ninja-forms' ),
  5. 'sidebar' => 'template_fields',
  6. 'edit_options' => array(
  7. array(
  8. 'type' => 'hidden',
  9. 'name' => 'first_name',
  10. ),
  11. array(
  12. 'type' => 'hidden',
  13. 'name' => 'last_name',
  14. ),
  15. array(
  16. 'type' => 'hidden',
  17. 'name' => 'user_address_1',
  18. ),
  19. array(
  20. 'type' => 'hidden',
  21. 'name' => 'user_address_2',
  22. ),
  23. array(
  24. 'type' => 'hidden',
  25. 'name' => 'user_city',
  26. ),
  27. array(
  28. 'type' => 'hidden',
  29. 'name' => 'user_zip',
  30. ),
  31. array(
  32. 'type' => 'hidden',
  33. 'name' => 'user_phone',
  34. ),
  35. array(
  36. 'type' => 'hidden',
  37. 'name' => 'user_email',
  38. ),
  39. array(
  40. 'type' => 'hidden',
  41. 'name' => 'user_info_field_group',
  42. 'default' => 1,
  43. ),
  44. ),
  45. 'edit_settings' => array(
  46. 'restrictions' => array(
  47. array(
  48. 'type' => 'checkbox',
  49. 'name' => 'email',
  50. 'label' => __( 'Validate as an email address? (Field must be required)', 'ninja-forms' ),
  51. ),
  52. array(
  53. 'type' => 'checkbox',
  54. 'label' => __( 'Disable Input', 'ninja-forms' ),
  55. 'name' => 'disable_input',
  56. ),
  57. ),
  58. 'advanced' => array(
  59. array(
  60. 'type' => 'checkbox',
  61. 'name' => 'datepicker',
  62. 'label' => __( 'Datepicker', 'ninja-forms' ),
  63. ),
  64. array(
  65. 'type' => 'checkbox',
  66. 'label' => __( 'This is the user\'s state', 'ninja-forms' ),
  67. 'name' => 'user_state',
  68. ),
  69. ),
  70. ),
  71. 'display_function' => 'ninja_forms_field_text_display',
  72. 'save_function' => '',
  73. 'group' => 'standard_fields',
  74. 'edit_label' => true,
  75. 'edit_label_pos' => true,
  76. 'edit_req' => true,
  77. 'edit_custom_class' => true,
  78. 'edit_help' => true,
  79. 'edit_desc' => true,
  80. 'edit_meta' => false,
  81. 'edit_conditional' => true,
  82. 'edit_autocomplete_off' => true,
  83. 'conditional' => array(
  84. 'value' => array(
  85. 'type' => 'text',
  86. ),
  87. ),
  88. 'pre_process' => 'ninja_forms_field_text_pre_process',
  89. 'edit_sub_value' => 'nf_field_text_edit_sub_value',
  90. 'sub_table_value' => 'nf_field_text_sub_table_value',
  91. 'edit_placeholder' => true,
  92. );
  93. ninja_forms_register_field( '_text', $args );
  94. }
  95. add_action( 'init', 'ninja_forms_register_field_textbox' );
  96. function nf_field_text_edit_default_value( $field_id, $data ){
  97. $field = ninja_forms_get_field_by_id( $field_id );
  98. if ( '_text' != $field['type'] )
  99. return false;
  100. $plugin_settings = nf_get_settings();
  101. $currency_symbol = isset( $plugin_settings['currency_symbol'] ) ? $plugin_settings['currency_symbol'] : "$";
  102. $date_format = isset( $plugin_settings['date_format'] ) ? $plugin_settings['date_format'] : "m/d/Y";
  103. $default_value = isset( $data['default_value'] ) ? $data['default_value'] : '';
  104. $default_value_type = isset( $data['default_value_type'] ) ? $data['default_value_type'] : '';
  105. $custom = '';
  106. if( $default_value == 'none' ){
  107. $default_value = '';
  108. }
  109. ?>
  110. <div class="description description-thin">
  111. <span class="field-option">
  112. <label for="">
  113. <?php _e( 'Default Value' , 'ninja-forms'); ?>
  114. </label><br />
  115. <select id="default_value_<?php echo $field_id;?>" name="ninja_forms_field_<?php echo $field_id;?>[default_value_type]" class="widefat ninja-forms-_text-default-value">
  116. <option value="" <?php if( $default_value == ''){ echo 'selected'; $custom = 'no';}?>><?php _e('None', 'ninja-forms'); ?></option>
  117. <option value="_user_id" <?php if($default_value == '_user_id'){ echo 'selected'; $custom = 'no';}?>><?php _e('User ID (If logged in)', 'ninja-forms'); ?></option>
  118. <option value="_user_firstname" <?php if($default_value == '_user_firstname'){ echo 'selected'; $custom = 'no';}?>><?php _e('User Firstname (If logged in)', 'ninja-forms'); ?></option>
  119. <option value="_user_lastname" <?php if($default_value == '_user_lastname'){ echo 'selected'; $custom = 'no';}?>><?php _e('User Lastname (If logged in)', 'ninja-forms'); ?></option>
  120. <option value="_user_display_name" <?php if($default_value == '_user_display_name'){ echo 'selected'; $custom = 'no';}?>><?php _e('User Display Name (If logged in)', 'ninja-forms'); ?></option>
  121. <option value="_user_email" <?php if($default_value == '_user_email'){ echo 'selected'; $custom = 'no';}?>><?php _e('User Email (If logged in)', 'ninja-forms'); ?></option>
  122. <option value="post_id" <?php if($default_value == 'post_id'){ echo 'selected'; $custom = 'no';}?>><?php _e('Post / Page ID (If available)', 'ninja-forms'); ?></option>
  123. <option value="post_title" <?php if($default_value == 'post_title'){ echo 'selected'; $custom = 'no';}?>><?php _e('Post / Page Title (If available)', 'ninja-forms'); ?></option>
  124. <option value="post_url" <?php if($default_value == 'post_url'){ echo 'selected'; $custom = 'no';}?>><?php _e('Post / Page URL (If available)', 'ninja-forms'); ?></option>
  125. <option value="today" <?php if($default_value == 'today'){ echo 'selected'; $custom = 'no';}?>><?php _e('Today\'s Date', 'ninja-forms'); ?></option>
  126. <option value="_custom" <?php if($custom != 'no'){ echo 'selected';}?>><?php _e('Custom', 'ninja-forms'); ?> -></option>
  127. <option value="querystring" <?php if($default_value_type == 'querystring'){ echo 'selected'; $custom = 'yes';}?>><?php _e('Querystring Variable', 'ninja-forms'); ?> -></option>
  128. </select>
  129. </span>
  130. </div>
  131. <div class="description description-thin">
  132. <label for="" id="default_value_label_<?php echo $field_id;?>" style="<?php if($custom == 'no'){ echo 'display:none;';}?>">
  133. <br />
  134. <input type="text" class="widefat code nf-default-value-text" name="ninja_forms_field_<?php echo $field_id;?>[default_value]" id="ninja_forms_field_<?php echo $field_id;?>_default_value" value="<?php echo $default_value;?>" data-field-id="<?php echo $field_id; ?>" />
  135. <span class="querystring-error" style="display:none;"><?php _e( 'This keyword is reserved by WordPress. Please try another.', 'ninja-forms' ); ?></span>
  136. </label>
  137. </div>
  138. <?php
  139. }
  140. add_action( 'nf_edit_field_advanced', 'nf_field_text_edit_default_value', 9, 2 );
  141. function nf_field_text_edit_input_mask( $field_id, $data ) {
  142. $field = ninja_forms_get_field_by_id( $field_id );
  143. if ( '_text' != $field['type'] )
  144. return false;
  145. $custom = '';
  146. // Field Mask
  147. $mask = isset( $data['mask'] ) ? $data['mask'] : '';
  148. $plugin_settings = nf_get_settings();
  149. $currency_symbol = $plugin_settings['currency_symbol'];
  150. $date_format = $plugin_settings['date_format'];
  151. ?>
  152. <div class="description description-thin">
  153. <span class="field-option">
  154. <label for="">
  155. <?php _e( 'Input Mask' , 'ninja-forms'); ?>
  156. </label><br />
  157. <select id="mask_<?php echo $field_id;?>" name="" class="widefat ninja-forms-_text-mask">
  158. <option value="" <?php if($mask == ''){ echo 'selected'; $custom = 'no';}?>><?php _e('None', 'ninja-forms'); ?></option>
  159. <option value="(999) 999-9999" <?php if($mask == '(999) 999-9999'){ echo 'selected'; $custom = 'no';}?>><?php _e('Phone - (555) 555-5555', 'ninja-forms'); ?></option>
  160. <option value="date" <?php if($mask == 'date'){ echo 'selected'; $custom = 'no';}?>><?php _e('Date', 'ninja-forms'); ?> - <?php echo $date_format;?></option>
  161. <option value="currency" <?php if($mask == 'currency'){ echo 'selected'; $custom = 'no';}?>><?php _e('Currency', 'ninja-forms'); ?> - <?php echo $currency_symbol;?></option>
  162. <option value="_custom" <?php if($custom != 'no'){ echo 'selected';}?>><?php _e('Custom', 'ninja-forms'); ?> -></option>
  163. </select>
  164. </span>
  165. </div>
  166. <div class="description description-thin">
  167. <span class="field-option">
  168. <label for="" id="mask_label_<?php echo $field_id;?>" style="<?php if($custom == 'no'){ echo 'display:none;';}?>">
  169. <?php _e( 'Custom Mask Definition' , 'ninja-forms'); ?> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#" name="" class="ninja-forms-mask-help"><?php _e( 'Help', 'ninja-forms' ); ?></a><br />
  170. <input type="text" id="ninja_forms_field_<?php echo $field_id;?>_mask" name="ninja_forms_field_<?php echo $field_id;?>[mask]" class="widefat code" value="<?php echo $mask; ?>" />
  171. </label>
  172. </span>
  173. </div>
  174. <?php
  175. }
  176. add_action( 'nf_edit_field_restrictions', 'nf_field_text_edit_input_mask', 10, 2 );
  177. function ninja_forms_field_text_display( $field_id, $data, $form_id = '' ){
  178. global $current_user;
  179. $field_class = ninja_forms_get_field_class( $field_id, $form_id );
  180. if ( isset( $data['email'] ) && $data['email'] == 1 ) {
  181. $field_class .= ' email';
  182. }
  183. if(isset($data['default_value'])){
  184. $default_value = $data['default_value'];
  185. }else{
  186. $default_value = '';
  187. }
  188. if(isset($data['label_pos'])){
  189. $label_pos = $data['label_pos'];
  190. }else{
  191. $label_pos = "left";
  192. }
  193. if(isset($data['label'])){
  194. $label = $data['label'];
  195. }else{
  196. $label = '';
  197. }
  198. if( isset( $data['mask'] ) ){
  199. $mask = $data['mask'];
  200. }else{
  201. $mask = '';
  202. }
  203. if( isset( $data['input_limit'] ) ){
  204. $input_limit = $data['input_limit'];
  205. }else{
  206. $input_limit = '';
  207. }
  208. if( isset( $data['input_limit_type'] ) ){
  209. $input_limit_type = $data['input_limit_type'];
  210. }else{
  211. $input_limit_type = '';
  212. }
  213. if( isset( $data['input_limit_msg'] ) ){
  214. $input_limit_msg = $data['input_limit_msg'];
  215. }else{
  216. $input_limit_msg = '';
  217. }
  218. $autocomplete_off = isset ( $data['autocomplete_off'] ) ? $data['autocomplete_off'] : 0;
  219. if ( 1 == $autocomplete_off ) {
  220. $autocomplete_off = 'autocomplete="off"';
  221. } else {
  222. $autocomplete_off = '';
  223. }
  224. switch( $mask ){
  225. case '':
  226. $mask_class = '';
  227. break;
  228. case 'date':
  229. $mask_class = 'ninja-forms-date';
  230. break;
  231. case 'currency':
  232. $mask_class = 'ninja-forms-currency';
  233. break;
  234. default:
  235. $mask_class = 'ninja-forms-mask';
  236. break;
  237. }
  238. if( isset( $data['datepicker'] ) AND $data['datepicker'] == 1 ){
  239. $mask_class = 'ninja-forms-datepicker';
  240. }
  241. $disable_input = isset( $data['disable_input'] ) ? $data['disable_input'] : 0;
  242. if ( 1 == $disable_input ) {
  243. $disabled = 'disabled';
  244. } else {
  245. $disabled = '';
  246. }
  247. $placeholder = isset ( $data['placeholder'] ) ? $data['placeholder'] : '';
  248. ?>
  249. <input id="ninja_forms_field_<?php echo $field_id;?>" data-mask="<?php echo $mask;?>" data-input-limit="<?php echo $input_limit;?>" data-input-limit-type="<?php echo $input_limit_type;?>" data-input-limit-msg="<?php echo $input_limit_msg;?>" name="ninja_forms_field_<?php echo $field_id;?>" type="text" placeholder="<?php echo $placeholder;?>" class="<?php echo $field_class;?> <?php echo $mask_class;?>" value="<?php echo $default_value;?>" rel="<?php echo $field_id;?>" <?php echo $disabled; ?> <?php echo $autocomplete_off; ?> />
  250. <?php
  251. }
  252. function ninja_forms_field_text_pre_process( $field_id, $user_value ){
  253. global $ninja_forms_processing;
  254. $plugin_settings = nf_get_settings();
  255. if( isset( $plugin_settings['invalid_email'] ) ){
  256. $invalid_email = __( $plugin_settings['invalid_email'], 'ninja-forms' );
  257. }else{
  258. $invalid_email = __( 'Please enter a valid email address.', 'ninja-forms' );
  259. }
  260. $field_row = $ninja_forms_processing->get_field_settings( $field_id );
  261. $data = $field_row['data'];
  262. if( isset( $data['email'] ) AND $data['email'] == 1 AND $user_value != '' ){
  263. if ( ! is_email( $user_value ) ) {
  264. //Check False Positive
  265. if ( 'inside' == $data['label_pos'] AND ( $data['label'] . " *" ) == $ninja_forms_processing->get_field_value( $field_id ) ) {
  266. //False Positive
  267. } else {
  268. $ninja_forms_processing->add_error('email-' . $field_id, $invalid_email, $field_id);
  269. $ninja_forms_processing->add_error('email-general', $invalid_email);
  270. }
  271. }
  272. }
  273. if( ( isset( $data['replyto_email'] ) AND $data['replyto_email'] == 1 ) OR ( isset( $data['from_email'] ) AND $data['from_email'] == 1 ) ) {
  274. $user_value = $ninja_forms_processing->get_field_value( $field_id );
  275. $ninja_forms_processing->update_form_setting( 'admin_email_replyto', $user_value );
  276. }
  277. if( isset( $data['from_name'] ) AND $data['from_name'] == 1 ){
  278. $user_value = $ninja_forms_processing->get_field_value( $field_id );
  279. if( $ninja_forms_processing->get_form_setting( 'admin_email_name' ) ){
  280. $admin_email_name = $ninja_forms_processing->get_form_setting( 'admin_email_name' );
  281. $admin_email_name .= " ".$user_value;
  282. }else{
  283. $admin_email_name = $user_value;
  284. }
  285. $ninja_forms_processing->update_form_setting( 'admin_email_name', $admin_email_name );
  286. }
  287. }
  288. /**
  289. * Edit submission value output function
  290. *
  291. * @since 2.7
  292. * @return void
  293. */
  294. function nf_field_text_edit_sub_value( $field_id, $user_value ) {
  295. ?>
  296. <input type="text" name="fields[<?php echo $field_id; ?>]" value="<?php echo $user_value; ?>">
  297. <?php
  298. }
  299. /**
  300. * Output the value that shows up in the submissions table
  301. *
  302. * @since 2.7
  303. * @return void
  304. */
  305. function nf_field_text_sub_table_value( $field_id, $user_value ) {
  306. // Cut down our string if it is longer than 140 characters.
  307. $max_len = apply_filters( 'nf_sub_table_user_value_max_len', 140, $field_id );
  308. if ( strlen( $user_value ) > 140 )
  309. $user_value = substr( $user_value, 0, 140 );
  310. echo nl2br( $user_value );
  311. }