WP Job Manager - Version 1.35.3

Version Description

  • Fix: Use wp_kses_post to process a job title instead of esc_html
  • Fix: Fix dependencies (npm/composer) problems
  • Fix: Decode html special chars for mailto link (@RafaelKr)
  • Fix: Reset job filter properly by using jQuery's prop instead of jQuery's attr
  • Fix: Fix not translatable string (@masteradhoc)
  • Fix: Disable transient cache when the order is set to random or random featured
  • Fix: Fix button "Apply for job" when the page is translated using Google Translate
Download this release

Release Info

Developer fjorgemota
Plugin Icon 128x128 WP Job Manager
Version 1.35.3
Comparing to
See all releases

Code changes from version 1.35.2 to 1.35.3

assets/dist/js/ajax-filters.asset.php CHANGED
@@ -1 +1 @@
1
- <?php return array('dependencies' => array('wp-polyfill'), 'version' => '4c0c93fd17a9cb13f4c9d4c8bbd146e7');
1
+ <?php return array('dependencies' => array('wp-polyfill'), 'version' => '72b6145dd5bd17fa4e72122361dd24d0');
assets/dist/js/ajax-filters.js CHANGED
@@ -1 +1 @@
1
- !function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?e.exports=n=function(e){return typeof e}:e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(t)}e.exports=n},,,function(e,t,n){"use strict";n.r(t);var i=n(0),o=n.n(i);jQuery(document).ready((function(e){function t(t){return!(!window.sessionStorage||"function"!=typeof window.sessionStorage.setItem||e(document.body).hasClass("disable-job-manager-form-state-storage")||t.data("disable-form-state-storage"))}function n(t){var n=e("div.job_listings").index(t),i=t.data("post_id");return void 0!==i&&i||(i=window.location.href.replace(location.hash,"")),"job_listing_"+i+"_"+n}function i(e,i){if(!t(e))return!1;"object"!==o()(i)&&(i={});var r=n(e);try{return window.sessionStorage.setItem(r,JSON.stringify(i))}catch(e){}return!1}function r(e){if(!t(e))return!1;var i=n(e);try{var o=window.sessionStorage.getItem(i);if(o)return JSON.parse(o)}catch(e){}return!1}function a(e,n){if(!t(e)||!e)return!1;var o=r(e);return!!o&&(o.persist_results=n,i(e,o))}function s(e){if(!t(e)||!e)return!1;var n=r(e);if(!n)return!1;var o=e.find(".job_filters");return n.form=o.serialize(),i(e,n)}function l(t,n,i){var o=t.find(".job_listings"),r=t.find(".showing_jobs");if("boolean"!=typeof i&&(i=!1),"string"==typeof n.showing&&n.showing){var a=jQuery("<span>").html(n.showing);r.show().html("").html(n.showing_links).prepend(a)}else r.hide();return n.showing_all?r.addClass("wp-job-manager-showing-all"):r.removeClass("wp-job-manager-showing-all"),n.html&&(i?o.append(n.html):o.html(n.html)),!0===t.data("show_pagination")?(t.find(".job-manager-pagination").remove(),n.pagination&&t.append(n.pagination)):(!n.found_jobs||n.max_num_pages<=n.data.page?e(".load_more_jobs:not(.load_previous)",t).hide():e(".load_more_jobs",t).show(),e(".load_more_jobs",t).removeClass("loading").data("page",n.data.page),e("li.job_listing",o).css("visibility","visible")),!0}e(document).on("click","a",(function(){e("div.job_listings").each((function(){s(e(this))}))})),e(document).on("submit","form",(function(){e("div.job_listings").each((function(){s(e(this))}))}));var d=[];e("div.job_listings").on("click","li.job_listing a",(function(){a(e(this).closest("div.job_listings"),!0)})).on("click",".job-manager-pagination a",(function(){var t=e(this).closest("div.job_listings"),n=e(this).data("page");return t.triggerHandler("update_results",[n,!1]),e("body, html").animate({scrollTop:t.offset().top},600),!1})).on("update_results",(function(o,a,s){var c,u,f,g="",p=e(this),_=p.find(".job_filters"),h=p.find(".job_listings"),b=p.data("per_page"),m=p.data("orderby"),y=p.data("order"),j=p.data("featured"),v=p.data("filled"),w=p.data("job_types"),S=p.data("post_status"),k=e("div.job_listings").index(this);if(!(k<0)){if(function(e){if(!t(e))return!1;var i=n(e);try{window.sessionStorage.removeItem(i)}catch(e){return!1}}(p),d[k]&&d[k].abort(),s&&1!==a||(e("li.job_listing, li.no_job_listings_found",h).css("visibility","hidden"),h.addClass("loading")),p.find(".load_more_jobs").data("page",a),!0===p.data("show_filters")){var x=[];e(':input[name="filter_job_type[]"]:checked, :input[name="filter_job_type[]"][type="hidden"], :input[name="filter_job_type"]',_).each((function(){x.push(e(this).val())})),c=_.find(':input[name^="search_categories"]').map((function(){return e(this).val()})).get(),u="",f="";var O=_.find(':input[name="search_keywords"]'),C=_.find(':input[name="search_location"]');O.val()!==O.attr("placeholder")&&(u=O.val()),C.val()!==C.attr("placeholder")&&(f=C.val()),g={lang:job_manager_ajax_filters.lang,search_keywords:u,search_location:f,search_categories:c,filter_job_type:x,filter_post_status:S,per_page:b,orderby:m,order:y,page:a,featured:j,filled:v,show_pagination:p.data("show_pagination"),form_data:_.serialize()}}else c=p.data("categories"),u=p.data("keywords"),f=p.data("location"),c&&("string"!=typeof c&&(c=String(c)),c=c.split(",")),g={lang:job_manager_ajax_filters.lang,search_categories:c,search_keywords:u,search_location:f,filter_post_status:S,filter_job_type:w,per_page:b,orderby:m,order:y,page:a,featured:j,filled:v,show_pagination:p.data("show_pagination")};d[k]=e.ajax({type:"POST",url:job_manager_ajax_filters.ajax_url.toString().replace("%%endpoint%%","get_listings"),data:g,success:function(e){if(e)try{e.data=g,l(p,e,s),h.removeClass("loading"),p.triggerHandler("updated_results",e),function(e,n){if(!t(e))return!1;var o=r(e);o||(o={persist_results:!1});var a=e.find(".job_listings");n.html=a.html(),o.results=n,i(e,o)}(p,e)}catch(e){window.console&&window.console.log(e)}},error:function(e,t,n){window.console&&"abort"!==t&&window.console.log(t+": "+n)},statusCode:{404:function(){window.console&&window.console.log("Error 404: Ajax Endpoint cannot be reached. Go to Settings > Permalinks and save to resolve.")}}})}})),e("#search_keywords, #search_location, .job_types :input, #search_categories, .job-manager-filter").change((function(){var t=e(this).closest("div.job_listings");t.triggerHandler("update_results",[1,!1]),i(t)})).on("keyup",(function(t){13===t.which&&e(this).trigger("change")})),e(".job_filters").on("click",".reset",(function(){var t=e(this).closest("div.job_listings"),n=e(this).closest("form");return n.find(':input[name="search_keywords"], :input[name="search_location"], .job-manager-filter').not(':input[type="hidden"]').val("").trigger("change.select2"),n.find(':input[name^="search_categories"]').not(':input[type="hidden"]').val("").trigger("change.select2"),e(':input[name="filter_job_type[]"]',n).not(':input[type="hidden"]').attr("checked","checked"),t.triggerHandler("reset"),t.triggerHandler("update_results",[1,!1]),i(t),!1})).on("submit",(function(){return!1})),e(document.body).on("click",".load_more_jobs",(function(){var t=e(this).closest("div.job_listings"),n=parseInt(e(this).data("page")||1,10);return e(this).addClass("loading"),n+=1,e(this).data("page",n),t.triggerHandler("update_results",[n,!0]),!1})),e.isFunction(e.fn.select2)&&"undefined"!=typeof job_manager_select2_filters_args&&e('select[name^="search_categories"]:visible').select2(job_manager_select2_filters_args),e(window).on("unload",(function(){return e("div.job_listings").each((function(){var n=r(e(this));n&&!n.persist_results&&function(e){if(!t(e))return!1;var n=r(e);n||(n={}),n.results=null,i(e,n)}(e(this))})),!0})),e("div.job_listings").each((function(){var n=e(this),o=n.find(".job_filters"),s=!1,d=r(n);d&&(d.results&&(s=l(n,d.results),a(n,!1),function(e){if(!t(e))return!1;var n=r(e);n||(n={}),n.form=null,i(e,n)}(n)),"string"==typeof d.form&&""!==d.form&&(o.find("input[type=checkbox]").prop("checked",!1),o.deserialize(d.form),o.find(':input[name^="search_categories"]').not(':input[type="hidden"]').trigger("change.select2"))),!s&&o.length>0&&n.triggerHandler("update_results",[1,!1])}))}))}]);
1
+ !function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?e.exports=n=function(e){return typeof e}:e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(t)}e.exports=n},,,function(e,t,n){"use strict";n.r(t);var i=n(0),o=n.n(i);jQuery(document).ready((function(e){function t(t){return!(!window.sessionStorage||"function"!=typeof window.sessionStorage.setItem||e(document.body).hasClass("disable-job-manager-form-state-storage")||t.data("disable-form-state-storage"))}function n(t){var n=e("div.job_listings").index(t),i=t.data("post_id");return void 0!==i&&i||(i=window.location.href.replace(location.hash,"")),"job_listing_"+i+"_"+n}function i(e,i){if(!t(e))return!1;"object"!==o()(i)&&(i={});var r=n(e);try{return window.sessionStorage.setItem(r,JSON.stringify(i))}catch(e){}return!1}function r(e){if(!t(e))return!1;var i=n(e);try{var o=window.sessionStorage.getItem(i);if(o)return JSON.parse(o)}catch(e){}return!1}function a(e,n){if(!t(e)||!e)return!1;var o=r(e);return!!o&&(o.persist_results=n,i(e,o))}function s(e){if(!t(e)||!e)return!1;var n=r(e);if(!n)return!1;var o=e.find(".job_filters");return n.form=o.serialize(),i(e,n)}function l(t,n,i){var o=t.find(".job_listings"),r=t.find(".showing_jobs");if("boolean"!=typeof i&&(i=!1),"string"==typeof n.showing&&n.showing){var a=jQuery("<span>").html(n.showing);r.show().html("").html(n.showing_links).prepend(a)}else r.hide();return n.showing_all?r.addClass("wp-job-manager-showing-all"):r.removeClass("wp-job-manager-showing-all"),n.html&&(i?o.append(n.html):o.html(n.html)),!0===t.data("show_pagination")?(t.find(".job-manager-pagination").remove(),n.pagination&&t.append(n.pagination)):(!n.found_jobs||n.max_num_pages<=n.data.page?e(".load_more_jobs:not(.load_previous)",t).hide():e(".load_more_jobs",t).show(),e(".load_more_jobs",t).removeClass("loading").data("page",n.data.page),e("li.job_listing",o).css("visibility","visible")),!0}e(document).on("click","a",(function(){e("div.job_listings").each((function(){s(e(this))}))})),e(document).on("submit","form",(function(){e("div.job_listings").each((function(){s(e(this))}))}));var d=[];e("div.job_listings").on("click","li.job_listing a",(function(){a(e(this).closest("div.job_listings"),!0)})).on("click",".job-manager-pagination a",(function(){var t=e(this).closest("div.job_listings"),n=e(this).data("page");return t.triggerHandler("update_results",[n,!1]),e("body, html").animate({scrollTop:t.offset().top},600),!1})).on("update_results",(function(o,a,s){var c,u,f,g="",p=e(this),_=p.find(".job_filters"),h=p.find(".job_listings"),b=p.data("per_page"),m=p.data("orderby"),y=p.data("order"),j=p.data("featured"),v=p.data("filled"),w=p.data("job_types"),S=p.data("post_status"),k=e("div.job_listings").index(this);if(!(k<0)){if(function(e){if(!t(e))return!1;var i=n(e);try{window.sessionStorage.removeItem(i)}catch(e){return!1}}(p),d[k]&&d[k].abort(),s&&1!==a||(e("li.job_listing, li.no_job_listings_found",h).css("visibility","hidden"),h.addClass("loading")),p.find(".load_more_jobs").data("page",a),!0===p.data("show_filters")){var x=[];e(':input[name="filter_job_type[]"]:checked, :input[name="filter_job_type[]"][type="hidden"], :input[name="filter_job_type"]',_).each((function(){x.push(e(this).val())})),c=_.find(':input[name^="search_categories"]').map((function(){return e(this).val()})).get(),u="",f="";var O=_.find(':input[name="search_keywords"]'),C=_.find(':input[name="search_location"]');O.val()!==O.attr("placeholder")&&(u=O.val()),C.val()!==C.attr("placeholder")&&(f=C.val()),g={lang:job_manager_ajax_filters.lang,search_keywords:u,search_location:f,search_categories:c,filter_job_type:x,filter_post_status:S,per_page:b,orderby:m,order:y,page:a,featured:j,filled:v,show_pagination:p.data("show_pagination"),form_data:_.serialize()}}else c=p.data("categories"),u=p.data("keywords"),f=p.data("location"),c&&("string"!=typeof c&&(c=String(c)),c=c.split(",")),g={lang:job_manager_ajax_filters.lang,search_categories:c,search_keywords:u,search_location:f,filter_post_status:S,filter_job_type:w,per_page:b,orderby:m,order:y,page:a,featured:j,filled:v,show_pagination:p.data("show_pagination")};d[k]=e.ajax({type:"POST",url:job_manager_ajax_filters.ajax_url.toString().replace("%%endpoint%%","get_listings"),data:g,success:function(e){if(e)try{e.data=g,l(p,e,s),h.removeClass("loading"),p.triggerHandler("updated_results",e),function(e,n){if(!t(e))return!1;var o=r(e);o||(o={persist_results:!1});var a=e.find(".job_listings");n.html=a.html(),o.results=n,i(e,o)}(p,e)}catch(e){window.console&&window.console.log(e)}},error:function(e,t,n){window.console&&"abort"!==t&&window.console.log(t+": "+n)},statusCode:{404:function(){window.console&&window.console.log("Error 404: Ajax Endpoint cannot be reached. Go to Settings > Permalinks and save to resolve.")}}})}})),e("#search_keywords, #search_location, .job_types :input, #search_categories, .job-manager-filter").change((function(){var t=e(this).closest("div.job_listings");t.triggerHandler("update_results",[1,!1]),i(t)})).on("keyup",(function(t){13===t.which&&e(this).trigger("change")})),e(".job_filters").on("click",".reset",(function(){var t=e(this).closest("div.job_listings"),n=e(this).closest("form");return n.find(':input[name="search_keywords"], :input[name="search_location"], .job-manager-filter').not(':input[type="hidden"]').val("").trigger("change.select2"),n.find(':input[name^="search_categories"]').not(':input[type="hidden"]').val("").trigger("change.select2"),n.find(':input[name="filter_job_type[]"]').not(':input[type="hidden"]').prop("checked",!0),t.triggerHandler("reset"),t.triggerHandler("update_results",[1,!1]),i(t),!1})).on("submit",(function(){return!1})),e(document.body).on("click",".load_more_jobs",(function(){var t=e(this).closest("div.job_listings"),n=parseInt(e(this).data("page")||1,10);return e(this).addClass("loading"),n+=1,e(this).data("page",n),t.triggerHandler("update_results",[n,!0]),!1})),e.isFunction(e.fn.select2)&&"undefined"!=typeof job_manager_select2_filters_args&&e('select[name^="search_categories"]:visible').select2(job_manager_select2_filters_args),e(window).on("unload",(function(){return e("div.job_listings").each((function(){var n=r(e(this));n&&!n.persist_results&&function(e){if(!t(e))return!1;var n=r(e);n||(n={}),n.results=null,i(e,n)}(e(this))})),!0})),e("div.job_listings").each((function(){var n=e(this),o=n.find(".job_filters"),s=!1,d=r(n);d&&(d.results&&(s=l(n,d.results),a(n,!1),function(e){if(!t(e))return!1;var n=r(e);n||(n={}),n.form=null,i(e,n)}(n)),"string"==typeof d.form&&""!==d.form&&(o.find("input[type=checkbox]").prop("checked",!1),o.deserialize(d.form),o.find(':input[name^="search_categories"]').not(':input[type="hidden"]').trigger("change.select2"))),!s&&o.length>0&&n.triggerHandler("update_results",[1,!1])}))}))}]);
assets/dist/js/job-application.asset.php CHANGED
@@ -1 +1 @@
1
- <?php return array('dependencies' => array('wp-polyfill'), 'version' => '316e48c24e9343078977cd07e5efec42');
1
+ <?php return array('dependencies' => array('wp-polyfill'), 'version' => '9dee80bd38bc5becc905eebec5356a5a');
assets/dist/js/job-application.js CHANGED
@@ -1 +1 @@
1
- !function(e){var t={};function o(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=t,o.d=function(e,t,i){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(o.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(i,n,function(t){return e[t]}.bind(null,n));return i},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=5)}({5:function(e,t){jQuery(document).ready((function(e){e("body").hasClass("job-application-details-keep-open")||e(".application_details").hide(),e(document.body).on("click",".job_application .application_button",(function(){var t=e(this).siblings(".application_details").first(),o=e(this);t.slideToggle(400,(function(){if(e(this).is(":visible")){t.trigger("visible");var i=Math.max(Math.min(t.outerHeight(),200),.33*t.outerHeight()),n=t.offset().top+i,r=5;e("#wpadminbar").length>0&&"fixed"===e("#wpadminbar").css("position")&&(r+=e("#wpadminbar").outerHeight()),e("header").length>0&&"fixed"===e("header").css("position")&&(r+=e("header").outerHeight());var a=e(window).scrollTop()+window.innerHeight,l=t.offset().top+t.outerHeight()-a,u=window.innerHeight-r;l>0&&t.outerHeight()<.9*u?e("html, body").animate({scrollTop:e(window).scrollTop()+l+5},400):a<n&&e("html, body").animate({scrollTop:o.offset().top-r},600)}}))}))}))}});
1
+ !function(e){var t={};function o(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(n,i,function(t){return e[t]}.bind(null,i));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=5)}({5:function(e,t){jQuery(document).ready((function(e){e("body").hasClass("job-application-details-keep-open")||e(".application_details").hide(),e(document.body).on("click",".job_application .application_button",(function(){var t=e(this).parents(".job_application").find(".application_details").first(),o=e(this);t.slideToggle(400,(function(){if(e(this).is(":visible")){t.trigger("visible");var n=Math.max(Math.min(t.outerHeight(),200),.33*t.outerHeight()),i=t.offset().top+n,r=5;e("#wpadminbar").length>0&&"fixed"===e("#wpadminbar").css("position")&&(r+=e("#wpadminbar").outerHeight()),e("header").length>0&&"fixed"===e("header").css("position")&&(r+=e("header").outerHeight());var a=e(window).scrollTop()+window.innerHeight,l=t.offset().top+t.outerHeight()-a,u=window.innerHeight-r;l>0&&t.outerHeight()<.9*u?e("html, body").animate({scrollTop:e(window).scrollTop()+l+5},400):a<i&&e("html, body").animate({scrollTop:o.offset().top-r},600)}}))}))}))}});
changelog.txt CHANGED
@@ -1,3 +1,12 @@
 
 
 
 
 
 
 
 
 
1
  = 1.35.2 =
2
  * Enhancement: Add agreement checkbox to job submission.
3
  * Fix: Remove unnecessary filter avoiding warning in WP 5.8.
1
+ = 1.35.3 =
2
+ * Fix: Use wp_kses_post to process a job title instead of esc_html
3
+ * Fix: Fix dependencies (npm/composer) problems
4
+ * Fix: Decode html special chars for mailto link (@RafaelKr)
5
+ * Fix: Reset job filter properly by using jQuery's prop instead of jQuery's attr
6
+ * Fix: Fix not translatable string (@masteradhoc)
7
+ * Fix: Disable transient cache when the order is set to random or random featured
8
+ * Fix: Fix button "Apply for job" when the page is translated using Google Translate
9
+
10
  = 1.35.2 =
11
  * Enhancement: Add agreement checkbox to job submission.
12
  * Fix: Remove unnecessary filter avoiding warning in WP 5.8.
includes/admin/class-wp-job-manager-cpt.php CHANGED
@@ -566,7 +566,7 @@ class WP_Job_Manager_CPT {
566
  case 'job_position':
567
  echo '<div class="job_position">';
568
  // translators: %d is the post ID for the job listing.
569
- echo '<a href="' . esc_url( admin_url( 'post.php?post=' . $post->ID . '&action=edit' ) ) . '" class="tips job_title" data-tip="' . sprintf( esc_html__( 'ID: %d', 'wp-job-manager' ), intval( $post->ID ) ) . '">' . esc_html( wpjm_get_the_job_title() ) . '</a>';
570
 
571
  echo '<div class="company">';
572
 
566
  case 'job_position':
567
  echo '<div class="job_position">';
568
  // translators: %d is the post ID for the job listing.
569
+ echo '<a href="' . esc_url( admin_url( 'post.php?post=' . $post->ID . '&action=edit' ) ) . '" class="tips job_title" data-tip="' . sprintf( esc_html__( 'ID: %d', 'wp-job-manager' ), intval( $post->ID ) ) . '">' . wp_kses_post( wpjm_get_the_job_title() ) . '</a>';
570
 
571
  echo '<div class="company">';
572
 
includes/class-wp-job-manager-shortcodes.php CHANGED
@@ -162,7 +162,7 @@ class WP_Job_Manager_Shortcodes {
162
 
163
  // Message.
164
  // translators: Placeholder %s is the job listing title.
165
- $this->job_dashboard_message = '<div class="job-manager-message">' . esc_html( sprintf( __( '%s has been filled', 'wp-job-manager' ), wpjm_get_the_job_title( $job ) ) ) . '</div>';
166
  break;
167
  case 'mark_not_filled':
168
  // Check status.
@@ -175,7 +175,7 @@ class WP_Job_Manager_Shortcodes {
175
 
176
  // Message.
177
  // translators: Placeholder %s is the job listing title.
178
- $this->job_dashboard_message = '<div class="job-manager-message">' . esc_html( sprintf( __( '%s has been marked as not filled', 'wp-job-manager' ), wpjm_get_the_job_title( $job ) ) ) . '</div>';
179
  break;
180
  case 'delete':
181
  // Trash it.
@@ -183,7 +183,7 @@ class WP_Job_Manager_Shortcodes {
183
 
184
  // Message.
185
  // translators: Placeholder %s is the job listing title.
186
- $this->job_dashboard_message = '<div class="job-manager-message">' . esc_html( sprintf( __( '%s has been deleted', 'wp-job-manager' ), wpjm_get_the_job_title( $job ) ) ) . '</div>';
187
 
188
  break;
189
  case 'duplicate':
@@ -780,7 +780,7 @@ class WP_Job_Manager_Shortcodes {
780
  if ( $jobs->have_posts() ) {
781
  while ( $jobs->have_posts() ) {
782
  $jobs->the_post();
783
- echo '<h1>' . esc_html( wpjm_get_the_job_title() ) . '</h1>';
784
  get_job_manager_template_part( 'content-single', 'job_listing' );
785
  }
786
  }
162
 
163
  // Message.
164
  // translators: Placeholder %s is the job listing title.
165
+ $this->job_dashboard_message = '<div class="job-manager-message">' . wp_kses_post( sprintf( __( '%s has been filled', 'wp-job-manager' ), wpjm_get_the_job_title( $job ) ) ) . '</div>';
166
  break;
167
  case 'mark_not_filled':
168
  // Check status.
175
 
176
  // Message.
177
  // translators: Placeholder %s is the job listing title.
178
+ $this->job_dashboard_message = '<div class="job-manager-message">' . wp_kses_post( sprintf( __( '%s has been marked as not filled', 'wp-job-manager' ), wpjm_get_the_job_title( $job ) ) ) . '</div>';
179
  break;
180
  case 'delete':
181
  // Trash it.
183
 
184
  // Message.
185
  // translators: Placeholder %s is the job listing title.
186
+ $this->job_dashboard_message = '<div class="job-manager-message">' . wp_kses_post( sprintf( __( '%s has been deleted', 'wp-job-manager' ), wpjm_get_the_job_title( $job ) ) ) . '</div>';
187
 
188
  break;
189
  case 'duplicate':
780
  if ( $jobs->have_posts() ) {
781
  while ( $jobs->have_posts() ) {
782
  $jobs->the_post();
783
+ echo '<h1>' . wp_kses_post( wpjm_get_the_job_title() ) . '</h1>';
784
  get_job_manager_template_part( 'content-single', 'job_listing' );
785
  }
786
  }
includes/class-wp-job-manager.php CHANGED
@@ -92,6 +92,7 @@ class WP_Job_Manager {
92
  add_action( 'wp_logout', [ $this, 'cleanup_job_posting_cookies' ] );
93
  add_action( 'init', [ 'WP_Job_Manager_Email_Notifications', 'init' ] );
94
  add_action( 'rest_api_init', [ $this, 'rest_init' ] );
 
95
 
96
  // Filters.
97
  add_filter( 'wp_privacy_personal_data_exporters', [ 'WP_Job_Manager_Data_Exporter', 'register_wpjm_user_data_exporter' ] );
@@ -571,4 +572,14 @@ class WP_Job_Manager {
571
  wp_enqueue_style( 'wp-job-manager-job-listings' );
572
  }
573
  }
 
 
 
 
 
 
 
 
 
 
574
  }
92
  add_action( 'wp_logout', [ $this, 'cleanup_job_posting_cookies' ] );
93
  add_action( 'init', [ 'WP_Job_Manager_Email_Notifications', 'init' ] );
94
  add_action( 'rest_api_init', [ $this, 'rest_init' ] );
95
+ add_action( 'plugins_loaded', [ $this, 'include_admin_files' ] );
96
 
97
  // Filters.
98
  add_filter( 'wp_privacy_personal_data_exporters', [ 'WP_Job_Manager_Data_Exporter', 'register_wpjm_user_data_exporter' ] );
572
  wp_enqueue_style( 'wp-job-manager-job-listings' );
573
  }
574
  }
575
+
576
+ /**
577
+ * This solves a loading order issue which occurs when is_admin() starts to return true at a point after plugin
578
+ * load. See the below issue for more information: https://github.com/Automattic/evergreen/issues/136
579
+ */
580
+ public function include_admin_files() {
581
+ if ( is_admin() && ! class_exists( 'WP_Job_Manager_Admin' ) ) {
582
+ include_once JOB_MANAGER_PLUGIN_DIR . '/includes/admin/class-wp-job-manager-admin.php';
583
+ }
584
+ }
585
  }
languages/wp-job-manager.pot CHANGED
@@ -1,17 +1,17 @@
1
- # Copyright (C) 2021 Automattic
2
- # This file is distributed under the same license as the WP Job Manager plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WP Job Manager 1.35.2\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-job-manager/\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2021-08-05T21:30:05+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
- "X-Generator: WP-CLI 2.5.0-alpha-75cb7e3\n"
15
  "X-Domain: wp-job-manager\n"
16
 
17
  #. Plugin Name of the plugin
@@ -196,6 +196,7 @@ msgstr ""
196
  msgid "%1$s updated. <a href=\"%2$s\">View</a>"
197
  msgstr ""
198
 
 
199
  #: includes/admin/class-wp-job-manager-cpt.php:456
200
  msgid "Custom field updated."
201
  msgstr ""
@@ -312,6 +313,7 @@ msgstr ""
312
  msgid "View"
313
  msgstr ""
314
 
 
315
  #: includes/admin/class-wp-job-manager-cpt.php:648
316
  #: includes/class-wp-job-manager-post-types.php:340
317
  #: includes/class-wp-job-manager-shortcodes.php:390
@@ -1016,6 +1018,7 @@ msgstr[1] ""
1016
  msgid "You must be logged in to upload files using this method."
1017
  msgstr ""
1018
 
 
1019
  #: includes/class-wp-job-manager-data-exporter.php:51
1020
  #: includes/class-wp-job-manager-post-types.php:357
1021
  msgid "Company Logo"
@@ -1224,6 +1227,7 @@ msgstr ""
1224
  msgid "Jobs"
1225
  msgstr ""
1226
 
 
1227
  #: includes/class-wp-job-manager-post-types.php:337
1228
  msgid "Add New"
1229
  msgstr ""
@@ -1272,7 +1276,7 @@ msgid "This is where you can create and manage %s."
1272
  msgstr ""
1273
 
1274
  #: includes/class-wp-job-manager-post-types.php:398
1275
- #: wp-job-manager-functions.php:335
1276
  msgctxt "post status"
1277
  msgid "Expired"
1278
  msgstr ""
@@ -1285,7 +1289,7 @@ msgstr[0] ""
1285
  msgstr[1] ""
1286
 
1287
  #: includes/class-wp-job-manager-post-types.php:411
1288
- #: wp-job-manager-functions.php:336
1289
  msgctxt "post status"
1290
  msgid "Preview"
1291
  msgstr ""
@@ -1413,6 +1417,7 @@ msgstr ""
1413
  msgid "Missing submission page."
1414
  msgstr ""
1415
 
 
1416
  #: includes/class-wp-job-manager-shortcodes.php:341
1417
  #: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:36
1418
  #: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:52
@@ -1474,35 +1479,35 @@ msgid "Enable Usage Tracking"
1474
  msgstr ""
1475
 
1476
  #. translators: Placeholders %1$s and %2$s are the names of the two cookies used in WP Job Manager.
1477
- #: includes/class-wp-job-manager.php:139
1478
  msgid ""
1479
  "This site adds the following cookies to help users resume job submissions that they\n"
1480
  "\t\t\t\thave started but have not completed: %1$s and %2$s"
1481
  msgstr ""
1482
 
1483
- #: includes/class-wp-job-manager.php:360
1484
  msgid "Load previous listings"
1485
  msgstr ""
1486
 
1487
- #: includes/class-wp-job-manager.php:488
1488
  msgid "Invalid file type. Accepted types:"
1489
  msgstr ""
1490
 
1491
- #: includes/class-wp-job-manager.php:506
1492
  msgid "Any Category"
1493
  msgstr ""
1494
 
1495
  #. translators: Placeholder %d is the number of files to that users are limited to.
1496
- #: includes/class-wp-job-manager.php:522
1497
  #: includes/forms/class-wp-job-manager-form-submit-job.php:462
1498
  msgid "You are only allowed to upload a maximum of %d files."
1499
  msgstr ""
1500
 
1501
- #: includes/class-wp-job-manager.php:530
1502
  msgid "Are you sure you want to delete this listing?"
1503
  msgstr ""
1504
 
1505
- #: includes/class-wp-job-manager.php:538
1506
  msgid "This field is required."
1507
  msgstr ""
1508
 
@@ -1673,7 +1678,7 @@ msgstr ""
1673
  #. translators: Placeholder %1$s is field label; %2$s is the file mime type; %3$s is the allowed mime-types.
1674
  #. translators: %1$s is the file field label; %2$s is the file type; %3$s is the list of allowed file types.
1675
  #: includes/forms/class-wp-job-manager-form-submit-job.php:435
1676
- #: wp-job-manager-functions.php:1368
1677
  msgid "\"%1$s\" (filetype %2$s) needs to be one of the following file types: %3$s"
1678
  msgstr ""
1679
 
@@ -1893,25 +1898,23 @@ msgstr ""
1893
  msgid "Sign in"
1894
  msgstr ""
1895
 
1896
- #. translators: Placeholder %s is the optionally text.
1897
- #: templates/account-signin.php:47
1898
- msgid "If you don't have an account you can %screate one below by entering your email address/username."
1899
  msgstr ""
1900
 
1901
- #. translators: Placeholder %s is the optionally text.
1902
- #: templates/account-signin.php:47
1903
  msgid "optionally"
1904
  msgstr ""
1905
 
1906
- #: templates/account-signin.php:49
1907
  msgid "Your account details will be confirmed via email."
1908
  msgstr ""
1909
 
1910
- #: templates/account-signin.php:54
1911
  msgid "You must sign in to create a new listing."
1912
  msgstr ""
1913
 
1914
- #: templates/account-signin.php:65
1915
  #: templates/job-submit.php:43
1916
  #: templates/job-submit.php:60
1917
  msgid "(optional)"
@@ -2044,12 +2047,12 @@ msgid "Maximum file size: %s."
2044
  msgstr ""
2045
 
2046
  #: templates/form-fields/multiselect-field.php:20
2047
- #: wp-job-manager-functions.php:1135
2048
  msgid "No results match"
2049
  msgstr ""
2050
 
2051
  #: templates/form-fields/multiselect-field.php:20
2052
- #: wp-job-manager-functions.php:1136
2053
  msgid "Select Some Options"
2054
  msgstr ""
2055
 
@@ -2142,88 +2145,88 @@ msgstr ""
2142
  msgid "%s submitted successfully. Your listing will be visible once approved."
2143
  msgstr ""
2144
 
2145
- #: wp-job-manager-functions.php:334
2146
  msgctxt "post status"
2147
  msgid "Draft"
2148
  msgstr ""
2149
 
2150
- #: wp-job-manager-functions.php:337
2151
  msgctxt "post status"
2152
  msgid "Pending approval"
2153
  msgstr ""
2154
 
2155
- #: wp-job-manager-functions.php:338
2156
  msgctxt "post status"
2157
  msgid "Pending payment"
2158
  msgstr ""
2159
 
2160
- #: wp-job-manager-functions.php:339
2161
  msgctxt "post status"
2162
  msgid "Active"
2163
  msgstr ""
2164
 
2165
- #: wp-job-manager-functions.php:460
2166
  msgid "Reset"
2167
  msgstr ""
2168
 
2169
- #: wp-job-manager-functions.php:464
2170
  msgid "RSS"
2171
  msgstr ""
2172
 
2173
- #: wp-job-manager-functions.php:572
2174
  msgid "Invalid email address."
2175
  msgstr ""
2176
 
2177
- #: wp-job-manager-functions.php:580
2178
  msgid "Your email address isn&#8217;t correct."
2179
  msgstr ""
2180
 
2181
- #: wp-job-manager-functions.php:584
2182
  msgid "This email is already registered, please choose another one."
2183
  msgstr ""
2184
 
2185
- #: wp-job-manager-functions.php:895
2186
  msgid "Full Time"
2187
  msgstr ""
2188
 
2189
- #: wp-job-manager-functions.php:896
2190
  msgid "Part Time"
2191
  msgstr ""
2192
 
2193
- #: wp-job-manager-functions.php:897
2194
  msgid "Contractor"
2195
  msgstr ""
2196
 
2197
- #: wp-job-manager-functions.php:898
2198
  msgid "Temporary"
2199
  msgstr ""
2200
 
2201
- #: wp-job-manager-functions.php:899
2202
  msgid "Intern"
2203
  msgstr ""
2204
 
2205
- #: wp-job-manager-functions.php:900
2206
  msgid "Volunteer"
2207
  msgstr ""
2208
 
2209
- #: wp-job-manager-functions.php:901
2210
  msgid "Per Diem"
2211
  msgstr ""
2212
 
2213
- #: wp-job-manager-functions.php:902
2214
  msgid "Other"
2215
  msgstr ""
2216
 
2217
- #: wp-job-manager-functions.php:969
2218
  msgid "Passwords must be at least 8 characters long."
2219
  msgstr ""
2220
 
2221
- #: wp-job-manager-functions.php:1134
2222
  msgid "Choose a category&hellip;"
2223
  msgstr ""
2224
 
2225
  #. translators: %s is the list of allowed file types.
2226
- #: wp-job-manager-functions.php:1371
2227
  msgid "Uploaded files need to be one of the following file types: %s"
2228
  msgstr ""
2229
 
1
+ # Copyright (C) 2022 Automattic
2
+ # This file is distributed under the GPL2+.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WP Job Manager 1.35.3\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-job-manager/\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2022-03-02T15:34:10-03:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
+ "X-Generator: WP-CLI 2.6.0\n"
15
  "X-Domain: wp-job-manager\n"
16
 
17
  #. Plugin Name of the plugin
196
  msgid "%1$s updated. <a href=\"%2$s\">View</a>"
197
  msgstr ""
198
 
199
+ #. translators: %1$s is the singular name of the job listing post type; %2$s is the URL to view the listing.
200
  #: includes/admin/class-wp-job-manager-cpt.php:456
201
  msgid "Custom field updated."
202
  msgstr ""
313
  msgid "View"
314
  msgstr ""
315
 
316
+ #. translators: Placeholder %s is the singular label of the job listing post type.
317
  #: includes/admin/class-wp-job-manager-cpt.php:648
318
  #: includes/class-wp-job-manager-post-types.php:340
319
  #: includes/class-wp-job-manager-shortcodes.php:390
1018
  msgid "You must be logged in to upload files using this method."
1019
  msgstr ""
1020
 
1021
+ #. translators: Placeholder %s is the singular label of the job listing post type.
1022
  #: includes/class-wp-job-manager-data-exporter.php:51
1023
  #: includes/class-wp-job-manager-post-types.php:357
1024
  msgid "Company Logo"
1227
  msgid "Jobs"
1228
  msgstr ""
1229
 
1230
+ #. translators: Placeholder %s is the plural label of the job listing post type.
1231
  #: includes/class-wp-job-manager-post-types.php:337
1232
  msgid "Add New"
1233
  msgstr ""
1276
  msgstr ""
1277
 
1278
  #: includes/class-wp-job-manager-post-types.php:398
1279
+ #: wp-job-manager-functions.php:326
1280
  msgctxt "post status"
1281
  msgid "Expired"
1282
  msgstr ""
1289
  msgstr[1] ""
1290
 
1291
  #: includes/class-wp-job-manager-post-types.php:411
1292
+ #: wp-job-manager-functions.php:327
1293
  msgctxt "post status"
1294
  msgid "Preview"
1295
  msgstr ""
1417
  msgid "Missing submission page."
1418
  msgstr ""
1419
 
1420
+ #. translators: Placeholder %s is the plural label for the job listing post type.
1421
  #: includes/class-wp-job-manager-shortcodes.php:341
1422
  #: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:36
1423
  #: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:52
1479
  msgstr ""
1480
 
1481
  #. translators: Placeholders %1$s and %2$s are the names of the two cookies used in WP Job Manager.
1482
+ #: includes/class-wp-job-manager.php:140
1483
  msgid ""
1484
  "This site adds the following cookies to help users resume job submissions that they\n"
1485
  "\t\t\t\thave started but have not completed: %1$s and %2$s"
1486
  msgstr ""
1487
 
1488
+ #: includes/class-wp-job-manager.php:361
1489
  msgid "Load previous listings"
1490
  msgstr ""
1491
 
1492
+ #: includes/class-wp-job-manager.php:489
1493
  msgid "Invalid file type. Accepted types:"
1494
  msgstr ""
1495
 
1496
+ #: includes/class-wp-job-manager.php:507
1497
  msgid "Any Category"
1498
  msgstr ""
1499
 
1500
  #. translators: Placeholder %d is the number of files to that users are limited to.
1501
+ #: includes/class-wp-job-manager.php:523
1502
  #: includes/forms/class-wp-job-manager-form-submit-job.php:462
1503
  msgid "You are only allowed to upload a maximum of %d files."
1504
  msgstr ""
1505
 
1506
+ #: includes/class-wp-job-manager.php:531
1507
  msgid "Are you sure you want to delete this listing?"
1508
  msgstr ""
1509
 
1510
+ #: includes/class-wp-job-manager.php:539
1511
  msgid "This field is required."
1512
  msgstr ""
1513
 
1678
  #. translators: Placeholder %1$s is field label; %2$s is the file mime type; %3$s is the allowed mime-types.
1679
  #. translators: %1$s is the file field label; %2$s is the file type; %3$s is the list of allowed file types.
1680
  #: includes/forms/class-wp-job-manager-form-submit-job.php:435
1681
+ #: wp-job-manager-functions.php:1359
1682
  msgid "\"%1$s\" (filetype %2$s) needs to be one of the following file types: %3$s"
1683
  msgstr ""
1684
 
1898
  msgid "Sign in"
1899
  msgstr ""
1900
 
1901
+ #: templates/account-signin.php:46
1902
+ msgid "If you don't have an account you can create one below by entering your email address/username."
 
1903
  msgstr ""
1904
 
1905
+ #: templates/account-signin.php:46
 
1906
  msgid "optionally"
1907
  msgstr ""
1908
 
1909
+ #: templates/account-signin.php:48
1910
  msgid "Your account details will be confirmed via email."
1911
  msgstr ""
1912
 
1913
+ #: templates/account-signin.php:53
1914
  msgid "You must sign in to create a new listing."
1915
  msgstr ""
1916
 
1917
+ #: templates/account-signin.php:64
1918
  #: templates/job-submit.php:43
1919
  #: templates/job-submit.php:60
1920
  msgid "(optional)"
2047
  msgstr ""
2048
 
2049
  #: templates/form-fields/multiselect-field.php:20
2050
+ #: wp-job-manager-functions.php:1126
2051
  msgid "No results match"
2052
  msgstr ""
2053
 
2054
  #: templates/form-fields/multiselect-field.php:20
2055
+ #: wp-job-manager-functions.php:1127
2056
  msgid "Select Some Options"
2057
  msgstr ""
2058
 
2145
  msgid "%s submitted successfully. Your listing will be visible once approved."
2146
  msgstr ""
2147
 
2148
+ #: wp-job-manager-functions.php:325
2149
  msgctxt "post status"
2150
  msgid "Draft"
2151
  msgstr ""
2152
 
2153
+ #: wp-job-manager-functions.php:328
2154
  msgctxt "post status"
2155
  msgid "Pending approval"
2156
  msgstr ""
2157
 
2158
+ #: wp-job-manager-functions.php:329
2159
  msgctxt "post status"
2160
  msgid "Pending payment"
2161
  msgstr ""
2162
 
2163
+ #: wp-job-manager-functions.php:330
2164
  msgctxt "post status"
2165
  msgid "Active"
2166
  msgstr ""
2167
 
2168
+ #: wp-job-manager-functions.php:451
2169
  msgid "Reset"
2170
  msgstr ""
2171
 
2172
+ #: wp-job-manager-functions.php:455
2173
  msgid "RSS"
2174
  msgstr ""
2175
 
2176
+ #: wp-job-manager-functions.php:563
2177
  msgid "Invalid email address."
2178
  msgstr ""
2179
 
2180
+ #: wp-job-manager-functions.php:571
2181
  msgid "Your email address isn&#8217;t correct."
2182
  msgstr ""
2183
 
2184
+ #: wp-job-manager-functions.php:575
2185
  msgid "This email is already registered, please choose another one."
2186
  msgstr ""
2187
 
2188
+ #: wp-job-manager-functions.php:886
2189
  msgid "Full Time"
2190
  msgstr ""
2191
 
2192
+ #: wp-job-manager-functions.php:887
2193
  msgid "Part Time"
2194
  msgstr ""
2195
 
2196
+ #: wp-job-manager-functions.php:888
2197
  msgid "Contractor"
2198
  msgstr ""
2199
 
2200
+ #: wp-job-manager-functions.php:889
2201
  msgid "Temporary"
2202
  msgstr ""
2203
 
2204
+ #: wp-job-manager-functions.php:890
2205
  msgid "Intern"
2206
  msgstr ""
2207
 
2208
+ #: wp-job-manager-functions.php:891
2209
  msgid "Volunteer"
2210
  msgstr ""
2211
 
2212
+ #: wp-job-manager-functions.php:892
2213
  msgid "Per Diem"
2214
  msgstr ""
2215
 
2216
+ #: wp-job-manager-functions.php:893
2217
  msgid "Other"
2218
  msgstr ""
2219
 
2220
+ #: wp-job-manager-functions.php:960
2221
  msgid "Passwords must be at least 8 characters long."
2222
  msgstr ""
2223
 
2224
+ #: wp-job-manager-functions.php:1125
2225
  msgid "Choose a category&hellip;"
2226
  msgstr ""
2227
 
2228
  #. translators: %s is the list of allowed file types.
2229
+ #: wp-job-manager-functions.php:1362
2230
  msgid "Uploaded files need to be one of the following file types: %s"
2231
  msgstr ""
2232
 
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === WP Job Manager ===
2
- Contributors: mikejolley, automattic, adamkheckler, alexsanford1, annezazu, cena, chaselivingston, csonnek, davor.altman, donnapep, donncha, drawmyface, erania-pinnera, jacobshere, jakeom, jeherve, jenhooks, jgs, jonryan, kraftbj, lamdayap, lschuyler, macmanx, nancythanki, orangesareorange, rachelsquirrel, ryancowles, richardmtl, scarstocea
3
  Tags: job manager, job listing, job board, job management, job lists, job list, job, jobs, company, hiring, employment, employer, employees, candidate, freelance, internship, job listings, positions, board, application, hiring, listing, manager, recruiting, recruitment, talent
4
- Requires at least: 5.6
5
- Tested up to: 5.8
6
  Requires PHP: 7.0
7
- Stable tag: 1.35.2
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -153,6 +153,15 @@ It then creates a database based on the parameters passed to it.
153
 
154
  == Changelog ==
155
 
 
 
 
 
 
 
 
 
 
156
  = 1.35.2 =
157
  * Enhancement: Add agreement checkbox to job submission.
158
  * Fix: Remove unnecessary filter avoiding warning in WP 5.8.
1
  === WP Job Manager ===
2
+ Contributors: mikejolley, automattic, adamkheckler, alexsanford1, annezazu, cena, chaselivingston, csonnek, davor.altman, donnapep, donncha, drawmyface, erania-pinnera, fjorgemota, jacobshere, jakeom, jeherve, jenhooks, jgs, jonryan, kraftbj, lamdayap, lschuyler, macmanx, nancythanki, orangesareorange, rachelsquirrel, renathoc, ryancowles, richardmtl, scarstocea
3
  Tags: job manager, job listing, job board, job management, job lists, job list, job, jobs, company, hiring, employment, employer, employees, candidate, freelance, internship, job listings, positions, board, application, hiring, listing, manager, recruiting, recruitment, talent
4
+ Requires at least: 5.7
5
+ Tested up to: 5.9
6
  Requires PHP: 7.0
7
+ Stable tag: 1.35.3
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
153
 
154
  == Changelog ==
155
 
156
+ = 1.35.3 =
157
+ * Fix: Use wp_kses_post to process a job title instead of esc_html
158
+ * Fix: Fix dependencies (npm/composer) problems
159
+ * Fix: Decode html special chars for mailto link (@RafaelKr)
160
+ * Fix: Reset job filter properly by using jQuery's prop instead of jQuery's attr
161
+ * Fix: Fix not translatable string (@masteradhoc)
162
+ * Fix: Disable transient cache when the order is set to random or random featured
163
+ * Fix: Fix button "Apply for job" when the page is translated using Google Translate
164
+
165
  = 1.35.2 =
166
  * Enhancement: Add agreement checkbox to job submission.
167
  * Fix: Remove unnecessary filter avoiding warning in WP 5.8.
templates/account-signin.php CHANGED
@@ -43,8 +43,7 @@ if ( ! defined( 'ABSPATH' ) ) {
43
 
44
  <?php if ( $registration_enabled ) : ?>
45
 
46
- <?php // translators: Placeholder %s is the optionally text. ?>
47
- <?php printf( esc_html__( 'If you don\'t have an account you can %screate one below by entering your email address/username.', 'wp-job-manager' ), $account_required ? '' : esc_html__( 'optionally', 'wp-job-manager' ) . ' ' ); ?>
48
  <?php if ( $use_standard_password_email ) : ?>
49
  <?php printf( esc_html__( 'Your account details will be confirmed via email.', 'wp-job-manager' ) ); ?>
50
  <?php endif; ?>
43
 
44
  <?php if ( $registration_enabled ) : ?>
45
 
46
+ <?php printf( esc_html__( 'If you don\'t have an account you can create one below by entering your email address/username.', 'wp-job-manager' ), $account_required ? '' : esc_html__( 'optionally', 'wp-job-manager' ) . ' ' ); ?>
 
47
  <?php if ( $use_standard_password_email ) : ?>
48
  <?php printf( esc_html__( 'Your account details will be confirmed via email.', 'wp-job-manager' ) ); ?>
49
  <?php endif; ?>
templates/job-application-email.php CHANGED
@@ -16,4 +16,4 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  }
17
  ?>
18
  <?php // translators: %1$s is the email address, %2$s is the subject query args. ?>
19
- <p><?php printf( wp_kses_post( __( 'To apply for this job <strong>email your details to</strong> <a class="job_application_email" href="mailto:%1$s%2$s">%1$s</a>', 'wp-job-manager' ) ), esc_html( $apply->email ), '?subject=' . rawurlencode( $apply->subject ) ); ?></p>
16
  }
17
  ?>
18
  <?php // translators: %1$s is the email address, %2$s is the subject query args. ?>
19
+ <p><?php printf( wp_kses_post( __( 'To apply for this job <strong>email your details to</strong> <a class="job_application_email" href="mailto:%1$s%2$s">%1$s</a>', 'wp-job-manager' ) ), esc_html( $apply->email ), '?subject=' . rawurlencode( wp_specialchars_decode( $apply->subject, ENT_QUOTES ) ) ); ?></p>
wp-job-manager-functions.php CHANGED
@@ -162,13 +162,14 @@ if ( ! function_exists( 'get_job_listings' ) ) :
162
 
163
  do_action( 'before_get_job_listings', $query_args, $args );
164
 
 
 
165
  // Cache results.
166
- if ( apply_filters( 'get_job_listings_cache_results', true ) ) {
167
- $to_hash = wp_json_encode( $query_args );
168
- $query_args_hash = 'jm_' . md5( $to_hash . JOB_MANAGER_VERSION ) . WP_Job_Manager_Cache_Helper::get_transient_version( 'get_job_listings' );
169
- $result = false;
170
- $cached_query_results = true;
171
- $cached_query_posts = get_transient( $query_args_hash );
172
  if ( is_string( $cached_query_posts ) ) {
173
  $cached_query_posts = json_decode( $cached_query_posts, false );
174
  if (
@@ -196,8 +197,7 @@ if ( ! function_exists( 'get_job_listings' ) ) :
196
  }
197
 
198
  if ( false === $result ) {
199
- $result = new WP_Query( $query_args );
200
- $cached_query_results = false;
201
 
202
  $cacheable_result = [];
203
  $cacheable_result['posts'] = array_values( $result->posts );
@@ -205,15 +205,6 @@ if ( ! function_exists( 'get_job_listings' ) ) :
205
  $cacheable_result['max_num_pages'] = $result->max_num_pages;
206
  set_transient( $query_args_hash, wp_json_encode( $cacheable_result ), DAY_IN_SECONDS );
207
  }
208
-
209
- if ( $cached_query_results ) {
210
- // random order is cached so shuffle them.
211
- if ( 'rand_featured' === $args['orderby'] ) {
212
- usort( $result->posts, '_wpjm_shuffle_featured_post_results_helper' );
213
- } elseif ( 'rand' === $args['orderby'] ) {
214
- shuffle( $result->posts );
215
- }
216
- }
217
  } else {
218
  $result = new WP_Query( $query_args );
219
  }
162
 
163
  do_action( 'before_get_job_listings', $query_args, $args );
164
 
165
+ $should_cache = 'rand_featured' !== $args['orderby'] && 'rand' !== $args['orderby'];
166
+
167
  // Cache results.
168
+ if ( apply_filters( 'get_job_listings_cache_results', $should_cache ) ) {
169
+ $to_hash = wp_json_encode( $query_args );
170
+ $query_args_hash = 'jm_' . md5( $to_hash . JOB_MANAGER_VERSION ) . WP_Job_Manager_Cache_Helper::get_transient_version( 'get_job_listings' );
171
+ $result = false;
172
+ $cached_query_posts = get_transient( $query_args_hash );
 
173
  if ( is_string( $cached_query_posts ) ) {
174
  $cached_query_posts = json_decode( $cached_query_posts, false );
175
  if (
197
  }
198
 
199
  if ( false === $result ) {
200
+ $result = new WP_Query( $query_args );
 
201
 
202
  $cacheable_result = [];
203
  $cacheable_result['posts'] = array_values( $result->posts );
205
  $cacheable_result['max_num_pages'] = $result->max_num_pages;
206
  set_transient( $query_args_hash, wp_json_encode( $cacheable_result ), DAY_IN_SECONDS );
207
  }
 
 
 
 
 
 
 
 
 
208
  } else {
209
  $result = new WP_Query( $query_args );
210
  }
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.35.2
7
  * Author: Automattic
8
  * Author URI: https://wpjobmanager.com/
9
- * Requires at least: 5.6
10
- * Tested up to: 5.8
11
  * Requires PHP: 7.0
12
  * Text Domain: wp-job-manager
13
  * Domain Path: /languages/
@@ -21,7 +21,7 @@ if ( ! defined( 'ABSPATH' ) ) {
21
  }
22
 
23
  // Define constants.
24
- define( 'JOB_MANAGER_VERSION', '1.35.2' );
25
  define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
26
  define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
27
  define( 'JOB_MANAGER_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
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.35.3
7
  * Author: Automattic
8
  * Author URI: https://wpjobmanager.com/
9
+ * Requires at least: 5.7
10
+ * Tested up to: 5.9
11
  * Requires PHP: 7.0
12
  * Text Domain: wp-job-manager
13
  * Domain Path: /languages/
21
  }
22
 
23
  // Define constants.
24
+ define( 'JOB_MANAGER_VERSION', '1.35.3' );
25
  define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
26
  define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
27
  define( 'JOB_MANAGER_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );