job-application.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <?php
  2. /**
  3. * Display the job application form.
  4. *
  5. * Override this template by copying it to yourtheme/simple_job_board/single-jobpost/job-application.php
  6. *
  7. * @author PressTigers
  8. * @package Simple_Job_Board
  9. * @subpackage Simple_Job_Board/Templates
  10. * @version 1.0.0
  11. * @since 2.1.0
  12. * @since 2.2.2 Added more @hooks in application form.
  13. * @since 2.3.0 Added "sjb_job_application_template" filter & "sjb_job_application_form_fields" filter.
  14. */
  15. ob_start();
  16. global $post;
  17. /**
  18. * Fires on job detail page before displaying job application section.
  19. *
  20. * @since 2.1.0
  21. */
  22. do_action('sjb_job_application_before');
  23. ?>
  24. <!-- Start Job Application Form
  25. ================================================== -->
  26. <form class="jobpost-form" id="sjb-application-form" name="c-assignments-form" enctype="multipart/form-data">
  27. <h3><?php echo apply_filters('sjb_job_application_form_title', esc_html__('Apply Online', 'simple-job-board')); ?></h3>
  28. <div class="row">
  29. <div class="col-md-12">
  30. <?php
  31. /**
  32. * Fires on job detail page at start of job application form.
  33. *
  34. * @since 2.3.0
  35. */
  36. do_action('sjb_job_application_form_fields_start');
  37. $keys = get_post_custom_keys(get_the_ID());
  38. if (NULL != $keys):
  39. foreach ($keys as $key):
  40. if (substr($key, 0, 7) == 'jobapp_'):
  41. $val = get_post_meta(get_the_ID(), $key, TRUE);
  42. $val = unserialize($val);
  43. $is_required = isset($val['optional']) ? "checked" === $val['optional'] ? 'required="required"' : "" : 'required="required"';
  44. $required_class = isset($val['optional']) ? "checked" === $val['optional'] ? "sjb-required" : "sjb-not-required" : "sjb-required";
  45. $required_field_asterisk = isset($val['optional']) ? "checked" === $val['optional'] ? '<span class="required">*</span>' : "" : '<span id="sjb-required">*</span>';
  46. $id = preg_replace('/[^\p{L}\p{N}\_]/u', '_', $key);
  47. $name = preg_replace('/[^\p{L}\p{N}\_]/u', '_', $key);
  48. $label = isset($val['label']) ? $val['label'] : ucwords(str_replace('_', ' ', substr($key, 7)));
  49. // Field Type Meta
  50. $field_type_meta = array(
  51. 'id' => $id,
  52. 'name' => $name,
  53. 'label' => $label,
  54. 'type' => $val['type'],
  55. 'is_required' => $is_required,
  56. 'required_class' => $required_class,
  57. 'required_field_asterisk' => $required_field_asterisk,
  58. );
  59. /**
  60. * Fires on job detail page at start of job application form.
  61. *
  62. * @since 2.3.0
  63. */
  64. do_action('sjb_job_application_form_fields', $field_type_meta);
  65. switch ($val['type']) {
  66. case 'text':
  67. echo '<div class="form-group">'
  68. . '<label for="' . $key . '">' . $label . $required_field_asterisk . '</label>'
  69. . '<input type="text" name="' . $name . '" class="form-control ' . $required_class . '" id="' . $id . '" ' . $is_required . '>'
  70. . '</div>';
  71. break;
  72. case 'text_area':
  73. echo '<div class="form-group">'
  74. . '<label for="' . $key . '">' . $label . $required_field_asterisk . '</label>'
  75. . '<textarea name="' . $name . '" class="form-control ' . $required_class . '" id="' . $id . '" ' . $is_required . '></textarea>'
  76. . '</div>';
  77. break;
  78. case 'email':
  79. echo '<div class="form-group">'
  80. . '<label for="' . $key . '">' . $label . $required_field_asterisk . '</label>'
  81. . '<input type="email" name="' . $name . '" class="form-control sjb-email-address ' . $required_class . '" id="' . $id . '" ' . $is_required . '><span class="sjb-invalid-email validity-note">' . esc_html__('A valid email address is required.', 'simple-job-board') . '</span>'
  82. . '</div>';
  83. break;
  84. case 'phone':
  85. echo '<div class="form-group">'
  86. . '<label for="' . $key . '">' . $label . $required_field_asterisk . '</label>'
  87. . '<input type="tel" name="' . $name . '" class="form-control sjb-phone-number sjb-numbers-only ' . $required_class . '" id="' . $id . '" ' . $is_required . '><span class="sjb-invalid-phone validity-note" id="' . $id . '-invalid-phone">' . esc_html__('A valid phone number is required.', 'simple-job-board') . ' </span>'
  88. . '</div>';
  89. break;
  90. case 'date':
  91. echo '<div class="form-group">'
  92. . '<label for="' . $key . '">' . $label . $required_field_asterisk . '</label>'
  93. . '<input type="text" name="' . $name . '" class="form-control sjb-datepicker ' . $required_class . '" id="' . $id . '" ' . $is_required . ' maxlength="10">'
  94. . '</div>';
  95. break;
  96. case 'radio':
  97. if ($val['options'] != '') {
  98. echo '<div class="form-group">'
  99. . '<label class="sjb-label-control" for="' . $key . '">' . $label . $required_field_asterisk . '</label>'
  100. . '<div id="' . $key . '" >';
  101. $options = explode(',', $val['options']);
  102. $i = 0;
  103. foreach ($options as $option) {
  104. echo '<label class="small"><input type="radio" name="' . $name . '" class=" ' . $required_class . '" id="' . $id . '" value="' . $option . '" ' . sjb_is_checked($i) . ' ' . $is_required . '>' . $option . ' </label> ';
  105. $i++;
  106. }
  107. echo '</div></div>';
  108. }
  109. break;
  110. case 'dropdown':
  111. if ($val['options'] != '') {
  112. echo '<div class="form-group">'
  113. . '<label for="' . $key . '">' . $label . $required_field_asterisk . '</label>'
  114. . '<div id="' . $key . '" >'
  115. . '<select class="form-control" name="' . $name . '" id="' . $id . '" ' . $is_required . '>';
  116. $options = explode(',', $val['options']);
  117. foreach ($options as $option) {
  118. echo '<option class="' . $required_class . '" value="' . $option . '" >' . $option . ' </option>';
  119. }
  120. echo '</select></div></div>';
  121. }
  122. break;
  123. case 'checkbox' :
  124. if ($val['options'] != '') {
  125. echo '<div class="form-group ">'
  126. . '<label for="' . $key . '">' . $label . $required_field_asterisk . '</label>'
  127. . '<div id="' . $key . '">';
  128. $options = explode(',', $val['options']);
  129. $i = 0;
  130. foreach ($options as $option) {
  131. echo '<label class="small"><input type="checkbox" name="' . $name . '[]" class="' . $required_class . '" id="' . $id . '" value="' . $option . '" ' . $i . ' ' . $is_required . '>' . $option . ' </label>';
  132. $i++;
  133. }
  134. echo '</div></div>';
  135. }
  136. break;
  137. }
  138. endif;
  139. endforeach;
  140. endif;
  141. /**
  142. * Modify the output of file upload button.
  143. *
  144. * @since 2.2.0
  145. *
  146. * @param string $sjb_attach_resume Attach resume button.
  147. */
  148. $sjb_attach_resume = '<div class="form-group">'
  149. . '<label for="applicant_resume">' . apply_filters('sjb_resume_label', __('Attach Resume', 'simple-job-board')) . '<span class="sjb-required required">*</span></label>'
  150. . '<input type="file" name="applicant_resume" id="applicant-resume" class="sjb-attachment form-control "' . apply_filters('sjb_resume_required', 'required="required"') . '>'
  151. . '<span class="sjb-invalid-attachment validity-note" id="file-error-message"></span>'
  152. . '</div>';
  153. echo apply_filters('sjb_attach_resume', $sjb_attach_resume);
  154. /**
  155. * GDPR Part
  156. *
  157. * @since 2.6.0
  158. */
  159. //Enable GDPR Settings
  160. $sjb_gdpr_settings = get_option('job_board_privacy_settings');
  161. $privacy_policy_label = get_option('job_board_privacy_policy_label', '');
  162. $privacy_policy_content = get_option('job_board_privacy_policy_content', '');
  163. $term_conditions_label = get_option('job_board_term_conditions_label', '');
  164. $term_conditions_content = get_option('job_board_term_conditions_content', '');
  165. if ('yes' == $sjb_gdpr_settings) {
  166. ?>
  167. <?php if ($privacy_policy_content) { ?>
  168. <div class="form-group">
  169. <?php if ($privacy_policy_label) { ?>
  170. <label class="sjb-privacy-policy-label"><?php echo esc_attr($privacy_policy_label); ?></label>
  171. <?php } ?>
  172. <p><span><?php echo esc_attr($privacy_policy_content); ?></span></p>
  173. </div>
  174. <?php } ?>
  175. <?php if ($term_conditions_content) { ?>
  176. <div class="form-group ">
  177. <?php if ($term_conditions_label) { ?>
  178. <label for="jobapp_tc"><?php echo $term_conditions_label; ?></label>
  179. <?php } ?>
  180. <div id="jobapp-tc">
  181. <label class="small"><input type="checkbox" name="jobapp_tc[]" class="sjb-required" id="jobapp-tc" value="<?php echo esc_attr($term_conditions_content); ?>" required="required"><?php echo esc_attr($term_conditions_content); ?><span class="required">*</span></label>
  182. </div>
  183. </div>
  184. <?php
  185. }
  186. }
  187. /**
  188. * Fires on job detail page before job submit button.
  189. *
  190. * @since 2.2.0
  191. */
  192. do_action('sjb_job_application_form_fields_end');
  193. ?>
  194. <input type="hidden" name="job_id" value="<?php the_ID(); ?>" >
  195. <input type="hidden" name="action" value="process_applicant_form" >
  196. <input type="hidden" name="wp_nonce" value="<?php echo wp_create_nonce('jobpost_security_nonce') ?>" >
  197. <div class="form-group" id="sjb-form-padding-button">
  198. <button class="btn btn-primary app-submit"><?php esc_html_e('Submit', 'simple-job-board'); ?></button>
  199. </div>
  200. </div>
  201. </div>
  202. </form>
  203. <div class="clearfix"></div>
  204. <?php
  205. /**
  206. * Fires on job detail page after displaying job application form.
  207. *
  208. * @since 2.1.0
  209. */
  210. do_action('sjb_job_application_end');
  211. ?>
  212. <div id="jobpost_form_status"></div>
  213. <!-- ==================================================
  214. End Job Application Form -->
  215. <?php
  216. /**
  217. * Fires on job detail page after displaying job application section.
  218. *
  219. * @since 2.1.0
  220. */
  221. do_action('sjb_job_application_after');
  222. $html_job_application = ob_get_clean();
  223. /**
  224. * Modify the Job Applicatin Form Template.
  225. *
  226. * @since 2.3.0
  227. *
  228. * @param html $html_job_application Job Application Form HTML.
  229. */
  230. echo apply_filters('sjb_job_application_template', $html_job_application);