WP Job Manager - Version 1.23.12

Version Description

  • Fix - Transient clear query.
  • Tweak - New user notification pluggable function.
  • Tweak - Use subquery in keyword search to avoid long queries.
  • Tweak - Only search for keywords of 2 or more characters.
  • Tweak - job_manager_get_listings_keyword_length_threshold filter.
  • Tweak - PolyLang compatibility functions.
  • Tweak - Unattach company logo when a new attachment is uploaded.
Download this release

Release Info

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

Code changes from version 1.23.11 to 1.23.12

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'}.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-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
@@ -479,6 +479,9 @@ ul.job_listings {
479
  content: '\e80e';
480
  }
481
  }
 
 
 
482
  }
483
  .job-manager-application-wrapper {
484
  clear: both;
479
  content: '\e80e';
480
  }
481
  }
482
+ .job_description {
483
+ margin: 0 0 1.5em;
484
+ }
485
  }
486
  .job-manager-application-wrapper {
487
  clear: both;
includes/admin/class-wp-job-manager-cpt.php CHANGED
@@ -292,7 +292,7 @@ class WP_Job_Manager_CPT {
292
  echo '<div class="company">';
293
 
294
  if ( get_the_company_website() ) {
295
- the_company_name( '<span class="tips" data-tip="' . esc_attr( get_the_company_tagline() ) . '"><a href="' . get_the_company_website() . '">', '</a></span>' );
296
  } else {
297
  the_company_name( '<span class="tips" data-tip="' . esc_attr( get_the_company_tagline() ) . '">', '</span>' );
298
  }
@@ -458,4 +458,4 @@ class WP_Job_Manager_CPT {
458
  }
459
  }
460
 
461
- new WP_Job_Manager_CPT();
292
  echo '<div class="company">';
293
 
294
  if ( get_the_company_website() ) {
295
+ the_company_name( '<span class="tips" data-tip="' . esc_attr( get_the_company_tagline() ) . '"><a href="' . esc_url( get_the_company_website() ) . '">', '</a></span>' );
296
  } else {
297
  the_company_name( '<span class="tips" data-tip="' . esc_attr( get_the_company_tagline() ) . '">', '</span>' );
298
  }
458
  }
459
  }
460
 
461
+ new WP_Job_Manager_CPT();
includes/admin/class-wp-job-manager-settings.php CHANGED
@@ -329,16 +329,21 @@ class WP_Job_Manager_Settings {
329
  }
330
 
331
  break;
 
 
 
 
 
 
 
332
  case "" :
333
  case "input" :
334
  case "text" :
335
-
336
  ?><input id="setting-<?php echo $option['name']; ?>" class="regular-text" type="text" name="<?php echo $option['name']; ?>" value="<?php esc_attr_e( $value ); ?>" <?php echo implode( ' ', $attributes ); ?> <?php echo $placeholder; ?> /><?php
337
 
338
  if ( $option['desc'] ) {
339
  echo ' <p class="description">' . $option['desc'] . '</p>';
340
  }
341
-
342
  break;
343
  default :
344
  do_action( 'wp_job_manager_admin_field_' . $option['type'], $option, $attributes, $value, $placeholder );
329
  }
330
 
331
  break;
332
+ case "number" :
333
+ ?><input id="setting-<?php echo $option['name']; ?>" class="regular-text" type="number" name="<?php echo $option['name']; ?>" value="<?php esc_attr_e( $value ); ?>" <?php echo implode( ' ', $attributes ); ?> <?php echo $placeholder; ?> /><?php
334
+
335
+ if ( $option['desc'] ) {
336
+ echo ' <p class="description">' . $option['desc'] . '</p>';
337
+ }
338
+ break;
339
  case "" :
340
  case "input" :
341
  case "text" :
 
342
  ?><input id="setting-<?php echo $option['name']; ?>" class="regular-text" type="text" name="<?php echo $option['name']; ?>" value="<?php esc_attr_e( $value ); ?>" <?php echo implode( ' ', $attributes ); ?> <?php echo $placeholder; ?> /><?php
343
 
344
  if ( $option['desc'] ) {
345
  echo ' <p class="description">' . $option['desc'] . '</p>';
346
  }
 
347
  break;
348
  default :
349
  do_action( 'wp_job_manager_admin_field_' . $option['type'], $option, $attributes, $value, $placeholder );
includes/class-wp-job-manager-cache-helper.php CHANGED
@@ -98,19 +98,13 @@ class WP_Job_Manager_Cache_Helper {
98
  global $wpdb;
99
 
100
  if ( ! wp_using_ext_object_cache() && ! defined( 'WP_SETUP_CONFIG' ) && ! defined( 'WP_INSTALLING' ) ) {
101
- $limit = apply_filters( 'job_manager_clear_expired_transients_limit', 500 );
102
- $sql = "DELETE a, b FROM $wpdb->options a, $wpdb->options b
103
  WHERE a.option_name LIKE %s
104
  AND a.option_name NOT LIKE %s
105
  AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )
106
- AND b.option_value < %d
107
- LIMIT %d;";
108
- $affected = $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( '_transient_jm_' ) . '%', $wpdb->esc_like( '_transient_timeout_jm_' ) . '%', time(), $limit ) );
109
-
110
- // If affected rows is equal to limit, there are more rows to delete. Delete in 10 secs.
111
- if ( $affected === $limit ) {
112
- wp_schedule_single_event( time() + 10, 'job_manager_clear_expired_transients' );
113
- }
114
  }
115
  }
116
  }
98
  global $wpdb;
99
 
100
  if ( ! wp_using_ext_object_cache() && ! defined( 'WP_SETUP_CONFIG' ) && ! defined( 'WP_INSTALLING' ) ) {
101
+ $sql = "
102
+ DELETE a, b FROM $wpdb->options a, $wpdb->options b
103
  WHERE a.option_name LIKE %s
104
  AND a.option_name NOT LIKE %s
105
  AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )
106
+ AND b.option_value < %s;";
107
+ $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( '_transient_jm_' ) . '%', $wpdb->esc_like( '_transient_timeout_jm_' ) . '%', time() ) );
 
 
 
 
 
 
108
  }
109
  }
110
  }
includes/class-wp-job-manager-post-types.php CHANGED
@@ -10,7 +10,6 @@ class WP_Job_Manager_Post_Types {
10
  public function __construct() {
11
  add_action( 'init', array( $this, 'register_post_types' ), 0 );
12
  add_filter( 'admin_head', array( $this, 'admin_head' ) );
13
- add_filter( 'the_content', array( $this, 'job_content' ) );
14
  add_action( 'job_manager_check_for_expired_jobs', array( $this, 'check_for_expired_jobs' ) );
15
  add_action( 'job_manager_delete_old_previews', array( $this, 'delete_old_previews' ) );
16
 
@@ -32,8 +31,7 @@ class WP_Job_Manager_Post_Types {
32
 
33
  add_filter( 'wp_insert_post_data', array( $this, 'fix_post_name' ), 10, 2 );
34
  add_action( 'add_post_meta', array( $this, 'maybe_add_geolocation_data' ), 10, 3 );
35
- add_action( 'update_post_meta', array( $this, 'maybe_update_geolocation_data' ), 10, 4 );
36
- add_action( 'update_post_meta', array( $this, 'maybe_update_menu_order' ), 10, 4 );
37
  add_action( 'wp_insert_post', array( $this, 'maybe_add_default_meta_data' ), 10, 2 );
38
 
39
  add_action( 'before_delete_post', array( $this, 'before_delete_job' ) );
@@ -45,6 +43,9 @@ class WP_Job_Manager_Post_Types {
45
  add_filter( 'rp4wp_get_template', array( $this, 'rp4wp_template' ), 10, 3 );
46
  add_filter( 'rp4wp_related_meta_fields', array( $this, 'rp4wp_related_meta_fields' ), 10, 3 );
47
  add_filter( 'rp4wp_related_meta_fields_weight', array( $this, 'rp4wp_related_meta_fields_weight' ), 10, 3 );
 
 
 
48
  }
49
 
50
  /**
@@ -219,8 +220,9 @@ class WP_Job_Manager_Post_Types {
219
  */
220
  register_post_status( 'expired', array(
221
  'label' => _x( 'Expired', 'post status', 'wp-job-manager' ),
222
- 'public' => true,
223
- 'exclude_from_search' => false,
 
224
  'show_in_admin_all_list' => true,
225
  'show_in_admin_status_list' => true,
226
  'label_count' => _n_noop( 'Expired <span class="count">(%s)</span>', 'Expired <span class="count">(%s)</span>', 'wp-job-manager' ),
@@ -257,32 +259,39 @@ class WP_Job_Manager_Post_Types {
257
  }
258
 
259
  /**
260
- * Add extra content when showing job content
 
 
 
 
 
 
 
 
 
 
 
261
  */
262
  public function job_content( $content ) {
263
  global $post;
264
 
265
- if ( ! is_singular( 'job_listing' ) || ! in_the_loop() ) {
266
  return $content;
267
  }
268
 
269
- remove_filter( 'the_content', array( $this, 'job_content' ) );
270
 
271
- if ( 'job_listing' === $post->post_type ) {
272
- ob_start();
273
-
274
- do_action( 'job_content_start' );
275
 
276
- get_job_manager_template_part( 'content-single', 'job_listing' );
277
 
278
- do_action( 'job_content_end' );
279
 
280
- $content = ob_get_clean();
281
- }
282
 
283
- add_filter( 'the_content', array( $this, 'job_content' ) );
284
 
285
- return apply_filters( 'job_manager_single_job_content', $content, $post );
286
  }
287
 
288
  /**
@@ -515,33 +524,46 @@ class WP_Job_Manager_Post_Types {
515
  * @param int $post_id
516
  * @param array $post
517
  */
518
- public function maybe_add_geolocation_data( $object_id, $meta_key, $_meta_value ) {
519
  if ( '_job_location' !== $meta_key || 'job_listing' !== get_post_type( $object_id ) ) {
520
  return;
521
  }
522
- do_action( 'job_manager_job_location_edited', $object_id, $_meta_value );
523
  }
524
 
525
  /**
526
- * Generate location data if a post is updated
527
  */
528
- public function maybe_update_geolocation_data( $meta_id, $object_id, $meta_key, $_meta_value ) {
529
- if ( '_job_location' !== $meta_key || 'job_listing' !== get_post_type( $object_id ) ) {
530
- return;
 
 
 
 
 
 
 
 
 
 
531
  }
532
- do_action( 'job_manager_job_location_edited', $object_id, $_meta_value );
 
 
 
 
 
 
533
  }
534
 
535
  /**
536
  * Maybe set menu_order if the featured status of a job is changed
537
  */
538
- public function maybe_update_menu_order( $meta_id, $object_id, $meta_key, $_meta_value ) {
539
- if ( '_featured' !== $meta_key || 'job_listing' !== get_post_type( $object_id ) ) {
540
- return;
541
- }
542
  global $wpdb;
543
 
544
- if ( '1' == $_meta_value ) {
545
  $wpdb->update( $wpdb->posts, array( 'menu_order' => -1 ), array( 'ID' => $object_id ) );
546
  } else {
547
  $wpdb->update( $wpdb->posts, array( 'menu_order' => 0 ), array( 'ID' => $object_id, 'menu_order' => -1 ) );
@@ -550,12 +572,42 @@ class WP_Job_Manager_Post_Types {
550
  clean_post_cache( $object_id );
551
  }
552
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
553
  /**
554
  * Legacy
555
  * @deprecated 1.19.1
556
  */
557
- public function maybe_generate_geolocation_data( $meta_id, $object_id, $meta_key, $_meta_value ) {
558
- $this->maybe_update_geolocation_data( $meta_id, $object_id, $meta_key, $_meta_value );
559
  }
560
 
561
  /**
10
  public function __construct() {
11
  add_action( 'init', array( $this, 'register_post_types' ), 0 );
12
  add_filter( 'admin_head', array( $this, 'admin_head' ) );
 
13
  add_action( 'job_manager_check_for_expired_jobs', array( $this, 'check_for_expired_jobs' ) );
14
  add_action( 'job_manager_delete_old_previews', array( $this, 'delete_old_previews' ) );
15
 
31
 
32
  add_filter( 'wp_insert_post_data', array( $this, 'fix_post_name' ), 10, 2 );
33
  add_action( 'add_post_meta', array( $this, 'maybe_add_geolocation_data' ), 10, 3 );
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' ) );
43
  add_filter( 'rp4wp_get_template', array( $this, 'rp4wp_template' ), 10, 3 );
44
  add_filter( 'rp4wp_related_meta_fields', array( $this, 'rp4wp_related_meta_fields' ), 10, 3 );
45
  add_filter( 'rp4wp_related_meta_fields_weight', array( $this, 'rp4wp_related_meta_fields_weight' ), 10, 3 );
46
+
47
+ // Single job content
48
+ $this->job_content_filter( true );
49
  }
50
 
51
  /**
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,
227
  'show_in_admin_status_list' => true,
228
  'label_count' => _n_noop( 'Expired <span class="count">(%s)</span>', 'Expired <span class="count">(%s)</span>', 'wp-job-manager' ),
259
  }
260
 
261
  /**
262
+ * Toggle filter on and off
263
+ */
264
+ private function job_content_filter( $enable ) {
265
+ if ( ! $enable ) {
266
+ remove_filter( 'the_content', array( $this, 'job_content' ) );
267
+ } else {
268
+ add_filter( 'the_content', array( $this, 'job_content' ) );
269
+ }
270
+ }
271
+
272
+ /**
273
+ * Add extra content before/after the post for single job listings.
274
  */
275
  public function job_content( $content ) {
276
  global $post;
277
 
278
+ if ( ! is_singular( 'job_listing' ) || ! in_the_loop() || 'job_listing' !== $post->post_type ) {
279
  return $content;
280
  }
281
 
282
+ ob_start();
283
 
284
+ $this->job_content_filter( false );
 
 
 
285
 
286
+ do_action( 'job_content_start' );
287
 
288
+ get_job_manager_template_part( 'content-single', 'job_listing' );
289
 
290
+ do_action( 'job_content_end' );
 
291
 
292
+ $this->job_content_filter( true );
293
 
294
+ return apply_filters( 'job_manager_single_job_content', ob_get_clean(), $post );
295
  }
296
 
297
  /**
524
  * @param int $post_id
525
  * @param array $post
526
  */
527
+ public function maybe_add_geolocation_data( $object_id, $meta_key, $meta_value ) {
528
  if ( '_job_location' !== $meta_key || 'job_listing' !== get_post_type( $object_id ) ) {
529
  return;
530
  }
531
+ do_action( 'job_manager_job_location_edited', $object_id, $meta_value );
532
  }
533
 
534
  /**
535
+ * Triggered when updating meta on a job listing
536
  */
537
+ public function update_post_meta( $meta_id, $object_id, $meta_key, $meta_value ) {
538
+ if ( 'job_listing' === get_post_type( $object_id ) ) {
539
+ switch ( $meta_key ) {
540
+ case '_job_location' :
541
+ $this->maybe_update_geolocation_data( $meta_id, $object_id, $meta_key, $meta_value );
542
+ break;
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
+ }
552
+
553
+ /**
554
+ * Generate location data if a post is updated
555
+ */
556
+ public function maybe_update_geolocation_data( $meta_id, $object_id, $meta_key, $meta_value ) {
557
+ do_action( 'job_manager_job_location_edited', $object_id, $meta_value );
558
  }
559
 
560
  /**
561
  * Maybe set menu_order if the featured status of a job is changed
562
  */
563
+ public function maybe_update_menu_order( $meta_id, $object_id, $meta_key, $meta_value ) {
 
 
 
564
  global $wpdb;
565
 
566
+ if ( '1' == $meta_value ) {
567
  $wpdb->update( $wpdb->posts, array( 'menu_order' => -1 ), array( 'ID' => $object_id ) );
568
  } else {
569
  $wpdb->update( $wpdb->posts, array( 'menu_order' => 0 ), array( 'ID' => $object_id, 'menu_order' => -1 ) );
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
608
  */
609
+ public function maybe_generate_geolocation_data( $meta_id, $object_id, $meta_key, $meta_value ) {
610
+ $this->maybe_update_geolocation_data( $meta_id, $object_id, $meta_key, $meta_value );
611
  }
612
 
613
  /**
includes/class-wp-job-manager-shortcodes.php CHANGED
@@ -162,7 +162,7 @@ class WP_Job_Manager_Shortcodes {
162
  'job_title' => __( 'Title', 'wp-job-manager' ),
163
  'filled' => __( 'Filled?', 'wp-job-manager' ),
164
  'date' => __( 'Date Posted', 'wp-job-manager' ),
165
- 'expires' => __( 'Date Expires', 'wp-job-manager' )
166
  ) );
167
 
168
  get_job_manager_template( 'job-dashboard.php', array( 'jobs' => $jobs->query( $args ), 'max_num_pages' => $jobs->max_num_pages, 'job_dashboard_columns' => $job_dashboard_columns ) );
@@ -490,14 +490,20 @@ class WP_Job_Manager_Shortcodes {
490
 
491
  if ( $jobs->have_posts() ) : ?>
492
 
493
- <?php while ( $jobs->have_posts() ) : $jobs->the_post(); ?>
 
 
 
494
 
495
- <div class="job-manager-application-wrapper">
496
- <?php
497
- $apply = get_the_job_application_method();
498
- do_action( 'job_manager_application_details_' . $apply->type, $apply );
499
- ?>
500
- </div>
 
 
 
501
 
502
  <?php endwhile; ?>
503
 
@@ -509,4 +515,4 @@ class WP_Job_Manager_Shortcodes {
509
  }
510
  }
511
 
512
- new WP_Job_Manager_Shortcodes();
162
  'job_title' => __( 'Title', 'wp-job-manager' ),
163
  'filled' => __( 'Filled?', 'wp-job-manager' ),
164
  'date' => __( 'Date Posted', 'wp-job-manager' ),
165
+ 'expires' => __( 'Listing Expires', 'wp-job-manager' )
166
  ) );
167
 
168
  get_job_manager_template( 'job-dashboard.php', array( 'jobs' => $jobs->query( $args ), 'max_num_pages' => $jobs->max_num_pages, 'job_dashboard_columns' => $job_dashboard_columns ) );
490
 
491
  if ( $jobs->have_posts() ) : ?>
492
 
493
+ <?php while ( $jobs->have_posts() ) :
494
+ $jobs->the_post();
495
+ $apply = get_the_job_application_method();
496
+ ?>
497
 
498
+ <?php do_action( 'job_manager_before_job_apply_' . absint( $id ) ); ?>
499
+
500
+ <?php if ( apply_filters( 'job_manager_show_job_apply_' . absint( $id ), true ) ) : ?>
501
+ <div class="job-manager-application-wrapper">
502
+ <?php do_action( 'job_manager_application_details_' . $apply->type, $apply ); ?>
503
+ </div>
504
+ <?php endif; ?>
505
+
506
+ <?php do_action( 'job_manager_after_job_apply_' . absint( $id ) ); ?>
507
 
508
  <?php endwhile; ?>
509
 
515
  }
516
  }
517
 
518
+ new WP_Job_Manager_Shortcodes();
includes/forms/class-wp-job-manager-form-submit-job.php CHANGED
@@ -241,7 +241,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
241
  if ( is_array( $values[ $group_key ][ $key ] ) ) {
242
  $check_value = $values[ $group_key ][ $key ];
243
  } else {
244
- $check_value = array( $values[ $group_key ][ $key ] );
245
  }
246
  foreach ( $check_value as $term ) {
247
  if ( ! term_exists( $term, $field['taxonomy'] ) ) {
@@ -661,6 +661,8 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
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
  wp_update_post( $update_job );
665
  }
666
 
241
  if ( is_array( $values[ $group_key ][ $key ] ) ) {
242
  $check_value = $values[ $group_key ][ $key ];
243
  } else {
244
+ $check_value = empty( $values[ $group_key ][ $key ] ) ? array() : array( $values[ $group_key ][ $key ] );
245
  }
246
  foreach ( $check_value as $term ) {
247
  if ( ! term_exists( $term, $field['taxonomy'] ) ) {
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();
665
+
666
  wp_update_post( $update_job );
667
  }
668
 
languages/wp-job-manager.pot CHANGED
@@ -2,9 +2,9 @@
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.11\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/WP-Job-Manager\n"
7
- "POT-Creation-Date: 2015-11-05 12:42:49+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -176,7 +176,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:186
180
  #: templates/job-dashboard.php:33 templates/job-dashboard.php:49
181
  msgid "Edit"
182
  msgstr ""
@@ -187,8 +187,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:182
191
- #: includes/class-wp-job-manager-post-types.php:244
192
  msgid "Job Listings"
193
  msgstr ""
194
 
@@ -420,7 +420,7 @@ msgstr ""
420
  msgid "Select a page&hellip;"
421
  msgstr ""
422
 
423
- #: includes/admin/class-wp-job-manager-settings.php:357
424
  msgid "Save Changes"
425
  msgstr ""
426
 
@@ -769,144 +769,144 @@ msgstr ""
769
  msgid "Employer"
770
  msgstr ""
771
 
772
- #: includes/class-wp-job-manager-post-types.php:66
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:67
778
  msgid "Job categories"
779
  msgstr ""
780
 
781
- #: includes/class-wp-job-manager-post-types.php:71
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:91
787
- #: includes/class-wp-job-manager-post-types.php:137
788
- #: includes/class-wp-job-manager-post-types.php:191
789
  msgid "Search %s"
790
  msgstr ""
791
 
792
- #: includes/class-wp-job-manager-post-types.php:92
793
- #: includes/class-wp-job-manager-post-types.php:138
794
- #: includes/class-wp-job-manager-post-types.php:183
795
  msgid "All %s"
796
  msgstr ""
797
 
798
- #: includes/class-wp-job-manager-post-types.php:93
799
- #: includes/class-wp-job-manager-post-types.php:139
800
- #: includes/class-wp-job-manager-post-types.php:194
801
  msgid "Parent %s"
802
  msgstr ""
803
 
804
- #: includes/class-wp-job-manager-post-types.php:94
805
- #: includes/class-wp-job-manager-post-types.php:140
806
  msgid "Parent %s:"
807
  msgstr ""
808
 
809
- #: includes/class-wp-job-manager-post-types.php:95
810
- #: includes/class-wp-job-manager-post-types.php:141
811
- #: includes/class-wp-job-manager-post-types.php:187
812
  msgid "Edit %s"
813
  msgstr ""
814
 
815
- #: includes/class-wp-job-manager-post-types.php:96
816
- #: includes/class-wp-job-manager-post-types.php:142
817
  msgid "Update %s"
818
  msgstr ""
819
 
820
- #: includes/class-wp-job-manager-post-types.php:97
821
- #: includes/class-wp-job-manager-post-types.php:143
822
  msgid "Add New %s"
823
  msgstr ""
824
 
825
- #: includes/class-wp-job-manager-post-types.php:98
826
- #: includes/class-wp-job-manager-post-types.php:144
827
  msgid "New %s Name"
828
  msgstr ""
829
 
830
- #: includes/class-wp-job-manager-post-types.php:113
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:114
836
  msgid "Job types"
837
  msgstr ""
838
 
839
- #: includes/class-wp-job-manager-post-types.php:118
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:161
845
  msgid "Job"
846
  msgstr ""
847
 
848
- #: includes/class-wp-job-manager-post-types.php:162
849
  msgid "Jobs"
850
  msgstr ""
851
 
852
- #: includes/class-wp-job-manager-post-types.php:165
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:171
858
  msgctxt "Job permalink - resave permalinks after changing this"
859
  msgid "job"
860
  msgstr ""
861
 
862
- #: includes/class-wp-job-manager-post-types.php:184
863
  msgid "Add New"
864
  msgstr ""
865
 
866
- #: includes/class-wp-job-manager-post-types.php:185
867
  msgid "Add %s"
868
  msgstr ""
869
 
870
- #: includes/class-wp-job-manager-post-types.php:188
871
  msgid "New %s"
872
  msgstr ""
873
 
874
- #: includes/class-wp-job-manager-post-types.php:189
875
- #: includes/class-wp-job-manager-post-types.php:190
876
  msgid "View %s"
877
  msgstr ""
878
 
879
- #: includes/class-wp-job-manager-post-types.php:192
880
  msgid "No %s found"
881
  msgstr ""
882
 
883
- #: includes/class-wp-job-manager-post-types.php:193
884
  msgid "No %s found in trash"
885
  msgstr ""
886
 
887
- #: includes/class-wp-job-manager-post-types.php:196
888
  msgid "This is where you can create and manage %s."
889
  msgstr ""
890
 
891
- #: includes/class-wp-job-manager-post-types.php:221
892
- #: wp-job-manager-functions.php:196
893
  msgctxt "post status"
894
  msgid "Expired"
895
  msgstr ""
896
 
897
- #: includes/class-wp-job-manager-post-types.php:226
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:229
904
- #: wp-job-manager-functions.php:197
905
  msgctxt "post status"
906
  msgid "Preview"
907
  msgstr ""
908
 
909
- #: includes/class-wp-job-manager-post-types.php:234
910
  msgid "Preview <span class=\"count\">(%s)</span>"
911
  msgid_plural "Preview <span class=\"count\">(%s)</span>"
912
  msgstr[0] ""
@@ -947,7 +947,7 @@ msgid "Date Posted"
947
  msgstr ""
948
 
949
  #: includes/class-wp-job-manager-shortcodes.php:165
950
- msgid "Date Expires"
951
  msgstr ""
952
 
953
  #: includes/class-wp-job-manager-shortcodes.php:260
@@ -1103,7 +1103,7 @@ 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:676
1107
  msgid "\"%s\" (filetype %s) needs to be one of the following file types: %s"
1108
  msgstr ""
1109
 
@@ -1221,12 +1221,12 @@ msgid "Maximum file size: %s."
1221
  msgstr ""
1222
 
1223
  #: templates/form-fields/multiselect-field.php:3
1224
- #: wp-job-manager-functions.php:520
1225
  msgid "No results match"
1226
  msgstr ""
1227
 
1228
  #: templates/form-fields/multiselect-field.php:3
1229
- #: wp-job-manager-functions.php:521
1230
  msgid "Select Some Options"
1231
  msgstr ""
1232
 
@@ -1308,51 +1308,51 @@ msgstr ""
1308
  msgid "%s submitted successfully. Your listing will be visible once approved."
1309
  msgstr ""
1310
 
1311
- #: wp-job-manager-functions.php:195
1312
  msgctxt "post status"
1313
  msgid "Draft"
1314
  msgstr ""
1315
 
1316
- #: wp-job-manager-functions.php:198
1317
  msgctxt "post status"
1318
  msgid "Pending approval"
1319
  msgstr ""
1320
 
1321
- #: wp-job-manager-functions.php:199
1322
  msgctxt "post status"
1323
  msgid "Pending payment"
1324
  msgstr ""
1325
 
1326
- #: wp-job-manager-functions.php:200
1327
  msgctxt "post status"
1328
  msgid "Active"
1329
  msgstr ""
1330
 
1331
- #: wp-job-manager-functions.php:285
1332
  msgid "Reset"
1333
  msgstr ""
1334
 
1335
- #: wp-job-manager-functions.php:289
1336
  msgid "RSS"
1337
  msgstr ""
1338
 
1339
- #: wp-job-manager-functions.php:359
1340
  msgid "Invalid email address."
1341
  msgstr ""
1342
 
1343
- #: wp-job-manager-functions.php:367
1344
  msgid "Your email address isn&#8217;t correct."
1345
  msgstr ""
1346
 
1347
- #: wp-job-manager-functions.php:371
1348
  msgid "This email is already registered, please choose another one."
1349
  msgstr ""
1350
 
1351
- #: wp-job-manager-functions.php:519
1352
  msgid "Choose a category&hellip;"
1353
  msgstr ""
1354
 
1355
- #: wp-job-manager-functions.php:678
1356
  msgid "Uploaded files need to be one of the following file types: %s"
1357
  msgstr ""
1358
 
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"
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
  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
 
420
  msgid "Select a page&hellip;"
421
  msgstr ""
422
 
423
+ #: includes/admin/class-wp-job-manager-settings.php:362
424
  msgid "Save Changes"
425
  msgstr ""
426
 
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] ""
947
  msgstr ""
948
 
949
  #: includes/class-wp-job-manager-shortcodes.php:165
950
+ msgid "Listing Expires"
951
  msgstr ""
952
 
953
  #: includes/class-wp-job-manager-shortcodes.php:260
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
 
1221
  msgstr ""
1222
 
1223
  #: templates/form-fields/multiselect-field.php:3
1224
+ #: wp-job-manager-functions.php:533
1225
  msgid "No results match"
1226
  msgstr ""
1227
 
1228
  #: templates/form-fields/multiselect-field.php:3
1229
+ #: wp-job-manager-functions.php:534
1230
  msgid "Select Some Options"
1231
  msgstr ""
1232
 
1308
  msgid "%s submitted successfully. Your listing will be visible once approved."
1309
  msgstr ""
1310
 
1311
+ #: wp-job-manager-functions.php:196
1312
  msgctxt "post status"
1313
  msgid "Draft"
1314
  msgstr ""
1315
 
1316
+ #: wp-job-manager-functions.php:199
1317
  msgctxt "post status"
1318
  msgid "Pending approval"
1319
  msgstr ""
1320
 
1321
+ #: wp-job-manager-functions.php:200
1322
  msgctxt "post status"
1323
  msgid "Pending payment"
1324
  msgstr ""
1325
 
1326
+ #: wp-job-manager-functions.php:201
1327
  msgctxt "post status"
1328
  msgid "Active"
1329
  msgstr ""
1330
 
1331
+ #: wp-job-manager-functions.php:286
1332
  msgid "Reset"
1333
  msgstr ""
1334
 
1335
+ #: wp-job-manager-functions.php:290
1336
  msgid "RSS"
1337
  msgstr ""
1338
 
1339
+ #: wp-job-manager-functions.php:377
1340
  msgid "Invalid email address."
1341
  msgstr ""
1342
 
1343
+ #: wp-job-manager-functions.php:385
1344
  msgid "Your email address isn&#8217;t correct."
1345
  msgstr ""
1346
 
1347
+ #: wp-job-manager-functions.php:389
1348
  msgid "This email is already registered, please choose another one."
1349
  msgstr ""
1350
 
1351
+ #: wp-job-manager-functions.php:532
1352
  msgid "Choose a category&hellip;"
1353
  msgstr ""
1354
 
1355
+ #: wp-job-manager-functions.php:704
1356
  msgid "Uploaded files need to be one of the following file types: %s"
1357
  msgstr ""
1358
 
readme.txt CHANGED
@@ -3,8 +3,8 @@ 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.3
7
- Stable tag: 1.23.11
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -142,6 +142,15 @@ You can view (and contribute) translations via the [translate.wordpress.org](htt
142
 
143
  == Changelog ==
144
 
 
 
 
 
 
 
 
 
 
145
  = 1.23.11 =
146
  * Fix - Author check in job_manager_user_can_edit_job().
147
  * Tweak - Before deleting a job, delete its attachments.
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.12
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
142
 
143
  == Changelog ==
144
 
145
+ = 1.23.12 =
146
+ * Fix - Transient clear query.
147
+ * Tweak - New user notification pluggable function.
148
+ * Tweak - Use subquery in keyword search to avoid long queries.
149
+ * Tweak - Only search for keywords of 2 or more characters.
150
+ * Tweak - job_manager_get_listings_keyword_length_threshold filter.
151
+ * Tweak - PolyLang compatibility functions.
152
+ * Tweak - Unattach company logo when a new attachment is uploaded.
153
+
154
  = 1.23.11 =
155
  * Fix - Author check in job_manager_user_can_edit_job().
156
  * Tweak - Before deleting a job, delete its attachments.
templates/content-single-job_listing-meta.php CHANGED
@@ -10,7 +10,7 @@ global $post;
10
 
11
  do_action( 'single_job_listing_meta_before' ); ?>
12
 
13
- <ul class="meta">
14
  <?php do_action( 'single_job_listing_meta_start' ); ?>
15
 
16
  <li class="job-type <?php echo get_the_job_type() ? sanitize_title( get_the_job_type()->slug ) : ''; ?>" itemprop="employmentType"><?php the_job_type(); ?></li>
@@ -28,4 +28,4 @@ do_action( 'single_job_listing_meta_before' ); ?>
28
  <?php do_action( 'single_job_listing_meta_end' ); ?>
29
  </ul>
30
 
31
- <?php do_action( 'single_job_listing_meta_after' ); ?>
10
 
11
  do_action( 'single_job_listing_meta_before' ); ?>
12
 
13
+ <ul class="job-listing-meta meta">
14
  <?php do_action( 'single_job_listing_meta_start' ); ?>
15
 
16
  <li class="job-type <?php echo get_the_job_type() ? sanitize_title( get_the_job_type()->slug ) : ''; ?>" itemprop="employmentType"><?php the_job_type(); ?></li>
28
  <?php do_action( 'single_job_listing_meta_end' ); ?>
29
  </ul>
30
 
31
+ <?php do_action( 'single_job_listing_meta_after' ); ?>
templates/content-single-job_listing.php CHANGED
@@ -5,7 +5,6 @@
5
  <?php if ( get_option( 'job_manager_hide_expired_content', 1 ) && 'expired' === $post->post_status ) : ?>
6
  <div class="job-manager-info"><?php _e( 'This listing has expired.', 'wp-job-manager' ); ?></div>
7
  <?php else : ?>
8
-
9
  <?php
10
  /**
11
  * single_job_listing_start hook
@@ -30,6 +29,5 @@
30
  */
31
  do_action( 'single_job_listing_end' );
32
  ?>
33
-
34
  <?php endif; ?>
35
- </div>
5
  <?php if ( get_option( 'job_manager_hide_expired_content', 1 ) && 'expired' === $post->post_status ) : ?>
6
  <div class="job-manager-info"><?php _e( 'This listing has expired.', 'wp-job-manager' ); ?></div>
7
  <?php else : ?>
 
8
  <?php
9
  /**
10
  * single_job_listing_start hook
29
  */
30
  do_action( 'single_job_listing_end' );
31
  ?>
 
32
  <?php endif; ?>
33
+ </div>
wp-job-manager-functions.php CHANGED
@@ -99,7 +99,9 @@ function get_job_listings( $args = array() ) {
99
  );
100
  }
101
 
102
- if ( $job_manager_keyword = sanitize_text_field( $args['search_keywords'] ) ) {
 
 
103
  $query_args['_keyword'] = $job_manager_keyword; // Does nothing but needed for unique hash
104
  add_filter( 'posts_clauses', 'get_job_listings_keyword_search' );
105
  }
@@ -114,6 +116,11 @@ function get_job_listings( $args = array() ) {
114
  unset( $query_args['tax_query'] );
115
  }
116
 
 
 
 
 
 
117
  // Filter args
118
  $query_args = apply_filters( 'get_job_listings_query_args', $query_args, $args );
119
 
@@ -146,11 +153,9 @@ if ( ! function_exists( 'get_job_listings_keyword_search' ) ) :
146
  function get_job_listings_keyword_search( $args ) {
147
  global $wpdb, $job_manager_keyword;
148
 
149
- // Query matching ids to avoid more joins
150
- $post_ids = $wpdb->get_col( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value LIKE '%" . esc_sql( $job_manager_keyword ) . "%'" );
151
- $conditions = array();
152
-
153
  $conditions[] = "{$wpdb->posts}.post_title LIKE '%" . esc_sql( $job_manager_keyword ) . "%'";
 
154
 
155
  if ( ctype_alnum( $job_manager_keyword ) ) {
156
  $conditions[] = "{$wpdb->posts}.post_content RLIKE '[[:<:]]" . esc_sql( $job_manager_keyword ) . "[[:>:]]'";
@@ -158,10 +163,6 @@ if ( ! function_exists( 'get_job_listings_keyword_search' ) ) :
158
  $conditions[] = "{$wpdb->posts}.post_content LIKE '%" . esc_sql( $job_manager_keyword ) . "%'";
159
  }
160
 
161
- if ( $post_ids ) {
162
- $conditions[] = "{$wpdb->posts}.ID IN (" . esc_sql( implode( ',', $post_ids ) ) . ")";
163
- }
164
-
165
  $args['where'] .= " AND ( " . implode( ' OR ', $conditions ) . " ) ";
166
 
167
  return $args;
@@ -322,6 +323,24 @@ function get_job_listing_rss_link( $args = array() ) {
322
  }
323
  endif;
324
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
  if ( ! function_exists( 'job_manager_create_account' ) ) :
326
  /**
327
  * Handle account creation.
@@ -332,7 +351,6 @@ if ( ! function_exists( 'job_manager_create_account' ) ) :
332
  */
333
  function wp_job_manager_create_account( $args, $deprecated = '' ) {
334
  global $current_user;
335
- global $wp_version;
336
 
337
  // Soft Deprecated in 1.20.0
338
  if ( ! is_array( $args ) ) {
@@ -405,13 +423,8 @@ function wp_job_manager_create_account( $args, $deprecated = '' ) {
405
  }
406
 
407
  // Notify
408
- if ( version_compare( $wp_version, '4.3.1', '<' ) ) {
409
- wp_new_user_notification( $user_id, $password );
410
- } else {
411
- wp_new_user_notification( $user_id, null, 'both' );
412
- }
413
-
414
- // Login
415
  wp_set_auth_cookie( $user_id, true, is_ssl() );
416
  $current_user = get_user_by( 'id', $user_id );
417
 
@@ -578,14 +591,27 @@ function job_manager_dropdown_categories( $args = '' ) {
578
  return $output;
579
  }
580
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
581
  /**
582
  * Get the permalink of a page if set
583
  * @param string $page e.g. job_dashboard, submit_job_form, jobs
584
  * @return string|bool
585
  */
586
  function job_manager_get_permalink( $page ) {
587
- $page_id = get_option( 'job_manager_' . $page . '_page_id', false );
588
- if ( $page_id ) {
589
  return get_permalink( $page_id );
590
  } else {
591
  return false;
99
  );
100
  }
101
 
102
+ $job_manager_keyword = sanitize_text_field( $args['search_keywords'] );
103
+
104
+ if ( ! empty( $job_manager_keyword ) && strlen( $job_manager_keyword ) >= apply_filters( 'job_manager_get_listings_keyword_length_threshold', 2 ) ) {
105
  $query_args['_keyword'] = $job_manager_keyword; // Does nothing but needed for unique hash
106
  add_filter( 'posts_clauses', 'get_job_listings_keyword_search' );
107
  }
116
  unset( $query_args['tax_query'] );
117
  }
118
 
119
+ // Polylang LANG arg
120
+ if ( function_exists( 'pll_current_language' ) ) {
121
+ $query_args['lang'] = pll_current_language();
122
+ }
123
+
124
  // Filter args
125
  $query_args = apply_filters( 'get_job_listings_query_args', $query_args, $args );
126
 
153
  function get_job_listings_keyword_search( $args ) {
154
  global $wpdb, $job_manager_keyword;
155
 
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 ) . "[[:>:]]'";
163
  $conditions[] = "{$wpdb->posts}.post_content LIKE '%" . esc_sql( $job_manager_keyword ) . "%'";
164
  }
165
 
 
 
 
 
166
  $args['where'] .= " AND ( " . implode( ' OR ', $conditions ) . " ) ";
167
 
168
  return $args;
323
  }
324
  endif;
325
 
326
+ if ( ! function_exists( 'wp_job_manager_notify_new_user' ) ) :
327
+ /**
328
+ * Handle account creation.
329
+ *
330
+ * @param int $user_id
331
+ * @param string $password
332
+ */
333
+ function wp_job_manager_notify_new_user( $user_id, $password ) {
334
+ global $wp_version;
335
+
336
+ if ( version_compare( $wp_version, '4.3.1', '<' ) ) {
337
+ wp_new_user_notification( $user_id, $password );
338
+ } else {
339
+ wp_new_user_notification( $user_id, null, 'both' );
340
+ }
341
+ }
342
+ endif;
343
+
344
  if ( ! function_exists( 'job_manager_create_account' ) ) :
345
  /**
346
  * Handle account creation.
351
  */
352
  function wp_job_manager_create_account( $args, $deprecated = '' ) {
353
  global $current_user;
 
354
 
355
  // Soft Deprecated in 1.20.0
356
  if ( ! is_array( $args ) ) {
423
  }
424
 
425
  // Notify
426
+ wp_job_manager_notify_new_user( $user_id, $password, $new_user );
427
+ // Login
 
 
 
 
 
428
  wp_set_auth_cookie( $user_id, true, is_ssl() );
429
  $current_user = get_user_by( 'id', $user_id );
430
 
591
  return $output;
592
  }
593
 
594
+ /**
595
+ * Get the page ID of a page if set, with PolyLang compat.
596
+ * @param string $page e.g. job_dashboard, submit_job_form, jobs
597
+ * @return int
598
+ */
599
+ function job_manager_get_page_id( $page ) {
600
+ $page_id = get_option( 'job_manager_' . $page . '_page_id', false );
601
+ if ( $page_id ) {
602
+ return absint( function_exists( 'pll_get_post' ) ? pll_get_post( $page_id ) : $page_id );
603
+ } else {
604
+ return 0;
605
+ }
606
+ }
607
+
608
  /**
609
  * Get the permalink of a page if set
610
  * @param string $page e.g. job_dashboard, submit_job_form, jobs
611
  * @return string|bool
612
  */
613
  function job_manager_get_permalink( $page ) {
614
+ if ( $page_id = job_manager_get_page_id( $page ) ) {
 
615
  return get_permalink( $page_id );
616
  } else {
617
  return false;
wp-job-manager-template.php CHANGED
@@ -276,9 +276,9 @@ function the_job_location( $map_link = true, $post = null ) {
276
 
277
  if ( $location ) {
278
  if ( $map_link )
279
- echo apply_filters( 'the_job_location_map_link', '<a class="google_map_link" href="http://maps.google.com/maps?q=' . urlencode( $location ) . '&zoom=14&size=512x512&maptype=roadmap&sensor=false" target="_blank">' . $location . '</a>', $location, $post );
280
  else
281
- echo $location;
282
  } else {
283
  echo apply_filters( 'the_job_location_anywhere_text', __( 'Anywhere', 'wp-job-manager' ) );
284
  }
276
 
277
  if ( $location ) {
278
  if ( $map_link )
279
+ echo apply_filters( 'the_job_location_map_link', '<a class="google_map_link" href="http://maps.google.com/maps?q=' . urlencode( $location ) . '&zoom=14&size=512x512&maptype=roadmap&sensor=false" target="_blank">' . esc_html( $location ) . '</a>', $location, $post );
280
  else
281
+ echo esc_html( $location );
282
  } else {
283
  echo apply_filters( 'the_job_location_anywhere_text', __( 'Anywhere', 'wp-job-manager' ) );
284
  }
wp-job-manager.php CHANGED
@@ -3,11 +3,11 @@
3
  Plugin Name: WP Job Manager
4
  Plugin URI: https://wpjobmanager.com/
5
  Description: Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
6
- Version: 1.23.11
7
  Author: Mike Jolley
8
  Author URI: http://mikejolley.com
9
  Requires at least: 4.1
10
- Tested up to: 4.3
11
  Text Domain: wp-job-manager
12
  Domain Path: /languages/
13
 
@@ -31,7 +31,7 @@ class WP_Job_Manager {
31
  */
32
  public function __construct() {
33
  // Define constants
34
- define( 'JOB_MANAGER_VERSION', '1.23.11' );
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
 
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.12
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
 
31
  */
32
  public function __construct() {
33
  // Define constants
34
+ define( 'JOB_MANAGER_VERSION', '1.23.12' );
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