Version Description
- Enhancement: Moves license and update management for official add-ons to the core plugin. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1168)
- Enhancement: Update language for setup wizard with more clear descriptions. (@donnapep; https://github.com/Automattic/WP-Job-Manager/pull/1194)
- Fix: Prevent duplicate attachments to job listing posts for non-image media. (@tripflex; https://github.com/Automattic/WP-Job-Manager/pull/1144)
- Fix: PHP error on registration form due to missing placeholder text. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1180)
- Fix: Apply
the_job_application_method
filter even when no default is available. (@turtlepod; https://github.com/Automattic/WP-Job-Manager/issues/1164) - Fix: Properly reset category selector on
[jobs]
shortcode. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1190)
Download this release
Release Info
Developer | jakeom |
Plugin | WP Job Manager |
Version | 1.29.0 |
Comparing to | |
See all releases |
Code changes from version 1.28.0 to 1.29.0
- assets/css/admin.css +1 -1
- assets/css/admin.less +48 -0
- assets/css/chosen.css +1 -1
- assets/css/frontend.css +1 -1
- assets/css/job-submission.css +1 -11
- assets/js/admin.min.js +1 -1
- assets/js/ajax-file-upload.min.js +1 -1
- assets/js/ajax-filters.js +1 -1
- assets/js/ajax-filters.min.js +1 -1
- assets/js/job-application.min.js +1 -1
- assets/js/job-dashboard.min.js +1 -1
- assets/js/job-submission.min.js +1 -1
- changelog.txt +9 -1
- includes/admin/class-wp-job-manager-addons.php +15 -5
- includes/admin/class-wp-job-manager-admin.php +2 -2
- includes/admin/class-wp-job-manager-setup.php +25 -28
- includes/forms/class-wp-job-manager-form-submit-job.php +1 -1
- includes/helper/class-wp-job-manager-helper-api.php +173 -0
- includes/helper/class-wp-job-manager-helper-options.php +114 -0
- includes/helper/class-wp-job-manager-helper.php +577 -0
- includes/helper/views/html-licence-key-notice.php +9 -0
- includes/helper/views/html-licences.php +81 -0
- languages/wp-job-manager.pot +154 -92
- readme.txt +10 -2
- templates/form-fields/password-field.php +2 -2
- templates/form-fields/text-field.php +2 -2
- templates/form-fields/textarea-field.php +3 -3
- wp-job-manager-template.php +3 -2
- wp-job-manager.php +3 -2
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}.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;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;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;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;text-align:center;font-variant:normal;text-transform:none;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_addons_wrap #job-manager-addons-banner{position:relative;background:#d85677;padding:0 2em 0 5em;color:#fff;margin:10px .25% 20px 0;border-color:rgba(0,0,0,.1);overflow:hidden}.wp_job_manager_addons_wrap #job-manager-addons-banner strong{font-size:1.25em;line-height:.8em;text-shadow:0 2px 0 rgba(0,0,0,.1);font-weight:400;float:left;padding:1.6em 0}.wp_job_manager_addons_wrap #job-manager-addons-banner a.button{color:#fff;text-decoration:none;font-weight:700;float:right;background:#d85677;border:1px solid #fff;line-height:1em;padding:1em;margin:1em 0;text-shadow:0 2px 0 rgba(0,0,0,.1);box-shadow:0 2px 0 rgba(0,0,0,.1);height:auto;position:relative}.wp_job_manager_addons_wrap #job-manager-addons-banner:before{display:inline-block;-webkit-font-smoothing:antialiased;vertical-align:top;font-family:jm-logo;content:"\e600";top:.02em;left:0;position:absolute;text-shadow:0 2px 0 rgba(0,0,0,.1);font-size:5em;font-weight:400;text-align:center;width:1em;height:1em;line-height:1em}.wp_job_manager_addons_wrap .products{overflow:hidden}.wp_job_manager_addons_wrap .products li{display:inline-block;margin:0 1% 10px 0!important;padding:0;vertical-align:top;width:24%;min-width:250px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #ddd;-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);overflow:hidden;position:relative;opacity:.8}.wp_job_manager_addons_wrap .products li:nth-child(4n+0){margin-right:0!important}.wp_job_manager_addons_wrap .products li a{color:inherit;text-decoration:none}.wp_job_manager_addons_wrap .products li img{width:100%;height:auto;display:block;padding:0;margin:0;background:#fff;border-bottom:1px solid rgba(0,0,0,.1)}.wp_job_manager_addons_wrap .products li h2{margin:0!important;padding:10px 0!important;line-height:1;background:rgba(255,255,255,.6);border-bottom:1px solid rgba(0,0,0,.1);color:#000;text-align:center;position:absolute;width:100%;top:0;left:0;font-size:16px;text-shadow:none;display:none}.wp_job_manager_addons_wrap .products li:focus,.wp_job_manager_addons_wrap .products li:hover{opacity:1}.wp_job_manager_addons_wrap .products li:focus h2,.wp_job_manager_addons_wrap .products li:hover h2{display:block}.wp_job_manager_addons_wrap .products li .third_party{display:none}.wp_job_manager_addons_wrap .products li p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wp_job_manager_addons_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}@media only screen and (max-width:782px){.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),.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 .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_addons_wrap #job-manager-addons-banner{position:relative;background:#d85677;padding:0 2em 0 5em;color:#fff;margin:10px .25% 20px 0;border-color:rgba(0,0,0,.1);overflow:hidden}.wp_job_manager_addons_wrap #job-manager-addons-banner strong{font-size:1.25em;line-height:.8em;text-shadow:0 2px 0 rgba(0,0,0,.1);font-weight:400;float:left;padding:1.6em 0}.wp_job_manager_addons_wrap #job-manager-addons-banner a.button{color:#fff;text-decoration:none;font-weight:700;float:right;background:#d85677;border:1px solid #fff;line-height:1em;padding:1em;margin:1em 0;text-shadow:0 2px 0 rgba(0,0,0,.1);box-shadow:0 2px 0 rgba(0,0,0,.1);height:auto;position:relative}.wp_job_manager_addons_wrap #job-manager-addons-banner:before{display:inline-block;-webkit-font-smoothing:antialiased;vertical-align:top;font-family:jm-logo;content:"\e600";top:.02em;left:0;position:absolute;text-shadow:0 2px 0 rgba(0,0,0,.1);font-size:5em;font-weight:400;text-align:center;width:1em;height:1em;line-height:1em}.wp_job_manager_addons_wrap .products{overflow:hidden}.wp_job_manager_addons_wrap .products li{display:inline-block;margin:0 1% 10px 0!important;padding:0;vertical-align:top;width:24%;min-width:250px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #ddd;-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);overflow:hidden;position:relative;opacity:.8}.wp_job_manager_addons_wrap .products li:nth-child(4n+0){margin-right:0!important}.wp_job_manager_addons_wrap .products li a{color:inherit;text-decoration:none}.wp_job_manager_addons_wrap .products li img{width:100%;height:auto;display:block;padding:0;margin:0;background:#fff;border-bottom:1px solid rgba(0,0,0,.1)}.wp_job_manager_addons_wrap .products li h2{margin:0!important;padding:10px 0!important;line-height:1;background:rgba(255,255,255,.6);border-bottom:1px solid rgba(0,0,0,.1);color:#000;text-align:center;position:absolute;width:100%;top:0;left:0;font-size:16px;text-shadow:none;display:none}.wp_job_manager_addons_wrap .products li:focus,.wp_job_manager_addons_wrap .products li:hover{opacity:1}.wp_job_manager_addons_wrap .products li:focus h2,.wp_job_manager_addons_wrap .products li:hover h2{display:block}.wp_job_manager_addons_wrap .products li .third_party{display:none}.wp_job_manager_addons_wrap .products li p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wp_job_manager_addons_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}@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/admin.less
CHANGED
@@ -10,6 +10,46 @@
|
|
10 |
margin: 1em 0 0;
|
11 |
}
|
12 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
.widefat {
|
14 |
td.column-featured_job, td.column-filled, td.column-job_status {
|
15 |
width: 46px;
|
@@ -492,6 +532,14 @@
|
|
492 |
* Mobile styles
|
493 |
*/
|
494 |
@media only screen and (max-width: 782px) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
495 |
.widefat {
|
496 |
.job_position.column-primary{
|
497 |
display: table-cell !important;
|
10 |
margin: 1em 0 0;
|
11 |
}
|
12 |
}
|
13 |
+
|
14 |
+
a.wpjm-activate-licence-link,
|
15 |
+
a.wpjm-activate-licence-link:link,
|
16 |
+
a.wpjm-activate-licence-link:hover,
|
17 |
+
a.wpjm-activate-licence-link:visited,
|
18 |
+
a.wpjm-activate-licence-link:active {
|
19 |
+
color: orangered;
|
20 |
+
}
|
21 |
+
|
22 |
+
.wpjm-licences {
|
23 |
+
margin-top: 10px;
|
24 |
+
.licence-row {
|
25 |
+
align-items: center;
|
26 |
+
border: solid 1px #e2e0e2;
|
27 |
+
display: flex;
|
28 |
+
background-color: #fff;
|
29 |
+
flex-wrap: wrap;
|
30 |
+
min-height: 82px;
|
31 |
+
margin-bottom: 20px;
|
32 |
+
position: relative;
|
33 |
+
}
|
34 |
+
.plugin-info {
|
35 |
+
font-size: 18px;
|
36 |
+
flex-basis: 320px;
|
37 |
+
padding: 0 20px;
|
38 |
+
margin-right: 10px;
|
39 |
+
|
40 |
+
.plugin-author {
|
41 |
+
font-size: 12px;
|
42 |
+
}
|
43 |
+
}
|
44 |
+
.plugin-licence {
|
45 |
+
flex: 1;
|
46 |
+
flex-basis: 40%;
|
47 |
+
padding-bottom: 5px;
|
48 |
+
label {
|
49 |
+
white-space: nowrap;
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
53 |
.widefat {
|
54 |
td.column-featured_job, td.column-filled, td.column-job_status {
|
55 |
width: 46px;
|
532 |
* Mobile styles
|
533 |
*/
|
534 |
@media only screen and (max-width: 782px) {
|
535 |
+
.wpjm-licences {
|
536 |
+
.plugin-info {
|
537 |
+
padding: 10px;
|
538 |
+
}
|
539 |
+
.plugin-licence {
|
540 |
+
padding: 10px;
|
541 |
+
}
|
542 |
+
}
|
543 |
.widefat {
|
544 |
.job_position.column-primary{
|
545 |
display: table-cell !important;
|
assets/css/chosen.css
CHANGED
@@ -8,4 +8,4 @@ Copyright (c) 2011 Harvest http://getharvest.com
|
|
8 |
|
9 |
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
|
10 |
This file is generated by `grunt build`, do not edit it by hand.
|
11 |
-
*/.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;*display:inline;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:23px;border:1px solid #aaa;border-radius:5px;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover,.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(../images/chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:#fff url(../images/chosen-sprite.png) no-repeat 100% -20px;background:url(../images/chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:5px;height:auto;outline:0;border:0!important;background:transparent!important;box-shadow:none;color:#666;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;border:1px solid #aaa;border-radius:3px;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:0;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close,.chosen-disabled .chosen-single{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl .chosen-drop,.chosen-rtl.chosen-container-single-nosearch .chosen-search{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:0}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:#fff url(../images/chosen-sprite.png) no-repeat -30px -20px;background:url(../images/chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(../images/chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
|
8 |
|
9 |
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
|
10 |
This file is generated by `grunt build`, do not edit it by hand.
|
11 |
+
*/.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:23px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(../images/chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:#fff url(../images/chosen-sprite.png) no-repeat 100% -20px;background:url(../images/chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:5px;height:auto;outline:0;border:0!important;background:0 0!important;box-shadow:none;color:#666;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;border:1px solid #aaa;border-radius:3px;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl .chosen-drop,.chosen-rtl.chosen-container-single-nosearch .chosen-search{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:#fff url(../images/chosen-sprite.png) no-repeat -30px -20px;background:url(../images/chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(../images/chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
|
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}.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;*overflow:auto;*zoom:1;*display:inline}.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;padding:0 0 1em;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;*overflow:auto;*zoom:1;*display:inline;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;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}div.job_listings{margin-bottom:1em}div.job_listings ul.job_listings{margin:0}.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 .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}.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;*overflow:auto;*zoom:1;*display:inline;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;*overflow:auto;*zoom:1;*display:inline;content:'\e80a'}.single_job_listing .company .company_video{border-top:1px solid #eee;padding:1em 0 0;margin:1em 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;*overflow:auto;*zoom:1;*display:inline;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;*overflow:auto;*zoom:1;*display:inline;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;*overflow:auto;*zoom:1;*display:inline;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;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}.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;*overflow:auto;*zoom:1;*display:inline;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}#content nav.job-manager-pagination,#job-manager-job-dashboard table .applications,#job-manager-job-dashboard table .expires,#job-manager-job-dashboard table .filled,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;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}@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}}.chosen-container{width:100%!important}.twenty-eleven ul.job_listings li.job_listing,.twenty-eleven ul.job_listings li.no_job_listings_found{padding:0!important}.twenty-ten .chosen-choices,.twenty-ten .job_types{margin:0!important}.rtl .job-manager-form label{float:right}.rtl .entry-content .job_listing_preview_title .button,.rtl .job-manager-form div.field,.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}.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}div.job_listings{margin-bottom:1em}div.job_listings ul.job_listings{margin:0}.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 .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}.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 .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}@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}}.chosen-container{width:100%!important}.twenty-eleven ul.job_listings li.job_listing,.twenty-eleven ul.job_listings li.no_job_listings_found{padding:0!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/css/job-submission.css
CHANGED
@@ -1,11 +1 @@
|
|
1 |
-
#wp-link #search-panel
|
2 |
-
#wp-link #wplink-link-existing-content {
|
3 |
-
display: none;
|
4 |
-
}
|
5 |
-
div#wp-link-wrap.wp-core-ui {
|
6 |
-
height: 300px;
|
7 |
-
}
|
8 |
-
.wplink-autocomplete.ui-autocomplete {
|
9 |
-
display: none;
|
10 |
-
visibility: hidden;
|
11 |
-
}
|
1 |
+
#wp-link #search-panel,#wp-link #wplink-link-existing-content{display:none}div#wp-link-wrap.wp-core-ui{height:300px}.wplink-autocomplete.ui-autocomplete{display:none;visibility:hidden}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/admin.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(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(){return t(this).closest("p").find(".current-author").hide(),t(this).closest("p").find(".change-author").show(),!1}),t("input.job-manager-datepicker, input#_job_expires").datepicker({altFormat:"yy-mm-dd",dateFormat:job_manager_admin.date_format}),t("input.job-manager-datepicker, input#_job_expires").each(function(){if(t(this).val()){var e=t(this).val().split("-");if(3===e.length){var a=new Date(parseInt(e[0],10),parseInt(e[1],10)-1,parseInt(e[2],10));t(this).datepicker("setDate",a)}}});var e,a,i;t(document).on("click",".wp_job_manager_add_another_file_button",function(e){e.preventDefault();var a=t(this).data("field_name"),i=t(this).data("field_placeholder"),n=t(this).data("uploader_button_text"),o=t(this).data("uploader_button"),l=t(this).data("view_button");t(this).before('<span class="file_url"><input type="text" name="'+a+'[]" placeholder="'+i+'" /><button class="button button-small wp_job_manager_upload_file_button" data-uploader_button_text="'+n+'">'+o+'</button><button class="button button-small wp_job_manager_view_file_button">'+l+"</button></span>")}),t(document).on("click",".wp_job_manager_view_file_button",function(e){e.preventDefault(),i=t(this).closest(".file_url");var n=(a=i.find("input")).val();n.indexOf("://")>-1?window.open(n,"_blank"):(a.addClass("file_no_url"),setTimeout(function(){a.removeClass("file_no_url")},1e3))}),t(document).on("click",".wp_job_manager_upload_file_button",function(n){n.preventDefault(),i=t(this).closest(".file_url"),a=i.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 i=e.state().get("selection").first().toJSON();t(a).val(i.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),i=a.is(":checked"),n=a.val();t("#"+e+"checklist li :radio, #"+e+"checklist-pop :radio").prop("checked",!1),t("#in-"+e+"-"+n+", #in-popular-"+e+"-"+n).prop("checked",i)})});
|
assets/js/ajax-file-upload.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(
|
1 |
+
jQuery(function(e){e(".wp-job-manager-file-upload").each(function(){e(this).fileupload({dataType:"json",dropZone:e(this),url:job_manager_ajax_file_upload.ajax_url.toString().replace("%%endpoint%%","upload_file"),maxNumberOfFiles:1,formData:{script:!0},add:function(a,t){var i=e(this),r=i.closest("form"),n=i.parent().find(".job-manager-uploaded-files"),o=[],l=e(this).data("file_types");if(l){var s=new RegExp("(.|/)("+l+")$","i");t.originalFiles[0].name.length&&!s.test(t.originalFiles[0].name)&&o.push(job_manager_ajax_file_upload.i18n_invalid_file_type+" "+l)}o.length>0?window.alert(o.join("\n")):(r.find(':input[type="submit"]').attr("disabled","disabled"),t.context=e('<progress value="" max="100"></progress>').appendTo(n),t.submit())},progress:function(e,a){var t=parseInt(a.loaded/a.total*100,10);a.context.val(t)},fail:function(a,t){var i=e(this).closest("form");t.errorThrown&&window.alert(t.errorThrown),t.context.remove(),i.find(':input[type="submit"]').removeAttr("disabled")},done:function(a,t){var i=e(this),r=i.closest("form"),n=i.parent().find(".job-manager-uploaded-files"),o=i.attr("multiple")?1:0,l=["jpg","gif","png","jpeg","jpe"];t.context.remove(),void 0===t.result.success||t.result.success||window.alert(t.result.data),e.each(t.result.files,function(a,t){if(t.error)window.alert(t.error);else{var r;e.inArray(t.extension,l)>=0?(r=e.parseHTML(job_manager_ajax_file_upload.js_field_html_img),e(r).find(".job-manager-uploaded-file-preview img").attr("src",t.url)):(r=e.parseHTML(job_manager_ajax_file_upload.js_field_html),e(r).find(".job-manager-uploaded-file-name code").text(t.name)),e(r).find(".input-text").val(t.url),e(r).find(".input-text").attr("name","current_"+i.attr("name")),o?n.append(r):n.html(r)}}),r.find(':input[type="submit"]').removeAttr("disabled")}})})});
|
assets/js/ajax-filters.js
CHANGED
@@ -199,7 +199,7 @@ jQuery( document ).ready( function ( $ ) {
|
|
199 |
var form = $( this ).closest( 'form' );
|
200 |
|
201 |
form.find( ':input[name="search_keywords"], :input[name="search_location"], .job-manager-filter' ).not(':input[type="hidden"]').val( '' ).trigger( 'chosen:updated' );
|
202 |
-
form.find( ':input[name^="search_categories"]' ).not(':input[type="hidden"]').val(
|
203 |
$( ':input[name="filter_job_type[]"]', form ).not(':input[type="hidden"]').attr( 'checked', 'checked' );
|
204 |
|
205 |
target.triggerHandler( 'reset' );
|
199 |
var form = $( this ).closest( 'form' );
|
200 |
|
201 |
form.find( ':input[name="search_keywords"], :input[name="search_location"], .job-manager-filter' ).not(':input[type="hidden"]').val( '' ).trigger( 'chosen:updated' );
|
202 |
+
form.find( ':input[name^="search_categories"]' ).not(':input[type="hidden"]').val( '' ).trigger( 'chosen:updated' );
|
203 |
$( ':input[name="filter_job_type[]"]', form ).not(':input[type="hidden"]').attr( 'checked', 'checked' );
|
204 |
|
205 |
target.triggerHandler( 'reset' );
|
assets/js/ajax-filters.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(
|
1 |
+
jQuery(document).ready(function(e){function a(a,t){if(i){var n=a.find(".job_filters"),s=e(n).serialize(),r=e("div.job_listings").index(a);window.history.replaceState({id:"job_manager_state",page:t,data:s,index:r},"",o+"#s=1")}}var t=[];e(".job_listings").on("update_results",function(a,i,o,n){var s,r,d,l="",_=e(this),g=_.find(".job_filters"),c=_.find(".showing_jobs"),p=_.find(".job_listings"),h=_.data("per_page"),u=_.data("orderby"),f=_.data("order"),b=_.data("featured"),j=_.data("filled"),m=_.data("job_types"),w=_.data("post_status"),v=e("div.job_listings").index(this);if(!(v<0)){if(t[v]&&t[v].abort(),o||(e(p).addClass("loading"),e("li.job_listing, li.no_job_listings_found",p).css("visibility","hidden"),i>1&&!0!==_.data("show_pagination")?e(p).before('<a class="load_more_jobs load_previous" href="#"><strong>'+job_manager_ajax_filters.i18n_load_prev_listings+"</strong></a>"):_.find(".load_previous").remove(),_.find(".load_more_jobs").data("page",i)),!0===_.data("show_filters")){var y=[];e(':input[name="filter_job_type[]"]:checked, :input[name="filter_job_type[]"][type="hidden"], :input[name="filter_job_type"]',g).each(function(){y.push(e(this).val())}),s=g.find(':input[name^="search_categories"]').map(function(){return e(this).val()}).get(),r="",d="";var k=g.find(':input[name="search_keywords"]'),x=g.find(':input[name="search_location"]');k.val()!==k.attr("placeholder")&&(r=k.val()),x.val()!==x.attr("placeholder")&&(d=x.val()),l={lang:job_manager_ajax_filters.lang,search_keywords:r,search_location:d,search_categories:s,filter_job_type:y,filter_post_status:w,per_page:h,orderby:u,order:f,page:i,featured:b,filled:j,show_pagination:_.data("show_pagination"),form_data:g.serialize()}}else s=_.data("categories"),r=_.data("keywords"),d=_.data("location"),s&&(s=s.split(",")),l={lang:job_manager_ajax_filters.lang,search_categories:s,search_keywords:r,search_location:d,filter_post_status:w,filter_job_type:m,per_page:h,orderby:u,order:f,page:i,featured:b,filled:j,show_pagination:_.data("show_pagination")};t[v]=e.ajax({type:"POST",url:job_manager_ajax_filters.ajax_url.toString().replace("%%endpoint%%","get_listings"),data:l,success:function(a){if(a)try{a.showing?e(c).show().html("<span>"+a.showing+"</span>"+a.showing_links):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===_.data("show_pagination")?(_.find(".job-manager-pagination").remove(),a.pagination&&_.append(a.pagination)):(!a.found_jobs||a.max_num_pages<=i?e(".load_more_jobs:not(.load_previous)",_).hide():n||e(".load_more_jobs",_).show(),e(".load_more_jobs",_).removeClass("loading"),e("li.job_listing",p).css("visibility","visible")),e(p).removeClass("loading"),_.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("chosen:updated"),i.find(':input[name^="search_categories"]').not(':input[type="hidden"]').val("").trigger("chosen:updated"),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.chosen)&&(1===job_manager_ajax_filters.is_rtl&&e('select[name^="search_categories"]').addClass("chosen-rtl"),e('select[name^="search_categories"]').chosen({search_contains:!0}));var i=!1;window.history&&window.history.pushState&&(i=!0);var o=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("chosen:updated"))}a.triggerHandler("update_results",[i,!1])})})});
|
assets/js/job-application.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(
|
1 |
+
jQuery(document).ready(function(i){i("body").hasClass("job-application-details-keep-open")||i(".application_details").hide(),i(".application_button").click(function(){i(".application_details").slideToggle()})});
|
assets/js/job-dashboard.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(
|
1 |
+
jQuery(document).ready(function(n){n(".job-dashboard-action-delete").click(function(){return window.confirm(job_manager_job_dashboard.i18n_confirm_delete)})});
|
assets/js/job-submission.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(
|
1 |
+
jQuery(document).ready(function(e){e("body").on("click",".job-manager-remove-uploaded-file",function(){return e(this).closest(".job-manager-uploaded-file").remove(),!1})});
|
changelog.txt
CHANGED
@@ -1,5 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
= 1.28.0 =
|
2 |
-
* Enhancement: Improves support for Google Job Search by adding `
|
3 |
* Enhancement: Adds ability for job types to be mapped to an employment type as defined for Google Job Search. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1112)
|
4 |
* Enhancement: Requests search engines no longer index expired and filled job listings. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1120)
|
5 |
* Enhancement: Improves support with third-party sitemap generation in Jetpack, Yoast SEO, and All in One SEO. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1119)
|
1 |
+
= 1.29.0 =
|
2 |
+
* Enhancement: Moves license and update management for official add-ons to the core plugin. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1168)
|
3 |
+
* Enhancement: Update language for setup wizard with more clear descriptions. (@donnapep; https://github.com/Automattic/WP-Job-Manager/pull/1194)
|
4 |
+
* Fix: Prevent duplicate attachments to job listing posts for non-image media. (@tripflex; https://github.com/Automattic/WP-Job-Manager/pull/1144)
|
5 |
+
* Fix: PHP error on registration form due to missing placeholder text. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1180)
|
6 |
+
* Fix: Apply `the_job_application_method` filter even when no default is available. (@turtlepod; https://github.com/Automattic/WP-Job-Manager/issues/1164)
|
7 |
+
* Fix: Properly reset category selector on `[jobs]` shortcode. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1190)
|
8 |
+
|
9 |
= 1.28.0 =
|
10 |
+
* Enhancement: Improves support for Google Job Search by adding `JobPosting` structured data. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1115)
|
11 |
* Enhancement: Adds ability for job types to be mapped to an employment type as defined for Google Job Search. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1112)
|
12 |
* Enhancement: Requests search engines no longer index expired and filled job listings. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1120)
|
13 |
* Enhancement: Improves support with third-party sitemap generation in Jetpack, Yoast SEO, and All in One SEO. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1119)
|
includes/admin/class-wp-job-manager-addons.php
CHANGED
@@ -79,11 +79,21 @@ class WP_Job_Manager_Addons {
|
|
79 |
|
80 |
?>
|
81 |
<div class="wrap wp_job_manager wp_job_manager_addons_wrap">
|
82 |
-
<
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
</div>
|
88 |
<?php
|
89 |
}
|
79 |
|
80 |
?>
|
81 |
<div class="wrap wp_job_manager wp_job_manager_addons_wrap">
|
82 |
+
<nav class="nav-tab-wrapper woo-nav-tab-wrapper">
|
83 |
+
<a href="<?php echo esc_url( admin_url( 'edit.php?post_type=job_listing&page=job-manager-addons' ) ); ?>" class="nav-tab<?php if ( ! isset( $_GET['section'] ) || 'helper' !== $_GET['section'] ) { echo ' nav-tab-active'; } ?>"><?php _e( 'WP Job Manager Add-ons', 'wp-job-manager' ); ?></a>
|
84 |
+
<?php if ( current_user_can( 'update_plugins' ) ) : ?>
|
85 |
+
<a href="<?php echo esc_url( admin_url( 'edit.php?post_type=job_listing&page=job-manager-addons§ion=helper' ) ); ?>" class="nav-tab<?php if ( isset( $_GET['section'] ) && 'helper' === $_GET['section'] ) { echo ' nav-tab-active'; } ?>"><?php _e( 'Licenses', 'wp-job-manager' ); ?></a>
|
86 |
+
<?php endif; ?>
|
87 |
+
</nav>
|
88 |
+
<?php
|
89 |
+
if ( isset( $_GET['section'] ) && 'helper' === $_GET['section'] ) {
|
90 |
+
do_action( 'job_manager_helper_output' );
|
91 |
+
} else {
|
92 |
+
echo '<h1 class="screen-reader-text">' . __( 'WP Job Manager Add-ons', 'wp-job-manager' ) . '</h1>';
|
93 |
+
echo '<div id="job-manager-addons-banner" class="notice updated below-h2"><strong>' . __( 'Do you need multiple add-ons?', 'wp-job-manager' ) . '</strong> <a href="https://wpjobmanager.com/add-ons/bundle/" class="button">' . __( 'Check out the core add-on bundle →', 'wp-job-manager' ) . '</a></div>';
|
94 |
+
echo $addons;
|
95 |
+
}
|
96 |
+
?>
|
97 |
</div>
|
98 |
<?php
|
99 |
}
|
includes/admin/class-wp-job-manager-admin.php
CHANGED
@@ -86,7 +86,7 @@ class WP_Job_Manager_Admin {
|
|
86 |
|
87 |
$screen = get_current_screen();
|
88 |
|
89 |
-
if ( in_array( $screen->id, apply_filters( 'job_manager_admin_screen_ids', array( 'edit-job_listing', 'job_listing', 'job_listing_page_job-manager-settings', 'job_listing_page_job-manager-addons' ) ) ) ) {
|
90 |
$jquery_version = isset( $wp_scripts->registered['jquery-ui-core']->ver ) ? $wp_scripts->registered['jquery-ui-core']->ver : '1.9.2';
|
91 |
|
92 |
wp_enqueue_style( 'jquery-ui-style', '//code.jquery.com/ui/' . $jquery_version . '/themes/smoothness/jquery-ui.css', array(), $jquery_version );
|
@@ -109,7 +109,7 @@ class WP_Job_Manager_Admin {
|
|
109 |
public function admin_menu() {
|
110 |
add_submenu_page( 'edit.php?post_type=job_listing', __( 'Settings', 'wp-job-manager' ), __( 'Settings', 'wp-job-manager' ), 'manage_options', 'job-manager-settings', array( $this->settings_page, 'output' ) );
|
111 |
|
112 |
-
if ( apply_filters( 'job_manager_show_addons_page', true ) )
|
113 |
add_submenu_page( 'edit.php?post_type=job_listing', __( 'WP Job Manager Add-ons', 'wp-job-manager' ), __( 'Add-ons', 'wp-job-manager' ) , 'manage_options', 'job-manager-addons', array( $this, 'addons_page' ) );
|
114 |
}
|
115 |
|
86 |
|
87 |
$screen = get_current_screen();
|
88 |
|
89 |
+
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' ) ) ) ) {
|
90 |
$jquery_version = isset( $wp_scripts->registered['jquery-ui-core']->ver ) ? $wp_scripts->registered['jquery-ui-core']->ver : '1.9.2';
|
91 |
|
92 |
wp_enqueue_style( 'jquery-ui-style', '//code.jquery.com/ui/' . $jquery_version . '/themes/smoothness/jquery-ui.css', array(), $jquery_version );
|
109 |
public function admin_menu() {
|
110 |
add_submenu_page( 'edit.php?post_type=job_listing', __( 'Settings', 'wp-job-manager' ), __( 'Settings', 'wp-job-manager' ), 'manage_options', 'job-manager-settings', array( $this->settings_page, 'output' ) );
|
111 |
|
112 |
+
if ( WP_Job_Manager_Helper::instance()->has_licenced_products() || apply_filters( 'job_manager_show_addons_page', true ) )
|
113 |
add_submenu_page( 'edit.php?post_type=job_listing', __( 'WP Job Manager Add-ons', 'wp-job-manager' ), __( 'Add-ons', 'wp-job-manager' ) , 'manage_options', 'job-manager-addons', array( $this, 'addons_page' ) );
|
114 |
}
|
115 |
|
includes/admin/class-wp-job-manager-setup.php
CHANGED
@@ -155,15 +155,15 @@ class WP_Job_Manager_Setup {
|
|
155 |
|
156 |
<?php if ( 1 === $step ) : ?>
|
157 |
|
158 |
-
<h3><?php _e( 'Setup Wizard
|
159 |
|
160 |
-
<p><?php _e( 'Thanks for installing <em>WP Job Manager</em>!', 'wp-job-manager' ); ?></p>
|
161 |
-
<p><?php _e( 'This setup wizard will
|
162 |
-
<p><?php printf( __( 'If you
|
163 |
|
164 |
<p class="submit">
|
165 |
-
<a href="<?php echo esc_url( add_query_arg( 'step', 2 ) ); ?>" class="button button-primary"><?php _e( '
|
166 |
-
<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 _e( 'Skip setup. I will
|
167 |
</p>
|
168 |
|
169 |
<?php endif; ?>
|
@@ -171,7 +171,8 @@ class WP_Job_Manager_Setup {
|
|
171 |
|
172 |
<h3><?php _e( 'Page Setup', 'wp-job-manager' ); ?></h3>
|
173 |
|
174 |
-
<p><?php
|
|
|
175 |
|
176 |
<form action="<?php echo esc_url( add_query_arg( 'step', 3 ) ); ?>" method="post">
|
177 |
<?php wp_nonce_field( 'step_3', 'setup_wizard' ); ?>
|
@@ -189,9 +190,7 @@ class WP_Job_Manager_Setup {
|
|
189 |
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[submit_job_form]" /></td>
|
190 |
<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>
|
191 |
<td>
|
192 |
-
<p><?php _e( '
|
193 |
-
|
194 |
-
<p><?php _e( 'If you do not want to accept submissions from users in this way (for example you just want to post jobs from the admin dashboard) you can skip creating this page.', 'wp-job-manager' ); ?></p>
|
195 |
</td>
|
196 |
<td><code>[submit_job_form]</code></td>
|
197 |
</tr>
|
@@ -199,16 +198,14 @@ class WP_Job_Manager_Setup {
|
|
199 |
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[job_dashboard]" /></td>
|
200 |
<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>
|
201 |
<td>
|
202 |
-
<p><?php _e( '
|
203 |
-
|
204 |
-
<p><?php _e( 'If you plan on managing all listings from the admin dashboard you can skip creating this page.', 'wp-job-manager' ); ?></p>
|
205 |
</td>
|
206 |
<td><code>[job_dashboard]</code></td>
|
207 |
</tr>
|
208 |
<tr>
|
209 |
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[jobs]" /></td>
|
210 |
<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>
|
211 |
-
<td><?php _e( '
|
212 |
<td><code>[jobs]</code></td>
|
213 |
</tr>
|
214 |
</tbody>
|
@@ -226,38 +223,38 @@ class WP_Job_Manager_Setup {
|
|
226 |
<?php endif; ?>
|
227 |
<?php if ( 3 === $step ) : ?>
|
228 |
|
229 |
-
<h3><?php _e( '
|
230 |
|
231 |
-
<p><?php _e( '
|
232 |
|
233 |
<ul class="wp-job-manager-next-steps">
|
234 |
-
<li><a href="<?php echo admin_url( 'edit.php?post_type=job_listing&page=job-manager-settings' ); ?>"><?php _e( 'Tweak
|
235 |
-
<li><a href="<?php echo admin_url( 'post-new.php?post_type=job_listing' ); ?>"><?php _e( 'Add a job
|
236 |
|
237 |
-
<?php if ( $permalink = job_manager_get_permalink( '
|
238 |
-
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php _e( '
|
239 |
<?php else : ?>
|
240 |
-
<li><a href="https://wpjobmanager.com/document/
|
241 |
<?php endif; ?>
|
242 |
|
243 |
-
<?php if ( $permalink = job_manager_get_permalink( '
|
244 |
-
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php _e( '
|
245 |
<?php else : ?>
|
246 |
-
<li><a href="https://wpjobmanager.com/document/
|
247 |
<?php endif; ?>
|
248 |
|
249 |
<?php if ( $permalink = job_manager_get_permalink( 'job_dashboard' ) ) : ?>
|
250 |
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php _e( 'View the job dashboard', 'wp-job-manager' ); ?></a></li>
|
251 |
<?php else : ?>
|
252 |
-
<li><a href="https://wpjobmanager.com/document/the-job-dashboard/"><?php _e( '
|
253 |
<?php endif; ?>
|
254 |
</ul>
|
255 |
|
256 |
-
<p><?php printf( __( '
|
257 |
|
258 |
<div class="wp-job-manager-support-the-plugin">
|
259 |
-
<h3><?php _e( 'Support
|
260 |
-
<p><?php _e( 'There are
|
261 |
<ul>
|
262 |
<li class="icon-review"><a href="https://wordpress.org/support/view/plugin-reviews/wp-job-manager#postform"><?php _e( 'Leave a positive review', 'wp-job-manager' ); ?></a></li>
|
263 |
<li class="icon-localization"><a href="https://translate.wordpress.org/projects/wp-plugins/wp-job-manager"><?php _e( 'Contribute a localization', 'wp-job-manager' ); ?></a></li>
|
155 |
|
156 |
<?php if ( 1 === $step ) : ?>
|
157 |
|
158 |
+
<h3><?php _e( 'Welcome to the Setup Wizard!', 'wp-job-manager' ); ?></h3>
|
159 |
|
160 |
+
<p><?php _e( 'Thanks for installing <em>WP Job Manager</em>! Let\'s get your site ready to accept job listings.', 'wp-job-manager' ); ?></p>
|
161 |
+
<p><?php _e( 'This setup wizard will walk you through the process of creating pages for job submissions, management, and listings.', 'wp-job-manager' ); ?></p>
|
162 |
+
<p><?php printf( __( 'If you\'d prefer to skip this and set up your pages manually, our %sdocumentation%s will walk you through each step.', 'wp-job-manager' ), '<a href="https://wpjobmanager.com/documentation/">', '</a>' ); ?></p>
|
163 |
|
164 |
<p class="submit">
|
165 |
+
<a href="<?php echo esc_url( add_query_arg( 'step', 2 ) ); ?>" class="button button-primary"><?php _e( 'Start setup', 'wp-job-manager' ); ?></a>
|
166 |
+
<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 _e( 'Skip setup. I will set up the plugin manually.', 'wp-job-manager' ); ?></a>
|
167 |
</p>
|
168 |
|
169 |
<?php endif; ?>
|
171 |
|
172 |
<h3><?php _e( 'Page Setup', 'wp-job-manager' ); ?></h3>
|
173 |
|
174 |
+
<p><?php _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>
|
175 |
+
<p><?php printf( __( '(These pages are created using %1$sshortcodes%2$s, 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 page on your site, you can skip this step and take a look at %4$sshortcode documentation%2$s for detailed instructions.)', 'wp-job-manager' ), '<a href="http://codex.wordpress.org/Shortcode" title="What is a shortcode?" target="_blank" class="help-page-link">', '</a>', '<a href="http://codex.wordpress.org/Pages" target="_blank" class="help-page-link">', '<a href="https://wpjobmanager.com/document/shortcode-reference/" target="_blank" class="help-page-link">' ); ?></p>
|
176 |
|
177 |
<form action="<?php echo esc_url( add_query_arg( 'step', 3 ) ); ?>" method="post">
|
178 |
<?php wp_nonce_field( 'step_3', 'setup_wizard' ); ?>
|
190 |
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[submit_job_form]" /></td>
|
191 |
<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>
|
192 |
<td>
|
193 |
+
<p><?php _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>
|
|
|
|
|
194 |
</td>
|
195 |
<td><code>[submit_job_form]</code></td>
|
196 |
</tr>
|
198 |
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[job_dashboard]" /></td>
|
199 |
<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>
|
200 |
<td>
|
201 |
+
<p><?php _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>
|
|
|
|
|
202 |
</td>
|
203 |
<td><code>[job_dashboard]</code></td>
|
204 |
</tr>
|
205 |
<tr>
|
206 |
<td><input type="checkbox" checked="checked" name="wp-job-manager-create-page[jobs]" /></td>
|
207 |
<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>
|
208 |
+
<td><?php _e( 'Creates a page where visitors can browse, search, and filter job listings.', 'wp-job-manager' ); ?></td>
|
209 |
<td><code>[jobs]</code></td>
|
210 |
</tr>
|
211 |
</tbody>
|
223 |
<?php endif; ?>
|
224 |
<?php if ( 3 === $step ) : ?>
|
225 |
|
226 |
+
<h3><?php _e( 'You\'re ready to start using WP Job Manager!', 'wp-job-manager' ); ?></h3>
|
227 |
|
228 |
+
<p><?php _e( 'Wondering what to do now? Here are some of the most common next steps:', 'wp-job-manager' ); ?></p>
|
229 |
|
230 |
<ul class="wp-job-manager-next-steps">
|
231 |
+
<li><a href="<?php echo admin_url( 'edit.php?post_type=job_listing&page=job-manager-settings' ); ?>"><?php _e( 'Tweak your settings', 'wp-job-manager' ); ?></a></li>
|
232 |
+
<li><a href="<?php echo admin_url( 'post-new.php?post_type=job_listing' ); ?>"><?php _e( 'Add a job using the admin dashboard', 'wp-job-manager' ); ?></a></li>
|
233 |
|
234 |
+
<?php if ( $permalink = job_manager_get_permalink( 'jobs' ) ) : ?>
|
235 |
+
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php _e( 'View submitted job listings', 'wp-job-manager' ); ?></a></li>
|
236 |
<?php else : ?>
|
237 |
+
<li><a href="https://wpjobmanager.com/document/shortcode-reference/#section-1"><?php _e( 'Add job listings to a page using the [jobs] shortcode', 'wp-job-manager' ); ?></a></li>
|
238 |
<?php endif; ?>
|
239 |
|
240 |
+
<?php if ( $permalink = job_manager_get_permalink( 'submit_job_form' ) ) : ?>
|
241 |
+
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php _e( 'Add a job via the front-end', 'wp-job-manager' ); ?></a></li>
|
242 |
<?php else : ?>
|
243 |
+
<li><a href="https://wpjobmanager.com/document/the-job-submission-form/"><?php _e( 'Learn to use the front-end job submission board', 'wp-job-manager' ); ?></a></li>
|
244 |
<?php endif; ?>
|
245 |
|
246 |
<?php if ( $permalink = job_manager_get_permalink( 'job_dashboard' ) ) : ?>
|
247 |
<li><a href="<?php echo esc_url( $permalink ); ?>"><?php _e( 'View the job dashboard', 'wp-job-manager' ); ?></a></li>
|
248 |
<?php else : ?>
|
249 |
+
<li><a href="https://wpjobmanager.com/document/the-job-dashboard/"><?php _e( 'Learn to use the front-end job dashboard', 'wp-job-manager' ); ?></a></li>
|
250 |
<?php endif; ?>
|
251 |
</ul>
|
252 |
|
253 |
+
<p><?php printf( __( 'If you need help, you can find more detail in our %1$ssupport documentation%2$s or post your question on the %3$sWP Job Manager support forums%2$s. Happy hiring!', 'wp-job-manager' ), '<a href="https://wpjobmanager.com/documentation/">', '</a>', '<a href="https://wordpress.org/support/plugin/wp-job-manager">' ); ?></p>
|
254 |
|
255 |
<div class="wp-job-manager-support-the-plugin">
|
256 |
+
<h3><?php _e( 'Support WP Job Manager\'s Ongoing Development', 'wp-job-manager' ); ?></h3>
|
257 |
+
<p><?php _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>
|
258 |
<ul>
|
259 |
<li class="icon-review"><a href="https://wordpress.org/support/view/plugin-reviews/wp-job-manager#postform"><?php _e( 'Leave a positive review', 'wp-job-manager' ); ?></a></li>
|
260 |
<li class="icon-localization"><a href="https://translate.wordpress.org/projects/wp-plugins/wp-job-manager"><?php _e( 'Contribute a localization', 'wp-job-manager' ); ?></a></li>
|
includes/forms/class-wp-job-manager-form-submit-job.php
CHANGED
@@ -689,7 +689,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
689 |
// Handle attachments
|
690 |
if ( sizeof( $maybe_attach ) && apply_filters( 'job_manager_attach_uploaded_files', true ) ) {
|
691 |
// Get attachments
|
692 |
-
$attachments = get_posts( 'post_parent=' . $this->job_id . '&post_type=attachment&fields=ids&
|
693 |
$attachment_urls = array();
|
694 |
|
695 |
// Loop attachments already attached to the job
|
689 |
// Handle attachments
|
690 |
if ( sizeof( $maybe_attach ) && apply_filters( 'job_manager_attach_uploaded_files', true ) ) {
|
691 |
// Get attachments
|
692 |
+
$attachments = get_posts( 'post_parent=' . $this->job_id . '&post_type=attachment&fields=ids&numberposts=-1' );
|
693 |
$attachment_urls = array();
|
694 |
|
695 |
// Loop attachments already attached to the job
|
includes/helper/class-wp-job-manager-helper-api.php
ADDED
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
/**
|
8 |
+
* WP_Job_Manager_Helper_API
|
9 |
+
*/
|
10 |
+
class WP_Job_Manager_Helper_API {
|
11 |
+
|
12 |
+
const API_BASE_URL = 'https://wpjobmanager.com/';
|
13 |
+
|
14 |
+
/**
|
15 |
+
* The single instance of the class.
|
16 |
+
*
|
17 |
+
* @var self
|
18 |
+
* @since 1.29.0
|
19 |
+
*/
|
20 |
+
private static $_instance = null;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Allows for accessing single instance of class. Class should only be constructed once per call.
|
24 |
+
*
|
25 |
+
* @since 1.29.0
|
26 |
+
* @static
|
27 |
+
* @return self Main instance.
|
28 |
+
*/
|
29 |
+
public static function instance() {
|
30 |
+
if ( is_null( self::$_instance ) ) {
|
31 |
+
self::$_instance = new self();
|
32 |
+
}
|
33 |
+
return self::$_instance;
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Sends and receives data to and from the server API
|
38 |
+
*
|
39 |
+
* @param array|string $args
|
40 |
+
* @return object|bool $response
|
41 |
+
*/
|
42 |
+
public function plugin_update_check( $args ) {
|
43 |
+
$args = wp_parse_args( $args );
|
44 |
+
$args['wc-api'] = 'wp_plugin_licencing_update_api';
|
45 |
+
$args['request'] = 'pluginupdatecheck';
|
46 |
+
return $this->request( $args );
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Sends and receives data to and from the server API
|
51 |
+
*
|
52 |
+
* @param array|string $args
|
53 |
+
* @return object $response
|
54 |
+
*/
|
55 |
+
public function plugin_information( $args ) {
|
56 |
+
$args = wp_parse_args( $args );
|
57 |
+
$args['wc-api'] = 'wp_plugin_licencing_update_api';
|
58 |
+
$args['request'] = 'plugininformation';
|
59 |
+
return $this->request( $args );
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Attempt to activate a plugin licence.
|
64 |
+
*
|
65 |
+
* @param array|string $args
|
66 |
+
* @return boolean|string JSON response or false if failed.
|
67 |
+
*/
|
68 |
+
public function activate( $args ) {
|
69 |
+
$args = wp_parse_args( $args );
|
70 |
+
$args['wc-api'] = 'wp_plugin_licencing_activation_api';
|
71 |
+
$args['request'] = 'activate';
|
72 |
+
$response = $this->request( $args, true );
|
73 |
+
if ( false === $response ) {
|
74 |
+
return false;
|
75 |
+
}
|
76 |
+
return $response;
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Attempt to deactivate a plugin licence.
|
81 |
+
*
|
82 |
+
* @param array|string $args
|
83 |
+
* @return boolean|string JSON response or false if failed.
|
84 |
+
*/
|
85 |
+
public function deactivate( $args ) {
|
86 |
+
$args = wp_parse_args( $args );
|
87 |
+
$args['wc-api'] = 'wp_plugin_licencing_activation_api';
|
88 |
+
$args['request'] = 'deactivate';
|
89 |
+
$response = $this->request( $args, false );
|
90 |
+
if ( false === $response ) {
|
91 |
+
return false;
|
92 |
+
}
|
93 |
+
return $response;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Make a licence helper API request.
|
98 |
+
*
|
99 |
+
* @param array $args
|
100 |
+
* @param bool $return_error
|
101 |
+
*
|
102 |
+
* @return array|bool|mixed|object
|
103 |
+
*/
|
104 |
+
protected function request( $args, $return_error = false ) {
|
105 |
+
$defaults = array(
|
106 |
+
'instance' => $this->get_site_url(),
|
107 |
+
'plugin_name' => '',
|
108 |
+
'version' => '',
|
109 |
+
'api_product_id' => '',
|
110 |
+
'licence_key' => '',
|
111 |
+
'email' => '',
|
112 |
+
);
|
113 |
+
|
114 |
+
$args = wp_parse_args( $args, $defaults );
|
115 |
+
$request = wp_safe_remote_get( $this->get_api_base_url() . '?' . http_build_query( $args, '', '&' ), array(
|
116 |
+
'timeout' => 10,
|
117 |
+
'headers' => array(
|
118 |
+
'Accept' => 'application/json',
|
119 |
+
),
|
120 |
+
) );
|
121 |
+
|
122 |
+
if ( is_wp_error( $request ) || 200 !== wp_remote_retrieve_response_code( $request ) ) {
|
123 |
+
if ( $return_error ) {
|
124 |
+
if ( is_wp_error( $request ) ) {
|
125 |
+
return array(
|
126 |
+
'error_code' => $request->get_error_code(),
|
127 |
+
'error' => $request->get_error_message(),
|
128 |
+
);
|
129 |
+
}
|
130 |
+
return array(
|
131 |
+
'error_code' => wp_remote_retrieve_response_code( $request ),
|
132 |
+
'error' => 'Error code: ' . wp_remote_retrieve_response_code( $request ),
|
133 |
+
);
|
134 |
+
}
|
135 |
+
return false;
|
136 |
+
}
|
137 |
+
|
138 |
+
$response = @json_decode( wp_remote_retrieve_body( $request ), true );
|
139 |
+
|
140 |
+
if ( is_array( $response ) ) {
|
141 |
+
return $response;
|
142 |
+
}
|
143 |
+
|
144 |
+
return false;
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Returns the site URL that is MU safe.
|
149 |
+
*
|
150 |
+
* @return string
|
151 |
+
*/
|
152 |
+
private function get_site_url() {
|
153 |
+
if ( is_multisite() || is_network_admin() ) {
|
154 |
+
return network_site_url();
|
155 |
+
}
|
156 |
+
return site_url();
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Returns the API base URL.
|
161 |
+
*
|
162 |
+
* @return string
|
163 |
+
*/
|
164 |
+
private function get_api_base_url() {
|
165 |
+
if ( defined( 'JOB_MANAGER_VERSION' )
|
166 |
+
&& defined( 'JOB_MANAGER_DEV_API_BASE_URL')
|
167 |
+
&& '-dev' === substr( JOB_MANAGER_VERSION, -4 )
|
168 |
+
) {
|
169 |
+
return JOB_MANAGER_DEV_API_BASE_URL;
|
170 |
+
}
|
171 |
+
return self::API_BASE_URL;
|
172 |
+
}
|
173 |
+
}
|
includes/helper/class-wp-job-manager-helper-options.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
/**
|
8 |
+
* WP_Job_Manager_Helper_Options
|
9 |
+
*/
|
10 |
+
class WP_Job_Manager_Helper_Options {
|
11 |
+
const OPTION_NAME = 'job_manager_helper';
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Update a WPJM plugin's licence data.
|
15 |
+
*
|
16 |
+
* @param string $product_slug
|
17 |
+
* @param string $key
|
18 |
+
* @param mixed $value
|
19 |
+
*
|
20 |
+
* @return bool
|
21 |
+
*/
|
22 |
+
public static function update( $product_slug, $key, $value ) {
|
23 |
+
$options = self::get_master_option();
|
24 |
+
if ( ! isset( $options[ $product_slug ] ) ) {
|
25 |
+
$options[ $product_slug ] = array();
|
26 |
+
}
|
27 |
+
$options[ $product_slug ][ $key ] = $value;
|
28 |
+
return self::update_master_option( $options );
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Retrieve a WPJM plugin's licence data.
|
33 |
+
*
|
34 |
+
* @param string $product_slug
|
35 |
+
* @param string $key
|
36 |
+
* @param mixed $default
|
37 |
+
*
|
38 |
+
* @return mixed
|
39 |
+
*/
|
40 |
+
public static function get( $product_slug, $key, $default = false ) {
|
41 |
+
$options = self::get_master_option();
|
42 |
+
if ( ! isset( $options[ $product_slug ] ) ) {
|
43 |
+
$options[ $product_slug ] = self::attempt_legacy_restore( $product_slug );
|
44 |
+
}
|
45 |
+
if ( isset( $options[ $product_slug ][ $key ] ) ) {
|
46 |
+
return $options[ $product_slug ][ $key ];
|
47 |
+
}
|
48 |
+
return $default;
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Delete a WPJM plugin's licence data.
|
53 |
+
*
|
54 |
+
* @param string $product_slug
|
55 |
+
* @param string $key
|
56 |
+
*
|
57 |
+
* @return bool
|
58 |
+
*/
|
59 |
+
public static function delete( $product_slug, $key ) {
|
60 |
+
$options = self::get_master_option();
|
61 |
+
if ( ! isset( $options[ $product_slug ] ) ) {
|
62 |
+
$options[ $product_slug ] = array();
|
63 |
+
}
|
64 |
+
unset( $options[ $product_slug ][ $key ] );
|
65 |
+
return self::update_master_option( $options );
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Attempt to retrieve licence data from legacy storage.
|
70 |
+
*
|
71 |
+
* @param string $product_slug
|
72 |
+
*
|
73 |
+
* @return array
|
74 |
+
*/
|
75 |
+
private static function attempt_legacy_restore( $product_slug ) {
|
76 |
+
$options = self::get_master_option();
|
77 |
+
if ( ! isset( $options[ $product_slug ] ) ) {
|
78 |
+
$options[ $product_slug ] = array();
|
79 |
+
}
|
80 |
+
foreach ( array( 'licence_key', 'email', 'errors', 'hide_key_notice' ) as $key ) {
|
81 |
+
$option_value = get_option( $product_slug . '_' . $key, false );
|
82 |
+
if ( ! empty( $option_value ) ) {
|
83 |
+
$options[ $product_slug ][ $key ] = $option_value;
|
84 |
+
delete_option( $product_slug . '_' . $key );
|
85 |
+
}
|
86 |
+
}
|
87 |
+
self::update_master_option( $options );
|
88 |
+
return $options[ $product_slug ];
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Retrieve the master option.
|
93 |
+
*
|
94 |
+
* @return array
|
95 |
+
*/
|
96 |
+
private static function get_master_option() {
|
97 |
+
if ( is_multisite() || is_network_admin() ) {
|
98 |
+
return get_site_option( self::OPTION_NAME, array() );
|
99 |
+
}
|
100 |
+
return get_option( self::OPTION_NAME, array() );
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Update the master option.
|
105 |
+
*
|
106 |
+
* @return bool
|
107 |
+
*/
|
108 |
+
private static function update_master_option( $value ) {
|
109 |
+
if ( is_multisite() || is_network_admin() ) {
|
110 |
+
return update_site_option( self::OPTION_NAME, $value );
|
111 |
+
}
|
112 |
+
return update_option( self::OPTION_NAME, $value );
|
113 |
+
}
|
114 |
+
}
|
includes/helper/class-wp-job-manager-helper.php
ADDED
@@ -0,0 +1,577 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
+
exit; // Exit if accessed directly
|
5 |
+
}
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Handles Job Manager's Ajax endpoints.
|
9 |
+
*
|
10 |
+
* @package wp-job-manager
|
11 |
+
* @since 1.29.0
|
12 |
+
*/
|
13 |
+
class WP_Job_Manager_Helper {
|
14 |
+
/**
|
15 |
+
* @var array Messages when updating licences.
|
16 |
+
*/
|
17 |
+
protected $licence_messages = array();
|
18 |
+
|
19 |
+
/**
|
20 |
+
* @var WP_Job_Manager_Helper_API
|
21 |
+
*/
|
22 |
+
protected $api;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* The single instance of the class.
|
26 |
+
*
|
27 |
+
* @var self
|
28 |
+
* @since 1.29.0
|
29 |
+
*/
|
30 |
+
private static $_instance = null;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Allows for accessing single instance of class. Class should only be constructed once per call.
|
34 |
+
*
|
35 |
+
* @since 1.29.0
|
36 |
+
* @static
|
37 |
+
* @return self Main instance.
|
38 |
+
*/
|
39 |
+
public static function instance() {
|
40 |
+
if ( is_null( self::$_instance ) ) {
|
41 |
+
self::$_instance = new self();
|
42 |
+
}
|
43 |
+
return self::$_instance;
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Loads the class, runs on init.
|
48 |
+
*/
|
49 |
+
public function init() {
|
50 |
+
include_once( 'class-wp-job-manager-helper-options.php' );
|
51 |
+
include_once( 'class-wp-job-manager-helper-api.php' );
|
52 |
+
|
53 |
+
$this->api = WP_Job_Manager_Helper_API::instance();
|
54 |
+
|
55 |
+
add_action( 'job_manager_helper_output', array( $this, 'licence_output' ) );
|
56 |
+
|
57 |
+
add_filter( 'job_manager_addon_core_version_check', array( $this, 'addon_core_version_check' ), 10, 2 );
|
58 |
+
add_filter( 'extra_plugin_headers', array( $this, 'extra_headers' ) );
|
59 |
+
add_filter( 'plugins_api', array( $this, 'plugins_api' ), 20, 3 );
|
60 |
+
add_action( 'pre_set_site_transient_update_plugins', array( $this, 'check_for_updates' ) );
|
61 |
+
|
62 |
+
add_action( 'activated_plugin', array( $this, 'plugin_activated' ) );
|
63 |
+
add_action( 'deactivated_plugin', array( $this, 'plugin_deactivated' ) );
|
64 |
+
add_action( 'admin_init', array( $this, 'admin_init' ) );
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Initializes admin-only actions.
|
69 |
+
*/
|
70 |
+
public function admin_init() {
|
71 |
+
add_action( 'plugin_action_links', array( $this, 'plugin_links' ), 10, 2 );
|
72 |
+
add_action( 'admin_notices', array( $this, 'licence_error_notices' ) );
|
73 |
+
$this->handle_admin_request();
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Handles special tasks on admin requests.
|
78 |
+
*/
|
79 |
+
private function handle_admin_request() {
|
80 |
+
if ( ! empty( $_GET['dismiss-wpjm-licence-notice'] ) ) {
|
81 |
+
$product_plugins = $this->get_installed_plugins();
|
82 |
+
$product_slug = sanitize_text_field( $_GET['dismiss-wpjm-licence-notice'] );
|
83 |
+
if ( isset( $product_plugins[ $product_slug ] ) ) {
|
84 |
+
WP_Job_Manager_Helper_Options::update( $product_slug, 'hide_key_notice', true );
|
85 |
+
}
|
86 |
+
}
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Tell the add-on when to check for and display and core WPJM version notices.
|
91 |
+
*
|
92 |
+
* @param bool $do_check True if the add-on should do a core version check.
|
93 |
+
* @param string $minimum_required_core_version Minimum version the plugin is reporting it requires.
|
94 |
+
* @return bool
|
95 |
+
*/
|
96 |
+
public function addon_core_version_check( $do_check, $minimum_required_core_version = null ) {
|
97 |
+
if ( ! is_admin() || ! did_action( 'admin_init' ) ) {
|
98 |
+
return false;
|
99 |
+
}
|
100 |
+
|
101 |
+
// We only want to show the notices on the plugins page and main job listing admin page.
|
102 |
+
$screen = get_current_screen();
|
103 |
+
if ( null === $screen || ! in_array( $screen->id, array( 'plugins', 'edit-job_listing' ) ) ) {
|
104 |
+
return false;
|
105 |
+
}
|
106 |
+
|
107 |
+
$dev_version_loc = strpos( JOB_MANAGER_VERSION, '-dev' );
|
108 |
+
if (
|
109 |
+
false !== $dev_version_loc
|
110 |
+
&& $minimum_required_core_version === substr( JOB_MANAGER_VERSION, 0, $dev_version_loc )
|
111 |
+
) {
|
112 |
+
return false;
|
113 |
+
}
|
114 |
+
|
115 |
+
return $do_check;
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Check for licence managed WPJM addon plugin updates.
|
120 |
+
*
|
121 |
+
* @param array $check_for_updates_data
|
122 |
+
*
|
123 |
+
* @return array
|
124 |
+
*/
|
125 |
+
public function check_for_updates( $check_for_updates_data ) {
|
126 |
+
// Set version variables
|
127 |
+
foreach ( $this->get_installed_plugins() as $product_slug => $plugin_data ) {
|
128 |
+
if ( $response = $this->get_plugin_version( $plugin_data['_filename'] ) ) {
|
129 |
+
// If there is a new version, modify the transient to reflect an update is available
|
130 |
+
if ( $response !== false && isset( $response['new_version'] ) && version_compare( $response['new_version'], $plugin_data['Version'], '>' ) ) {
|
131 |
+
$check_for_updates_data->response[ $plugin_data['_filename'] ] = (object) $response;
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
return $check_for_updates_data;
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Get plugin version info from API.
|
140 |
+
*
|
141 |
+
* @param string $plugin_filename
|
142 |
+
*
|
143 |
+
* @return array|bool
|
144 |
+
*/
|
145 |
+
private function get_plugin_version( $plugin_filename ) {
|
146 |
+
$plugin_data = $this->get_licence_managed_plugin( $plugin_filename );
|
147 |
+
if ( ! $plugin_data ) {
|
148 |
+
return false;
|
149 |
+
}
|
150 |
+
$product_slug = $plugin_data['_product_slug'];
|
151 |
+
$licence = $this->get_plugin_licence( $product_slug );
|
152 |
+
if ( ! $licence || empty( $licence['licence_key'] ) ) {
|
153 |
+
return false;
|
154 |
+
}
|
155 |
+
|
156 |
+
$response = $this->api->plugin_update_check( array(
|
157 |
+
'plugin_name' => $plugin_data['Name'],
|
158 |
+
'version' => $plugin_data['Version'],
|
159 |
+
'api_product_id' => $product_slug,
|
160 |
+
'licence_key' => $licence['licence_key'],
|
161 |
+
'email' => $licence['email'],
|
162 |
+
) );
|
163 |
+
|
164 |
+
if ( isset( $response['errors'] ) ) {
|
165 |
+
$this->handle_api_errors( $product_slug, $response['errors'] );
|
166 |
+
}
|
167 |
+
|
168 |
+
// Set version variables
|
169 |
+
if ( ! empty( $response ) ) {
|
170 |
+
return $response;
|
171 |
+
}
|
172 |
+
|
173 |
+
return false;
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Cleanup old things when WPJM licence managed plugin is activated.
|
178 |
+
*
|
179 |
+
* @param string $plugin_filename
|
180 |
+
*/
|
181 |
+
public function plugin_activated( $plugin_filename ) {
|
182 |
+
$plugins = $this->get_installed_plugins( false );
|
183 |
+
foreach ( $plugins as $product_slug => $plugin_data ) {
|
184 |
+
if ( $plugin_filename !== $plugin_data['_filename'] ) {
|
185 |
+
continue;
|
186 |
+
}
|
187 |
+
WP_Job_Manager_Helper_Options::delete( $product_slug, 'hide_key_notice' );
|
188 |
+
break;
|
189 |
+
}
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Deactivate licence when WPJM licence managed plugin is deactivated.
|
194 |
+
*
|
195 |
+
* @param string $plugin_filename
|
196 |
+
*/
|
197 |
+
public function plugin_deactivated( $plugin_filename ) {
|
198 |
+
$plugins = $this->get_installed_plugins( false );
|
199 |
+
foreach ( $plugins as $product_slug => $plugin_data ) {
|
200 |
+
if ( $plugin_filename !== $plugin_data['_filename'] ) {
|
201 |
+
continue;
|
202 |
+
}
|
203 |
+
$this->deactivate_licence( $product_slug );
|
204 |
+
break;
|
205 |
+
}
|
206 |
+
}
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Fetches the plugin information for WPJM plugins.
|
210 |
+
*
|
211 |
+
* @param false|object|array $response The result object or array. Default false.
|
212 |
+
* @param string $action The type of information being requested from the Plugin Install API.
|
213 |
+
* @param object $args Plugin API arguments.
|
214 |
+
*
|
215 |
+
* @return false|object|array
|
216 |
+
*/
|
217 |
+
public function plugins_api( $response, $action, $args ) {
|
218 |
+
if ( 'plugin_information' !== $action ) {
|
219 |
+
return $response;
|
220 |
+
}
|
221 |
+
|
222 |
+
if ( empty( $args->slug ) ) {
|
223 |
+
return $response;
|
224 |
+
}
|
225 |
+
|
226 |
+
if ( ( $plugin_info = $this->get_plugin_info( $args->slug ) ) ) {
|
227 |
+
$response = (object) $plugin_info;
|
228 |
+
}
|
229 |
+
|
230 |
+
return $response;
|
231 |
+
}
|
232 |
+
|
233 |
+
/**
|
234 |
+
* Appends links to manage plugin licence when managed.
|
235 |
+
*
|
236 |
+
* @param array $actions
|
237 |
+
* @param string $plugin_filename
|
238 |
+
* @return array
|
239 |
+
*/
|
240 |
+
public function plugin_links( $actions, $plugin_filename ) {
|
241 |
+
$plugin = $this->get_licence_managed_plugin( $plugin_filename );
|
242 |
+
if ( ! $plugin || ! current_user_can( 'update_plugins' ) ) {
|
243 |
+
return $actions;
|
244 |
+
}
|
245 |
+
$product_slug = $plugin['_product_slug'];
|
246 |
+
$licence = $this->get_plugin_licence( $product_slug );
|
247 |
+
$css_class = '';
|
248 |
+
if ( $licence && ! empty( $licence['licence_key'] ) ) {
|
249 |
+
$manage_licence_label = __( 'Manage License', 'wp-job-manager' );
|
250 |
+
} else {
|
251 |
+
$manage_licence_label = __( 'Activate License', 'wp-job-manager' );
|
252 |
+
$css_class = 'wpjm-activate-licence-link';
|
253 |
+
}
|
254 |
+
$actions[] = '<a class="' . $css_class . '" href="' . esc_url( admin_url( 'edit.php?post_type=job_listing&page=job-manager-addons§ion=helper' ) ) . '">' . $manage_licence_label . '</a>';
|
255 |
+
return $actions;
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* Returns the plugin info for a licenced WPJM plugin.
|
260 |
+
*
|
261 |
+
* @param string $product_slug
|
262 |
+
*
|
263 |
+
* @return bool|object
|
264 |
+
*/
|
265 |
+
protected function get_plugin_info( $product_slug ) {
|
266 |
+
if ( ! $this->is_product_installed( $product_slug ) ) {
|
267 |
+
return false;
|
268 |
+
}
|
269 |
+
$args = $this->get_plugin_licence( $product_slug );
|
270 |
+
if ( empty( $args['licence_key'] ) || empty( $args['email'] ) ) {
|
271 |
+
return false;
|
272 |
+
}
|
273 |
+
$args['api_product_id'] = $product_slug;
|
274 |
+
|
275 |
+
$response = $this->api->plugin_information( $args );
|
276 |
+
if ( isset( $response['errors'] ) ) {
|
277 |
+
$this->handle_api_errors( $product_slug, $response['errors'] );
|
278 |
+
}
|
279 |
+
|
280 |
+
return $response;
|
281 |
+
}
|
282 |
+
|
283 |
+
/**
|
284 |
+
* Checks if a WPJM plugin is installed.
|
285 |
+
*
|
286 |
+
* @param string $product_slug
|
287 |
+
*
|
288 |
+
* @return bool
|
289 |
+
*/
|
290 |
+
public function is_product_installed( $product_slug ) {
|
291 |
+
$product_plugins = $this->get_installed_plugins();
|
292 |
+
return isset( $product_plugins[ $product_slug ] );
|
293 |
+
}
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Returns true if there are licensed products being managed.
|
297 |
+
*
|
298 |
+
* @return bool
|
299 |
+
*/
|
300 |
+
public function has_licenced_products() {
|
301 |
+
$product_plugins = $this->get_installed_plugins();
|
302 |
+
return ! empty( $product_plugins );
|
303 |
+
}
|
304 |
+
|
305 |
+
/**
|
306 |
+
* Returns the plugin data for plugin with a `WPJM-Product` tag by plugin filename.
|
307 |
+
*
|
308 |
+
* @param $plugin_filename
|
309 |
+
* @return bool|array
|
310 |
+
*/
|
311 |
+
private function get_licence_managed_plugin( $plugin_filename ) {
|
312 |
+
foreach ( $this->get_installed_plugins() as $plugin ) {
|
313 |
+
if ( $plugin_filename === $plugin['_filename'] ) {
|
314 |
+
return $plugin;
|
315 |
+
}
|
316 |
+
}
|
317 |
+
return false;
|
318 |
+
}
|
319 |
+
|
320 |
+
/**
|
321 |
+
* Gets the licence key and email for a WPJM managed plugin.
|
322 |
+
*
|
323 |
+
* @param string $product_slug
|
324 |
+
* @return array|bool
|
325 |
+
*/
|
326 |
+
public function get_plugin_licence( $product_slug ) {
|
327 |
+
$licence_key = WP_Job_Manager_Helper_Options::get( $product_slug, 'licence_key' );
|
328 |
+
$activation_email = WP_Job_Manager_Helper_Options::get( $product_slug, 'email' );
|
329 |
+
$errors = WP_Job_Manager_Helper_Options::get( $product_slug, 'errors' );
|
330 |
+
|
331 |
+
return array(
|
332 |
+
'licence_key' => $licence_key,
|
333 |
+
'email' => $activation_email,
|
334 |
+
'errors' => $errors,
|
335 |
+
);
|
336 |
+
}
|
337 |
+
|
338 |
+
/**
|
339 |
+
* Adds newly recognized data header in WordPress plugin files.
|
340 |
+
*
|
341 |
+
* @params array $headers
|
342 |
+
* @return array
|
343 |
+
*/
|
344 |
+
public function extra_headers( $headers ) {
|
345 |
+
$headers[] = 'WPJM-Product';
|
346 |
+
return $headers;
|
347 |
+
}
|
348 |
+
|
349 |
+
/**
|
350 |
+
* Returns list of installed WPJM plugins with managed licences indexed by product ID.
|
351 |
+
*
|
352 |
+
* @param bool $active_only Only return active plugins
|
353 |
+
* @return array
|
354 |
+
*/
|
355 |
+
protected function get_installed_plugins( $active_only = true ) {
|
356 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
357 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
358 |
+
}
|
359 |
+
|
360 |
+
$wpjm_plugins = array();
|
361 |
+
$plugins = get_plugins();
|
362 |
+
|
363 |
+
foreach ( $plugins as $filename => $data ) {
|
364 |
+
if ( empty( $data['WPJM-Product'] ) || ( true === $active_only && ! is_plugin_active( $filename ) ) ) {
|
365 |
+
continue;
|
366 |
+
}
|
367 |
+
|
368 |
+
$data['_filename'] = $filename;
|
369 |
+
$data['_product_slug'] = $data['WPJM-Product'];
|
370 |
+
$data['_type'] = 'plugin';
|
371 |
+
$wpjm_plugins[ $data['WPJM-Product'] ] = $data;
|
372 |
+
}
|
373 |
+
|
374 |
+
return $wpjm_plugins;
|
375 |
+
}
|
376 |
+
|
377 |
+
/**
|
378 |
+
* Outputs the licence management.
|
379 |
+
*/
|
380 |
+
public function licence_output() {
|
381 |
+
if ( ! current_user_can( 'update_plugins' ) ) {
|
382 |
+
return;
|
383 |
+
}
|
384 |
+
if ( ! empty( $_POST ) ) {
|
385 |
+
$this->handle_request();
|
386 |
+
}
|
387 |
+
$licenced_plugins = $this->get_installed_plugins();
|
388 |
+
include_once( dirname( __FILE__ ) . '/views/html-licences.php' );
|
389 |
+
}
|
390 |
+
|
391 |
+
/**
|
392 |
+
* Outputs unset licence key notices.
|
393 |
+
*/
|
394 |
+
public function licence_error_notices() {
|
395 |
+
foreach( $this->get_installed_plugins() as $product_slug => $plugin_data ) {
|
396 |
+
$licence = $this->get_plugin_licence( $product_slug );
|
397 |
+
if ( empty( $licence['licence_key'] ) && ! WP_Job_Manager_Helper_Options::get( $product_slug, 'hide_key_notice' ) ) {
|
398 |
+
include( 'views/html-licence-key-notice.php' );
|
399 |
+
}
|
400 |
+
}
|
401 |
+
}
|
402 |
+
|
403 |
+
/**
|
404 |
+
* Handles a request on the manage licence key screen.
|
405 |
+
*/
|
406 |
+
private function handle_request() {
|
407 |
+
$licenced_plugins = $this->get_installed_plugins();
|
408 |
+
if ( empty( $_POST )
|
409 |
+
|| empty( $_POST['_wpnonce'] )
|
410 |
+
|| empty( $_POST['action'] )
|
411 |
+
|| empty( $_POST['product_slug'] )
|
412 |
+
|| ! isset( $licenced_plugins[ $_POST['product_slug'] ] )
|
413 |
+
|| ! wp_verify_nonce( $_POST['_wpnonce'], 'wpjm-manage-licence' )
|
414 |
+
) {
|
415 |
+
return false;
|
416 |
+
}
|
417 |
+
$product_slug = sanitize_text_field( $_POST['product_slug'] );
|
418 |
+
switch ( $_POST['action'] ) {
|
419 |
+
case 'activate':
|
420 |
+
if ( empty( $_POST['email'] ) || empty( $_POST['licence_key'] ) ) {
|
421 |
+
$this->add_error( $product_slug, __( 'Please enter a valid license key and email address in order to activate this plugin\'s license.', 'wp-job-manager' ) );
|
422 |
+
break;
|
423 |
+
}
|
424 |
+
$email = sanitize_email( $_POST['email'] );
|
425 |
+
$licence_key = sanitize_text_field( $_POST['licence_key'] );
|
426 |
+
$this->activate_licence( $product_slug, $licence_key, $email );
|
427 |
+
break;
|
428 |
+
case 'deactivate':
|
429 |
+
$this->deactivate_licence( $product_slug );
|
430 |
+
break;
|
431 |
+
}
|
432 |
+
}
|
433 |
+
|
434 |
+
/**
|
435 |
+
* Activate a licence key for a WPJM add-on plugin.
|
436 |
+
*
|
437 |
+
* @param string $product_slug
|
438 |
+
* @param string $licence_key
|
439 |
+
* @param string $email
|
440 |
+
*/
|
441 |
+
private function activate_licence( $product_slug, $licence_key, $email ) {
|
442 |
+
$response = $this->api->activate( array(
|
443 |
+
'api_product_id' => $product_slug,
|
444 |
+
'licence_key' => $licence_key,
|
445 |
+
'email' => $email,
|
446 |
+
) );
|
447 |
+
|
448 |
+
if ( false === $response ) {
|
449 |
+
$this->add_error( $product_slug, __( 'Connection failed to the License Key API server - possible server issue.', 'wp-job-manager' ) );
|
450 |
+
} elseif ( isset( $response['error_code'] ) && isset( $response['error'] ) ) {
|
451 |
+
$this->add_error( $product_slug, $response['error'] );
|
452 |
+
} elseif ( ! empty( $response['activated'] ) ) {
|
453 |
+
WP_Job_Manager_Helper_Options::update( $product_slug, 'licence_key', $licence_key );
|
454 |
+
WP_Job_Manager_Helper_Options::update( $product_slug, 'email', $email );
|
455 |
+
WP_Job_Manager_Helper_Options::delete( $product_slug, 'errors' );
|
456 |
+
WP_Job_Manager_Helper_Options::delete( $product_slug, 'hide_key_notice' );
|
457 |
+
$this->add_success( $product_slug, __( 'Plugin license has been activated.', 'wp-job-manager' ) );
|
458 |
+
} else {
|
459 |
+
$this->add_error( $product_slug, __( 'An unknown error occurred while attempting to activate the license', 'wp-job-manager' ) );
|
460 |
+
}
|
461 |
+
}
|
462 |
+
|
463 |
+
/**
|
464 |
+
* Deactivate a licence key for a WPJM add-on plugin.
|
465 |
+
*
|
466 |
+
* @param string $product_slug
|
467 |
+
*/
|
468 |
+
private function deactivate_licence( $product_slug ) {
|
469 |
+
$licence = $this->get_plugin_licence( $product_slug );
|
470 |
+
if ( empty( $licence['licence_key'] ) || empty( $licence['email'] ) ) {
|
471 |
+
$this->add_error( $product_slug, __( 'licence is not active.', 'wp-job-manager' ) );
|
472 |
+
return;
|
473 |
+
}
|
474 |
+
$this->api->deactivate( array(
|
475 |
+
'api_product_id' => $product_slug,
|
476 |
+
'licence_key' => $licence['licence_key'],
|
477 |
+
'email' => $licence['email'],
|
478 |
+
) );
|
479 |
+
|
480 |
+
WP_Job_Manager_Helper_Options::delete( $product_slug, 'licence_key' );
|
481 |
+
WP_Job_Manager_Helper_Options::delete( $product_slug, 'email' );
|
482 |
+
WP_Job_Manager_Helper_Options::delete( $product_slug, 'errors' );
|
483 |
+
WP_Job_Manager_Helper_Options::delete( $product_slug, 'hide_key_notice' );
|
484 |
+
delete_site_transient( 'update_plugins' );
|
485 |
+
$this->add_success( $product_slug, __( 'Plugin license has been deactivated.', 'wp-job-manager' ) );
|
486 |
+
}
|
487 |
+
|
488 |
+
/**
|
489 |
+
* Handle errors from the API.
|
490 |
+
*
|
491 |
+
* @param string $product_slug
|
492 |
+
* @param array $errors
|
493 |
+
*/
|
494 |
+
private function handle_api_errors( $product_slug, $errors ) {
|
495 |
+
$plugin_products = $this->get_installed_plugins();
|
496 |
+
if ( ! isset( $plugin_products[ $product_slug ] ) ) {
|
497 |
+
return;
|
498 |
+
}
|
499 |
+
if ( ! empty( $errors['no_activation'] ) ) {
|
500 |
+
$this->deactivate_licence( $product_slug );
|
501 |
+
$this->add_licence_error( $product_slug, $errors['no_activation'] );
|
502 |
+
} elseif ( ! empty( $errors['expired_key'] ) ) {
|
503 |
+
$this->deactivate_licence( $product_slug );
|
504 |
+
$this->add_licence_error( $product_slug, $errors['expired_key'] );
|
505 |
+
}
|
506 |
+
}
|
507 |
+
|
508 |
+
/**
|
509 |
+
* Add an error message for a licence.
|
510 |
+
*
|
511 |
+
* @param string $product_slug
|
512 |
+
* @param string $message Your error message
|
513 |
+
* @param string $type Type of error message
|
514 |
+
*/
|
515 |
+
private function add_licence_error( $product_slug, $message, $type = '' ) {
|
516 |
+
$licence = $this->get_plugin_licence( $product_slug );
|
517 |
+
$errors = ! empty( $licence['errors'] ) ? $licence['errors'] : array();
|
518 |
+
if ( $type ) {
|
519 |
+
$errors[ $type ] = $message;
|
520 |
+
} else {
|
521 |
+
$errors[] = $message;
|
522 |
+
}
|
523 |
+
WP_Job_Manager_Helper_Options::update( $product_slug, 'errors', $errors );
|
524 |
+
}
|
525 |
+
|
526 |
+
/**
|
527 |
+
* Add an error message.
|
528 |
+
*
|
529 |
+
* @param string $product_slug The plugin slug.
|
530 |
+
* @param string $message Your error message.
|
531 |
+
*/
|
532 |
+
private function add_error( $product_slug, $message ) {
|
533 |
+
$this->add_message( 'error', $product_slug, $message );
|
534 |
+
}
|
535 |
+
|
536 |
+
/**
|
537 |
+
* Add a success message.
|
538 |
+
*
|
539 |
+
* @param string $product_slug The plugin slug.
|
540 |
+
* @param string $message Your error message.
|
541 |
+
*/
|
542 |
+
private function add_success( $product_slug, $message ) {
|
543 |
+
$this->add_message( 'success', $product_slug, $message );
|
544 |
+
}
|
545 |
+
|
546 |
+
/**
|
547 |
+
* Add a message.
|
548 |
+
*
|
549 |
+
* @param string $type Message type.
|
550 |
+
* @param string $product_slug The plugin slug.
|
551 |
+
* @param string $message Your error message.
|
552 |
+
*/
|
553 |
+
private function add_message( $type, $product_slug, $message ) {
|
554 |
+
if ( ! isset( $this->licence_messages[ $product_slug ] ) ) {
|
555 |
+
$this->licence_messages[ $product_slug ] = array();
|
556 |
+
}
|
557 |
+
$this->licence_messages[ $product_slug ][] = array(
|
558 |
+
'type' => $type,
|
559 |
+
'message' => $message,
|
560 |
+
);
|
561 |
+
}
|
562 |
+
|
563 |
+
/**
|
564 |
+
* Get a plugin's licence messages.
|
565 |
+
*
|
566 |
+
* @param string $product_slug The plugin slug.
|
567 |
+
* @return array
|
568 |
+
*/
|
569 |
+
public function get_messages( $product_slug ) {
|
570 |
+
if ( ! isset( $this->licence_messages[ $product_slug ] ) ) {
|
571 |
+
$this->licence_messages[ $product_slug ] = array();
|
572 |
+
}
|
573 |
+
return $this->licence_messages[ $product_slug ];
|
574 |
+
}
|
575 |
+
}
|
576 |
+
|
577 |
+
WP_Job_Manager_Helper::instance()->init();
|
includes/helper/views/html-licence-key-notice.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
3 |
+
exit; // Exit if accessed directly
|
4 |
+
}
|
5 |
+
?>
|
6 |
+
<div class="updated">
|
7 |
+
<p class="wpjm-updater-dismiss" style="float:right;"><a href="<?php echo esc_url( add_query_arg( 'dismiss-wpjm-licence-notice', $product_slug ) ); ?>"><?php _e( 'Hide notice' ); ?></a></p>
|
8 |
+
<p><?php printf( '<a href="%s">Please enter your license key</a> to get updates for "%s".', esc_url( admin_url( 'edit.php?post_type=job_listing&page=job-manager-addons§ion=helper#' . sanitize_title( $product_slug . '_row' ) ) ), esc_html( $plugin_data['Name'] ) ); ?></p>
|
9 |
+
</div>
|
includes/helper/views/html-licences.php
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
3 |
+
exit; // Exit if accessed directly
|
4 |
+
}
|
5 |
+
?>
|
6 |
+
<h1 class="screen-reader-text"><?php _e( 'Licenses', 'wp-job-manager' ); ?></h1>
|
7 |
+
<div class="wpjm-licences">
|
8 |
+
<?php if ( ! empty( $licenced_plugins ) ) : ?>
|
9 |
+
<?php foreach ( $licenced_plugins as $product_slug => $plugin_data ) : ?>
|
10 |
+
<?php
|
11 |
+
$licence = WP_Job_Manager_Helper::get_plugin_licence( $product_slug );
|
12 |
+
?>
|
13 |
+
<div class="licence-row">
|
14 |
+
<div class="plugin-info">
|
15 |
+
<?php echo $plugin_data['Name']; ?>
|
16 |
+
<div class="plugin-author">
|
17 |
+
<?php
|
18 |
+
$author = $plugin_data['Author'];
|
19 |
+
if ( !empty( $plugin_data['AuthorURI'] ) ) {
|
20 |
+
$author = '<a href="' . $plugin_data['AuthorURI'] . '">' . $plugin_data['Author'] . '</a>';
|
21 |
+
}
|
22 |
+
echo $author;
|
23 |
+
?>
|
24 |
+
</div>
|
25 |
+
</div>
|
26 |
+
<div class="plugin-licence">
|
27 |
+
<?php
|
28 |
+
$notices = WP_Job_Manager_Helper::get_messages( $product_slug );
|
29 |
+
if ( empty( $notices) && ! empty( $licence['errors'] ) ) {
|
30 |
+
$notices = array();
|
31 |
+
foreach ( $licence['errors'] as $key => $error ) {
|
32 |
+
$notices[] = array(
|
33 |
+
'type' => 'error',
|
34 |
+
'message' => $error,
|
35 |
+
);
|
36 |
+
}
|
37 |
+
}
|
38 |
+
foreach ( $notices as $message ) {
|
39 |
+
echo '<div class="notice inline notice-'. esc_attr( $message['type'] ) .'"><p>'. wp_kses_post( $message['message'] ) . '</p></div>';
|
40 |
+
}
|
41 |
+
?>
|
42 |
+
<form method="post">
|
43 |
+
<?php wp_nonce_field( 'wpjm-manage-licence' ); ?>
|
44 |
+
<?php
|
45 |
+
if ( ! empty( $licence['licence_key'] ) && ! empty( $licence['email'] ) ) {
|
46 |
+
?>
|
47 |
+
<input type="hidden" id="<?php echo sanitize_title( $product_slug ); ?>_action" name="action" value="deactivate"/>
|
48 |
+
<input type="hidden" id="<?php echo sanitize_title( $product_slug ); ?>_plugin" name="product_slug" value="<?php echo esc_attr( $product_slug ); ?>"/>
|
49 |
+
|
50 |
+
<label for="<?php echo sanitize_title( $product_slug ); ?>_licence_key"><?php _e( 'License' ); ?>:
|
51 |
+
<input type="text" disabled="disabled" id="<?php echo sanitize_title( $product_slug ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX" value="<?php echo esc_attr( $licence['licence_key'] ); ?>"/>
|
52 |
+
</label>
|
53 |
+
<label for="<?php echo sanitize_title( $product_slug ); ?>_email"><?php _e( 'Email' ); ?>:
|
54 |
+
<input type="email" disabled="disabled" id="<?php echo sanitize_title( $product_slug ); ?>_email" name="email" placeholder="Email address" value="<?php echo esc_attr( $licence['email'] ); ?>"/>
|
55 |
+
</label>
|
56 |
+
|
57 |
+
<input type="submit" class="button" name="submit" value="<?php _e( 'Deactivate License' ); ?>" />
|
58 |
+
<?php
|
59 |
+
} else { // licence is not active
|
60 |
+
?>
|
61 |
+
<input type="hidden" id="<?php echo sanitize_title( $product_slug ); ?>_action" name="action" value="activate"/>
|
62 |
+
<input type="hidden" id="<?php echo sanitize_title( $product_slug ); ?>_plugin" name="product_slug" value="<?php echo esc_attr( $product_slug ); ?>"/>
|
63 |
+
<label for="<?php echo sanitize_title( $product_slug ); ?>_licence_key"><?php _e( 'License' ); ?>:
|
64 |
+
<input type="text" id="<?php echo sanitize_title( $product_slug ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX"/>
|
65 |
+
</label>
|
66 |
+
<label for="<?php echo sanitize_title( $product_slug ); ?>_email"><?php _e( 'Email' ); ?>:
|
67 |
+
<input type="email" id="<?php echo sanitize_title( $product_slug ); ?>_email" name="email" placeholder="Email address" value="<?php echo esc_attr( get_option( 'admin_email' ) ); ?>"/>
|
68 |
+
</label>
|
69 |
+
<input type="submit" class="button" name="submit" value="<?php _e( 'Activate License' ); ?>" />
|
70 |
+
<?php
|
71 |
+
} // end if : else licence is not active
|
72 |
+
?>
|
73 |
+
</form>
|
74 |
+
</div>
|
75 |
+
</div>
|
76 |
+
<?php endforeach; ?>
|
77 |
+
<div class="notice notice-info inline"><p><?php printf( 'Lost your license key? <a href="%s">Retrieve it here</a>.', esc_url( 'https://wpjobmanager.com/lost-licence-key/' ) ); ?></p></div>
|
78 |
+
<?php else: ?>
|
79 |
+
<div class="notice notice-warning inline"><p><?php _e( 'No plugins are activated that have licenses managed by WP Job Manager.', 'wp-job-manager' ); ?></p></div>
|
80 |
+
<?php endif; ?>
|
81 |
+
</div>
|
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: 2017-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -13,16 +13,22 @@ msgstr ""
|
|
13 |
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
|
14 |
"X-Generator: grunt-wp-i18n 0.5.4\n"
|
15 |
|
16 |
-
#: includes/admin/class-wp-job-manager-addons.php:
|
|
|
17 |
#: includes/admin/class-wp-job-manager-admin.php:113
|
18 |
msgid "WP Job Manager Add-ons"
|
19 |
msgstr ""
|
20 |
|
21 |
-
#: includes/admin/class-wp-job-manager-addons.php:
|
|
|
|
|
|
|
|
|
|
|
22 |
msgid "Do you need multiple add-ons?"
|
23 |
msgstr ""
|
24 |
|
25 |
-
#: includes/admin/class-wp-job-manager-addons.php:
|
26 |
msgid "Check out the core add-on bundle →"
|
27 |
msgstr ""
|
28 |
|
@@ -571,32 +577,33 @@ msgid "3. Done"
|
|
571 |
msgstr ""
|
572 |
|
573 |
#: includes/admin/class-wp-job-manager-setup.php:158
|
574 |
-
msgid "Setup Wizard
|
575 |
msgstr ""
|
576 |
|
577 |
#: includes/admin/class-wp-job-manager-setup.php:160
|
578 |
-
msgid "
|
|
|
|
|
579 |
msgstr ""
|
580 |
|
581 |
#: includes/admin/class-wp-job-manager-setup.php:161
|
582 |
msgid ""
|
583 |
-
"This setup wizard will
|
584 |
-
"
|
585 |
msgstr ""
|
586 |
|
587 |
#: includes/admin/class-wp-job-manager-setup.php:162
|
588 |
msgid ""
|
589 |
-
"If you
|
590 |
-
"
|
591 |
-
"%sdocumentation%s for help."
|
592 |
msgstr ""
|
593 |
|
594 |
#: includes/admin/class-wp-job-manager-setup.php:165
|
595 |
-
msgid "
|
596 |
msgstr ""
|
597 |
|
598 |
#: includes/admin/class-wp-job-manager-setup.php:166
|
599 |
-
msgid "Skip setup. I will
|
600 |
msgstr ""
|
601 |
|
602 |
#: includes/admin/class-wp-job-manager-setup.php:172
|
@@ -605,130 +612,128 @@ msgstr ""
|
|
605 |
|
606 |
#: includes/admin/class-wp-job-manager-setup.php:174
|
607 |
msgid ""
|
608 |
-
"
|
609 |
-
"
|
610 |
-
"
|
611 |
-
"documentation%2$s."
|
612 |
msgstr ""
|
613 |
|
614 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
615 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
616 |
msgstr ""
|
617 |
|
618 |
#: includes/admin/class-wp-job-manager-setup.php:183
|
619 |
-
msgid "Page
|
620 |
msgstr ""
|
621 |
|
622 |
#: includes/admin/class-wp-job-manager-setup.php:184
|
623 |
-
msgid "
|
624 |
msgstr ""
|
625 |
|
626 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
627 |
-
msgid "
|
628 |
msgstr ""
|
629 |
|
630 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
631 |
msgid ""
|
632 |
-
"
|
633 |
-
"
|
634 |
-
"
|
|
|
635 |
msgstr ""
|
636 |
|
637 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
638 |
msgid ""
|
639 |
-
"
|
640 |
-
"
|
|
|
|
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
644 |
-
msgid ""
|
645 |
-
"If you plan on managing all listings from the admin dashboard you can skip "
|
646 |
-
"creating this page."
|
647 |
msgstr ""
|
648 |
|
649 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
650 |
-
msgid ""
|
651 |
-
"This page allows users to browse, search, and filter job listings on the "
|
652 |
-
"front-end of your site."
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
656 |
-
msgid "
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
660 |
-
msgid "
|
661 |
msgstr ""
|
662 |
|
663 |
#: includes/admin/class-wp-job-manager-setup.php:231
|
664 |
-
msgid ""
|
665 |
-
"Looks like you're all set to start using the plugin. In case you're "
|
666 |
-
"wondering where to go next:"
|
667 |
msgstr ""
|
668 |
|
669 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
670 |
-
msgid "
|
671 |
msgstr ""
|
672 |
|
673 |
#: includes/admin/class-wp-job-manager-setup.php:235
|
674 |
-
msgid "
|
675 |
-
msgstr ""
|
676 |
-
|
677 |
-
#: includes/admin/class-wp-job-manager-setup.php:238
|
678 |
-
msgid "Add a job via the front-end"
|
679 |
msgstr ""
|
680 |
|
681 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
682 |
-
msgid "
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
686 |
-
msgid "
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
690 |
-
msgid "
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
694 |
msgid "View the job dashboard"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
698 |
-
msgid "
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
702 |
msgid ""
|
703 |
-
"
|
704 |
-
"
|
|
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
708 |
-
msgid "Support
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
712 |
msgid ""
|
713 |
-
"There are
|
714 |
-
"
|
715 |
-
"
|
716 |
-
"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
720 |
msgid "Leave a positive review"
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
724 |
msgid "Contribute a localization"
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
728 |
msgid "Contribute code or report a bug"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
732 |
msgid "Help other users on the forums"
|
733 |
msgstr ""
|
734 |
|
@@ -1090,7 +1095,7 @@ msgid "Application email"
|
|
1090 |
msgstr ""
|
1091 |
|
1092 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:144
|
1093 |
-
#: wp-job-manager-template.php:
|
1094 |
msgid "you@yourdomain.com"
|
1095 |
msgstr ""
|
1096 |
|
@@ -1221,6 +1226,63 @@ msgstr ""
|
|
1221 |
msgid "You must be signed in to post a new listing."
|
1222 |
msgstr ""
|
1223 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1224 |
#: includes/rest-api/class-wp-job-manager-controllers-status.php:52
|
1225 |
msgid "Not Found"
|
1226 |
msgstr ""
|
@@ -1506,47 +1568,47 @@ msgstr ""
|
|
1506 |
msgid "Inactive"
|
1507 |
msgstr ""
|
1508 |
|
1509 |
-
#: wp-job-manager-template.php:
|
1510 |
msgid "Application via \"%s\" listing on %s"
|
1511 |
msgstr ""
|
1512 |
|
1513 |
-
#: wp-job-manager-template.php:
|
1514 |
msgid "Username"
|
1515 |
msgstr ""
|
1516 |
|
1517 |
-
#: wp-job-manager-template.php:
|
1518 |
msgid "Password"
|
1519 |
msgstr ""
|
1520 |
|
1521 |
-
#: wp-job-manager-template.php:
|
1522 |
msgid "Verify Password"
|
1523 |
msgstr ""
|
1524 |
|
1525 |
-
#: wp-job-manager-template.php:
|
1526 |
msgid "Your email"
|
1527 |
msgstr ""
|
1528 |
|
1529 |
-
#: wp-job-manager-template.php:
|
1530 |
msgid "Posted on "
|
1531 |
msgstr ""
|
1532 |
|
1533 |
-
#: wp-job-manager-template.php:
|
1534 |
msgid "Posted %s ago"
|
1535 |
msgstr ""
|
1536 |
|
1537 |
-
#: wp-job-manager-template.php:
|
1538 |
msgid "Anywhere"
|
1539 |
msgstr ""
|
1540 |
|
1541 |
-
#: wp-job-manager.php:
|
1542 |
msgid "Load previous listings"
|
1543 |
msgstr ""
|
1544 |
|
1545 |
-
#: wp-job-manager.php:
|
1546 |
msgid "Invalid file type. Accepted types:"
|
1547 |
msgstr ""
|
1548 |
|
1549 |
-
#: wp-job-manager.php:
|
1550 |
msgid "Are you sure you want to delete this listing?"
|
1551 |
msgstr ""
|
1552 |
|
@@ -1593,17 +1655,17 @@ msgctxt "Job type slug - resave permalinks after changing this"
|
|
1593 |
msgid "job-type"
|
1594 |
msgstr ""
|
1595 |
|
1596 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
1597 |
msgctxt "Default page title (wizard)"
|
1598 |
msgid "Post a Job"
|
1599 |
msgstr ""
|
1600 |
|
1601 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
1602 |
msgctxt "Default page title (wizard)"
|
1603 |
msgid "Job Dashboard"
|
1604 |
msgstr ""
|
1605 |
|
1606 |
-
#: includes/admin/class-wp-job-manager-setup.php:
|
1607 |
msgctxt "Default page title (wizard)"
|
1608 |
msgid "Jobs"
|
1609 |
msgstr ""
|
@@ -1649,4 +1711,4 @@ msgstr ""
|
|
1649 |
#: wp-job-manager-functions.php:260
|
1650 |
msgctxt "post status"
|
1651 |
msgid "Active"
|
1652 |
-
msgstr ""
|
2 |
# This file is distributed under the GPL2+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: WP Job Manager 1.29.0\n"
|
6 |
"Report-Msgid-Bugs-To: https://github.com/Automattic/WP-Job-Manager/issues\n"
|
7 |
+
"POT-Creation-Date: 2017-10-02 17:06:15+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
|
14 |
"X-Generator: grunt-wp-i18n 0.5.4\n"
|
15 |
|
16 |
+
#: includes/admin/class-wp-job-manager-addons.php:83
|
17 |
+
#: includes/admin/class-wp-job-manager-addons.php:92
|
18 |
#: includes/admin/class-wp-job-manager-admin.php:113
|
19 |
msgid "WP Job Manager Add-ons"
|
20 |
msgstr ""
|
21 |
|
22 |
+
#: includes/admin/class-wp-job-manager-addons.php:85
|
23 |
+
#: includes/helper/views/html-licences.php:6
|
24 |
+
msgid "Licenses"
|
25 |
+
msgstr ""
|
26 |
+
|
27 |
+
#: includes/admin/class-wp-job-manager-addons.php:93
|
28 |
msgid "Do you need multiple add-ons?"
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: includes/admin/class-wp-job-manager-addons.php:93
|
32 |
msgid "Check out the core add-on bundle →"
|
33 |
msgstr ""
|
34 |
|
577 |
msgstr ""
|
578 |
|
579 |
#: includes/admin/class-wp-job-manager-setup.php:158
|
580 |
+
msgid "Welcome to the Setup Wizard!"
|
581 |
msgstr ""
|
582 |
|
583 |
#: includes/admin/class-wp-job-manager-setup.php:160
|
584 |
+
msgid ""
|
585 |
+
"Thanks for installing <em>WP Job Manager</em>! Let's get your site ready to "
|
586 |
+
"accept job listings."
|
587 |
msgstr ""
|
588 |
|
589 |
#: includes/admin/class-wp-job-manager-setup.php:161
|
590 |
msgid ""
|
591 |
+
"This setup wizard will walk you through the process of creating pages for "
|
592 |
+
"job submissions, management, and listings."
|
593 |
msgstr ""
|
594 |
|
595 |
#: includes/admin/class-wp-job-manager-setup.php:162
|
596 |
msgid ""
|
597 |
+
"If you'd prefer to skip this and set up your pages manually, our "
|
598 |
+
"%sdocumentation%s will walk you through each step."
|
|
|
599 |
msgstr ""
|
600 |
|
601 |
#: includes/admin/class-wp-job-manager-setup.php:165
|
602 |
+
msgid "Start setup"
|
603 |
msgstr ""
|
604 |
|
605 |
#: includes/admin/class-wp-job-manager-setup.php:166
|
606 |
+
msgid "Skip setup. I will set up the plugin manually."
|
607 |
msgstr ""
|
608 |
|
609 |
#: includes/admin/class-wp-job-manager-setup.php:172
|
612 |
|
613 |
#: includes/admin/class-wp-job-manager-setup.php:174
|
614 |
msgid ""
|
615 |
+
"With WP Job Manager, employers and applicants can post, manage, and browse "
|
616 |
+
"job listings right on your website. Tell us which of these common pages "
|
617 |
+
"you'd like your site to have and we'll create and configure them for you."
|
|
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: includes/admin/class-wp-job-manager-setup.php:175
|
621 |
+
msgid ""
|
622 |
+
"(These pages are created using %1$sshortcodes%2$s, which we take care of in "
|
623 |
+
"this step. If you'd like to build these pages yourself or want to add one "
|
624 |
+
"of these options to an existing page on your site, you can skip this step "
|
625 |
+
"and take a look at %4$sshortcode documentation%2$s for detailed "
|
626 |
+
"instructions.)"
|
627 |
msgstr ""
|
628 |
|
629 |
#: includes/admin/class-wp-job-manager-setup.php:183
|
630 |
+
msgid "Page Title"
|
631 |
msgstr ""
|
632 |
|
633 |
#: includes/admin/class-wp-job-manager-setup.php:184
|
634 |
+
msgid "Page Description"
|
635 |
msgstr ""
|
636 |
|
637 |
+
#: includes/admin/class-wp-job-manager-setup.php:185
|
638 |
+
msgid "Content Shortcode"
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: includes/admin/class-wp-job-manager-setup.php:193
|
642 |
msgid ""
|
643 |
+
"Creates a page that allows employers to post new jobs directly from a page "
|
644 |
+
"on your website, instead of requiring them to log in to an admin area. If "
|
645 |
+
"you'd rather not allow this -- for example, if you want employers to use "
|
646 |
+
"the admin dashboard only -- you can uncheck this setting."
|
647 |
msgstr ""
|
648 |
|
649 |
+
#: includes/admin/class-wp-job-manager-setup.php:201
|
650 |
msgid ""
|
651 |
+
"Creates a page that allows employers to manage their job listings directly "
|
652 |
+
"from a page on your website, instead of requiring them to log in to an "
|
653 |
+
"admin area. If you want to manage all job listings from the admin dashboard "
|
654 |
+
"only, you can uncheck this setting."
|
655 |
msgstr ""
|
656 |
|
657 |
+
#: includes/admin/class-wp-job-manager-setup.php:208
|
658 |
+
msgid "Creates a page where visitors can browse, search, and filter job listings."
|
|
|
|
|
659 |
msgstr ""
|
660 |
|
661 |
+
#: includes/admin/class-wp-job-manager-setup.php:216
|
662 |
+
msgid "Skip this step"
|
|
|
|
|
663 |
msgstr ""
|
664 |
|
665 |
+
#: includes/admin/class-wp-job-manager-setup.php:226
|
666 |
+
msgid "You're ready to start using WP Job Manager!"
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: includes/admin/class-wp-job-manager-setup.php:228
|
670 |
+
msgid "Wondering what to do now? Here are some of the most common next steps:"
|
671 |
msgstr ""
|
672 |
|
673 |
#: includes/admin/class-wp-job-manager-setup.php:231
|
674 |
+
msgid "Tweak your settings"
|
|
|
|
|
675 |
msgstr ""
|
676 |
|
677 |
+
#: includes/admin/class-wp-job-manager-setup.php:232
|
678 |
+
msgid "Add a job using the admin dashboard"
|
679 |
msgstr ""
|
680 |
|
681 |
#: includes/admin/class-wp-job-manager-setup.php:235
|
682 |
+
msgid "View submitted job listings"
|
|
|
|
|
|
|
|
|
683 |
msgstr ""
|
684 |
|
685 |
+
#: includes/admin/class-wp-job-manager-setup.php:237
|
686 |
+
msgid "Add job listings to a page using the [jobs] shortcode"
|
687 |
msgstr ""
|
688 |
|
689 |
+
#: includes/admin/class-wp-job-manager-setup.php:241
|
690 |
+
msgid "Add a job via the front-end"
|
691 |
msgstr ""
|
692 |
|
693 |
+
#: includes/admin/class-wp-job-manager-setup.php:243
|
694 |
+
msgid "Learn to use the front-end job submission board"
|
695 |
msgstr ""
|
696 |
|
697 |
+
#: includes/admin/class-wp-job-manager-setup.php:247
|
698 |
msgid "View the job dashboard"
|
699 |
msgstr ""
|
700 |
|
701 |
+
#: includes/admin/class-wp-job-manager-setup.php:249
|
702 |
+
msgid "Learn to use the front-end job dashboard"
|
703 |
msgstr ""
|
704 |
|
705 |
+
#: includes/admin/class-wp-job-manager-setup.php:253
|
706 |
msgid ""
|
707 |
+
"If you need help, you can find more detail in our %1$ssupport "
|
708 |
+
"documentation%2$s or post your question on the %3$sWP Job Manager support "
|
709 |
+
"forums%2$s. Happy hiring!"
|
710 |
msgstr ""
|
711 |
|
712 |
+
#: includes/admin/class-wp-job-manager-setup.php:256
|
713 |
+
msgid "Support WP Job Manager's Ongoing Development"
|
714 |
msgstr ""
|
715 |
|
716 |
+
#: includes/admin/class-wp-job-manager-setup.php:257
|
717 |
msgid ""
|
718 |
+
"There are lots of ways you can support open source software projects like "
|
719 |
+
"this one: contributing code, fixing a bug, assisting with non-English "
|
720 |
+
"translation, or just telling your friends about WP Job Manager to help "
|
721 |
+
"spread the word. We appreciate your support!"
|
722 |
msgstr ""
|
723 |
|
724 |
+
#: includes/admin/class-wp-job-manager-setup.php:259
|
725 |
msgid "Leave a positive review"
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: includes/admin/class-wp-job-manager-setup.php:260
|
729 |
msgid "Contribute a localization"
|
730 |
msgstr ""
|
731 |
|
732 |
+
#: includes/admin/class-wp-job-manager-setup.php:261
|
733 |
msgid "Contribute code or report a bug"
|
734 |
msgstr ""
|
735 |
|
736 |
+
#: includes/admin/class-wp-job-manager-setup.php:262
|
737 |
msgid "Help other users on the forums"
|
738 |
msgstr ""
|
739 |
|
1095 |
msgstr ""
|
1096 |
|
1097 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:144
|
1098 |
+
#: wp-job-manager-template.php:642
|
1099 |
msgid "you@yourdomain.com"
|
1100 |
msgstr ""
|
1101 |
|
1226 |
msgid "You must be signed in to post a new listing."
|
1227 |
msgstr ""
|
1228 |
|
1229 |
+
#: includes/helper/class-wp-job-manager-helper.php:249
|
1230 |
+
msgid "Manage License"
|
1231 |
+
msgstr ""
|
1232 |
+
|
1233 |
+
#: includes/helper/class-wp-job-manager-helper.php:251
|
1234 |
+
#: includes/helper/views/html-licences.php:69
|
1235 |
+
msgid "Activate License"
|
1236 |
+
msgstr ""
|
1237 |
+
|
1238 |
+
#: includes/helper/class-wp-job-manager-helper.php:421
|
1239 |
+
msgid ""
|
1240 |
+
"Please enter a valid license key and email address in order to activate "
|
1241 |
+
"this plugin's license."
|
1242 |
+
msgstr ""
|
1243 |
+
|
1244 |
+
#: includes/helper/class-wp-job-manager-helper.php:449
|
1245 |
+
msgid "Connection failed to the License Key API server - possible server issue."
|
1246 |
+
msgstr ""
|
1247 |
+
|
1248 |
+
#: includes/helper/class-wp-job-manager-helper.php:457
|
1249 |
+
msgid "Plugin license has been activated."
|
1250 |
+
msgstr ""
|
1251 |
+
|
1252 |
+
#: includes/helper/class-wp-job-manager-helper.php:459
|
1253 |
+
msgid "An unknown error occurred while attempting to activate the license"
|
1254 |
+
msgstr ""
|
1255 |
+
|
1256 |
+
#: includes/helper/class-wp-job-manager-helper.php:471
|
1257 |
+
msgid "licence is not active."
|
1258 |
+
msgstr ""
|
1259 |
+
|
1260 |
+
#: includes/helper/class-wp-job-manager-helper.php:485
|
1261 |
+
msgid "Plugin license has been deactivated."
|
1262 |
+
msgstr ""
|
1263 |
+
|
1264 |
+
#: includes/helper/views/html-licence-key-notice.php:7
|
1265 |
+
msgid "Hide notice"
|
1266 |
+
msgstr ""
|
1267 |
+
|
1268 |
+
#: includes/helper/views/html-licences.php:50
|
1269 |
+
#: includes/helper/views/html-licences.php:63
|
1270 |
+
msgid "License"
|
1271 |
+
msgstr ""
|
1272 |
+
|
1273 |
+
#: includes/helper/views/html-licences.php:53
|
1274 |
+
#: includes/helper/views/html-licences.php:66
|
1275 |
+
msgid "Email"
|
1276 |
+
msgstr ""
|
1277 |
+
|
1278 |
+
#: includes/helper/views/html-licences.php:57
|
1279 |
+
msgid "Deactivate License"
|
1280 |
+
msgstr ""
|
1281 |
+
|
1282 |
+
#: includes/helper/views/html-licences.php:79
|
1283 |
+
msgid "No plugins are activated that have licenses managed by WP Job Manager."
|
1284 |
+
msgstr ""
|
1285 |
+
|
1286 |
#: includes/rest-api/class-wp-job-manager-controllers-status.php:52
|
1287 |
msgid "Not Found"
|
1288 |
msgstr ""
|
1568 |
msgid "Inactive"
|
1569 |
msgstr ""
|
1570 |
|
1571 |
+
#: wp-job-manager-template.php:238
|
1572 |
msgid "Application via \"%s\" listing on %s"
|
1573 |
msgstr ""
|
1574 |
|
1575 |
+
#: wp-job-manager-template.php:616
|
1576 |
msgid "Username"
|
1577 |
msgstr ""
|
1578 |
|
1579 |
+
#: wp-job-manager-template.php:624
|
1580 |
msgid "Password"
|
1581 |
msgstr ""
|
1582 |
|
1583 |
+
#: wp-job-manager-template.php:634
|
1584 |
msgid "Verify Password"
|
1585 |
msgstr ""
|
1586 |
|
1587 |
+
#: wp-job-manager-template.php:641
|
1588 |
msgid "Your email"
|
1589 |
msgstr ""
|
1590 |
|
1591 |
+
#: wp-job-manager-template.php:668
|
1592 |
msgid "Posted on "
|
1593 |
msgstr ""
|
1594 |
|
1595 |
+
#: wp-job-manager-template.php:670 wp-job-manager-template.php:690
|
1596 |
msgid "Posted %s ago"
|
1597 |
msgstr ""
|
1598 |
|
1599 |
+
#: wp-job-manager-template.php:713
|
1600 |
msgid "Anywhere"
|
1601 |
msgstr ""
|
1602 |
|
1603 |
+
#: wp-job-manager.php:213
|
1604 |
msgid "Load previous listings"
|
1605 |
msgstr ""
|
1606 |
|
1607 |
+
#: wp-job-manager.php:264
|
1608 |
msgid "Invalid file type. Accepted types:"
|
1609 |
msgstr ""
|
1610 |
|
1611 |
+
#: wp-job-manager.php:275
|
1612 |
msgid "Are you sure you want to delete this listing?"
|
1613 |
msgstr ""
|
1614 |
|
1655 |
msgid "job-type"
|
1656 |
msgstr ""
|
1657 |
|
1658 |
+
#: includes/admin/class-wp-job-manager-setup.php:191
|
1659 |
msgctxt "Default page title (wizard)"
|
1660 |
msgid "Post a Job"
|
1661 |
msgstr ""
|
1662 |
|
1663 |
+
#: includes/admin/class-wp-job-manager-setup.php:199
|
1664 |
msgctxt "Default page title (wizard)"
|
1665 |
msgid "Job Dashboard"
|
1666 |
msgstr ""
|
1667 |
|
1668 |
+
#: includes/admin/class-wp-job-manager-setup.php:207
|
1669 |
msgctxt "Default page title (wizard)"
|
1670 |
msgid "Jobs"
|
1671 |
msgstr ""
|
1711 |
#: wp-job-manager-functions.php:260
|
1712 |
msgctxt "post status"
|
1713 |
msgid "Active"
|
1714 |
+
msgstr ""
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: mikejolley, automattic, adamkheckler, annezazu, cena, chaselivings
|
|
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.3.1
|
5 |
Tested up to: 4.8
|
6 |
-
Stable tag: 1.
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -141,8 +141,16 @@ You can view (and contribute) translations via the [translate.wordpress.org](htt
|
|
141 |
|
142 |
== Changelog ==
|
143 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
= 1.28.0 =
|
145 |
-
* Enhancement: Improves support for Google Job Search by adding `
|
146 |
* Enhancement: Adds ability for job types to be mapped to an employment type as defined for Google Job Search. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1112)
|
147 |
* Enhancement: Requests search engines no longer index expired and filled job listings. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1120)
|
148 |
* Enhancement: Improves support with third-party sitemap generation in Jetpack, Yoast SEO, and All in One SEO. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1119)
|
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.3.1
|
5 |
Tested up to: 4.8
|
6 |
+
Stable tag: 1.29.0
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
141 |
|
142 |
== Changelog ==
|
143 |
|
144 |
+
= 1.29.0 =
|
145 |
+
* Enhancement: Moves license and update management for official add-ons to the core plugin. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1168)
|
146 |
+
* Enhancement: Update language for setup wizard with more clear descriptions. (@donnapep; https://github.com/Automattic/WP-Job-Manager/pull/1194)
|
147 |
+
* Fix: Prevent duplicate attachments to job listing posts for non-image media. (@tripflex; https://github.com/Automattic/WP-Job-Manager/pull/1144)
|
148 |
+
* Fix: PHP error on registration form due to missing placeholder text. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1180)
|
149 |
+
* Fix: Apply `the_job_application_method` filter even when no default is available. (@turtlepod; https://github.com/Automattic/WP-Job-Manager/issues/1164)
|
150 |
+
* Fix: Properly reset category selector on `[jobs]` shortcode. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1190)
|
151 |
+
|
152 |
= 1.28.0 =
|
153 |
+
* Enhancement: Improves support for Google Job Search by adding `JobPosting` structured data. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1115)
|
154 |
* Enhancement: Adds ability for job types to be mapped to an employment type as defined for Google Job Search. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1112)
|
155 |
* Enhancement: Requests search engines no longer index expired and filled job listings. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1120)
|
156 |
* Enhancement: Improves support with third-party sitemap generation in Jetpack, Yoast SEO, and All in One SEO. (@jom; https://github.com/Automattic/WP-Job-Manager/pull/1119)
|
templates/form-fields/password-field.php
CHANGED
@@ -8,12 +8,12 @@
|
|
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 |
-
<input type="password" class="input-text"<?php if ( isset( $field['autocomplete'] ) && false === $field['autocomplete'] ) { echo ' autocomplete="off"'; } ?> name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>" id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo esc_attr( $field['placeholder'] ); ?>" value="<?php echo isset( $field['value'] ) ? esc_attr( $field['value'] ) : ''; ?>" maxlength="<?php echo ! empty( $field['maxlength'] ) ? $field['maxlength'] : ''; ?>" <?php if ( ! empty( $field['required'] ) ) echo 'required'; ?> />
|
19 |
<?php if ( ! empty( $field['description'] ) ) : ?><small class="description"><?php echo $field['description']; ?></small><?php endif; ?>
|
8 |
* @author Automattic
|
9 |
* @package WP Job Manager
|
10 |
* @category Template
|
11 |
+
* @version 1.29.0
|
12 |
*/
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
exit; // Exit if accessed directly
|
16 |
}
|
17 |
?>
|
18 |
+
<input type="password" class="input-text"<?php if ( isset( $field['autocomplete'] ) && false === $field['autocomplete'] ) { echo ' autocomplete="off"'; } ?> name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>" id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo empty( $field['placeholder'] ) ? '' : esc_attr( $field['placeholder'] ); ?>" value="<?php echo isset( $field['value'] ) ? esc_attr( $field['value'] ) : ''; ?>" maxlength="<?php echo ! empty( $field['maxlength'] ) ? $field['maxlength'] : ''; ?>" <?php if ( ! empty( $field['required'] ) ) echo 'required'; ?> />
|
19 |
<?php if ( ! empty( $field['description'] ) ) : ?><small class="description"><?php echo $field['description']; ?></small><?php endif; ?>
|
templates/form-fields/text-field.php
CHANGED
@@ -8,12 +8,12 @@
|
|
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 |
-
<input type="text" class="input-text" name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>"<?php if ( isset( $field['autocomplete'] ) && false === $field['autocomplete'] ) { echo ' autocomplete="off"'; } ?> id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo esc_attr( $field['placeholder'] ); ?>" value="<?php echo isset( $field['value'] ) ? esc_attr( $field['value'] ) : ''; ?>" maxlength="<?php echo ! empty( $field['maxlength'] ) ? $field['maxlength'] : ''; ?>" <?php if ( ! empty( $field['required'] ) ) echo 'required'; ?> />
|
19 |
<?php if ( ! empty( $field['description'] ) ) : ?><small class="description"><?php echo $field['description']; ?></small><?php endif; ?>
|
8 |
* @author Automattic
|
9 |
* @package WP Job Manager
|
10 |
* @category Template
|
11 |
+
* @version 1.29.0
|
12 |
*/
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
exit; // Exit if accessed directly
|
16 |
}
|
17 |
?>
|
18 |
+
<input type="text" class="input-text" name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>"<?php if ( isset( $field['autocomplete'] ) && false === $field['autocomplete'] ) { echo ' autocomplete="off"'; } ?> id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo empty( $field['placeholder'] ) ? '' : esc_attr( $field['placeholder'] ); ?>" value="<?php echo isset( $field['value'] ) ? esc_attr( $field['value'] ) : ''; ?>" maxlength="<?php echo ! empty( $field['maxlength'] ) ? $field['maxlength'] : ''; ?>" <?php if ( ! empty( $field['required'] ) ) echo 'required'; ?> />
|
19 |
<?php if ( ! empty( $field['description'] ) ) : ?><small class="description"><?php echo $field['description']; ?></small><?php endif; ?>
|
templates/form-fields/textarea-field.php
CHANGED
@@ -8,12 +8,12 @@
|
|
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 |
-
<textarea cols="20" rows="3" class="input-text" name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>" id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo esc_attr( $field['placeholder'] ); ?>" maxlength="<?php echo ! empty( $field['maxlength'] ) ? $field['maxlength'] : ''; ?>" <?php if ( ! empty( $field['required'] ) ) echo 'required'; ?>><?php echo isset( $field['value'] ) ? esc_textarea( $field['value'] ) : ''; ?></textarea>
|
19 |
-
<?php if ( ! empty( $field['description'] ) ) : ?><small class="description"><?php echo $field['description']; ?></small><?php endif; ?>
|
8 |
* @author Automattic
|
9 |
* @package WP Job Manager
|
10 |
* @category Template
|
11 |
+
* @version 1.29.0
|
12 |
*/
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
exit; // Exit if accessed directly
|
16 |
}
|
17 |
?>
|
18 |
+
<textarea cols="20" rows="3" class="input-text" name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>" id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo empty( $field['placeholder'] ) ? '' : esc_attr( $field['placeholder'] ); ?>" maxlength="<?php echo ! empty( $field['maxlength'] ) ? $field['maxlength'] : ''; ?>" <?php if ( ! empty( $field['required'] ) ) echo 'required'; ?>><?php echo isset( $field['value'] ) ? esc_textarea( $field['value'] ) : ''; ?></textarea>
|
19 |
+
<?php if ( ! empty( $field['description'] ) ) : ?><small class="description"><?php echo $field['description']; ?></small><?php endif; ?>
|
wp-job-manager-template.php
CHANGED
@@ -227,8 +227,9 @@ function get_the_job_application_method( $post = null ) {
|
|
227 |
$method = new stdClass();
|
228 |
$apply = $post->_application;
|
229 |
|
230 |
-
if ( empty( $apply ) )
|
231 |
-
return false;
|
|
|
232 |
|
233 |
if ( strstr( $apply, '@' ) && is_email( $apply ) ) {
|
234 |
$method->type = 'email';
|
227 |
$method = new stdClass();
|
228 |
$apply = $post->_application;
|
229 |
|
230 |
+
if ( empty( $apply ) ) {
|
231 |
+
return apply_filters( 'the_job_application_method', false, $post );
|
232 |
+
}
|
233 |
|
234 |
if ( strstr( $apply, '@' ) && is_email( $apply ) ) {
|
235 |
$method->type = 'email';
|
wp-job-manager.php
CHANGED
@@ -3,7 +3,7 @@
|
|
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.1
|
@@ -58,7 +58,7 @@ class WP_Job_Manager {
|
|
58 |
*/
|
59 |
public function __construct() {
|
60 |
// Define constants
|
61 |
-
define( 'JOB_MANAGER_VERSION', '1.
|
62 |
define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
|
63 |
define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
|
64 |
|
@@ -71,6 +71,7 @@ class WP_Job_Manager {
|
|
71 |
include_once( 'includes/class-wp-job-manager-forms.php' );
|
72 |
include_once( 'includes/class-wp-job-manager-geocode.php' );
|
73 |
include_once( 'includes/class-wp-job-manager-cache-helper.php' );
|
|
|
74 |
|
75 |
add_action( 'rest_api_init', array( $this, 'rest_api' ) );
|
76 |
|
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.29.0
|
7 |
* Author: Automattic
|
8 |
* Author URI: https://wpjobmanager.com/
|
9 |
* Requires at least: 4.1
|
58 |
*/
|
59 |
public function __construct() {
|
60 |
// Define constants
|
61 |
+
define( 'JOB_MANAGER_VERSION', '1.29.0' );
|
62 |
define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
|
63 |
define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
|
64 |
|
71 |
include_once( 'includes/class-wp-job-manager-forms.php' );
|
72 |
include_once( 'includes/class-wp-job-manager-geocode.php' );
|
73 |
include_once( 'includes/class-wp-job-manager-cache-helper.php' );
|
74 |
+
include_once( 'includes/helper/class-wp-job-manager-helper.php' );
|
75 |
|
76 |
add_action( 'rest_api_init', array( $this, 'rest_api' ) );
|
77 |
|