WP Job Manager - Version 1.24.0

Version Description

  • Feature - Use featured images to store company logos.
  • Feature - Search term names for keywords.
  • Feature - Search custom fields in backend job listing search.
  • Tweak - Allow job expiry field to be localised.
  • Fix - The above change avoids creation of duplicate images in media library.
  • Dev - Added methods to WP_Job_Manager_Form; get_steps, get_step_key, set_step.
  • Dev - Made WP_Job_Manager_Form call the next 'handler' if no view is defined for the next step.
  • Dev - Added template to control job preview form.
Download this release

Release Info

Developer mikejolley
Plugin Icon 128x128 WP Job Manager
Version 1.24.0
Comparing to
See all releases

Code changes from version 1.23.13 to 1.24.0

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}.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;*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}.entry-header .attachment-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}
assets/css/frontend.less CHANGED
@@ -671,6 +671,9 @@ div.job_listings {
671
  padding: 0 1em 1em;
672
  border: 5px solid #eee;
673
  }
 
 
 
674
  .job_listing_preview_title, .entry-content .job_listing_preview_title {
675
  padding: .5em 1em;
676
  vertical-align: middle;
671
  padding: 0 1em 1em;
672
  border: 5px solid #eee;
673
  }
674
+ .entry-header .attachment-post-thumbnail {
675
+ display: none;
676
+ }
677
  .job_listing_preview_title, .entry-content .job_listing_preview_title {
678
  padding: .5em 1em;
679
  vertical-align: middle;
assets/js/admin.js CHANGED
@@ -16,10 +16,16 @@ jQuery(document).ready(function($) {
16
 
17
  // Datepicker
18
  $( "input#_job_expires" ).datepicker({
19
- dateFormat: 'yy-mm-dd',
20
- minDate: 0
 
21
  });
22
 
 
 
 
 
 
23
  // Uploading files
24
  var file_frame;
25
  var file_target_input;
@@ -69,4 +75,4 @@ jQuery(document).ready(function($) {
69
  // Finally, open the modal
70
  file_frame.open();
71
  });
72
- });
16
 
17
  // Datepicker
18
  $( "input#_job_expires" ).datepicker({
19
+ altFormat : 'yy-mm-dd',
20
+ dateFormat : job_manager_admin.date_format,
21
+ minDate : 0
22
  });
23
 
24
+ if ( $( "input#_job_expires" ).val() ) {
25
+ var date = new Date( $( "input#_job_expires" ).val() );
26
+ $( "input#_job_expires" ).datepicker( "setDate", date );
27
+ }
28
+
29
  // Uploading files
30
  var file_frame;
31
  var file_target_input;
75
  // Finally, open the modal
76
  file_frame.open();
77
  });
78
+ });
assets/js/admin.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(a){a(".tips, .help_tip").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200}),a("p.form-field-author").on("click","a.change-author",function(){return a(this).closest("p").find(".current-author").hide(),a(this).closest("p").find(".change-author").show(),!1}),a("input#_job_expires").datepicker({dateFormat:"yy-mm-dd",minDate:0});var b,c,d;a(".wp_job_manager_add_another_file_button").live("click",function(b){b.preventDefault();var c=(a(this).closest(".form-field"),a(this).data("field_name")),d=a(this).data("field_placeholder"),e=a(this).data("uploader_button_text"),f=a(this).data("uploader_button");a(this).before('<span class="file_url"><input type="text" name="'+c+'[]" placeholder="'+d+'" /><button class="button button-small wp_job_manager_upload_file_button" data-uploader_button_text="'+e+'">'+f+"</button></span>")}),a(".wp_job_manager_upload_file_button").live("click",function(e){return e.preventDefault(),d=a(this).closest(".file_url"),c=d.find("input"),b?void b.open():(b=wp.media.frames.file_frame=wp.media({title:a(this).data("uploader_title"),button:{text:a(this).data("uploader_button_text")},multiple:!1}),b.on("select",function(){attachment=b.state().get("selection").first().toJSON(),a(c).val(attachment.url)}),void b.open())})});
1
+ jQuery(document).ready(function(a){if(a(".tips, .help_tip").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200}),a("p.form-field-author").on("click","a.change-author",function(){return a(this).closest("p").find(".current-author").hide(),a(this).closest("p").find(".change-author").show(),!1}),a("input#_job_expires").datepicker({altFormat:"yy-mm-dd",dateFormat:job_manager_admin.date_format,minDate:0}),a("input#_job_expires").val()){var b=new Date(a("input#_job_expires").val());a("input#_job_expires").datepicker("setDate",b),a("input#_job_expires").attr("placeholder",job_manager_admin.date_format)}var c,d,e;a(".wp_job_manager_add_another_file_button").live("click",function(b){b.preventDefault();var c=(a(this).closest(".form-field"),a(this).data("field_name")),d=a(this).data("field_placeholder"),e=a(this).data("uploader_button_text"),f=a(this).data("uploader_button");a(this).before('<span class="file_url"><input type="text" name="'+c+'[]" placeholder="'+d+'" /><button class="button button-small wp_job_manager_upload_file_button" data-uploader_button_text="'+e+'">'+f+"</button></span>")}),a(".wp_job_manager_upload_file_button").live("click",function(b){return b.preventDefault(),e=a(this).closest(".file_url"),d=e.find("input"),c?void c.open():(c=wp.media.frames.file_frame=wp.media({title:a(this).data("uploader_title"),button:{text:a(this).data("uploader_button_text")},multiple:!1}),c.on("select",function(){attachment=c.state().get("selection").first().toJSON(),a(d).val(attachment.url)}),void c.open())})});
includes/abstracts/abstract-wp-job-manager-form.php CHANGED
@@ -32,23 +32,29 @@ abstract class WP_Job_Manager_Form {
32
  * Process function. all processing code if needed - can also change view if step is complete
33
  */
34
  public function process() {
35
- $keys = array_keys( $this->steps );
 
 
 
 
 
 
36
 
37
- if ( isset( $keys[ $this->step ] ) && is_callable( $this->steps[ $keys[ $this->step ] ]['handler'] ) ) {
38
- call_user_func( $this->steps[ $keys[ $this->step ] ]['handler'] );
 
39
  }
40
  }
41
 
42
  /**
43
- * output function. Call the view handler.
44
  */
45
  public function output( $atts = array() ) {
46
- $keys = array_keys( $this->steps );
47
-
48
  $this->show_errors();
49
 
50
- if ( isset( $keys[ $this->step ] ) && is_callable( $this->steps[ $keys[ $this->step ] ]['view'] ) ) {
51
- call_user_func( $this->steps[ $keys[ $this->step ] ]['view'], $atts );
52
  }
53
  }
54
 
@@ -79,6 +85,23 @@ abstract class WP_Job_Manager_Form {
79
  return esc_url_raw( $this->action ? $this->action : wp_unslash( $_SERVER['REQUEST_URI'] ) );
80
  }
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  /**
83
  * Get step from outside of the class
84
  */
@@ -86,6 +109,26 @@ abstract class WP_Job_Manager_Form {
86
  return $this->step;
87
  }
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  /**
90
  * Increase step from outside of the class
91
  */
@@ -311,4 +354,4 @@ abstract class WP_Job_Manager_Form {
311
  }
312
  }
313
  }
314
- }
32
  * Process function. all processing code if needed - can also change view if step is complete
33
  */
34
  public function process() {
35
+ $step_key = $this->get_step_key( $this->step );
36
+
37
+ if ( $step_key && is_callable( $this->steps[ $step_key ]['handler'] ) ) {
38
+ call_user_func( $this->steps[ $step_key ]['handler'] );
39
+ }
40
+
41
+ $next_step_key = $this->get_step_key( $this->step );
42
 
43
+ // if the step changed, but the next step has no 'view', call the next handler in sequence.
44
+ if ( $next_step_key && $step_key !== $next_step_key && ! is_callable( $this->steps[ $next_step_key ]['view'] ) ) {
45
+ $this->process();
46
  }
47
  }
48
 
49
  /**
50
+ * Call the view handler if set, otherwise call the next handler.
51
  */
52
  public function output( $atts = array() ) {
53
+ $step_key = $this->get_step_key( $this->step );
 
54
  $this->show_errors();
55
 
56
+ if ( $step_key && is_callable( $this->steps[ $step_key ]['view'] ) ) {
57
+ call_user_func( $this->steps[ $step_key ]['view'], $atts );
58
  }
59
  }
60
 
85
  return esc_url_raw( $this->action ? $this->action : wp_unslash( $_SERVER['REQUEST_URI'] ) );
86
  }
87
 
88
+ /**
89
+ * Get formn name.
90
+ * @since 1.24.0
91
+ * @return string
92
+ */
93
+ public function get_form_name() {
94
+ return $this->form_name;
95
+ }
96
+
97
+ /**
98
+ * Get steps from outside of the class
99
+ * @since 1.24.0
100
+ */
101
+ public function get_steps() {
102
+ return $this->steps;
103
+ }
104
+
105
  /**
106
  * Get step from outside of the class
107
  */
109
  return $this->step;
110
  }
111
 
112
+ /**
113
+ * Get step key from outside of the class
114
+ * @since 1.24.0
115
+ */
116
+ public function get_step_key( $step = '' ) {
117
+ if ( ! $step ) {
118
+ $step = $this->step;
119
+ }
120
+ $keys = array_keys( $this->steps );
121
+ return isset( $keys[ $step ] ) ? $keys[ $step ] : '';
122
+ }
123
+
124
+ /**
125
+ * Get step from outside of the class
126
+ * @since 1.24.0
127
+ */
128
+ public function set_step( $step ) {
129
+ $this->step = absint( $step );
130
+ }
131
+
132
  /**
133
  * Increase step from outside of the class
134
  */
354
  }
355
  }
356
  }
357
+ }
includes/admin/class-wp-job-manager-admin.php CHANGED
@@ -43,6 +43,10 @@ class WP_Job_Manager_Admin {
43
  wp_enqueue_style( 'job_manager_admin_css', JOB_MANAGER_PLUGIN_URL . '/assets/css/admin.css' );
44
  wp_register_script( 'jquery-tiptip', JOB_MANAGER_PLUGIN_URL. '/assets/js/jquery-tiptip/jquery.tipTip.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
45
  wp_enqueue_script( 'job_manager_admin_js', JOB_MANAGER_PLUGIN_URL. '/assets/js/admin.min.js', array( 'jquery', 'jquery-tiptip', 'jquery-ui-datepicker' ), JOB_MANAGER_VERSION, true );
 
 
 
 
46
  }
47
 
48
  wp_enqueue_style( 'job_manager_admin_menu_css', JOB_MANAGER_PLUGIN_URL . '/assets/css/menu.css' );
@@ -70,4 +74,4 @@ class WP_Job_Manager_Admin {
70
  }
71
  }
72
 
73
- new WP_Job_Manager_Admin();
43
  wp_enqueue_style( 'job_manager_admin_css', JOB_MANAGER_PLUGIN_URL . '/assets/css/admin.css' );
44
  wp_register_script( 'jquery-tiptip', JOB_MANAGER_PLUGIN_URL. '/assets/js/jquery-tiptip/jquery.tipTip.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
45
  wp_enqueue_script( 'job_manager_admin_js', JOB_MANAGER_PLUGIN_URL. '/assets/js/admin.min.js', array( 'jquery', 'jquery-tiptip', 'jquery-ui-datepicker' ), JOB_MANAGER_VERSION, true );
46
+
47
+ wp_localize_script( 'job_manager_admin_js', 'job_manager_admin', array(
48
+ 'date_format' => _x( 'yy-mm-dd', 'Date format for jQuery datepicker', 'wp-job-manager' )
49
+ ) );
50
  }
51
 
52
  wp_enqueue_style( 'job_manager_admin_menu_css', JOB_MANAGER_PLUGIN_URL . '/assets/css/menu.css' );
74
  }
75
  }
76
 
77
+ new WP_Job_Manager_Admin();
includes/admin/class-wp-job-manager-cpt.php CHANGED
@@ -19,6 +19,8 @@ class WP_Job_Manager_CPT {
19
  add_action( 'manage_job_listing_posts_custom_column', array( $this, 'custom_columns' ), 2 );
20
  add_filter( 'manage_edit-job_listing_sortable_columns', array( $this, 'sortable_columns' ) );
21
  add_filter( 'request', array( $this, 'sort_columns' ) );
 
 
22
  add_filter( 'post_updated_messages', array( $this, 'post_updated_messages' ) );
23
  add_action( 'admin_footer-edit.php', array( $this, 'add_bulk_actions' ) );
24
  add_action( 'load-edit.php', array( $this, 'do_bulk_actions' ) );
@@ -419,6 +421,57 @@ class WP_Job_Manager_CPT {
419
  return $vars;
420
  }
421
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
422
  /**
423
  * Adds post status to the "submitdiv" Meta Box and post type WP List Table screens. Based on https://gist.github.com/franz-josef-kaiser/2930190
424
  *
19
  add_action( 'manage_job_listing_posts_custom_column', array( $this, 'custom_columns' ), 2 );
20
  add_filter( 'manage_edit-job_listing_sortable_columns', array( $this, 'sortable_columns' ) );
21
  add_filter( 'request', array( $this, 'sort_columns' ) );
22
+ add_action( 'parse_query', array( $this, 'search_meta' ) );
23
+ add_filter( 'get_search_query', array( $this, 'search_meta_label' ) );
24
  add_filter( 'post_updated_messages', array( $this, 'post_updated_messages' ) );
25
  add_action( 'admin_footer-edit.php', array( $this, 'add_bulk_actions' ) );
26
  add_action( 'load-edit.php', array( $this, 'do_bulk_actions' ) );
421
  return $vars;
422
  }
423
 
424
+ /**
425
+ * Search custom fields as well as content.
426
+ * @param WP_Query $wp
427
+ */
428
+ public function search_meta( $wp ) {
429
+ global $pagenow, $wpdb;
430
+
431
+ if ( 'edit.php' !== $pagenow || empty( $wp->query_vars['s'] ) || 'job_listing' !== $wp->query_vars['post_type'] ) {
432
+ return;
433
+ }
434
+
435
+ $post_ids = array_unique( array_merge(
436
+ $wpdb->get_col(
437
+ $wpdb->prepare( "
438
+ SELECT posts.ID
439
+ FROM {$wpdb->posts} posts
440
+ INNER JOIN {$wpdb->postmeta} p1 ON posts.ID = p1.post_id
441
+ WHERE p1.meta_value LIKE '%%%s%%'
442
+ OR posts.post_title LIKE '%%%s%%'
443
+ OR posts.post_content LIKE '%%%s%%'
444
+ AND posts.post_type = 'job_listing'
445
+ ",
446
+ esc_sql( $wp->query_vars['s'] ),
447
+ esc_sql( $wp->query_vars['s'] ),
448
+ esc_sql( $wp->query_vars['s'] )
449
+ )
450
+ ),
451
+ array( 0 )
452
+ ) );
453
+
454
+ // Adjust the query vars
455
+ unset( $wp->query_vars['s'] );
456
+ $wp->query_vars['job_listing_search'] = true;
457
+ $wp->query_vars['post__in'] = $post_ids;
458
+ }
459
+
460
+ /**
461
+ * Change the label when searching meta.
462
+ * @param string $query
463
+ * @return string
464
+ */
465
+ public function search_meta_label( $query ) {
466
+ global $pagenow, $typenow;
467
+
468
+ if ( 'edit.php' !== $pagenow || $typenow !== 'job_listing' || ! get_query_var( 'job_listing_search' ) ) {
469
+ return $query;
470
+ }
471
+
472
+ return wp_unslash( sanitize_text_field( $_GET['s'] ) );
473
+ }
474
+
475
  /**
476
  * Adds post status to the "submitdiv" Meta Box and post type WP List Table screens. Based on https://gist.github.com/franz-josef-kaiser/2930190
477
  *
includes/admin/class-wp-job-manager-writepanels.php CHANGED
@@ -60,12 +60,6 @@ class WP_Job_Manager_Writepanels {
60
  'placeholder' => '@yourcompany',
61
  'priority' => 6
62
  ),
63
- '_company_logo' => array(
64
- 'label' => __( 'Company Logo', 'wp-job-manager' ),
65
- 'placeholder' => __( 'URL to the company logo', 'wp-job-manager' ),
66
- 'type' => 'file',
67
- 'priority' => 7
68
- ),
69
  '_company_video' => array(
70
  'label' => __( 'Company Video', 'wp-job-manager' ),
71
  'placeholder' => __( 'URL to the company video', 'wp-job-manager' ),
@@ -88,8 +82,8 @@ class WP_Job_Manager_Writepanels {
88
  );
89
  $fields['_job_expires'] = array(
90
  'label' => __( 'Listing Expiry Date', 'wp-job-manager' ),
91
- 'placeholder' => __( 'yyyy-mm-dd', 'wp-job-manager' ),
92
  'priority' => 11,
 
93
  'value' => metadata_exists( 'post', $post->ID, '_job_expires' ) ? get_post_meta( $post->ID, '_job_expires', true ) : calculate_job_expiry( $post->ID ),
94
  );
95
  }
@@ -496,4 +490,4 @@ class WP_Job_Manager_Writepanels {
496
  }
497
  }
498
 
499
- new WP_Job_Manager_Writepanels();
60
  'placeholder' => '@yourcompany',
61
  'priority' => 6
62
  ),
 
 
 
 
 
 
63
  '_company_video' => array(
64
  'label' => __( 'Company Video', 'wp-job-manager' ),
65
  'placeholder' => __( 'URL to the company video', 'wp-job-manager' ),
82
  );
83
  $fields['_job_expires'] = array(
84
  'label' => __( 'Listing Expiry Date', 'wp-job-manager' ),
 
85
  'priority' => 11,
86
+ 'placeholder' => _x( 'yyyy-mm-dd', 'Date format placeholder', 'wp-job-manager' ),
87
  'value' => metadata_exists( 'post', $post->ID, '_job_expires' ) ? get_post_meta( $post->ID, '_job_expires', true ) : calculate_job_expiry( $post->ID ),
88
  );
89
  }
490
  }
491
  }
492
 
493
+ new WP_Job_Manager_Writepanels();
includes/class-wp-job-manager-post-types.php CHANGED
@@ -34,8 +34,6 @@ class WP_Job_Manager_Post_Types {
34
  add_action( 'update_post_meta', array( $this, 'update_post_meta' ), 10, 4 );
35
  add_action( 'wp_insert_post', array( $this, 'maybe_add_default_meta_data' ), 10, 2 );
36
 
37
- add_action( 'before_delete_post', array( $this, 'before_delete_job' ) );
38
-
39
  // WP ALL Import
40
  add_action( 'pmxi_saved_post', array( $this, 'pmxi_saved_post' ), 10, 1 );
41
 
@@ -192,7 +190,11 @@ class WP_Job_Manager_Post_Types {
192
  'search_items' => sprintf( __( 'Search %s', 'wp-job-manager' ), $plural ),
193
  'not_found' => sprintf( __( 'No %s found', 'wp-job-manager' ), $plural ),
194
  'not_found_in_trash' => sprintf( __( 'No %s found in trash', 'wp-job-manager' ), $plural ),
195
- 'parent' => sprintf( __( 'Parent %s', 'wp-job-manager' ), $singular )
 
 
 
 
196
  ),
197
  'description' => sprintf( __( 'This is where you can create and manage %s.', 'wp-job-manager' ), $plural ),
198
  'public' => true,
@@ -204,7 +206,7 @@ class WP_Job_Manager_Post_Types {
204
  'hierarchical' => false,
205
  'rewrite' => $rewrite,
206
  'query_var' => true,
207
- 'supports' => array( 'title', 'editor', 'custom-fields', 'publicize' ),
208
  'has_archive' => $has_archive,
209
  'show_in_nav_menus' => false
210
  ) )
@@ -220,7 +222,7 @@ class WP_Job_Manager_Post_Types {
220
  */
221
  register_post_status( 'expired', array(
222
  'label' => _x( 'Expired', 'post status', 'wp-job-manager' ),
223
- 'public' => false,
224
  'protected' => true,
225
  'exclude_from_search' => true,
226
  'show_in_admin_all_list' => true,
@@ -543,9 +545,6 @@ class WP_Job_Manager_Post_Types {
543
  case '_featured' :
544
  $this->maybe_update_menu_order( $meta_id, $object_id, $meta_key, $meta_value );
545
  break;
546
- case '_company_logo' :
547
- $this->maybe_unattach_attachment( $meta_id, $object_id, $meta_key, $meta_value );
548
- break;
549
  }
550
  }
551
  }
@@ -572,36 +571,6 @@ class WP_Job_Manager_Post_Types {
572
  clean_post_cache( $object_id );
573
  }
574
 
575
- /**
576
- * Remove old attachment from listing
577
- */
578
- public function maybe_unattach_attachment( $meta_id, $object_id, $meta_key, $meta_value ) {
579
- global $wpdb;
580
-
581
- $dir = wp_upload_dir();
582
- $old_attachment_url = get_post_meta( $object_id, '_company_logo', true );
583
- $path = $old_attachment_url;
584
-
585
- if ( 0 === strpos( $path, $dir['baseurl'] . '/' ) ) {
586
- $path = substr( $path, strlen( $dir['baseurl'] . '/' ) );
587
- }
588
-
589
- $sql = $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = %s", $path );
590
- $attachment_ids = $wpdb->get_col( $sql );
591
-
592
- if ( $attachment_ids ) {
593
- foreach ( $attachment_ids as $attachment_id ) {
594
- if ( $object_id === wp_get_post_parent_id( $attachment_id ) ) {
595
- wp_update_post( array(
596
- 'ID' => $attachment_id,
597
- 'post_parent' => 0
598
- ) );
599
- break;
600
- }
601
- }
602
- }
603
- }
604
-
605
  /**
606
  * Legacy
607
  * @deprecated 1.19.1
@@ -677,24 +646,4 @@ class WP_Job_Manager_Post_Types {
677
  }
678
  return $weight;
679
  }
680
-
681
- /**
682
- * When deleting a job, delete its attachments
683
- * @param int $post_id
684
- */
685
- public function before_delete_job( $post_id ) {
686
- if ( 'job_listing' === get_post_type( $post_id ) ) {
687
- $attachments = get_children( array(
688
- 'post_parent' => $post_id,
689
- 'post_type' => 'attachment'
690
- ) );
691
-
692
- if ( $attachments ) {
693
- foreach ( $attachments as $attachment ) {
694
- wp_delete_attachment( $attachment->ID );
695
- @unlink( get_attached_file( $attachment->ID ) );
696
- }
697
- }
698
- }
699
- }
700
  }
34
  add_action( 'update_post_meta', array( $this, 'update_post_meta' ), 10, 4 );
35
  add_action( 'wp_insert_post', array( $this, 'maybe_add_default_meta_data' ), 10, 2 );
36
 
 
 
37
  // WP ALL Import
38
  add_action( 'pmxi_saved_post', array( $this, 'pmxi_saved_post' ), 10, 1 );
39
 
190
  'search_items' => sprintf( __( 'Search %s', 'wp-job-manager' ), $plural ),
191
  'not_found' => sprintf( __( 'No %s found', 'wp-job-manager' ), $plural ),
192
  'not_found_in_trash' => sprintf( __( 'No %s found in trash', 'wp-job-manager' ), $plural ),
193
+ 'parent' => sprintf( __( 'Parent %s', 'wp-job-manager' ), $singular ),
194
+ 'featured_image' => __( 'Company Logo', 'woocommerce' ),
195
+ 'set_featured_image' => __( 'Set company logo', 'woocommerce' ),
196
+ 'remove_featured_image' => __( 'Remove company logo', 'woocommerce' ),
197
+ 'use_featured_image' => __( 'Use as company logo', 'woocommerce' ),
198
  ),
199
  'description' => sprintf( __( 'This is where you can create and manage %s.', 'wp-job-manager' ), $plural ),
200
  'public' => true,
206
  'hierarchical' => false,
207
  'rewrite' => $rewrite,
208
  'query_var' => true,
209
+ 'supports' => array( 'title', 'editor', 'custom-fields', 'publicize', 'thumbnail' ),
210
  'has_archive' => $has_archive,
211
  'show_in_nav_menus' => false
212
  ) )
222
  */
223
  register_post_status( 'expired', array(
224
  'label' => _x( 'Expired', 'post status', 'wp-job-manager' ),
225
+ 'public' => true,
226
  'protected' => true,
227
  'exclude_from_search' => true,
228
  'show_in_admin_all_list' => true,
545
  case '_featured' :
546
  $this->maybe_update_menu_order( $meta_id, $object_id, $meta_key, $meta_value );
547
  break;
 
 
 
548
  }
549
  }
550
  }
571
  clean_post_cache( $object_id );
572
  }
573
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
574
  /**
575
  * Legacy
576
  * @deprecated 1.19.1
646
  }
647
  return $weight;
648
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
649
  }
includes/forms/class-wp-job-manager-form-edit-job.php CHANGED
@@ -63,6 +63,9 @@ class WP_Job_Manager_Form_Edit_Job extends WP_Job_Manager_Form_Submit_Job {
63
  } elseif ( 'job_description' === $key ) {
64
  $this->fields[ $group_key ][ $key ]['value'] = $job->post_content;
65
 
 
 
 
66
  } elseif ( ! empty( $field['taxonomy'] ) ) {
67
  $this->fields[ $group_key ][ $key ]['value'] = wp_get_object_terms( $job->ID, $field['taxonomy'], array( 'fields' => 'ids' ) );
68
 
63
  } elseif ( 'job_description' === $key ) {
64
  $this->fields[ $group_key ][ $key ]['value'] = $job->post_content;
65
 
66
+ } elseif ( 'company_logo' === $key ) {
67
+ $this->fields[ $group_key ][ $key ]['value'] = has_post_thumbnail( $job->ID ) ? get_post_thumbnail_id( $job->ID ) : get_post_meta( $job->ID, '_' . $key, true );
68
+
69
  } elseif ( ! empty( $field['taxonomy'] ) ) {
70
  $this->fields[ $group_key ][ $key ]['value'] = wp_get_object_terms( $job->ID, $field['taxonomy'], array( 'fields' => 'ids' ) );
71
 
includes/forms/class-wp-job-manager-form-submit-job.php CHANGED
@@ -257,10 +257,11 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
257
  }
258
  if ( ! empty( $check_value ) ) {
259
  foreach ( $check_value as $file_url ) {
260
- $file_url = current( explode( '?', $file_url ) );
 
261
 
262
- if ( ( $info = wp_check_filetype( $file_url ) ) && ! in_array( $info['type'], $field['allowed_mime_types'] ) ) {
263
- throw new Exception( sprintf( __( '"%s" (filetype %s) needs to be one of the following file types: %s', 'wp-job-manager' ), $field['label'], $info['ext'], implode( ', ', array_keys( $field['allowed_mime_types'] ) ) ) );
264
  }
265
  }
266
  }
@@ -505,6 +506,38 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
505
  }
506
  }
507
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
508
  /**
509
  * Set job meta + terms based on posted values
510
  *
@@ -528,20 +561,25 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
528
  wp_set_object_terms( $this->job_id, array( $values[ $group_key ][ $key ] ), $field['taxonomy'], false );
529
  }
530
 
 
 
 
 
 
 
531
  // Save meta data
532
  } else {
533
  update_post_meta( $this->job_id, '_' . $key, $values[ $group_key ][ $key ] );
534
- }
535
 
536
- // Handle attachments
537
- if ( 'file' === $field['type'] ) {
538
- // Must be absolute
539
- if ( is_array( $values[ $group_key ][ $key ] ) ) {
540
- foreach ( $values[ $group_key ][ $key ] as $file_url ) {
541
- $maybe_attach[] = str_replace( array( WP_CONTENT_URL, site_url() ), array( WP_CONTENT_DIR, ABSPATH ), $file_url );
 
 
542
  }
543
- } else {
544
- $maybe_attach[] = str_replace( array( WP_CONTENT_URL, site_url() ), array( WP_CONTENT_DIR, ABSPATH ), $values[ $group_key ][ $key ] );
545
  }
546
  }
547
  }
@@ -551,38 +589,18 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
551
 
552
  // Handle attachments
553
  if ( sizeof( $maybe_attach ) && apply_filters( 'job_manager_attach_uploaded_files', true ) ) {
554
- /** WordPress Administration Image API */
555
- include_once( ABSPATH . 'wp-admin/includes/image.php' );
556
- include_once( ABSPATH . 'wp-admin/includes/media.php' );
557
-
558
  // Get attachments
559
  $attachments = get_posts( 'post_parent=' . $this->job_id . '&post_type=attachment&fields=ids&post_mime_type=image&numberposts=-1' );
560
  $attachment_urls = array();
561
 
562
  // Loop attachments already attached to the job
563
- foreach ( $attachments as $attachment_key => $attachment ) {
564
- $attachment_urls[] = str_replace( array( WP_CONTENT_URL, site_url() ), array( WP_CONTENT_DIR, ABSPATH ), wp_get_attachment_url( $attachment ) );
565
  }
566
 
567
  foreach ( $maybe_attach as $attachment_url ) {
568
  if ( ! in_array( $attachment_url, $attachment_urls ) ) {
569
- $attachment = array(
570
- 'post_title' => get_the_title( $this->job_id ),
571
- 'post_content' => '',
572
- 'post_status' => 'inherit',
573
- 'post_parent' => $this->job_id,
574
- 'guid' => $attachment_url
575
- );
576
-
577
- if ( $info = wp_check_filetype( $attachment_url ) ) {
578
- $attachment['post_mime_type'] = $info['type'];
579
- }
580
-
581
- $attachment_id = wp_insert_attachment( $attachment, $attachment_url, $this->job_id );
582
-
583
- if ( ! is_wp_error( $attachment_id ) ) {
584
- wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $attachment_url ) );
585
- }
586
  }
587
  }
588
  }
@@ -593,7 +611,6 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
593
  update_user_meta( get_current_user_id(), '_company_website', isset( $values['company']['company_website'] ) ? $values['company']['company_website'] : '' );
594
  update_user_meta( get_current_user_id(), '_company_tagline', isset( $values['company']['company_tagline'] ) ? $values['company']['company_tagline'] : '' );
595
  update_user_meta( get_current_user_id(), '_company_twitter', isset( $values['company']['company_twitter'] ) ? $values['company']['company_twitter'] : '' );
596
- update_user_meta( get_current_user_id(), '_company_logo', isset( $values['company']['company_logo'] ) ? $values['company']['company_logo'] : '' );
597
  update_user_meta( get_current_user_id(), '_company_video', isset( $values['company']['company_video'] ) ? $values['company']['company_video'] : '' );
598
  }
599
 
@@ -608,28 +625,15 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
608
 
609
  if ( $this->job_id ) {
610
  $job_preview = true;
611
- $action = $this->get_action();
612
  $post = get_post( $this->job_id );
613
- setup_postdata( $post );
614
  $post->post_status = 'preview';
615
- ?>
616
- <form method="post" id="job_preview" action="<?php echo esc_url( $action ); ?>">
617
- <div class="job_listing_preview_title">
618
- <input type="submit" name="continue" id="job_preview_submit_button" class="button job-manager-button-submit-listing" value="<?php echo apply_filters( 'submit_job_step_preview_submit_text', __( 'Submit Listing', 'wp-job-manager' ) ); ?>" />
619
- <input type="submit" name="edit_job" class="button job-manager-button-edit-listing" value="<?php _e( 'Edit listing', 'wp-job-manager' ); ?>" />
620
- <input type="hidden" name="job_id" value="<?php echo esc_attr( $this->job_id ); ?>" />
621
- <input type="hidden" name="step" value="<?php echo esc_attr( $this->step ); ?>" />
622
- <input type="hidden" name="job_manager_form" value="<?php echo $this->form_name; ?>" />
623
- <h2>
624
- <?php _e( 'Preview', 'wp-job-manager' ); ?>
625
- </h2>
626
- </div>
627
- <div class="job_listing_preview single_job_listing">
628
- <h1><?php the_title(); ?></h1>
629
- <?php get_job_manager_template_part( 'content-single', 'job_listing' ); ?>
630
- </div>
631
- </form>
632
- <?php
633
  wp_reset_postdata();
634
  }
635
  }
@@ -658,7 +662,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
658
  // Update job listing
659
  $update_job = array();
660
  $update_job['ID'] = $job->ID;
661
- $update_job['post_status'] = get_option( 'job_manager_submission_requires_approval' ) ? 'pending' : 'publish';
662
  $update_job['post_date'] = current_time( 'mysql' );
663
  $update_job['post_date_gmt'] = current_time( 'mysql', 1 );
664
  $update_job['post_author'] = get_current_user_id();
257
  }
258
  if ( ! empty( $check_value ) ) {
259
  foreach ( $check_value as $file_url ) {
260
+ $file_url = current( explode( '?', $file_url ) );
261
+ $file_info = wp_check_filetype( $file_url );
262
 
263
+ if ( ! is_numeric( $file_url ) && $file_info && ! in_array( $file_info['type'], $field['allowed_mime_types'] ) ) {
264
+ throw new Exception( sprintf( __( '"%s" (filetype %s) needs to be one of the following file types: %s', 'wp-job-manager' ), $field['label'], $file_info['ext'], implode( ', ', array_keys( $field['allowed_mime_types'] ) ) ) );
265
  }
266
  }
267
  }
506
  }
507
  }
508
 
509
+ /**
510
+ * Create an attachment
511
+ * @param string $attachment_url
512
+ * @return int attachment id
513
+ */
514
+ protected function create_attachment( $attachment_url ) {
515
+ include_once( ABSPATH . 'wp-admin/includes/image.php' );
516
+ include_once( ABSPATH . 'wp-admin/includes/media.php' );
517
+
518
+ $attachment_url = str_replace( array( WP_CONTENT_URL, site_url() ), array( WP_CONTENT_DIR, ABSPATH ), $attachment_url );
519
+ $attachment = array(
520
+ 'post_title' => get_the_title( $this->job_id ),
521
+ 'post_content' => '',
522
+ 'post_status' => 'inherit',
523
+ 'post_parent' => $this->job_id,
524
+ 'guid' => $attachment_url
525
+ );
526
+
527
+ if ( $info = wp_check_filetype( $attachment_url ) ) {
528
+ $attachment['post_mime_type'] = $info['type'];
529
+ }
530
+
531
+ $attachment_id = wp_insert_attachment( $attachment, $attachment_url, $this->job_id );
532
+
533
+ if ( ! is_wp_error( $attachment_id ) ) {
534
+ wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $attachment_url ) );
535
+ return $attachment_id;
536
+ }
537
+
538
+ return 0;
539
+ }
540
+
541
  /**
542
  * Set job meta + terms based on posted values
543
  *
561
  wp_set_object_terms( $this->job_id, array( $values[ $group_key ][ $key ] ), $field['taxonomy'], false );
562
  }
563
 
564
+ // Company logo is a featured image
565
+ } elseif ( 'company_logo' === $key ) {
566
+ $attachment_id = is_numeric( $values[ $group_key ][ $key ] ) ? absint( $values[ $group_key ][ $key ] ) : $this->create_attachment( $values[ $group_key ][ $key ] );
567
+ set_post_thumbnail( $this->job_id, $attachment_id );
568
+ update_user_meta( get_current_user_id(), '_company_logo', $attachment_id );
569
+
570
  // Save meta data
571
  } else {
572
  update_post_meta( $this->job_id, '_' . $key, $values[ $group_key ][ $key ] );
 
573
 
574
+ // Handle attachments
575
+ if ( 'file' === $field['type'] ) {
576
+ if ( is_array( $values[ $group_key ][ $key ] ) ) {
577
+ foreach ( $values[ $group_key ][ $key ] as $file_url ) {
578
+ $maybe_attach[] = $file_url;
579
+ }
580
+ } else {
581
+ $maybe_attach[] = $values[ $group_key ][ $key ];
582
  }
 
 
583
  }
584
  }
585
  }
589
 
590
  // Handle attachments
591
  if ( sizeof( $maybe_attach ) && apply_filters( 'job_manager_attach_uploaded_files', true ) ) {
 
 
 
 
592
  // Get attachments
593
  $attachments = get_posts( 'post_parent=' . $this->job_id . '&post_type=attachment&fields=ids&post_mime_type=image&numberposts=-1' );
594
  $attachment_urls = array();
595
 
596
  // Loop attachments already attached to the job
597
+ foreach ( $attachments as $attachment_id ) {
598
+ $attachment_urls[] = wp_get_attachment_url( $attachment_id );
599
  }
600
 
601
  foreach ( $maybe_attach as $attachment_url ) {
602
  if ( ! in_array( $attachment_url, $attachment_urls ) ) {
603
+ $this->create_attachment( $attachment_url );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
604
  }
605
  }
606
  }
611
  update_user_meta( get_current_user_id(), '_company_website', isset( $values['company']['company_website'] ) ? $values['company']['company_website'] : '' );
612
  update_user_meta( get_current_user_id(), '_company_tagline', isset( $values['company']['company_tagline'] ) ? $values['company']['company_tagline'] : '' );
613
  update_user_meta( get_current_user_id(), '_company_twitter', isset( $values['company']['company_twitter'] ) ? $values['company']['company_twitter'] : '' );
 
614
  update_user_meta( get_current_user_id(), '_company_video', isset( $values['company']['company_video'] ) ? $values['company']['company_video'] : '' );
615
  }
616
 
625
 
626
  if ( $this->job_id ) {
627
  $job_preview = true;
 
628
  $post = get_post( $this->job_id );
 
629
  $post->post_status = 'preview';
630
+
631
+ setup_postdata( $post );
632
+
633
+ get_job_manager_template( 'job-preview.php', array(
634
+ 'form' => $this
635
+ ) );
636
+
 
 
 
 
 
 
 
 
 
 
 
637
  wp_reset_postdata();
638
  }
639
  }
662
  // Update job listing
663
  $update_job = array();
664
  $update_job['ID'] = $job->ID;
665
+ $update_job['post_status'] = apply_filters( 'submit_job_post_status', get_option( 'job_manager_submission_requires_approval' ) ? 'pending' : 'publish', $job );
666
  $update_job['post_date'] = current_time( 'mysql' );
667
  $update_job['post_date_gmt'] = current_time( 'mysql', 1 );
668
  $update_job['post_author'] = get_current_user_id();
languages/wp-job-manager.pot CHANGED
@@ -1,19 +1,19 @@
1
- # Copyright (C) 2015 WP Job Manager
2
  # This file is distributed under the same license as the WP Job Manager package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WP Job Manager 1.23.12\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/WP-Job-Manager\n"
7
- "POT-Creation-Date: 2015-11-26 12:58:52+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
  #: includes/admin/class-wp-job-manager-addons.php:57
16
- #: includes/admin/class-wp-job-manager-admin.php:61
17
  msgid "WP Job Manager Add-ons"
18
  msgstr ""
19
 
@@ -25,11 +25,16 @@ msgstr ""
25
  msgid "Check out the core add-on bundle &rarr;"
26
  msgstr ""
27
 
28
- #: includes/admin/class-wp-job-manager-admin.php:58
 
 
 
 
 
29
  msgid "Settings"
30
  msgstr ""
31
 
32
- #: includes/admin/class-wp-job-manager-admin.php:61
33
  msgid "Add-ons"
34
  msgstr ""
35
 
@@ -176,7 +181,7 @@ msgid "View"
176
  msgstr ""
177
 
178
  #: includes/admin/class-wp-job-manager-cpt.php:352
179
- #: includes/class-wp-job-manager-post-types.php:180
180
  #: templates/job-dashboard.php:33 templates/job-dashboard.php:49
181
  msgid "Edit"
182
  msgstr ""
@@ -187,8 +192,8 @@ msgid "Delete"
187
  msgstr ""
188
 
189
  #: includes/admin/class-wp-job-manager-settings.php:42
190
- #: includes/class-wp-job-manager-post-types.php:176
191
- #: includes/class-wp-job-manager-post-types.php:239
192
  msgid "Job Listings"
193
  msgstr ""
194
 
@@ -666,80 +671,73 @@ msgid "Company Twitter"
666
  msgstr ""
667
 
668
  #: includes/admin/class-wp-job-manager-writepanels.php:64
669
- msgid "Company Logo"
670
- msgstr ""
671
-
672
- #: includes/admin/class-wp-job-manager-writepanels.php:65
673
- msgid "URL to the company logo"
674
- msgstr ""
675
-
676
- #: includes/admin/class-wp-job-manager-writepanels.php:70
677
  msgid "Company Video"
678
  msgstr ""
679
 
680
- #: includes/admin/class-wp-job-manager-writepanels.php:71
681
  msgid "URL to the company video"
682
  msgstr ""
683
 
684
- #: includes/admin/class-wp-job-manager-writepanels.php:76
685
  msgid "Position Filled"
686
  msgstr ""
687
 
688
- #: includes/admin/class-wp-job-manager-writepanels.php:79
689
  msgid "Filled listings will no longer accept applications."
690
  msgstr ""
691
 
692
- #: includes/admin/class-wp-job-manager-writepanels.php:84
693
  msgid "Featured Listing"
694
  msgstr ""
695
 
696
- #: includes/admin/class-wp-job-manager-writepanels.php:86
697
  msgid ""
698
  "Featured listings will be sticky during searches, and can be styled "
699
  "differently."
700
  msgstr ""
701
 
702
- #: includes/admin/class-wp-job-manager-writepanels.php:90
703
  msgid "Listing Expiry Date"
704
  msgstr ""
705
 
706
- #: includes/admin/class-wp-job-manager-writepanels.php:91
 
707
  msgid "yyyy-mm-dd"
708
  msgstr ""
709
 
710
- #: includes/admin/class-wp-job-manager-writepanels.php:98
711
  msgid "Posted by"
712
  msgstr ""
713
 
714
- #: includes/admin/class-wp-job-manager-writepanels.php:130
715
  msgid "%s Data"
716
  msgstr ""
717
 
 
 
718
  #: includes/admin/class-wp-job-manager-writepanels.php:159
719
- #: includes/admin/class-wp-job-manager-writepanels.php:162
720
- #: includes/admin/class-wp-job-manager-writepanels.php:165
721
  msgid "Use file"
722
  msgstr ""
723
 
 
 
724
  #: includes/admin/class-wp-job-manager-writepanels.php:159
725
- #: includes/admin/class-wp-job-manager-writepanels.php:162
726
- #: includes/admin/class-wp-job-manager-writepanels.php:165
727
  msgid "Upload"
728
  msgstr ""
729
 
730
- #: includes/admin/class-wp-job-manager-writepanels.php:165
731
  msgid "Add file"
732
  msgstr ""
733
 
734
- #: includes/admin/class-wp-job-manager-writepanels.php:333
735
  msgid "Guest User"
736
  msgstr ""
737
 
738
- #: includes/admin/class-wp-job-manager-writepanels.php:335
739
  msgid "Change"
740
  msgstr ""
741
 
742
- #: includes/admin/class-wp-job-manager-writepanels.php:339
743
  msgid "Enter the ID of the user, or leave blank if submitted by a guest."
744
  msgstr ""
745
 
@@ -769,144 +767,160 @@ msgstr ""
769
  msgid "Employer"
770
  msgstr ""
771
 
772
- #: includes/class-wp-job-manager-post-types.php:60
773
  #: includes/forms/class-wp-job-manager-form-submit-job.php:146
774
  msgid "Job category"
775
  msgstr ""
776
 
777
- #: includes/class-wp-job-manager-post-types.php:61
778
  msgid "Job categories"
779
  msgstr ""
780
 
781
- #: includes/class-wp-job-manager-post-types.php:65
782
  msgctxt "Job category slug - resave permalinks after changing this"
783
  msgid "job-category"
784
  msgstr ""
785
 
786
- #: includes/class-wp-job-manager-post-types.php:85
787
- #: includes/class-wp-job-manager-post-types.php:131
788
- #: includes/class-wp-job-manager-post-types.php:185
789
  msgid "Search %s"
790
  msgstr ""
791
 
792
- #: includes/class-wp-job-manager-post-types.php:86
793
- #: includes/class-wp-job-manager-post-types.php:132
794
- #: includes/class-wp-job-manager-post-types.php:177
795
  msgid "All %s"
796
  msgstr ""
797
 
798
- #: includes/class-wp-job-manager-post-types.php:87
799
- #: includes/class-wp-job-manager-post-types.php:133
800
- #: includes/class-wp-job-manager-post-types.php:188
801
  msgid "Parent %s"
802
  msgstr ""
803
 
804
- #: includes/class-wp-job-manager-post-types.php:88
805
- #: includes/class-wp-job-manager-post-types.php:134
806
  msgid "Parent %s:"
807
  msgstr ""
808
 
809
- #: includes/class-wp-job-manager-post-types.php:89
810
- #: includes/class-wp-job-manager-post-types.php:135
811
- #: includes/class-wp-job-manager-post-types.php:181
812
  msgid "Edit %s"
813
  msgstr ""
814
 
815
- #: includes/class-wp-job-manager-post-types.php:90
816
- #: includes/class-wp-job-manager-post-types.php:136
817
  msgid "Update %s"
818
  msgstr ""
819
 
820
- #: includes/class-wp-job-manager-post-types.php:91
821
- #: includes/class-wp-job-manager-post-types.php:137
822
  msgid "Add New %s"
823
  msgstr ""
824
 
825
- #: includes/class-wp-job-manager-post-types.php:92
826
- #: includes/class-wp-job-manager-post-types.php:138
827
  msgid "New %s Name"
828
  msgstr ""
829
 
830
- #: includes/class-wp-job-manager-post-types.php:107
831
  #: includes/forms/class-wp-job-manager-form-submit-job.php:137
832
  msgid "Job type"
833
  msgstr ""
834
 
835
- #: includes/class-wp-job-manager-post-types.php:108
836
  msgid "Job types"
837
  msgstr ""
838
 
839
- #: includes/class-wp-job-manager-post-types.php:112
840
  msgctxt "Job type slug - resave permalinks after changing this"
841
  msgid "job-type"
842
  msgstr ""
843
 
844
- #: includes/class-wp-job-manager-post-types.php:155
845
  msgid "Job"
846
  msgstr ""
847
 
848
- #: includes/class-wp-job-manager-post-types.php:156
849
  msgid "Jobs"
850
  msgstr ""
851
 
852
- #: includes/class-wp-job-manager-post-types.php:159
853
  msgctxt "Post type archive slug - resave permalinks after changing this"
854
  msgid "jobs"
855
  msgstr ""
856
 
857
- #: includes/class-wp-job-manager-post-types.php:165
858
  msgctxt "Job permalink - resave permalinks after changing this"
859
  msgid "job"
860
  msgstr ""
861
 
862
- #: includes/class-wp-job-manager-post-types.php:178
863
  msgid "Add New"
864
  msgstr ""
865
 
866
- #: includes/class-wp-job-manager-post-types.php:179
867
  msgid "Add %s"
868
  msgstr ""
869
 
870
- #: includes/class-wp-job-manager-post-types.php:182
871
  msgid "New %s"
872
  msgstr ""
873
 
874
- #: includes/class-wp-job-manager-post-types.php:183
875
- #: includes/class-wp-job-manager-post-types.php:184
876
  msgid "View %s"
877
  msgstr ""
878
 
879
- #: includes/class-wp-job-manager-post-types.php:186
880
  msgid "No %s found"
881
  msgstr ""
882
 
883
- #: includes/class-wp-job-manager-post-types.php:187
884
  msgid "No %s found in trash"
885
  msgstr ""
886
 
887
- #: includes/class-wp-job-manager-post-types.php:190
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
888
  msgid "This is where you can create and manage %s."
889
  msgstr ""
890
 
891
- #: includes/class-wp-job-manager-post-types.php:215
892
  #: wp-job-manager-functions.php:197
893
  msgctxt "post status"
894
  msgid "Expired"
895
  msgstr ""
896
 
897
- #: includes/class-wp-job-manager-post-types.php:221
898
  msgid "Expired <span class=\"count\">(%s)</span>"
899
  msgid_plural "Expired <span class=\"count\">(%s)</span>"
900
  msgstr[0] ""
901
  msgstr[1] ""
902
 
903
- #: includes/class-wp-job-manager-post-types.php:224
904
  #: wp-job-manager-functions.php:198
905
  msgctxt "post status"
906
  msgid "Preview"
907
  msgstr ""
908
 
909
- #: includes/class-wp-job-manager-post-types.php:229
910
  msgid "Preview <span class=\"count\">(%s)</span>"
911
  msgid_plural "Preview <span class=\"count\">(%s)</span>"
912
  msgstr[0] ""
@@ -988,16 +1002,16 @@ msgstr ""
988
  msgid "Invalid listing"
989
  msgstr ""
990
 
991
- #: includes/forms/class-wp-job-manager-form-edit-job.php:87
992
  msgid "Save changes"
993
  msgstr ""
994
 
995
- #: includes/forms/class-wp-job-manager-form-edit-job.php:116
996
  #: includes/forms/class-wp-job-manager-form-edit-job.php:119
 
997
  msgid "Your changes have been saved."
998
  msgstr ""
999
 
1000
- #: includes/forms/class-wp-job-manager-form-edit-job.php:116
1001
  msgid "View &rarr;"
1002
  msgstr ""
1003
 
@@ -1006,8 +1020,8 @@ msgid "Submit Details"
1006
  msgstr ""
1007
 
1008
  #: includes/forms/class-wp-job-manager-form-submit-job.php:39
1009
- #: includes/forms/class-wp-job-manager-form-submit-job.php:378
1010
- #: includes/forms/class-wp-job-manager-form-submit-job.php:624
1011
  msgid "Preview"
1012
  msgstr ""
1013
 
@@ -1102,43 +1116,35 @@ msgstr ""
1102
  msgid "%s is invalid"
1103
  msgstr ""
1104
 
1105
- #: includes/forms/class-wp-job-manager-form-submit-job.php:263
1106
  #: wp-job-manager-functions.php:702
1107
  msgid "\"%s\" (filetype %s) needs to be one of the following file types: %s"
1108
  msgstr ""
1109
 
1110
- #: includes/forms/class-wp-job-manager-form-submit-job.php:278
1111
  msgid "Please enter a valid application email address"
1112
  msgstr ""
1113
 
1114
- #: includes/forms/class-wp-job-manager-form-submit-job.php:287
1115
  msgid "Please enter a valid application URL"
1116
  msgstr ""
1117
 
1118
- #: includes/forms/class-wp-job-manager-form-submit-job.php:297
1119
  msgid "Please enter a valid application email address or URL"
1120
  msgstr ""
1121
 
1122
- #: includes/forms/class-wp-job-manager-form-submit-job.php:409
1123
  msgid "Please enter a username."
1124
  msgstr ""
1125
 
1126
- #: includes/forms/class-wp-job-manager-form-submit-job.php:412
1127
  msgid "Please enter your email address."
1128
  msgstr ""
1129
 
1130
- #: includes/forms/class-wp-job-manager-form-submit-job.php:430
1131
  msgid "You must be signed in to post a new listing."
1132
  msgstr ""
1133
 
1134
- #: includes/forms/class-wp-job-manager-form-submit-job.php:618
1135
- msgid "Submit Listing"
1136
- msgstr ""
1137
-
1138
- #: includes/forms/class-wp-job-manager-form-submit-job.php:619
1139
- msgid "Edit listing"
1140
- msgstr ""
1141
-
1142
  #: templates/account-signin.php:4
1143
  msgid "Your account"
1144
  msgstr ""
@@ -1230,8 +1236,8 @@ msgstr ""
1230
  msgid "Select Some Options"
1231
  msgstr ""
1232
 
1233
- #: templates/form-fields/uploaded-file-html.php:6
1234
- #: templates/form-fields/uploaded-file-html.php:8
1235
  msgid "remove"
1236
  msgstr ""
1237
 
@@ -1295,6 +1301,14 @@ msgid ""
1295
  "be enabled in order to view listings."
1296
  msgstr ""
1297
 
 
 
 
 
 
 
 
 
1298
  #: templates/job-submit.php:35
1299
  msgid "Company Details"
1300
  msgstr ""
@@ -1364,19 +1378,19 @@ msgstr ""
1364
  msgid "Application via \"%s\" listing on %s"
1365
  msgstr ""
1366
 
1367
- #: wp-job-manager-template.php:283
1368
  msgid "Anywhere"
1369
  msgstr ""
1370
 
1371
- #: wp-job-manager.php:151
1372
  msgid "Invalid file type. Accepted types:"
1373
  msgstr ""
1374
 
1375
- #: wp-job-manager.php:164
1376
  msgid "Load previous listings"
1377
  msgstr ""
1378
 
1379
- #: wp-job-manager.php:167
1380
  msgid "Are you sure you want to delete this listing?"
1381
  msgstr ""
1382
 
@@ -1384,7 +1398,10 @@ msgstr ""
1384
  msgid "WP Job Manager"
1385
  msgstr ""
1386
 
 
1387
  #. Plugin URI of the plugin/theme
 
 
1388
  msgid "https://wpjobmanager.com/"
1389
  msgstr ""
1390
 
@@ -1395,9 +1412,5 @@ msgid ""
1395
  msgstr ""
1396
 
1397
  #. Author of the plugin/theme
1398
- msgid "Mike Jolley"
1399
- msgstr ""
1400
-
1401
- #. Author URI of the plugin/theme
1402
- msgid "http://mikejolley.com"
1403
  msgstr ""
1
+ # Copyright (C) 2016 WP Job Manager
2
  # This file is distributed under the same license as the WP Job Manager package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WP Job Manager 1.24.0\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/WP-Job-Manager\n"
7
+ "POT-Creation-Date: 2016-02-04 12:06:33+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
  #: includes/admin/class-wp-job-manager-addons.php:57
16
+ #: includes/admin/class-wp-job-manager-admin.php:65
17
  msgid "WP Job Manager Add-ons"
18
  msgstr ""
19
 
25
  msgid "Check out the core add-on bundle &rarr;"
26
  msgstr ""
27
 
28
+ #: includes/admin/class-wp-job-manager-admin.php:48
29
+ msgctxt "Date format for jQuery datepicker"
30
+ msgid "yy-mm-dd"
31
+ msgstr ""
32
+
33
+ #: includes/admin/class-wp-job-manager-admin.php:62
34
  msgid "Settings"
35
  msgstr ""
36
 
37
+ #: includes/admin/class-wp-job-manager-admin.php:65
38
  msgid "Add-ons"
39
  msgstr ""
40
 
181
  msgstr ""
182
 
183
  #: includes/admin/class-wp-job-manager-cpt.php:352
184
+ #: includes/class-wp-job-manager-post-types.php:185
185
  #: templates/job-dashboard.php:33 templates/job-dashboard.php:49
186
  msgid "Edit"
187
  msgstr ""
192
  msgstr ""
193
 
194
  #: includes/admin/class-wp-job-manager-settings.php:42
195
+ #: includes/class-wp-job-manager-post-types.php:181
196
+ #: includes/class-wp-job-manager-post-types.php:248
197
  msgid "Job Listings"
198
  msgstr ""
199
 
671
  msgstr ""
672
 
673
  #: includes/admin/class-wp-job-manager-writepanels.php:64
 
 
 
 
 
 
 
 
674
  msgid "Company Video"
675
  msgstr ""
676
 
677
+ #: includes/admin/class-wp-job-manager-writepanels.php:65
678
  msgid "URL to the company video"
679
  msgstr ""
680
 
681
+ #: includes/admin/class-wp-job-manager-writepanels.php:70
682
  msgid "Position Filled"
683
  msgstr ""
684
 
685
+ #: includes/admin/class-wp-job-manager-writepanels.php:73
686
  msgid "Filled listings will no longer accept applications."
687
  msgstr ""
688
 
689
+ #: includes/admin/class-wp-job-manager-writepanels.php:78
690
  msgid "Featured Listing"
691
  msgstr ""
692
 
693
+ #: includes/admin/class-wp-job-manager-writepanels.php:80
694
  msgid ""
695
  "Featured listings will be sticky during searches, and can be styled "
696
  "differently."
697
  msgstr ""
698
 
699
+ #: includes/admin/class-wp-job-manager-writepanels.php:84
700
  msgid "Listing Expiry Date"
701
  msgstr ""
702
 
703
+ #: includes/admin/class-wp-job-manager-writepanels.php:86
704
+ msgctxt "Date format placeholder"
705
  msgid "yyyy-mm-dd"
706
  msgstr ""
707
 
708
+ #: includes/admin/class-wp-job-manager-writepanels.php:92
709
  msgid "Posted by"
710
  msgstr ""
711
 
712
+ #: includes/admin/class-wp-job-manager-writepanels.php:124
713
  msgid "%s Data"
714
  msgstr ""
715
 
716
+ #: includes/admin/class-wp-job-manager-writepanels.php:153
717
+ #: includes/admin/class-wp-job-manager-writepanels.php:156
718
  #: includes/admin/class-wp-job-manager-writepanels.php:159
 
 
719
  msgid "Use file"
720
  msgstr ""
721
 
722
+ #: includes/admin/class-wp-job-manager-writepanels.php:153
723
+ #: includes/admin/class-wp-job-manager-writepanels.php:156
724
  #: includes/admin/class-wp-job-manager-writepanels.php:159
 
 
725
  msgid "Upload"
726
  msgstr ""
727
 
728
+ #: includes/admin/class-wp-job-manager-writepanels.php:159
729
  msgid "Add file"
730
  msgstr ""
731
 
732
+ #: includes/admin/class-wp-job-manager-writepanels.php:327
733
  msgid "Guest User"
734
  msgstr ""
735
 
736
+ #: includes/admin/class-wp-job-manager-writepanels.php:329
737
  msgid "Change"
738
  msgstr ""
739
 
740
+ #: includes/admin/class-wp-job-manager-writepanels.php:333
741
  msgid "Enter the ID of the user, or leave blank if submitted by a guest."
742
  msgstr ""
743
 
767
  msgid "Employer"
768
  msgstr ""
769
 
770
+ #: includes/class-wp-job-manager-post-types.php:65
771
  #: includes/forms/class-wp-job-manager-form-submit-job.php:146
772
  msgid "Job category"
773
  msgstr ""
774
 
775
+ #: includes/class-wp-job-manager-post-types.php:66
776
  msgid "Job categories"
777
  msgstr ""
778
 
779
+ #: includes/class-wp-job-manager-post-types.php:70
780
  msgctxt "Job category slug - resave permalinks after changing this"
781
  msgid "job-category"
782
  msgstr ""
783
 
784
+ #: includes/class-wp-job-manager-post-types.php:90
785
+ #: includes/class-wp-job-manager-post-types.php:136
786
+ #: includes/class-wp-job-manager-post-types.php:190
787
  msgid "Search %s"
788
  msgstr ""
789
 
790
+ #: includes/class-wp-job-manager-post-types.php:91
791
+ #: includes/class-wp-job-manager-post-types.php:137
792
+ #: includes/class-wp-job-manager-post-types.php:182
793
  msgid "All %s"
794
  msgstr ""
795
 
796
+ #: includes/class-wp-job-manager-post-types.php:92
797
+ #: includes/class-wp-job-manager-post-types.php:138
798
+ #: includes/class-wp-job-manager-post-types.php:193
799
  msgid "Parent %s"
800
  msgstr ""
801
 
802
+ #: includes/class-wp-job-manager-post-types.php:93
803
+ #: includes/class-wp-job-manager-post-types.php:139
804
  msgid "Parent %s:"
805
  msgstr ""
806
 
807
+ #: includes/class-wp-job-manager-post-types.php:94
808
+ #: includes/class-wp-job-manager-post-types.php:140
809
+ #: includes/class-wp-job-manager-post-types.php:186
810
  msgid "Edit %s"
811
  msgstr ""
812
 
813
+ #: includes/class-wp-job-manager-post-types.php:95
814
+ #: includes/class-wp-job-manager-post-types.php:141
815
  msgid "Update %s"
816
  msgstr ""
817
 
818
+ #: includes/class-wp-job-manager-post-types.php:96
819
+ #: includes/class-wp-job-manager-post-types.php:142
820
  msgid "Add New %s"
821
  msgstr ""
822
 
823
+ #: includes/class-wp-job-manager-post-types.php:97
824
+ #: includes/class-wp-job-manager-post-types.php:143
825
  msgid "New %s Name"
826
  msgstr ""
827
 
828
+ #: includes/class-wp-job-manager-post-types.php:112
829
  #: includes/forms/class-wp-job-manager-form-submit-job.php:137
830
  msgid "Job type"
831
  msgstr ""
832
 
833
+ #: includes/class-wp-job-manager-post-types.php:113
834
  msgid "Job types"
835
  msgstr ""
836
 
837
+ #: includes/class-wp-job-manager-post-types.php:117
838
  msgctxt "Job type slug - resave permalinks after changing this"
839
  msgid "job-type"
840
  msgstr ""
841
 
842
+ #: includes/class-wp-job-manager-post-types.php:160
843
  msgid "Job"
844
  msgstr ""
845
 
846
+ #: includes/class-wp-job-manager-post-types.php:161
847
  msgid "Jobs"
848
  msgstr ""
849
 
850
+ #: includes/class-wp-job-manager-post-types.php:164
851
  msgctxt "Post type archive slug - resave permalinks after changing this"
852
  msgid "jobs"
853
  msgstr ""
854
 
855
+ #: includes/class-wp-job-manager-post-types.php:170
856
  msgctxt "Job permalink - resave permalinks after changing this"
857
  msgid "job"
858
  msgstr ""
859
 
860
+ #: includes/class-wp-job-manager-post-types.php:183
861
  msgid "Add New"
862
  msgstr ""
863
 
864
+ #: includes/class-wp-job-manager-post-types.php:184
865
  msgid "Add %s"
866
  msgstr ""
867
 
868
+ #: includes/class-wp-job-manager-post-types.php:187
869
  msgid "New %s"
870
  msgstr ""
871
 
872
+ #: includes/class-wp-job-manager-post-types.php:188
873
+ #: includes/class-wp-job-manager-post-types.php:189
874
  msgid "View %s"
875
  msgstr ""
876
 
877
+ #: includes/class-wp-job-manager-post-types.php:191
878
  msgid "No %s found"
879
  msgstr ""
880
 
881
+ #: includes/class-wp-job-manager-post-types.php:192
882
  msgid "No %s found in trash"
883
  msgstr ""
884
 
885
+ #: includes/class-wp-job-manager-post-types.php:194
886
+ msgid "Company Logo"
887
+ msgstr ""
888
+
889
+ #: includes/class-wp-job-manager-post-types.php:195
890
+ msgid "Set company logo"
891
+ msgstr ""
892
+
893
+ #: includes/class-wp-job-manager-post-types.php:196
894
+ msgid "Remove company logo"
895
+ msgstr ""
896
+
897
+ #: includes/class-wp-job-manager-post-types.php:197
898
+ msgid "Use as company logo"
899
+ msgstr ""
900
+
901
+ #: includes/class-wp-job-manager-post-types.php:199
902
  msgid "This is where you can create and manage %s."
903
  msgstr ""
904
 
905
+ #: includes/class-wp-job-manager-post-types.php:224
906
  #: wp-job-manager-functions.php:197
907
  msgctxt "post status"
908
  msgid "Expired"
909
  msgstr ""
910
 
911
+ #: includes/class-wp-job-manager-post-types.php:230
912
  msgid "Expired <span class=\"count\">(%s)</span>"
913
  msgid_plural "Expired <span class=\"count\">(%s)</span>"
914
  msgstr[0] ""
915
  msgstr[1] ""
916
 
917
+ #: includes/class-wp-job-manager-post-types.php:233
918
  #: wp-job-manager-functions.php:198
919
  msgctxt "post status"
920
  msgid "Preview"
921
  msgstr ""
922
 
923
+ #: includes/class-wp-job-manager-post-types.php:238
924
  msgid "Preview <span class=\"count\">(%s)</span>"
925
  msgid_plural "Preview <span class=\"count\">(%s)</span>"
926
  msgstr[0] ""
1002
  msgid "Invalid listing"
1003
  msgstr ""
1004
 
1005
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:90
1006
  msgid "Save changes"
1007
  msgstr ""
1008
 
 
1009
  #: includes/forms/class-wp-job-manager-form-edit-job.php:119
1010
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:122
1011
  msgid "Your changes have been saved."
1012
  msgstr ""
1013
 
1014
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:119
1015
  msgid "View &rarr;"
1016
  msgstr ""
1017
 
1020
  msgstr ""
1021
 
1022
  #: includes/forms/class-wp-job-manager-form-submit-job.php:39
1023
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:379
1024
+ #: templates/job-preview.php:5
1025
  msgid "Preview"
1026
  msgstr ""
1027
 
1116
  msgid "%s is invalid"
1117
  msgstr ""
1118
 
1119
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:264
1120
  #: wp-job-manager-functions.php:702
1121
  msgid "\"%s\" (filetype %s) needs to be one of the following file types: %s"
1122
  msgstr ""
1123
 
1124
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:279
1125
  msgid "Please enter a valid application email address"
1126
  msgstr ""
1127
 
1128
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:288
1129
  msgid "Please enter a valid application URL"
1130
  msgstr ""
1131
 
1132
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:298
1133
  msgid "Please enter a valid application email address or URL"
1134
  msgstr ""
1135
 
1136
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:410
1137
  msgid "Please enter a username."
1138
  msgstr ""
1139
 
1140
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:413
1141
  msgid "Please enter your email address."
1142
  msgstr ""
1143
 
1144
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:431
1145
  msgid "You must be signed in to post a new listing."
1146
  msgstr ""
1147
 
 
 
 
 
 
 
 
 
1148
  #: templates/account-signin.php:4
1149
  msgid "Your account"
1150
  msgstr ""
1236
  msgid "Select Some Options"
1237
  msgstr ""
1238
 
1239
+ #: templates/form-fields/uploaded-file-html.php:12
1240
+ #: templates/form-fields/uploaded-file-html.php:14
1241
  msgid "remove"
1242
  msgstr ""
1243
 
1301
  "be enabled in order to view listings."
1302
  msgstr ""
1303
 
1304
+ #: templates/job-preview.php:3
1305
+ msgid "Submit Listing"
1306
+ msgstr ""
1307
+
1308
+ #: templates/job-preview.php:4
1309
+ msgid "Edit listing"
1310
+ msgstr ""
1311
+
1312
  #: templates/job-submit.php:35
1313
  msgid "Company Details"
1314
  msgstr ""
1378
  msgid "Application via \"%s\" listing on %s"
1379
  msgstr ""
1380
 
1381
+ #: wp-job-manager-template.php:285
1382
  msgid "Anywhere"
1383
  msgstr ""
1384
 
1385
+ #: wp-job-manager.php:146
1386
  msgid "Invalid file type. Accepted types:"
1387
  msgstr ""
1388
 
1389
+ #: wp-job-manager.php:159
1390
  msgid "Load previous listings"
1391
  msgstr ""
1392
 
1393
+ #: wp-job-manager.php:162
1394
  msgid "Are you sure you want to delete this listing?"
1395
  msgstr ""
1396
 
1398
  msgid "WP Job Manager"
1399
  msgstr ""
1400
 
1401
+ #. #-#-#-#-# WP-Job-Manager.pot (WP Job Manager 1.24.0) #-#-#-#-#
1402
  #. Plugin URI of the plugin/theme
1403
+ #. #-#-#-#-# WP-Job-Manager.pot (WP Job Manager 1.24.0) #-#-#-#-#
1404
+ #. Author URI of the plugin/theme
1405
  msgid "https://wpjobmanager.com/"
1406
  msgstr ""
1407
 
1412
  msgstr ""
1413
 
1414
  #. Author of the plugin/theme
1415
+ msgid "Automattic"
 
 
 
 
1416
  msgstr ""
readme.txt CHANGED
@@ -1,10 +1,9 @@
1
  === WP Job Manager ===
2
  Contributors: mikejolley, automattic
3
- Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=mike.jolley@me.com&currency_code=&amount=&return=&item_name=Buy+me+a+coffee+for+A+New+Job+Board+Plugin+for+WordPress
4
  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
5
  Requires at least: 4.1
6
  Tested up to: 4.4
7
- Stable tag: 1.23.13
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -63,13 +62,13 @@ You can get the above add-ons and several others at discount with our [Core Add-
63
 
64
  = Contributing and reporting bugs =
65
 
66
- You can contribute code to this plugin via GitHub: [https://github.com/mikejolley/wp-job-manager](https://github.com/mikejolley/wp-job-manager) and localizations via [https://translate.wordpress.org/projects/wp-plugins/wp-job-manager](https://translate.wordpress.org/projects/wp-plugins/wp-job-manager)
67
 
68
  Thanks to all of our contributors.
69
 
70
  = Support =
71
 
72
- Use the WordPress.org forums for community support where we try to help all users. If you spot a bug, you can log it (or fix it) on [Github](https://github.com/mikejolley/wp-job-manager) where we can act upon them more efficiently.
73
 
74
  If you need help with one of our add-ons, [please raise a ticket in our help desk](https://wpjobmanager.com/support/).
75
 
@@ -142,6 +141,16 @@ You can view (and contribute) translations via the [translate.wordpress.org](htt
142
 
143
  == Changelog ==
144
 
 
 
 
 
 
 
 
 
 
 
145
  = 1.23.13 =
146
  * Fix - Conflict between the_job_location() and the regions plugin.
147
  * Tweak - Allow some HTML in the_job_location - uses wp_kses_post.
1
  === WP Job Manager ===
2
  Contributors: mikejolley, automattic
 
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.1
5
  Tested up to: 4.4
6
+ Stable tag: 1.24.0
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
62
 
63
  = Contributing and reporting bugs =
64
 
65
+ You can contribute code to this plugin via GitHub: [https://github.com/mikejolley/wp-job-manager](https://github.com/Automattic/WP-Job-Manager) and localizations via [https://translate.wordpress.org/projects/wp-plugins/wp-job-manager](https://translate.wordpress.org/projects/wp-plugins/wp-job-manager)
66
 
67
  Thanks to all of our contributors.
68
 
69
  = Support =
70
 
71
+ Use the WordPress.org forums for community support where we try to help all users. If you spot a bug, you can log it (or fix it) on [Github](https://github.com/Automattic/WP-Job-Manager) where we can act upon them more efficiently.
72
 
73
  If you need help with one of our add-ons, [please raise a ticket in our help desk](https://wpjobmanager.com/support/).
74
 
141
 
142
  == Changelog ==
143
 
144
+ = 1.24.0 =
145
+ * Feature - Use featured images to store company logos.
146
+ * Feature - Search term names for keywords.
147
+ * Feature - Search custom fields in backend job listing search.
148
+ * Tweak - Allow job expiry field to be localised.
149
+ * Fix - The above change avoids creation of duplicate images in media library.
150
+ * Dev - Added methods to WP_Job_Manager_Form; get_steps, get_step_key, set_step.
151
+ * Dev - Made WP_Job_Manager_Form call the next 'handler' if no view is defined for the next step.
152
+ * Dev - Added template to control job preview form.
153
+
154
  = 1.23.13 =
155
  * Fix - Conflict between the_job_location() and the regions plugin.
156
  * Tweak - Allow some HTML in the_job_location - uses wp_kses_post.
templates/content-summary-job_listing.php CHANGED
@@ -4,7 +4,7 @@
4
  <div class="job-type <?php echo get_the_job_type() ? sanitize_title( get_the_job_type()->slug ) : ''; ?>"><?php the_job_type(); ?></div>
5
 
6
  <?php if ( $logo = get_the_company_logo() ) : ?>
7
- <img src="<?php echo $logo; ?>" alt="<?php the_company_name(); ?>" title="<?php the_company_name(); ?> - <?php the_company_tagline(); ?>" />
8
  <?php endif; ?>
9
 
10
  <div class="job_summary_content">
@@ -14,4 +14,4 @@
14
  <p class="meta"><?php the_job_location( false ); ?> &mdash; <date><?php printf( __( 'Posted %s ago', 'wp-job-manager' ), human_time_diff( get_post_time( 'U' ), current_time( 'timestamp' ) ) ); ?></date></p>
15
 
16
  </div>
17
- </a>
4
  <div class="job-type <?php echo get_the_job_type() ? sanitize_title( get_the_job_type()->slug ) : ''; ?>"><?php the_job_type(); ?></div>
5
 
6
  <?php if ( $logo = get_the_company_logo() ) : ?>
7
+ <img src="<?php echo esc_attr( $logo ); ?>" alt="<?php the_company_name(); ?>" title="<?php the_company_name(); ?> - <?php the_company_tagline(); ?>" />
8
  <?php endif; ?>
9
 
10
  <div class="job_summary_content">
14
  <p class="meta"><?php the_job_location( false ); ?> &mdash; <date><?php printf( __( 'Posted %s ago', 'wp-job-manager' ), human_time_diff( get_post_time( 'U' ), current_time( 'timestamp' ) ) ); ?></date></p>
15
 
16
  </div>
17
+ </a>
templates/form-fields/uploaded-file-html.php CHANGED
@@ -1,12 +1,18 @@
1
  <div class="job-manager-uploaded-file">
2
  <?php
3
- $extension = ! empty( $extension ) ? $extension : substr( strrchr( $value, '.' ), 1 );
 
 
 
 
 
 
4
 
5
  if ( 3 !== strlen( $extension ) || in_array( $extension, array( 'jpg', 'gif', 'png', 'jpeg', 'jpe' ) ) ) : ?>
6
- <span class="job-manager-uploaded-file-preview"><img src="<?php echo esc_url( $value ); ?>" /> <a class="job-manager-remove-uploaded-file" href="#">[<?php _e( 'remove', 'wp-job-manager' ); ?>]</a></span>
7
  <?php else : ?>
8
- <span class="job-manager-uploaded-file-name"><code><?php echo esc_html( basename( $value ) ); ?></code> <a class="job-manager-remove-uploaded-file" href="#">[<?php _e( 'remove', 'wp-job-manager' ); ?>]</a></span>
9
  <?php endif; ?>
10
 
11
  <input type="hidden" class="input-text" name="<?php echo esc_attr( $name ); ?>" value="<?php echo esc_attr( $value ); ?>" />
12
- </div>
1
  <div class="job-manager-uploaded-file">
2
  <?php
3
+ if ( is_numeric( $value ) ) {
4
+ $image_src = wp_get_attachment_image_src( absint( $value ) );
5
+ $image_src = $image_src ? $image_src[0] : '';
6
+ } else {
7
+ $image_src = $value;
8
+ }
9
+ $extension = ! empty( $extension ) ? $extension : substr( strrchr( $image_src, '.' ), 1 );
10
 
11
  if ( 3 !== strlen( $extension ) || in_array( $extension, array( 'jpg', 'gif', 'png', 'jpeg', 'jpe' ) ) ) : ?>
12
+ <span class="job-manager-uploaded-file-preview"><img src="<?php echo esc_url( $image_src ); ?>" /> <a class="job-manager-remove-uploaded-file" href="#">[<?php _e( 'remove', 'wp-job-manager' ); ?>]</a></span>
13
  <?php else : ?>
14
+ <span class="job-manager-uploaded-file-name"><code><?php echo esc_html( basename( $image_src ) ); ?></code> <a class="job-manager-remove-uploaded-file" href="#">[<?php _e( 'remove', 'wp-job-manager' ); ?>]</a></span>
15
  <?php endif; ?>
16
 
17
  <input type="hidden" class="input-text" name="<?php echo esc_attr( $name ); ?>" value="<?php echo esc_attr( $value ); ?>" />
18
+ </div>
templates/job-preview.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <form method="post" id="job_preview" action="<?php echo esc_url( $form->get_action() ); ?>">
2
+ <div class="job_listing_preview_title">
3
+ <input type="submit" name="continue" id="job_preview_submit_button" class="button job-manager-button-submit-listing" value="<?php echo apply_filters( 'submit_job_step_preview_submit_text', __( 'Submit Listing', 'wp-job-manager' ) ); ?>" />
4
+ <input type="submit" name="edit_job" class="button job-manager-button-edit-listing" value="<?php _e( 'Edit listing', 'wp-job-manager' ); ?>" />
5
+ <h2><?php _e( 'Preview', 'wp-job-manager' ); ?></h2>
6
+ </div>
7
+ <div class="job_listing_preview single_job_listing">
8
+ <h1><?php the_title(); ?></h1>
9
+
10
+ <?php get_job_manager_template_part( 'content-single', 'job_listing' ); ?>
11
+
12
+ <input type="hidden" name="job_id" value="<?php echo esc_attr( $form->get_job_id() ); ?>" />
13
+ <input type="hidden" name="step" value="<?php echo esc_attr( $form->get_step() ); ?>" />
14
+ <input type="hidden" name="job_manager_form" value="<?php echo $form->get_form_name(); ?>" />
15
+ </div>
16
+ </form>
wp-job-manager-functions.php CHANGED
@@ -156,6 +156,7 @@ if ( ! function_exists( 'get_job_listings_keyword_search' ) ) :
156
  $conditions = array();
157
  $conditions[] = "{$wpdb->posts}.post_title LIKE '%" . esc_sql( $job_manager_keyword ) . "%'";
158
  $conditions[] = "{$wpdb->posts}.ID IN ( SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value LIKE '%" . esc_sql( $job_manager_keyword ) . "%' )";
 
159
 
160
  if ( ctype_alnum( $job_manager_keyword ) ) {
161
  $conditions[] = "{$wpdb->posts}.post_content RLIKE '[[:<:]]" . esc_sql( $job_manager_keyword ) . "[[:>:]]'";
156
  $conditions = array();
157
  $conditions[] = "{$wpdb->posts}.post_title LIKE '%" . esc_sql( $job_manager_keyword ) . "%'";
158
  $conditions[] = "{$wpdb->posts}.ID IN ( SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value LIKE '%" . esc_sql( $job_manager_keyword ) . "%' )";
159
+ $conditions[] = "{$wpdb->posts}.ID IN ( SELECT object_id FROM {$wpdb->term_relationships} AS tr LEFT JOIN {$wpdb->terms} AS t ON tr.term_taxonomy_id = t.term_id WHERE t.name LIKE '%" . esc_sql( $job_manager_keyword ) . "%' )";
160
 
161
  if ( ctype_alnum( $job_manager_keyword ) ) {
162
  $conditions[] = "{$wpdb->posts}.post_content RLIKE '[[:<:]]" . esc_sql( $job_manager_keyword ) . "[[:>:]]'";
wp-job-manager-template.php CHANGED
@@ -310,17 +310,18 @@ function get_the_job_location( $post = null ) {
310
  * @param mixed $default (default: null)
311
  * @return void
312
  */
313
- function the_company_logo( $size = 'full', $default = null, $post = null ) {
314
  $logo = get_the_company_logo( $post );
315
 
316
- if ( ! empty( $logo ) && ( strstr( $logo, 'http' ) || file_exists( $logo ) ) ) {
 
317
 
 
 
318
  if ( $size !== 'full' ) {
319
  $logo = job_manager_get_resized_image( $logo, $size );
320
  }
321
-
322
  echo '<img class="company_logo" src="' . esc_attr( $logo ) . '" alt="' . esc_attr( get_the_company_name( $post ) ) . '" />';
323
-
324
  } elseif ( $default ) {
325
  echo '<img class="company_logo" src="' . esc_attr( $default ) . '" alt="' . esc_attr( get_the_company_name( $post ) ) . '" />';
326
  } else {
@@ -333,14 +334,20 @@ function the_company_logo( $size = 'full', $default = null, $post = null ) {
333
  *
334
  * @access public
335
  * @param mixed $post (default: null)
336
- * @return string
337
  */
338
- function get_the_company_logo( $post = null ) {
339
  $post = get_post( $post );
340
- if ( $post->post_type !== 'job_listing' )
341
- return;
342
 
343
- return apply_filters( 'the_company_logo', $post->_company_logo, $post );
 
 
 
 
 
 
 
 
344
  }
345
 
346
  /**
310
  * @param mixed $default (default: null)
311
  * @return void
312
  */
313
+ function the_company_logo( $size = 'thumbnail', $default = null, $post = null ) {
314
  $logo = get_the_company_logo( $post );
315
 
316
+ if ( has_post_thumbnail( $post ) ) {
317
+ echo '<img class="company_logo" src="' . esc_attr( $logo ) . '" alt="' . esc_attr( get_the_company_name( $post ) ) . '" />';
318
 
319
+ // Before 1.24.0, logo URLs were stored in post meta.
320
+ } elseif ( ! empty( $logo ) && ( strstr( $logo, 'http' ) || file_exists( $logo ) ) ) {
321
  if ( $size !== 'full' ) {
322
  $logo = job_manager_get_resized_image( $logo, $size );
323
  }
 
324
  echo '<img class="company_logo" src="' . esc_attr( $logo ) . '" alt="' . esc_attr( get_the_company_name( $post ) ) . '" />';
 
325
  } elseif ( $default ) {
326
  echo '<img class="company_logo" src="' . esc_attr( $default ) . '" alt="' . esc_attr( get_the_company_name( $post ) ) . '" />';
327
  } else {
334
  *
335
  * @access public
336
  * @param mixed $post (default: null)
337
+ * @return string Image SRC
338
  */
339
+ function get_the_company_logo( $post = null, $size = 'thumbnail' ) {
340
  $post = get_post( $post );
 
 
341
 
342
+ if ( has_post_thumbnail( $post->ID ) ) {
343
+ $src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), $size );
344
+ return $src ? $src[0] : '';
345
+ } elseif ( ! empty( $post->_company_logo ) ) {
346
+ // Before 1.24.0, logo URLs were stored in post meta.
347
+ return apply_filters( 'the_company_logo', $post->_company_logo, $post );
348
+ }
349
+
350
+ return '';
351
  }
352
 
353
  /**
wp-job-manager.php CHANGED
@@ -1,22 +1,17 @@
1
  <?php
2
- /*
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.23.13
7
- Author: Mike Jolley
8
- Author URI: http://mikejolley.com
9
- Requires at least: 4.1
10
- Tested up to: 4.4
11
- Text Domain: wp-job-manager
12
- Domain Path: /languages/
13
-
14
- Copyright: 2015 Mike Jolley
15
- License: GNU General Public License v3.0
16
- License URI: http://www.gnu.org/licenses/gpl-3.0.html
17
- */
18
-
19
- // Exit if accessed directly
20
  if ( ! defined( 'ABSPATH' ) ) {
21
  exit;
22
  }
@@ -31,7 +26,7 @@ class WP_Job_Manager {
31
  */
32
  public function __construct() {
33
  // Define constants
34
- define( 'JOB_MANAGER_VERSION', '1.23.13' );
35
  define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
36
  define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
37
 
1
  <?php
2
+ /**
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.24.0
7
+ * Author: Automattic
8
+ * Author URI: https://wpjobmanager.com/
9
+ * Requires at least: 4.1
10
+ * Tested up to: 4.4
11
+ * Text Domain: wp-job-manager
12
+ * Domain Path: /languages/
13
+ * License: GPL2+
14
+ */
 
 
 
 
 
15
  if ( ! defined( 'ABSPATH' ) ) {
16
  exit;
17
  }
26
  */
27
  public function __construct() {
28
  // Define constants
29
+ define( 'JOB_MANAGER_VERSION', '1.24.0' );
30
  define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
31
  define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
32