Version Description
- Enhancement: Switched from Chosen to Select2 for enhanced dropdown handling and better mobile support. May require theme update.
- Enhancement: Draft and unsubmitted job listings now appear in
[job_dashboard]
, allowing users to complete their submission. - Enhancement: Filled and expired positions are now hidden from WordPress search. (@felipeelia)
- Enhancement: Adds additional support for the new block editor. Restricted to classic block for compatibility with frontend editor.
- Enhancement: Job types can be preselected in
[jobs]
shortcode with?search_job_type=term-slug
. (@felipeelia) - Enhancement: Author selection in WP admin now uses a searchable dropdown.
- Enhancement: Setup wizard is accessed with a flash message instead of an automatic redirect upon activation.
- Enhancement: When using supported themes, job listing archive slug can be changed in Permalink settings.
- Fix: Company tagline alignment issue with company name. (@0xDELS)
- Fix: "Load Previous Listings" link unnecessarily shows up on
[jobs]
shortcode. (@tonytettinger) - Fix: Category selector fixed in the job listings page in WP Admin. (@AmandaJBell)
- Fix: Issue with quote encoding on Apply for Job email link.
- Fix: Link
target
attributes have been removed in templates. - Dev: Allow for job submission flow to be interrupted using
before
argument on form steps. - Dev: HTML allowed in custom company field labels. (@tripflex)
- Dev: Job feed slug name can be customized with the
job_manager_job_feed_name
filter. - Deprecated: Unreleased REST API implementation using
WPJM_REST_API_ENABLED
was replaced with standard WP REST API.
Download this release
Release Info
Developer | jakeom |
Plugin | WP Job Manager |
Version | 1.32.0 |
Comparing to | |
See all releases |
Code changes from version 1.31.3 to 1.32.0
- assets/css/admin.css +1 -1
- assets/css/frontend.css +1 -1
- assets/js/admin.min.js +1 -1
- assets/js/ajax-filters.min.js +1 -1
- assets/js/job-application.min.js +1 -1
- assets/js/multiselect.min.js +1 -1
- assets/js/select2/select2.full.min.js +1 -0
- assets/js/select2/select2.min.css +1 -0
- assets/js/term-multiselect.min.js +1 -1
- changelog.txt +19 -0
- includes/3rd-party/polylang.php +13 -0
- includes/abstracts/abstract-wp-job-manager-form.php +20 -1
- includes/admin/class-wp-job-manager-admin-notices.php +227 -0
- includes/admin/class-wp-job-manager-admin.php +23 -3
- includes/admin/class-wp-job-manager-cpt.php +9 -1
- includes/admin/class-wp-job-manager-permalink-settings.php +28 -5
- includes/admin/class-wp-job-manager-setup.php +41 -234
- includes/admin/class-wp-job-manager-writepanels.php +31 -56
- includes/admin/views/html-admin-notice-core-setup.php +23 -0
- includes/admin/views/html-admin-setup-footer.php +13 -0
- includes/admin/views/html-admin-setup-header.php +24 -0
- includes/admin/views/html-admin-setup-opt-in-usage-tracking.php +26 -0
- includes/admin/views/html-admin-setup-step-1.php +33 -0
- includes/admin/views/html-admin-setup-step-2.php +77 -0
- includes/admin/views/html-admin-setup-step-3.php +74 -0
- includes/class-wp-job-manager-ajax.php +134 -0
- includes/class-wp-job-manager-blocks.php +56 -0
- includes/class-wp-job-manager-data-cleaner.php +2 -0
- includes/class-wp-job-manager-install.php +12 -1
- includes/class-wp-job-manager-post-types.php +192 -25
- includes/class-wp-job-manager-shortcodes.php +2 -1
- includes/class-wp-job-manager-usage-tracking.php +2 -2
- includes/forms/class-wp-job-manager-form-submit-job.php +15 -3
- includes/rest-api/class-wp-job-manager-registrable-job-listings.php +2 -1
- includes/rest-api/class-wp-job-manager-registrable-taxonomy-type.php +4 -3
- languages/wp-job-manager.pot +447 -373
- readme.txt +21 -2
- templates/content-single-job_listing-company.php +2 -2
- templates/job-application-url.php +2 -2
- templates/job-dashboard.php +5 -1
- templates/job-submit.php +2 -2
- wp-job-manager-functions.php +1 -1
- wp-job-manager-template.php +6 -4
- wp-job-manager.php +117 -55
assets/css/admin.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}@font-face{font-family:job-manager;src:url(../font/job-manager.eot?4963673);src:url(../font/job-manager.eot?4963673#iefix) format('embedded-opentype'),url(../font/job-manager.woff?4963673) format('woff'),url(../font/job-manager.ttf?4963673) format('truetype'),url(../font/job-manager.svg?4963673#job-manager) format('svg');font-weight:400;font-style:normal}@font-face{font-family:jm-logo;src:url(../font/jm-logo/jm.eot?ycsbky);src:url(../font/jm-logo/jm.eot?#iefixycsbky) format('embedded-opentype'),url(../font/jm-logo/jm.woff?ycsbky) format('woff'),url(../font/jm-logo/jm.ttf?ycsbky) format('truetype'),url(../font/jm-logo/jm.svg?ycsbky#icomoon) format('svg');font-weight:400;font-style:normal}.jm-icon{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.job-manager-settings-wrap .updated{display:none}.job-manager-settings-wrap .job-manager-updated{display:block;margin:1em 0 0}a.wpjm-activate-licence-link,a.wpjm-activate-licence-link:active,a.wpjm-activate-licence-link:hover,a.wpjm-activate-licence-link:link,a.wpjm-activate-licence-link:visited{color:#ff4500}.wpjm-licences{margin-top:10px}.wpjm-licences .licence-row{align-items:center;border:solid 1px #e2e0e2;display:flex;background-color:#fff;flex-wrap:wrap;min-height:82px;margin-bottom:20px;position:relative}.wpjm-licences .plugin-info{font-size:18px;flex-basis:320px;padding:0 20px;margin-right:10px}.wpjm-licences .plugin-info .plugin-author{font-size:12px}.wpjm-licences .plugin-licence{flex:1;flex-basis:40%;padding-bottom:5px}.wpjm-licences .plugin-licence label{white-space:nowrap}.widefat td.column-featured_job,.widefat td.column-filled,.widefat td.column-job_status{width:46px;text-align:left;padding-left:11px}.widefat th.column-featured_job,.widefat th.column-filled,.widefat th.column-job_status{width:1em}.widefat th.column-featured_job span,.widefat th.column-filled span,.widefat th.column-job_status span{display:block;width:1em;height:1em;line-height:1em;padding:1px 0 0 0;overflow:hidden}.widefat th.column-featured_job span:before,.widefat th.column-filled span:before,.widefat th.column-job_status span:before{content:'\e803';font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.widefat th.column-filled span:before{content:'\e807'}.widefat th.column-job_status span:before{content:'\e828'}.widefat .column-job_posted strong{display:block;margin-bottom:.2em}.widefat td.column-job_status span{position:relative;font-size:1em;line-height:1.5em;width:1em;height:0;padding:2em 0 0 0;overflow:hidden;display:block}.widefat td.column-job_status span:before{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;position:absolute;top:0;left:0;line-height:1.5em;vertical-align:middle;color:#999;content:'\e829'}.widefat td.column-job_status .status-trash:before{content:'\e82b';color:#a00}.widefat td.column-job_status .status-pending:before{content:'\e82c';color:#ffba00}.widefat td.column-job_status .status-publish:before{content:'\e82f';color:#73a724}.widefat td.column-job_status .status-expired:before{content:'\e82e';color:#a00}.widefat .column-job_listing_type{text-align:left;width:6em;word-wrap:normal!important}.widefat .column-job_listing_type .job-type{color:#fff;padding:4px;font-size:11px;-webkit-border-radius:2px;border-radius:2px;display:block;background-color:#f08d3c;text-align:center}.widefat .column-job_listing_type .full-time{background-color:#90da36}.widefat .column-job_listing_type .part-time{background-color:#f08d3c}.widefat .column-job_listing_type .temporary{background-color:#d93674}.widefat .column-job_listing_type .freelance{background-color:#39c}.widefat .column-job_listing_type .internship{background-color:#6033cc}.widefat th.column-job_position{width:20%}.widefat td.column-job_position{width:20%;height:34px}.widefat td.column-job_position .job_position{position:relative;padding-right:50px!important}.widefat td.column-job_position a.job_title{font-weight:700}.widefat td.column-job_position img{width:32px;height:32px;position:absolute;right:7px;top:0;-webkit-border-radius:50%;border-radius:50%;box-shadow:0 1px 0 1px rgba(0,0,0,.1);-webkit-box-shadow:0 1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 0 1px rgba(0,0,0,.1);border:1px solid #fff}.widefat td.column-job_position .company{margin-top:.2em;display:block;padding-top:2px;color:#bbb}.widefat .column-job_location{width:10%}.widefat .column-job_actions{text-align:right;width:128px}.widefat .column-job_actions strong{display:block;margin-bottom:.2em}.widefat .column-job_actions .actions{padding-top:2px}.widefat .column-job_actions a.button{display:inline-block;margin:0 0 2px 4px;cursor:pointer;padding:0 6px!important;font-size:1em!important;line-height:2em!important;overflow:hidden}.widefat .column-job_actions a.button-icon{width:2em!important;padding:0!important}.widefat .column-job_actions a.button-icon:before{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;float:left;width:2em!important;line-height:2em}.widefat .column-job_actions .icon-view:before{content:'\e805'}.widefat .column-job_actions .icon-edit:before{content:'\e804'}.widefat .column-job_actions .icon-delete:before{content:'\e82b'}.widefat .column-job_actions .icon-approve:before{content:'\e802'}.wp_job_manager_meta_data{zoom:1}.wp_job_manager_meta_data:after,.wp_job_manager_meta_data:before{content:"";display:table}.wp_job_manager_meta_data:after{clear:both}.wp_job_manager_meta_data .form-field{width:50%;line-height:2em;float:left;box-sizing:border-box;padding:0 12px 0 0;margin:0 0 12px;clear:both}.wp_job_manager_meta_data .form-field:nth-child(even){float:right;padding:0 0 0 12px;clear:right}.wp_job_manager_meta_data .form-field:nth-last-child(-n+2){margin-bottom:0;padding-bottom:0;border-bottom:0}.wp_job_manager_meta_data .form-field label{vertical-align:middle;display:block;font-weight:700;margin:0}.wp_job_manager_meta_data .form-field .tips{cursor:help;float:right;font-weight:400;color:#999}.wp_job_manager_meta_data .form-field input{width:100%;margin:1px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.wp_job_manager_meta_data .form-field input.checkbox,.wp_job_manager_meta_data .form-field input.radio{width:auto;margin:4px 2px;display:inline-block}.wp_job_manager_meta_data .form-field .description{display:block;color:#999}.wp_job_manager_meta_data .form-field.form-field-checkbox .description{display:inline}.wp_job_manager_meta_data .form-field .file_url input{width:75%}.wp_job_manager_meta_data .form-field .button{margin-left:4px}.wp_job_manager_meta_data .form-field .file_no_url{-o-animation:flash .3s linear infinite alternate;-webkit-animation:flash .3s linear infinite alternate;-moz-animation:flash .3s linear infinite alternate;animation:flash .3s linear infinite alternate}@-o-keyframes flash{from{background-color:unset}to{background-color:#dc3232}}@-ms-keyframes flash{from{background-color:unset}to{background-color:#dc3232}}@-moz-keyframes flash{from{background-color:unset}to{background-color:#dc3232}}@-webkit-keyframes flash{from{background-color:unset}to{background-color:#dc3232}}@keyframes flash{from{background-color:unset}to{background-color:#dc3232}}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_left{padding-right:5px}#tiptip_content{font-size:11px;color:#fff;padding:4px 8px;background:#464646;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;box-shadow:1px 1px 3px rgba(0,0,0,.1);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.1);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.1);text-align:center}#tiptip_content code{background:#999;padding:1px}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#464646}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#464646}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#464646}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#464646}.wp_job_manager_add_ons_wrap .products{overflow:hidden}.wp_job_manager_add_ons_wrap .products li{float:left;margin:0 1em 1em 0!important;padding:0;vertical-align:top;width:350px}.wp_job_manager_add_ons_wrap .products li a{text-decoration:none;color:inherit;border:1px solid #ddd;display:block;min-height:220px;overflow:hidden;background:#f6f6f6;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1)}.wp_job_manager_add_ons_wrap .products li img{display:inline-block;width:auto;max-height:60px;max-width:90px;margin:0 5px 0 0;float:left}.wp_job_manager_add_ons_wrap .products li h2{margin:0!important;padding:20px!important;background:#fff;height:20px;font-size:16px}.wp_job_manager_add_ons_wrap .products li p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wp_job_manager_add_ons_wrap .products li .price{display:none}.rtl .widefat .column-job_actions a.button-icon:before{float:right}.rtl .wp_job_manager_meta_data p{padding:0 20% 0 0}.rtl .wp_job_manager_meta_data label{left:auto;right:0}table.form-table.settings tr{border-bottom:1px solid rgba(0,0,0,.1)}table.form-table.settings tr.no-separator,table.form-table.settings tr:last-child{border-bottom:0}div.setting-enable-expand{border:1px solid rgba(0,0,0,.1);padding:15px 10px}div.setting-enable-expand .sub-settings-expandable{display:none;padding-left:25px}div.setting-enable-expand .sub-settings-expandable.expanded{display:block}tr.email-setting-row td{padding:5px}@media only screen and (max-width:782px){.wpjm-licences .plugin-info{padding:10px}.wpjm-licences .plugin-licence{padding:10px}.widefat .job_position.column-primary{display:table-cell!important}.widefat .toggle-row:before{top:5px}.widefat .column-job_actions{text-align:left}.widefat .column-job_actions a.button-icon:before{float:left}.rtl .widefat .column-job_actions{text-align:right}.rtl .widefat .column-job_actions a.button-icon:before{float:right}.wp_job_manager_meta_data .form-field{width:100%;padding:0}.wp_job_manager_meta_data .form-field:nth-child(even){float:none;padding:0;margin-bottom:12px;clear:both}.wp_job_manager_meta_data .form-field:nth-last-child(-n+2){float:none;padding:0;margin-bottom:12px;clear:both}}
|
1 |
+
.clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}@font-face{font-family:job-manager;src:url(../font/job-manager.eot?4963673);src:url(../font/job-manager.eot?4963673#iefix) format('embedded-opentype'),url(../font/job-manager.woff?4963673) format('woff'),url(../font/job-manager.ttf?4963673) format('truetype'),url(../font/job-manager.svg?4963673#job-manager) format('svg');font-weight:400;font-style:normal}@font-face{font-family:jm-logo;src:url(../font/jm-logo/jm.eot?ycsbky);src:url(../font/jm-logo/jm.eot?#iefixycsbky) format('embedded-opentype'),url(../font/jm-logo/jm.woff?ycsbky) format('woff'),url(../font/jm-logo/jm.ttf?ycsbky) format('truetype'),url(../font/jm-logo/jm.svg?ycsbky#icomoon) format('svg');font-weight:400;font-style:normal}.jm-icon{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.job-manager-settings-wrap .job-manager-updated{display:block;margin:1em 0 0}a.wpjm-activate-licence-link,a.wpjm-activate-licence-link:active,a.wpjm-activate-licence-link:hover,a.wpjm-activate-licence-link:link,a.wpjm-activate-licence-link:visited{color:#ff4500}.wpjm-licences{margin-top:10px}.wpjm-licences .licence-row{align-items:center;border:solid 1px #e2e0e2;display:flex;background-color:#fff;flex-wrap:wrap;min-height:82px;margin-bottom:20px;position:relative}.wpjm-licences .plugin-info{font-size:18px;flex-basis:320px;padding:0 20px;margin-right:10px}.wpjm-licences .plugin-info .plugin-author{font-size:12px}.wpjm-licences .plugin-licence{flex:1;flex-basis:40%;padding-bottom:5px}.wpjm-licences .plugin-licence label{white-space:nowrap}.widefat td.column-featured_job,.widefat td.column-filled,.widefat td.column-job_status{width:46px;text-align:left;padding-left:11px}.widefat th.column-featured_job,.widefat th.column-filled,.widefat th.column-job_status{width:1em}.widefat th.column-featured_job span,.widefat th.column-filled span,.widefat th.column-job_status span{display:block;width:1em;height:1em;line-height:1em;padding:1px 0 0 0;overflow:hidden}.widefat th.column-featured_job span:before,.widefat th.column-filled span:before,.widefat th.column-job_status span:before{content:'\e803';font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.widefat th.column-filled span:before{content:'\e807'}.widefat th.column-job_status span:before{content:'\e828'}.widefat .column-job_posted strong{display:block;margin-bottom:.2em}.widefat td.column-job_status span{position:relative;font-size:1em;line-height:1.5em;width:1em;height:0;padding:2em 0 0 0;overflow:hidden;display:block}.widefat td.column-job_status span:before{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;position:absolute;top:0;left:0;line-height:1.5em;vertical-align:middle;color:#999;content:'\e829'}.widefat td.column-job_status .status-trash:before{content:'\e82b';color:#a00}.widefat td.column-job_status .status-pending:before{content:'\e82c';color:#ffba00}.widefat td.column-job_status .status-publish:before{content:'\e82f';color:#73a724}.widefat td.column-job_status .status-expired:before{content:'\e82e';color:#a00}.widefat .column-job_listing_type{text-align:left;width:6em;word-wrap:normal!important}.widefat .column-job_listing_type .job-type{color:#fff;padding:4px;font-size:11px;-webkit-border-radius:2px;border-radius:2px;display:block;background-color:#f08d3c;text-align:center}.widefat .column-job_listing_type .full-time{background-color:#90da36}.widefat .column-job_listing_type .part-time{background-color:#f08d3c}.widefat .column-job_listing_type .temporary{background-color:#d93674}.widefat .column-job_listing_type .freelance{background-color:#39c}.widefat .column-job_listing_type .internship{background-color:#6033cc}.widefat th.column-job_position{width:20%}.widefat td.column-job_position{width:20%;height:34px}.widefat td.column-job_position .job_position{position:relative;padding-right:50px!important}.widefat td.column-job_position a.job_title{font-weight:700}.widefat td.column-job_position img{width:32px;height:32px;position:absolute;right:7px;top:0;-webkit-border-radius:50%;border-radius:50%;box-shadow:0 1px 0 1px rgba(0,0,0,.1);-webkit-box-shadow:0 1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 0 1px rgba(0,0,0,.1);border:1px solid #fff}.widefat td.column-job_position .company{margin-top:.2em;display:block;padding-top:2px;color:#bbb}.widefat .column-job_location{width:10%}.widefat .column-job_actions{text-align:right;width:128px}.widefat .column-job_actions strong{display:block;margin-bottom:.2em}.widefat .column-job_actions .actions{padding-top:2px}.widefat .column-job_actions a.button{display:inline-block;margin:0 0 2px 4px;cursor:pointer;padding:0 6px!important;font-size:1em!important;line-height:2em!important;overflow:hidden}.widefat .column-job_actions a.button-icon{width:2em!important;padding:0!important}.widefat .column-job_actions a.button-icon:before{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;float:left;width:2em!important;line-height:2em}.widefat .column-job_actions .icon-view:before{content:'\e805'}.widefat .column-job_actions .icon-edit:before{content:'\e804'}.widefat .column-job_actions .icon-delete:before{content:'\e82b'}.widefat .column-job_actions .icon-approve:before{content:'\e802'}.wp_job_manager_meta_data{zoom:1}.wp_job_manager_meta_data:after,.wp_job_manager_meta_data:before{content:"";display:table}.wp_job_manager_meta_data:after{clear:both}.wp_job_manager_meta_data .form-field{width:50%;line-height:2em;float:left;box-sizing:border-box;padding:0 12px 0 0;margin:0 0 12px;clear:both}.wp_job_manager_meta_data .form-field:nth-child(even){float:right;padding:0 0 0 12px;clear:right}.wp_job_manager_meta_data .form-field:nth-last-child(-n+2){margin-bottom:0;padding-bottom:0;border-bottom:0}.wp_job_manager_meta_data .form-field label{vertical-align:middle;display:block;font-weight:700;margin:0}.wp_job_manager_meta_data .form-field .tips{cursor:help;float:right;font-weight:400;color:#999}.wp_job_manager_meta_data .form-field input{width:100%;margin:1px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.wp_job_manager_meta_data .form-field input.checkbox,.wp_job_manager_meta_data .form-field input.radio{width:auto;margin:4px 2px;display:inline-block}.wp_job_manager_meta_data .form-field .description{display:block;color:#999}.wp_job_manager_meta_data .form-field.form-field-checkbox .description{display:inline}.wp_job_manager_meta_data .form-field .file_url input{width:75%}.wp_job_manager_meta_data .form-field .button{margin-left:4px}.wp_job_manager_meta_data .form-field .file_no_url{-o-animation:flash .3s linear infinite alternate;-webkit-animation:flash .3s linear infinite alternate;-moz-animation:flash .3s linear infinite alternate;animation:flash .3s linear infinite alternate}@-o-keyframes flash{from{background-color:unset}to{background-color:#dc3232}}@-ms-keyframes flash{from{background-color:unset}to{background-color:#dc3232}}@-moz-keyframes flash{from{background-color:unset}to{background-color:#dc3232}}@-webkit-keyframes flash{from{background-color:unset}to{background-color:#dc3232}}@keyframes flash{from{background-color:unset}to{background-color:#dc3232}}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_left{padding-right:5px}#tiptip_content{font-size:11px;color:#fff;padding:4px 8px;background:#464646;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;box-shadow:1px 1px 3px rgba(0,0,0,.1);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.1);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.1);text-align:center}#tiptip_content code{background:#999;padding:1px}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#464646}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#464646}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#464646}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#464646}.wp_job_manager_add_ons_wrap .products{overflow:hidden}.wp_job_manager_add_ons_wrap .products li{float:left;margin:0 1em 1em 0!important;padding:0;vertical-align:top;width:350px}.wp_job_manager_add_ons_wrap .products li a{text-decoration:none;color:inherit;border:1px solid #ddd;display:block;min-height:220px;overflow:hidden;background:#f6f6f6;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1)}.wp_job_manager_add_ons_wrap .products li img{display:inline-block;width:auto;max-height:60px;max-width:90px;margin:0 5px 0 0;float:left}.wp_job_manager_add_ons_wrap .products li h2{margin:0!important;padding:20px!important;background:#fff;height:20px;font-size:16px}.wp_job_manager_add_ons_wrap .products li p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wp_job_manager_add_ons_wrap .products li .price{display:none}.rtl .widefat .column-job_actions a.button-icon:before{float:right}.rtl .wp_job_manager_meta_data p{padding:0 20% 0 0}.rtl .wp_job_manager_meta_data label{left:auto;right:0}table.form-table.settings tr{border-bottom:1px solid rgba(0,0,0,.1)}table.form-table.settings tr.no-separator,table.form-table.settings tr:last-child{border-bottom:0}div.setting-enable-expand{border:1px solid rgba(0,0,0,.1);padding:15px 10px}div.setting-enable-expand .sub-settings-expandable{display:none;padding-left:25px}div.setting-enable-expand .sub-settings-expandable.expanded{display:block}tr.email-setting-row td{padding:5px}@media only screen and (max-width:782px){.wpjm-licences .plugin-info{padding:10px}.wpjm-licences .plugin-licence{padding:10px}.widefat .job_position.column-primary{display:table-cell!important}.widefat .toggle-row:before{top:5px}.widefat .column-job_actions{text-align:left}.widefat .column-job_actions a.button-icon:before{float:left}.rtl .widefat .column-job_actions{text-align:right}.rtl .widefat .column-job_actions a.button-icon:before{float:right}.wp_job_manager_meta_data .form-field{width:100%;padding:0}.wp_job_manager_meta_data .form-field:nth-child(even){float:none;padding:0;margin-bottom:12px;clear:both}.wp_job_manager_meta_data .form-field:nth-last-child(-n+2){float:none;padding:0;margin-bottom:12px;clear:both}}
|
assets/css/frontend.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}@font-face{font-family:job-manager;src:url(../font/job-manager.eot?4963673);src:url(../font/job-manager.eot?4963673#iefix) format('embedded-opentype'),url(../font/job-manager.woff?4963673) format('woff'),url(../font/job-manager.ttf?4963673) format('truetype'),url(../font/job-manager.svg?4963673#job-manager) format('svg');font-weight:400;font-style:normal}@font-face{font-family:jm-logo;src:url(../font/jm-logo/jm.eot?ycsbky);src:url(../font/jm-logo/jm.eot?#iefixycsbky) format('embedded-opentype'),url(../font/jm-logo/jm.woff?ycsbky) format('woff'),url(../font/jm-logo/jm.ttf?ycsbky) format('truetype'),url(../font/jm-logo/jm.svg?ycsbky#icomoon) format('svg');font-weight:400;font-style:normal}.jm-icon{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.rp4wp-related-job_listing>ul,ul.job_listings{padding:0;margin:0;border-top:1px solid #eee}.rp4wp-related-job_listing>ul.loading,ul.job_listings.loading{min-height:96px;border-bottom:1px solid #eee;background:url(../images/ajax-loader.gif) no-repeat center 32px}.rp4wp-related-job_listing>ul li.job_listing,.rp4wp-related-job_listing>ul li.no_job_listings_found,ul.job_listings li.job_listing,ul.job_listings li.no_job_listings_found{list-style:none outside;padding:0;margin:0;border-bottom:1px solid #eee}.rp4wp-related-job_listing>ul li.job_listing.job_position_filled a,.rp4wp-related-job_listing>ul li.no_job_listings_found.job_position_filled a,ul.job_listings li.job_listing.job_position_filled a,ul.job_listings li.no_job_listings_found.job_position_filled a{opacity:.25}.rp4wp-related-job_listing>ul li.job_listing.no_job_listings_found,.rp4wp-related-job_listing>ul li.no_job_listings_found.no_job_listings_found,ul.job_listings li.job_listing.no_job_listings_found,ul.job_listings li.no_job_listings_found.no_job_listings_found{padding:1em;border-bottom:1px solid #eee}.rp4wp-related-job_listing>ul li.job_listing a,.rp4wp-related-job_listing>ul li.no_job_listings_found a,ul.job_listings li.job_listing a,ul.job_listings li.no_job_listings_found a{display:block;padding:1em 1em 1em 2em;border:0;overflow:hidden;zoom:1;position:relative;line-height:1.5em;text-decoration:none}.rp4wp-related-job_listing>ul li.job_listing a:focus,.rp4wp-related-job_listing>ul li.job_listing a:hover,.rp4wp-related-job_listing>ul li.no_job_listings_found a:focus,.rp4wp-related-job_listing>ul li.no_job_listings_found a:hover,ul.job_listings li.job_listing a:focus,ul.job_listings li.job_listing a:hover,ul.job_listings li.no_job_listings_found a:focus,ul.job_listings li.no_job_listings_found a:hover{background-color:#fcfcfc}.rp4wp-related-job_listing>ul li.job_listing a img.company_logo,.rp4wp-related-job_listing>ul li.no_job_listings_found a img.company_logo,ul.job_listings li.job_listing a img.company_logo,ul.job_listings li.no_job_listings_found a img.company_logo{width:42px;height:42px;position:absolute;left:1em;float:left;margin-right:1em;vertical-align:middle;box-shadow:none}.rp4wp-related-job_listing>ul li.job_listing a div.location,.rp4wp-related-job_listing>ul li.job_listing a div.position,.rp4wp-related-job_listing>ul li.job_listing a ul.meta,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.location,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position,.rp4wp-related-job_listing>ul li.no_job_listings_found a ul.meta,ul.job_listings li.job_listing a div.location,ul.job_listings li.job_listing a div.position,ul.job_listings li.job_listing a ul.meta,ul.job_listings li.no_job_listings_found a div.location,ul.job_listings li.no_job_listings_found a div.position,ul.job_listings li.no_job_listings_found a ul.meta{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.rp4wp-related-job_listing>ul li.job_listing a div.position,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position,ul.job_listings li.job_listing a div.position,ul.job_listings li.no_job_listings_found a div.position{float:left;width:55%;padding:0 0 0 42px;line-height:1.5em}.rp4wp-related-job_listing>ul li.job_listing a div.position h3,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position h3,ul.job_listings li.job_listing a div.position h3,ul.job_listings li.no_job_listings_found a div.position h3{margin:0;padding:0;line-height:inherit;font-size:inherit}.rp4wp-related-job_listing>ul li.job_listing a div.position .company,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position .company,ul.job_listings li.job_listing a div.position .company,ul.job_listings li.no_job_listings_found a div.position .company{color:#999}.rp4wp-related-job_listing>ul li.job_listing a div.position .company .tagline,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position .company .tagline,ul.job_listings li.job_listing a div.position .company .tagline,ul.job_listings li.no_job_listings_found a div.position .company .tagline{margin-left:.5em}.rp4wp-related-job_listing>ul li.job_listing a div.location,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.location,ul.job_listings li.job_listing a div.location,ul.job_listings li.no_job_listings_found a div.location{float:left;text-align:left;width:25%;padding:0 0 0 1em;color:#999;line-height:1.5em}.rp4wp-related-job_listing>ul li.job_listing a .meta,.rp4wp-related-job_listing>ul li.no_job_listings_found a .meta,ul.job_listings li.job_listing a .meta,ul.job_listings li.no_job_listings_found a .meta{float:right;text-align:right;width:20%;padding:0 0 0 1em;margin:0;line-height:1.5em;color:#999;list-style:none outside}.rp4wp-related-job_listing>ul li.job_listing a .meta li,.rp4wp-related-job_listing>ul li.no_job_listings_found a .meta li,ul.job_listings li.job_listing a .meta li,ul.job_listings li.no_job_listings_found a .meta li{list-style:none outside;display:block;margin:0}.rp4wp-related-job_listing>ul li.job_listing a .meta .job-type,.rp4wp-related-job_listing>ul li.no_job_listings_found a .meta .job-type,ul.job_listings li.job_listing a .meta .job-type,ul.job_listings li.no_job_listings_found a .meta .job-type{font-weight:700}.rp4wp-related-job_listing>ul li.job_listing.job_position_featured a,.rp4wp-related-job_listing>ul li.no_job_listings_found.job_position_featured a,ul.job_listings li.job_listing.job_position_featured a,ul.job_listings li.no_job_listings_found.job_position_featured a{background:#fefee5}.rp4wp-related-job_listing>ul li.job_listing.job_position_featured a:focus,.rp4wp-related-job_listing>ul li.job_listing.job_position_featured a:hover,.rp4wp-related-job_listing>ul li.no_job_listings_found.job_position_featured a:focus,.rp4wp-related-job_listing>ul li.no_job_listings_found.job_position_featured a:hover,ul.job_listings li.job_listing.job_position_featured a:focus,ul.job_listings li.job_listing.job_position_featured a:hover,ul.job_listings li.no_job_listings_found.job_position_featured a:focus,ul.job_listings li.no_job_listings_found.job_position_featured a:hover{background-color:#fefed8}.widget ul.job_listings li.job_listing a{padding:1em 0}.widget ul.job_listings li.job_listing .image{float:left}.widget ul.job_listings li.job_listing .image img{left:0;position:relative}.widget ul.job_listings li.job_listing .content{overflow:hidden}.widget ul.job_listings li.job_listing .position{float:none;width:auto;padding:0}.widget ul.job_listings li.job_listing ul.meta{float:none;width:auto;padding:0;margin:0;text-align:left}.widget ul.job_listings li.job_listing ul.meta li{float:none;display:inline;padding:0;margin:0 .5em 0 0;font-weight:400}.widget ul.job_listings li.job_listing ul.meta li:after{padding:0 0 0 .5em;content:"\2023"}.widget ul.job_listings li.job_listing ul.meta li:last-child:after{content:''}.job-manager .job-type,.job-types .job-type,.job_listing .job-type{color:#f08d3c}.job-manager .full-time,.job-types .full-time,.job_listing .full-time{color:#90da36}.job-manager .part-time,.job-types .part-time,.job_listing .part-time{color:#f08d3c}.job-manager .temporary,.job-types .temporary,.job_listing .temporary{color:#d93674}.job-manager .freelance,.job-types .freelance,.job_listing .freelance{color:#39c}.job-manager .internship,.job-types .internship,.job_listing .internship{color:#6033cc}@media only screen and (max-width:767px){ul.job_listings li.job_listing a,ul.job_listings li.no_job_listings_found a{padding:1em}ul.job_listings li.job_listing a img.company_logo,ul.job_listings li.no_job_listings_found a img.company_logo{visibility:hidden}ul.job_listings li.job_listing a div.position,ul.job_listings li.no_job_listings_found a div.position{float:left;width:60%;padding:0}ul.job_listings li.job_listing a div.location,ul.job_listings li.no_job_listings_found a div.location{float:right;width:40%;line-height:2em;font-size:.75em;padding:0 0 0 1em;text-align:right}ul.job_listings li.job_listing a .meta,ul.job_listings li.no_job_listings_found a .meta{float:right;width:40%;line-height:2em;font-size:.75em}ul.job_listings li.job_listing a .meta li,ul.job_listings li.no_job_listings_found a .meta li{font-size:1em}}.twenty-eleven ul.job_listings li.job_listing,.twenty-eleven ul.job_listings li.no_job_listings_found{padding:0!important}.display-icon{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0}.job-manager-error,.job-manager-info,.job-manager-message{padding:1em 2em 1em 3.5em!important;margin:0 0 2em!important;position:relative;background-color:#fff;color:#666;border-top:3px solid #999;list-style:none outside!important;width:auto;zoom:1;box-shadow:0 1px 1px rgba(0,0,0,.2)}.job-manager-error:after,.job-manager-error:before,.job-manager-info:after,.job-manager-info:before,.job-manager-message:after,.job-manager-message:before{content:"";display:table}.job-manager-error:after,.job-manager-info:after,.job-manager-message:after{clear:both}.job-manager-error:before,.job-manager-info:before,.job-manager-message:before{content:"";font-family:sans-serif;display:inline-block;position:absolute;top:1em;left:1.5em}.job-manager-error li,.job-manager-info li,.job-manager-message li{list-style:none outside!important;padding-left:0!important;margin-left:0!important}.job-manager-error.job-manager-message,.job-manager-info.job-manager-message,.job-manager-message.job-manager-message{border-top-color:#8fae1b}.job-manager-error.job-manager-message:before,.job-manager-info.job-manager-message:before,.job-manager-message.job-manager-message:before{color:#8fae1b;content:"\2713"}.job-manager-error.job-manager-info,.job-manager-info.job-manager-info,.job-manager-message.job-manager-info{border-top-color:#1e85be}.job-manager-error.job-manager-info:before,.job-manager-info.job-manager-info:before,.job-manager-message.job-manager-info:before{color:#1e85be;content:"i";font-family:Times,Georgia,serif;font-style:italic}.job-manager-error.job-manager-error,.job-manager-info.job-manager-error,.job-manager-message.job-manager-error{border-top-color:#b81c23}.job-manager-error.job-manager-error:before,.job-manager-info.job-manager-error:before,.job-manager-message.job-manager-error:before{color:#b81c23;content:"\00d7";font-weight:700}.job-manager-form fieldset{margin:0 0 1em 0;padding:0 0 1em 0;line-height:2em;border:0;border-bottom:1px solid #eee;zoom:1}.job-manager-form fieldset:after,.job-manager-form fieldset:before{content:"";display:table}.job-manager-form fieldset:after{clear:both}.job-manager-form fieldset label{display:block;margin:0;width:29%;float:left;vertical-align:middle}.job-manager-form fieldset label small{opacity:.75;font-size:.83em}.job-manager-form fieldset div.field{width:70%;float:right;vertical-align:middle}.job-manager-form fieldset .wp-editor-container{border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.job-manager-form fieldset .account-sign-in .button{margin-right:.5em}.job-manager-form fieldset .account-sign-in .button:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e808'}.job-manager-form fieldset abbr.required{color:red;font-weight:700;border:0}.job-manager-form fieldset input.input-text,.job-manager-form fieldset select,.job-manager-form fieldset textarea{margin:0;vertical-align:middle;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job-manager-form fieldset small.description{opacity:.75;font-size:.83em;margin:1.2em 0 0 0;display:block;line-height:1.2em}.job-manager-form fieldset .job-manager-uploaded-files{display:table}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file{line-height:2em;font-style:italic;margin-bottom:1em;display:block}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file .job-manager-uploaded-file-preview img{height:64px;margin:0;vertical-align:top}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file .job-manager-uploaded-file-preview a{line-height:64px;display:inline-block;padding:0 0 0 1em}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file .job-manager-uploaded-file-name{display:block}.job-manager-form .submit-job{padding:1em 0}.job-manager-form .job-manager-term-checklist{list-style:none outside;max-height:200px;overflow:auto;margin:0}.job-manager-form .job-manager-term-checklist li{list-style:none outside;margin:0;display:block;float:none}.job-manager-form .job-manager-term-checklist li label{width:auto;float:none}.job-manager-form .job-manager-term-checklist li li{margin:0 0 0 2em}.job-manager-form input[type=submit].disabled,.job-manager-form input[type=submit]:disabled{opacity:.5;cursor:not-allowed}.job-manager-form .spinner{background:url(../../../../../wp-includes/images/spinner.gif) no-repeat;background-size:20px 20px;display:inline-block;visibility:hidden;width:20px;height:20px;margin:0;vertical-align:middle}.job-manager-form .spinner.is-active{visibility:visible}div.job_listings{margin-bottom:1em}div.job_listings ul.job_listings{margin:0}.single_job_listing .company{position:relative;border:1px solid #eee;padding:1em;margin:0 0 2em;display:block;clear:both;min-height:3em;box-shadow:0 1px 1px rgba(0,0,0,.1)}.single_job_listing .company img{width:3em;height:3em;position:absolute;left:1em;float:left;vertical-align:middle;box-shadow:none}.single_job_listing .company .name{margin:0 0 0 3em;padding:0 0 0 1em;line-height:1.5em}.single_job_listing .company .name a{float:right;margin-left:1em}.single_job_listing .company .tagline{display:block;margin:0 0 0 42px;padding:0 0 0 1em;line-height:1.5em;font-style:italic;color:#999}.single_job_listing .company .website:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e809'}.single_job_listing .company .company_twitter:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e80a'}.single_job_listing .company .company_video{border-top:1px solid #eee;padding:1em 0 0;margin:1em 0 0 0;position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.single_job_listing .company .company_video embed,.single_job_listing .company .company_video iframe,.single_job_listing .company .company_video object{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;display:block}.single_job_listing .meta{list-style:none outside;padding:0;margin:0 0 1.5em;overflow:hidden;zoom:1;clear:both}.single_job_listing .meta li{margin:0 1em 0 0;padding:.5em;float:left;line-height:1em;color:#999}.single_job_listing .meta .job-type{color:#fff;background-color:#f08d3c}.single_job_listing .meta .full-time{background-color:#90da36}.single_job_listing .meta .part-time{background-color:#f08d3c}.single_job_listing .meta .temporary{background-color:#d93674}.single_job_listing .meta .freelance{background-color:#39c}.single_job_listing .meta .internship{background-color:#6033cc}.single_job_listing .meta .listing-expired,.single_job_listing .meta .position-filled{color:#b81c23}.single_job_listing .meta .location:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e81d'}.single_job_listing .meta .date-posted:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e80f'}.single_job_listing .meta .listing-expired:before,.single_job_listing .meta .position-filled:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e80e'}.single_job_listing .job_description{margin:0 0 1.5em}.job-manager-application-wrapper{clear:both;border:1px solid #eee;padding:.75em 1em 0;margin:1em 0;line-height:1.5em;display:block;position:relative;box-shadow:0 1px 1px rgba(0,0,0,.1)}.job-manager-application-wrapper .application,.single_job_listing .application{padding:0;margin:0 0 1em;overflow:hidden}.job-manager-application-wrapper .application .application_button,.job-manager-application-wrapper .application .application_details,.single_job_listing .application .application_button,.single_job_listing .application .application_details{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job-manager-application-wrapper .application .application_button,.single_job_listing .application .application_button{text-align:center;font-size:1.1em;line-height:1em;display:inline-block;margin:0 .5em 0 0;padding:.90909091em 2em;outline:0}.job-manager-application-wrapper .application .application_details,.single_job_listing .application .application_details{clear:both;border:1px solid #eee;padding:.75em 1em 0;margin:1em 0;line-height:1.5em;display:block;position:relative;box-shadow:0 1px 1px rgba(0,0,0,.1)}.job-manager-application-wrapper .application .application_details p,.single_job_listing .application .application_details p{margin:0 0 .75em}.job-manager-application-wrapper .application .application_details:before,.single_job_listing .application .application_details:before{content:"";position:absolute;margin:-10px 0 0 0;top:0;left:5em;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #eee}.job-manager-application-wrapper .application .application_details:after,.single_job_listing .application .application_details:after{content:"";position:absolute;margin:-9px 0 0 1px;left:5em;top:0;width:0;height:0;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid #fff}.job_filters{background:#eee;zoom:1}.job_filters:after,.job_filters:before{content:"";display:table}.job_filters:after{clear:both}.job_filters .search_jobs{padding:1em;zoom:1}.job_filters .search_jobs:after,.job_filters .search_jobs:before{content:"";display:table}.job_filters .search_jobs:after{clear:both}.job_filters .search_jobs div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job_filters .search_jobs div label{display:none}.job_filters .search_jobs div.filter_first,.job_filters .search_jobs div.search_keywords{float:left;padding-right:.5em;width:50%}.job_filters .search_jobs div.filter_last,.job_filters .search_jobs div.search_location{float:right;padding-left:.5em;width:50%}.job_filters .search_jobs div.filter_wide,.job_filters .search_jobs div.search_categories{padding-top:.5em;clear:both;width:100%}.job_filters .search_jobs div .showing_jobs a{padding:.25em}.job_filters .search_jobs div .showing_jobs a.active{background:#ddd;text-decoration:none}.job_filters .search_jobs input,.job_filters .search_jobs select{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}.job_filters .job_types{list-style:none outside;margin:0;padding:0;font-size:.83em;background:#f9f9f9;border-top:1px solid #e5e5e5;zoom:1}.job_filters .job_types:after,.job_filters .job_types:before{content:"";display:table}.job_filters .job_types:after{clear:both}.job_filters .job_types li{margin:0;padding:.5em 1em;float:left;border-right:1px solid #eee}.job_filters .job_types li:last-child{border-right:0}.job_filters .showing_jobs{padding:.5em 1em;display:none;font-size:.83em;background:#f9f9f9;border-top:1px solid #e5e5e5}.job_filters .showing_jobs a{float:right;padding-left:10px;border:0}div.job_listings .job-manager-pagination{text-align:center;display:block;padding:1em 0 1em 0;border-bottom:1px solid #eee;line-height:1}div.job_listings .load_previous{border-top:1px solid #eee}div.job_listings .load_more_jobs+ul.job_listings{border-top:0}div.job_listings .load_more_jobs{text-align:center;display:block;padding:1em 1em 1em 2em;border-bottom:1px solid #eee;font-weight:700}div.job_listings .load_more_jobs.loading{background:url(../images/ajax-loader.gif) no-repeat center}div.job_listings .load_more_jobs.loading strong{visibility:hidden}div.job_listings .load_more_jobs:focus,div.job_listings .load_more_jobs:hover{background-color:#fcfcfc;border-bottom:1px solid #eee}.job_listing_preview{padding:0 1em 1em;border:5px solid #eee}.single-job_listing .entry-header .attachment-post-thumbnail,.single-job_listing .job_listing.has-post-thumbnail .post-thumbnail{display:none}.entry-content .job_listing_preview_title,.job_listing_preview_title{padding:.5em 1em;vertical-align:middle;position:relative;background:#eee}.entry-content .job_listing_preview_title h2,.job_listing_preview_title h2{margin:0;clear:none}.entry-content .job_listing_preview_title .button,.job_listing_preview_title .button{float:right;margin-left:.25em}.job_summary_shortcode{border:1px solid #ccc;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;text-align:center;position:relative;box-shadow:0 2px 4px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.4);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job_summary_shortcode.aligncenter{display:block;margin:2em auto 2em}.job_summary_shortcode.alignleft{float:left;margin:0 2em 2em 0}.job_summary_shortcode.alignright{float:right;margin:0 0 2em 2em}.job_summary_shortcode a{text-decoration:none;color:inherit}.job_summary_shortcode img{margin:0;padding:0;display:block;width:100%;-moz-border-radius:0;-webkit-border-radius:0;-moz-border-top-left-radius:3px;-moz-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-radius:0;border-top-left-radius:3px;border-top-right-radius:3px;box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}.job_summary_shortcode .job_summary_content{padding:0 1em}.job_summary_shortcode .meta{font-style:italic;color:#777}.job_summary_shortcode .job-type{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em;color:#fff;text-shadow:0 1px 0 rgba(255,255,255,.5);box-shadow:0 2px 4px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.4);position:absolute;top:0;right:0;padding:.5em;height:1em;width:auto;min-width:1em;font-size:1em;text-align:center;vertical-align:middle;line-height:1em;margin:-.5em -.5em 0 0}.job_summary_shortcode .job-type.full-time{background-color:#90da36}.job_summary_shortcode .job-type.part-time{background-color:#f08d3c}.job_summary_shortcode .job-type.temporary{background-color:#d93674}.job_summary_shortcode .job-type.freelance{background-color:#39c}.job_summary_shortcode .job-type.internship{background-color:#6033cc}#job-manager-job-dashboard .account-sign-in .button{margin-right:.5em}#job-manager-job-dashboard .account-sign-in .button:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e808'}#job-manager-job-dashboard table ul.job-dashboard-actions{margin:0;padding:0;visibility:hidden;font-size:.92em}#job-manager-job-dashboard table ul.job-dashboard-actions li{float:none;display:inline;padding:0;margin:0 .5em 0 0;font-weight:400;list-style:none outside}#job-manager-job-dashboard table ul.job-dashboard-actions li:after{padding:0 0 0 .5em;content:"\2023"}#job-manager-job-dashboard table ul.job-dashboard-actions li:last-child:after{content:''}#job-manager-job-dashboard table ul.job-dashboard-actions li .job-dashboard-action-delete{color:red}#job-manager-job-dashboard table tr:focus ul.job-dashboard-actions,#job-manager-job-dashboard table tr:hover ul.job-dashboard-actions{visibility:visible}#job-manager-job-dashboard table td,#job-manager-job-dashboard table th{padding:.5em 1em .5em 0}#job-manager-job-dashboard table .job_title small{color:#999}#job-manager-job-dashboard table .featured-job-icon:before{content:'\e803';font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}#job-manager-job-dashboard table .applications,#job-manager-job-dashboard table .expires,#job-manager-job-dashboard table .filled{text-align:center}#content nav.job-manager-pagination,nav.job-manager-pagination{text-align:center}#content nav.job-manager-pagination ul,nav.job-manager-pagination ul{display:inline-block;white-space:nowrap;padding:0;clear:both;border-left:1px solid #eee;margin:1px}#content nav.job-manager-pagination ul li,nav.job-manager-pagination ul li{border-right:1px solid #eee;border-top:1px solid #eee;border-bottom:1px solid #eee;padding:0;margin:0;float:left;display:inline;overflow:hidden}#content nav.job-manager-pagination ul li a,#content nav.job-manager-pagination ul li span,nav.job-manager-pagination ul li a,nav.job-manager-pagination ul li span{margin:0;text-decoration:none;padding:0;line-height:1em;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block;border:0}#content nav.job-manager-pagination ul li a:focus,#content nav.job-manager-pagination ul li a:hover,#content nav.job-manager-pagination ul li span.current,nav.job-manager-pagination ul li a:focus,nav.job-manager-pagination ul li a:hover,nav.job-manager-pagination ul li span.current{background:#eee;color:#888}.chosen-container{width:100%!important}.twenty-ten .chosen-choices,.twenty-ten .job_types{margin:0!important}.rtl .job-manager-form label{float:right}.rtl .job-manager-form div.field{float:left}.rtl .entry-content .job_listing_preview_title .button,.rtl .job_listing_preview_title .button{float:left}.rtl .single_job_listing .meta li{float:right;margin:0 0 0 1em}
|
1 |
+
.clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}@font-face{font-family:job-manager;src:url(../font/job-manager.eot?4963673);src:url(../font/job-manager.eot?4963673#iefix) format('embedded-opentype'),url(../font/job-manager.woff?4963673) format('woff'),url(../font/job-manager.ttf?4963673) format('truetype'),url(../font/job-manager.svg?4963673#job-manager) format('svg');font-weight:400;font-style:normal}@font-face{font-family:jm-logo;src:url(../font/jm-logo/jm.eot?ycsbky);src:url(../font/jm-logo/jm.eot?#iefixycsbky) format('embedded-opentype'),url(../font/jm-logo/jm.woff?ycsbky) format('woff'),url(../font/jm-logo/jm.ttf?ycsbky) format('truetype'),url(../font/jm-logo/jm.svg?ycsbky#icomoon) format('svg');font-weight:400;font-style:normal}.jm-icon{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.rp4wp-related-job_listing>ul,ul.job_listings{padding:0;margin:0;border-top:1px solid #eee}.rp4wp-related-job_listing>ul.loading,ul.job_listings.loading{min-height:96px;border-bottom:1px solid #eee;background:url(../images/ajax-loader.gif) no-repeat center 32px}.rp4wp-related-job_listing>ul li.job_listing,.rp4wp-related-job_listing>ul li.no_job_listings_found,ul.job_listings li.job_listing,ul.job_listings li.no_job_listings_found{list-style:none outside;padding:0;margin:0;border-bottom:1px solid #eee}.rp4wp-related-job_listing>ul li.job_listing.job_position_filled a,.rp4wp-related-job_listing>ul li.no_job_listings_found.job_position_filled a,ul.job_listings li.job_listing.job_position_filled a,ul.job_listings li.no_job_listings_found.job_position_filled a{opacity:.25}.rp4wp-related-job_listing>ul li.job_listing.no_job_listings_found,.rp4wp-related-job_listing>ul li.no_job_listings_found.no_job_listings_found,ul.job_listings li.job_listing.no_job_listings_found,ul.job_listings li.no_job_listings_found.no_job_listings_found{padding:1em;border-bottom:1px solid #eee}.rp4wp-related-job_listing>ul li.job_listing a,.rp4wp-related-job_listing>ul li.no_job_listings_found a,ul.job_listings li.job_listing a,ul.job_listings li.no_job_listings_found a{display:block;padding:1em 1em 1em 2em;border:0;overflow:hidden;zoom:1;position:relative;line-height:1.5em;text-decoration:none}.rp4wp-related-job_listing>ul li.job_listing a:focus,.rp4wp-related-job_listing>ul li.job_listing a:hover,.rp4wp-related-job_listing>ul li.no_job_listings_found a:focus,.rp4wp-related-job_listing>ul li.no_job_listings_found a:hover,ul.job_listings li.job_listing a:focus,ul.job_listings li.job_listing a:hover,ul.job_listings li.no_job_listings_found a:focus,ul.job_listings li.no_job_listings_found a:hover{background-color:#fcfcfc}.rp4wp-related-job_listing>ul li.job_listing a img.company_logo,.rp4wp-related-job_listing>ul li.no_job_listings_found a img.company_logo,ul.job_listings li.job_listing a img.company_logo,ul.job_listings li.no_job_listings_found a img.company_logo{width:42px;height:42px;position:absolute;left:1em;float:left;margin-right:1em;vertical-align:middle;box-shadow:none}.rp4wp-related-job_listing>ul li.job_listing a div.location,.rp4wp-related-job_listing>ul li.job_listing a div.position,.rp4wp-related-job_listing>ul li.job_listing a ul.meta,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.location,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position,.rp4wp-related-job_listing>ul li.no_job_listings_found a ul.meta,ul.job_listings li.job_listing a div.location,ul.job_listings li.job_listing a div.position,ul.job_listings li.job_listing a ul.meta,ul.job_listings li.no_job_listings_found a div.location,ul.job_listings li.no_job_listings_found a div.position,ul.job_listings li.no_job_listings_found a ul.meta{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.rp4wp-related-job_listing>ul li.job_listing a div.position,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position,ul.job_listings li.job_listing a div.position,ul.job_listings li.no_job_listings_found a div.position{float:left;width:55%;padding:0 0 0 42px;line-height:1.5em}.rp4wp-related-job_listing>ul li.job_listing a div.position h3,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position h3,ul.job_listings li.job_listing a div.position h3,ul.job_listings li.no_job_listings_found a div.position h3{margin:0;padding:0;line-height:inherit;font-size:inherit}.rp4wp-related-job_listing>ul li.job_listing a div.position .company,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position .company,ul.job_listings li.job_listing a div.position .company,ul.job_listings li.no_job_listings_found a div.position .company{color:#999}.rp4wp-related-job_listing>ul li.job_listing a div.position .company .tagline,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.position .company .tagline,ul.job_listings li.job_listing a div.position .company .tagline,ul.job_listings li.no_job_listings_found a div.position .company .tagline{margin-left:.5em}.rp4wp-related-job_listing>ul li.job_listing a div.location,.rp4wp-related-job_listing>ul li.no_job_listings_found a div.location,ul.job_listings li.job_listing a div.location,ul.job_listings li.no_job_listings_found a div.location{float:left;text-align:left;width:25%;padding:0 0 0 1em;color:#999;line-height:1.5em}.rp4wp-related-job_listing>ul li.job_listing a .meta,.rp4wp-related-job_listing>ul li.no_job_listings_found a .meta,ul.job_listings li.job_listing a .meta,ul.job_listings li.no_job_listings_found a .meta{float:right;text-align:right;width:20%;padding:0 0 0 1em;margin:0;line-height:1.5em;color:#999;list-style:none outside}.rp4wp-related-job_listing>ul li.job_listing a .meta li,.rp4wp-related-job_listing>ul li.no_job_listings_found a .meta li,ul.job_listings li.job_listing a .meta li,ul.job_listings li.no_job_listings_found a .meta li{list-style:none outside;display:block;margin:0}.rp4wp-related-job_listing>ul li.job_listing a .meta .job-type,.rp4wp-related-job_listing>ul li.no_job_listings_found a .meta .job-type,ul.job_listings li.job_listing a .meta .job-type,ul.job_listings li.no_job_listings_found a .meta .job-type{font-weight:700}.rp4wp-related-job_listing>ul li.job_listing.job_position_featured a,.rp4wp-related-job_listing>ul li.no_job_listings_found.job_position_featured a,ul.job_listings li.job_listing.job_position_featured a,ul.job_listings li.no_job_listings_found.job_position_featured a{background:#fefee5}.rp4wp-related-job_listing>ul li.job_listing.job_position_featured a:focus,.rp4wp-related-job_listing>ul li.job_listing.job_position_featured a:hover,.rp4wp-related-job_listing>ul li.no_job_listings_found.job_position_featured a:focus,.rp4wp-related-job_listing>ul li.no_job_listings_found.job_position_featured a:hover,ul.job_listings li.job_listing.job_position_featured a:focus,ul.job_listings li.job_listing.job_position_featured a:hover,ul.job_listings li.no_job_listings_found.job_position_featured a:focus,ul.job_listings li.no_job_listings_found.job_position_featured a:hover{background-color:#fefed8}.widget ul.job_listings li.job_listing a{padding:1em 0}.widget ul.job_listings li.job_listing .image{float:left}.widget ul.job_listings li.job_listing .image img{left:0;position:relative}.widget ul.job_listings li.job_listing .content{overflow:hidden}.widget ul.job_listings li.job_listing .position{float:none;width:auto;padding:0}.widget ul.job_listings li.job_listing ul.meta{float:none;width:auto;padding:0;margin:0;text-align:left}.widget ul.job_listings li.job_listing ul.meta li{float:none;display:inline;padding:0;margin:0 .5em 0 0;font-weight:400}.widget ul.job_listings li.job_listing ul.meta li:after{padding:0 0 0 .5em;content:"\2023"}.widget ul.job_listings li.job_listing ul.meta li:last-child:after{content:''}.job-manager .job-type,.job-types .job-type,.job_listing .job-type{color:#f08d3c}.job-manager .full-time,.job-types .full-time,.job_listing .full-time{color:#90da36}.job-manager .part-time,.job-types .part-time,.job_listing .part-time{color:#f08d3c}.job-manager .temporary,.job-types .temporary,.job_listing .temporary{color:#d93674}.job-manager .freelance,.job-types .freelance,.job_listing .freelance{color:#39c}.job-manager .internship,.job-types .internship,.job_listing .internship{color:#6033cc}@media only screen and (max-width:767px){ul.job_listings li.job_listing a,ul.job_listings li.no_job_listings_found a{padding:1em}ul.job_listings li.job_listing a img.company_logo,ul.job_listings li.no_job_listings_found a img.company_logo{visibility:hidden}ul.job_listings li.job_listing a div.position,ul.job_listings li.no_job_listings_found a div.position{float:left;width:60%;padding:0}ul.job_listings li.job_listing a div.location,ul.job_listings li.no_job_listings_found a div.location{float:right;width:40%;line-height:2em;font-size:.75em;padding:0 0 0 1em;text-align:right}ul.job_listings li.job_listing a .meta,ul.job_listings li.no_job_listings_found a .meta{float:right;width:40%;line-height:2em;font-size:.75em}ul.job_listings li.job_listing a .meta li,ul.job_listings li.no_job_listings_found a .meta li{font-size:1em}}.twenty-eleven ul.job_listings li.job_listing,.twenty-eleven ul.job_listings li.no_job_listings_found{padding:0!important}.display-icon{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0}.job-manager-error,.job-manager-info,.job-manager-message{padding:1em 2em 1em 3.5em!important;margin:0 0 2em!important;position:relative;background-color:#fff;color:#666;border-top:3px solid #999;list-style:none outside!important;width:auto;zoom:1;box-shadow:0 1px 1px rgba(0,0,0,.2)}.job-manager-error:after,.job-manager-error:before,.job-manager-info:after,.job-manager-info:before,.job-manager-message:after,.job-manager-message:before{content:"";display:table}.job-manager-error:after,.job-manager-info:after,.job-manager-message:after{clear:both}.job-manager-error:before,.job-manager-info:before,.job-manager-message:before{content:"";font-family:sans-serif;display:inline-block;position:absolute;top:1em;left:1.5em}.job-manager-error li,.job-manager-info li,.job-manager-message li{list-style:none outside!important;padding-left:0!important;margin-left:0!important}.job-manager-error.job-manager-message,.job-manager-info.job-manager-message,.job-manager-message.job-manager-message{border-top-color:#8fae1b}.job-manager-error.job-manager-message:before,.job-manager-info.job-manager-message:before,.job-manager-message.job-manager-message:before{color:#8fae1b;content:"\2713"}.job-manager-error.job-manager-info,.job-manager-info.job-manager-info,.job-manager-message.job-manager-info{border-top-color:#1e85be}.job-manager-error.job-manager-info:before,.job-manager-info.job-manager-info:before,.job-manager-message.job-manager-info:before{color:#1e85be;content:"i";font-family:Times,Georgia,serif;font-style:italic}.job-manager-error.job-manager-error,.job-manager-info.job-manager-error,.job-manager-message.job-manager-error{border-top-color:#b81c23}.job-manager-error.job-manager-error:before,.job-manager-info.job-manager-error:before,.job-manager-message.job-manager-error:before{color:#b81c23;content:"\00d7";font-weight:700}.job-manager-form fieldset{margin:0 0 1em 0;padding:0 0 1em 0;line-height:2em;border:0;border-bottom:1px solid #eee;zoom:1}.job-manager-form fieldset:after,.job-manager-form fieldset:before{content:"";display:table}.job-manager-form fieldset:after{clear:both}.job-manager-form fieldset label{display:block;margin:0;width:29%;float:left;vertical-align:middle}.job-manager-form fieldset label small{opacity:.75;font-size:.83em}.job-manager-form fieldset div.field{width:70%;float:right;vertical-align:middle}.job-manager-form fieldset .wp-editor-container{border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.job-manager-form fieldset .account-sign-in .button{margin-right:.5em}.job-manager-form fieldset .account-sign-in .button:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e808'}.job-manager-form fieldset abbr.required{color:red;font-weight:700;border:0}.job-manager-form fieldset input.input-text,.job-manager-form fieldset select,.job-manager-form fieldset textarea{margin:0;vertical-align:middle;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job-manager-form fieldset small.description{opacity:.75;font-size:.83em;margin:1.2em 0 0 0;display:block;line-height:1.2em}.job-manager-form fieldset .job-manager-uploaded-files{display:table}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file{line-height:2em;font-style:italic;margin-bottom:1em;display:block}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file .job-manager-uploaded-file-preview img{height:64px;margin:0;vertical-align:top}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file .job-manager-uploaded-file-preview a{line-height:64px;display:inline-block;padding:0 0 0 1em}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file .job-manager-uploaded-file-name{display:block}.job-manager-form .submit-job{padding:1em 0}.job-manager-form .job-manager-term-checklist{list-style:none outside;max-height:200px;overflow:auto;margin:0}.job-manager-form .job-manager-term-checklist li{list-style:none outside;margin:0;display:block;float:none}.job-manager-form .job-manager-term-checklist li label{width:auto;float:none}.job-manager-form .job-manager-term-checklist li li{margin:0 0 0 2em}.job-manager-form input[type=submit].disabled,.job-manager-form input[type=submit]:disabled{opacity:.5;cursor:not-allowed}.job-manager-form .spinner{background-repeat:no-repeat;background-size:20px 20px;display:inline-block;visibility:hidden;width:20px;height:20px;margin:0;vertical-align:middle}.job-manager-form .spinner.is-active{visibility:visible}div.job_listings{margin-bottom:1em}div.job_listings ul.job_listings{margin:0}.single_job_listing .company{position:relative;border:1px solid #eee;padding:1em;margin:0 0 2em;display:block;clear:both;min-height:3em;box-shadow:0 1px 1px rgba(0,0,0,.1)}.single_job_listing .company img{width:3em;height:3em;position:absolute;left:1em;float:left;vertical-align:middle;box-shadow:none}.single_job_listing .company .name{margin:0 0 0 3em;padding:0 0 0 1em;line-height:1.5em}.single_job_listing .company .name a{float:right;margin-left:1em}.single_job_listing .company .tagline{display:block;margin:0 0 0 3em;padding:0 0 0 1em;line-height:1.5em;font-style:italic;color:#999}.single_job_listing .company .website:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e809'}.single_job_listing .company .company_twitter:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e80a'}.single_job_listing .company .company_video{border-top:1px solid #eee;padding:1em 0 0;margin:1em 0 0 0;position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.single_job_listing .company .company_video embed,.single_job_listing .company .company_video iframe,.single_job_listing .company .company_video object{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;display:block}.single_job_listing .meta{list-style:none outside;padding:0;margin:0 0 1.5em;overflow:hidden;zoom:1;clear:both}.single_job_listing .meta li{margin:0 1em 0 0;padding:.5em;float:left;line-height:1em;color:#999}.single_job_listing .meta .job-type{color:#fff;background-color:#f08d3c}.single_job_listing .meta .full-time{background-color:#90da36}.single_job_listing .meta .part-time{background-color:#f08d3c}.single_job_listing .meta .temporary{background-color:#d93674}.single_job_listing .meta .freelance{background-color:#39c}.single_job_listing .meta .internship{background-color:#6033cc}.single_job_listing .meta .listing-expired,.single_job_listing .meta .position-filled{color:#b81c23}.single_job_listing .meta .location:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e81d'}.single_job_listing .meta .date-posted:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e80f'}.single_job_listing .meta .listing-expired:before,.single_job_listing .meta .position-filled:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e80e'}.single_job_listing .job_description{margin:0 0 1.5em}.job-manager-application-wrapper{clear:both;border:1px solid #eee;padding:.75em 1em 0;margin:1em 0;line-height:1.5em;display:block;position:relative;box-shadow:0 1px 1px rgba(0,0,0,.1)}.job-manager-application-wrapper .application,.single_job_listing .application{padding:0;margin:0 0 1em;overflow:hidden}.job-manager-application-wrapper .application .application_button,.job-manager-application-wrapper .application .application_details,.single_job_listing .application .application_button,.single_job_listing .application .application_details{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job-manager-application-wrapper .application .application_button,.single_job_listing .application .application_button{text-align:center;font-size:1.1em;line-height:1em;display:inline-block;margin:0 .5em 0 0;padding:.90909091em 2em;outline:0}.job-manager-application-wrapper .application .application_details,.single_job_listing .application .application_details{clear:both;border:1px solid #eee;padding:.75em 1em 0;margin:1em 0;line-height:1.5em;display:block;position:relative;box-shadow:0 1px 1px rgba(0,0,0,.1)}.job-manager-application-wrapper .application .application_details p,.single_job_listing .application .application_details p{margin:0 0 .75em}.job-manager-application-wrapper .application .application_details:before,.single_job_listing .application .application_details:before{content:"";position:absolute;margin:-10px 0 0 0;top:0;left:5em;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #eee}.job-manager-application-wrapper .application .application_details:after,.single_job_listing .application .application_details:after{content:"";position:absolute;margin:-9px 0 0 1px;left:5em;top:0;width:0;height:0;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid #fff}.job_filters{background:#eee;zoom:1}.job_filters:after,.job_filters:before{content:"";display:table}.job_filters:after{clear:both}.job_filters .search_jobs{padding:1em;zoom:1}.job_filters .search_jobs:after,.job_filters .search_jobs:before{content:"";display:table}.job_filters .search_jobs:after{clear:both}.job_filters .search_jobs div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job_filters .search_jobs div label{display:none}.job_filters .search_jobs div.filter_first,.job_filters .search_jobs div.search_keywords{float:left;padding-right:.5em;width:50%}.job_filters .search_jobs div.filter_last,.job_filters .search_jobs div.search_location{float:right;padding-left:.5em;width:50%}.job_filters .search_jobs div.filter_wide,.job_filters .search_jobs div.search_categories{padding-top:.5em;clear:both;width:100%}.job_filters .search_jobs div .showing_jobs a{padding:.25em}.job_filters .search_jobs div .showing_jobs a.active{background:#ddd;text-decoration:none}.job_filters .search_jobs input,.job_filters .search_jobs select{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}.job_filters .job_types{list-style:none outside;margin:0;padding:0;font-size:.83em;background:#f9f9f9;border-top:1px solid #e5e5e5;zoom:1}.job_filters .job_types:after,.job_filters .job_types:before{content:"";display:table}.job_filters .job_types:after{clear:both}.job_filters .job_types li{margin:0;padding:.5em 1em;float:left;border-right:1px solid #eee}.job_filters .job_types li:last-child{border-right:0}.job_filters .showing_jobs{padding:.5em 1em;display:none;font-size:.83em;background:#f9f9f9;border-top:1px solid #e5e5e5}.job_filters .showing_jobs a{float:right;padding-left:10px;border:0}div.job_listings .job-manager-pagination{text-align:center;display:block;padding:1em 0 1em 0;border-bottom:1px solid #eee;line-height:1}div.job_listings .load_previous{border-top:1px solid #eee}div.job_listings .load_more_jobs+ul.job_listings{border-top:0}div.job_listings .load_more_jobs{text-align:center;display:block;padding:1em 1em 1em 2em;border-bottom:1px solid #eee;font-weight:700}div.job_listings .load_more_jobs.loading{background:url(../images/ajax-loader.gif) no-repeat center}div.job_listings .load_more_jobs.loading strong{visibility:hidden}div.job_listings .load_more_jobs:focus,div.job_listings .load_more_jobs:hover{background-color:#fcfcfc;border-bottom:1px solid #eee}.job_listing_preview{padding:0 1em 1em;border:5px solid #eee}.single-job_listing .entry-header .attachment-post-thumbnail,.single-job_listing .job_listing.has-post-thumbnail .post-thumbnail{display:none}.entry-content .job_listing_preview_title,.job_listing_preview_title{padding:.5em 1em;vertical-align:middle;position:relative;background:#eee}.entry-content .job_listing_preview_title h2,.job_listing_preview_title h2{margin:0;clear:none}.entry-content .job_listing_preview_title .button,.job_listing_preview_title .button{float:right;margin-left:.25em}.job_summary_shortcode{border:1px solid #ccc;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;text-align:center;position:relative;box-shadow:0 2px 4px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.4);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job_summary_shortcode.aligncenter{display:block;margin:2em auto 2em}.job_summary_shortcode.alignleft{float:left;margin:0 2em 2em 0}.job_summary_shortcode.alignright{float:right;margin:0 0 2em 2em}.job_summary_shortcode a{text-decoration:none;color:inherit}.job_summary_shortcode img{margin:0;padding:0;display:block;width:100%;-moz-border-radius:0;-webkit-border-radius:0;-moz-border-top-left-radius:3px;-moz-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-radius:0;border-top-left-radius:3px;border-top-right-radius:3px;box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}.job_summary_shortcode .job_summary_content{padding:0 1em}.job_summary_shortcode .meta{font-style:italic;color:#777}.job_summary_shortcode .job-type{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em;color:#fff;text-shadow:0 1px 0 rgba(255,255,255,.5);box-shadow:0 2px 4px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.4);position:absolute;top:0;right:0;padding:.5em;height:1em;width:auto;min-width:1em;font-size:1em;text-align:center;vertical-align:middle;line-height:1em;margin:-.5em -.5em 0 0}.job_summary_shortcode .job-type.full-time{background-color:#90da36}.job_summary_shortcode .job-type.part-time{background-color:#f08d3c}.job_summary_shortcode .job-type.temporary{background-color:#d93674}.job_summary_shortcode .job-type.freelance{background-color:#39c}.job_summary_shortcode .job-type.internship{background-color:#6033cc}#job-manager-job-dashboard .account-sign-in .button{margin-right:.5em}#job-manager-job-dashboard .account-sign-in .button:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;content:'\e808'}#job-manager-job-dashboard table ul.job-dashboard-actions{margin:0;padding:0;visibility:hidden;font-size:.92em}#job-manager-job-dashboard table ul.job-dashboard-actions li{float:none;display:inline;padding:0;margin:0 .5em 0 0;font-weight:400;list-style:none outside}#job-manager-job-dashboard table ul.job-dashboard-actions li:after{padding:0 0 0 .5em;content:"\2023"}#job-manager-job-dashboard table ul.job-dashboard-actions li:last-child:after{content:''}#job-manager-job-dashboard table ul.job-dashboard-actions li .job-dashboard-action-delete{color:red}#job-manager-job-dashboard table tr:focus ul.job-dashboard-actions,#job-manager-job-dashboard table tr:hover ul.job-dashboard-actions{visibility:visible}#job-manager-job-dashboard table td,#job-manager-job-dashboard table th{padding:.5em 1em .5em 0}#job-manager-job-dashboard table .job_title small{color:#999}#job-manager-job-dashboard table .featured-job-icon:before{content:'\e803';font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}#job-manager-job-dashboard table .applications,#job-manager-job-dashboard table .expires,#job-manager-job-dashboard table .filled{text-align:center}#content nav.job-manager-pagination,nav.job-manager-pagination{text-align:center}#content nav.job-manager-pagination ul,nav.job-manager-pagination ul{display:inline-block;white-space:nowrap;padding:0;clear:both;border-left:1px solid #eee;margin:1px}#content nav.job-manager-pagination ul li,nav.job-manager-pagination ul li{border-right:1px solid #eee;border-top:1px solid #eee;border-bottom:1px solid #eee;padding:0;margin:0;float:left;display:inline;overflow:hidden}#content nav.job-manager-pagination ul li a,#content nav.job-manager-pagination ul li span,nav.job-manager-pagination ul li a,nav.job-manager-pagination ul li span{margin:0;text-decoration:none;padding:0;line-height:1em;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block;border:0}#content nav.job-manager-pagination ul li a:focus,#content nav.job-manager-pagination ul li a:hover,#content nav.job-manager-pagination ul li span.current,nav.job-manager-pagination ul li a:focus,nav.job-manager-pagination ul li a:hover,nav.job-manager-pagination ul li span.current{background:#eee;color:#888}.chosen-container{width:100%!important}.twenty-ten .chosen-choices,.twenty-ten .job_types{margin:0!important}.rtl .job-manager-form label{float:right}.rtl .job-manager-form div.field{float:left}.rtl .entry-content .job_listing_preview_title .button,.rtl .job_listing_preview_title .button{float:left}.rtl .single_job_listing .meta li{float:right;margin:0 0 0 1em}
|
assets/js/admin.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(t){t(".tips, .help_tip").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200}),t("p.form-field-author").on("click","a.change-author",function(){
|
1 |
+
jQuery(document).ready(function(t){t(".tips, .help_tip").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200}),t("p.form-field-author").on("click","a.change-author",function(){t(this).closest("p").find(".current-author").hide();var e=t(this).closest("p").find(".change-author");return e.show(),e.find(":input.wpjm-user-search").trigger("init.user_search"),!1}),t("#wpbody").on("init.user_search",":input.wpjm-user-search",function(){var e={allowClear:!!t(this).data("allow_clear"),placeholder:t(this).data("placeholder"),minimumInputLength:t(this).data("minimum_input_length")?t(this).data("minimum_input_length"):"1",errorLoading:job_manager_admin_params.user_selection_strings.searching,inputTooShort:function(t){var e=t.minimum-t.input.length;return 1===e?job_manager_admin_params.user_selection_strings.input_too_short_1:job_manager_admin_params.user_selection_strings.input_too_short_n.replace("%qty%",e)},loadingMore:function(){return job_manager_admin_params.user_selection_strings.load_more},noResults:function(){return job_manager_admin_params.user_selection_strings.no_matches},searching:function(){return job_manager_admin_params.user_selection_strings.searching},escapeMarkup:function(t){return t},width:"100%",ajax:{url:job_manager_admin_params.ajax_url,dataType:"json",delay:1e3,data:function(t){return{term:t.term,action:"job_manager_search_users",security:job_manager_admin_params.search_users_nonce,page:t.page}},processResults:function(e){var a=[];return e&&e.results&&t.each(e.results,function(t,e){a.push({id:t,text:e})}),{results:a,pagination:{more:e.more}}},cache:!0}};t(this).select2(e)}),t(":input.wpjm-user-search:visible").trigger("init.user_search");var e,a,n;t(document.body).on("click",".wp_job_manager_add_another_file_button",function(e){e.preventDefault();var a=t(this).data("field_name"),n=t(this).data("field_placeholder"),i=t(this).data("uploader_button_text"),r=t(this).data("uploader_button"),o=t(this).data("view_button");t(this).before('<span class="file_url"><input type="text" name="'+a+'[]" placeholder="'+n+'" /><button class="button button-small wp_job_manager_upload_file_button" data-uploader_button_text="'+i+'">'+r+'</button><button class="button button-small wp_job_manager_view_file_button">'+o+"</button></span>")}),t(document.body).on("click",".wp_job_manager_view_file_button",function(e){e.preventDefault(),n=t(this).closest(".file_url");var i=(a=n.find("input")).val();i.indexOf("://")>-1?window.open(i,"_blank"):(a.addClass("file_no_url"),setTimeout(function(){a.removeClass("file_no_url")},1e3))}),t(document.body).on("click",".wp_job_manager_upload_file_button",function(i){i.preventDefault(),n=t(this).closest(".file_url"),a=n.find("input"),e?e.open():((e=wp.media.frames.file_frame=wp.media({title:t(this).data("uploader_title"),button:{text:t(this).data("uploader_button_text")},multiple:!1})).on("select",function(){var n=e.state().get("selection").first().toJSON();t(a).val(n.url)}),e.open())})}),jQuery(document).ready(function(t){var e="job_listing_type";t("#"+e+"checklist li :radio, #"+e+"checklist-pop :radio").live("click",function(){var a=t(this),n=a.is(":checked"),i=a.val();t("#"+e+"checklist li :radio, #"+e+"checklist-pop :radio").prop("checked",!1),t("#in-"+e+"-"+i+", #in-popular-"+e+"-"+i).prop("checked",n)})});
|
assets/js/ajax-filters.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(e){function a(a,t){if(
|
1 |
+
jQuery(document).ready(function(e){function a(a,t){if(o){var i=a.find(".job_filters"),s=e(i).serialize(),r=e("div.job_listings").index(a);window.history.replaceState({id:"job_manager_state",page:t,data:s,index:r},"",n+"#s=1")}}var t=[];if(e(".job_listings").on("update_results",function(a,i,o,n){var s,r,l,d="",g=e(this),_=g.find(".job_filters"),c=g.find(".showing_jobs"),p=g.find(".job_listings"),h=g.data("per_page"),u=g.data("orderby"),f=g.data("order"),m=g.data("featured"),b=g.data("filled"),j=g.data("job_types"),w=g.data("post_status"),v=e("div.job_listings").index(this);if(!(v<0)){if(t[v]&&t[v].abort(),!0===g.data("show_filters")){var y=[];e(':input[name="filter_job_type[]"]:checked, :input[name="filter_job_type[]"][type="hidden"], :input[name="filter_job_type"]',_).each(function(){y.push(e(this).val())}),s=_.find(':input[name^="search_categories"]').map(function(){return e(this).val()}).get(),r="",l="";var k=_.find(':input[name="search_keywords"]'),x=_.find(':input[name="search_location"]');k.val()!==k.attr("placeholder")&&(r=k.val()),x.val()!==x.attr("placeholder")&&(l=x.val()),d={lang:job_manager_ajax_filters.lang,search_keywords:r,search_location:l,search_categories:s,filter_job_type:y,filter_post_status:w,per_page:h,orderby:u,order:f,page:i,featured:m,filled:b,show_pagination:g.data("show_pagination"),form_data:_.serialize()}}else s=g.data("categories"),r=g.data("keywords"),l=g.data("location"),s&&("string"!=typeof s&&(s=String(s)),s=s.split(",")),d={lang:job_manager_ajax_filters.lang,search_categories:s,search_keywords:r,search_location:l,filter_post_status:w,filter_job_type:j,per_page:h,orderby:u,order:f,page:i,featured:m,filled:b,show_pagination:g.data("show_pagination")};t[v]=e.ajax({type:"POST",url:job_manager_ajax_filters.ajax_url.toString().replace("%%endpoint%%","get_listings"),data:d,success:function(a){if(a)try{if(a.showing){var t=jQuery("<span>").html(a.showing);e(c).show().html("").html(a.showing_links).prepend(t)}else e(c).hide();a.showing_all?e(c).addClass("wp-job-manager-showing-all"):e(c).removeClass("wp-job-manager-showing-all"),a.html&&(o&&n?e(p).prepend(a.html):o?e(p).append(a.html):e(p).html(a.html)),!0===g.data("show_pagination")?(g.find(".job-manager-pagination").remove(),a.pagination&&g.append(a.pagination)):(!a.found_jobs||a.max_num_pages<=i?e(".load_more_jobs:not(.load_previous)",g).hide():n||e(".load_more_jobs",g).show(),e(".load_more_jobs",g).removeClass("loading"),e("li.job_listing",p).css("visibility","visible")),e(p).removeClass("loading"),g.triggerHandler("updated_results",a)}catch(e){window.console&&window.console.log(e)}},error:function(e,a,t){window.console&&"abort"!==a&&window.console.log(a+": "+t)},statusCode:{404:function(){window.console&&window.console.log("Error 404: Ajax Endpoint cannot be reached. Go to Settings > Permalinks and save to resolve.")}}})}}),e("#search_keywords, #search_location, .job_types :input, #search_categories, .job-manager-filter").change(function(){var t=e(this).closest("div.job_listings");t.triggerHandler("update_results",[1,!1]),a(t,1)}).on("keyup",function(a){13===a.which&&e(this).trigger("change")}),e(".job_filters").on("click",".reset",function(){var t=e(this).closest("div.job_listings"),i=e(this).closest("form");return i.find(':input[name="search_keywords"], :input[name="search_location"], .job-manager-filter').not(':input[type="hidden"]').val("").trigger("change.select2"),i.find(':input[name^="search_categories"]').not(':input[type="hidden"]').val("").trigger("change.select2"),e(':input[name="filter_job_type[]"]',i).not(':input[type="hidden"]').attr("checked","checked"),t.triggerHandler("reset"),t.triggerHandler("update_results",[1,!1]),a(t,1),!1}),e(document.body).on("click",".load_more_jobs",function(){var t=e(this).closest("div.job_listings"),i=parseInt(e(this).data("page")||1,10),o=!1;return e(this).addClass("loading"),e(this).is(".load_previous")?(o=!0,1===(i-=1)?e(this).remove():e(this).data("page",i)):(i+=1,e(this).data("page",i),a(t,i)),t.triggerHandler("update_results",[i,!0,o]),!1}),e("div.job_listings").on("click",".job-manager-pagination a",function(){var t=e(this).closest("div.job_listings"),i=e(this).data("page");return a(t,i),t.triggerHandler("update_results",[i,!1]),e("body, html").animate({scrollTop:t.offset().top},600),!1}),e.isFunction(e.fn.select2)&&"undefined"!=typeof job_manager_select2_args){var i=job_manager_select2_args;i.allowClear=!0,i.minimumResultsForSearch=10,e('select[name^="search_categories"]:visible').select2(i)}var o=!1;window.history&&window.history.pushState&&(o=!0);var n=document.location.href.split("#")[0];e(window).on("load",function(){e(".job_filters").each(function(){var a=e(this).closest("div.job_listings"),t=a.find(".job_filters"),i=1,o=e("div.job_listings").index(a);if(window.history.state&&window.location.hash){var n=window.history.state;n.id&&"job_manager_state"===n.id&&o===n.index&&(i=n.page,t.deserialize(n.data),t.find(':input[name^="search_categories"]').not(':input[type="hidden"]').trigger("change.select2"))}a.triggerHandler("update_results",[i,!1])})})});
|
assets/js/job-application.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(i){i("body").hasClass("job-application-details-keep-open")||i(".application_details").hide(),i(document.body).on("click",".job_application .application_button",function(){var t=i(this).siblings(".application_details").first(),o=i(this);t.slideToggle(400,function(){if(i(this).is(":visible")){var e=Math.max(Math.min(t.outerHeight(),200),.33*t.outerHeight()),a=t.offset().top+e,n=5;i("#wpadminbar").length>0&&"fixed"===i("#wpadminbar").css("position")&&(n+=i("#wpadminbar").outerHeight()),i("header").length>0&&"fixed"===i("header").css("position")&&(n+=i("header").outerHeight());var s=i(window).scrollTop()+window.innerHeight,l=t.offset().top+t.outerHeight()-s,
|
1 |
+
jQuery(document).ready(function(i){i("body").hasClass("job-application-details-keep-open")||i(".application_details").hide(),i(document.body).on("click",".job_application .application_button",function(){var t=i(this).siblings(".application_details").first(),o=i(this);t.slideToggle(400,function(){if(i(this).is(":visible")){t.trigger("visible");var e=Math.max(Math.min(t.outerHeight(),200),.33*t.outerHeight()),a=t.offset().top+e,n=5;i("#wpadminbar").length>0&&"fixed"===i("#wpadminbar").css("position")&&(n+=i("#wpadminbar").outerHeight()),i("header").length>0&&"fixed"===i("header").css("position")&&(n+=i("header").outerHeight());var s=i(window).scrollTop()+window.innerHeight,l=t.offset().top+t.outerHeight()-s,r=window.innerHeight-n;l>0&&t.outerHeight()<.9*r?i("html, body").animate({scrollTop:i(window).scrollTop()+l+5},400):s<a&&i("html, body").animate({scrollTop:o.offset().top-n},600)}})})});
|
assets/js/multiselect.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(){
|
1 |
+
jQuery(function(e){e.isFunction(e.fn.select2)&&"undefined"!=typeof job_manager_select2_args&&e(".job-manager-multiselect:visible").select2(job_manager_select2_args)});
|
assets/js/select2/select2.full.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o<c.length;o+=1)if(n=p(c[o],t),"require"===(k=n.f))w[o]=q.require(a);else if("exports"===k)w[o]=q.exports(a),v=!0;else if("module"===k)h=w[o]=q.module(a);else if(e(r,k)||e(s,k)||e(u,k))w[o]=j(k);else{if(!n.p)throw new Error(a+" missing "+k);n.p.load(n.n,g(f,!0),i(k),{}),w[o]=r[k]}m=d?d.apply(r[a],w):void 0,a&&(h&&h.exports!==b&&h.exports!==r[a]?r[a]=h.exports:m===b&&v||(r[a]=m))}else a&&(r[a]=d)},a=c=o=function(a,c,d,e,f){if("string"==typeof a)return q[a]?q[a](c):j(p(a,l(c)).f);if(!a.splice){if(t=a,t.deps&&o(t.deps,t.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?n(b,a,c,d):setTimeout(function(){n(b,a,c,d)},4),o},o.config=function(a){return o(a)},a._defined=r,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(r,a)||e(s,a)||(s[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){"function"==typeof b[d]&&("constructor"!==d&&c.push(d))}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){return Array.prototype.unshift.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;c<d;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;c<a;c++){b+=Math.floor(36*Math.random()).toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return(e!==f||"hidden"!==f&&"visible"!==f)&&("scroll"===e||"scroll"===f||(d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth))},c.escapeMarkup=function(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){b.find(".select2-results").append(a)},c.prototype.sort=function(a){return this.options.get("sorter")(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()});b.$results.find(".select2-results__option[aria-selected]").each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):h-g<0&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");if("true"===c.attr("aria-selected"))return void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{}));d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2");a(".select2.select2-container--open").each(function(){var b=a(this);this!=d[0]&&b.data("element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">×</span></li>')},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id;if(b.length>1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||c.which!=b.DELETE&&c.which!=b.BACKSPACE||this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">×</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===e.$search.val()){var b=e.$searchContainer.prev(".select2-selection__choice");if(b.length>0){var d=b.data("data");e.searchRemoveChoice(d),a.preventDefault()}}});var f=document.documentMode,g=f&&f<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(g)return void e.$selection.off("input.search input.searchcheck");e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple")){if(a.selected=!1,c(a.element).is("option"))return a.element.selected=!1,void this.$element.trigger("change");this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})}},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this;this.$element.children().each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),void 0!==a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(null!=(b=c.data(a[0],"data")))return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){return this.options.get("matcher")(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0);if((i.text||"").toUpperCase()===(b.term||"").toUpperCase()||j)return!f&&(a.data=g,void c(a))}if(f)return!0;var k=e.createTag(b);if(null!=k){var l=e.option(k);l.attr("data-select2-tag",!0),e.addOptions([l]),e.insertTag(g,k)}a.results=g,c(a)}var e=this;if(this._removeOldTags(),null==b.term||null!=b.page)return void a.call(this,b,c);a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b);if(!g.$element.find("option").filter(function(){return a(this).val()===c.id}).length){var d=g.option(c);d.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([d])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",b.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return!(a(c.data.results)<this.minimumResultsForSearch)&&b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){return"Please enter "+(a.minimum-a.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}return D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(a){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(a){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var O=k.loadPath(this.defaults.amdLanguageBase+"en"),P=new k(l.language);P.extend(O),l.translations=P}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h<i;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(f=d(this))&&g.push(f)})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;if(this._isInitialized)return void b.call(this,c);this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return b.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},b.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},b.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},b.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},b.prototype.addOptions=function(b,c){var d=a.map(c,function(b){return a.data(b[0],"data")});this._currentData.push.apply(this._currentData,d)},b}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f];b(c.term,g.text,g)||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c,this.options.get("query").call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){c.find(".dropdown-wrapper").append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||n<f)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120==0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
|
assets/js/select2/select2.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
|
assets/js/term-multiselect.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(){
|
1 |
+
jQuery(function(e){e.isFunction(e.fn.select2)&&"undefined"!=typeof job_manager_select2_args&&e(".job-manager-category-dropdown:visible").select2(job_manager_select2_args)});
|
changelog.txt
CHANGED
@@ -1,3 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
= 1.31.3 =
|
2 |
* Fix: Escape the attachment URL. (Props to karimeo)
|
3 |
* Fix: Custom job field priority fix when using decimals. (@tripflex)
|
1 |
+
= 1.32.0 =
|
2 |
+
* Enhancement: Switched from Chosen to Select2 for enhanced dropdown handling and better mobile support. May require theme update.
|
3 |
+
* Enhancement: Draft and unsubmitted job listings now appear in `[job_dashboard]`, allowing users to complete their submission.
|
4 |
+
* Enhancement: Filled and expired positions are now hidden from WordPress search. (@felipeelia)
|
5 |
+
* Enhancement: Adds additional support for the new block editor. Restricted to classic block for compatibility with frontend editor.
|
6 |
+
* Enhancement: Job types can be preselected in `[jobs]` shortcode with `?search_job_type=term-slug`. (@felipeelia)
|
7 |
+
* Enhancement: Author selection in WP admin now uses a searchable dropdown.
|
8 |
+
* Enhancement: Setup wizard is accessed with a flash message instead of an automatic redirect upon activation.
|
9 |
+
* Enhancement: When using supported themes, job listing archive slug can be changed in Permalink settings.
|
10 |
+
* Fix: Company tagline alignment issue with company name. (@0xDELS)
|
11 |
+
* Fix: "Load Previous Listings" link unnecessarily shows up on `[jobs]` shortcode. (@tonytettinger)
|
12 |
+
* Fix: Category selector fixed in the job listings page in WP Admin. (@AmandaJBell)
|
13 |
+
* Fix: Issue with quote encoding on Apply for Job email link.
|
14 |
+
* Fix: Link `target` attributes have been removed in templates.
|
15 |
+
* Dev: Allow for job submission flow to be interrupted using `before` argument on form steps.
|
16 |
+
* Dev: HTML allowed in custom company field labels. (@tripflex)
|
17 |
+
* Dev: Job feed slug name can be customized with the `job_manager_job_feed_name` filter.
|
18 |
+
* Deprecated: Unreleased REST API implementation using `WPJM_REST_API_ENABLED` was replaced with standard WP REST API.
|
19 |
+
|
20 |
= 1.31.3 =
|
21 |
* Fix: Escape the attachment URL. (Props to karimeo)
|
22 |
* Fix: Custom job field priority fix when using decimals. (@tripflex)
|
includes/3rd-party/polylang.php
CHANGED
@@ -65,3 +65,16 @@ function polylang_wpjm_page_id( $page_id ) {
|
|
65 |
return absint( $page_id );
|
66 |
}
|
67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
return absint( $page_id );
|
66 |
}
|
67 |
|
68 |
+
/**
|
69 |
+
* Tells Polylang about ajax requests
|
70 |
+
* The filter is applied *before* the action 'pll_init'
|
71 |
+
*
|
72 |
+
* @since 1.32.0
|
73 |
+
*
|
74 |
+
* @param bool $is_ajax
|
75 |
+
* @return bool
|
76 |
+
*/
|
77 |
+
function polylang_wpjm_doing_ajax( $is_ajax ) {
|
78 |
+
return false === strpos( $_SERVER['REQUEST_URI'], '/jm-ajax/' ) ? $is_ajax : true;
|
79 |
+
}
|
80 |
+
add_filter( 'pll_is_ajax_on_front', 'polylang_wpjm_doing_ajax' );
|
includes/abstracts/abstract-wp-job-manager-form.php
CHANGED
@@ -97,6 +97,15 @@ abstract class WP_Job_Manager_Form {
|
|
97 |
|
98 |
$next_step_key = $this->get_step_key( $this->step );
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
// if the step changed, but the next step has no 'view', call the next handler in sequence.
|
101 |
if ( $next_step_key && $step_key !== $next_step_key && ! is_callable( $this->steps[ $next_step_key ]['view'] ) ) {
|
102 |
$this->process();
|
@@ -374,7 +383,17 @@ abstract class WP_Job_Manager_Form {
|
|
374 |
}
|
375 |
}
|
376 |
|
377 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
378 |
}
|
379 |
|
380 |
/**
|
97 |
|
98 |
$next_step_key = $this->get_step_key( $this->step );
|
99 |
|
100 |
+
// If the next step has a handler to call before going to the view, run it now.
|
101 |
+
if ( $next_step_key
|
102 |
+
&& $step_key !== $next_step_key
|
103 |
+
&& isset( $this->steps[ $next_step_key ]['before'] )
|
104 |
+
&& is_callable( $this->steps[ $next_step_key ]['before'] )
|
105 |
+
) {
|
106 |
+
call_user_func( $this->steps[ $next_step_key ]['before'] );
|
107 |
+
}
|
108 |
+
|
109 |
// if the step changed, but the next step has no 'view', call the next handler in sequence.
|
110 |
if ( $next_step_key && $step_key !== $next_step_key && ! is_callable( $this->steps[ $next_step_key ]['view'] ) ) {
|
111 |
$this->process();
|
383 |
}
|
384 |
}
|
385 |
|
386 |
+
/**
|
387 |
+
* Alter values for posted fields.
|
388 |
+
*
|
389 |
+
* Before submitting or editing a job, alter the posted values before they get stored into the database.
|
390 |
+
*
|
391 |
+
* @since 1.32.0
|
392 |
+
*
|
393 |
+
* @param array $values The values that have been submitted.
|
394 |
+
* @param array $fields The form fields.
|
395 |
+
*/
|
396 |
+
return apply_filters( 'job_manager_get_posted_fields', $values, $this->fields );
|
397 |
}
|
398 |
|
399 |
/**
|
includes/admin/class-wp-job-manager-admin-notices.php
ADDED
@@ -0,0 +1,227 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Handles notices in WP admin.
|
4 |
+
*
|
5 |
+
* @package wp-job-manager
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit; // Exit if accessed directly.
|
10 |
+
}
|
11 |
+
|
12 |
+
/**
|
13 |
+
* WP_Job_Manager_Admin_Notices class.
|
14 |
+
*
|
15 |
+
* @since 1.32.0
|
16 |
+
*/
|
17 |
+
class WP_Job_Manager_Admin_Notices {
|
18 |
+
const STATE_OPTION = 'job_manager_admin_notices';
|
19 |
+
const NOTICE_CORE_SETUP = 'core_setup';
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Current notices for admin user.
|
23 |
+
*
|
24 |
+
* @var array
|
25 |
+
*/
|
26 |
+
private static $notice_state;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Initialize admin notice handling.
|
30 |
+
*/
|
31 |
+
public static function init() {
|
32 |
+
add_action( 'job_manager_init_admin_notices', array( __CLASS__, 'init_core_notices' ) );
|
33 |
+
add_action( 'admin_notices', array( __CLASS__, 'display_notices' ) );
|
34 |
+
add_action( 'wp_loaded', array( __CLASS__, 'dismiss_notices' ) );
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Add a notice to be displayed in WP admin.
|
39 |
+
*
|
40 |
+
* @since 1.32.0
|
41 |
+
*
|
42 |
+
* @param string $notice Name of the notice.
|
43 |
+
*/
|
44 |
+
public static function add_notice( $notice ) {
|
45 |
+
$notice = sanitize_key( $notice );
|
46 |
+
|
47 |
+
if ( ! in_array( $notice, self::get_notice_state() ) ) {
|
48 |
+
self::$notice_state[] = $notice;
|
49 |
+
self::save_notice_state();
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Remove a notice from those displayed in WP admin.
|
55 |
+
*
|
56 |
+
* @since 1.32.0
|
57 |
+
*
|
58 |
+
* @param string $notice Name of the notice.
|
59 |
+
*/
|
60 |
+
public static function remove_notice( $notice ) {
|
61 |
+
$notice_state = self::get_notice_state();
|
62 |
+
$notice = sanitize_key( $notice );
|
63 |
+
|
64 |
+
$notice_key = array_search( $notice, $notice_state, true );
|
65 |
+
if ( false !== $notice_key ) {
|
66 |
+
unset( $notice_state[ $notice_key ] );
|
67 |
+
self::$notice_state = array_values( $notice_state );
|
68 |
+
self::save_notice_state();
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Clears all enqueued notices.
|
74 |
+
*/
|
75 |
+
public static function reset_notices() {
|
76 |
+
self::$notice_state = array();
|
77 |
+
self::save_notice_state();
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Check for a notice to be displayed in WP admin.
|
82 |
+
*
|
83 |
+
* @since 1.32.0
|
84 |
+
*
|
85 |
+
* @param string $notice Name of the notice. Name is not sanitized for this method.
|
86 |
+
* @return bool
|
87 |
+
*/
|
88 |
+
public static function has_notice( $notice ) {
|
89 |
+
$notice_state = self::get_notice_state();
|
90 |
+
return in_array( $notice, $notice_state, true );
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Set up filters for core admin notices.
|
95 |
+
*
|
96 |
+
* Note: For internal use only. Do not call manually.
|
97 |
+
*/
|
98 |
+
public static function init_core_notices() {
|
99 |
+
// core_setup: Notice is used when first activating WP Job Manager.
|
100 |
+
add_action( 'job_manager_admin_notice_' . self::NOTICE_CORE_SETUP, array( __CLASS__, 'display_core_setup' ) );
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Dismiss notices as requested by user. Inspired by WooCommerce's approach.
|
105 |
+
*/
|
106 |
+
public static function dismiss_notices() {
|
107 |
+
if ( isset( $_GET['wpjm_hide_notice'] ) && isset( $_GET['_wpjm_notice_nonce'] ) ) { // WPCS: input var ok, CSRF ok.
|
108 |
+
if ( ! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_wpjm_notice_nonce'] ) ), 'job_manager_hide_notices_nonce' ) ) { // WPCS: input var ok, CSRF ok.
|
109 |
+
wp_die( esc_html__( 'Action failed. Please refresh the page and retry.', 'wp-job-manager' ) );
|
110 |
+
}
|
111 |
+
|
112 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
113 |
+
wp_die( esc_html__( 'You don’t have permission to do this.', 'wp-job-manager' ) );
|
114 |
+
}
|
115 |
+
|
116 |
+
$hide_notice = sanitize_key( wp_unslash( $_GET['wpjm_hide_notice'] ) ); // WPCS: input var ok, CSRF ok.
|
117 |
+
|
118 |
+
self::remove_notice( $hide_notice );
|
119 |
+
wp_redirect( remove_query_arg( array( 'wpjm_hide_notice', '_wpjm_notice_nonce' ), $_SERVER['REQUEST_URI'] ) );
|
120 |
+
}
|
121 |
+
}
|
122 |
+
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Displays notices in WP admin.
|
126 |
+
*
|
127 |
+
* Note: For internal use only. Do not call manually.
|
128 |
+
*/
|
129 |
+
public static function display_notices() {
|
130 |
+
/**
|
131 |
+
* Allows WPJM related plugins to set up their notice hooks.
|
132 |
+
*
|
133 |
+
* @since 1.32.0
|
134 |
+
*/
|
135 |
+
do_action( 'job_manager_init_admin_notices' );
|
136 |
+
|
137 |
+
$notice_state = self::get_notice_state();
|
138 |
+
foreach ( $notice_state as $notice ) {
|
139 |
+
/**
|
140 |
+
* Allows suppression of individual admin notices.
|
141 |
+
*
|
142 |
+
* @since 1.32.0
|
143 |
+
*
|
144 |
+
* @param bool $do_show_notice Set to false to prevent an admin notice from showing up.
|
145 |
+
*/
|
146 |
+
|
147 |
+
if ( ! apply_filters( 'job_manager_show_admin_notice_' . $notice, true ) ) {
|
148 |
+
continue;
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Handle the display of the admin notice.
|
153 |
+
*
|
154 |
+
* @since 1.32.0
|
155 |
+
*/
|
156 |
+
do_action( 'job_manager_admin_notice_' . $notice );
|
157 |
+
}
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Helper for display functions to check if current request is for admin on a job manager screen.
|
162 |
+
*
|
163 |
+
* @param array $additional_screens Screen IDs to also show a notice on.
|
164 |
+
* @return bool
|
165 |
+
*/
|
166 |
+
public static function is_admin_on_standard_job_manager_screen( $additional_screens = array() ) {
|
167 |
+
$screen = get_current_screen();
|
168 |
+
$screen_id = $screen ? $screen->id : '';
|
169 |
+
$show_on_screens = array_merge( array(
|
170 |
+
'edit-job_listing',
|
171 |
+
'edit-job_listing_category',
|
172 |
+
'edit-job_listing_type',
|
173 |
+
'job_listing_page_job-manager-addons',
|
174 |
+
'job_listing_page_job-manager-settings',
|
175 |
+
), $additional_screens );
|
176 |
+
|
177 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
178 |
+
return false;
|
179 |
+
}
|
180 |
+
|
181 |
+
if ( ! in_array( $screen_id, $show_on_screens, true ) ) {
|
182 |
+
return false;
|
183 |
+
}
|
184 |
+
|
185 |
+
return true;
|
186 |
+
}
|
187 |
+
|
188 |
+
/**
|
189 |
+
* Displays the setup wizard notice when WPJM is first activated.
|
190 |
+
*
|
191 |
+
* Note: For internal use only. Do not call manually.
|
192 |
+
*/
|
193 |
+
public static function display_core_setup() {
|
194 |
+
if ( ! self::is_admin_on_standard_job_manager_screen( array( 'plugins', 'dashboard' ) ) ) {
|
195 |
+
return;
|
196 |
+
}
|
197 |
+
include dirname( __FILE__ ) . '/views/html-admin-notice-core-setup.php';
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Gets the current admin notices to be displayed.
|
202 |
+
*
|
203 |
+
* @return array
|
204 |
+
*/
|
205 |
+
private static function get_notice_state() {
|
206 |
+
if ( null === self::$notice_state ) {
|
207 |
+
self::$notice_state = json_decode( get_option( self::STATE_OPTION, '[]' ), true );
|
208 |
+
if ( ! is_array( self::$notice_state ) ) {
|
209 |
+
self::$notice_state = array();
|
210 |
+
}
|
211 |
+
}
|
212 |
+
return self::$notice_state;
|
213 |
+
}
|
214 |
+
|
215 |
+
/**
|
216 |
+
* Saves the notice state on shutdown.
|
217 |
+
*/
|
218 |
+
private static function save_notice_state() {
|
219 |
+
if ( null === self::$notice_state ) {
|
220 |
+
return;
|
221 |
+
}
|
222 |
+
|
223 |
+
update_option( self::STATE_OPTION, wp_json_encode( self::get_notice_state() ), false );
|
224 |
+
}
|
225 |
+
}
|
226 |
+
|
227 |
+
WP_Job_Manager_Admin_Notices::init();
|
includes/admin/class-wp-job-manager-admin.php
CHANGED
@@ -40,6 +40,7 @@ class WP_Job_Manager_Admin {
|
|
40 |
public function __construct() {
|
41 |
global $wp_version;
|
42 |
|
|
|
43 |
include_once dirname( __FILE__ ) . '/class-wp-job-manager-cpt.php';
|
44 |
if ( version_compare( $wp_version, '4.7.0', '<' ) ) {
|
45 |
include_once dirname( __FILE__ ) . '/class-wp-job-manager-cpt-legacy.php';
|
@@ -86,7 +87,7 @@ class WP_Job_Manager_Admin {
|
|
86 |
|
87 |
echo '<div class="error">';
|
88 |
// translators: %s is the URL for the page where users can go to update WordPress.
|
89 |
-
echo '<p>' . wp_kses_post( sprintf( __( '<strong>WP Job Manager</strong> requires a more recent version of WordPress. <a href="%s">Please update
|
90 |
echo '</div>';
|
91 |
}
|
92 |
|
@@ -121,14 +122,33 @@ class WP_Job_Manager_Admin {
|
|
121 |
* Enqueues CSS and JS assets.
|
122 |
*/
|
123 |
public function admin_enqueue_scripts() {
|
124 |
-
|
125 |
|
|
|
126 |
if ( in_array( $screen->id, apply_filters( 'job_manager_admin_screen_ids', array( 'edit-job_listing', 'plugins', 'job_listing', 'job_listing_page_job-manager-settings', 'job_listing_page_job-manager-addons' ) ), true ) ) {
|
127 |
wp_enqueue_style( 'jquery-ui' );
|
|
|
128 |
wp_enqueue_style( 'job_manager_admin_css', JOB_MANAGER_PLUGIN_URL . '/assets/css/admin.css', array(), JOB_MANAGER_VERSION );
|
129 |
wp_register_script( 'jquery-tiptip', JOB_MANAGER_PLUGIN_URL . '/assets/js/jquery-tiptip/jquery.tipTip.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
|
130 |
wp_enqueue_script( 'job_manager_datepicker_js', JOB_MANAGER_PLUGIN_URL . '/assets/js/datepicker.min.js', array( 'jquery', 'jquery-ui-datepicker' ), JOB_MANAGER_VERSION, true );
|
131 |
-
wp_enqueue_script( 'job_manager_admin_js', JOB_MANAGER_PLUGIN_URL . '/assets/js/admin.min.js', array( 'jquery', 'jquery-tiptip' ), JOB_MANAGER_VERSION, true );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
|
133 |
if ( ! function_exists( 'wp_localize_jquery_ui_datepicker' ) || ! has_action( 'admin_enqueue_scripts', 'wp_localize_jquery_ui_datepicker' ) ) {
|
134 |
wp_localize_script(
|
40 |
public function __construct() {
|
41 |
global $wp_version;
|
42 |
|
43 |
+
include_once dirname( __FILE__ ) . '/class-wp-job-manager-admin-notices.php';
|
44 |
include_once dirname( __FILE__ ) . '/class-wp-job-manager-cpt.php';
|
45 |
if ( version_compare( $wp_version, '4.7.0', '<' ) ) {
|
46 |
include_once dirname( __FILE__ ) . '/class-wp-job-manager-cpt-legacy.php';
|
87 |
|
88 |
echo '<div class="error">';
|
89 |
// translators: %s is the URL for the page where users can go to update WordPress.
|
90 |
+
echo '<p>' . wp_kses_post( sprintf( __( '<strong>WP Job Manager</strong> requires a more recent version of WordPress. <a href="%s">Please update WordPress</a> to avoid issues.', 'wp-job-manager' ), esc_url( self_admin_url( 'update-core.php' ) ) ) ) . '</p>';
|
91 |
echo '</div>';
|
92 |
}
|
93 |
|
122 |
* Enqueues CSS and JS assets.
|
123 |
*/
|
124 |
public function admin_enqueue_scripts() {
|
125 |
+
WP_Job_Manager::register_select2_assets();
|
126 |
|
127 |
+
$screen = get_current_screen();
|
128 |
if ( in_array( $screen->id, apply_filters( 'job_manager_admin_screen_ids', array( 'edit-job_listing', 'plugins', 'job_listing', 'job_listing_page_job-manager-settings', 'job_listing_page_job-manager-addons' ) ), true ) ) {
|
129 |
wp_enqueue_style( 'jquery-ui' );
|
130 |
+
wp_enqueue_style( 'select2' );
|
131 |
wp_enqueue_style( 'job_manager_admin_css', JOB_MANAGER_PLUGIN_URL . '/assets/css/admin.css', array(), JOB_MANAGER_VERSION );
|
132 |
wp_register_script( 'jquery-tiptip', JOB_MANAGER_PLUGIN_URL . '/assets/js/jquery-tiptip/jquery.tipTip.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
|
133 |
wp_enqueue_script( 'job_manager_datepicker_js', JOB_MANAGER_PLUGIN_URL . '/assets/js/datepicker.min.js', array( 'jquery', 'jquery-ui-datepicker' ), JOB_MANAGER_VERSION, true );
|
134 |
+
wp_enqueue_script( 'job_manager_admin_js', JOB_MANAGER_PLUGIN_URL . '/assets/js/admin.min.js', array( 'jquery', 'jquery-tiptip', 'select2' ), JOB_MANAGER_VERSION, true );
|
135 |
+
|
136 |
+
wp_localize_script(
|
137 |
+
'job_manager_admin_js',
|
138 |
+
'job_manager_admin_params',
|
139 |
+
array(
|
140 |
+
'user_selection_strings' => array(
|
141 |
+
'no_matches' => _x( 'No matches found', 'user selection', 'wp-job-manager' ),
|
142 |
+
'ajax_error' => _x( 'Loading failed', 'user selection', 'wp-job-manager' ),
|
143 |
+
'input_too_short_1' => _x( 'Please enter 1 or more characters', 'user selection', 'wp-job-manager' ),
|
144 |
+
'input_too_short_n' => _x( 'Please enter %qty% or more characters', 'user selection', 'wp-job-manager' ),
|
145 |
+
'load_more' => _x( 'Loading more results…', 'user selection', 'wp-job-manager' ),
|
146 |
+
'searching' => _x( 'Searching…', 'user selection', 'wp-job-manager' ),
|
147 |
+
),
|
148 |
+
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
149 |
+
'search_users_nonce' => wp_create_nonce( 'search-users' ),
|
150 |
+
)
|
151 |
+
);
|
152 |
|
153 |
if ( ! function_exists( 'wp_localize_jquery_ui_datepicker' ) || ! has_action( 'admin_enqueue_scripts', 'wp_localize_jquery_ui_datepicker' ) ) {
|
154 |
wp_localize_script(
|
includes/admin/class-wp-job-manager-cpt.php
CHANGED
@@ -306,9 +306,17 @@ class WP_Job_Manager_CPT {
|
|
306 |
return;
|
307 |
}
|
308 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
309 |
echo "<select name='job_listing_category' id='dropdown_job_listing_category'>";
|
310 |
echo '<option value="" ' . selected( isset( $_GET['job_listing_category'] ) ? $_GET['job_listing_category'] : '', '', false ) . '>' . esc_html__( 'Select category', 'wp-job-manager' ) . '</option>';
|
311 |
-
echo
|
312 |
echo '</select>';
|
313 |
|
314 |
}
|
306 |
return;
|
307 |
}
|
308 |
|
309 |
+
$allowed_html = array(
|
310 |
+
'option' => array(
|
311 |
+
'value' => array(),
|
312 |
+
'selected' => array(),
|
313 |
+
'class' => array(),
|
314 |
+
),
|
315 |
+
);
|
316 |
+
|
317 |
echo "<select name='job_listing_category' id='dropdown_job_listing_category'>";
|
318 |
echo '<option value="" ' . selected( isset( $_GET['job_listing_category'] ) ? $_GET['job_listing_category'] : '', '', false ) . '>' . esc_html__( 'Select category', 'wp-job-manager' ) . '</option>';
|
319 |
+
echo wp_kses( $walker->walk( $terms, 0, $r ), $allowed_html );
|
320 |
echo '</select>';
|
321 |
|
322 |
}
|
includes/admin/class-wp-job-manager-permalink-settings.php
CHANGED
@@ -76,6 +76,24 @@ class WP_Job_Manager_Permalink_Settings {
|
|
76 |
'permalink',
|
77 |
'optional'
|
78 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
}
|
80 |
|
81 |
/**
|
@@ -118,12 +136,17 @@ class WP_Job_Manager_Permalink_Settings {
|
|
118 |
switch_to_locale( get_locale() );
|
119 |
}
|
120 |
|
121 |
-
$
|
122 |
-
|
123 |
-
$
|
124 |
-
$
|
|
|
|
|
|
|
|
|
|
|
125 |
|
126 |
-
update_option(
|
127 |
|
128 |
if ( function_exists( 'restore_current_locale' ) ) {
|
129 |
restore_current_locale();
|
76 |
'permalink',
|
77 |
'optional'
|
78 |
);
|
79 |
+
if ( current_theme_supports( 'job-manager-templates' ) ) {
|
80 |
+
add_settings_field(
|
81 |
+
'wpjm_job_listings_archive_slug',
|
82 |
+
__( 'Job listing archive page', 'wp-job-manager' ),
|
83 |
+
array( $this, 'job_listings_archive_slug_input' ),
|
84 |
+
'permalink',
|
85 |
+
'optional'
|
86 |
+
);
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Show a slug input box for job listing archive slug.
|
92 |
+
*/
|
93 |
+
public function job_listings_archive_slug_input() {
|
94 |
+
?>
|
95 |
+
<input name="wpjm_job_listings_archive_slug" type="text" class="regular-text code" value="<?php echo esc_attr( $this->permalinks['jobs_archive'] ); ?>" placeholder="<?php echo esc_attr( $this->permalinks['jobs_archive_rewrite_slug'] ); ?>" />
|
96 |
+
<?php
|
97 |
}
|
98 |
|
99 |
/**
|
136 |
switch_to_locale( get_locale() );
|
137 |
}
|
138 |
|
139 |
+
$permalink_settings = WP_Job_Manager_Post_Types::get_raw_permalink_settings();
|
140 |
+
|
141 |
+
$permalink_settings['job_base'] = sanitize_title_with_dashes( $_POST['wpjm_job_base_slug'] );
|
142 |
+
$permalink_settings['category_base'] = sanitize_title_with_dashes( $_POST['wpjm_job_category_slug'] );
|
143 |
+
$permalink_settings['type_base'] = sanitize_title_with_dashes( $_POST['wpjm_job_type_slug'] );
|
144 |
+
|
145 |
+
if ( isset( $_POST['wpjm_job_listings_archive_slug'] ) ) {
|
146 |
+
$permalink_settings['jobs_archive'] = sanitize_title_with_dashes( $_POST['wpjm_job_listings_archive_slug'] );
|
147 |
+
}
|
148 |
|
149 |
+
update_option( WP_Job_Manager_Post_Types::PERMALINK_OPTION_NAME, wp_json_encode( $permalink_settings ) );
|
150 |
|
151 |
if ( function_exists( 'restore_current_locale' ) ) {
|
152 |
restore_current_locale();
|
includes/admin/class-wp-job-manager-setup.php
CHANGED
@@ -39,7 +39,6 @@ class WP_Job_Manager_Setup {
|
|
39 |
public function __construct() {
|
40 |
add_action( 'admin_menu', array( $this, 'admin_menu' ), 12 );
|
41 |
add_action( 'admin_head', array( $this, 'admin_head' ) );
|
42 |
-
add_action( 'admin_init', array( $this, 'redirect' ) );
|
43 |
if ( isset( $_GET['page'] ) && 'job-manager-setup' === $_GET['page'] ) {
|
44 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ), 12 );
|
45 |
}
|
@@ -59,35 +58,6 @@ class WP_Job_Manager_Setup {
|
|
59 |
remove_submenu_page( 'index.php', 'job-manager-setup' );
|
60 |
}
|
61 |
|
62 |
-
/**
|
63 |
-
* Sends user to the setup page on first activation.
|
64 |
-
*/
|
65 |
-
public function redirect() {
|
66 |
-
// Bail if no activation redirect transient is set.
|
67 |
-
if ( ! get_transient( '_job_manager_activation_redirect' ) ) {
|
68 |
-
return;
|
69 |
-
}
|
70 |
-
|
71 |
-
if ( ! current_user_can( 'manage_options' ) ) {
|
72 |
-
return;
|
73 |
-
}
|
74 |
-
|
75 |
-
// Delete the redirect transient.
|
76 |
-
delete_transient( '_job_manager_activation_redirect' );
|
77 |
-
|
78 |
-
// Bail if activating from network, or bulk, or within an iFrame.
|
79 |
-
if ( is_network_admin() || isset( $_GET['activate-multi'] ) || defined( 'IFRAME_REQUEST' ) ) {
|
80 |
-
return;
|
81 |
-
}
|
82 |
-
|
83 |
-
if ( ( isset( $_GET['action'] ) && 'upgrade-plugin' === $_GET['action'] ) && ( isset( $_GET['plugin'] ) && strstr( $_GET['plugin'], 'wp-job-manager.php' ) ) ) {
|
84 |
-
return;
|
85 |
-
}
|
86 |
-
|
87 |
-
wp_redirect( admin_url( 'index.php?page=job-manager-setup' ) );
|
88 |
-
exit;
|
89 |
-
}
|
90 |
-
|
91 |
/**
|
92 |
* Enqueues scripts for setup page.
|
93 |
*/
|
@@ -125,8 +95,10 @@ class WP_Job_Manager_Setup {
|
|
125 |
*/
|
126 |
public function setup_page() {
|
127 |
$usage_tracking = WP_Job_Manager_Usage_Tracking::get_instance();
|
|
|
128 |
|
129 |
if ( 'POST' === $_SERVER['REQUEST_METHOD'] ) {
|
|
|
130 |
$enable = isset( $_POST['job_manager_usage_tracking_enabled'] )
|
131 |
&& '1' === $_POST['job_manager_usage_tracking_enabled'];
|
132 |
|
@@ -137,6 +109,32 @@ class WP_Job_Manager_Setup {
|
|
137 |
$usage_tracking->set_tracking_enabled( $enable );
|
138 |
$usage_tracking->hide_tracking_opt_in();
|
139 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
}
|
141 |
|
142 |
$this->output();
|
@@ -144,6 +142,8 @@ class WP_Job_Manager_Setup {
|
|
144 |
|
145 |
/**
|
146 |
* Usage tracking opt in text for setup page.
|
|
|
|
|
147 |
*/
|
148 |
private function opt_in_text() {
|
149 |
return WP_Job_Manager_Usage_Tracking::get_instance()->opt_in_checkbox_text();
|
@@ -151,27 +151,14 @@ class WP_Job_Manager_Setup {
|
|
151 |
|
152 |
/**
|
153 |
* Output opt-in checkbox if usage tracking isn't already enabled.
|
|
|
|
|
154 |
*/
|
155 |
private function maybe_output_opt_in_checkbox() {
|
156 |
// Only show the checkbox if we aren't already opted in.
|
157 |
$usage_tracking = WP_Job_Manager_Usage_Tracking::get_instance();
|
158 |
if ( ! $usage_tracking->get_tracking_enabled() ) {
|
159 |
-
|
160 |
-
<p>
|
161 |
-
<label>
|
162 |
-
<input
|
163 |
-
type="checkbox"
|
164 |
-
name="job_manager_usage_tracking_enabled"
|
165 |
-
value="1" />
|
166 |
-
<?php
|
167 |
-
echo wp_kses(
|
168 |
-
$this->opt_in_text(),
|
169 |
-
$usage_tracking->opt_in_dialog_text_allowed_html()
|
170 |
-
);
|
171 |
-
?>
|
172 |
-
</label>
|
173 |
-
</p>
|
174 |
-
<?php
|
175 |
}
|
176 |
}
|
177 |
|
@@ -181,195 +168,15 @@ class WP_Job_Manager_Setup {
|
|
181 |
public function output() {
|
182 |
$step = ! empty( $_GET['step'] ) ? absint( $_GET['step'] ) : 1;
|
183 |
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
'submit_job_form' => '[submit_job_form]',
|
192 |
-
'job_dashboard' => '[job_dashboard]',
|
193 |
-
'jobs' => '[jobs]',
|
194 |
-
);
|
195 |
-
|
196 |
-
foreach ( $pages_to_create as $page => $content ) {
|
197 |
-
if ( ! isset( $create_pages[ $page ] ) || empty( $page_titles[ $page ] ) ) {
|
198 |
-
continue;
|
199 |
-
}
|
200 |
-
$this->create_page( sanitize_text_field( $page_titles[ $page ] ), $content, 'job_manager_' . $page . '_page_id' );
|
201 |
-
}
|
202 |
}
|
203 |
-
|
204 |
-
<div class="wrap wp_job_manager wp_job_manager_addons_wrap">
|
205 |
-
<h2><?php esc_html_e( 'WP Job Manager Setup', 'wp-job-manager' ); ?></h2>
|
206 |
-
|
207 |
-
<ul class="wp-job-manager-setup-steps">
|
208 |
-
<?php
|
209 |
-
$step_classes = array_fill( 1, 3, '' );
|
210 |
-
$step_classes[ $step ] = 'wp-job-manager-setup-active-step';
|
211 |
-
?>
|
212 |
-
<li class="<?php echo sanitize_html_class( $step_classes[1] ); ?>"><?php esc_html_e( '1. Introduction', 'wp-job-manager' ); ?></li>
|
213 |
-
<li class="<?php echo sanitize_html_class( $step_classes[2] ); ?>"><?php esc_html_e( '2. Page Setup', 'wp-job-manager' ); ?></li>
|
214 |
-
<li class="<?php echo sanitize_html_class( $step_classes[3] ); ?>"><?php esc_html_e( '3. Done', 'wp-job-manager' ); ?></li>
|
215 |
-
</ul>
|
216 |
-
|
217 |
-
<?php if ( 1 === $step ) : ?>
|
218 |
-
|
219 |
-
<h3><?php esc_html_e( 'Welcome to the Setup Wizard!', 'wp-job-manager' ); ?></h3>
|
220 |
-
|
221 |
-
<p><?php echo wp_kses_post( __( 'Thanks for installing <em>WP Job Manager</em>! Let\'s get your site ready to accept job listings.', 'wp-job-manager' ) ); ?></p>
|
222 |
-
<p><?php echo wp_kses_post( __( 'This setup wizard will walk you through the process of creating pages for job submissions, management, and listings.', 'wp-job-manager' ) ); ?></p>
|
223 |
-
<p>
|
224 |
-
<?php
|
225 |
-
// translators: Placeholder %s is the path to WPJM documentation site.
|
226 |
-
echo wp_kses_post( sprintf( __( 'If you\'d prefer to skip this and set up your pages manually, our <a href="%s">documentation</a> will walk you through each step.', 'wp-job-manager' ), 'https://wpjobmanager.com/documentation/' ) );
|
227 |
-
?>
|
228 |
-
</p>
|
229 |
-
|
230 |
-
<form method="post" action="<?php echo esc_url( add_query_arg( 'step', 2 ) ); ?>">
|
231 |
-
<input type="hidden" name="nonce" value="<?php echo esc_attr( wp_create_nonce( 'enable-usage-tracking' ) ); ?>" />
|
232 |
-
|
233 |
-
<?php $this->maybe_output_opt_in_checkbox(); ?>
|
234 |
-
|
235 |
-
<p class="submit">
|
236 |
-
<input type="submit" value="<?php esc_html_e( 'Start setup', 'wp-job-manager' ); ?>" class="button button-primary" />
|
237 |
-
<a href="<?php echo esc_url( add_query_arg( 'skip-job-manager-setup', 1, admin_url( 'index.php?page=job-manager-setup&step=3' ) ) ); ?>" class="button"><?php esc_html_e( 'Skip setup. I will set up the plugin manually.', 'wp-job-manager' ); ?></a>
|
238 |
-
</p>
|
239 |
-
</form>
|
240 |
-
|
241 |
-
<?php endif; ?>
|
242 |
-
<?php if ( 2 === $step ) : ?>
|
243 |
-
|
244 |
-
<h3><?php esc_html_e( 'Page Setup', 'wp-job-manager' ); ?></h3>
|
245 |
-
|
246 |
-
<p><?php esc_html_e( 'With WP Job Manager, employers and applicants can post, manage, and browse job listings right on your website. Tell us which of these common pages you\'d like your site to have and we\'ll create and configure them for you.', 'wp-job-manager' ); ?></p>
|
247 |
-
<p>
|
248 |
-
<?php
|
249 |
-
echo wp_kses_post( sprintf(
|
250 |
-
// translators: %1$s is URL to WordPress core shortcode documentation. %2$s is URL to WPJM specific shortcode reference.
|
251 |
-
__( '(These pages are created using <a href="%1$s" title="What is a shortcode?" target="_blank" class="help-page-link">shortcodes</a>,
|
252 |
-
which we take care of in this step. If you\'d like to build these pages yourself or want to add one of these options to an existing
|
253 |
-
page on your site, you can skip this step and take a look at <a href="%2$s" target="_blank" class="help-page-link">shortcode documentation</a> for detailed instructions.)', 'wp-job-manager' ),
|
254 |
-
'http://codex.wordpress.org/Shortcode',
|
255 |
-
'https://wpjobmanager.com/document/shortcode-reference/'
|
256 |
-
) );
|
257 |
-
?>
|
258 |
-
</p>
|
259 |
-
|
260 |
-
<form action="<?php echo esc_url( add_query_arg( 'step', 3 ) ); ?>" method="post">
|
261 |
-
<?php wp_nonce_field( 'step_3', 'setup_wizard' ); ?>
|
262 |
-
<table class="wp-job-manager-shortcodes widefat">
|
263 |
-
<thead>
|
264 |
-
<tr>
|
265 |
-
<th> </th>
|
266 |
-
<th><?php esc_html_e( 'Page Title', 'wp-job-manager' ); ?></th>
|
267 |
-
<th><?php esc_html_e( 'Page Description', 'wp-job-manager' ); ?></th>
|
268 |
-
<th><?php esc_html_e( 'Content Shortcode', 'wp-job-manager' ); ?></th>
|
269 |
-
</tr>
|
270 |
-
</thead>
|
271 |
-
<tbody>
|
272 |
-
<tr>
|
273 |
-
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[submit_job_form]" /></td>
|
274 |
-
<td><input type="text" value="<?php echo esc_attr( _x( 'Post a Job', 'Default page title (wizard)', 'wp-job-manager' ) ); ?>" name="wp-job-manager-page-title[submit_job_form]" /></td>
|
275 |
-
<td>
|
276 |
-
<p><?php esc_html_e( 'Creates a page that allows employers to post new jobs directly from a page on your website, instead of requiring them to log in to an admin area. If you\'d rather not allow this -- for example, if you want employers to use the admin dashboard only -- you can uncheck this setting.', 'wp-job-manager' ); ?></p>
|
277 |
-
</td>
|
278 |
-
<td><code>[submit_job_form]</code></td>
|
279 |
-
</tr>
|
280 |
-
<tr>
|
281 |
-
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[job_dashboard]" /></td>
|
282 |
-
<td><input type="text" value="<?php echo esc_attr( _x( 'Job Dashboard', 'Default page title (wizard)', 'wp-job-manager' ) ); ?>" name="wp-job-manager-page-title[job_dashboard]" /></td>
|
283 |
-
<td>
|
284 |
-
<p><?php esc_html_e( 'Creates a page that allows employers to manage their job listings directly from a page on your website, instead of requiring them to log in to an admin area. If you want to manage all job listings from the admin dashboard only, you can uncheck this setting.', 'wp-job-manager' ); ?></p>
|
285 |
-
</td>
|
286 |
-
<td><code>[job_dashboard]</code></td>
|
287 |
-
</tr>
|
288 |
-
<tr>
|
289 |
-
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[jobs]" /></td>
|
290 |
-
<td><input type="text" value="<?php echo esc_attr( _x( 'Jobs', 'Default page title (wizard)', 'wp-job-manager' ) ); ?>" name="wp-job-manager-page-title[jobs]" /></td>
|
291 |
-
<td><?php esc_html_e( 'Creates a page where visitors can browse, search, and filter job listings.', 'wp-job-manager' ); ?></td>
|
292 |
-
<td><code>[jobs]</code></td>
|
293 |
-
</tr>
|
294 |
-
</tbody>
|
295 |
-
<tfoot>
|
296 |
-
<tr>
|
297 |
-
<th colspan="4">
|
298 |
-
<input type="submit" class="button button-primary" value="Create selected pages" />
|
299 |
-
<a href="<?php echo esc_url( add_query_arg( 'step', 3 ) ); ?>" class="button"><?php esc_html_e( 'Skip this step', 'wp-job-manager' ); ?></a>
|
300 |
-
</th>
|
301 |
-
</tr>
|
302 |
-
</tfoot>
|
303 |
-
</table>
|
304 |
-
</form>
|
305 |
-
|
306 |
-
<?php endif; ?>
|
307 |
-
<?php if ( 3 === $step ) : ?>
|
308 |
-
|
309 |
-
<h3><?php esc_html_e( 'You\'re ready to start using WP Job Manager!', 'wp-job-manager' ); ?></h3>
|
310 |
-
|
311 |
-
<p><?php esc_html_e( 'Wondering what to do now? Here are some of the most common next steps:', 'wp-job-manager' ); ?></p>
|
312 |
-
|
313 |
-
<ul class="wp-job-manager-next-steps">
|
314 |
-
<li><a href="<?php echo esc_url( admin_url( 'edit.php?post_type=job_listing&page=job-manager-settings' ) ); ?>"><?php esc_html_e( 'Tweak your settings', 'wp-job-manager' ); ?></a></li>
|
315 |
-
<li><a href="<?php echo esc_url( admin_url( 'post-new.php?post_type=job_listing' ) ); ?>"><?php esc_html_e( 'Add a job using the admin dashboard', 'wp-job-manager' ); ?></a></li>
|
316 |
-
<?php
|
317 |
-
$permalink = job_manager_get_permalink( 'jobs' );
|
318 |
-
if ( $permalink ) {
|
319 |
-
?>
|
320 |
-
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php esc_html_e( 'View submitted job listings', 'wp-job-manager' ); ?></a></li>
|
321 |
-
<?php } else { ?>
|
322 |
-
<li><a href="https://wpjobmanager.com/document/shortcode-reference/#section-1"><?php esc_html_e( 'Add job listings to a page using the [jobs] shortcode', 'wp-job-manager' ); ?></a></li>
|
323 |
-
<?php } ?>
|
324 |
-
|
325 |
-
<?php
|
326 |
-
$permalink = job_manager_get_permalink( 'submit_job_form' );
|
327 |
-
if ( $permalink ) {
|
328 |
-
?>
|
329 |
-
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php esc_html_e( 'Add a job via the front-end', 'wp-job-manager' ); ?></a></li>
|
330 |
-
<?php } else { ?>
|
331 |
-
<li><a href="https://wpjobmanager.com/document/the-job-submission-form/"><?php esc_html_e( 'Learn to use the front-end job submission board', 'wp-job-manager' ); ?></a></li>
|
332 |
-
<?php } ?>
|
333 |
-
|
334 |
-
<?php
|
335 |
-
$permalink = job_manager_get_permalink( 'job_dashboard' );
|
336 |
-
if ( $permalink ) {
|
337 |
-
?>
|
338 |
-
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php esc_html_e( 'View the job dashboard', 'wp-job-manager' ); ?></a></li>
|
339 |
-
<?php } else { ?>
|
340 |
-
<li><a href="https://wpjobmanager.com/document/the-job-dashboard/"><?php esc_html_e( 'Learn to use the front-end job dashboard', 'wp-job-manager' ); ?></a></li>
|
341 |
-
<?php } ?>
|
342 |
-
</ul>
|
343 |
-
|
344 |
-
<p>
|
345 |
-
<?php
|
346 |
-
echo wp_kses_post(
|
347 |
-
sprintf(
|
348 |
-
// translators: %1$s is the URL to WPJM support documentation; %2$s is the URL to WPJM support forums.
|
349 |
-
__( 'If you need help, you can find more detail in our
|
350 |
-
<a href="%1$s">support documentation</a> or post your question on the
|
351 |
-
<a href="%2$s">WP Job Manager support forums</a>. Happy hiring!', 'wp-job-manager' ),
|
352 |
-
'https://wpjobmanager.com/documentation/',
|
353 |
-
'https://wordpress.org/support/plugin/wp-job-manager'
|
354 |
-
)
|
355 |
-
);
|
356 |
-
?>
|
357 |
-
</p>
|
358 |
-
|
359 |
-
<div class="wp-job-manager-support-the-plugin">
|
360 |
-
<h3><?php esc_html_e( 'Support WP Job Manager\'s Ongoing Development', 'wp-job-manager' ); ?></h3>
|
361 |
-
<p><?php esc_html_e( 'There are lots of ways you can support open source software projects like this one: contributing code, fixing a bug, assisting with non-English translation, or just telling your friends about WP Job Manager to help spread the word. We appreciate your support!', 'wp-job-manager' ); ?></p>
|
362 |
-
<ul>
|
363 |
-
<li class="icon-review"><a href="https://wordpress.org/support/view/plugin-reviews/wp-job-manager#postform"><?php esc_html_e( 'Leave a positive review', 'wp-job-manager' ); ?></a></li>
|
364 |
-
<li class="icon-localization"><a href="https://translate.wordpress.org/projects/wp-plugins/wp-job-manager"><?php esc_html_e( 'Contribute a localization', 'wp-job-manager' ); ?></a></li>
|
365 |
-
<li class="icon-code"><a href="https://github.com/mikejolley/WP-Job-Manager"><?php esc_html_e( 'Contribute code or report a bug', 'wp-job-manager' ); ?></a></li>
|
366 |
-
<li class="icon-forum"><a href="https://wordpress.org/support/plugin/wp-job-manager"><?php esc_html_e( 'Help other users on the forums', 'wp-job-manager' ); ?></a></li>
|
367 |
-
</ul>
|
368 |
-
</div>
|
369 |
-
|
370 |
-
<?php endif; ?>
|
371 |
-
</div>
|
372 |
-
<?php
|
373 |
}
|
374 |
}
|
375 |
|
39 |
public function __construct() {
|
40 |
add_action( 'admin_menu', array( $this, 'admin_menu' ), 12 );
|
41 |
add_action( 'admin_head', array( $this, 'admin_head' ) );
|
|
|
42 |
if ( isset( $_GET['page'] ) && 'job-manager-setup' === $_GET['page'] ) {
|
43 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ), 12 );
|
44 |
}
|
58 |
remove_submenu_page( 'index.php', 'job-manager-setup' );
|
59 |
}
|
60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
/**
|
62 |
* Enqueues scripts for setup page.
|
63 |
*/
|
95 |
*/
|
96 |
public function setup_page() {
|
97 |
$usage_tracking = WP_Job_Manager_Usage_Tracking::get_instance();
|
98 |
+
$step = ! empty( $_GET['step'] ) ? absint( $_GET['step'] ) : 1;
|
99 |
|
100 |
if ( 'POST' === $_SERVER['REQUEST_METHOD'] ) {
|
101 |
+
// Handle step 1 (usage tracking).
|
102 |
$enable = isset( $_POST['job_manager_usage_tracking_enabled'] )
|
103 |
&& '1' === $_POST['job_manager_usage_tracking_enabled'];
|
104 |
|
109 |
$usage_tracking->set_tracking_enabled( $enable );
|
110 |
$usage_tracking->hide_tracking_opt_in();
|
111 |
}
|
112 |
+
|
113 |
+
// Handle step 2 -> step 3 (setting up pages).
|
114 |
+
if ( 3 === $step && ! empty( $_POST ) ) {
|
115 |
+
if ( false === wp_verify_nonce( $_REQUEST['setup_wizard'], 'step_3' ) ) {
|
116 |
+
wp_die( 'Error in nonce. Try again.', 'wp-job-manager' );
|
117 |
+
}
|
118 |
+
$create_pages = isset( $_POST['wp-job-manager-create-page'] ) ? $_POST['wp-job-manager-create-page'] : array();
|
119 |
+
$page_titles = $_POST['wp-job-manager-page-title'];
|
120 |
+
$pages_to_create = array(
|
121 |
+
'submit_job_form' => '[submit_job_form]',
|
122 |
+
'job_dashboard' => '[job_dashboard]',
|
123 |
+
'jobs' => '[jobs]',
|
124 |
+
);
|
125 |
+
|
126 |
+
foreach ( $pages_to_create as $page => $content ) {
|
127 |
+
if ( ! isset( $create_pages[ $page ] ) || empty( $page_titles[ $page ] ) ) {
|
128 |
+
continue;
|
129 |
+
}
|
130 |
+
$this->create_page( sanitize_text_field( $page_titles[ $page ] ), $content, 'job_manager_' . $page . '_page_id' );
|
131 |
+
}
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
// Handle step 3 (from step 1 or 2).
|
136 |
+
if ( 3 === $step ) {
|
137 |
+
WP_Job_Manager_Admin_Notices::remove_notice( WP_Job_Manager_Admin_Notices::NOTICE_CORE_SETUP );
|
138 |
}
|
139 |
|
140 |
$this->output();
|
142 |
|
143 |
/**
|
144 |
* Usage tracking opt in text for setup page.
|
145 |
+
*
|
146 |
+
* Used in `views/html-admin-setup-opt-in-usage-tracking.php`
|
147 |
*/
|
148 |
private function opt_in_text() {
|
149 |
return WP_Job_Manager_Usage_Tracking::get_instance()->opt_in_checkbox_text();
|
151 |
|
152 |
/**
|
153 |
* Output opt-in checkbox if usage tracking isn't already enabled.
|
154 |
+
*
|
155 |
+
* Used in `views/html-admin-setup-step-1.php`
|
156 |
*/
|
157 |
private function maybe_output_opt_in_checkbox() {
|
158 |
// Only show the checkbox if we aren't already opted in.
|
159 |
$usage_tracking = WP_Job_Manager_Usage_Tracking::get_instance();
|
160 |
if ( ! $usage_tracking->get_tracking_enabled() ) {
|
161 |
+
include dirname( __FILE__ ) . '/views/html-admin-setup-opt-in-usage-tracking.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
}
|
163 |
}
|
164 |
|
168 |
public function output() {
|
169 |
$step = ! empty( $_GET['step'] ) ? absint( $_GET['step'] ) : 1;
|
170 |
|
171 |
+
include dirname( __FILE__ ) . '/views/html-admin-setup-header.php';
|
172 |
+
if ( 1 === $step ) {
|
173 |
+
include dirname( __FILE__ ) . '/views/html-admin-setup-step-1.php';
|
174 |
+
} elseif ( 2 === $step ) {
|
175 |
+
include dirname( __FILE__ ) . '/views/html-admin-setup-step-2.php';
|
176 |
+
} elseif ( 3 === $step ) {
|
177 |
+
include dirname( __FILE__ ) . '/views/html-admin-setup-step-3.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
}
|
179 |
+
include dirname( __FILE__ ) . '/views/html-admin-setup-footer.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
}
|
181 |
}
|
182 |
|
includes/admin/class-wp-job-manager-writepanels.php
CHANGED
@@ -119,7 +119,7 @@ class WP_Job_Manager_Writepanels {
|
|
119 |
$fields['_job_author'] = array(
|
120 |
'label' => __( 'Posted by', 'wp-job-manager' ),
|
121 |
'type' => 'author',
|
122 |
-
'priority' =>
|
123 |
);
|
124 |
}
|
125 |
|
@@ -166,7 +166,7 @@ class WP_Job_Manager_Writepanels {
|
|
166 |
} elseif ( false === job_manager_multi_job_type() ) {
|
167 |
remove_meta_box( 'job_listing_typediv', 'job_listing', 'side' );
|
168 |
$job_listing_type = get_taxonomy( 'job_listing_type' );
|
169 |
-
add_meta_box( 'job_listing_type', $job_listing_type->labels->menu_name, array( $this, '
|
170 |
}
|
171 |
}
|
172 |
|
@@ -175,75 +175,38 @@ class WP_Job_Manager_Writepanels {
|
|
175 |
*
|
176 |
* @param int|WP_Post $post
|
177 |
*/
|
178 |
-
public function
|
179 |
// Set up the taxonomy object and get terms.
|
180 |
-
$
|
181 |
-
$tax = get_taxonomy( $taxonomy );// This is the taxonomy object.
|
182 |
-
|
183 |
-
// The name of the form.
|
184 |
-
$name = 'tax_input[' . $taxonomy . ']';
|
185 |
|
186 |
// Get all the terms for this taxonomy.
|
187 |
$terms = get_terms(
|
188 |
array(
|
189 |
-
'taxonomy' => $
|
190 |
'hide_empty' => 0,
|
191 |
)
|
192 |
);
|
193 |
-
$postterms = get_the_terms( $post->ID, $
|
194 |
-
$current =
|
195 |
-
$current =
|
196 |
-
// Get current and popular terms.
|
197 |
-
$popular = get_terms(
|
198 |
-
array(
|
199 |
-
'taxonomy' => $taxonomy,
|
200 |
-
'orderby' => 'count',
|
201 |
-
'order' => 'DESC',
|
202 |
-
'number' => 10,
|
203 |
-
'hierarchical' => false,
|
204 |
-
)
|
205 |
-
);
|
206 |
-
$postterms = get_the_terms( $post->ID, $taxonomy );
|
207 |
-
$current = ( $postterms ? array_pop( $postterms ) : false );
|
208 |
-
$current = ( $current ? $current->term_id : 0 );
|
209 |
-
?>
|
210 |
-
|
211 |
-
<div id="taxonomy-<?php echo esc_attr( $taxonomy ); ?>" class="categorydiv">
|
212 |
-
|
213 |
-
<!-- Display tabs-->
|
214 |
-
<ul id="<?php echo esc_attr( $taxonomy ); ?>-tabs" class="category-tabs">
|
215 |
-
<li class="tabs"><a href="#<?php echo esc_attr( $taxonomy ); ?>-all" tabindex="3"><?php echo esc_html( $tax->labels->all_items ); ?></a></li>
|
216 |
-
<li class="hide-if-no-js"><a href="#<?php echo esc_attr( $taxonomy ); ?>-pop" tabindex="3"><?php esc_html_e( 'Most Used', 'wp-job-manager' ); ?></a></li>
|
217 |
-
</ul>
|
218 |
|
|
|
|
|
|
|
219 |
<!-- Display taxonomy terms -->
|
220 |
-
<div id="<?php echo esc_attr( $
|
221 |
-
<ul id="<?php echo esc_attr( $
|
222 |
<?php
|
223 |
foreach ( $terms as $term ) {
|
224 |
-
$id = $
|
225 |
echo '<li id="' . esc_attr( $id ) . '"><label class="selectit">';
|
226 |
-
echo '<input type="radio" id="in-' . esc_attr( $id ) . '" name="' . esc_attr( $
|
227 |
echo '</label></li>';
|
228 |
}
|
229 |
?>
|
230 |
-
|
231 |
</div>
|
232 |
|
233 |
-
<!-- Display popular taxonomy terms -->
|
234 |
-
<div id="<?php echo esc_attr( $taxonomy ); ?>-pop" class="tabs-panel" style="display: none;">
|
235 |
-
<ul id="<?php echo esc_attr( $taxonomy ); ?>checklist-pop" class="categorychecklist form-no-clear" >
|
236 |
-
<?php
|
237 |
-
foreach ( $popular as $term ) {
|
238 |
-
$id = 'popular-' . $taxonomy . '-' . $term->term_id;
|
239 |
-
echo '<li id="' . esc_attr( $id ) . '"><label class="selectit">';
|
240 |
-
echo '<input type="radio" id="in-' . esc_attr( $id ) . '" ' . checked( $current, $term->term_id, false ) . ' value="' . esc_attr( $term->term_id ) . '" />' . esc_attr( $term->name ) . '<br />';
|
241 |
-
echo '</label></li>';
|
242 |
-
}
|
243 |
-
?>
|
244 |
-
</ul>
|
245 |
-
</div>
|
246 |
-
|
247 |
</div>
|
248 |
<?php
|
249 |
}
|
@@ -552,16 +515,25 @@ class WP_Job_Manager_Writepanels {
|
|
552 |
<span class="current-author">
|
553 |
<?php
|
554 |
if ( $posted_by ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
555 |
echo '<a href="' . esc_url( admin_url( 'user-edit.php?user_id=' . absint( $author_id ) ) ) . '">#' . absint( $author_id ) . ' – ' . esc_html( $posted_by->user_login ) . '</a>';
|
556 |
} else {
|
557 |
-
|
|
|
558 |
}
|
559 |
?>
|
560 |
<a href="#" class="change-author button button-small"><?php esc_html_e( 'Change', 'wp-job-manager' ); ?></a>
|
561 |
</span>
|
562 |
<span class="hidden change-author">
|
563 |
-
<
|
564 |
-
|
|
|
565 |
</span>
|
566 |
</p>
|
567 |
<?php
|
@@ -706,6 +678,9 @@ class WP_Job_Manager_Writepanels {
|
|
706 |
WP_Job_Manager_Geocode::generate_location_data( $post_id, sanitize_text_field( $_POST[ $key ] ) );
|
707 |
}
|
708 |
} elseif ( '_job_author' === $key ) {
|
|
|
|
|
|
|
709 |
$wpdb->update( $wpdb->posts, array( 'post_author' => $_POST[ $key ] > 0 ? absint( $_POST[ $key ] ) : 0 ), array( 'ID' => $post_id ) );
|
710 |
} elseif ( '_application' === $key ) {
|
711 |
update_post_meta( $post_id, $key, sanitize_text_field( is_email( $_POST[ $key ] ) ? $_POST[ $key ] : urldecode( $_POST[ $key ] ) ) );
|
119 |
$fields['_job_author'] = array(
|
120 |
'label' => __( 'Posted by', 'wp-job-manager' ),
|
121 |
'type' => 'author',
|
122 |
+
'priority' => 0,
|
123 |
);
|
124 |
}
|
125 |
|
166 |
} elseif ( false === job_manager_multi_job_type() ) {
|
167 |
remove_meta_box( 'job_listing_typediv', 'job_listing', 'side' );
|
168 |
$job_listing_type = get_taxonomy( 'job_listing_type' );
|
169 |
+
add_meta_box( 'job_listing_type', $job_listing_type->labels->menu_name, array( $this, 'job_type_single_meta_box' ), 'job_listing', 'side', 'core' );
|
170 |
}
|
171 |
}
|
172 |
|
175 |
*
|
176 |
* @param int|WP_Post $post
|
177 |
*/
|
178 |
+
public function job_type_single_meta_box( $post ) {
|
179 |
// Set up the taxonomy object and get terms.
|
180 |
+
$taxonomy_name = 'job_listing_type';
|
|
|
|
|
|
|
|
|
181 |
|
182 |
// Get all the terms for this taxonomy.
|
183 |
$terms = get_terms(
|
184 |
array(
|
185 |
+
'taxonomy' => $taxonomy_name,
|
186 |
'hide_empty' => 0,
|
187 |
)
|
188 |
);
|
189 |
+
$postterms = get_the_terms( $post->ID, $taxonomy_name );
|
190 |
+
$current = $postterms ? array_pop( $postterms ) : false;
|
191 |
+
$current = $current ? $current->term_id : 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
|
193 |
+
$field_name = 'tax_input[' . $taxonomy_name . ']';
|
194 |
+
?>
|
195 |
+
<div id="taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>" class="categorydiv">
|
196 |
<!-- Display taxonomy terms -->
|
197 |
+
<div id="<?php echo esc_attr( $taxonomy_name ); ?>-all" class="editor-post-taxonomies__hierarchical-terms-list">
|
198 |
+
<ul id="<?php echo esc_attr( $taxonomy_name ); ?>checklist" class="list:<?php echo esc_attr( $taxonomy_name ); ?> categorychecklist form-no-clear">
|
199 |
<?php
|
200 |
foreach ( $terms as $term ) {
|
201 |
+
$id = $taxonomy_name . '-' . $term->term_id;
|
202 |
echo '<li id="' . esc_attr( $id ) . '"><label class="selectit">';
|
203 |
+
echo '<input type="radio" id="in-' . esc_attr( $id ) . '" name="' . esc_attr( $field_name ) . '" ' . checked( $current, $term->term_id, false ) . ' value="' . esc_attr( $term->term_id ) . '" />' . esc_attr( $term->name ) . '<br />';
|
204 |
echo '</label></li>';
|
205 |
}
|
206 |
?>
|
207 |
+
</ul>
|
208 |
</div>
|
209 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
</div>
|
211 |
<?php
|
212 |
}
|
515 |
<span class="current-author">
|
516 |
<?php
|
517 |
if ( $posted_by ) {
|
518 |
+
$user_string = sprintf(
|
519 |
+
// translators: Used in user select. %1$s is the user's display name; #%2$s is the user ID; %3$s is the user email.
|
520 |
+
esc_html__( '%1$s (#%2$s – %3$s)', 'wp-job-manager' ),
|
521 |
+
$posted_by->display_name,
|
522 |
+
absint( $posted_by->ID ),
|
523 |
+
$posted_by->user_email
|
524 |
+
);
|
525 |
echo '<a href="' . esc_url( admin_url( 'user-edit.php?user_id=' . absint( $author_id ) ) ) . '">#' . absint( $author_id ) . ' – ' . esc_html( $posted_by->user_login ) . '</a>';
|
526 |
} else {
|
527 |
+
$user_string = __( 'Guest User', 'wp-job-manager' );
|
528 |
+
echo esc_html( $user_string );
|
529 |
}
|
530 |
?>
|
531 |
<a href="#" class="change-author button button-small"><?php esc_html_e( 'Change', 'wp-job-manager' ); ?></a>
|
532 |
</span>
|
533 |
<span class="hidden change-author">
|
534 |
+
<select class="wpjm-user-search" id="job_manager_user_search" name="<?php echo esc_attr( $name ); ?>" data-placeholder="<?php esc_attr_e( 'Guest', 'wp-job-manager' ); ?>" data-allow_clear="true">
|
535 |
+
<option value="<?php echo esc_attr( $author_id ); ?>" selected="selected"><?php echo esc_html( htmlspecialchars( $user_string ) ); ?></option>
|
536 |
+
</select>
|
537 |
</span>
|
538 |
</p>
|
539 |
<?php
|
678 |
WP_Job_Manager_Geocode::generate_location_data( $post_id, sanitize_text_field( $_POST[ $key ] ) );
|
679 |
}
|
680 |
} elseif ( '_job_author' === $key ) {
|
681 |
+
if ( empty( $_POST[ $key ] ) ) {
|
682 |
+
$_POST[ $key ] = 0;
|
683 |
+
}
|
684 |
$wpdb->update( $wpdb->posts, array( 'post_author' => $_POST[ $key ] > 0 ? absint( $_POST[ $key ] ) : 0 ), array( 'ID' => $post_id ) );
|
685 |
} elseif ( '_application' === $key ) {
|
686 |
update_post_meta( $post_id, $key, sanitize_text_field( is_email( $_POST[ $key ] ) ? $_POST[ $key ] : urldecode( $_POST[ $key ] ) ) );
|
includes/admin/views/html-admin-notice-core-setup.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Display the admin notice when user first activates WPJM.
|
4 |
+
*
|
5 |
+
* @package WP Job Manager
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
?>
|
13 |
+
<div class="updated wpjm-message">
|
14 |
+
<p>
|
15 |
+
<?php
|
16 |
+
echo wp_kses_post( __( 'You are nearly ready to start listing jobs with <strong>WP Job Manager</strong>.', 'wp-job-manager' ) );
|
17 |
+
?>
|
18 |
+
</p>
|
19 |
+
<p class="submit">
|
20 |
+
<a href="<?php echo esc_url( admin_url( 'index.php?page=job-manager-setup' ) ); ?>" class="button-primary"><?php esc_html_e( 'Run Setup Wizard', 'wp-job-manager' ); ?></a>
|
21 |
+
<a class="button-secondary skip" href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'wpjm_hide_notice', WP_Job_Manager_Admin_Notices::NOTICE_CORE_SETUP ), 'job_manager_hide_notices_nonce', '_wpjm_notice_nonce' ) ); ?>"><?php esc_html_e( 'Skip Setup', 'wp-job-manager' ); ?></a>
|
22 |
+
</p>
|
23 |
+
</div>
|
includes/admin/views/html-admin-setup-footer.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Setup page: footer content.
|
4 |
+
*
|
5 |
+
* @package WP Job Manager
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
?>
|
13 |
+
</div>
|
includes/admin/views/html-admin-setup-header.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Setup page: header content.
|
4 |
+
*
|
5 |
+
* @package WP Job Manager
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
?>
|
13 |
+
<div class="wrap wp_job_manager wp_job_manager_addons_wrap">
|
14 |
+
<h2><?php esc_html_e( 'WP Job Manager Setup', 'wp-job-manager' ); ?></h2>
|
15 |
+
|
16 |
+
<ul class="wp-job-manager-setup-steps">
|
17 |
+
<?php
|
18 |
+
$step_classes = array_fill( 1, 3, '' );
|
19 |
+
$step_classes[ $step ] = 'wp-job-manager-setup-active-step';
|
20 |
+
?>
|
21 |
+
<li class="<?php echo sanitize_html_class( $step_classes[1] ); ?>"><?php esc_html_e( '1. Introduction', 'wp-job-manager' ); ?></li>
|
22 |
+
<li class="<?php echo sanitize_html_class( $step_classes[2] ); ?>"><?php esc_html_e( '2. Page Setup', 'wp-job-manager' ); ?></li>
|
23 |
+
<li class="<?php echo sanitize_html_class( $step_classes[3] ); ?>"><?php esc_html_e( '3. Done', 'wp-job-manager' ); ?></li>
|
24 |
+
</ul>
|
includes/admin/views/html-admin-setup-opt-in-usage-tracking.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Setup page: Opt into usage tracking option.
|
4 |
+
*
|
5 |
+
* @package WP Job Manager
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
?>
|
13 |
+
<p>
|
14 |
+
<label>
|
15 |
+
<input
|
16 |
+
type="checkbox"
|
17 |
+
name="job_manager_usage_tracking_enabled"
|
18 |
+
value="1" />
|
19 |
+
<?php
|
20 |
+
echo wp_kses(
|
21 |
+
$this->opt_in_text(),
|
22 |
+
$usage_tracking->opt_in_dialog_text_allowed_html()
|
23 |
+
);
|
24 |
+
?>
|
25 |
+
</label>
|
26 |
+
</p>
|
includes/admin/views/html-admin-setup-step-1.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Setup page: Step 1 content.
|
4 |
+
*
|
5 |
+
* @package WP Job Manager
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
?>
|
13 |
+
<h3><?php esc_html_e( 'Welcome to the Setup Wizard!', 'wp-job-manager' ); ?></h3>
|
14 |
+
|
15 |
+
<p><?php echo wp_kses_post( __( 'Thanks for installing <em>WP Job Manager</em>! Let\'s get your site ready to accept job listings.', 'wp-job-manager' ) ); ?></p>
|
16 |
+
<p><?php echo wp_kses_post( __( 'This setup wizard will walk you through the process of creating pages for job submissions, management, and listings.', 'wp-job-manager' ) ); ?></p>
|
17 |
+
<p>
|
18 |
+
<?php
|
19 |
+
// translators: Placeholder %s is the path to WPJM documentation site.
|
20 |
+
echo wp_kses_post( sprintf( __( 'If you\'d prefer to skip this and set up your pages manually, our <a href="%s">documentation</a> will walk you through each step.', 'wp-job-manager' ), 'https://wpjobmanager.com/documentation/' ) );
|
21 |
+
?>
|
22 |
+
</p>
|
23 |
+
|
24 |
+
<form method="post" action="<?php echo esc_url( add_query_arg( 'step', 2 ) ); ?>">
|
25 |
+
<input type="hidden" name="nonce" value="<?php echo esc_attr( wp_create_nonce( 'enable-usage-tracking' ) ); ?>" />
|
26 |
+
|
27 |
+
<?php $this->maybe_output_opt_in_checkbox(); ?>
|
28 |
+
|
29 |
+
<p class="submit">
|
30 |
+
<input type="submit" value="<?php esc_html_e( 'Start setup', 'wp-job-manager' ); ?>" class="button button-primary" />
|
31 |
+
<a href="<?php echo esc_url( add_query_arg( 'skip-job-manager-setup', 1, admin_url( 'index.php?page=job-manager-setup&step=3' ) ) ); ?>" class="button"><?php esc_html_e( 'Skip setup. I will set up the plugin manually.', 'wp-job-manager' ); ?></a>
|
32 |
+
</p>
|
33 |
+
</form>
|
includes/admin/views/html-admin-setup-step-2.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Setup page: Step 2 content.
|
4 |
+
*
|
5 |
+
* @package WP Job Manager
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
?>
|
13 |
+
<h3><?php esc_html_e( 'Page Setup', 'wp-job-manager' ); ?></h3>
|
14 |
+
|
15 |
+
<p><?php esc_html_e( 'With WP Job Manager, employers and applicants can post, manage, and browse job listings right on your website. Tell us which of these common pages you\'d like your site to have and we\'ll create and configure them for you.', 'wp-job-manager' ); ?></p>
|
16 |
+
<p>
|
17 |
+
<?php
|
18 |
+
echo wp_kses_post(
|
19 |
+
sprintf(
|
20 |
+
// translators: %1$s is URL to WordPress core shortcode documentation. %2$s is URL to WPJM specific shortcode reference.
|
21 |
+
__(
|
22 |
+
'(These pages are created using <a href="%1$s" title="What is a shortcode?" class="help-page-link">shortcodes</a>,
|
23 |
+
which we take care of in this step. If you\'d like to build these pages yourself or want to add one of these options to an existing
|
24 |
+
page on your site, you can skip this step and take a look at <a href="%2$s" class="help-page-link">shortcode documentation</a> for detailed instructions.)', 'wp-job-manager'
|
25 |
+
),
|
26 |
+
'http://codex.wordpress.org/Shortcode',
|
27 |
+
'https://wpjobmanager.com/document/shortcode-reference/'
|
28 |
+
)
|
29 |
+
);
|
30 |
+
?>
|
31 |
+
</p>
|
32 |
+
|
33 |
+
<form action="<?php echo esc_url( add_query_arg( 'step', 3 ) ); ?>" method="post">
|
34 |
+
<?php wp_nonce_field( 'step_3', 'setup_wizard' ); ?>
|
35 |
+
<table class="wp-job-manager-shortcodes widefat">
|
36 |
+
<thead>
|
37 |
+
<tr>
|
38 |
+
<th> </th>
|
39 |
+
<th><?php esc_html_e( 'Page Title', 'wp-job-manager' ); ?></th>
|
40 |
+
<th><?php esc_html_e( 'Page Description', 'wp-job-manager' ); ?></th>
|
41 |
+
<th><?php esc_html_e( 'Content Shortcode', 'wp-job-manager' ); ?></th>
|
42 |
+
</tr>
|
43 |
+
</thead>
|
44 |
+
<tbody>
|
45 |
+
<tr>
|
46 |
+
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[submit_job_form]" /></td>
|
47 |
+
<td><input type="text" value="<?php echo esc_attr( _x( 'Post a Job', 'Default page title (wizard)', 'wp-job-manager' ) ); ?>" name="wp-job-manager-page-title[submit_job_form]" /></td>
|
48 |
+
<td>
|
49 |
+
<p><?php esc_html_e( 'Creates a page that allows employers to post new jobs directly from a page on your website, instead of requiring them to log in to an admin area. If you\'d rather not allow this -- for example, if you want employers to use the admin dashboard only -- you can uncheck this setting.', 'wp-job-manager' ); ?></p>
|
50 |
+
</td>
|
51 |
+
<td><code>[submit_job_form]</code></td>
|
52 |
+
</tr>
|
53 |
+
<tr>
|
54 |
+
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[job_dashboard]" /></td>
|
55 |
+
<td><input type="text" value="<?php echo esc_attr( _x( 'Job Dashboard', 'Default page title (wizard)', 'wp-job-manager' ) ); ?>" name="wp-job-manager-page-title[job_dashboard]" /></td>
|
56 |
+
<td>
|
57 |
+
<p><?php esc_html_e( 'Creates a page that allows employers to manage their job listings directly from a page on your website, instead of requiring them to log in to an admin area. If you want to manage all job listings from the admin dashboard only, you can uncheck this setting.', 'wp-job-manager' ); ?></p>
|
58 |
+
</td>
|
59 |
+
<td><code>[job_dashboard]</code></td>
|
60 |
+
</tr>
|
61 |
+
<tr>
|
62 |
+
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[jobs]" /></td>
|
63 |
+
<td><input type="text" value="<?php echo esc_attr( _x( 'Jobs', 'Default page title (wizard)', 'wp-job-manager' ) ); ?>" name="wp-job-manager-page-title[jobs]" /></td>
|
64 |
+
<td><?php esc_html_e( 'Creates a page where visitors can browse, search, and filter job listings.', 'wp-job-manager' ); ?></td>
|
65 |
+
<td><code>[jobs]</code></td>
|
66 |
+
</tr>
|
67 |
+
</tbody>
|
68 |
+
<tfoot>
|
69 |
+
<tr>
|
70 |
+
<th colspan="4">
|
71 |
+
<input type="submit" class="button button-primary" value="Create selected pages" />
|
72 |
+
<a href="<?php echo esc_url( add_query_arg( 'step', 3 ) ); ?>" class="button"><?php esc_html_e( 'Skip this step', 'wp-job-manager' ); ?></a>
|
73 |
+
</th>
|
74 |
+
</tr>
|
75 |
+
</tfoot>
|
76 |
+
</table>
|
77 |
+
</form>
|
includes/admin/views/html-admin-setup-step-3.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Setup page: Step 3 content.
|
4 |
+
*
|
5 |
+
* @package WP Job Manager
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
?>
|
13 |
+
<h3><?php esc_html_e( 'You\'re ready to start using WP Job Manager!', 'wp-job-manager' ); ?></h3>
|
14 |
+
|
15 |
+
<p><?php esc_html_e( 'Wondering what to do now? Here are some of the most common next steps:', 'wp-job-manager' ); ?></p>
|
16 |
+
|
17 |
+
<ul class="wp-job-manager-next-steps">
|
18 |
+
<li><a href="<?php echo esc_url( admin_url( 'edit.php?post_type=job_listing&page=job-manager-settings' ) ); ?>"><?php esc_html_e( 'Tweak your settings', 'wp-job-manager' ); ?></a></li>
|
19 |
+
<li><a href="<?php echo esc_url( admin_url( 'post-new.php?post_type=job_listing' ) ); ?>"><?php esc_html_e( 'Add a job using the admin dashboard', 'wp-job-manager' ); ?></a></li>
|
20 |
+
<?php
|
21 |
+
$permalink = job_manager_get_permalink( 'jobs' );
|
22 |
+
if ( $permalink ) {
|
23 |
+
?>
|
24 |
+
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php esc_html_e( 'View submitted job listings', 'wp-job-manager' ); ?></a></li>
|
25 |
+
<?php } else { ?>
|
26 |
+
<li><a href="https://wpjobmanager.com/document/shortcode-reference/#section-1"><?php esc_html_e( 'Add job listings to a page using the [jobs] shortcode', 'wp-job-manager' ); ?></a></li>
|
27 |
+
<?php } ?>
|
28 |
+
|
29 |
+
<?php
|
30 |
+
$permalink = job_manager_get_permalink( 'submit_job_form' );
|
31 |
+
if ( $permalink ) {
|
32 |
+
?>
|
33 |
+
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php esc_html_e( 'Add a job via the front-end', 'wp-job-manager' ); ?></a></li>
|
34 |
+
<?php } else { ?>
|
35 |
+
<li><a href="https://wpjobmanager.com/document/the-job-submission-form/"><?php esc_html_e( 'Learn to use the front-end job submission board', 'wp-job-manager' ); ?></a></li>
|
36 |
+
<?php } ?>
|
37 |
+
|
38 |
+
<?php
|
39 |
+
$permalink = job_manager_get_permalink( 'job_dashboard' );
|
40 |
+
if ( $permalink ) {
|
41 |
+
?>
|
42 |
+
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php esc_html_e( 'View the job dashboard', 'wp-job-manager' ); ?></a></li>
|
43 |
+
<?php } else { ?>
|
44 |
+
<li><a href="https://wpjobmanager.com/document/the-job-dashboard/"><?php esc_html_e( 'Learn to use the front-end job dashboard', 'wp-job-manager' ); ?></a></li>
|
45 |
+
<?php } ?>
|
46 |
+
</ul>
|
47 |
+
|
48 |
+
<p>
|
49 |
+
<?php
|
50 |
+
echo wp_kses_post(
|
51 |
+
sprintf(
|
52 |
+
// translators: %1$s is the URL to WPJM support documentation; %2$s is the URL to WPJM support forums.
|
53 |
+
__(
|
54 |
+
'If you need help, you can find more detail in our
|
55 |
+
<a href="%1$s">support documentation</a> or post your question on the
|
56 |
+
<a href="%2$s">WP Job Manager support forums</a>. Happy hiring!', 'wp-job-manager'
|
57 |
+
),
|
58 |
+
'https://wpjobmanager.com/documentation/',
|
59 |
+
'https://wordpress.org/support/plugin/wp-job-manager'
|
60 |
+
)
|
61 |
+
);
|
62 |
+
?>
|
63 |
+
</p>
|
64 |
+
|
65 |
+
<div class="wp-job-manager-support-the-plugin">
|
66 |
+
<h3><?php esc_html_e( 'Support WP Job Manager\'s Ongoing Development', 'wp-job-manager' ); ?></h3>
|
67 |
+
<p><?php esc_html_e( 'There are lots of ways you can support open source software projects like this one: contributing code, fixing a bug, assisting with non-English translation, or just telling your friends about WP Job Manager to help spread the word. We appreciate your support!', 'wp-job-manager' ); ?></p>
|
68 |
+
<ul>
|
69 |
+
<li class="icon-review"><a href="https://wordpress.org/support/view/plugin-reviews/wp-job-manager#postform"><?php esc_html_e( 'Leave a positive review', 'wp-job-manager' ); ?></a></li>
|
70 |
+
<li class="icon-localization"><a href="https://translate.wordpress.org/projects/wp-plugins/wp-job-manager"><?php esc_html_e( 'Contribute a localization', 'wp-job-manager' ); ?></a></li>
|
71 |
+
<li class="icon-code"><a href="https://github.com/mikejolley/WP-Job-Manager"><?php esc_html_e( 'Contribute code or report a bug', 'wp-job-manager' ); ?></a></li>
|
72 |
+
<li class="icon-forum"><a href="https://wordpress.org/support/plugin/wp-job-manager"><?php esc_html_e( 'Help other users on the forums', 'wp-job-manager' ); ?></a></li>
|
73 |
+
</ul>
|
74 |
+
</div>
|
includes/class-wp-job-manager-ajax.php
CHANGED
@@ -50,6 +50,7 @@ class WP_Job_Manager_Ajax {
|
|
50 |
add_action( 'wp_ajax_job_manager_get_listings', array( $this, 'get_listings' ) );
|
51 |
add_action( 'wp_ajax_nopriv_job_manager_upload_file', array( $this, 'upload_file' ) );
|
52 |
add_action( 'wp_ajax_job_manager_upload_file', array( $this, 'upload_file' ) );
|
|
|
53 |
}
|
54 |
|
55 |
/**
|
@@ -296,6 +297,139 @@ class WP_Job_Manager_Ajax {
|
|
296 |
|
297 |
wp_send_json( $data );
|
298 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
}
|
300 |
|
301 |
WP_Job_Manager_Ajax::instance();
|
50 |
add_action( 'wp_ajax_job_manager_get_listings', array( $this, 'get_listings' ) );
|
51 |
add_action( 'wp_ajax_nopriv_job_manager_upload_file', array( $this, 'upload_file' ) );
|
52 |
add_action( 'wp_ajax_job_manager_upload_file', array( $this, 'upload_file' ) );
|
53 |
+
add_action( 'wp_ajax_job_manager_search_users', array( $this, 'ajax_search_users' ) );
|
54 |
}
|
55 |
|
56 |
/**
|
297 |
|
298 |
wp_send_json( $data );
|
299 |
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Checks if user can search for other users in ajax call.
|
303 |
+
*
|
304 |
+
* @return bool
|
305 |
+
*/
|
306 |
+
private static function user_can_search_users() {
|
307 |
+
$user_can_search_users = false;
|
308 |
+
|
309 |
+
/**
|
310 |
+
* Filter the capabilities that are allowed to search for users in ajax call.
|
311 |
+
*
|
312 |
+
* @since 1.32.0
|
313 |
+
*
|
314 |
+
* @params array $user_caps Array of capabilities/roles that are allowed to search for users.
|
315 |
+
*/
|
316 |
+
$allowed_capabilities = apply_filters( 'job_manager_caps_can_search_users', array( 'edit_job_listings' ) );
|
317 |
+
foreach ( $allowed_capabilities as $cap ) {
|
318 |
+
if ( current_user_can( $cap ) ) {
|
319 |
+
$user_can_search_users = true;
|
320 |
+
break;
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
/**
|
325 |
+
* Filters whether the current user can search for users in ajax call.
|
326 |
+
*
|
327 |
+
* @since 1.32.0
|
328 |
+
*
|
329 |
+
* @params bool $user_can_search_users True if they are allowed, false if not.
|
330 |
+
*/
|
331 |
+
return apply_filters( 'job_manager_user_can_search_users', $user_can_search_users );
|
332 |
+
}
|
333 |
+
|
334 |
+
/**
|
335 |
+
* Search for users and return json.
|
336 |
+
*/
|
337 |
+
public static function ajax_search_users() {
|
338 |
+
check_ajax_referer( 'search-users', 'security' );
|
339 |
+
|
340 |
+
if ( ! self::user_can_search_users() ) {
|
341 |
+
wp_die( -1 );
|
342 |
+
}
|
343 |
+
|
344 |
+
$term = sanitize_text_field( wp_unslash( $_GET['term'] ) );
|
345 |
+
$page = isset( $_GET['page'] ) ? intval( $_GET['page'] ) : 1;
|
346 |
+
$per_page = 20;
|
347 |
+
|
348 |
+
$exclude = array();
|
349 |
+
if ( ! empty( $_GET['exclude'] ) ) {
|
350 |
+
$exclude = array_map( 'intval', $_GET['exclude'] );
|
351 |
+
}
|
352 |
+
|
353 |
+
if ( empty( $term ) ) {
|
354 |
+
wp_die();
|
355 |
+
}
|
356 |
+
|
357 |
+
$more_exist = false;
|
358 |
+
$users = array();
|
359 |
+
|
360 |
+
// Search by ID.
|
361 |
+
if ( is_numeric( $term ) && ! in_array( intval( $term ), $exclude, true ) ) {
|
362 |
+
$user = get_user_by( 'ID', intval( $term ) );
|
363 |
+
if ( $user instanceof WP_User ) {
|
364 |
+
$users[ $user->ID ] = $user;
|
365 |
+
}
|
366 |
+
}
|
367 |
+
|
368 |
+
if ( empty( $users ) ) {
|
369 |
+
$search_args = array(
|
370 |
+
'exclude' => $exclude,
|
371 |
+
'search' => '*' . esc_attr( $term ) . '*',
|
372 |
+
'search_columns' => array( 'user_login', 'user_email', 'user_nicename', 'display_name' ),
|
373 |
+
'number' => $per_page,
|
374 |
+
'paged' => $page,
|
375 |
+
'orderby' => 'display_name',
|
376 |
+
'order' => 'ASC',
|
377 |
+
);
|
378 |
+
|
379 |
+
/**
|
380 |
+
* Modify the arguments used for `WP_User_Query` constructor.
|
381 |
+
*
|
382 |
+
* @since 1.32.0
|
383 |
+
*
|
384 |
+
* @see https://codex.wordpress.org/Class_Reference/WP_User_Query
|
385 |
+
*
|
386 |
+
* @params array $search_args Argument array used in `WP_User_Query` constructor.
|
387 |
+
* @params string $term Search term.
|
388 |
+
* @params int[] $exclude Array of IDs to exclude.
|
389 |
+
* @params int $page Current page.
|
390 |
+
*/
|
391 |
+
$search_args = apply_filters( 'job_manager_search_users_args', $search_args, $term, $exclude, $page );
|
392 |
+
|
393 |
+
$user_query = new WP_User_Query( $search_args );
|
394 |
+
$users = $user_query->get_results();
|
395 |
+
$total_pages = ceil( $user_query->get_total() / $per_page );
|
396 |
+
$more_exist = $total_pages > $page;
|
397 |
+
}
|
398 |
+
|
399 |
+
$found_users = array();
|
400 |
+
|
401 |
+
foreach ( $users as $user ) {
|
402 |
+
$found_users[ $user->ID ] = sprintf(
|
403 |
+
// translators: Used in user select. %1$s is the user's display name; #%2$s is the user ID; %3$s is the user email.
|
404 |
+
esc_html__( '%1$s (#%2$s – %3$s)', 'wp-job-manager' ),
|
405 |
+
$user->display_name,
|
406 |
+
absint( $user->ID ),
|
407 |
+
$user->user_email
|
408 |
+
);
|
409 |
+
}
|
410 |
+
|
411 |
+
$response = array(
|
412 |
+
'results' => $found_users,
|
413 |
+
'more' => $more_exist,
|
414 |
+
);
|
415 |
+
|
416 |
+
/**
|
417 |
+
* Modify the search results response for users in ajax call.
|
418 |
+
*
|
419 |
+
* @since 1.32.0
|
420 |
+
*
|
421 |
+
* @params array $response {
|
422 |
+
* @type $results Array of all found users; id => string descriptor
|
423 |
+
* @type $more True if there is an additional page.
|
424 |
+
* }
|
425 |
+
* @params string $term Search term.
|
426 |
+
* @params int[] $exclude Array of IDs to exclude.
|
427 |
+
* @params int $page Current page.
|
428 |
+
*/
|
429 |
+
$response = apply_filters( 'job_manager_search_users_response', $response, $term, $exclude, $page );
|
430 |
+
|
431 |
+
wp_send_json( $response );
|
432 |
+
}
|
433 |
}
|
434 |
|
435 |
WP_Job_Manager_Ajax::instance();
|
includes/class-wp-job-manager-blocks.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Handles Job Manager's Gutenberg Blocks.
|
4 |
+
*
|
5 |
+
* @package wp-job-manager
|
6 |
+
* @since 1.32.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
/**
|
14 |
+
* WP_Job_Manager_Blocks
|
15 |
+
*/
|
16 |
+
class WP_Job_Manager_Blocks {
|
17 |
+
/**
|
18 |
+
* The static instance of the WP_Job_Manager_Blocks
|
19 |
+
*
|
20 |
+
* @var self
|
21 |
+
*/
|
22 |
+
private static $_instance = null;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Singleton instance getter
|
26 |
+
*
|
27 |
+
* @return self
|
28 |
+
*/
|
29 |
+
public static function get_instance() {
|
30 |
+
if ( ! self::$_instance ) {
|
31 |
+
self::$_instance = new WP_Job_Manager_Blocks();
|
32 |
+
}
|
33 |
+
|
34 |
+
return self::$_instance;
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Instance constructor
|
39 |
+
*/
|
40 |
+
private function __construct() {
|
41 |
+
if ( ! function_exists( 'register_block_type' ) ) {
|
42 |
+
return;
|
43 |
+
}
|
44 |
+
|
45 |
+
add_action( 'init', array( $this, 'register_blocks' ) );
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Register all Gutenblocks
|
50 |
+
*/
|
51 |
+
public function register_blocks() {
|
52 |
+
// Add script includes for gutenblocks.
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
WP_Job_Manager_Blocks::get_instance();
|
includes/class-wp-job-manager-data-cleaner.php
CHANGED
@@ -59,6 +59,7 @@ class WP_Job_Manager_Data_Cleaner {
|
|
59 |
'wp_job_manager_version',
|
60 |
'job_manager_installed_terms',
|
61 |
'wpjm_permalinks',
|
|
|
62 |
'job_manager_helper',
|
63 |
'job_manager_date_format',
|
64 |
'job_manager_google_maps_api_key',
|
@@ -97,6 +98,7 @@ class WP_Job_Manager_Data_Cleaner {
|
|
97 |
'job_manager_email_admin_new_job',
|
98 |
'job_manager_email_admin_expiring_job',
|
99 |
'job_manager_email_employer_expiring_job',
|
|
|
100 |
);
|
101 |
|
102 |
/**
|
59 |
'wp_job_manager_version',
|
60 |
'job_manager_installed_terms',
|
61 |
'wpjm_permalinks',
|
62 |
+
'job_manager_permalinks',
|
63 |
'job_manager_helper',
|
64 |
'job_manager_date_format',
|
65 |
'job_manager_google_maps_api_key',
|
98 |
'job_manager_email_admin_new_job',
|
99 |
'job_manager_email_admin_expiring_job',
|
100 |
'job_manager_email_employer_expiring_job',
|
101 |
+
'job_manager_admin_notices',
|
102 |
);
|
103 |
|
104 |
/**
|
includes/class-wp-job-manager-install.php
CHANGED
@@ -21,8 +21,13 @@ class WP_Job_Manager_Install {
|
|
21 |
self::init_user_roles();
|
22 |
self::default_terms();
|
23 |
|
24 |
-
|
|
|
|
|
25 |
if ( ! get_option( 'wp_job_manager_version' ) ) {
|
|
|
|
|
|
|
26 |
set_transient( '_job_manager_activation_redirect', 1, HOUR_IN_SECONDS );
|
27 |
}
|
28 |
|
@@ -47,6 +52,12 @@ class WP_Job_Manager_Install {
|
|
47 |
update_option( 'job_manager_job_dashboard_page_id', $page_id );
|
48 |
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
delete_transient( 'wp_job_manager_addons_html' );
|
51 |
update_option( 'wp_job_manager_version', JOB_MANAGER_VERSION );
|
52 |
}
|
21 |
self::init_user_roles();
|
22 |
self::default_terms();
|
23 |
|
24 |
+
$is_new_install = false;
|
25 |
+
|
26 |
+
// Fresh installs should be prompted to set up their instance.
|
27 |
if ( ! get_option( 'wp_job_manager_version' ) ) {
|
28 |
+
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/admin/class-wp-job-manager-admin-notices.php';
|
29 |
+
WP_Job_Manager_Admin_Notices::add_notice( WP_Job_Manager_Admin_Notices::NOTICE_CORE_SETUP );
|
30 |
+
$is_new_install = true;
|
31 |
set_transient( '_job_manager_activation_redirect', 1, HOUR_IN_SECONDS );
|
32 |
}
|
33 |
|
52 |
update_option( 'job_manager_job_dashboard_page_id', $page_id );
|
53 |
}
|
54 |
|
55 |
+
if ( $is_new_install ) {
|
56 |
+
$permalink_options = (array) json_decode( get_option( 'job_manager_permalinks', '[]' ), true );
|
57 |
+
$permalink_options['jobs_archive'] = '';
|
58 |
+
update_option( 'job_manager_permalinks', wp_json_encode( $permalink_options ) );
|
59 |
+
}
|
60 |
+
|
61 |
delete_transient( 'wp_job_manager_addons_html' );
|
62 |
update_option( 'wp_job_manager_version', JOB_MANAGER_VERSION );
|
63 |
}
|
includes/class-wp-job-manager-post-types.php
CHANGED
@@ -7,6 +7,8 @@
|
|
7 |
*/
|
8 |
class WP_Job_Manager_Post_Types {
|
9 |
|
|
|
|
|
10 |
/**
|
11 |
* The single instance of the class.
|
12 |
*
|
@@ -34,6 +36,7 @@ class WP_Job_Manager_Post_Types {
|
|
34 |
*/
|
35 |
public function __construct() {
|
36 |
add_action( 'init', array( $this, 'register_post_types' ), 0 );
|
|
|
37 |
add_filter( 'admin_head', array( $this, 'admin_head' ) );
|
38 |
add_action( 'job_manager_check_for_expired_jobs', array( $this, 'check_for_expired_jobs' ) );
|
39 |
add_action( 'job_manager_delete_old_previews', array( $this, 'delete_old_previews' ) );
|
@@ -66,12 +69,60 @@ class WP_Job_Manager_Post_Types {
|
|
66 |
add_action( 'update_post_meta', array( $this, 'update_post_meta' ), 10, 4 );
|
67 |
add_action( 'wp_insert_post', array( $this, 'maybe_add_default_meta_data' ), 10, 2 );
|
68 |
|
|
|
69 |
add_action( 'parse_query', array( $this, 'add_feed_query_args' ) );
|
70 |
|
71 |
// Single job content.
|
72 |
$this->job_content_filter( true );
|
73 |
}
|
74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
/**
|
76 |
* Registers the custom post type and taxonomies.
|
77 |
*/
|
@@ -143,6 +194,9 @@ class WP_Job_Manager_Post_Types {
|
|
143 |
'assign_terms' => $admin_capability,
|
144 |
),
|
145 |
'rewrite' => $rewrite,
|
|
|
|
|
|
|
146 |
)
|
147 |
)
|
148 |
);
|
@@ -203,9 +257,21 @@ class WP_Job_Manager_Post_Types {
|
|
203 |
'assign_terms' => $admin_capability,
|
204 |
),
|
205 |
'rewrite' => $rewrite,
|
|
|
|
|
206 |
)
|
207 |
)
|
208 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
}
|
210 |
|
211 |
/**
|
@@ -222,7 +288,7 @@ class WP_Job_Manager_Post_Types {
|
|
222 |
* @param bool $enable_job_archive_page
|
223 |
*/
|
224 |
if ( apply_filters( 'job_manager_enable_job_archive_page', current_theme_supports( 'job-manager-templates' ) ) ) {
|
225 |
-
$has_archive =
|
226 |
} else {
|
227 |
$has_archive = false;
|
228 |
}
|
@@ -239,7 +305,7 @@ class WP_Job_Manager_Post_Types {
|
|
239 |
apply_filters(
|
240 |
'register_post_type_job_listing',
|
241 |
array(
|
242 |
-
'labels'
|
243 |
'name' => $plural,
|
244 |
'singular_name' => $singular,
|
245 |
'menu_name' => __( 'Job Listings', 'wp-job-manager' ),
|
@@ -271,20 +337,25 @@ class WP_Job_Manager_Post_Types {
|
|
271 |
'use_featured_image' => __( 'Use as company logo', 'wp-job-manager' ),
|
272 |
),
|
273 |
// translators: Placeholder %s is the plural label of the job listing post type.
|
274 |
-
'description'
|
275 |
-
'public'
|
276 |
-
'show_ui'
|
277 |
-
'capability_type'
|
278 |
-
'map_meta_cap'
|
279 |
-
'publicly_queryable'
|
280 |
-
'exclude_from_search'
|
281 |
-
'hierarchical'
|
282 |
-
'rewrite'
|
283 |
-
'query_var'
|
284 |
-
'supports'
|
285 |
-
'has_archive'
|
286 |
-
'show_in_nav_menus'
|
287 |
-
'delete_with_user'
|
|
|
|
|
|
|
|
|
|
|
288 |
)
|
289 |
)
|
290 |
);
|
@@ -292,7 +363,7 @@ class WP_Job_Manager_Post_Types {
|
|
292 |
/**
|
293 |
* Feeds
|
294 |
*/
|
295 |
-
add_feed(
|
296 |
|
297 |
/**
|
298 |
* Post status
|
@@ -301,7 +372,7 @@ class WP_Job_Manager_Post_Types {
|
|
301 |
'expired',
|
302 |
array(
|
303 |
'label' => _x( 'Expired', 'post status', 'wp-job-manager' ),
|
304 |
-
'public' =>
|
305 |
'protected' => true,
|
306 |
'exclude_from_search' => true,
|
307 |
'show_in_admin_all_list' => true,
|
@@ -461,6 +532,35 @@ class WP_Job_Manager_Post_Types {
|
|
461 |
remove_filter( 'posts_search', 'get_job_listings_keyword_search' );
|
462 |
}
|
463 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
464 |
/**
|
465 |
* Adds query arguments in order to make sure that the feed properly queries the 'job_listing' type.
|
466 |
*
|
@@ -469,7 +569,7 @@ class WP_Job_Manager_Post_Types {
|
|
469 |
public function add_feed_query_args( $wp ) {
|
470 |
|
471 |
// Let's leave if not the job feed.
|
472 |
-
if ( ! isset( $wp->query_vars['feed'] ) ||
|
473 |
return;
|
474 |
}
|
475 |
|
@@ -675,6 +775,44 @@ class WP_Job_Manager_Post_Types {
|
|
675 |
return $data;
|
676 |
}
|
677 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
678 |
/**
|
679 |
* Retrieves permalink settings.
|
680 |
*
|
@@ -688,19 +826,34 @@ class WP_Job_Manager_Post_Types {
|
|
688 |
switch_to_locale( get_locale() );
|
689 |
}
|
690 |
|
691 |
-
$
|
692 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
693 |
array(
|
694 |
'job_base' => '',
|
695 |
'category_base' => '',
|
696 |
'type_base' => '',
|
|
|
697 |
)
|
698 |
);
|
699 |
|
700 |
-
// Ensure rewrite slugs are set.
|
701 |
-
$permalinks['job_rewrite_slug']
|
702 |
-
$permalinks['category_rewrite_slug']
|
703 |
-
$permalinks['type_rewrite_slug']
|
|
|
704 |
|
705 |
// Restore the original locale.
|
706 |
if ( function_exists( 'restore_current_locale' ) && did_action( 'admin_init' ) ) {
|
@@ -852,4 +1005,18 @@ class WP_Job_Manager_Post_Types {
|
|
852 |
echo '<script type="application/ld+json">' . wp_json_encode( $structured_data ) . '</script>';
|
853 |
}
|
854 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
855 |
}
|
7 |
*/
|
8 |
class WP_Job_Manager_Post_Types {
|
9 |
|
10 |
+
const PERMALINK_OPTION_NAME = 'job_manager_permalinks';
|
11 |
+
|
12 |
/**
|
13 |
* The single instance of the class.
|
14 |
*
|
36 |
*/
|
37 |
public function __construct() {
|
38 |
add_action( 'init', array( $this, 'register_post_types' ), 0 );
|
39 |
+
add_action( 'init', array( $this, 'prepare_block_editor' ) );
|
40 |
add_filter( 'admin_head', array( $this, 'admin_head' ) );
|
41 |
add_action( 'job_manager_check_for_expired_jobs', array( $this, 'check_for_expired_jobs' ) );
|
42 |
add_action( 'job_manager_delete_old_previews', array( $this, 'delete_old_previews' ) );
|
69 |
add_action( 'update_post_meta', array( $this, 'update_post_meta' ), 10, 4 );
|
70 |
add_action( 'wp_insert_post', array( $this, 'maybe_add_default_meta_data' ), 10, 2 );
|
71 |
|
72 |
+
add_action( 'parse_query', array( $this, 'public_search_handler' ) );
|
73 |
add_action( 'parse_query', array( $this, 'add_feed_query_args' ) );
|
74 |
|
75 |
// Single job content.
|
76 |
$this->job_content_filter( true );
|
77 |
}
|
78 |
|
79 |
+
/**
|
80 |
+
* Prepare CPTs for special block editor situations.
|
81 |
+
*/
|
82 |
+
public function prepare_block_editor() {
|
83 |
+
add_filter( 'allowed_block_types', array( $this, 'force_classic_block' ), 10, 2 );
|
84 |
+
|
85 |
+
if ( false === job_manager_multi_job_type() ) {
|
86 |
+
add_filter( 'rest_prepare_taxonomy', array( $this, 'hide_job_type_block_editor_selector' ), 10, 3 );
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Forces job listings to just have the classic block. This is necessary with the use of the classic editor on
|
92 |
+
* the frontend.
|
93 |
+
*
|
94 |
+
* @param array $allowed_block_types
|
95 |
+
* @param WP_Post $post
|
96 |
+
* @return array
|
97 |
+
*/
|
98 |
+
public function force_classic_block( $allowed_block_types, $post ) {
|
99 |
+
if ( 'job_listing' === $post->post_type ) {
|
100 |
+
return array( 'core/freeform' );
|
101 |
+
}
|
102 |
+
return $allowed_block_types;
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* Filters a taxonomy returned from the REST API.
|
107 |
+
*
|
108 |
+
* Allows modification of the taxonomy data right before it is returned.
|
109 |
+
*
|
110 |
+
* @param WP_REST_Response $response The response object.
|
111 |
+
* @param object $taxonomy The original taxonomy object.
|
112 |
+
* @param WP_REST_Request $request Request used to generate the response.
|
113 |
+
*
|
114 |
+
* @return WP_REST_Response
|
115 |
+
*/
|
116 |
+
public function hide_job_type_block_editor_selector( $response, $taxonomy, $request ) {
|
117 |
+
if (
|
118 |
+
'job_listing_type' === $taxonomy->name
|
119 |
+
&& 'edit' === $request->get_param( 'context' )
|
120 |
+
) {
|
121 |
+
$response->data['visibility']['show_ui'] = false;
|
122 |
+
}
|
123 |
+
return $response;
|
124 |
+
}
|
125 |
+
|
126 |
/**
|
127 |
* Registers the custom post type and taxonomies.
|
128 |
*/
|
194 |
'assign_terms' => $admin_capability,
|
195 |
),
|
196 |
'rewrite' => $rewrite,
|
197 |
+
'show_in_rest' => true,
|
198 |
+
'rest_base' => 'job-categories',
|
199 |
+
|
200 |
)
|
201 |
)
|
202 |
);
|
257 |
'assign_terms' => $admin_capability,
|
258 |
),
|
259 |
'rewrite' => $rewrite,
|
260 |
+
'show_in_rest' => true,
|
261 |
+
'rest_base' => 'job-types',
|
262 |
)
|
263 |
)
|
264 |
);
|
265 |
+
if ( function_exists( 'wpjm_job_listing_employment_type_enabled' ) && wpjm_job_listing_employment_type_enabled() ) {
|
266 |
+
register_meta( 'term', 'employment_type', array(
|
267 |
+
'object_subtype' => 'job_listing_type',
|
268 |
+
'show_in_rest' => true,
|
269 |
+
'type' => 'string',
|
270 |
+
'single' => true,
|
271 |
+
'description' => esc_html__( 'Employment Type', 'wp-job-manager' ),
|
272 |
+
'sanitize_callback' => array( $this, 'sanitize_employment_type' ),
|
273 |
+
) );
|
274 |
+
}
|
275 |
}
|
276 |
|
277 |
/**
|
288 |
* @param bool $enable_job_archive_page
|
289 |
*/
|
290 |
if ( apply_filters( 'job_manager_enable_job_archive_page', current_theme_supports( 'job-manager-templates' ) ) ) {
|
291 |
+
$has_archive = $permalink_structure['jobs_archive_rewrite_slug'];
|
292 |
} else {
|
293 |
$has_archive = false;
|
294 |
}
|
305 |
apply_filters(
|
306 |
'register_post_type_job_listing',
|
307 |
array(
|
308 |
+
'labels' => array(
|
309 |
'name' => $plural,
|
310 |
'singular_name' => $singular,
|
311 |
'menu_name' => __( 'Job Listings', 'wp-job-manager' ),
|
337 |
'use_featured_image' => __( 'Use as company logo', 'wp-job-manager' ),
|
338 |
),
|
339 |
// translators: Placeholder %s is the plural label of the job listing post type.
|
340 |
+
'description' => sprintf( __( 'This is where you can create and manage %s.', 'wp-job-manager' ), $plural ),
|
341 |
+
'public' => true,
|
342 |
+
'show_ui' => true,
|
343 |
+
'capability_type' => 'job_listing',
|
344 |
+
'map_meta_cap' => true,
|
345 |
+
'publicly_queryable' => true,
|
346 |
+
'exclude_from_search' => false,
|
347 |
+
'hierarchical' => false,
|
348 |
+
'rewrite' => $rewrite,
|
349 |
+
'query_var' => true,
|
350 |
+
'supports' => array( 'title', 'editor', 'custom-fields', 'publicize', 'thumbnail' ),
|
351 |
+
'has_archive' => $has_archive,
|
352 |
+
'show_in_nav_menus' => false,
|
353 |
+
'delete_with_user' => true,
|
354 |
+
'show_in_rest' => true,
|
355 |
+
'rest_base' => 'job-listings',
|
356 |
+
'rest_controller_class' => 'WP_REST_Posts_Controller',
|
357 |
+
'template' => array( array( 'core/freeform' ) ),
|
358 |
+
'template_lock' => 'all',
|
359 |
)
|
360 |
)
|
361 |
);
|
363 |
/**
|
364 |
* Feeds
|
365 |
*/
|
366 |
+
add_feed( self::get_job_feed_name(), array( $this, 'job_feed' ) );
|
367 |
|
368 |
/**
|
369 |
* Post status
|
372 |
'expired',
|
373 |
array(
|
374 |
'label' => _x( 'Expired', 'post status', 'wp-job-manager' ),
|
375 |
+
'public' => ! isset( $_GET['s'] ),
|
376 |
'protected' => true,
|
377 |
'exclude_from_search' => true,
|
378 |
'show_in_admin_all_list' => true,
|
532 |
remove_filter( 'posts_search', 'get_job_listings_keyword_search' );
|
533 |
}
|
534 |
|
535 |
+
/**
|
536 |
+
* Modifies WordPress Query of public search.
|
537 |
+
*
|
538 |
+
* @param WP_Query $query Query being processed.
|
539 |
+
*/
|
540 |
+
public function public_search_handler( $query ) {
|
541 |
+
if ( ! $query->is_search() ) {
|
542 |
+
return;
|
543 |
+
}
|
544 |
+
|
545 |
+
// Remove filled positions, if necessary.
|
546 |
+
if ( 1 === absint( get_option( 'job_manager_hide_filled_positions' ) ) ) {
|
547 |
+
$meta_query = $query->get( 'meta_query' );
|
548 |
+
if ( ! is_array( $meta_query ) ) {
|
549 |
+
$meta_query = array();
|
550 |
+
}
|
551 |
+
|
552 |
+
$meta_query[] = array(
|
553 |
+
'key' => '_filled',
|
554 |
+
'value' => '1',
|
555 |
+
'compare' => '!=',
|
556 |
+
);
|
557 |
+
|
558 |
+
if ( ! empty( $meta_query ) ) {
|
559 |
+
$query->set( 'meta_query', $meta_query );
|
560 |
+
}
|
561 |
+
}
|
562 |
+
}
|
563 |
+
|
564 |
/**
|
565 |
* Adds query arguments in order to make sure that the feed properly queries the 'job_listing' type.
|
566 |
*
|
569 |
public function add_feed_query_args( $wp ) {
|
570 |
|
571 |
// Let's leave if not the job feed.
|
572 |
+
if ( ! isset( $wp->query_vars['feed'] ) || self::get_job_feed_name() !== $wp->query_vars['feed'] ) {
|
573 |
return;
|
574 |
}
|
575 |
|
775 |
return $data;
|
776 |
}
|
777 |
|
778 |
+
/**
|
779 |
+
* Returns the name of the job RSS feed.
|
780 |
+
*
|
781 |
+
* @return string
|
782 |
+
*/
|
783 |
+
public static function get_job_feed_name() {
|
784 |
+
/**
|
785 |
+
* Change the name of the job feed.
|
786 |
+
*
|
787 |
+
* NOTE: When you override this, you must re-save permalink settings to clear the rewrite cache.
|
788 |
+
*
|
789 |
+
* @since 1.32.0
|
790 |
+
*
|
791 |
+
* @param string $job_feed_name Slug used for the job feed.
|
792 |
+
*/
|
793 |
+
return apply_filters( 'job_manager_job_feed_name', 'job_feed' );
|
794 |
+
}
|
795 |
+
|
796 |
+
/**
|
797 |
+
* Get the permalink settings directly from the option.
|
798 |
+
*
|
799 |
+
* @return array Permalink settings option.
|
800 |
+
*/
|
801 |
+
public static function get_raw_permalink_settings() {
|
802 |
+
/**
|
803 |
+
* Option `wpjm_permalinks` was renamed to match other options in 1.32.0.
|
804 |
+
*
|
805 |
+
* Reference to the old option and support for non-standard plugin updates will be removed in 1.34.0.
|
806 |
+
*/
|
807 |
+
$legacy_permalink_settings = '[]';
|
808 |
+
if ( false !== get_option( 'wpjm_permalinks', false ) ) {
|
809 |
+
$legacy_permalink_settings = wp_json_encode( get_option( 'wpjm_permalinks', array() ) );
|
810 |
+
delete_option( 'wpjm_permalinks' );
|
811 |
+
}
|
812 |
+
|
813 |
+
return (array) json_decode( get_option( self::PERMALINK_OPTION_NAME, $legacy_permalink_settings ), true );
|
814 |
+
}
|
815 |
+
|
816 |
/**
|
817 |
* Retrieves permalink settings.
|
818 |
*
|
826 |
switch_to_locale( get_locale() );
|
827 |
}
|
828 |
|
829 |
+
$permalink_settings = self::get_raw_permalink_settings();
|
830 |
+
|
831 |
+
// First-time activations will get this cleared on activation.
|
832 |
+
if ( ! array_key_exists( 'jobs_archive', $permalink_settings ) ) {
|
833 |
+
// Create entry to prevent future checks.
|
834 |
+
$permalink_settings['jobs_archive'] = '';
|
835 |
+
if ( current_theme_supports( 'job-manager-templates' ) ) {
|
836 |
+
// This isn't the first activation and the theme supports it. Set the default to legacy value.
|
837 |
+
$permalink_settings['jobs_archive'] = _x( 'jobs', 'Post type archive slug - resave permalinks after changing this', 'wp-job-manager' );
|
838 |
+
}
|
839 |
+
update_option( self::PERMALINK_OPTION_NAME, wp_json_encode( $permalink_settings ) );
|
840 |
+
}
|
841 |
+
|
842 |
+
$permalinks = wp_parse_args(
|
843 |
+
$permalink_settings,
|
844 |
array(
|
845 |
'job_base' => '',
|
846 |
'category_base' => '',
|
847 |
'type_base' => '',
|
848 |
+
'jobs_archive' => '',
|
849 |
)
|
850 |
);
|
851 |
|
852 |
+
// Ensure rewrite slugs are set. Use legacy translation options if not.
|
853 |
+
$permalinks['job_rewrite_slug'] = untrailingslashit( empty( $permalinks['job_base'] ) ? _x( 'job', 'Job permalink - resave permalinks after changing this', 'wp-job-manager' ) : $permalinks['job_base'] );
|
854 |
+
$permalinks['category_rewrite_slug'] = untrailingslashit( empty( $permalinks['category_base'] ) ? _x( 'job-category', 'Job category slug - resave permalinks after changing this', 'wp-job-manager' ) : $permalinks['category_base'] );
|
855 |
+
$permalinks['type_rewrite_slug'] = untrailingslashit( empty( $permalinks['type_base'] ) ? _x( 'job-type', 'Job type slug - resave permalinks after changing this', 'wp-job-manager' ) : $permalinks['type_base'] );
|
856 |
+
$permalinks['jobs_archive_rewrite_slug'] = untrailingslashit( empty( $permalinks['jobs_archive'] ) ? 'job-listings' : $permalinks['jobs_archive'] );
|
857 |
|
858 |
// Restore the original locale.
|
859 |
if ( function_exists( 'restore_current_locale' ) && did_action( 'admin_init' ) ) {
|
1005 |
echo '<script type="application/ld+json">' . wp_json_encode( $structured_data ) . '</script>';
|
1006 |
}
|
1007 |
}
|
1008 |
+
|
1009 |
+
/**
|
1010 |
+
* Sanitize and verify employment type.
|
1011 |
+
*
|
1012 |
+
* @param string $employment_type
|
1013 |
+
* @return string
|
1014 |
+
*/
|
1015 |
+
public function sanitize_employment_type( $employment_type ) {
|
1016 |
+
$employment_types = wpjm_job_listing_employment_type_options();
|
1017 |
+
if ( ! isset( $employment_types[ $employment_type ] ) ) {
|
1018 |
+
return null;
|
1019 |
+
}
|
1020 |
+
return $employment_type;
|
1021 |
+
}
|
1022 |
}
|
includes/class-wp-job-manager-shortcodes.php
CHANGED
@@ -150,6 +150,7 @@ class WP_Job_Manager_Shortcodes {
|
|
150 |
|
151 |
break;
|
152 |
case 'relist':
|
|
|
153 |
if ( ! job_manager_get_permalink( 'submit_job_form' ) ) {
|
154 |
throw new Exception( __( 'Missing submission page.', 'wp-job-manager' ) );
|
155 |
}
|
@@ -226,7 +227,7 @@ class WP_Job_Manager_Shortcodes {
|
|
226 |
'job_manager_get_dashboard_jobs_args',
|
227 |
array(
|
228 |
'post_type' => 'job_listing',
|
229 |
-
'post_status' => array( 'publish', 'expired', 'pending' ),
|
230 |
'ignore_sticky_posts' => 1,
|
231 |
'posts_per_page' => $posts_per_page,
|
232 |
'offset' => ( max( 1, get_query_var( 'paged' ) ) - 1 ) * $posts_per_page,
|
150 |
|
151 |
break;
|
152 |
case 'relist':
|
153 |
+
case 'continue':
|
154 |
if ( ! job_manager_get_permalink( 'submit_job_form' ) ) {
|
155 |
throw new Exception( __( 'Missing submission page.', 'wp-job-manager' ) );
|
156 |
}
|
227 |
'job_manager_get_dashboard_jobs_args',
|
228 |
array(
|
229 |
'post_type' => 'job_listing',
|
230 |
+
'post_status' => array( 'publish', 'expired', 'pending', 'draft', 'preview' ),
|
231 |
'ignore_sticky_posts' => 1,
|
232 |
'posts_per_page' => $posts_per_page,
|
233 |
'offset' => ( max( 1, get_query_var( 'paged' ) ) - 1 ) * $posts_per_page,
|
includes/class-wp-job-manager-usage-tracking.php
CHANGED
@@ -107,7 +107,7 @@ class WP_Job_Manager_Usage_Tracking extends WP_Job_Manager_Usage_Tracking_Base {
|
|
107 |
// translators: Placeholder %s is a URL to the document on wpjobmanager.com with info on usage tracking.
|
108 |
__(
|
109 |
'We\'d love if you helped us make WP Job Manager better by allowing us to collect
|
110 |
-
<a href="%s"
|
111 |
collected, and you can opt out at any time.',
|
112 |
'wp-job-manager'
|
113 |
), self::WPJM_TRACKING_INFO_URL
|
@@ -174,7 +174,7 @@ class WP_Job_Manager_Usage_Tracking extends WP_Job_Manager_Usage_Tracking_Base {
|
|
174 |
*/
|
175 |
__(
|
176 |
'Help us make WP Job Manager better by allowing us to collect
|
177 |
-
<a href="%s"
|
178 |
No sensitive information is collected.', 'wp-job-manager'
|
179 |
), self::WPJM_TRACKING_INFO_URL
|
180 |
);
|
107 |
// translators: Placeholder %s is a URL to the document on wpjobmanager.com with info on usage tracking.
|
108 |
__(
|
109 |
'We\'d love if you helped us make WP Job Manager better by allowing us to collect
|
110 |
+
<a href="%s">usage tracking data</a>. No sensitive information is
|
111 |
collected, and you can opt out at any time.',
|
112 |
'wp-job-manager'
|
113 |
), self::WPJM_TRACKING_INFO_URL
|
174 |
*/
|
175 |
__(
|
176 |
'Help us make WP Job Manager better by allowing us to collect
|
177 |
+
<a href="%s">usage tracking data</a>.
|
178 |
No sensitive information is collected.', 'wp-job-manager'
|
179 |
), self::WPJM_TRACKING_INFO_URL
|
180 |
);
|
includes/forms/class-wp-job-manager-form-submit-job.php
CHANGED
@@ -79,6 +79,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
79 |
),
|
80 |
'done' => array(
|
81 |
'name' => __( 'Done', 'wp-job-manager' ),
|
|
|
82 |
'view' => array( $this, 'done' ),
|
83 |
'priority' => 30,
|
84 |
),
|
@@ -120,7 +121,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
120 |
$this->job_id = 0;
|
121 |
$this->step = 0;
|
122 |
}
|
123 |
-
} elseif ( ! in_array( $job_status, apply_filters( 'job_manager_valid_submit_job_statuses', array( 'preview' ) ), true ) ) {
|
124 |
$this->job_id = 0;
|
125 |
$this->step = 0;
|
126 |
}
|
@@ -598,8 +599,13 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
598 |
throw new Exception( __( 'You must be signed in to post a new listing.', 'wp-job-manager' ) );
|
599 |
}
|
600 |
|
|
|
|
|
|
|
|
|
|
|
601 |
// Update the job.
|
602 |
-
$this->save_job( $values['job']['job_title'], $values['job']['job_description'], $
|
603 |
$this->update_job_data( $values );
|
604 |
|
605 |
// Successful, show next step.
|
@@ -876,7 +882,13 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
876 |
* Displays the final screen after a job listing has been submitted.
|
877 |
*/
|
878 |
public function done() {
|
879 |
-
do_action( 'job_manager_job_submitted', $this->job_id );
|
880 |
get_job_manager_template( 'job-submitted.php', array( 'job' => get_post( $this->job_id ) ) );
|
881 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
882 |
}
|
79 |
),
|
80 |
'done' => array(
|
81 |
'name' => __( 'Done', 'wp-job-manager' ),
|
82 |
+
'before' => array( $this, 'done_before' ),
|
83 |
'view' => array( $this, 'done' ),
|
84 |
'priority' => 30,
|
85 |
),
|
121 |
$this->job_id = 0;
|
122 |
$this->step = 0;
|
123 |
}
|
124 |
+
} elseif ( ! in_array( $job_status, apply_filters( 'job_manager_valid_submit_job_statuses', array( 'preview', 'draft' ) ), true ) ) {
|
125 |
$this->job_id = 0;
|
126 |
$this->step = 0;
|
127 |
}
|
599 |
throw new Exception( __( 'You must be signed in to post a new listing.', 'wp-job-manager' ) );
|
600 |
}
|
601 |
|
602 |
+
$post_status = '';
|
603 |
+
if ( ! $this->job_id || 'draft' === get_post_status( $this->job_id ) ) {
|
604 |
+
$post_status = 'preview';
|
605 |
+
}
|
606 |
+
|
607 |
// Update the job.
|
608 |
+
$this->save_job( $values['job']['job_title'], $values['job']['job_description'], $post_status, $values );
|
609 |
$this->update_job_data( $values );
|
610 |
|
611 |
// Successful, show next step.
|
882 |
* Displays the final screen after a job listing has been submitted.
|
883 |
*/
|
884 |
public function done() {
|
|
|
885 |
get_job_manager_template( 'job-submitted.php', array( 'job' => get_post( $this->job_id ) ) );
|
886 |
}
|
887 |
+
|
888 |
+
/**
|
889 |
+
* Handles the job submissions before the view is called.
|
890 |
+
*/
|
891 |
+
public function done_before() {
|
892 |
+
do_action( 'job_manager_job_submitted', $this->job_id );
|
893 |
+
}
|
894 |
}
|
includes/rest-api/class-wp-job-manager-registrable-job-listings.php
CHANGED
@@ -79,11 +79,12 @@ class WP_Job_Manager_Registrable_Job_Listings implements WP_Job_Manager_REST_Int
|
|
79 |
return false;
|
80 |
}
|
81 |
|
82 |
-
if ( $wp_post_types[ $post_type_name ]->
|
83 |
return true;
|
84 |
}
|
85 |
|
86 |
// Optionally customize the rest_base or controller class.
|
|
|
87 |
$wp_post_types[ $post_type_name ]->show_in_rest = true;
|
88 |
$wp_post_types[ $post_type_name ]->rest_base = 'job-listings';
|
89 |
$wp_post_types[ $post_type_name ]->rest_controller_class = 'WP_REST_Posts_Controller';
|
79 |
return false;
|
80 |
}
|
81 |
|
82 |
+
if ( ! empty( $wp_post_types[ $post_type_name ]->mixtape_show_in_rest ) ) {
|
83 |
return true;
|
84 |
}
|
85 |
|
86 |
// Optionally customize the rest_base or controller class.
|
87 |
+
$wp_post_types[ $post_type_name ]->mixtape_show_in_rest = true;
|
88 |
$wp_post_types[ $post_type_name ]->show_in_rest = true;
|
89 |
$wp_post_types[ $post_type_name ]->rest_base = 'job-listings';
|
90 |
$wp_post_types[ $post_type_name ]->rest_controller_class = 'WP_REST_Posts_Controller';
|
includes/rest-api/class-wp-job-manager-registrable-taxonomy-type.php
CHANGED
@@ -67,12 +67,13 @@ abstract class WP_Job_Manager_Registrable_Taxonomy_Type implements WP_Job_Manage
|
|
67 |
return false;
|
68 |
}
|
69 |
|
70 |
-
if ( $wp_taxonomies[ $taxonomy_type ]->
|
71 |
return true;
|
72 |
}
|
73 |
|
74 |
-
$wp_taxonomies[ $taxonomy_type ]->
|
75 |
-
$wp_taxonomies[ $taxonomy_type ]->
|
|
|
76 |
|
77 |
$this->model_prototype = $environment->model( $this->get_model_class_name() );
|
78 |
|
67 |
return false;
|
68 |
}
|
69 |
|
70 |
+
if ( ! empty( $wp_taxonomies[ $taxonomy_type ]->mixtape_show_in_rest ) ) {
|
71 |
return true;
|
72 |
}
|
73 |
|
74 |
+
$wp_taxonomies[ $taxonomy_type ]->mixtape_show_in_rest = true;
|
75 |
+
$wp_taxonomies[ $taxonomy_type ]->show_in_rest = true;
|
76 |
+
$wp_taxonomies[ $taxonomy_type ]->rest_base = $this->get_rest_base();
|
77 |
|
78 |
$this->model_prototype = $environment->model( $this->get_model_class_name() );
|
79 |
|
languages/wp-job-manager.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the GPL2+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: WP Job Manager 1.
|
6 |
"Report-Msgid-Bugs-To: https://github.com/Automattic/WP-Job-Manager/issues\n"
|
7 |
-
"POT-Creation-Date: 2018-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -23,15 +23,15 @@ msgstr ""
|
|
23 |
msgid "<a href=\"%s\">Switch to primary language</a> to edit this setting."
|
24 |
msgstr ""
|
25 |
|
26 |
-
#: includes/abstracts/abstract-wp-job-manager-form.php:
|
27 |
-
#: includes/abstracts/abstract-wp-job-manager-form.php:
|
28 |
#. translators: Placeholder is for the label of the reCAPTCHA field.
|
29 |
#. translators: %s is the name of the form validation that failed.
|
30 |
msgid "\"%s\" check failed. Please try again."
|
31 |
msgstr ""
|
32 |
|
33 |
#: includes/admin/class-wp-job-manager-addons.php:124
|
34 |
-
#: includes/admin/class-wp-job-manager-admin.php:
|
35 |
#: includes/admin/views/html-admin-page-addons.php:2
|
36 |
msgid "WP Job Manager Add-ons"
|
37 |
msgstr ""
|
@@ -41,25 +41,33 @@ msgstr ""
|
|
41 |
msgid "Licenses"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: includes/admin/class-wp-job-manager-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
#. translators: %s is the URL for the page where users can go to update
|
46 |
#. WordPress.
|
47 |
msgid ""
|
48 |
"<strong>WP Job Manager</strong> requires a more recent version of "
|
49 |
-
"WordPress. <a href=\"%s\">Please update
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: includes/admin/class-wp-job-manager-admin.php:
|
53 |
#. translators: Placeholder (%s) is the URL where users can go to update
|
54 |
#. WordPress.
|
55 |
msgid "<a href=\"%s\" style=\"color: red\">WordPress Update Required</a>"
|
56 |
msgstr ""
|
57 |
|
58 |
-
#: includes/admin/class-wp-job-manager-admin.php:
|
59 |
msgid "Settings"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: includes/admin/class-wp-job-manager-admin.php:
|
63 |
msgid "Add-ons"
|
64 |
msgstr ""
|
65 |
|
@@ -111,83 +119,83 @@ msgstr ""
|
|
111 |
msgid "%s marked as not filled"
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
115 |
msgid "Select category"
|
116 |
msgstr ""
|
117 |
|
118 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
119 |
msgid "Select Filled"
|
120 |
msgstr ""
|
121 |
|
122 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
123 |
msgid "Filled"
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
127 |
msgid "Not Filled"
|
128 |
msgstr ""
|
129 |
|
130 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
131 |
msgid "Select Featured"
|
132 |
msgstr ""
|
133 |
|
134 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
135 |
msgid "Featured"
|
136 |
msgstr ""
|
137 |
|
138 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
139 |
msgid "Not Featured"
|
140 |
msgstr ""
|
141 |
|
142 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
143 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
144 |
msgid "Position"
|
145 |
msgstr ""
|
146 |
|
147 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
148 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
149 |
#. the URL to view the listing.
|
150 |
msgid "%1$s updated. <a href=\"%2$s\">View</a>"
|
151 |
msgstr ""
|
152 |
|
153 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
154 |
msgid "Custom field updated."
|
155 |
msgstr ""
|
156 |
|
157 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
158 |
msgid "Custom field deleted."
|
159 |
msgstr ""
|
160 |
|
161 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
162 |
#. translators: %s is the singular name of the job listing post type.
|
163 |
msgid "%s updated."
|
164 |
msgstr ""
|
165 |
|
166 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
167 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
168 |
#. the revision number.
|
169 |
msgid "%1$s restored to revision from %2$s"
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
173 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
174 |
#. the URL to view the listing.
|
175 |
msgid "%1$s published. <a href=\"%2$s\">View</a>"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
179 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
180 |
#. the URL to view the listing.
|
181 |
msgid "%s saved."
|
182 |
msgstr ""
|
183 |
|
184 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
185 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
186 |
#. the URL to preview the listing.
|
187 |
msgid "%1$s submitted. <a target=\"_blank\" href=\"%2$s\">Preview</a>"
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
191 |
#. translators: %1$s is the singular name of the post type; %2$s is the date
|
192 |
#. the post will be published; %3$s is the URL to preview the listing.
|
193 |
msgid ""
|
@@ -195,88 +203,88 @@ msgid ""
|
|
195 |
"href=\"%3$s\">Preview</a>"
|
196 |
msgstr ""
|
197 |
|
198 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
199 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
200 |
#. the URL to view the listing.
|
201 |
msgid "%1$s draft updated. <a target=\"_blank\" href=\"%2$s\">Preview</a>"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
205 |
msgid "Type"
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
209 |
#: includes/admin/class-wp-job-manager-writepanels.php:57
|
210 |
#: includes/class-wp-job-manager-email-notifications.php:234
|
211 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
212 |
#: includes/widgets/class-wp-job-manager-widget-recent-jobs.php:40
|
213 |
#: templates/job-filters.php:35 templates/job-filters.php:36
|
214 |
msgid "Location"
|
215 |
msgstr ""
|
216 |
|
217 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
218 |
msgid "Status"
|
219 |
msgstr ""
|
220 |
|
221 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
222 |
msgid "Posted"
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
226 |
msgid "Expires"
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
230 |
#: includes/admin/class-wp-job-manager-settings.php:157
|
231 |
msgid "Categories"
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
235 |
msgid "Featured?"
|
236 |
msgstr ""
|
237 |
|
238 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
239 |
-
#: includes/class-wp-job-manager-shortcodes.php:
|
240 |
msgid "Filled?"
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
244 |
msgid "Actions"
|
245 |
msgstr ""
|
246 |
|
247 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
248 |
#. translators: %d is the post ID for the job listing.
|
249 |
msgid "ID: %d"
|
250 |
msgstr ""
|
251 |
|
252 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
253 |
#. translators: %s placeholder is the username of the user.
|
254 |
msgid "by a guest"
|
255 |
msgstr ""
|
256 |
|
257 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
258 |
msgid "by %s"
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
262 |
msgid "Approve"
|
263 |
msgstr ""
|
264 |
|
265 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
266 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:
|
267 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:
|
268 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:
|
269 |
msgid "View"
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
273 |
-
#: includes/class-wp-job-manager-post-types.php:
|
274 |
#: templates/job-dashboard.php:52 templates/job-dashboard.php:70
|
275 |
msgid "Edit"
|
276 |
msgstr ""
|
277 |
|
278 |
-
#: includes/admin/class-wp-job-manager-cpt.php:
|
279 |
-
#: templates/job-dashboard.php:
|
280 |
msgid "Delete"
|
281 |
msgstr ""
|
282 |
|
@@ -292,6 +300,10 @@ msgstr ""
|
|
292 |
msgid "Job type base"
|
293 |
msgstr ""
|
294 |
|
|
|
|
|
|
|
|
|
295 |
#: includes/admin/class-wp-job-manager-settings.php:84
|
296 |
msgid "General"
|
297 |
msgstr ""
|
@@ -337,8 +349,8 @@ msgid ""
|
|
337 |
msgstr ""
|
338 |
|
339 |
#: includes/admin/class-wp-job-manager-settings.php:117
|
340 |
-
#: includes/class-wp-job-manager-post-types.php:
|
341 |
-
#: includes/class-wp-job-manager-post-types.php:
|
342 |
msgid "Job Listings"
|
343 |
msgstr ""
|
344 |
|
@@ -722,94 +734,265 @@ msgstr ""
|
|
722 |
msgid "Select a page…"
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
726 |
msgid "Setup"
|
727 |
msgstr ""
|
728 |
|
729 |
-
#: includes/admin/class-wp-job-manager-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
730 |
msgid "WP Job Manager Setup"
|
731 |
msgstr ""
|
732 |
|
733 |
-
#: includes/admin/
|
734 |
msgid "1. Introduction"
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: includes/admin/
|
738 |
msgid "2. Page Setup"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: includes/admin/
|
742 |
msgid "3. Done"
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: includes/admin/
|
746 |
msgid "Welcome to the Setup Wizard!"
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: includes/admin/
|
750 |
msgid ""
|
751 |
"Thanks for installing <em>WP Job Manager</em>! Let's get your site ready to "
|
752 |
"accept job listings."
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: includes/admin/
|
756 |
msgid ""
|
757 |
"This setup wizard will walk you through the process of creating pages for "
|
758 |
"job submissions, management, and listings."
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: includes/admin/
|
762 |
#. translators: Placeholder %s is the path to WPJM documentation site.
|
763 |
msgid ""
|
764 |
"If you'd prefer to skip this and set up your pages manually, our <a "
|
765 |
"href=\"%s\">documentation</a> will walk you through each step."
|
766 |
msgstr ""
|
767 |
|
768 |
-
#: includes/admin/
|
769 |
msgid "Start setup"
|
770 |
msgstr ""
|
771 |
|
772 |
-
#: includes/admin/
|
773 |
msgid "Skip setup. I will set up the plugin manually."
|
774 |
msgstr ""
|
775 |
|
776 |
-
#: includes/admin/
|
777 |
msgid "Page Setup"
|
778 |
msgstr ""
|
779 |
|
780 |
-
#: includes/admin/
|
781 |
msgid ""
|
782 |
"With WP Job Manager, employers and applicants can post, manage, and browse "
|
783 |
"job listings right on your website. Tell us which of these common pages "
|
784 |
"you'd like your site to have and we'll create and configure them for you."
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: includes/admin/
|
788 |
#. translators: %1$s is URL to WordPress core shortcode documentation. %2$s is
|
789 |
#. URL to WPJM specific shortcode reference.
|
790 |
msgid ""
|
791 |
"(These pages are created using <a href=\"%1$s\" title=\"What is a "
|
792 |
-
"shortcode?\"
|
793 |
"\t\t\t\t\t\t\t\twhich we take care of in this step. If you'd like to build "
|
794 |
-
"these pages yourself or want to add one of these options to an existing
|
795 |
"\t\t\t\t\t\t\t\tpage on your site, you can skip this step and take a look "
|
796 |
-
"at <a href=\"%2$s\"
|
797 |
-
"
|
798 |
msgstr ""
|
799 |
|
800 |
-
#: includes/admin/
|
801 |
msgid "Page Title"
|
802 |
msgstr ""
|
803 |
|
804 |
-
#: includes/admin/
|
805 |
msgid "Page Description"
|
806 |
msgstr ""
|
807 |
|
808 |
-
#: includes/admin/
|
809 |
msgid "Content Shortcode"
|
810 |
msgstr ""
|
811 |
|
812 |
-
#: includes/admin/
|
813 |
msgid ""
|
814 |
"Creates a page that allows employers to post new jobs directly from a page "
|
815 |
"on your website, instead of requiring them to log in to an admin area. If "
|
@@ -817,7 +1000,7 @@ msgid ""
|
|
817 |
"the admin dashboard only -- you can uncheck this setting."
|
818 |
msgstr ""
|
819 |
|
820 |
-
#: includes/admin/
|
821 |
msgid ""
|
822 |
"Creates a page that allows employers to manage their job listings directly "
|
823 |
"from a page on your website, instead of requiring them to log in to an "
|
@@ -825,70 +1008,70 @@ msgid ""
|
|
825 |
"only, you can uncheck this setting."
|
826 |
msgstr ""
|
827 |
|
828 |
-
#: includes/admin/
|
829 |
msgid "Creates a page where visitors can browse, search, and filter job listings."
|
830 |
msgstr ""
|
831 |
|
832 |
-
#: includes/admin/
|
833 |
msgid "Skip this step"
|
834 |
msgstr ""
|
835 |
|
836 |
-
#: includes/admin/
|
837 |
msgid "You're ready to start using WP Job Manager!"
|
838 |
msgstr ""
|
839 |
|
840 |
-
#: includes/admin/
|
841 |
msgid "Wondering what to do now? Here are some of the most common next steps:"
|
842 |
msgstr ""
|
843 |
|
844 |
-
#: includes/admin/
|
845 |
msgid "Tweak your settings"
|
846 |
msgstr ""
|
847 |
|
848 |
-
#: includes/admin/
|
849 |
msgid "Add a job using the admin dashboard"
|
850 |
msgstr ""
|
851 |
|
852 |
-
#: includes/admin/
|
853 |
msgid "View submitted job listings"
|
854 |
msgstr ""
|
855 |
|
856 |
-
#: includes/admin/
|
857 |
msgid "Add job listings to a page using the [jobs] shortcode"
|
858 |
msgstr ""
|
859 |
|
860 |
-
#: includes/admin/
|
861 |
msgid "Add a job via the front-end"
|
862 |
msgstr ""
|
863 |
|
864 |
-
#: includes/admin/
|
865 |
msgid "Learn to use the front-end job submission board"
|
866 |
msgstr ""
|
867 |
|
868 |
-
#: includes/admin/
|
869 |
msgid "View the job dashboard"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: includes/admin/
|
873 |
msgid "Learn to use the front-end job dashboard"
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: includes/admin/
|
877 |
#. translators: %1$s is the URL to WPJM support documentation; %2$s is the URL
|
878 |
#. to WPJM support forums.
|
879 |
msgid ""
|
880 |
-
"If you need help, you can find more detail in our
|
881 |
"\t\t\t\t\t\t\t<a href=\"%1$s\">support documentation</a> or post your "
|
882 |
"question on the\n"
|
883 |
"\t\t\t\t\t\t\t<a href=\"%2$s\">WP Job Manager support forums</a>. Happy "
|
884 |
"hiring!"
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: includes/admin/
|
888 |
msgid "Support WP Job Manager's Ongoing Development"
|
889 |
msgstr ""
|
890 |
|
891 |
-
#: includes/admin/
|
892 |
msgid ""
|
893 |
"There are lots of ways you can support open source software projects like "
|
894 |
"this one: contributing code, fixing a bug, assisting with non-English "
|
@@ -896,183 +1079,30 @@ msgid ""
|
|
896 |
"spread the word. We appreciate your support!"
|
897 |
msgstr ""
|
898 |
|
899 |
-
#: includes/admin/
|
900 |
msgid "Leave a positive review"
|
901 |
msgstr ""
|
902 |
|
903 |
-
#: includes/admin/
|
904 |
msgid "Contribute a localization"
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: includes/admin/
|
908 |
msgid "Contribute code or report a bug"
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: includes/admin/
|
912 |
msgid "Help other users on the forums"
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: includes/
|
916 |
-
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:101
|
917 |
-
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:120
|
918 |
-
#: includes/rest-api/class-wp-job-manager-models-job-types-custom-fields.php:36
|
919 |
-
msgid "Employment Type"
|
920 |
-
msgstr ""
|
921 |
-
|
922 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:58
|
923 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:187
|
924 |
-
msgid "e.g. \"London\""
|
925 |
-
msgstr ""
|
926 |
-
|
927 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:59
|
928 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:28
|
929 |
-
msgid "Leave this blank if the location is not important."
|
930 |
-
msgstr ""
|
931 |
-
|
932 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:63
|
933 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:32
|
934 |
-
msgid "Application Email or URL"
|
935 |
-
msgstr ""
|
936 |
-
|
937 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:64
|
938 |
-
msgid "URL or email which applicants use to apply"
|
939 |
-
msgstr ""
|
940 |
-
|
941 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:65
|
942 |
-
msgid ""
|
943 |
-
"This field is required for the \"application\" area to appear beneath the "
|
944 |
-
"listing."
|
945 |
-
msgstr ""
|
946 |
-
|
947 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:70
|
948 |
-
#: includes/class-wp-job-manager-data-exporter.php:53
|
949 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:37
|
950 |
-
msgid "Company Name"
|
951 |
-
msgstr ""
|
952 |
-
|
953 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:75
|
954 |
-
#: includes/class-wp-job-manager-data-exporter.php:54
|
955 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:41
|
956 |
-
msgid "Company Website"
|
957 |
-
msgstr ""
|
958 |
-
|
959 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:80
|
960 |
-
#: includes/class-wp-job-manager-data-exporter.php:55
|
961 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:45
|
962 |
-
msgid "Company Tagline"
|
963 |
-
msgstr ""
|
964 |
-
|
965 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:81
|
966 |
-
msgid "Brief description about the company"
|
967 |
-
msgstr ""
|
968 |
-
|
969 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:85
|
970 |
-
#: includes/class-wp-job-manager-data-exporter.php:56
|
971 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:49
|
972 |
-
msgid "Company Twitter"
|
973 |
-
msgstr ""
|
974 |
-
|
975 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:90
|
976 |
-
#: includes/class-wp-job-manager-data-exporter.php:57
|
977 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:53
|
978 |
-
msgid "Company Video"
|
979 |
-
msgstr ""
|
980 |
-
|
981 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:91
|
982 |
-
msgid "URL to the company video"
|
983 |
-
msgstr ""
|
984 |
-
|
985 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:96
|
986 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:57
|
987 |
-
msgid "Position Filled"
|
988 |
-
msgstr ""
|
989 |
-
|
990 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:99
|
991 |
-
msgid "Filled listings will no longer accept applications."
|
992 |
-
msgstr ""
|
993 |
-
|
994 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:104
|
995 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:64
|
996 |
-
msgid "Featured Listing"
|
997 |
-
msgstr ""
|
998 |
-
|
999 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:106
|
1000 |
-
msgid ""
|
1001 |
-
"Featured listings will be sticky during searches, and can be styled "
|
1002 |
-
"differently."
|
1003 |
-
msgstr ""
|
1004 |
-
|
1005 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:111
|
1006 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:68
|
1007 |
-
msgid "Listing Expiry Date"
|
1008 |
-
msgstr ""
|
1009 |
-
|
1010 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:120
|
1011 |
-
#: includes/class-wp-job-manager-email-notifications.php:288
|
1012 |
-
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:75
|
1013 |
-
msgid "Posted by"
|
1014 |
-
msgstr ""
|
1015 |
-
|
1016 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:163
|
1017 |
-
#. translators: Placeholder %s is the singular name for a job listing post
|
1018 |
-
#. type.
|
1019 |
-
msgid "%s Data"
|
1020 |
-
msgstr ""
|
1021 |
-
|
1022 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:216
|
1023 |
-
msgid "Most Used"
|
1024 |
-
msgstr ""
|
1025 |
-
|
1026 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:282
|
1027 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:287
|
1028 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:292
|
1029 |
-
msgid "Use file"
|
1030 |
-
msgstr ""
|
1031 |
-
|
1032 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:282
|
1033 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:287
|
1034 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:292
|
1035 |
-
msgid "Upload"
|
1036 |
-
msgstr ""
|
1037 |
-
|
1038 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:292
|
1039 |
-
msgid "Add file"
|
1040 |
-
msgstr ""
|
1041 |
-
|
1042 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:557
|
1043 |
-
msgid "Guest User"
|
1044 |
-
msgstr ""
|
1045 |
-
|
1046 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:560
|
1047 |
-
msgid "Change"
|
1048 |
-
msgstr ""
|
1049 |
-
|
1050 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:564
|
1051 |
-
msgid "Enter the ID of the user, or leave blank if submitted by a guest."
|
1052 |
-
msgstr ""
|
1053 |
-
|
1054 |
-
#: includes/admin/class-wp-job-manager-writepanels.php:630
|
1055 |
-
#. translators: %1$s is placeholder for singular name of the job listing post
|
1056 |
-
#. type; %2$s is the intl formatted date the listing was last modified.
|
1057 |
-
msgid "%1$s was last modified by the user on %2$s."
|
1058 |
-
msgstr ""
|
1059 |
-
|
1060 |
-
#: includes/admin/views/html-admin-page-addons.php:13
|
1061 |
-
msgid "More Information →"
|
1062 |
-
msgstr ""
|
1063 |
-
|
1064 |
-
#: includes/admin/views/html-admin-page-addons.php:43
|
1065 |
-
msgid "No add-ons were found."
|
1066 |
-
msgstr ""
|
1067 |
-
|
1068 |
-
#: includes/class-wp-job-manager-ajax.php:172
|
1069 |
#. translators: Placeholder %d is the number of found search results.
|
1070 |
msgid "Search completed. Found %d matching record."
|
1071 |
msgid_plural "Search completed. Found %d matching records."
|
1072 |
msgstr[0] ""
|
1073 |
msgstr[1] ""
|
1074 |
|
1075 |
-
#: includes/class-wp-job-manager-ajax.php:
|
1076 |
msgid "You must be logged in to upload files using this method."
|
1077 |
msgstr ""
|
1078 |
|
@@ -1081,7 +1111,7 @@ msgid "WP Job Manager"
|
|
1081 |
msgstr ""
|
1082 |
|
1083 |
#: includes/class-wp-job-manager-data-exporter.php:52
|
1084 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1085 |
msgid "Company Logo"
|
1086 |
msgstr ""
|
1087 |
|
@@ -1094,19 +1124,19 @@ msgid "Job title"
|
|
1094 |
msgstr ""
|
1095 |
|
1096 |
#: includes/class-wp-job-manager-email-notifications.php:243
|
1097 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1098 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1099 |
msgid "Job type"
|
1100 |
msgstr ""
|
1101 |
|
1102 |
#: includes/class-wp-job-manager-email-notifications.php:253
|
1103 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1104 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1105 |
msgid "Job category"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
#: includes/class-wp-job-manager-email-notifications.php:262
|
1109 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1110 |
msgid "Company name"
|
1111 |
msgstr ""
|
1112 |
|
@@ -1151,17 +1181,17 @@ msgstr ""
|
|
1151 |
msgid "Geocoding error"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
-
#: includes/class-wp-job-manager-install.php:
|
1155 |
msgid "Employer"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1159 |
msgid "Job categories"
|
1160 |
msgstr ""
|
1161 |
|
1162 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1163 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1164 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1165 |
#. translators: Placeholder %s is the plural label of the job listing category
|
1166 |
#. taxonomy type.
|
1167 |
#. translators: Placeholder %s is the plural label of the job listing job type
|
@@ -1171,9 +1201,9 @@ msgstr ""
|
|
1171 |
msgid "Search %s"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1175 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1176 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1177 |
#. translators: Placeholder %s is the plural label of the job listing category
|
1178 |
#. taxonomy type.
|
1179 |
#. translators: Placeholder %s is the plural label of the job listing job type
|
@@ -1183,9 +1213,9 @@ msgstr ""
|
|
1183 |
msgid "All %s"
|
1184 |
msgstr ""
|
1185 |
|
1186 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1187 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1188 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1189 |
#. translators: Placeholder %s is the singular label of the job listing
|
1190 |
#. category taxonomy type.
|
1191 |
#. translators: Placeholder %s is the singular label of the job listing job
|
@@ -1195,8 +1225,8 @@ msgstr ""
|
|
1195 |
msgid "Parent %s"
|
1196 |
msgstr ""
|
1197 |
|
1198 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1199 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1200 |
#. translators: Placeholder %s is the singular label of the job listing
|
1201 |
#. category taxonomy type.
|
1202 |
#. translators: Placeholder %s is the singular label of the job listing job
|
@@ -1204,9 +1234,9 @@ msgstr ""
|
|
1204 |
msgid "Parent %s:"
|
1205 |
msgstr ""
|
1206 |
|
1207 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1208 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1209 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1210 |
#. translators: Placeholder %s is the singular label of the job listing
|
1211 |
#. category taxonomy type.
|
1212 |
#. translators: Placeholder %s is the singular label of the job listing job
|
@@ -1216,8 +1246,8 @@ msgstr ""
|
|
1216 |
msgid "Edit %s"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1220 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1221 |
#. translators: Placeholder %s is the singular label of the job listing
|
1222 |
#. category taxonomy type.
|
1223 |
#. translators: Placeholder %s is the singular label of the job listing job
|
@@ -1225,8 +1255,8 @@ msgstr ""
|
|
1225 |
msgid "Update %s"
|
1226 |
msgstr ""
|
1227 |
|
1228 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1229 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1230 |
#. translators: Placeholder %s is the singular label of the job listing
|
1231 |
#. category taxonomy type.
|
1232 |
#. translators: Placeholder %s is the singular label of the job listing job
|
@@ -1234,8 +1264,8 @@ msgstr ""
|
|
1234 |
msgid "Add New %s"
|
1235 |
msgstr ""
|
1236 |
|
1237 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1238 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1239 |
#. translators: Placeholder %s is the singular label of the job listing
|
1240 |
#. category taxonomy type.
|
1241 |
#. translators: Placeholder %s is the singular label of the job listing job
|
@@ -1243,79 +1273,79 @@ msgstr ""
|
|
1243 |
msgid "New %s Name"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1247 |
msgid "Job types"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1251 |
msgid "Job"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1255 |
msgid "Jobs"
|
1256 |
msgstr ""
|
1257 |
|
1258 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1259 |
msgid "Add New"
|
1260 |
msgstr ""
|
1261 |
|
1262 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1263 |
#. translators: Placeholder %s is the singular label of the job listing post
|
1264 |
#. type.
|
1265 |
msgid "Add %s"
|
1266 |
msgstr ""
|
1267 |
|
1268 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1269 |
#. translators: Placeholder %s is the singular label of the job listing post
|
1270 |
#. type.
|
1271 |
msgid "New %s"
|
1272 |
msgstr ""
|
1273 |
|
1274 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1275 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1276 |
#. translators: Placeholder %s is the singular label of the job listing post
|
1277 |
#. type.
|
1278 |
msgid "View %s"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1282 |
#. translators: Placeholder %s is the singular label of the job listing post
|
1283 |
#. type.
|
1284 |
msgid "No %s found"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1288 |
#. translators: Placeholder %s is the plural label of the job listing post
|
1289 |
#. type.
|
1290 |
msgid "No %s found in trash"
|
1291 |
msgstr ""
|
1292 |
|
1293 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1294 |
msgid "Set company logo"
|
1295 |
msgstr ""
|
1296 |
|
1297 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1298 |
msgid "Remove company logo"
|
1299 |
msgstr ""
|
1300 |
|
1301 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1302 |
msgid "Use as company logo"
|
1303 |
msgstr ""
|
1304 |
|
1305 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1306 |
#. translators: Placeholder %s is the plural label of the job listing post
|
1307 |
#. type.
|
1308 |
msgid "This is where you can create and manage %s."
|
1309 |
msgstr ""
|
1310 |
|
1311 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1312 |
#. translators: Placeholder %s is the number of expired posts of this type.
|
1313 |
msgid "Expired <span class=\"count\">(%s)</span>"
|
1314 |
msgid_plural "Expired <span class=\"count\">(%s)</span>"
|
1315 |
msgstr[0] ""
|
1316 |
msgstr[1] ""
|
1317 |
|
1318 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1319 |
#. translators: Placeholder %s is the number of posts in a preview state.
|
1320 |
msgid "Preview <span class=\"count\">(%s)</span>"
|
1321 |
msgid_plural "Preview <span class=\"count\">(%s)</span>"
|
@@ -1350,27 +1380,27 @@ msgid "%s has been deleted"
|
|
1350 |
msgstr ""
|
1351 |
|
1352 |
#: includes/class-wp-job-manager-shortcodes.php:141
|
1353 |
-
#: includes/class-wp-job-manager-shortcodes.php:
|
1354 |
msgid "Missing submission page."
|
1355 |
msgstr ""
|
1356 |
|
1357 |
-
#: includes/class-wp-job-manager-shortcodes.php:
|
1358 |
#: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:30
|
1359 |
#: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:46
|
1360 |
#: includes/widgets/class-wp-job-manager-widget-recent-jobs.php:30
|
1361 |
msgid "Title"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: includes/class-wp-job-manager-shortcodes.php:
|
1365 |
msgid "Date Posted"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
-
#: includes/class-wp-job-manager-shortcodes.php:
|
1369 |
msgid "Listing Expires"
|
1370 |
msgstr ""
|
1371 |
|
1372 |
-
#: includes/class-wp-job-manager-shortcodes.php:
|
1373 |
-
#: includes/class-wp-job-manager-shortcodes.php:
|
1374 |
msgid "Load more listings"
|
1375 |
msgstr ""
|
1376 |
|
@@ -1380,8 +1410,7 @@ msgstr ""
|
|
1380 |
msgid ""
|
1381 |
"We'd love if you helped us make WP Job Manager better by allowing us to "
|
1382 |
"collect\n"
|
1383 |
-
"\t\t\t\t<a href=\"%s\"
|
1384 |
-
"sensitive information is \n"
|
1385 |
"\t\t\t\tcollected, and you can opt out at any time."
|
1386 |
msgstr ""
|
1387 |
|
@@ -1390,7 +1419,7 @@ msgstr ""
|
|
1390 |
#. data WPJM tracks.
|
1391 |
msgid ""
|
1392 |
"Help us make WP Job Manager better by allowing us to collect\n"
|
1393 |
-
"\t\t\t\t<a href=\"%s\"
|
1394 |
"\t\t\t\tNo sensitive information is collected."
|
1395 |
msgstr ""
|
1396 |
|
@@ -1489,7 +1518,7 @@ msgid "Submit Details"
|
|
1489 |
msgstr ""
|
1490 |
|
1491 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:75
|
1492 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1493 |
#: templates/job-preview.php:22
|
1494 |
msgid "Preview"
|
1495 |
msgstr ""
|
@@ -1498,100 +1527,100 @@ msgstr ""
|
|
1498 |
msgid "Done"
|
1499 |
msgstr ""
|
1500 |
|
1501 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1502 |
msgid "Application email"
|
1503 |
msgstr ""
|
1504 |
|
1505 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1506 |
-
#: wp-job-manager-template.php:
|
1507 |
msgid "you@yourdomain.com"
|
1508 |
msgstr ""
|
1509 |
|
1510 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1511 |
msgid "Application URL"
|
1512 |
msgstr ""
|
1513 |
|
1514 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1515 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1516 |
msgid "http://"
|
1517 |
msgstr ""
|
1518 |
|
1519 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1520 |
msgid "Application email/URL"
|
1521 |
msgstr ""
|
1522 |
|
1523 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1524 |
msgid "Enter an email address or website URL"
|
1525 |
msgstr ""
|
1526 |
|
1527 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1528 |
msgid "Job Title"
|
1529 |
msgstr ""
|
1530 |
|
1531 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1532 |
msgid "Leave this blank if the location is not important"
|
1533 |
msgstr ""
|
1534 |
|
1535 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1536 |
msgid "Choose job type…"
|
1537 |
msgstr ""
|
1538 |
|
1539 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1540 |
msgid "Description"
|
1541 |
msgstr ""
|
1542 |
|
1543 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1544 |
msgid "Enter the name of the company"
|
1545 |
msgstr ""
|
1546 |
|
1547 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1548 |
#: templates/content-single-job_listing-company.php:30
|
1549 |
msgid "Website"
|
1550 |
msgstr ""
|
1551 |
|
1552 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1553 |
msgid "Tagline"
|
1554 |
msgstr ""
|
1555 |
|
1556 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1557 |
msgid "Briefly describe your company"
|
1558 |
msgstr ""
|
1559 |
|
1560 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1561 |
msgid "Video"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1565 |
msgid "A link to a video about your company"
|
1566 |
msgstr ""
|
1567 |
|
1568 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1569 |
msgid "Twitter username"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1573 |
msgid "@yourcompany"
|
1574 |
msgstr ""
|
1575 |
|
1576 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1577 |
msgid "Logo"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1581 |
#. translators: Placeholder %s is the label for the required field.
|
1582 |
msgid "%s is a required field"
|
1583 |
msgstr ""
|
1584 |
|
1585 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1586 |
#. translators: Placeholder %s is the field label that is did not validate.
|
1587 |
msgid "%s is invalid"
|
1588 |
msgstr ""
|
1589 |
|
1590 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1591 |
msgid "Invalid attachment provided."
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1595 |
#: wp-job-manager-functions.php:1277
|
1596 |
#. translators: Placeholder %1$s is field label; %2$s is the file mime type;
|
1597 |
#. %3$s is the allowed mime-types.
|
@@ -1600,44 +1629,44 @@ msgstr ""
|
|
1600 |
msgid "\"%1$s\" (filetype %2$s) needs to be one of the following file types: %3$s"
|
1601 |
msgstr ""
|
1602 |
|
1603 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1604 |
msgid "Please enter a valid application email address"
|
1605 |
msgstr ""
|
1606 |
|
1607 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1608 |
msgid "Please enter a valid application URL"
|
1609 |
msgstr ""
|
1610 |
|
1611 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1612 |
msgid "Please enter a valid application email address or URL"
|
1613 |
msgstr ""
|
1614 |
|
1615 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1616 |
msgid "Please enter a username."
|
1617 |
msgstr ""
|
1618 |
|
1619 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1620 |
msgid "Please enter a password."
|
1621 |
msgstr ""
|
1622 |
|
1623 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1624 |
msgid "Please enter your email address."
|
1625 |
msgstr ""
|
1626 |
|
1627 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1628 |
msgid "Passwords must match."
|
1629 |
msgstr ""
|
1630 |
|
1631 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1632 |
#. translators: Placeholder %s is the password hint.
|
1633 |
msgid "Invalid Password: %s"
|
1634 |
msgstr ""
|
1635 |
|
1636 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1637 |
msgid "Password is not valid."
|
1638 |
msgstr ""
|
1639 |
|
1640 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1641 |
msgid "You must be signed in to post a new listing."
|
1642 |
msgstr ""
|
1643 |
|
@@ -2025,6 +2054,10 @@ msgstr ""
|
|
2025 |
msgid "Relist"
|
2026 |
msgstr ""
|
2027 |
|
|
|
|
|
|
|
|
|
2028 |
#: templates/job-filters.php:30 templates/job-filters.php:31
|
2029 |
msgid "Keywords"
|
2030 |
msgstr ""
|
@@ -2136,47 +2169,54 @@ msgstr ""
|
|
2136 |
msgid "Uploaded files need to be one of the following file types: %s"
|
2137 |
msgstr ""
|
2138 |
|
2139 |
-
#: wp-job-manager-template.php:
|
2140 |
msgid "Inactive"
|
2141 |
msgstr ""
|
2142 |
|
2143 |
-
#: wp-job-manager-template.php:
|
2144 |
#. translators: %1$s is the job listing title; %2$s is the URL for the current
|
2145 |
#. WordPress instance.
|
2146 |
-
msgid "Application via
|
2147 |
msgstr ""
|
2148 |
|
2149 |
-
#: wp-job-manager-template.php:
|
2150 |
msgid "Username"
|
2151 |
msgstr ""
|
2152 |
|
2153 |
-
#: wp-job-manager-template.php:
|
2154 |
msgid "Password"
|
2155 |
msgstr ""
|
2156 |
|
2157 |
-
#: wp-job-manager-template.php:
|
2158 |
msgid "Verify Password"
|
2159 |
msgstr ""
|
2160 |
|
2161 |
-
#: wp-job-manager-template.php:
|
2162 |
msgid "Your email"
|
2163 |
msgstr ""
|
2164 |
|
2165 |
-
#: wp-job-manager-template.php:
|
2166 |
msgid "Posted on "
|
2167 |
msgstr ""
|
2168 |
|
2169 |
-
#: wp-job-manager-template.php:
|
2170 |
#. translators: Placeholder %s is the relative, human readable time since the
|
2171 |
#. job listing was posted.
|
2172 |
msgid "Posted %s ago"
|
2173 |
msgstr ""
|
2174 |
|
2175 |
-
#: wp-job-manager-template.php:
|
2176 |
msgid "Anywhere"
|
2177 |
msgstr ""
|
2178 |
|
2179 |
-
#: wp-job-manager.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2180 |
#. translators: Placeholders %1$s and %2$s are the names of the two cookies
|
2181 |
#. used in WP Job Manager.
|
2182 |
msgid ""
|
@@ -2185,15 +2225,19 @@ msgid ""
|
|
2185 |
"\t\t\t\thave started but have not completed: %1$s and %2$s"
|
2186 |
msgstr ""
|
2187 |
|
2188 |
-
#: wp-job-manager.php:
|
|
|
|
|
|
|
|
|
2189 |
msgid "Load previous listings"
|
2190 |
msgstr ""
|
2191 |
|
2192 |
-
#: wp-job-manager.php:
|
2193 |
msgid "Invalid file type. Accepted types:"
|
2194 |
msgstr ""
|
2195 |
|
2196 |
-
#: wp-job-manager.php:
|
2197 |
msgid "Are you sure you want to delete this listing?"
|
2198 |
msgstr ""
|
2199 |
|
@@ -2211,59 +2255,84 @@ msgstr ""
|
|
2211 |
msgid "Automattic"
|
2212 |
msgstr ""
|
2213 |
|
2214 |
-
#: includes/admin/class-wp-job-manager-admin.php:
|
2215 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2216 |
#. translators: jQuery date format, see
|
2217 |
#. http:api.jqueryui.com/datepicker/#utility-formatDate
|
2218 |
msgctxt "Date format for jQuery datepicker."
|
2219 |
msgid "yy-mm-dd"
|
2220 |
msgstr ""
|
2221 |
|
2222 |
-
#: includes/admin/class-wp-job-manager-permalink-settings.php:
|
2223 |
-
#: includes/class-wp-job-manager-post-types.php:
|
2224 |
msgctxt "Job permalink - resave permalinks after changing this"
|
2225 |
msgid "job"
|
2226 |
msgstr ""
|
2227 |
|
2228 |
-
#: includes/admin/class-wp-job-manager-permalink-settings.php:
|
2229 |
-
#: includes/class-wp-job-manager-post-types.php:
|
2230 |
msgctxt "Job category slug - resave permalinks after changing this"
|
2231 |
msgid "job-category"
|
2232 |
msgstr ""
|
2233 |
|
2234 |
-
#: includes/admin/class-wp-job-manager-permalink-settings.php:
|
2235 |
-
#: includes/class-wp-job-manager-post-types.php:
|
2236 |
msgctxt "Job type slug - resave permalinks after changing this"
|
2237 |
msgid "job-type"
|
2238 |
msgstr ""
|
2239 |
|
2240 |
-
#: includes/admin/
|
2241 |
msgctxt "Default page title (wizard)"
|
2242 |
msgid "Post a Job"
|
2243 |
msgstr ""
|
2244 |
|
2245 |
-
#: includes/admin/
|
2246 |
msgctxt "Default page title (wizard)"
|
2247 |
msgid "Job Dashboard"
|
2248 |
msgstr ""
|
2249 |
|
2250 |
-
#: includes/admin/
|
2251 |
msgctxt "Default page title (wizard)"
|
2252 |
msgid "Jobs"
|
2253 |
msgstr ""
|
2254 |
|
2255 |
-
#: includes/class-wp-job-manager-post-types.php:
|
2256 |
-
msgctxt "Post type archive slug - resave permalinks after changing this"
|
2257 |
-
msgid "jobs"
|
2258 |
-
msgstr ""
|
2259 |
-
|
2260 |
-
#: includes/class-wp-job-manager-post-types.php:303
|
2261 |
#: wp-job-manager-functions.php:320
|
2262 |
msgctxt "post status"
|
2263 |
msgid "Expired"
|
2264 |
msgstr ""
|
2265 |
|
2266 |
-
#: includes/class-wp-job-manager-post-types.php:
|
2267 |
#: wp-job-manager-functions.php:321
|
2268 |
msgctxt "post status"
|
2269 |
msgid "Preview"
|
@@ -2287,4 +2356,9 @@ msgstr ""
|
|
2287 |
#: wp-job-manager-functions.php:324
|
2288 |
msgctxt "post status"
|
2289 |
msgid "Active"
|
|
|
|
|
|
|
|
|
|
|
2290 |
msgstr ""
|
2 |
# This file is distributed under the GPL2+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: WP Job Manager 1.32.0\n"
|
6 |
"Report-Msgid-Bugs-To: https://github.com/Automattic/WP-Job-Manager/issues\n"
|
7 |
+
"POT-Creation-Date: 2018-12-17 17:26:39+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
23 |
msgid "<a href=\"%s\">Switch to primary language</a> to edit this setting."
|
24 |
msgstr ""
|
25 |
|
26 |
+
#: includes/abstracts/abstract-wp-job-manager-form.php:328
|
27 |
+
#: includes/abstracts/abstract-wp-job-manager-form.php:343
|
28 |
#. translators: Placeholder is for the label of the reCAPTCHA field.
|
29 |
#. translators: %s is the name of the form validation that failed.
|
30 |
msgid "\"%s\" check failed. Please try again."
|
31 |
msgstr ""
|
32 |
|
33 |
#: includes/admin/class-wp-job-manager-addons.php:124
|
34 |
+
#: includes/admin/class-wp-job-manager-admin.php:175
|
35 |
#: includes/admin/views/html-admin-page-addons.php:2
|
36 |
msgid "WP Job Manager Add-ons"
|
37 |
msgstr ""
|
41 |
msgid "Licenses"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: includes/admin/class-wp-job-manager-admin-notices.php:109
|
45 |
+
msgid "Action failed. Please refresh the page and retry."
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
#: includes/admin/class-wp-job-manager-admin-notices.php:113
|
49 |
+
msgid "You don’t have permission to do this."
|
50 |
+
msgstr ""
|
51 |
+
|
52 |
+
#: includes/admin/class-wp-job-manager-admin.php:90
|
53 |
#. translators: %s is the URL for the page where users can go to update
|
54 |
#. WordPress.
|
55 |
msgid ""
|
56 |
"<strong>WP Job Manager</strong> requires a more recent version of "
|
57 |
+
"WordPress. <a href=\"%s\">Please update WordPress</a> to avoid issues."
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: includes/admin/class-wp-job-manager-admin.php:102
|
61 |
#. translators: Placeholder (%s) is the URL where users can go to update
|
62 |
#. WordPress.
|
63 |
msgid "<a href=\"%s\" style=\"color: red\">WordPress Update Required</a>"
|
64 |
msgstr ""
|
65 |
|
66 |
+
#: includes/admin/class-wp-job-manager-admin.php:172
|
67 |
msgid "Settings"
|
68 |
msgstr ""
|
69 |
|
70 |
+
#: includes/admin/class-wp-job-manager-admin.php:175
|
71 |
msgid "Add-ons"
|
72 |
msgstr ""
|
73 |
|
119 |
msgid "%s marked as not filled"
|
120 |
msgstr ""
|
121 |
|
122 |
+
#: includes/admin/class-wp-job-manager-cpt.php:318
|
123 |
msgid "Select category"
|
124 |
msgstr ""
|
125 |
|
126 |
+
#: includes/admin/class-wp-job-manager-cpt.php:343
|
127 |
msgid "Select Filled"
|
128 |
msgstr ""
|
129 |
|
130 |
+
#: includes/admin/class-wp-job-manager-cpt.php:347
|
131 |
msgid "Filled"
|
132 |
msgstr ""
|
133 |
|
134 |
+
#: includes/admin/class-wp-job-manager-cpt.php:351
|
135 |
msgid "Not Filled"
|
136 |
msgstr ""
|
137 |
|
138 |
+
#: includes/admin/class-wp-job-manager-cpt.php:362
|
139 |
msgid "Select Featured"
|
140 |
msgstr ""
|
141 |
|
142 |
+
#: includes/admin/class-wp-job-manager-cpt.php:366
|
143 |
msgid "Featured"
|
144 |
msgstr ""
|
145 |
|
146 |
+
#: includes/admin/class-wp-job-manager-cpt.php:370
|
147 |
msgid "Not Featured"
|
148 |
msgstr ""
|
149 |
|
150 |
+
#: includes/admin/class-wp-job-manager-cpt.php:415
|
151 |
+
#: includes/admin/class-wp-job-manager-cpt.php:472
|
152 |
msgid "Position"
|
153 |
msgstr ""
|
154 |
|
155 |
+
#: includes/admin/class-wp-job-manager-cpt.php:432
|
156 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
157 |
#. the URL to view the listing.
|
158 |
msgid "%1$s updated. <a href=\"%2$s\">View</a>"
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: includes/admin/class-wp-job-manager-cpt.php:433
|
162 |
msgid "Custom field updated."
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: includes/admin/class-wp-job-manager-cpt.php:434
|
166 |
msgid "Custom field deleted."
|
167 |
msgstr ""
|
168 |
|
169 |
+
#: includes/admin/class-wp-job-manager-cpt.php:436
|
170 |
#. translators: %s is the singular name of the job listing post type.
|
171 |
msgid "%s updated."
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: includes/admin/class-wp-job-manager-cpt.php:438
|
175 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
176 |
#. the revision number.
|
177 |
msgid "%1$s restored to revision from %2$s"
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: includes/admin/class-wp-job-manager-cpt.php:440
|
181 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
182 |
#. the URL to view the listing.
|
183 |
msgid "%1$s published. <a href=\"%2$s\">View</a>"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: includes/admin/class-wp-job-manager-cpt.php:442
|
187 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
188 |
#. the URL to view the listing.
|
189 |
msgid "%s saved."
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: includes/admin/class-wp-job-manager-cpt.php:444
|
193 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
194 |
#. the URL to preview the listing.
|
195 |
msgid "%1$s submitted. <a target=\"_blank\" href=\"%2$s\">Preview</a>"
|
196 |
msgstr ""
|
197 |
|
198 |
+
#: includes/admin/class-wp-job-manager-cpt.php:447
|
199 |
#. translators: %1$s is the singular name of the post type; %2$s is the date
|
200 |
#. the post will be published; %3$s is the URL to preview the listing.
|
201 |
msgid ""
|
203 |
"href=\"%3$s\">Preview</a>"
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: includes/admin/class-wp-job-manager-cpt.php:453
|
207 |
#. translators: %1$s is the singular name of the job listing post type; %2$s is
|
208 |
#. the URL to view the listing.
|
209 |
msgid "%1$s draft updated. <a target=\"_blank\" href=\"%2$s\">Preview</a>"
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: includes/admin/class-wp-job-manager-cpt.php:473
|
213 |
msgid "Type"
|
214 |
msgstr ""
|
215 |
|
216 |
+
#: includes/admin/class-wp-job-manager-cpt.php:474
|
217 |
#: includes/admin/class-wp-job-manager-writepanels.php:57
|
218 |
#: includes/class-wp-job-manager-email-notifications.php:234
|
219 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:184
|
220 |
#: includes/widgets/class-wp-job-manager-widget-recent-jobs.php:40
|
221 |
#: templates/job-filters.php:35 templates/job-filters.php:36
|
222 |
msgid "Location"
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: includes/admin/class-wp-job-manager-cpt.php:475
|
226 |
msgid "Status"
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: includes/admin/class-wp-job-manager-cpt.php:476
|
230 |
msgid "Posted"
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: includes/admin/class-wp-job-manager-cpt.php:477
|
234 |
msgid "Expires"
|
235 |
msgstr ""
|
236 |
|
237 |
+
#: includes/admin/class-wp-job-manager-cpt.php:478
|
238 |
#: includes/admin/class-wp-job-manager-settings.php:157
|
239 |
msgid "Categories"
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: includes/admin/class-wp-job-manager-cpt.php:479
|
243 |
msgid "Featured?"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: includes/admin/class-wp-job-manager-cpt.php:480
|
247 |
+
#: includes/class-wp-job-manager-shortcodes.php:248
|
248 |
msgid "Filled?"
|
249 |
msgstr ""
|
250 |
|
251 |
+
#: includes/admin/class-wp-job-manager-cpt.php:481
|
252 |
msgid "Actions"
|
253 |
msgstr ""
|
254 |
|
255 |
+
#: includes/admin/class-wp-job-manager-cpt.php:546
|
256 |
#. translators: %d is the post ID for the job listing.
|
257 |
msgid "ID: %d"
|
258 |
msgstr ""
|
259 |
|
260 |
+
#: includes/admin/class-wp-job-manager-cpt.php:590
|
261 |
#. translators: %s placeholder is the username of the user.
|
262 |
msgid "by a guest"
|
263 |
msgstr ""
|
264 |
|
265 |
+
#: includes/admin/class-wp-job-manager-cpt.php:590
|
266 |
msgid "by %s"
|
267 |
msgstr ""
|
268 |
|
269 |
+
#: includes/admin/class-wp-job-manager-cpt.php:609
|
270 |
msgid "Approve"
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: includes/admin/class-wp-job-manager-cpt.php:617
|
274 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:245
|
275 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:250
|
276 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:255
|
277 |
msgid "View"
|
278 |
msgstr ""
|
279 |
|
280 |
+
#: includes/admin/class-wp-job-manager-cpt.php:624
|
281 |
+
#: includes/class-wp-job-manager-post-types.php:317
|
282 |
#: templates/job-dashboard.php:52 templates/job-dashboard.php:70
|
283 |
msgid "Edit"
|
284 |
msgstr ""
|
285 |
|
286 |
+
#: includes/admin/class-wp-job-manager-cpt.php:631
|
287 |
+
#: templates/job-dashboard.php:79
|
288 |
msgid "Delete"
|
289 |
msgstr ""
|
290 |
|
300 |
msgid "Job type base"
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: includes/admin/class-wp-job-manager-permalink-settings.php:82
|
304 |
+
msgid "Job listing archive page"
|
305 |
+
msgstr ""
|
306 |
+
|
307 |
#: includes/admin/class-wp-job-manager-settings.php:84
|
308 |
msgid "General"
|
309 |
msgstr ""
|
349 |
msgstr ""
|
350 |
|
351 |
#: includes/admin/class-wp-job-manager-settings.php:117
|
352 |
+
#: includes/class-wp-job-manager-post-types.php:311
|
353 |
+
#: includes/class-wp-job-manager-post-types.php:413
|
354 |
msgid "Job Listings"
|
355 |
msgstr ""
|
356 |
|
734 |
msgid "Select a page…"
|
735 |
msgstr ""
|
736 |
|
737 |
+
#: includes/admin/class-wp-job-manager-setup.php:51
|
738 |
msgid "Setup"
|
739 |
msgstr ""
|
740 |
|
741 |
+
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:78
|
742 |
+
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:101
|
743 |
+
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:120
|
744 |
+
#: includes/class-wp-job-manager-post-types.php:271
|
745 |
+
#: includes/rest-api/class-wp-job-manager-models-job-types-custom-fields.php:36
|
746 |
+
msgid "Employment Type"
|
747 |
+
msgstr ""
|
748 |
+
|
749 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:58
|
750 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:188
|
751 |
+
msgid "e.g. \"London\""
|
752 |
+
msgstr ""
|
753 |
+
|
754 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:59
|
755 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:28
|
756 |
+
msgid "Leave this blank if the location is not important."
|
757 |
+
msgstr ""
|
758 |
+
|
759 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:63
|
760 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:32
|
761 |
+
msgid "Application Email or URL"
|
762 |
+
msgstr ""
|
763 |
+
|
764 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:64
|
765 |
+
msgid "URL or email which applicants use to apply"
|
766 |
+
msgstr ""
|
767 |
+
|
768 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:65
|
769 |
+
msgid ""
|
770 |
+
"This field is required for the \"application\" area to appear beneath the "
|
771 |
+
"listing."
|
772 |
+
msgstr ""
|
773 |
+
|
774 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:70
|
775 |
+
#: includes/class-wp-job-manager-data-exporter.php:53
|
776 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:37
|
777 |
+
msgid "Company Name"
|
778 |
+
msgstr ""
|
779 |
+
|
780 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:75
|
781 |
+
#: includes/class-wp-job-manager-data-exporter.php:54
|
782 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:41
|
783 |
+
msgid "Company Website"
|
784 |
+
msgstr ""
|
785 |
+
|
786 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:80
|
787 |
+
#: includes/class-wp-job-manager-data-exporter.php:55
|
788 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:45
|
789 |
+
msgid "Company Tagline"
|
790 |
+
msgstr ""
|
791 |
+
|
792 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:81
|
793 |
+
msgid "Brief description about the company"
|
794 |
+
msgstr ""
|
795 |
+
|
796 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:85
|
797 |
+
#: includes/class-wp-job-manager-data-exporter.php:56
|
798 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:49
|
799 |
+
msgid "Company Twitter"
|
800 |
+
msgstr ""
|
801 |
+
|
802 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:90
|
803 |
+
#: includes/class-wp-job-manager-data-exporter.php:57
|
804 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:53
|
805 |
+
msgid "Company Video"
|
806 |
+
msgstr ""
|
807 |
+
|
808 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:91
|
809 |
+
msgid "URL to the company video"
|
810 |
+
msgstr ""
|
811 |
+
|
812 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:96
|
813 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:57
|
814 |
+
msgid "Position Filled"
|
815 |
+
msgstr ""
|
816 |
+
|
817 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:99
|
818 |
+
msgid "Filled listings will no longer accept applications."
|
819 |
+
msgstr ""
|
820 |
+
|
821 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:104
|
822 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:64
|
823 |
+
msgid "Featured Listing"
|
824 |
+
msgstr ""
|
825 |
+
|
826 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:106
|
827 |
+
msgid ""
|
828 |
+
"Featured listings will be sticky during searches, and can be styled "
|
829 |
+
"differently."
|
830 |
+
msgstr ""
|
831 |
+
|
832 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:111
|
833 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:68
|
834 |
+
msgid "Listing Expiry Date"
|
835 |
+
msgstr ""
|
836 |
+
|
837 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:120
|
838 |
+
#: includes/class-wp-job-manager-email-notifications.php:288
|
839 |
+
#: includes/rest-api/class-wp-job-manager-models-job-listings-custom-fields.php:75
|
840 |
+
msgid "Posted by"
|
841 |
+
msgstr ""
|
842 |
+
|
843 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:163
|
844 |
+
#. translators: Placeholder %s is the singular name for a job listing post
|
845 |
+
#. type.
|
846 |
+
msgid "%s Data"
|
847 |
+
msgstr ""
|
848 |
+
|
849 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:245
|
850 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:250
|
851 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:255
|
852 |
+
msgid "Use file"
|
853 |
+
msgstr ""
|
854 |
+
|
855 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:245
|
856 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:250
|
857 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:255
|
858 |
+
msgid "Upload"
|
859 |
+
msgstr ""
|
860 |
+
|
861 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:255
|
862 |
+
msgid "Add file"
|
863 |
+
msgstr ""
|
864 |
+
|
865 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:520
|
866 |
+
#: includes/class-wp-job-manager-ajax.php:404
|
867 |
+
#. translators: Used in user select. %1$s is the user's display name; #%2$s is
|
868 |
+
#. the user ID; %3$s is the user email.
|
869 |
+
msgid "%1$s (#%2$s – %3$s)"
|
870 |
+
msgstr ""
|
871 |
+
|
872 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:527
|
873 |
+
msgid "Guest User"
|
874 |
+
msgstr ""
|
875 |
+
|
876 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:531
|
877 |
+
msgid "Change"
|
878 |
+
msgstr ""
|
879 |
+
|
880 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:534
|
881 |
+
msgid "Guest"
|
882 |
+
msgstr ""
|
883 |
+
|
884 |
+
#: includes/admin/class-wp-job-manager-writepanels.php:602
|
885 |
+
#. translators: %1$s is placeholder for singular name of the job listing post
|
886 |
+
#. type; %2$s is the intl formatted date the listing was last modified.
|
887 |
+
msgid "%1$s was last modified by the user on %2$s."
|
888 |
+
msgstr ""
|
889 |
+
|
890 |
+
#: includes/admin/views/html-admin-notice-core-setup.php:16
|
891 |
+
msgid ""
|
892 |
+
"You are nearly ready to start listing jobs with <strong>WP Job "
|
893 |
+
"Manager</strong>."
|
894 |
+
msgstr ""
|
895 |
+
|
896 |
+
#: includes/admin/views/html-admin-notice-core-setup.php:20
|
897 |
+
msgid "Run Setup Wizard"
|
898 |
+
msgstr ""
|
899 |
+
|
900 |
+
#: includes/admin/views/html-admin-notice-core-setup.php:21
|
901 |
+
msgid "Skip Setup"
|
902 |
+
msgstr ""
|
903 |
+
|
904 |
+
#: includes/admin/views/html-admin-page-addons.php:13
|
905 |
+
msgid "More Information →"
|
906 |
+
msgstr ""
|
907 |
+
|
908 |
+
#: includes/admin/views/html-admin-page-addons.php:43
|
909 |
+
msgid "No add-ons were found."
|
910 |
+
msgstr ""
|
911 |
+
|
912 |
+
#: includes/admin/views/html-admin-setup-header.php:14
|
913 |
msgid "WP Job Manager Setup"
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: includes/admin/views/html-admin-setup-header.php:21
|
917 |
msgid "1. Introduction"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: includes/admin/views/html-admin-setup-header.php:22
|
921 |
msgid "2. Page Setup"
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: includes/admin/views/html-admin-setup-header.php:23
|
925 |
msgid "3. Done"
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: includes/admin/views/html-admin-setup-step-1.php:13
|
929 |
msgid "Welcome to the Setup Wizard!"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: includes/admin/views/html-admin-setup-step-1.php:15
|
933 |
msgid ""
|
934 |
"Thanks for installing <em>WP Job Manager</em>! Let's get your site ready to "
|
935 |
"accept job listings."
|
936 |
msgstr ""
|
937 |
|
938 |
+
#: includes/admin/views/html-admin-setup-step-1.php:16
|
939 |
msgid ""
|
940 |
"This setup wizard will walk you through the process of creating pages for "
|
941 |
"job submissions, management, and listings."
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: includes/admin/views/html-admin-setup-step-1.php:20
|
945 |
#. translators: Placeholder %s is the path to WPJM documentation site.
|
946 |
msgid ""
|
947 |
"If you'd prefer to skip this and set up your pages manually, our <a "
|
948 |
"href=\"%s\">documentation</a> will walk you through each step."
|
949 |
msgstr ""
|
950 |
|
951 |
+
#: includes/admin/views/html-admin-setup-step-1.php:30
|
952 |
msgid "Start setup"
|
953 |
msgstr ""
|
954 |
|
955 |
+
#: includes/admin/views/html-admin-setup-step-1.php:31
|
956 |
msgid "Skip setup. I will set up the plugin manually."
|
957 |
msgstr ""
|
958 |
|
959 |
+
#: includes/admin/views/html-admin-setup-step-2.php:13
|
960 |
msgid "Page Setup"
|
961 |
msgstr ""
|
962 |
|
963 |
+
#: includes/admin/views/html-admin-setup-step-2.php:15
|
964 |
msgid ""
|
965 |
"With WP Job Manager, employers and applicants can post, manage, and browse "
|
966 |
"job listings right on your website. Tell us which of these common pages "
|
967 |
"you'd like your site to have and we'll create and configure them for you."
|
968 |
msgstr ""
|
969 |
|
970 |
+
#: includes/admin/views/html-admin-setup-step-2.php:21
|
971 |
#. translators: %1$s is URL to WordPress core shortcode documentation. %2$s is
|
972 |
#. URL to WPJM specific shortcode reference.
|
973 |
msgid ""
|
974 |
"(These pages are created using <a href=\"%1$s\" title=\"What is a "
|
975 |
+
"shortcode?\" class=\"help-page-link\">shortcodes</a>,\n"
|
976 |
"\t\t\t\t\t\t\t\twhich we take care of in this step. If you'd like to build "
|
977 |
+
"these pages yourself or want to add one of these options to an existing\n"
|
978 |
"\t\t\t\t\t\t\t\tpage on your site, you can skip this step and take a look "
|
979 |
+
"at <a href=\"%2$s\" class=\"help-page-link\">shortcode documentation</a> "
|
980 |
+
"for detailed instructions.)"
|
981 |
msgstr ""
|
982 |
|
983 |
+
#: includes/admin/views/html-admin-setup-step-2.php:39
|
984 |
msgid "Page Title"
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: includes/admin/views/html-admin-setup-step-2.php:40
|
988 |
msgid "Page Description"
|
989 |
msgstr ""
|
990 |
|
991 |
+
#: includes/admin/views/html-admin-setup-step-2.php:41
|
992 |
msgid "Content Shortcode"
|
993 |
msgstr ""
|
994 |
|
995 |
+
#: includes/admin/views/html-admin-setup-step-2.php:49
|
996 |
msgid ""
|
997 |
"Creates a page that allows employers to post new jobs directly from a page "
|
998 |
"on your website, instead of requiring them to log in to an admin area. If "
|
1000 |
"the admin dashboard only -- you can uncheck this setting."
|
1001 |
msgstr ""
|
1002 |
|
1003 |
+
#: includes/admin/views/html-admin-setup-step-2.php:57
|
1004 |
msgid ""
|
1005 |
"Creates a page that allows employers to manage their job listings directly "
|
1006 |
"from a page on your website, instead of requiring them to log in to an "
|
1008 |
"only, you can uncheck this setting."
|
1009 |
msgstr ""
|
1010 |
|
1011 |
+
#: includes/admin/views/html-admin-setup-step-2.php:64
|
1012 |
msgid "Creates a page where visitors can browse, search, and filter job listings."
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: includes/admin/views/html-admin-setup-step-2.php:72
|
1016 |
msgid "Skip this step"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: includes/admin/views/html-admin-setup-step-3.php:13
|
1020 |
msgid "You're ready to start using WP Job Manager!"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: includes/admin/views/html-admin-setup-step-3.php:15
|
1024 |
msgid "Wondering what to do now? Here are some of the most common next steps:"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
+
#: includes/admin/views/html-admin-setup-step-3.php:18
|
1028 |
msgid "Tweak your settings"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
+
#: includes/admin/views/html-admin-setup-step-3.php:19
|
1032 |
msgid "Add a job using the admin dashboard"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
+
#: includes/admin/views/html-admin-setup-step-3.php:24
|
1036 |
msgid "View submitted job listings"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
+
#: includes/admin/views/html-admin-setup-step-3.php:26
|
1040 |
msgid "Add job listings to a page using the [jobs] shortcode"
|
1041 |
msgstr ""
|
1042 |
|
1043 |
+
#: includes/admin/views/html-admin-setup-step-3.php:33
|
1044 |
msgid "Add a job via the front-end"
|
1045 |
msgstr ""
|
1046 |
|
1047 |
+
#: includes/admin/views/html-admin-setup-step-3.php:35
|
1048 |
msgid "Learn to use the front-end job submission board"
|
1049 |
msgstr ""
|
1050 |
|
1051 |
+
#: includes/admin/views/html-admin-setup-step-3.php:42
|
1052 |
msgid "View the job dashboard"
|
1053 |
msgstr ""
|
1054 |
|
1055 |
+
#: includes/admin/views/html-admin-setup-step-3.php:44
|
1056 |
msgid "Learn to use the front-end job dashboard"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
+
#: includes/admin/views/html-admin-setup-step-3.php:53
|
1060 |
#. translators: %1$s is the URL to WPJM support documentation; %2$s is the URL
|
1061 |
#. to WPJM support forums.
|
1062 |
msgid ""
|
1063 |
+
"If you need help, you can find more detail in our\n"
|
1064 |
"\t\t\t\t\t\t\t<a href=\"%1$s\">support documentation</a> or post your "
|
1065 |
"question on the\n"
|
1066 |
"\t\t\t\t\t\t\t<a href=\"%2$s\">WP Job Manager support forums</a>. Happy "
|
1067 |
"hiring!"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
+
#: includes/admin/views/html-admin-setup-step-3.php:66
|
1071 |
msgid "Support WP Job Manager's Ongoing Development"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: includes/admin/views/html-admin-setup-step-3.php:67
|
1075 |
msgid ""
|
1076 |
"There are lots of ways you can support open source software projects like "
|
1077 |
"this one: contributing code, fixing a bug, assisting with non-English "
|
1079 |
"spread the word. We appreciate your support!"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
+
#: includes/admin/views/html-admin-setup-step-3.php:69
|
1083 |
msgid "Leave a positive review"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
+
#: includes/admin/views/html-admin-setup-step-3.php:70
|
1087 |
msgid "Contribute a localization"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
+
#: includes/admin/views/html-admin-setup-step-3.php:71
|
1091 |
msgid "Contribute code or report a bug"
|
1092 |
msgstr ""
|
1093 |
|
1094 |
+
#: includes/admin/views/html-admin-setup-step-3.php:72
|
1095 |
msgid "Help other users on the forums"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
+
#: includes/class-wp-job-manager-ajax.php:173
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1099 |
#. translators: Placeholder %d is the number of found search results.
|
1100 |
msgid "Search completed. Found %d matching record."
|
1101 |
msgid_plural "Search completed. Found %d matching records."
|
1102 |
msgstr[0] ""
|
1103 |
msgstr[1] ""
|
1104 |
|
1105 |
+
#: includes/class-wp-job-manager-ajax.php:269
|
1106 |
msgid "You must be logged in to upload files using this method."
|
1107 |
msgstr ""
|
1108 |
|
1111 |
msgstr ""
|
1112 |
|
1113 |
#: includes/class-wp-job-manager-data-exporter.php:52
|
1114 |
+
#: includes/class-wp-job-manager-post-types.php:334
|
1115 |
msgid "Company Logo"
|
1116 |
msgstr ""
|
1117 |
|
1124 |
msgstr ""
|
1125 |
|
1126 |
#: includes/class-wp-job-manager-email-notifications.php:243
|
1127 |
+
#: includes/class-wp-job-manager-post-types.php:206
|
1128 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:192
|
1129 |
msgid "Job type"
|
1130 |
msgstr ""
|
1131 |
|
1132 |
#: includes/class-wp-job-manager-email-notifications.php:253
|
1133 |
+
#: includes/class-wp-job-manager-post-types.php:142
|
1134 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:201
|
1135 |
msgid "Job category"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
#: includes/class-wp-job-manager-email-notifications.php:262
|
1139 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:226
|
1140 |
msgid "Company name"
|
1141 |
msgstr ""
|
1142 |
|
1181 |
msgid "Geocoding error"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
+
#: includes/class-wp-job-manager-install.php:78
|
1185 |
msgid "Employer"
|
1186 |
msgstr ""
|
1187 |
|
1188 |
+
#: includes/class-wp-job-manager-post-types.php:143
|
1189 |
msgid "Job categories"
|
1190 |
msgstr ""
|
1191 |
|
1192 |
+
#: includes/class-wp-job-manager-post-types.php:171
|
1193 |
+
#: includes/class-wp-job-manager-post-types.php:234
|
1194 |
+
#: includes/class-wp-job-manager-post-types.php:327
|
1195 |
#. translators: Placeholder %s is the plural label of the job listing category
|
1196 |
#. taxonomy type.
|
1197 |
#. translators: Placeholder %s is the plural label of the job listing job type
|
1201 |
msgid "Search %s"
|
1202 |
msgstr ""
|
1203 |
|
1204 |
+
#: includes/class-wp-job-manager-post-types.php:173
|
1205 |
+
#: includes/class-wp-job-manager-post-types.php:236
|
1206 |
+
#: includes/class-wp-job-manager-post-types.php:313
|
1207 |
#. translators: Placeholder %s is the plural label of the job listing category
|
1208 |
#. taxonomy type.
|
1209 |
#. translators: Placeholder %s is the plural label of the job listing job type
|
1213 |
msgid "All %s"
|
1214 |
msgstr ""
|
1215 |
|
1216 |
+
#: includes/class-wp-job-manager-post-types.php:175
|
1217 |
+
#: includes/class-wp-job-manager-post-types.php:238
|
1218 |
+
#: includes/class-wp-job-manager-post-types.php:333
|
1219 |
#. translators: Placeholder %s is the singular label of the job listing
|
1220 |
#. category taxonomy type.
|
1221 |
#. translators: Placeholder %s is the singular label of the job listing job
|
1225 |
msgid "Parent %s"
|
1226 |
msgstr ""
|
1227 |
|
1228 |
+
#: includes/class-wp-job-manager-post-types.php:177
|
1229 |
+
#: includes/class-wp-job-manager-post-types.php:240
|
1230 |
#. translators: Placeholder %s is the singular label of the job listing
|
1231 |
#. category taxonomy type.
|
1232 |
#. translators: Placeholder %s is the singular label of the job listing job
|
1234 |
msgid "Parent %s:"
|
1235 |
msgstr ""
|
1236 |
|
1237 |
+
#: includes/class-wp-job-manager-post-types.php:179
|
1238 |
+
#: includes/class-wp-job-manager-post-types.php:242
|
1239 |
+
#: includes/class-wp-job-manager-post-types.php:319
|
1240 |
#. translators: Placeholder %s is the singular label of the job listing
|
1241 |
#. category taxonomy type.
|
1242 |
#. translators: Placeholder %s is the singular label of the job listing job
|
1246 |
msgid "Edit %s"
|
1247 |
msgstr ""
|
1248 |
|
1249 |
+
#: includes/class-wp-job-manager-post-types.php:181
|
1250 |
+
#: includes/class-wp-job-manager-post-types.php:244
|
1251 |
#. translators: Placeholder %s is the singular label of the job listing
|
1252 |
#. category taxonomy type.
|
1253 |
#. translators: Placeholder %s is the singular label of the job listing job
|
1255 |
msgid "Update %s"
|
1256 |
msgstr ""
|
1257 |
|
1258 |
+
#: includes/class-wp-job-manager-post-types.php:183
|
1259 |
+
#: includes/class-wp-job-manager-post-types.php:246
|
1260 |
#. translators: Placeholder %s is the singular label of the job listing
|
1261 |
#. category taxonomy type.
|
1262 |
#. translators: Placeholder %s is the singular label of the job listing job
|
1264 |
msgid "Add New %s"
|
1265 |
msgstr ""
|
1266 |
|
1267 |
+
#: includes/class-wp-job-manager-post-types.php:185
|
1268 |
+
#: includes/class-wp-job-manager-post-types.php:248
|
1269 |
#. translators: Placeholder %s is the singular label of the job listing
|
1270 |
#. category taxonomy type.
|
1271 |
#. translators: Placeholder %s is the singular label of the job listing job
|
1273 |
msgid "New %s Name"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: includes/class-wp-job-manager-post-types.php:207
|
1277 |
msgid "Job types"
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: includes/class-wp-job-manager-post-types.php:280
|
1281 |
msgid "Job"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
+
#: includes/class-wp-job-manager-post-types.php:281
|
1285 |
msgid "Jobs"
|
1286 |
msgstr ""
|
1287 |
|
1288 |
+
#: includes/class-wp-job-manager-post-types.php:314
|
1289 |
msgid "Add New"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: includes/class-wp-job-manager-post-types.php:316
|
1293 |
#. translators: Placeholder %s is the singular label of the job listing post
|
1294 |
#. type.
|
1295 |
msgid "Add %s"
|
1296 |
msgstr ""
|
1297 |
|
1298 |
+
#: includes/class-wp-job-manager-post-types.php:321
|
1299 |
#. translators: Placeholder %s is the singular label of the job listing post
|
1300 |
#. type.
|
1301 |
msgid "New %s"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
+
#: includes/class-wp-job-manager-post-types.php:323
|
1305 |
+
#: includes/class-wp-job-manager-post-types.php:325
|
1306 |
#. translators: Placeholder %s is the singular label of the job listing post
|
1307 |
#. type.
|
1308 |
msgid "View %s"
|
1309 |
msgstr ""
|
1310 |
|
1311 |
+
#: includes/class-wp-job-manager-post-types.php:329
|
1312 |
#. translators: Placeholder %s is the singular label of the job listing post
|
1313 |
#. type.
|
1314 |
msgid "No %s found"
|
1315 |
msgstr ""
|
1316 |
|
1317 |
+
#: includes/class-wp-job-manager-post-types.php:331
|
1318 |
#. translators: Placeholder %s is the plural label of the job listing post
|
1319 |
#. type.
|
1320 |
msgid "No %s found in trash"
|
1321 |
msgstr ""
|
1322 |
|
1323 |
+
#: includes/class-wp-job-manager-post-types.php:335
|
1324 |
msgid "Set company logo"
|
1325 |
msgstr ""
|
1326 |
|
1327 |
+
#: includes/class-wp-job-manager-post-types.php:336
|
1328 |
msgid "Remove company logo"
|
1329 |
msgstr ""
|
1330 |
|
1331 |
+
#: includes/class-wp-job-manager-post-types.php:337
|
1332 |
msgid "Use as company logo"
|
1333 |
msgstr ""
|
1334 |
|
1335 |
+
#: includes/class-wp-job-manager-post-types.php:340
|
1336 |
#. translators: Placeholder %s is the plural label of the job listing post
|
1337 |
#. type.
|
1338 |
msgid "This is where you can create and manage %s."
|
1339 |
msgstr ""
|
1340 |
|
1341 |
+
#: includes/class-wp-job-manager-post-types.php:381
|
1342 |
#. translators: Placeholder %s is the number of expired posts of this type.
|
1343 |
msgid "Expired <span class=\"count\">(%s)</span>"
|
1344 |
msgid_plural "Expired <span class=\"count\">(%s)</span>"
|
1345 |
msgstr[0] ""
|
1346 |
msgstr[1] ""
|
1347 |
|
1348 |
+
#: includes/class-wp-job-manager-post-types.php:393
|
1349 |
#. translators: Placeholder %s is the number of posts in a preview state.
|
1350 |
msgid "Preview <span class=\"count\">(%s)</span>"
|
1351 |
msgid_plural "Preview <span class=\"count\">(%s)</span>"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
#: includes/class-wp-job-manager-shortcodes.php:141
|
1383 |
+
#: includes/class-wp-job-manager-shortcodes.php:155
|
1384 |
msgid "Missing submission page."
|
1385 |
msgstr ""
|
1386 |
|
1387 |
+
#: includes/class-wp-job-manager-shortcodes.php:247
|
1388 |
#: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:30
|
1389 |
#: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:46
|
1390 |
#: includes/widgets/class-wp-job-manager-widget-recent-jobs.php:30
|
1391 |
msgid "Title"
|
1392 |
msgstr ""
|
1393 |
|
1394 |
+
#: includes/class-wp-job-manager-shortcodes.php:249
|
1395 |
msgid "Date Posted"
|
1396 |
msgstr ""
|
1397 |
|
1398 |
+
#: includes/class-wp-job-manager-shortcodes.php:250
|
1399 |
msgid "Listing Expires"
|
1400 |
msgstr ""
|
1401 |
|
1402 |
+
#: includes/class-wp-job-manager-shortcodes.php:385
|
1403 |
+
#: includes/class-wp-job-manager-shortcodes.php:422
|
1404 |
msgid "Load more listings"
|
1405 |
msgstr ""
|
1406 |
|
1410 |
msgid ""
|
1411 |
"We'd love if you helped us make WP Job Manager better by allowing us to "
|
1412 |
"collect\n"
|
1413 |
+
"\t\t\t\t<a href=\"%s\">usage tracking data</a>. No sensitive information is\n"
|
|
|
1414 |
"\t\t\t\tcollected, and you can opt out at any time."
|
1415 |
msgstr ""
|
1416 |
|
1419 |
#. data WPJM tracks.
|
1420 |
msgid ""
|
1421 |
"Help us make WP Job Manager better by allowing us to collect\n"
|
1422 |
+
"\t\t\t\t<a href=\"%s\">usage tracking data</a>.\n"
|
1423 |
"\t\t\t\tNo sensitive information is collected."
|
1424 |
msgstr ""
|
1425 |
|
1518 |
msgstr ""
|
1519 |
|
1520 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:75
|
1521 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:519
|
1522 |
#: templates/job-preview.php:22
|
1523 |
msgid "Preview"
|
1524 |
msgstr ""
|
1527 |
msgid "Done"
|
1528 |
msgstr ""
|
1529 |
|
1530 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:151
|
1531 |
msgid "Application email"
|
1532 |
msgstr ""
|
1533 |
|
1534 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:152
|
1535 |
+
#: wp-job-manager-template.php:719
|
1536 |
msgid "you@yourdomain.com"
|
1537 |
msgstr ""
|
1538 |
|
1539 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:156
|
1540 |
msgid "Application URL"
|
1541 |
msgstr ""
|
1542 |
|
1543 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:157
|
1544 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:237
|
1545 |
msgid "http://"
|
1546 |
msgstr ""
|
1547 |
|
1548 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:161
|
1549 |
msgid "Application email/URL"
|
1550 |
msgstr ""
|
1551 |
|
1552 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:162
|
1553 |
msgid "Enter an email address or website URL"
|
1554 |
msgstr ""
|
1555 |
|
1556 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:177
|
1557 |
msgid "Job Title"
|
1558 |
msgstr ""
|
1559 |
|
1560 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:185
|
1561 |
msgid "Leave this blank if the location is not important"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:195
|
1565 |
msgid "Choose job type…"
|
1566 |
msgstr ""
|
1567 |
|
1568 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:210
|
1569 |
msgid "Description"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:229
|
1573 |
msgid "Enter the name of the company"
|
1574 |
msgstr ""
|
1575 |
|
1576 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:233
|
1577 |
#: templates/content-single-job_listing-company.php:30
|
1578 |
msgid "Website"
|
1579 |
msgstr ""
|
1580 |
|
1581 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:241
|
1582 |
msgid "Tagline"
|
1583 |
msgstr ""
|
1584 |
|
1585 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:244
|
1586 |
msgid "Briefly describe your company"
|
1587 |
msgstr ""
|
1588 |
|
1589 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:249
|
1590 |
msgid "Video"
|
1591 |
msgstr ""
|
1592 |
|
1593 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:253
|
1594 |
msgid "A link to a video about your company"
|
1595 |
msgstr ""
|
1596 |
|
1597 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:257
|
1598 |
msgid "Twitter username"
|
1599 |
msgstr ""
|
1600 |
|
1601 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:260
|
1602 |
msgid "@yourcompany"
|
1603 |
msgstr ""
|
1604 |
|
1605 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:264
|
1606 |
msgid "Logo"
|
1607 |
msgstr ""
|
1608 |
|
1609 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:314
|
1610 |
#. translators: Placeholder %s is the label for the required field.
|
1611 |
msgid "%s is a required field"
|
1612 |
msgstr ""
|
1613 |
|
1614 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:325
|
1615 |
#. translators: Placeholder %s is the field label that is did not validate.
|
1616 |
msgid "%s is invalid"
|
1617 |
msgstr ""
|
1618 |
|
1619 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:342
|
1620 |
msgid "Invalid attachment provided."
|
1621 |
msgstr ""
|
1622 |
|
1623 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:360
|
1624 |
#: wp-job-manager-functions.php:1277
|
1625 |
#. translators: Placeholder %1$s is field label; %2$s is the file mime type;
|
1626 |
#. %3$s is the allowed mime-types.
|
1629 |
msgid "\"%1$s\" (filetype %2$s) needs to be one of the following file types: %3$s"
|
1630 |
msgstr ""
|
1631 |
|
1632 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:375
|
1633 |
msgid "Please enter a valid application email address"
|
1634 |
msgstr ""
|
1635 |
|
1636 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:384
|
1637 |
msgid "Please enter a valid application URL"
|
1638 |
msgstr ""
|
1639 |
|
1640 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:394
|
1641 |
msgid "Please enter a valid application email address or URL"
|
1642 |
msgstr ""
|
1643 |
|
1644 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:554
|
1645 |
msgid "Please enter a username."
|
1646 |
msgstr ""
|
1647 |
|
1648 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:558
|
1649 |
msgid "Please enter a password."
|
1650 |
msgstr ""
|
1651 |
|
1652 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:562
|
1653 |
msgid "Please enter your email address."
|
1654 |
msgstr ""
|
1655 |
|
1656 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:568
|
1657 |
msgid "Passwords must match."
|
1658 |
msgstr ""
|
1659 |
|
1660 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:574
|
1661 |
#. translators: Placeholder %s is the password hint.
|
1662 |
msgid "Invalid Password: %s"
|
1663 |
msgstr ""
|
1664 |
|
1665 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:576
|
1666 |
msgid "Password is not valid."
|
1667 |
msgstr ""
|
1668 |
|
1669 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:599
|
1670 |
msgid "You must be signed in to post a new listing."
|
1671 |
msgstr ""
|
1672 |
|
2054 |
msgid "Relist"
|
2055 |
msgstr ""
|
2056 |
|
2057 |
+
#: templates/job-dashboard.php:75
|
2058 |
+
msgid "Continue Submission"
|
2059 |
+
msgstr ""
|
2060 |
+
|
2061 |
#: templates/job-filters.php:30 templates/job-filters.php:31
|
2062 |
msgid "Keywords"
|
2063 |
msgstr ""
|
2169 |
msgid "Uploaded files need to be one of the following file types: %s"
|
2170 |
msgstr ""
|
2171 |
|
2172 |
+
#: wp-job-manager-template.php:155
|
2173 |
msgid "Inactive"
|
2174 |
msgstr ""
|
2175 |
|
2176 |
+
#: wp-job-manager-template.php:249
|
2177 |
#. translators: %1$s is the job listing title; %2$s is the URL for the current
|
2178 |
#. WordPress instance.
|
2179 |
+
msgid "Application via %1$s listing on %2$s"
|
2180 |
msgstr ""
|
2181 |
|
2182 |
+
#: wp-job-manager-template.php:693
|
2183 |
msgid "Username"
|
2184 |
msgstr ""
|
2185 |
|
2186 |
+
#: wp-job-manager-template.php:701
|
2187 |
msgid "Password"
|
2188 |
msgstr ""
|
2189 |
|
2190 |
+
#: wp-job-manager-template.php:711
|
2191 |
msgid "Verify Password"
|
2192 |
msgstr ""
|
2193 |
|
2194 |
+
#: wp-job-manager-template.php:718
|
2195 |
msgid "Your email"
|
2196 |
msgstr ""
|
2197 |
|
2198 |
+
#: wp-job-manager-template.php:745
|
2199 |
msgid "Posted on "
|
2200 |
msgstr ""
|
2201 |
|
2202 |
+
#: wp-job-manager-template.php:748 wp-job-manager-template.php:769
|
2203 |
#. translators: Placeholder %s is the relative, human readable time since the
|
2204 |
#. job listing was posted.
|
2205 |
msgid "Posted %s ago"
|
2206 |
msgstr ""
|
2207 |
|
2208 |
+
#: wp-job-manager-template.php:798
|
2209 |
msgid "Anywhere"
|
2210 |
msgstr ""
|
2211 |
|
2212 |
+
#: wp-job-manager.php:95
|
2213 |
+
msgid ""
|
2214 |
+
"Constant `WPJM_REST_API_ENABLED` and custom REST API implementation is "
|
2215 |
+
"deprecated and will be removed in 1.33.0. Please use standard WP Core's "
|
2216 |
+
"implementation."
|
2217 |
+
msgstr ""
|
2218 |
+
|
2219 |
+
#: wp-job-manager.php:178
|
2220 |
#. translators: Placeholders %1$s and %2$s are the names of the two cookies
|
2221 |
#. used in WP Job Manager.
|
2222 |
msgid ""
|
2225 |
"\t\t\t\thave started but have not completed: %1$s and %2$s"
|
2226 |
msgstr ""
|
2227 |
|
2228 |
+
#: wp-job-manager.php:214
|
2229 |
+
msgid "Standard REST API implementation from WP core"
|
2230 |
+
msgstr ""
|
2231 |
+
|
2232 |
+
#: wp-job-manager.php:328
|
2233 |
msgid "Load previous listings"
|
2234 |
msgstr ""
|
2235 |
|
2236 |
+
#: wp-job-manager.php:429
|
2237 |
msgid "Invalid file type. Accepted types:"
|
2238 |
msgstr ""
|
2239 |
|
2240 |
+
#: wp-job-manager.php:444
|
2241 |
msgid "Are you sure you want to delete this listing?"
|
2242 |
msgstr ""
|
2243 |
|
2255 |
msgid "Automattic"
|
2256 |
msgstr ""
|
2257 |
|
2258 |
+
#: includes/admin/class-wp-job-manager-admin.php:141
|
2259 |
+
msgctxt "user selection"
|
2260 |
+
msgid "No matches found"
|
2261 |
+
msgstr ""
|
2262 |
+
|
2263 |
+
#: includes/admin/class-wp-job-manager-admin.php:142
|
2264 |
+
msgctxt "user selection"
|
2265 |
+
msgid "Loading failed"
|
2266 |
+
msgstr ""
|
2267 |
+
|
2268 |
+
#: includes/admin/class-wp-job-manager-admin.php:143
|
2269 |
+
msgctxt "user selection"
|
2270 |
+
msgid "Please enter 1 or more characters"
|
2271 |
+
msgstr ""
|
2272 |
+
|
2273 |
+
#: includes/admin/class-wp-job-manager-admin.php:144
|
2274 |
+
msgctxt "user selection"
|
2275 |
+
msgid "Please enter %qty% or more characters"
|
2276 |
+
msgstr ""
|
2277 |
+
|
2278 |
+
#: includes/admin/class-wp-job-manager-admin.php:145
|
2279 |
+
msgctxt "user selection"
|
2280 |
+
msgid "Loading more results…"
|
2281 |
+
msgstr ""
|
2282 |
+
|
2283 |
+
#: includes/admin/class-wp-job-manager-admin.php:146
|
2284 |
+
msgctxt "user selection"
|
2285 |
+
msgid "Searching…"
|
2286 |
+
msgstr ""
|
2287 |
+
|
2288 |
+
#: includes/admin/class-wp-job-manager-admin.php:159
|
2289 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:432
|
2290 |
#. translators: jQuery date format, see
|
2291 |
#. http:api.jqueryui.com/datepicker/#utility-formatDate
|
2292 |
msgctxt "Date format for jQuery datepicker."
|
2293 |
msgid "yy-mm-dd"
|
2294 |
msgstr ""
|
2295 |
|
2296 |
+
#: includes/admin/class-wp-job-manager-permalink-settings.php:104
|
2297 |
+
#: includes/class-wp-job-manager-post-types.php:853
|
2298 |
msgctxt "Job permalink - resave permalinks after changing this"
|
2299 |
msgid "job"
|
2300 |
msgstr ""
|
2301 |
|
2302 |
+
#: includes/admin/class-wp-job-manager-permalink-settings.php:113
|
2303 |
+
#: includes/class-wp-job-manager-post-types.php:854
|
2304 |
msgctxt "Job category slug - resave permalinks after changing this"
|
2305 |
msgid "job-category"
|
2306 |
msgstr ""
|
2307 |
|
2308 |
+
#: includes/admin/class-wp-job-manager-permalink-settings.php:122
|
2309 |
+
#: includes/class-wp-job-manager-post-types.php:855
|
2310 |
msgctxt "Job type slug - resave permalinks after changing this"
|
2311 |
msgid "job-type"
|
2312 |
msgstr ""
|
2313 |
|
2314 |
+
#: includes/admin/views/html-admin-setup-step-2.php:47
|
2315 |
msgctxt "Default page title (wizard)"
|
2316 |
msgid "Post a Job"
|
2317 |
msgstr ""
|
2318 |
|
2319 |
+
#: includes/admin/views/html-admin-setup-step-2.php:55
|
2320 |
msgctxt "Default page title (wizard)"
|
2321 |
msgid "Job Dashboard"
|
2322 |
msgstr ""
|
2323 |
|
2324 |
+
#: includes/admin/views/html-admin-setup-step-2.php:63
|
2325 |
msgctxt "Default page title (wizard)"
|
2326 |
msgid "Jobs"
|
2327 |
msgstr ""
|
2328 |
|
2329 |
+
#: includes/class-wp-job-manager-post-types.php:374
|
|
|
|
|
|
|
|
|
|
|
2330 |
#: wp-job-manager-functions.php:320
|
2331 |
msgctxt "post status"
|
2332 |
msgid "Expired"
|
2333 |
msgstr ""
|
2334 |
|
2335 |
+
#: includes/class-wp-job-manager-post-types.php:387
|
2336 |
#: wp-job-manager-functions.php:321
|
2337 |
msgctxt "post status"
|
2338 |
msgid "Preview"
|
2356 |
#: wp-job-manager-functions.php:324
|
2357 |
msgctxt "post status"
|
2358 |
msgid "Active"
|
2359 |
+
msgstr ""
|
2360 |
+
|
2361 |
+
#: includes/class-wp-job-manager-post-types.php:837
|
2362 |
+
msgctxt "Post type archive slug - resave permalinks after changing this"
|
2363 |
+
msgid "jobs"
|
2364 |
msgstr ""
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: mikejolley, automattic, adamkheckler, alexsanford1, annezazu, cena, chaselivingston, csonnek, davor.altman, donnapep, donncha, drawmyface, erania-pinnera, jacobshere, jakeom, jeherve, jenhooks, jgs, jonryan, kraftbj, lamdayap, lschuyler, macmanx, nancythanki, orangesareorange, rachelsquirrel, ryancowles, richardmtl, scarstocea
|
3 |
Tags: job manager, job listing, job board, job management, job lists, job list, job, jobs, company, hiring, employment, employer, employees, candidate, freelance, internship, job listings, positions, board, application, hiring, listing, manager, recruiting, recruitment, talent
|
4 |
Requires at least: 4.7.0
|
5 |
-
Tested up to:
|
6 |
-
Stable tag: 1.
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -152,6 +152,25 @@ It then creates a database based on the parameters passed to it.
|
|
152 |
|
153 |
== Changelog ==
|
154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
= 1.31.3 =
|
156 |
* Fix: Escape the attachment URL. (Props to karimeo)
|
157 |
* Fix: Custom job field priority fix when using decimals. (@tripflex)
|
2 |
Contributors: mikejolley, automattic, adamkheckler, alexsanford1, annezazu, cena, chaselivingston, csonnek, davor.altman, donnapep, donncha, drawmyface, erania-pinnera, jacobshere, jakeom, jeherve, jenhooks, jgs, jonryan, kraftbj, lamdayap, lschuyler, macmanx, nancythanki, orangesareorange, rachelsquirrel, ryancowles, richardmtl, scarstocea
|
3 |
Tags: job manager, job listing, job board, job management, job lists, job list, job, jobs, company, hiring, employment, employer, employees, candidate, freelance, internship, job listings, positions, board, application, hiring, listing, manager, recruiting, recruitment, talent
|
4 |
Requires at least: 4.7.0
|
5 |
+
Tested up to: 5.0
|
6 |
+
Stable tag: 1.32.0
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
152 |
|
153 |
== Changelog ==
|
154 |
|
155 |
+
= 1.32.0 =
|
156 |
+
* Enhancement: Switched from Chosen to Select2 for enhanced dropdown handling and better mobile support. May require theme update.
|
157 |
+
* Enhancement: Draft and unsubmitted job listings now appear in `[job_dashboard]`, allowing users to complete their submission.
|
158 |
+
* Enhancement: Filled and expired positions are now hidden from WordPress search. (@felipeelia)
|
159 |
+
* Enhancement: Adds additional support for the new block editor. Restricted to classic block for compatibility with frontend editor.
|
160 |
+
* Enhancement: Job types can be preselected in `[jobs]` shortcode with `?search_job_type=term-slug`. (@felipeelia)
|
161 |
+
* Enhancement: Author selection in WP admin now uses a searchable dropdown.
|
162 |
+
* Enhancement: Setup wizard is accessed with a flash message instead of an automatic redirect upon activation.
|
163 |
+
* Enhancement: When using supported themes, job listing archive slug can be changed in Permalink settings.
|
164 |
+
* Fix: Company tagline alignment issue with company name. (@0xDELS)
|
165 |
+
* Fix: "Load Previous Listings" link unnecessarily shows up on `[jobs]` shortcode. (@tonytettinger)
|
166 |
+
* Fix: Category selector fixed in the job listings page in WP Admin. (@AmandaJBell)
|
167 |
+
* Fix: Issue with quote encoding on Apply for Job email link.
|
168 |
+
* Fix: Link `target` attributes have been removed in templates.
|
169 |
+
* Dev: Allow for job submission flow to be interrupted using `before` argument on form steps.
|
170 |
+
* Dev: HTML allowed in custom company field labels. (@tripflex)
|
171 |
+
* Dev: Job feed slug name can be customized with the `job_manager_job_feed_name` filter.
|
172 |
+
* Deprecated: Unreleased REST API implementation using `WPJM_REST_API_ENABLED` was replaced with standard WP REST API.
|
173 |
+
|
174 |
= 1.31.3 =
|
175 |
* Fix: Escape the attachment URL. (Props to karimeo)
|
176 |
* Fix: Custom job field priority fix when using decimals. (@tripflex)
|
templates/content-single-job_listing-company.php
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
* @package WP Job Manager
|
12 |
* @category Template
|
13 |
* @since 1.14.0
|
14 |
-
* @version 1.
|
15 |
*/
|
16 |
|
17 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -27,7 +27,7 @@ if ( ! get_the_company_name() ) {
|
|
27 |
|
28 |
<p class="name">
|
29 |
<?php if ( $website = get_the_company_website() ) : ?>
|
30 |
-
<a class="website" href="<?php echo esc_url( $website ); ?>"
|
31 |
<?php endif; ?>
|
32 |
<?php the_company_twitter(); ?>
|
33 |
<?php the_company_name( '<strong>', '</strong>' ); ?>
|
11 |
* @package WP Job Manager
|
12 |
* @category Template
|
13 |
* @since 1.14.0
|
14 |
+
* @version 1.32.0
|
15 |
*/
|
16 |
|
17 |
if ( ! defined( 'ABSPATH' ) ) {
|
27 |
|
28 |
<p class="name">
|
29 |
<?php if ( $website = get_the_company_website() ) : ?>
|
30 |
+
<a class="website" href="<?php echo esc_url( $website ); ?>" rel="nofollow"><?php esc_html_e( 'Website', 'wp-job-manager' ); ?></a>
|
31 |
<?php endif; ?>
|
32 |
<?php the_company_twitter(); ?>
|
33 |
<?php the_company_name( '<strong>', '</strong>' ); ?>
|
templates/job-application-url.php
CHANGED
@@ -8,11 +8,11 @@
|
|
8 |
* @author Automattic
|
9 |
* @package WP Job Manager
|
10 |
* @category Template
|
11 |
-
* @version 1.
|
12 |
*/
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
exit; // Exit if accessed directly.
|
16 |
}
|
17 |
?>
|
18 |
-
<p><?php esc_html_e( 'To apply for this job please visit', 'wp-job-manager' ); ?> <a href="<?php echo esc_url( $apply->url ); ?>"
|
8 |
* @author Automattic
|
9 |
* @package WP Job Manager
|
10 |
* @category Template
|
11 |
+
* @version 1.32.0
|
12 |
*/
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
exit; // Exit if accessed directly.
|
16 |
}
|
17 |
?>
|
18 |
+
<p><?php esc_html_e( 'To apply for this job please visit', 'wp-job-manager' ); ?> <a href="<?php echo esc_url( $apply->url ); ?>" rel="nofollow"><?php echo esc_html( wp_parse_url( $apply->url, PHP_URL_HOST ) ); ?></a>.</p>
|
templates/job-dashboard.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* @author Automattic
|
9 |
* @package WP Job Manager
|
10 |
* @category Template
|
11 |
-
* @version 1.
|
12 |
*/
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -70,6 +70,10 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
70 |
$actions['edit'] = array( 'label' => __( 'Edit', 'wp-job-manager' ), 'nonce' => false );
|
71 |
}
|
72 |
break;
|
|
|
|
|
|
|
|
|
73 |
}
|
74 |
|
75 |
$actions['delete'] = array( 'label' => __( 'Delete', 'wp-job-manager' ), 'nonce' => true );
|
8 |
* @author Automattic
|
9 |
* @package WP Job Manager
|
10 |
* @category Template
|
11 |
+
* @version 1.32.0
|
12 |
*/
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
70 |
$actions['edit'] = array( 'label' => __( 'Edit', 'wp-job-manager' ), 'nonce' => false );
|
71 |
}
|
72 |
break;
|
73 |
+
case 'draft' :
|
74 |
+
case 'preview' :
|
75 |
+
$actions['continue'] = array( 'label' => __( 'Continue Submission', 'wp-job-manager' ), 'nonce' => true );
|
76 |
+
break;
|
77 |
}
|
78 |
|
79 |
$actions['delete'] = array( 'label' => __( 'Delete', 'wp-job-manager' ), 'nonce' => true );
|
templates/job-submit.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* @author Automattic
|
9 |
* @package WP Job Manager
|
10 |
* @category Template
|
11 |
-
* @version 1.
|
12 |
*/
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -57,7 +57,7 @@ global $job_manager;
|
|
57 |
|
58 |
<?php foreach ( $company_fields as $key => $field ) : ?>
|
59 |
<fieldset class="fieldset-<?php echo esc_attr( $key ); ?>">
|
60 |
-
<label for="<?php echo esc_attr( $key ); ?>"><?php echo
|
61 |
<div class="field <?php echo $field['required'] ? 'required-field' : ''; ?>">
|
62 |
<?php get_job_manager_template( 'form-fields/' . $field['type'] . '-field.php', array( 'key' => $key, 'field' => $field ) ); ?>
|
63 |
</div>
|
8 |
* @author Automattic
|
9 |
* @package WP Job Manager
|
10 |
* @category Template
|
11 |
+
* @version 1.32.0
|
12 |
*/
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
57 |
|
58 |
<?php foreach ( $company_fields as $key => $field ) : ?>
|
59 |
<fieldset class="fieldset-<?php echo esc_attr( $key ); ?>">
|
60 |
+
<label for="<?php echo esc_attr( $key ); ?>"><?php echo wp_kses_post( $field['label'] ) . wp_kses_post( apply_filters( 'submit_job_form_required_label', $field['required'] ? '' : ' <small>' . __( '(optional)', 'wp-job-manager' ) . '</small>', $field ) ); ?></label>
|
61 |
<div class="field <?php echo $field['required'] ? 'required-field' : ''; ?>">
|
62 |
<?php get_job_manager_template( 'form-fields/' . $field['type'] . '-field.php', array( 'key' => $key, 'field' => $field ) ); ?>
|
63 |
</div>
|
wp-job-manager-functions.php
CHANGED
@@ -490,7 +490,7 @@ if ( ! function_exists( 'get_job_listing_rss_link' ) ) :
|
|
490 |
* @return string
|
491 |
*/
|
492 |
function get_job_listing_rss_link( $args = array() ) {
|
493 |
-
$rss_link = add_query_arg( urlencode_deep( array_merge( array( 'feed' =>
|
494 |
return $rss_link;
|
495 |
}
|
496 |
endif;
|
490 |
* @return string
|
491 |
*/
|
492 |
function get_job_listing_rss_link( $args = array() ) {
|
493 |
+
$rss_link = add_query_arg( urlencode_deep( array_merge( array( 'feed' => WP_Job_Manager_Post_Types::get_job_feed_name() ), $args ) ), home_url() );
|
494 |
return $rss_link;
|
495 |
}
|
496 |
endif;
|
wp-job-manager-template.php
CHANGED
@@ -146,7 +146,9 @@ function get_the_job_status( $post = null ) {
|
|
146 |
$post = get_post( $post );
|
147 |
$status = $post->post_status;
|
148 |
$statuses = get_job_listing_post_statuses();
|
149 |
-
|
|
|
|
|
150 |
if ( isset( $statuses[ $status ] ) ) {
|
151 |
$status = $statuses[ $status ];
|
152 |
} else {
|
@@ -244,7 +246,7 @@ function get_the_job_application_method( $post = null ) {
|
|
244 |
$method->email = antispambot( $apply );
|
245 |
|
246 |
// translators: %1$s is the job listing title; %2$s is the URL for the current WordPress instance.
|
247 |
-
$method->subject = apply_filters( 'job_manager_application_email_subject', sprintf( esc_html__( 'Application via
|
248 |
} else {
|
249 |
if ( strpos( $apply, 'http' ) !== 0 ) {
|
250 |
$apply = 'http://' . $apply;
|
@@ -785,7 +787,7 @@ function the_job_location( $map_link = true, $post = null ) {
|
|
785 |
echo wp_kses_post(
|
786 |
apply_filters(
|
787 |
'the_job_location_map_link',
|
788 |
-
'<a class="google_map_link" href="' . esc_url( 'http://maps.google.com/maps?q=' . rawurlencode( wp_strip_all_tags( $location ) ) . '&zoom=14&size=512x512&maptype=roadmap&sensor=false' ) . '"
|
789 |
$location, $post
|
790 |
)
|
791 |
);
|
@@ -1098,7 +1100,7 @@ function the_company_twitter( $before = '', $after = '', $echo = true, $post = n
|
|
1098 |
return null;
|
1099 |
}
|
1100 |
|
1101 |
-
$company_twitter = $before . '<a href="' . esc_url( 'https://twitter.com/' . $company_twitter ) . '" class="company_twitter"
|
1102 |
|
1103 |
if ( $echo ) {
|
1104 |
echo wp_kses_post( $company_twitter );
|
146 |
$post = get_post( $post );
|
147 |
$status = $post->post_status;
|
148 |
$statuses = get_job_listing_post_statuses();
|
149 |
+
if ( 'preview' === $status ) {
|
150 |
+
$status = 'draft';
|
151 |
+
}
|
152 |
if ( isset( $statuses[ $status ] ) ) {
|
153 |
$status = $statuses[ $status ];
|
154 |
} else {
|
246 |
$method->email = antispambot( $apply );
|
247 |
|
248 |
// translators: %1$s is the job listing title; %2$s is the URL for the current WordPress instance.
|
249 |
+
$method->subject = apply_filters( 'job_manager_application_email_subject', sprintf( esc_html__( 'Application via %1$s listing on %2$s', 'wp-job-manager' ), esc_html( $post->post_title ), esc_url( home_url() ) ), $post );
|
250 |
} else {
|
251 |
if ( strpos( $apply, 'http' ) !== 0 ) {
|
252 |
$apply = 'http://' . $apply;
|
787 |
echo wp_kses_post(
|
788 |
apply_filters(
|
789 |
'the_job_location_map_link',
|
790 |
+
'<a class="google_map_link" href="' . esc_url( 'http://maps.google.com/maps?q=' . rawurlencode( wp_strip_all_tags( $location ) ) . '&zoom=14&size=512x512&maptype=roadmap&sensor=false' ) . '">' . esc_html( wp_strip_all_tags( $location ) ) . '</a>',
|
791 |
$location, $post
|
792 |
)
|
793 |
);
|
1100 |
return null;
|
1101 |
}
|
1102 |
|
1103 |
+
$company_twitter = $before . '<a href="' . esc_url( 'https://twitter.com/' . $company_twitter ) . '" class="company_twitter">' . esc_html( wp_strip_all_tags( $company_twitter ) ) . '</a>' . $after;
|
1104 |
|
1105 |
if ( $echo ) {
|
1106 |
echo wp_kses_post( $company_twitter );
|
wp-job-manager.php
CHANGED
@@ -3,11 +3,11 @@
|
|
3 |
* Plugin Name: WP Job Manager
|
4 |
* Plugin URI: https://wpjobmanager.com/
|
5 |
* Description: Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
|
6 |
-
* Version: 1.
|
7 |
* Author: Automattic
|
8 |
* Author URI: https://wpjobmanager.com/
|
9 |
* Requires at least: 4.7.0
|
10 |
-
* Tested up to:
|
11 |
* Text Domain: wp-job-manager
|
12 |
* Domain Path: /languages/
|
13 |
* License: GPL2+
|
@@ -63,7 +63,7 @@ class WP_Job_Manager {
|
|
63 |
*/
|
64 |
public function __construct() {
|
65 |
// Define constants.
|
66 |
-
define( 'JOB_MANAGER_VERSION', '1.
|
67 |
define( 'JOB_MANAGER_MINIMUM_WP_VERSION', '4.7.0' );
|
68 |
define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
|
69 |
define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
|
@@ -77,6 +77,7 @@ class WP_Job_Manager {
|
|
77 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-api.php';
|
78 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-forms.php';
|
79 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-geocode.php';
|
|
|
80 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-cache-helper.php';
|
81 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/helper/class-wp-job-manager-helper.php';
|
82 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/abstracts/abstract-wp-job-manager-email.php';
|
@@ -84,7 +85,16 @@ class WP_Job_Manager {
|
|
84 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-email-notifications.php';
|
85 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-data-exporter.php';
|
86 |
|
87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
|
89 |
if ( is_admin() ) {
|
90 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/admin/class-wp-job-manager-admin.php';
|
@@ -188,9 +198,21 @@ class WP_Job_Manager {
|
|
188 |
/**
|
189 |
* Initialize our REST API.
|
190 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
* @return WP_Job_Manager_REST_API|WP_Error
|
192 |
*/
|
193 |
public function rest_api() {
|
|
|
|
|
|
|
|
|
|
|
194 |
if ( null === $this->rest_api ) {
|
195 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/rest-api/class-wp-job-manager-rest-api.php';
|
196 |
$this->rest_api = new WP_Job_Manager_REST_API( dirname( __FILE__ ) );
|
@@ -286,44 +308,21 @@ class WP_Job_Manager {
|
|
286 |
wp_register_style( 'jquery-ui', '//code.jquery.com/ui/' . $jquery_version . '/themes/smoothness/jquery-ui.css', array(), $jquery_version );
|
287 |
}
|
288 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
/**
|
290 |
* Registers and enqueues scripts and CSS.
|
|
|
|
|
|
|
291 |
*/
|
292 |
public function frontend_scripts() {
|
293 |
-
global $post;
|
294 |
-
|
295 |
-
/**
|
296 |
-
* Starting in WP Job Manager 1.32.0, the chosen JS library and core frontend WPJM CSS will only be enqueued
|
297 |
-
* when used on a particular page. Theme and plugin authors as well as people who have overloaded WPJM's default
|
298 |
-
* template files should test this upcoming behavior.
|
299 |
-
*
|
300 |
-
* To test this behavior before 1.32.0, add this to your `wp-config.php`:
|
301 |
-
* define( 'JOB_MANAGER_TEST_NEW_ASSET_BEHAVIOR', true );
|
302 |
-
*
|
303 |
-
* Unless this constant is defined, WP Job Manager will default to its old behavior: chosen JS library and
|
304 |
-
* frontend styles are always enqueued.
|
305 |
-
*
|
306 |
-
* If your theme or plugin depend on the `frontend.css` or chosen JS library from WPJM core, you can use the
|
307 |
-
* `job_manager_chosen_enabled` and `job_manager_enqueue_frontend_style` filters.
|
308 |
-
*
|
309 |
-
* Example code for a custom shortcode that depends on the chosen library:
|
310 |
-
*
|
311 |
-
* add_filter( 'job_manager_chosen_enabled', function( $chosen_used_on_page ) {
|
312 |
-
* global $post;
|
313 |
-
* if ( is_singular()
|
314 |
-
* && is_a( $post, 'WP_Post' )
|
315 |
-
* && has_shortcode( $post->post_content, 'resumes' )
|
316 |
-
* ) {
|
317 |
-
* $chosen_used_on_page = true;
|
318 |
-
* }
|
319 |
-
* return $chosen_used_on_page;
|
320 |
-
* } );
|
321 |
-
*/
|
322 |
-
if ( ! defined( 'JOB_MANAGER_TEST_NEW_ASSET_BEHAVIOR' ) || true !== JOB_MANAGER_TEST_NEW_ASSET_BEHAVIOR ) {
|
323 |
-
add_filter( 'job_manager_chosen_enabled', '__return_true' );
|
324 |
-
add_filter( 'job_manager_enqueue_frontend_style', '__return_true' );
|
325 |
-
}
|
326 |
-
|
327 |
$ajax_url = WP_Job_Manager_Ajax::get_endpoint();
|
328 |
$ajax_filter_deps = array( 'jquery', 'jquery-deserialize' );
|
329 |
$ajax_data = array(
|
@@ -341,25 +340,25 @@ class WP_Job_Manager {
|
|
341 |
*/
|
342 |
$ajax_data['lang'] = apply_filters( 'wpjm_lang', null );
|
343 |
|
344 |
-
$
|
345 |
-
$
|
346 |
|
347 |
/**
|
348 |
-
*
|
349 |
-
*
|
350 |
-
* NOTE: See above. Before WP Job Manager 1.32.0 is released, `job_manager_enqueue_frontend_style` will be filtered to `true` by default.
|
351 |
-
*
|
352 |
-
* @since 1.19.0
|
353 |
-
*
|
354 |
-
* @param bool $chosen_used_on_page Defaults to only when there are known shortcodes on the page.
|
355 |
*/
|
356 |
-
if (
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
|
|
|
|
|
|
|
|
|
|
363 |
wp_localize_script(
|
364 |
'chosen', 'job_manager_chosen_multiselect_args',
|
365 |
apply_filters(
|
@@ -368,6 +367,55 @@ class WP_Job_Manager {
|
|
368 |
)
|
369 |
)
|
370 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
371 |
}
|
372 |
|
373 |
if ( job_manager_user_can_upload_file_via_ajax() ) {
|
@@ -427,7 +475,21 @@ class WP_Job_Manager {
|
|
427 |
* Filter whether to enqueue WPJM core's frontend scripts. By default, they will only be enqueued on WPJM related
|
428 |
* pages.
|
429 |
*
|
430 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
431 |
*
|
432 |
* @since 1.30.0
|
433 |
*
|
3 |
* Plugin Name: WP Job Manager
|
4 |
* Plugin URI: https://wpjobmanager.com/
|
5 |
* Description: Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
|
6 |
+
* Version: 1.32.0
|
7 |
* Author: Automattic
|
8 |
* Author URI: https://wpjobmanager.com/
|
9 |
* Requires at least: 4.7.0
|
10 |
+
* Tested up to: 5.0
|
11 |
* Text Domain: wp-job-manager
|
12 |
* Domain Path: /languages/
|
13 |
* License: GPL2+
|
63 |
*/
|
64 |
public function __construct() {
|
65 |
// Define constants.
|
66 |
+
define( 'JOB_MANAGER_VERSION', '1.32.0' );
|
67 |
define( 'JOB_MANAGER_MINIMUM_WP_VERSION', '4.7.0' );
|
68 |
define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
|
69 |
define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
|
77 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-api.php';
|
78 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-forms.php';
|
79 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-geocode.php';
|
80 |
+
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-blocks.php';
|
81 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-cache-helper.php';
|
82 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/helper/class-wp-job-manager-helper.php';
|
83 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/abstracts/abstract-wp-job-manager-email.php';
|
85 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-email-notifications.php';
|
86 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-data-exporter.php';
|
87 |
|
88 |
+
/**
|
89 |
+
* This custom REST API implementation is deprecated and will be removed in 1.33.0.
|
90 |
+
*
|
91 |
+
* @see WP_Job_Manager::rest_api()
|
92 |
+
* @see https://github.com/Automattic/WP-Job-Manager/issues/1625
|
93 |
+
*/
|
94 |
+
if ( defined( 'WPJM_REST_API_ENABLED' ) && WPJM_REST_API_ENABLED ) {
|
95 |
+
trigger_error( esc_html__( 'Constant `WPJM_REST_API_ENABLED` and custom REST API implementation is deprecated and will be removed in 1.33.0. Please use standard WP Core\'s implementation.', 'wp-job-manager' ) );
|
96 |
+
add_action( 'rest_api_init', array( $this, 'rest_api' ) );
|
97 |
+
}
|
98 |
|
99 |
if ( is_admin() ) {
|
100 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/admin/class-wp-job-manager-admin.php';
|
198 |
/**
|
199 |
* Initialize our REST API.
|
200 |
*
|
201 |
+
* NOTE: This custom, unsupported REST API implementation be removed in 1.33.0 and the constant `WPJM_REST_API_ENABLED`
|
202 |
+
* will have no effect.
|
203 |
+
*
|
204 |
+
* @see https://developer.wordpress.org/rest-api/
|
205 |
+
* @see https://github.com/Automattic/WP-Job-Manager/issues/1625
|
206 |
+
*
|
207 |
+
* @deprecated 1.32.0 Please use standard WP core REST API.
|
208 |
* @return WP_Job_Manager_REST_API|WP_Error
|
209 |
*/
|
210 |
public function rest_api() {
|
211 |
+
_deprecated_function(
|
212 |
+
__CLASS__ . ':' . __FUNCTION__ . '()',
|
213 |
+
'1.32.0',
|
214 |
+
esc_html__( 'Standard REST API implementation from WP core', 'wp-job-manager' )
|
215 |
+
);
|
216 |
if ( null === $this->rest_api ) {
|
217 |
include_once JOB_MANAGER_PLUGIN_DIR . '/includes/rest-api/class-wp-job-manager-rest-api.php';
|
218 |
$this->rest_api = new WP_Job_Manager_REST_API( dirname( __FILE__ ) );
|
308 |
wp_register_style( 'jquery-ui', '//code.jquery.com/ui/' . $jquery_version . '/themes/smoothness/jquery-ui.css', array(), $jquery_version );
|
309 |
}
|
310 |
|
311 |
+
/**
|
312 |
+
* Registers select2 assets when needed.
|
313 |
+
*/
|
314 |
+
public static function register_select2_assets() {
|
315 |
+
wp_register_script( 'select2', JOB_MANAGER_PLUGIN_URL . '/assets/js/select2/select2.full.min.js', array( 'jquery' ), '4.0.5' );
|
316 |
+
wp_register_style( 'select2', JOB_MANAGER_PLUGIN_URL . '/assets/js/select2/select2.min.css', array(), '4.0.5' );
|
317 |
+
}
|
318 |
+
|
319 |
/**
|
320 |
* Registers and enqueues scripts and CSS.
|
321 |
+
*
|
322 |
+
* Note: For enhanced select, 1.32.0 moved to Select2. Chosen is currently packaged but will be removed in an
|
323 |
+
* upcoming release.
|
324 |
*/
|
325 |
public function frontend_scripts() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
326 |
$ajax_url = WP_Job_Manager_Ajax::get_endpoint();
|
327 |
$ajax_filter_deps = array( 'jquery', 'jquery-deserialize' );
|
328 |
$ajax_data = array(
|
340 |
*/
|
341 |
$ajax_data['lang'] = apply_filters( 'wpjm_lang', null );
|
342 |
|
343 |
+
$enhanced_select_shortcodes = array( 'submit_job_form', 'job_dashboard', 'jobs' );
|
344 |
+
$enhanced_select_used_on_page = has_wpjm_shortcode( null, $enhanced_select_shortcodes );
|
345 |
|
346 |
/**
|
347 |
+
* Set the constant `JOB_MANAGER_DISABLE_CHOSEN_LEGACY_COMPAT` to true to test for future behavior once
|
348 |
+
* this legacy code is removed and `chosen` is no longer packaged with the plugin.
|
|
|
|
|
|
|
|
|
|
|
349 |
*/
|
350 |
+
if ( ! defined( 'JOB_MANAGER_DISABLE_CHOSEN_LEGACY_COMPAT' ) || ! JOB_MANAGER_DISABLE_CHOSEN_LEGACY_COMPAT ) {
|
351 |
+
if ( is_wpjm_taxonomy() || is_wpjm_job_listing() || is_wpjm_page() ) {
|
352 |
+
$enhanced_select_used_on_page = true;
|
353 |
+
}
|
354 |
+
|
355 |
+
// Register the script for dependencies that still require it.
|
356 |
+
if ( ! wp_script_is( 'chosen', 'registered' ) ) {
|
357 |
+
wp_register_script( 'chosen', JOB_MANAGER_PLUGIN_URL . '/assets/js/jquery-chosen/chosen.jquery.min.js', array( 'jquery' ), '1.1.0', true );
|
358 |
+
wp_register_style( 'chosen', JOB_MANAGER_PLUGIN_URL . '/assets/css/chosen.css', array(), '1.1.0' );
|
359 |
+
}
|
360 |
+
|
361 |
+
// Backwards compatibility for third-party themes/plugins while they transition to Select2.
|
362 |
wp_localize_script(
|
363 |
'chosen', 'job_manager_chosen_multiselect_args',
|
364 |
apply_filters(
|
367 |
)
|
368 |
)
|
369 |
);
|
370 |
+
|
371 |
+
/**
|
372 |
+
* Filter the use of the deprecated chosen library. Themes and plugins should migrate to Select2. This will be
|
373 |
+
* removed in an upcoming major release.
|
374 |
+
*
|
375 |
+
* @since 1.19.0
|
376 |
+
* @deprecated 1.32.0 Migrate to job_manager_select2_enabled and enable only on pages that need it.
|
377 |
+
*
|
378 |
+
* @param bool $chosen_used_on_page
|
379 |
+
*/
|
380 |
+
if ( apply_filters( 'job_manager_chosen_enabled', false ) ) {
|
381 |
+
_deprecated_hook( 'job_manager_chosen_enabled', '1.32.0', 'job_manager_select2_enabled' );
|
382 |
+
|
383 |
+
// Assume if this filter returns true that the current page should have the multi-select scripts.
|
384 |
+
$enhanced_select_used_on_page = true;
|
385 |
+
|
386 |
+
wp_enqueue_script( 'chosen' );
|
387 |
+
wp_enqueue_style( 'chosen' );
|
388 |
+
}
|
389 |
+
}
|
390 |
+
|
391 |
+
/**
|
392 |
+
* Filter the use of the enhanced select.
|
393 |
+
*
|
394 |
+
* Note: Don't depend on `select2` being registered/enqueued in customizations.
|
395 |
+
*
|
396 |
+
* @since 1.32.0
|
397 |
+
*
|
398 |
+
* @param bool $enhanced_select_used_on_page Defaults to only when there are known shortcodes on the page.
|
399 |
+
*/
|
400 |
+
if ( apply_filters( 'job_manager_enhanced_select_enabled', $enhanced_select_used_on_page ) ) {
|
401 |
+
self::register_select2_assets();
|
402 |
+
wp_register_script( 'wp-job-manager-term-multiselect', JOB_MANAGER_PLUGIN_URL . '/assets/js/term-multiselect.min.js', array( 'jquery', 'select2' ), JOB_MANAGER_VERSION, true );
|
403 |
+
wp_register_script( 'wp-job-manager-multiselect', JOB_MANAGER_PLUGIN_URL . '/assets/js/multiselect.min.js', array( 'jquery', 'select2' ), JOB_MANAGER_VERSION, true );
|
404 |
+
wp_enqueue_style( 'select2' );
|
405 |
+
|
406 |
+
$ajax_filter_deps[] = 'select2';
|
407 |
+
|
408 |
+
$select2_args = array();
|
409 |
+
if ( is_rtl() ) {
|
410 |
+
$select2_args['dir'] = 'rtl';
|
411 |
+
}
|
412 |
+
|
413 |
+
$select2_args['width'] = '100%';
|
414 |
+
|
415 |
+
wp_localize_script(
|
416 |
+
'select2', 'job_manager_select2_args',
|
417 |
+
apply_filters( 'job_manager_select2_args', $select2_args )
|
418 |
+
);
|
419 |
}
|
420 |
|
421 |
if ( job_manager_user_can_upload_file_via_ajax() ) {
|
475 |
* Filter whether to enqueue WPJM core's frontend scripts. By default, they will only be enqueued on WPJM related
|
476 |
* pages.
|
477 |
*
|
478 |
+
* If your theme or plugin depend on `frontend.css` from WPJM core, you can use the
|
479 |
+
* `job_manager_enqueue_frontend_style` filter.
|
480 |
+
*
|
481 |
+
* Example code for a custom shortcode that depends on the frontend style:
|
482 |
+
*
|
483 |
+
* add_filter( 'job_manager_enqueue_frontend_style', function( $frontend_used_on_page ) {
|
484 |
+
* global $post;
|
485 |
+
* if ( is_singular()
|
486 |
+
* && is_a( $post, 'WP_Post' )
|
487 |
+
* && has_shortcode( $post->post_content, 'resumes' )
|
488 |
+
* ) {
|
489 |
+
* $frontend_used_on_page = true;
|
490 |
+
* }
|
491 |
+
* return $frontend_used_on_page;
|
492 |
+
* } );
|
493 |
*
|
494 |
* @since 1.30.0
|
495 |
*
|