Plugin Directory

Changeset 3186671


Ignore:
Timestamp:
11/12/2024 06:10:33 PM (14 months ago)
Author:
nsinelnikov
Message:

Update to version 1.2.9 from GitHub

Location:
jobboardwp
Files:
14 added
12 deleted
32 edited
1 copied

Legend:

Unmodified
Added
Removed
  • jobboardwp/tags/1.2.9/includes/blocks/jb-job-post/block.json

    r2916991 r3186671  
    66  "category": "jb-blocks",
    77  "icon": "forms",
    8   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    99  "textdomain": "jobboardwp"
    1010}
  • jobboardwp/tags/1.2.9/includes/blocks/jb-job-post/src/index.js

    r2916991 r3186671  
    1 import { registerBlockType } from '@wordpress/blocks';
    2 import ServerSideRender from '@wordpress/server-side-render';
    3 import { useBlockProps } from '@wordpress/block-editor';
    4 import jQuery from 'jquery';
    5 
    6 registerBlockType('jb-block/jb-job-post', {
    7     edit: function (props) {
    8         jQuery('#jb-job-preview, #jb-job-draft, #jb_company_logo_plupload').attr('disabled', 'disabled');
    9         const blockProps = useBlockProps();
    10         return (
    11             <div {...blockProps}>
    12                 <ServerSideRender block="jb-block/jb-job-post" />
    13             </div>
    14         );
    15     },
    16     save: function () {
    17         return null;
    18     }
    19 });
     1(()=>{"use strict";var e={n:o=>{var t=o&&o.__esModule?()=>o.default:()=>o;return e.d(t,{a:t}),t},d:(o,t)=>{for(var r in t)e.o(t,r)&&!e.o(o,r)&&Object.defineProperty(o,r,{enumerable:!0,get:t[r]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.blocks,t=window.wp.serverSideRender;var r=e.n(t);const n=window.wp.blockEditor,s=window.wp.element,c=window.ReactJSXRuntime;(0,o.registerBlockType)("jb-block/jb-job-post",{edit:function(){(0,s.useEffect)((()=>{document.querySelectorAll("#jb-job-preview, #jb-job-draft, #jb_company_logo_plupload").forEach((e=>{e.setAttribute("disabled","disabled")}))}),[]);const e=(0,n.useBlockProps)();return(0,c.jsx)("div",{...e,children:(0,c.jsx)(r(),{block:"jb-block/jb-job-post"})})},save:()=>null}),jQuery(window).on("load",(function(){new MutationObserver((e=>{e.forEach((e=>{jQuery(e.addedNodes).find(".jb-job-submission-form-wrapper").each((function(){const e=document.querySelector(".jb-job-submission-form-wrapper");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
  • jobboardwp/tags/1.2.9/includes/blocks/jb-job/block.json

    r2916991 r3186671  
    66  "icon": "text",
    77  "category": "jb-blocks",
    8   "attributes": {
    9     "job_id": {
    10       "type": "integer"
    11     }
    12   },
    13   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    149  "textdomain": "jobboardwp"
    1510}
  • jobboardwp/tags/1.2.9/includes/blocks/jb-job/src/index.js

    r2916991 r3186671  
    1 import { useSelect } from '@wordpress/data';
    2 import { PanelBody, SelectControl, Spinner } from '@wordpress/components';
    3 import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
    4 import ServerSideRender from '@wordpress/server-side-render';
    5 import { registerBlockType } from "@wordpress/blocks";
    6 
    7 registerBlockType('jb-block/jb-job', {
    8     edit: function (props) {
    9         let { job_id, setAttributes } = props.attributes;
    10         const blockProps = useBlockProps();
    11         const posts = useSelect((select) => {
    12             return select('core').getEntityRecords('postType', 'jb-job', {
    13                 per_page: -1,
    14                 _fields: ['id', 'title']
    15             });
    16         });
    17 
    18         if (!posts) {
    19             return (
    20                 <p>
    21                     <Spinner />
    22                     {wp.i18n.__('Loading...', 'jobboardwp')}
    23                 </p>
    24             );
    25         }
    26 
    27         if (posts.length === 0) {
    28             return 'No posts found.';
    29         }
    30 
    31         let posts_data = [{ id: '', title: '' }].concat(posts);
    32 
    33         let get_post = posts_data.map((post) => {
    34             return {
    35                 label: post.title.rendered,
    36                 value: post.id
    37             };
    38         });
    39 
    40         function jbShortcode(value) {
    41             let shortcode = '';
    42             if (value !== undefined && value !== '') {
    43                 shortcode = '[jb_job id="' + value + '"]';
    44             } else {
    45                 shortcode = '[jb_job]';
    46             }
    47             return shortcode;
    48         }
    49 
    50         return (
    51             <div {...blockProps}>
    52                 <ServerSideRender block="jb-block/jb-job" attributes={props.attributes} />
    53                 <InspectorControls>
    54                     <PanelBody title={wp.i18n.__('Job', 'jobboardwp')}>
    55                         <SelectControl
    56                             label={wp.i18n.__('Job', 'jobboardwp')}
    57                             className="jb_select_job"
    58                             value={job_id}
    59                             options={get_post}
    60                             style={{ height: '35px', lineHeight: '20px', padding: '0 7px' }}
    61                             onChange={(value) => {
    62                                 props.setAttributes({ job_id: value });
    63                                 jbShortcode(value);
    64                             }}
    65                         />
    66                     </PanelBody>
    67                 </InspectorControls>
    68             </div>
    69         );
    70     }, // end edit
    71 
    72     save: function save(props) {
    73         return null;
    74     }
    75 
    76 });
     1(()=>{"use strict";var e={n:o=>{var t=o&&o.__esModule?()=>o.default:()=>o;return e.d(t,{a:t}),t},d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.data,t=window.wp.components,n=window.wp.blockEditor,r=window.wp.serverSideRender;var i=e.n(r);const s=window.wp.blocks,a=window.ReactJSXRuntime;(0,s.registerBlockType)("jb-block/jb-job",{edit:function(e){const{attributes:r,setAttributes:s}=e,{job_id:d}=r,c=(0,n.useBlockProps)(),l=(0,o.useSelect)((e=>e("core").getEntityRecords("postType","jb-job",{per_page:-1,_fields:["id","title"]})),[]);if(!l)return(0,a.jsxs)("p",{children:[(0,a.jsx)(t.Spinner,{}),wp.i18n.__("Loading...","jobboardwp")]});if(0===l.length)return(0,a.jsx)("p",{children:wp.i18n.__("Jobs not found","jobboardwp")});const b=[{label:"",value:""}].concat(l.map((e=>({label:e.title.rendered,value:e.id}))));return(0,a.jsxs)("div",{...c,children:[(0,a.jsx)(i(),{block:"jb-block/jb-job",attributes:r}),(0,a.jsx)(n.InspectorControls,{children:(0,a.jsx)(t.PanelBody,{title:wp.i18n.__("Job","jobboardwp"),children:(0,a.jsx)(t.SelectControl,{label:wp.i18n.__("Job","jobboardwp"),className:"jb_select_job",value:d,options:b,onChange:e=>s({job_id:e})})})})]})},save:()=>null}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-single-job-wrapper").each((function(){const e=document.querySelector(".jb-single-job-wrapper");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
  • jobboardwp/tags/1.2.9/includes/blocks/jb-jobs-categories-list/block.json

    r2916991 r3186671  
    66  "category": "jb-blocks",
    77  "icon": "editor-ul",
    8   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    99  "textdomain": "jobboardwp"
    1010}
  • jobboardwp/tags/1.2.9/includes/blocks/jb-jobs-categories-list/src/index.js

    r2916991 r3186671  
    1 jQuery(window).on( 'load', function($) {
    2     var observer = new MutationObserver(function(mutations) {
    3         mutations.forEach(function(mutation) {
    4 
    5             jQuery(mutation.addedNodes).find('.jb-job-categories').each(function() {
    6                 wp.JB.job_categories_list.objects.wrapper = jQuery('.jb-job-categories');
    7                 if ( wp.JB.job_categories_list.objects.wrapper.length ) {
    8                     wp.JB.job_categories_list.ajax();
    9                 }
    10             });
    11 
    12             jQuery(mutation.addedNodes).find('.jb').each(function() {
    13                 jb_responsive();
    14             });
    15         });
    16     });
    17 
    18     observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
    19 });
    20 
    21 import { registerBlockType } from '@wordpress/blocks';
    22 import ServerSideRender from '@wordpress/server-side-render';
    23 import { useBlockProps } from '@wordpress/block-editor';
    24 
    25 registerBlockType('jb-block/jb-jobs-categories-list', {
    26     edit: function(props) {
    27         const blockProps = useBlockProps();
    28 
    29         return (
    30             <div {...blockProps}>
    31                 <ServerSideRender block="jb-block/jb-jobs-categories-list" />
    32             </div>
    33         );
    34     },
    35     save: function() {
    36         return null;
    37     }
    38 });
     1(()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var r in o)e.o(o,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:o[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.blocks,o=window.wp.serverSideRender;var r=e.n(o);const n=window.wp.blockEditor,c=window.ReactJSXRuntime;jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-job-categories").each((function(){wp.JB.job_categories_list.objects.wrapper=jQuery(".jb-job-categories"),wp.JB.job_categories_list.objects.wrapper.length&&wp.JB.job_categories_list.ajax();const e=document.querySelector(".jb-job-categories");e&&e.addEventListener("click",(t=>{t.target!==e&&(t.preventDefault(),t.stopPropagation())}))})),jQuery(e.addedNodes).find(".jb").each((function(){jb_responsive();const e=document.querySelector(".jb-job-categories");e&&e.addEventListener("click",(t=>{t.target!==e&&(t.preventDefault(),t.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})})),(0,t.registerBlockType)("jb-block/jb-jobs-categories-list",{edit:function(e){const t=(0,n.useBlockProps)();return(0,c.jsx)("div",{...t,children:(0,c.jsx)(r(),{block:"jb-block/jb-jobs-categories-list"})})},save:function(){return null}})})();
  • jobboardwp/tags/1.2.9/includes/blocks/jb-jobs-dashboard/block.json

    r2916991 r3186671  
    66  "category": "jb-blocks",
    77  "icon": "dashboard",
    8   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    99  "textdomain": "jobboardwp"
    1010}
  • jobboardwp/tags/1.2.9/includes/blocks/jb-jobs-dashboard/src/index.js

    r2916991 r3186671  
    1 jQuery(window).on( 'load', function($) {
    2     var observer = new MutationObserver(function(mutations) {
    3         mutations.forEach(function(mutation) {
    4 
    5             jQuery(mutation.addedNodes).find('.jb-job-dashboard').each(function() {
    6                 wp.JB.jobs_dashboard.objects.wrapper = jQuery('.jb-job-dashboard');
    7                 if ( wp.JB.jobs_dashboard.objects.wrapper.length ) {
    8                     wp.JB.jobs_dashboard.ajax();
    9                 }
    10             });
    11 
    12             jQuery(mutation.addedNodes).find('.jb').each(function() {
    13                 jb_responsive();
    14             });
    15         });
    16     });
    17 
    18     observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
    19 });
    20 
    21 import { registerBlockType } from '@wordpress/blocks';
    22 import ServerSideRender from '@wordpress/server-side-render';
    23 import { useBlockProps } from '@wordpress/block-editor';
    24 
    25 registerBlockType('jb-block/jb-jobs-dashboard', {
    26     edit: function (props) {
    27         const blockProps = useBlockProps();
    28 
    29         return (
    30             <div {...blockProps}>
    31                 <ServerSideRender block="jb-block/jb-jobs-dashboard" />
    32             </div>
    33         );
    34     },
    35 
    36     save: function () {
    37         return null;
    38     }
    39 });
     1(()=>{"use strict";var e={n:o=>{var r=o&&o.__esModule?()=>o.default:()=>o;return e.d(r,{a:r}),r},d:(o,r)=>{for(var t in r)e.o(r,t)&&!e.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:r[t]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.blocks,r=window.wp.serverSideRender;var t=e.n(r);const a=window.wp.blockEditor,n=window.ReactJSXRuntime;jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-job-dashboard").each((function(){wp.JB.jobs_dashboard.objects.wrapper=jQuery(".jb-job-dashboard"),wp.JB.jobs_dashboard.objects.wrapper.length&&wp.JB.jobs_dashboard.ajax();const e=document.querySelector(".jb-job-dashboard");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))})),jQuery(e.addedNodes).find(".jb").each((function(){jb_responsive();const e=document.querySelector(".jb-job-dashboard");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})})),(0,o.registerBlockType)("jb-block/jb-jobs-dashboard",{edit:function(e){const o=(0,a.useBlockProps)();return(0,n.jsx)("div",{...o,children:(0,n.jsx)(t(),{block:"jb-block/jb-jobs-dashboard"})})},save:function(){return null}})})();
  • jobboardwp/tags/1.2.9/includes/blocks/jb-jobs-list/block.json

    r2916991 r3186671  
    66  "icon": "editor-ul",
    77  "category": "jb-blocks",
    8   "attributes": {
    9     "user_id": {
    10       "type": "string"
    11     },
    12     "per_page": {
    13       "type": "string"
    14     },
    15     "no_logo": {
    16       "type": "boolean"
    17     },
    18     "hide_filled": {
    19       "type": "boolean"
    20     },
    21     "hide_expired": {
    22       "type": "boolean"
    23     },
    24     "hide_search": {
    25       "type": "boolean"
    26     },
    27     "hide_location_search": {
    28       "type": "boolean"
    29     },
    30     "hide_filters": {
    31       "type": "boolean"
    32     },
    33     "hide_job_types": {
    34       "type": "boolean"
    35     },
    36     "no_jobs_text": {
    37       "type": "string"
    38     },
    39     "no_job_search_text": {
    40       "type": "string"
    41     },
    42     "load_more_text": {
    43       "type": "string"
    44     },
    45     "category": {
    46       "type": "string"
    47     },
    48     "type": {
    49       "type": "string"
    50     },
    51     "orderby": {
    52       "type": "string",
    53       "default": "date"
    54     },
    55     "order": {
    56       "type": "string",
    57       "default": "DESC"
    58     },
    59     "filled_only": {
    60       "type": "boolean",
    61       "default": false
    62     }
    63   },
    64   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    659  "textdomain": "jobboardwp"
    6610}
  • jobboardwp/tags/1.2.9/includes/blocks/jb-jobs-list/src/index.js

    r2916991 r3186671  
    1 import { useSelect } from '@wordpress/data';
    2 import { PanelBody, SelectControl, TextControl, ToggleControl, Spinner } from '@wordpress/components';
    3 import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
    4 import ServerSideRender from '@wordpress/server-side-render';
    5 import { registerBlockType } from '@wordpress/blocks';
    6 
    7 registerBlockType('jb-block/jb-jobs-list', {
    8     edit: (function (props) {
    9             const blockProps = useBlockProps();
    10             const users = useSelect((select) => {
    11                 return select('core').getEntityRecords('root', 'user', {
    12                     per_page: -1,
    13                     _fields: ['id', 'name']
    14                 });
    15             });
    16             const types = useSelect((select) => {
    17                 return select('core').getEntityRecords('taxonomy', 'jb-job-type', {
    18                     per_page: -1,
    19                     _fields: ['id', 'name']
    20                 });
    21             });
    22             const categories = useSelect((select) => {
    23                 return select('core').getEntityRecords('taxonomy', 'jb-job-category', {
    24                     per_page: -1,
    25                     _fields: ['id', 'name']
    26                 });
    27             });
    28             let user_id = props.attributes.user_id,
    29                 users_data = [{id: '', name: ''}],
    30                 per_page = props.attributes.per_page,
    31                 no_logo = props.attributes.no_logo,
    32                 hide_filled = props.attributes.hide_filled,
    33                 hide_expired = props.attributes.hide_expired,
    34                 hide_search = props.attributes.hide_search,
    35                 hide_location_search = props.attributes.hide_location_search,
    36                 hide_filters = props.attributes.hide_filters,
    37                 hide_job_types = props.attributes.hide_job_types,
    38                 no_jobs_text = props.attributes.no_jobs_text,
    39                 no_job_search_text = props.attributes.no_job_search_text,
    40                 load_more_text = props.attributes.load_more_text,
    41                 orderby = props.attributes.orderby,
    42                 order = props.attributes.order,
    43                 orderby_opt = [
    44                     {label: wp.i18n.__('Date', 'jobboardwp'), value: 'date'},
    45                     {label: wp.i18n.__('Title', 'jobboardwp'), value: 'title'}
    46                 ],
    47                 order_opt = [
    48                     {label: wp.i18n.__('Ascending', 'jobboardwp'), value: 'ASC'},
    49                     {label: wp.i18n.__('Descending', 'jobboardwp'), value: 'DESC'}
    50                 ],
    51                 type = props.attributes.type,
    52                 types_data = [],
    53                 // categories = props.categories,
    54                 category = props.attributes.category,
    55                 categories_data = [],
    56                 filled_only = props.attributes.filled_only,
    57                 category_hide = '-hide',
    58                 type_hide = '-hide';
    59 
    60             if ('' === category) {
    61                 category = [];
    62             }
    63             if ('' === type) {
    64                 type = [];
    65             }
    66 
    67             if (users !== null) {
    68                 users_data = users_data.concat(users);
    69             }
    70 
    71             if (types !== null) {
    72                 types_data = types_data.concat(types);
    73                 if (types.length !== 0) {
    74                     type_hide = '';
    75                 }
    76             }
    77 
    78             if (categories !== null) {
    79                 categories_data = categories_data.concat(categories);
    80                 if (categories.length !== 0) {
    81                     category_hide = '';
    82                 }
    83             }
    84 
    85             function get_option(data, type) {
    86 
    87                 let option = [];
    88 
    89                 if (type === 'user') {
    90                     data.map(function (user) {
    91                         option.push(
    92                             {
    93                                 label: user.name,
    94                                 value: user.id
    95                             }
    96                         );
    97                     });
    98                 } else if (type === 'type') {
    99                     data.map(function (type) {
    100                         option.push(
    101                             {
    102                                 label: type.name,
    103                                 value: type.id
    104                             }
    105                         );
    106                     });
    107                 } else if (type === 'category') {
    108                     data.map(function (category) {
    109                         option.push(
    110                             {
    111                                 label: category.name,
    112                                 value: category.id
    113                             }
    114                         );
    115                     });
    116                 }
    117 
    118                 return option;
    119             }
    120 
    121             function jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only) {
    122                 let shortcode = '[jb_jobs';
    123 
    124                 if (user_id !== undefined && user_id !== '') {
    125                     shortcode = shortcode + ' employer-id="' + user_id + '"';
    126                 }
    127 
    128                 if (per_page !== undefined && per_page !== '') {
    129                     shortcode = shortcode + ' per-page="' + per_page + '"';
    130                 }
    131 
    132                 if (no_logo === true) {
    133                     shortcode = shortcode + ' no-logo="' + 1 + '"';
    134                 } else {
    135                     shortcode = shortcode + ' no-logo="' + 0 + '"';
    136                 }
    137 
    138                 if (hide_filled === true) {
    139                     shortcode = shortcode + ' hide-filled="' + 1 + '"';
    140                 } else {
    141                     shortcode = shortcode + ' hide-filled="' + 0 + '"';
    142                 }
    143 
    144                 if (hide_expired === true) {
    145                     shortcode = shortcode + ' hide-expired="' + 1 + '"';
    146                 } else {
    147                     shortcode = shortcode + ' hide-expired="' + 0 + '"';
    148                 }
    149 
    150                 if (hide_search === true) {
    151                     shortcode = shortcode + ' hide-search="' + 1 + '"';
    152                 } else {
    153                     shortcode = shortcode + ' hide-search="' + 0 + '"';
    154                 }
    155 
    156                 if (hide_location_search === true) {
    157                     shortcode = shortcode + ' hide-location-search="' + 1 + '"';
    158                 } else {
    159                     shortcode = shortcode + ' hide-location-search="' + 0 + '"';
    160                 }
    161 
    162                 if (hide_filters === true) {
    163                     shortcode = shortcode + ' hide-filters="' + 1 + '"';
    164                 } else {
    165                     shortcode = shortcode + ' hide-filters="' + 0 + '"';
    166                 }
    167 
    168                 if (hide_job_types === true) {
    169                     shortcode = shortcode + ' hide-job-types="' + 1 + '"';
    170                 } else {
    171                     shortcode = shortcode + ' hide-job-types="' + 0 + '"';
    172                 }
    173 
    174                 if (no_jobs_text !== undefined && no_jobs_text !== '') {
    175                     shortcode = shortcode + ' no-jobs-text="' + no_jobs_text + '"';
    176                 }
    177 
    178                 if (no_job_search_text !== undefined && no_job_search_text !== '') {
    179                     shortcode = shortcode + ' no-jobs-search-text="' + no_job_search_text + '"';
    180                 }
    181 
    182                 if (load_more_text !== undefined && load_more_text !== '') {
    183                     shortcode = shortcode + ' load-more-text="' + load_more_text + '"';
    184                 }
    185 
    186                 if (type !== undefined && type !== '') {
    187                     shortcode = shortcode + ' type="' + type + '"';
    188                 }
    189 
    190                 if (category !== undefined && category !== '') {
    191                     shortcode = shortcode + ' category="' + category + '"';
    192                 }
    193 
    194                 if (orderby !== undefined) {
    195                     shortcode = shortcode + ' orderby="' + orderby + '"';
    196                 }
    197 
    198                 if (order !== undefined) {
    199                     shortcode = shortcode + ' order="' + order + '"';
    200                 }
    201 
    202                 if (filled_only === true) {
    203                     shortcode = shortcode + ' filled-only="' + 1 + '"';
    204                 } else {
    205                     shortcode = shortcode + ' filled-only="' + 0 + '"';
    206                 }
    207 
    208                 shortcode = shortcode + ']';
    209                 return shortcode;
    210             }
    211 
    212             if (!users_data || !types_data || !categories_data) {
    213                 return (
    214                     <p>
    215                         <Spinner />
    216                         {wp.i18n.__('Loading...', 'jobboardwp')}
    217                     </p>
    218                 );
    219             }
    220 
    221             if (0 === users_data.length || 0 === types_data.length || 0 === categories_data.length) {
    222                 return 'No data.';
    223             }
    224 
    225             let get_category = get_option(categories_data, 'category');
    226             let get_users = get_option(users_data, 'user');
    227             let get_types = get_option(types_data, 'type');
    228 
    229             return (
    230                 <div {...blockProps}>
    231                     <ServerSideRender block="jb-block/jb-jobs-list" attributes={props.attributes} />
    232                     <InspectorControls>
    233                         <PanelBody title={wp.i18n.__('Jobs list', 'jobboardwp')}>
    234                             <SelectControl
    235                                 label={wp.i18n.__('Select employer', 'jobboardwp')}
    236                                 className="jb_select_employer"
    237                                 value={props.attributes.user_id}
    238                                 options={get_users}
    239                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    240                                 onChange={(value) => {
    241                                     props.setAttributes({user_id: value});
    242                                     jbShortcode(value, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    243                                 }}
    244                             />
    245                             <TextControl
    246                                 label={wp.i18n.__('Per page', 'jobboardwp')}
    247                                 className="jb_per_page"
    248                                 type="number"
    249                                 min={ 1 }
    250                                 value={props.attributes.per_page}
    251                                 onChange={(value) => {
    252                                     if (value === '') {
    253                                         value = 1;
    254                                     }
    255                                     props.setAttributes({per_page: value});
    256                                     jbShortcode(user_id, value, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    257                                 }}
    258                             />
    259                             <ToggleControl
    260                                 label={wp.i18n.__('Hide logo', 'jobboardwp')}
    261                                 className="jb_no_logo"
    262                                 checked={props.attributes.no_logo}
    263                                 onChange={(value) => {
    264                                     props.setAttributes({no_logo: value});
    265                                     jbShortcode(user_id, per_page, value, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    266                                 }}
    267                             />
    268                             <ToggleControl
    269                                 label={wp.i18n.__('Hide filled', 'jobboardwp')}
    270                                 className="jb_hide_filled"
    271                                 checked={props.attributes.hide_filled}
    272                                 onChange={(value) => {
    273                                     props.setAttributes({hide_filled: value});
    274                                     jbShortcode(user_id, per_page, no_logo, value, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    275                                 }}
    276                             />
    277                             <ToggleControl
    278                                 label={wp.i18n.__('Hide expired', 'jobboardwp')}
    279                                 className="jb_hide_expired"
    280                                 checked={props.attributes.hide_expired}
    281                                 onChange={(value) => {
    282                                     props.setAttributes({hide_expired: value});
    283                                     jbShortcode(user_id, per_page, no_logo, hide_filled, value, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    284                                 }}
    285                             />
    286                             <ToggleControl
    287                                 label={wp.i18n.__('Hide search', 'jobboardwp')}
    288                                 className="jb_hide_search"
    289                                 checked={props.attributes.hide_search}
    290                                 onChange={(value) => {
    291                                     props.setAttributes({hide_search: value});
    292                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, value, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    293                                 }}
    294                             />
    295                             <ToggleControl
    296                                 label={wp.i18n.__('Hide location search', 'jobboardwp')}
    297                                 className="jb_hide_location_search"
    298                                 checked={props.attributes.hide_location_search}
    299                                 onChange={(value) => {
    300                                     props.setAttributes({hide_location_search: value});
    301                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, value, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    302                                 }}
    303                             />
    304                             <ToggleControl
    305                                 label={wp.i18n.__('Hide filters', 'jobboardwp')}
    306                                 className="jb_hide_filters"
    307                                 checked={props.attributes.hide_filters}
    308                                 onChange={(value) => {
    309                                     props.setAttributes({hide_filters: value});
    310                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, value, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    311                                 }}
    312                             />
    313                             <ToggleControl
    314                                 label={wp.i18n.__('Hide job types', 'jobboardwp')}
    315                                 className="jb_hide_job_types"
    316                                 checked={props.attributes.hide_job_types}
    317                                 onChange={(value) => {
    318                                     props.setAttributes({hide_job_types: value});
    319                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, value, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    320                                 }}
    321                             />
    322                             <TextControl
    323                                 label={wp.i18n.__('No jobs text', 'jobboardwp')}
    324                                 className="jb_no_jobs_text"
    325                                 type="text"
    326                                 value={props.attributes.no_jobs_text}
    327                                 onChange={(value) => {
    328                                     props.setAttributes({no_jobs_text: value});
    329                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, value, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    330                                 }}
    331                             />
    332                             <TextControl
    333                                 label={wp.i18n.__('No job search text', 'jobboardwp')}
    334                                 className="jb_no_job_search_text"
    335                                 type="text"
    336                                 value={props.attributes.no_job_search_text}
    337                                 onChange={(value) => {
    338                                     props.setAttributes({no_job_search_text: value});
    339                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, value, load_more_text, category, type, orderby, order, filled_only);
    340                                 }}
    341                             />
    342                             <TextControl
    343                                 label={wp.i18n.__('Load more text', 'jobboardwp')}
    344                                 className="jb_load_more_text"
    345                                 type="text"
    346                                 value={props.attributes.load_more_text}
    347                                 onChange={(value) => {
    348                                     props.setAttributes({load_more_text: value});
    349                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, value, category, type, orderby, order, filled_only);
    350                                 }}
    351                             />
    352                             <SelectControl
    353                                 label={wp.i18n.__('Select category', 'jobboardwp')}
    354                                 className={'jb_select_category' + category_hide}
    355                                 value={category}
    356                                 options={get_category}
    357                                 multiple={true}
    358                                 suffix=' '
    359                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    360                                 onChange={(value) => {
    361                                     props.setAttributes({category: value});
    362                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, value, type, orderby, order, filled_only);
    363                                 }}
    364                             />
    365                             <SelectControl
    366                                 label={wp.i18n.__('Select type', 'jobboardwp')}
    367                                 className="{'jb_select_type' + type_hide}"
    368                                 value={type}
    369                                 options={get_types}
    370                                 multiple={true}
    371                                 suffix=' '
    372                                 style={{height: '80px', overflow: 'auto'}}
    373                                 onChange={(value) => {
    374                                     props.setAttributes({type: value});
    375                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, value, orderby, order, filled_only);
    376                                 }}
    377                             />
    378                             <SelectControl
    379                                 label={wp.i18n.__('Select order by', 'jobboardwp')}
    380                                 className='jb_select_orderby'
    381                                 value={props.attributes.orderby}
    382                                 options={orderby_opt}
    383                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    384                                 onChange={(value) => {
    385                                     props.setAttributes({orderby: value});
    386                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, value, order, filled_only);
    387                                 }}
    388                             />
    389                             <SelectControl
    390                                 label={wp.i18n.__('Select order', 'jobboardwp')}
    391                                 className='jb_select_order'
    392                                 value={props.attributes.order}
    393                                 options={order_opt}
    394                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    395                                 onChange={(value) => {
    396                                     props.setAttributes({order: value});
    397                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, value, filled_only);
    398                                 }}
    399                             />
    400                             <ToggleControl
    401                                 label={wp.i18n.__('Filled only', 'jobboardwp')}
    402                                 className="jb_filled_only"
    403                                 checked={props.attributes.filled_only}
    404                                 onChange={(value) => {
    405                                     props.setAttributes({filled_only: value});
    406                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, value);
    407                                 }}
    408                             />
    409                         </PanelBody>
    410                     </InspectorControls>
    411                 </div>
    412             );
    413         } // end withSelect
    414     ), // end edit
    415 
    416     save: function save(props) {
    417         return null;
    418     }
    419 });
    420 
    421 jQuery(window).on( 'load', function($) {
    422     let observer = new MutationObserver(function(mutations) {
    423         mutations.forEach(function(mutation) {
    424 
    425             jQuery(mutation.addedNodes).find('.jb-jobs').each(function() {
    426                 wp.JB.jobs_list.objects.wrapper = jQuery('.jb-jobs');
    427                 if ( wp.JB.jobs_list.objects.wrapper.length ) {
    428                     wp.JB.jobs_list.objects.wrapper.each( function () {
    429                         wp.JB.jobs_list.ajax( jQuery(this) );
    430                     });
    431                 }
    432             });
    433 
    434             jQuery(mutation.addedNodes).find('.jb').each(function() {
    435                 jb_responsive();
    436             });
    437         });
    438     });
    439 
    440     observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
    441 });
     1(()=>{"use strict";var e={n:o=>{var l=o&&o.__esModule?()=>o.default:()=>o;return e.d(l,{a:l}),l},d:(o,l)=>{for(var t in l)e.o(l,t)&&!e.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:l[t]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.data,l=window.wp.components,t=window.wp.blockEditor,a=window.wp.serverSideRender;var n=e.n(a);const r=window.wp.blocks,i=window.wp.element,b=window.ReactJSXRuntime;(0,r.registerBlockType)("jb-block/jb-jobs-list",{edit:e=>{const a=(0,t.useBlockProps)(),{attributes:r,setAttributes:d}=e,{user_id:s,per_page:p,no_logo:c,hide_filled:_,hide_expired:j,hide_search:w,hide_location_search:u,hide_filters:g,hide_job_types:h,no_jobs_text:x="",no_job_search_text:y="",load_more_text:C="",orderby:v,order:m,type:f,category:S,filled_only:k}=r,T=(0,o.useSelect)((e=>e("core").getEntityRecords("root","user",{per_page:-1,_fields:["id","name","username"]})),[]),E=(0,o.useSelect)((e=>e("core").getEntityRecords("taxonomy","jb-job-type",{per_page:-1,_fields:["id","name"]})),[]),B=(0,o.useSelect)((e=>e("core").getEntityRecords("taxonomy","jb-job-category",{per_page:-1,_fields:["id","name"]})),[]),H=(0,i.useMemo)((()=>({users:[{label:"",value:""}].concat(T?T.map((({id:e,name:o})=>({label:o,value:e}))):[]),types:E?E.map((({id:e,name:o})=>({label:o,value:e}))):[],categories:B?B.map((({id:e,name:o})=>({label:o,value:e}))):[]})),[T,E,B]),P=(0,i.useCallback)(((e,o)=>{d({[e]:o})}),[d]);return T&&E&&B?(0,b.jsxs)("div",{...a,children:[(0,b.jsx)(n(),{block:"jb-block/jb-jobs-list",attributes:r}),(0,b.jsx)(t.InspectorControls,{children:(0,b.jsxs)(l.PanelBody,{title:wp.i18n.__("Jobs list","jobboardwp"),children:[(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select employer","jobboardwp"),value:s,options:[{label:wp.i18n.__("Select a User","jobboardwp"),value:""},...T?T.map((e=>({label:e.name||e.username,value:e.id}))):[]],onChange:e=>P("user_id",e)}),(0,b.jsx)(l.TextControl,{label:wp.i18n.__("Per page","jobboardwp"),type:"number",min:1,value:p,onChange:e=>P("per_page",e||1)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide logo","jobboardwp"),checked:c,onChange:e=>P("no_logo",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide filled","jobboardwp"),checked:_,onChange:e=>P("hide_filled",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide expired","jobboardwp"),checked:j,onChange:e=>P("hide_expired",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide search","jobboardwp"),checked:w,onChange:e=>P("hide_search",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide location search","jobboardwp"),checked:u,onChange:e=>P("hide_location_search",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide filters","jobboardwp"),checked:g,onChange:e=>P("hide_filters",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide job types","jobboardwp"),checked:h,onChange:e=>P("hide_job_types",e)}),(0,b.jsx)(l.TextControl,{label:wp.i18n.__("No jobs text","jobboardwp"),value:x,onChange:e=>P("no_jobs_text",e)}),(0,b.jsx)(l.TextControl,{label:wp.i18n.__("No job search text","jobboardwp"),value:y,onChange:e=>P("no_job_search_text",e)}),(0,b.jsx)(l.TextControl,{label:wp.i18n.__("Load more text","jobboardwp"),value:C,onChange:e=>P("load_more_text",e)}),(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select category","jobboardwp"),value:S,options:H.categories,multiple:!0,onChange:e=>P("category",e)}),(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select type","jobboardwp"),value:f,options:H.types,multiple:!0,onChange:e=>P("type",e)}),(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select order by","jobboardwp"),value:v,options:[{label:wp.i18n.__("Date","jobboardwp"),value:"date"},{label:wp.i18n.__("Title","jobboardwp"),value:"title"}],onChange:e=>P("orderby",e)}),(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select order","jobboardwp"),value:m,options:[{label:wp.i18n.__("Ascending","jobboardwp"),value:"ASC"},{label:wp.i18n.__("Descending","jobboardwp"),value:"DESC"}],onChange:e=>P("order",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Filled only","jobboardwp"),checked:k,onChange:e=>P("filled_only",e)})]})})]}):(0,b.jsxs)("p",{children:[(0,b.jsx)(l.Spinner,{}),wp.i18n.__("Loading...","jobboardwp")]})},save:()=>null}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-jobs").each((function(){wp.JB.jobs_list.objects.wrapper=jQuery(".jb-jobs"),wp.JB.jobs_list.objects.wrapper.length&&wp.JB.jobs_list.objects.wrapper.each((function(){wp.JB.jobs_list.ajax(jQuery(this))}));const e=document.querySelector(".jb-jobs");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))})),jQuery(e.addedNodes).find(".jb").each((function(){jb_responsive();const e=document.querySelector(".jb-jobs");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
  • jobboardwp/tags/1.2.9/includes/blocks/jb-recent-jobs/block.json

    r2916991 r3186671  
    66  "icon": "editor-ul",
    77  "category": "jb-blocks",
    8   "attributes": {
    9     "number": {
    10       "type": "string",
    11       "default": 5
    12     },
    13     "no_logo": {
    14       "type": "boolean"
    15     },
    16     "hide_filled": {
    17       "type": "boolean"
    18     },
    19     "no_job_types": {
    20       "type": "boolean"
    21     },
    22     "category": {
    23       "type": "string"
    24     },
    25     "type": {
    26       "type": "string"
    27     },
    28     "orderby": {
    29       "type": "string",
    30       "default": "date"
    31     },
    32     "remote_only": {
    33       "type": "boolean",
    34       "default": false
    35     }
    36   },
    37   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    389  "textdomain": "jobboardwp"
    3910}
  • jobboardwp/tags/1.2.9/includes/blocks/jb-recent-jobs/src/index.js

    r2916991 r3186671  
    1 import { useSelect } from '@wordpress/data';
    2 import { PanelBody, SelectControl, TextControl, ToggleControl, Spinner } from '@wordpress/components';
    3 import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
    4 import ServerSideRender from '@wordpress/server-side-render';
    5 import { registerBlockType } from '@wordpress/blocks';
    6 
    7 registerBlockType('jb-block/jb-recent-jobs', {
    8     edit: (function (props) {
    9             const blockProps = useBlockProps();
    10             const types = useSelect((select) => {
    11                 return select('core').getEntityRecords('taxonomy', 'jb-job-type', {
    12                     per_page: -1,
    13                     _fields: ['id', 'name']
    14                 });
    15             });
    16             const categories = useSelect((select) => {
    17                 return select('core').getEntityRecords('taxonomy', 'jb-job-category', {
    18                     per_page: -1,
    19                     _fields: ['id', 'name']
    20                 });
    21             });
    22             let number = props.attributes.number,
    23                 no_logo = props.attributes.no_logo,
    24                 no_job_types = props.attributes.no_job_types,
    25                 hide_filled = props.attributes.hide_filled,
    26                 orderby = props.attributes.orderby,
    27                 orderby_opt = [
    28                     {label: wp.i18n.__('Posting date', 'jobboardwp'), value: 'date'},
    29                     {label: wp.i18n.__('Expiry date', 'jobboardwp'), value: 'expiry_date'}
    30                 ],
    31                 type = props.attributes.type,
    32                 types_data = [],
    33                 category = props.attributes.category,
    34                 categories_data = [],
    35                 remote_only = props.attributes.remote_only,
    36                 category_hide = '-hide',
    37                 type_hide = '-hide';
    38 
    39             if ('' === category) {
    40                 category = [];
    41             }
    42             if ('' === type) {
    43                 type = [];
    44             }
    45             if (types !== null) {
    46                 types_data = types_data.concat(types);
    47                 if (types.length !== 0) {
    48                     type_hide = '';
    49                 }
    50             }
    51 
    52             if (categories !== null) {
    53                 categories_data = categories_data.concat(categories);
    54                 if (categories.length !== 0) {
    55                     category_hide = '';
    56                 }
    57             }
    58 
    59             function get_option(data, type) {
    60 
    61                 let option = [];
    62 
    63                 if (type === 'type') {
    64                     data.map(function (type) {
    65                         option.push(
    66                             {
    67                                 label: type.name,
    68                                 value: type.id
    69                             }
    70                         );
    71                     });
    72                 } else if (type === 'category') {
    73                     data.map(function (category) {
    74                         option.push(
    75                             {
    76                                 label: category.name,
    77                                 value: category.id
    78                             }
    79                         );
    80                     });
    81                 }
    82 
    83                 return option;
    84             }
    85 
    86             function jbShortcode(number, category, type, remote_only, orderby, hide_filled, no_logo, no_job_types) {
    87                 let shortcode = '[jb_recent_jobs';
    88 
    89                 if (number !== undefined && number !== '') {
    90                     shortcode = shortcode + ' number="' + number + '"';
    91                 } else {
    92                     shortcode = shortcode + ' number="' + 5 + '"';
    93                 }
    94 
    95                 if (no_logo === true) {
    96                     shortcode = shortcode + ' no_logo="' + 1 + '"';
    97                 } else {
    98                     shortcode = shortcode + ' no_logo="' + 0 + '"';
    99                 }
    100 
    101                 if (hide_filled === true) {
    102                     shortcode = shortcode + ' hide_filled="' + 1 + '"';
    103                 } else {
    104                     shortcode = shortcode + ' hide_filled="' + 0 + '"';
    105                 }
    106 
    107                 if (no_job_types === true) {
    108                     shortcode = shortcode + ' no_job_types="' + 1 + '"';
    109                 } else {
    110                     shortcode = shortcode + ' no_job_types="' + 0 + '"';
    111                 }
    112 
    113                 if (type !== undefined && type !== '') {
    114                     shortcode = shortcode + ' type="' + type + '"';
    115                 }
    116 
    117                 if (category !== undefined && category !== '') {
    118                     shortcode = shortcode + ' category="' + category + '"';
    119                 }
    120 
    121                 if (orderby !== undefined) {
    122                     shortcode = shortcode + ' orderby="' + orderby + '"';
    123                 }
    124 
    125                 if (remote_only === true) {
    126                     shortcode = shortcode + ' remote_only="' + 1 + '"';
    127                 } else {
    128                     shortcode = shortcode + ' remote_only="' + 0 + '"';
    129                 }
    130 
    131                 shortcode = shortcode + ']';
    132                 return shortcode;
    133             }
    134 
    135             if (!types_data || !categories_data) {
    136                 return (
    137                     <p>
    138                         <Spinner />
    139                         {wp.i18n.__('Loading...', 'jobboardwp')}
    140                     </p>
    141                 );
    142             }
    143 
    144             if (0 === types_data.length || 0 === categories_data.length) {
    145                 return 'No data.';
    146             }
    147 
    148             let get_category = get_option(categories_data, 'category');
    149             let get_types = get_option(types_data, 'type');
    150 
    151 
    152             return (
    153                 <div {...blockProps}>
    154                     <ServerSideRender block="jb-block/jb-recent-jobs" attributes={props.attributes} />
    155                     <InspectorControls>
    156                         <PanelBody title={wp.i18n.__('Recent jobs', 'jobboardwp')}>
    157                             <TextControl
    158                                 label={wp.i18n.__('Number', 'jobboardwp')}
    159                                 className="jb_number"
    160                                 type="number"
    161                                 min={ 1 }
    162                                 value={props.attributes.number}
    163                                 onChange={(value) => {
    164                                     if (value === '') {
    165                                         value = 1;
    166                                     }
    167                                     props.setAttributes({number: value});
    168                                     jbShortcode(value, category, type, remote_only, orderby, hide_filled, no_logo, no_job_types);
    169                                 }}
    170                             />
    171                             <ToggleControl
    172                                 label={wp.i18n.__('Hide logo', 'jobboardwp')}
    173                                 className="jb_no_logo"
    174                                 checked={props.attributes.no_logo}
    175                                 onChange={(value) => {
    176                                     props.setAttributes({no_logo: value});
    177                                     jbShortcode(number, category, type, remote_only, orderby, hide_filled, value, no_job_types);
    178                                 }}
    179                             />
    180                             <ToggleControl
    181                                 label={wp.i18n.__('Hide filled', 'jobboardwp')}
    182                                 className="jb_hide_filled"
    183                                 checked={props.attributes.hide_filled}
    184                                 onChange={(value) => {
    185                                     props.setAttributes({hide_filled: value});
    186                                     jbShortcode(number, category, type, remote_only, orderby, value, no_logo, no_job_types);
    187                                 }}
    188                             />
    189                             <ToggleControl
    190                                 label={wp.i18n.__('Hide job types', 'jobboardwp')}
    191                                 className="jb_no_job_types"
    192                                 checked={props.attributes.no_job_types}
    193                                 onChange={(value) => {
    194                                     props.setAttributes({no_job_types: value});
    195                                     jbShortcode(number, category, type, remote_only, orderby, hide_filled, no_logo, value);
    196                                 }}
    197                             />
    198                             <SelectControl
    199                                 label={wp.i18n.__('Select category', 'jobboardwp')}
    200                                 className="{'jb_select_category' + category_hide}"
    201                                 value={category}
    202                                 options={get_category}
    203                                 multiple={true}
    204                                 suffix=' '
    205                                 style={{height: '80px', overflow: 'auto'}}
    206                                 onChange={(value) => {
    207                                     props.setAttributes({category: value});
    208                                     jbShortcode(number, value, type, remote_only, orderby, hide_filled, no_logo, no_job_types);
    209                                 }}
    210                             />
    211                             <SelectControl
    212                                 label={wp.i18n.__('Select type', 'jobboardwp')}
    213                                 className="{'jb_select_type' + type_hide}"
    214                                 value={type}
    215                                 options={get_types}
    216                                 multiple={true}
    217                                 suffix=' '
    218                                 style={{height: '80px', overflow: 'auto'}}
    219                                 onChange={(value) => {
    220                                     props.setAttributes({type: value});
    221                                     jbShortcode(number, category, value, remote_only, orderby, hide_filled, no_logo, no_job_types);
    222                                 }}
    223                             />
    224                             <SelectControl
    225                                 label={wp.i18n.__('Select order by', 'jobboardwp')}
    226                                 className='jb_select_orderby'
    227                                 value={props.attributes.orderby}
    228                                 options={orderby_opt}
    229                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    230                                 onChange={(value) => {
    231                                     props.setAttributes({orderby: value});
    232                                     jbShortcode(number, category, type, remote_only, value, hide_filled, no_logo, no_job_types);
    233                                 }}
    234                             />
    235                             <ToggleControl
    236                                 label={wp.i18n.__('Remote only', 'jobboardwp')}
    237                                 className="jb_remote_only"
    238                                 checked={props.attributes.remote_only}
    239                                 onChange={(value) => {
    240                                     props.setAttributes({remote_only: value});
    241                                     jbShortcode(number, category, type, value, orderby, hide_filled, no_logo, no_job_types);
    242                                 }}
    243                             />
    244                         </PanelBody>
    245                     </InspectorControls>
    246                 </div>
    247             );
    248         } // end withSelect
    249     ), // end edit
    250     save: function save(props) {
    251         return null;
    252     }
    253 });
     1(()=>{"use strict";var e={n:o=>{var t=o&&o.__esModule?()=>o.default:()=>o;return e.d(t,{a:t}),t},d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.data,t=window.wp.components,n=window.wp.blockEditor,r=window.wp.serverSideRender;var a=e.n(r);const l=window.wp.blocks,i=window.wp.element,b=window.ReactJSXRuntime;(0,l.registerBlockType)("jb-block/jb-recent-jobs",{edit:e=>{const r=(0,n.useBlockProps)(),{attributes:l,setAttributes:d}=e,{number:s,no_logo:c,hide_filled:p,no_job_types:w,orderby:j,type:u,category:y,remote_only:_}=l,g=(0,o.useSelect)((e=>e("core").getEntityRecords("taxonomy","jb-job-type",{per_page:-1,_fields:["id","name"]})),[]),m=(0,o.useSelect)((e=>e("core").getEntityRecords("taxonomy","jb-job-category",{per_page:-1,_fields:["id","name"]})),[]),h=(0,i.useMemo)((()=>({types:g?g.map((({id:e,name:o})=>({label:o,value:e}))):[],categories:m?m.map((({id:e,name:o})=>({label:o,value:e}))):[]})),[g,m]),v=(0,i.useCallback)(((e,o)=>d({[e]:o})),[d]);return g&&m?(0,b.jsxs)("div",{...r,children:[(0,b.jsx)(a(),{block:"jb-block/jb-recent-jobs",attributes:l}),(0,b.jsx)(n.InspectorControls,{children:(0,b.jsxs)(t.PanelBody,{title:wp.i18n.__("Recent jobs","jobboardwp"),children:[(0,b.jsx)(t.TextControl,{label:wp.i18n.__("Number","jobboardwp"),type:"number",min:1,value:s,onChange:e=>v("number",e||1)}),(0,b.jsx)(t.ToggleControl,{label:wp.i18n.__("Hide logo","jobboardwp"),checked:c,onChange:e=>v("no_logo",e)}),(0,b.jsx)(t.ToggleControl,{label:wp.i18n.__("Hide filled","jobboardwp"),checked:p,onChange:e=>v("hide_filled",e)}),(0,b.jsx)(t.ToggleControl,{label:wp.i18n.__("Hide job types","jobboardwp"),checked:w,onChange:e=>v("no_job_types",e)}),(0,b.jsx)(t.SelectControl,{label:wp.i18n.__("Select category","jobboardwp"),value:Array.isArray(y)?y:[],options:h.categories,multiple:!0,onChange:e=>v("category",Array.isArray(e)?e:[e])}),(0,b.jsx)(t.SelectControl,{label:wp.i18n.__("Select type","jobboardwp"),value:Array.isArray(u)?u:[],options:h.types,multiple:!0,onChange:e=>v("type",Array.isArray(e)?e:[e])}),(0,b.jsx)(t.SelectControl,{label:wp.i18n.__("Select order by","jobboardwp"),value:j,options:[{label:wp.i18n.__("Posting date","jobboardwp"),value:"date"},{label:wp.i18n.__("Expiry date","jobboardwp"),value:"expiry_date"}],onChange:e=>v("orderby",e)}),(0,b.jsx)(t.ToggleControl,{label:wp.i18n.__("Remote only","jobboardwp"),checked:_,onChange:e=>v("remote_only",e)})]})})]}):(0,b.jsxs)("p",{children:[(0,b.jsx)(t.Spinner,{}),wp.i18n.__("Loading...","jobboardwp")]})},save:()=>null}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-jobs-widget").each((function(){const e=document.querySelector(".jb-jobs-widget");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
  • jobboardwp/tags/1.2.9/includes/common/class-blocks.php

    r3169481 r3186671  
    99
    1010if ( ! class_exists( 'jb\common\Blocks' ) ) {
    11 
    1211
    1312    /**
     
    2726
    2827        public function block_editor_render() {
     28            if ( function_exists( 'wp_register_block_metadata_collection' ) ) {
     29                wp_register_block_metadata_collection( JB_PATH . 'includes/blocks', JB_PATH . 'includes/blocks/blocks-manifest.php' );
     30            }
     31
    2932            $blocks = array(
    3033                'jb-block/jb-job-post'             => array(
  • jobboardwp/tags/1.2.9/jobboardwp.php

    r3169481 r3186671  
    44 * Plugin URI: https://jobboardwp.com/
    55 * Description: Add a modern job board to your website. Display job listings and allow employers to submit and manage jobs all from the front-end
    6  * Version: 1.2.8
     6 * Version: 1.2.9
    77 * Author: JobBoardWP
    88 * Text Domain: jobboardwp
  • jobboardwp/tags/1.2.9/languages/jobboardwp.pot

    r3169481 r3186671  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: JobBoardWP 1.2.8\n"
     5"Project-Id-Version: JobBoardWP 1.2.9\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/jobboardwp\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2024-10-15T18:36:23+00:00\n"
     12"POT-Creation-Date: 2024-11-12T10:09:11+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.11.0\n"
     
    672672#: includes/common/class-cpt.php:59
    673673#: includes/common/class-cpt.php:363
    674 #: includes/blocks/jb-job/build/index.js:1
    675 #: includes/blocks/jb-job/src/index.js:54
    676 #: includes/blocks/jb-job/src/index.js:56
     674#: blocks-src/jb-job/src/index.js:44
     675#: blocks-src/jb-job/src/index.js:46
     676#: includes/blocks/jb-job/src/index.js:1
    677677msgid "Job"
    678678msgstr ""
     
    855855#: includes/admin/class-settings.php:730
    856856#: includes/admin/class-site-health.php:453
    857 #: includes/blocks/jb-jobs-list/build/index.js:1
    858 #: includes/blocks/jb-jobs-list/src/index.js:305
     857#: blocks-src/jb-jobs-list/src/index.js:91
     858#: includes/blocks/jb-jobs-list/src/index.js:1
    859859msgid "Hide filters"
    860860msgstr ""
     
    867867#: includes/admin/class-site-health.php:457
    868868#: includes/widgets/class-recent-jobs.php:192
    869 #: includes/blocks/jb-jobs-list/build/index.js:1
    870 #: includes/blocks/jb-jobs-list/src/index.js:314
    871 #: includes/blocks/jb-recent-jobs/build/index.js:1
    872 #: includes/blocks/jb-recent-jobs/src/index.js:190
     869#: blocks-src/jb-jobs-list/src/index.js:96
     870#: blocks-src/jb-recent-jobs/src/index.js:56
     871#: includes/blocks/jb-jobs-list/src/index.js:1
     872#: includes/blocks/jb-recent-jobs/src/index.js:1
    873873msgid "Hide job types"
    874874msgstr ""
     
    31953195
    31963196#: includes/frontend/class-shortcodes.php:522
    3197 #: includes/blocks/jb-jobs-list/build/index.js:1
    3198 #: includes/blocks/jb-jobs-list/src/index.js:45
     3197#: blocks-src/jb-jobs-list/src/index.js:134
     3198#: includes/blocks/jb-jobs-list/src/index.js:1
    31993199msgid "Title"
    32003200msgstr ""
     
    32573257
    32583258#: includes/widgets/class-recent-jobs.php:169
    3259 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3260 #: includes/blocks/jb-recent-jobs/src/index.js:236
     3259#: blocks-src/jb-recent-jobs/src/index.js:84
     3260#: includes/blocks/jb-recent-jobs/src/index.js:1
    32613261msgid "Remote only"
    32623262msgstr ""
    32633263
    32643264#: includes/widgets/class-recent-jobs.php:174
    3265 #: includes/blocks/jb-jobs-list/build/index.js:1
    3266 #: includes/blocks/jb-jobs-list/src/index.js:269
    3267 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3268 #: includes/blocks/jb-recent-jobs/src/index.js:181
     3265#: blocks-src/jb-jobs-list/src/index.js:71
     3266#: blocks-src/jb-recent-jobs/src/index.js:51
     3267#: includes/blocks/jb-jobs-list/src/index.js:1
     3268#: includes/blocks/jb-recent-jobs/src/index.js:1
    32693269msgid "Hide filled"
    32703270msgstr ""
     
    32753275
    32763276#: includes/widgets/class-recent-jobs.php:180
    3277 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3278 #: includes/blocks/jb-recent-jobs/src/index.js:29
     3277#: blocks-src/jb-recent-jobs/src/index.js:79
     3278#: includes/blocks/jb-recent-jobs/src/index.js:1
    32793279msgid "Expiry date"
    32803280msgstr ""
    32813281
    32823282#: includes/widgets/class-recent-jobs.php:181
    3283 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3284 #: includes/blocks/jb-recent-jobs/src/index.js:28
     3283#: blocks-src/jb-recent-jobs/src/index.js:78
     3284#: includes/blocks/jb-recent-jobs/src/index.js:1
    32853285msgid "Posting date"
    32863286msgstr ""
     
    36013601msgstr ""
    36023602
    3603 #: includes/blocks/jb-job/build/index.js:1
    3604 #: includes/blocks/jb-job/src/index.js:22
    3605 #: includes/blocks/jb-jobs-list/build/index.js:1
    3606 #: includes/blocks/jb-jobs-list/src/index.js:216
    3607 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3608 #: includes/blocks/jb-recent-jobs/src/index.js:139
     3603#: blocks-src/jb-job/src/index.js:24
     3604#: blocks-src/jb-jobs-list/src/index.js:36
     3605#: blocks-src/jb-recent-jobs/src/index.js:28
     3606#: includes/blocks/jb-job/src/index.js:1
     3607#: includes/blocks/jb-jobs-list/src/index.js:1
     3608#: includes/blocks/jb-recent-jobs/src/index.js:1
    36093609msgid "Loading..."
    36103610msgstr ""
    36113611
    3612 #: includes/blocks/jb-jobs-list/build/index.js:1
    3613 #: includes/blocks/jb-jobs-list/src/index.js:44
     3612#: blocks-src/jb-job/src/index.js:30
     3613#: includes/blocks/jb-job/src/index.js:1
     3614msgid "Jobs not found"
     3615msgstr ""
     3616
     3617#: blocks-src/jb-jobs-list/src/index.js:45
     3618#: includes/blocks/jb-jobs-list/src/index.js:1
     3619msgid "Jobs list"
     3620msgstr ""
     3621
     3622#: blocks-src/jb-jobs-list/src/index.js:47
     3623#: includes/blocks/jb-jobs-list/src/index.js:1
     3624msgid "Select employer"
     3625msgstr ""
     3626
     3627#: blocks-src/jb-jobs-list/src/index.js:50
     3628#: includes/blocks/jb-jobs-list/src/index.js:1
     3629msgid "Select a User"
     3630msgstr ""
     3631
     3632#: blocks-src/jb-jobs-list/src/index.js:59
     3633#: includes/blocks/jb-jobs-list/src/index.js:1
     3634msgid "Per page"
     3635msgstr ""
     3636
     3637#: blocks-src/jb-jobs-list/src/index.js:66
     3638#: blocks-src/jb-recent-jobs/src/index.js:46
     3639#: includes/blocks/jb-jobs-list/src/index.js:1
     3640#: includes/blocks/jb-recent-jobs/src/index.js:1
     3641msgid "Hide logo"
     3642msgstr ""
     3643
     3644#: blocks-src/jb-jobs-list/src/index.js:76
     3645#: includes/blocks/jb-jobs-list/src/index.js:1
     3646msgid "Hide expired"
     3647msgstr ""
     3648
     3649#: blocks-src/jb-jobs-list/src/index.js:81
     3650#: includes/blocks/jb-jobs-list/src/index.js:1
     3651msgid "Hide search"
     3652msgstr ""
     3653
     3654#: blocks-src/jb-jobs-list/src/index.js:86
     3655#: includes/blocks/jb-jobs-list/src/index.js:1
     3656msgid "Hide location search"
     3657msgstr ""
     3658
     3659#: blocks-src/jb-jobs-list/src/index.js:101
     3660#: includes/blocks/jb-jobs-list/src/index.js:1
     3661msgid "No jobs text"
     3662msgstr ""
     3663
     3664#: blocks-src/jb-jobs-list/src/index.js:106
     3665#: includes/blocks/jb-jobs-list/src/index.js:1
     3666msgid "No job search text"
     3667msgstr ""
     3668
     3669#: blocks-src/jb-jobs-list/src/index.js:111
     3670#: includes/blocks/jb-jobs-list/src/index.js:1
     3671msgid "Load more text"
     3672msgstr ""
     3673
     3674#: blocks-src/jb-jobs-list/src/index.js:116
     3675#: blocks-src/jb-recent-jobs/src/index.js:61
     3676#: includes/blocks/jb-jobs-list/src/index.js:1
     3677#: includes/blocks/jb-recent-jobs/src/index.js:1
     3678msgid "Select category"
     3679msgstr ""
     3680
     3681#: blocks-src/jb-jobs-list/src/index.js:123
     3682#: blocks-src/jb-recent-jobs/src/index.js:68
     3683#: includes/blocks/jb-jobs-list/src/index.js:1
     3684#: includes/blocks/jb-recent-jobs/src/index.js:1
     3685msgid "Select type"
     3686msgstr ""
     3687
     3688#: blocks-src/jb-jobs-list/src/index.js:130
     3689#: blocks-src/jb-recent-jobs/src/index.js:75
     3690#: includes/blocks/jb-jobs-list/src/index.js:1
     3691#: includes/blocks/jb-recent-jobs/src/index.js:1
     3692msgid "Select order by"
     3693msgstr ""
     3694
     3695#: blocks-src/jb-jobs-list/src/index.js:133
     3696#: includes/blocks/jb-jobs-list/src/index.js:1
    36143697msgid "Date"
    36153698msgstr ""
    36163699
    3617 #: includes/blocks/jb-jobs-list/build/index.js:1
    3618 #: includes/blocks/jb-jobs-list/src/index.js:48
     3700#: blocks-src/jb-jobs-list/src/index.js:139
     3701#: includes/blocks/jb-jobs-list/src/index.js:1
     3702msgid "Select order"
     3703msgstr ""
     3704
     3705#: blocks-src/jb-jobs-list/src/index.js:142
     3706#: includes/blocks/jb-jobs-list/src/index.js:1
    36193707msgid "Ascending"
    36203708msgstr ""
    36213709
    3622 #: includes/blocks/jb-jobs-list/build/index.js:1
    3623 #: includes/blocks/jb-jobs-list/src/index.js:49
     3710#: blocks-src/jb-jobs-list/src/index.js:143
     3711#: includes/blocks/jb-jobs-list/src/index.js:1
    36243712msgid "Descending"
    36253713msgstr ""
    36263714
    3627 #: includes/blocks/jb-jobs-list/build/index.js:1
    3628 #: includes/blocks/jb-jobs-list/src/index.js:233
    3629 msgid "Jobs list"
    3630 msgstr ""
    3631 
    3632 #: includes/blocks/jb-jobs-list/build/index.js:1
    3633 #: includes/blocks/jb-jobs-list/src/index.js:235
    3634 msgid "Select employer"
    3635 msgstr ""
    3636 
    3637 #: includes/blocks/jb-jobs-list/build/index.js:1
    3638 #: includes/blocks/jb-jobs-list/src/index.js:246
    3639 msgid "Per page"
    3640 msgstr ""
    3641 
    3642 #: includes/blocks/jb-jobs-list/build/index.js:1
    3643 #: includes/blocks/jb-jobs-list/src/index.js:260
    3644 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3645 #: includes/blocks/jb-recent-jobs/src/index.js:172
    3646 msgid "Hide logo"
    3647 msgstr ""
    3648 
    3649 #: includes/blocks/jb-jobs-list/build/index.js:1
    3650 #: includes/blocks/jb-jobs-list/src/index.js:278
    3651 msgid "Hide expired"
    3652 msgstr ""
    3653 
    3654 #: includes/blocks/jb-jobs-list/build/index.js:1
    3655 #: includes/blocks/jb-jobs-list/src/index.js:287
    3656 msgid "Hide search"
    3657 msgstr ""
    3658 
    3659 #: includes/blocks/jb-jobs-list/build/index.js:1
    3660 #: includes/blocks/jb-jobs-list/src/index.js:296
    3661 msgid "Hide location search"
    3662 msgstr ""
    3663 
    3664 #: includes/blocks/jb-jobs-list/build/index.js:1
    3665 #: includes/blocks/jb-jobs-list/src/index.js:323
    3666 msgid "No jobs text"
    3667 msgstr ""
    3668 
    3669 #: includes/blocks/jb-jobs-list/build/index.js:1
    3670 #: includes/blocks/jb-jobs-list/src/index.js:333
    3671 msgid "No job search text"
    3672 msgstr ""
    3673 
    3674 #: includes/blocks/jb-jobs-list/build/index.js:1
    3675 #: includes/blocks/jb-jobs-list/src/index.js:343
    3676 msgid "Load more text"
    3677 msgstr ""
    3678 
    3679 #: includes/blocks/jb-jobs-list/build/index.js:1
    3680 #: includes/blocks/jb-jobs-list/src/index.js:353
    3681 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3682 #: includes/blocks/jb-recent-jobs/src/index.js:199
    3683 msgid "Select category"
    3684 msgstr ""
    3685 
    3686 #: includes/blocks/jb-jobs-list/build/index.js:1
    3687 #: includes/blocks/jb-jobs-list/src/index.js:366
    3688 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3689 #: includes/blocks/jb-recent-jobs/src/index.js:212
    3690 msgid "Select type"
    3691 msgstr ""
    3692 
    3693 #: includes/blocks/jb-jobs-list/build/index.js:1
    3694 #: includes/blocks/jb-jobs-list/src/index.js:379
    3695 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3696 #: includes/blocks/jb-recent-jobs/src/index.js:225
    3697 msgid "Select order by"
    3698 msgstr ""
    3699 
    3700 #: includes/blocks/jb-jobs-list/build/index.js:1
    3701 #: includes/blocks/jb-jobs-list/src/index.js:390
    3702 msgid "Select order"
    3703 msgstr ""
    3704 
    3705 #: includes/blocks/jb-jobs-list/build/index.js:1
    3706 #: includes/blocks/jb-jobs-list/src/index.js:401
     3715#: blocks-src/jb-jobs-list/src/index.js:148
     3716#: includes/blocks/jb-jobs-list/src/index.js:1
    37073717msgid "Filled only"
    37083718msgstr ""
    37093719
    3710 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3711 #: includes/blocks/jb-recent-jobs/src/index.js:156
     3720#: blocks-src/jb-recent-jobs/src/index.js:37
     3721#: includes/blocks/jb-recent-jobs/src/index.js:1
    37123722msgid "Recent jobs"
    37133723msgstr ""
    37143724
    3715 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3716 #: includes/blocks/jb-recent-jobs/src/index.js:158
     3725#: blocks-src/jb-recent-jobs/src/index.js:39
     3726#: includes/blocks/jb-recent-jobs/src/index.js:1
    37173727msgid "Number"
    37183728msgstr ""
    37193729
     3730#: blocks-src/jb-job-post/block.json
    37203731#: includes/blocks/jb-job-post/block.json
    37213732msgctxt "block title"
     
    37233734msgstr ""
    37243735
     3736#: blocks-src/jb-job-post/block.json
    37253737#: includes/blocks/jb-job-post/block.json
    37263738msgctxt "block description"
     
    37283740msgstr ""
    37293741
     3742#: blocks-src/jb-job/block.json
    37303743#: includes/blocks/jb-job/block.json
    37313744msgctxt "block title"
     
    37333746msgstr ""
    37343747
     3748#: blocks-src/jb-job/block.json
    37353749#: includes/blocks/jb-job/block.json
    37363750msgctxt "block description"
     
    37383752msgstr ""
    37393753
     3754#: blocks-src/jb-jobs-categories-list/block.json
    37403755#: includes/blocks/jb-jobs-categories-list/block.json
    37413756msgctxt "block title"
     
    37433758msgstr ""
    37443759
     3760#: blocks-src/jb-jobs-categories-list/block.json
    37453761#: includes/blocks/jb-jobs-categories-list/block.json
    37463762msgctxt "block description"
     
    37483764msgstr ""
    37493765
     3766#: blocks-src/jb-jobs-dashboard/block.json
    37503767#: includes/blocks/jb-jobs-dashboard/block.json
    37513768msgctxt "block title"
     
    37533770msgstr ""
    37543771
     3772#: blocks-src/jb-jobs-dashboard/block.json
    37553773#: includes/blocks/jb-jobs-dashboard/block.json
    37563774msgctxt "block description"
     
    37583776msgstr ""
    37593777
     3778#: blocks-src/jb-jobs-list/block.json
    37603779#: includes/blocks/jb-jobs-list/block.json
    37613780msgctxt "block title"
     
    37633782msgstr ""
    37643783
     3784#: blocks-src/jb-jobs-list/block.json
    37653785#: includes/blocks/jb-jobs-list/block.json
    37663786msgctxt "block description"
     
    37683788msgstr ""
    37693789
     3790#: blocks-src/jb-recent-jobs/block.json
    37703791#: includes/blocks/jb-recent-jobs/block.json
    37713792msgctxt "block title"
     
    37733794msgstr ""
    37743795
     3796#: blocks-src/jb-recent-jobs/block.json
    37753797#: includes/blocks/jb-recent-jobs/block.json
    37763798msgctxt "block description"
  • jobboardwp/tags/1.2.9/readme.txt

    r3169481 r3186671  
    66Requires PHP: 5.6
    77Requires at least: 5.5
    8 Tested up to: 6.6
    9 Stable tag: 1.2.8
     8Tested up to: 6.7
     9Stable tag: 1.2.9
    1010License: GPLv3
    1111License URI: http://www.gnu.org/licenses/gpl-3.0.txt
     
    105105
    106106== Changelog ==
     107
     108= 1.2.9: November 12, 2024 =
     109
     110* Added: Supporting new `wp_register_block_metadata_collection()` function for registering WP Blocks
     111
     112* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade
    107113
    108114= 1.2.8: October 16, 2024 =
  • jobboardwp/trunk/includes/blocks/jb-job-post/block.json

    r2916991 r3186671  
    66  "category": "jb-blocks",
    77  "icon": "forms",
    8   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    99  "textdomain": "jobboardwp"
    1010}
  • jobboardwp/trunk/includes/blocks/jb-job-post/src/index.js

    r2916991 r3186671  
    1 import { registerBlockType } from '@wordpress/blocks';
    2 import ServerSideRender from '@wordpress/server-side-render';
    3 import { useBlockProps } from '@wordpress/block-editor';
    4 import jQuery from 'jquery';
    5 
    6 registerBlockType('jb-block/jb-job-post', {
    7     edit: function (props) {
    8         jQuery('#jb-job-preview, #jb-job-draft, #jb_company_logo_plupload').attr('disabled', 'disabled');
    9         const blockProps = useBlockProps();
    10         return (
    11             <div {...blockProps}>
    12                 <ServerSideRender block="jb-block/jb-job-post" />
    13             </div>
    14         );
    15     },
    16     save: function () {
    17         return null;
    18     }
    19 });
     1(()=>{"use strict";var e={n:o=>{var t=o&&o.__esModule?()=>o.default:()=>o;return e.d(t,{a:t}),t},d:(o,t)=>{for(var r in t)e.o(t,r)&&!e.o(o,r)&&Object.defineProperty(o,r,{enumerable:!0,get:t[r]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.blocks,t=window.wp.serverSideRender;var r=e.n(t);const n=window.wp.blockEditor,s=window.wp.element,c=window.ReactJSXRuntime;(0,o.registerBlockType)("jb-block/jb-job-post",{edit:function(){(0,s.useEffect)((()=>{document.querySelectorAll("#jb-job-preview, #jb-job-draft, #jb_company_logo_plupload").forEach((e=>{e.setAttribute("disabled","disabled")}))}),[]);const e=(0,n.useBlockProps)();return(0,c.jsx)("div",{...e,children:(0,c.jsx)(r(),{block:"jb-block/jb-job-post"})})},save:()=>null}),jQuery(window).on("load",(function(){new MutationObserver((e=>{e.forEach((e=>{jQuery(e.addedNodes).find(".jb-job-submission-form-wrapper").each((function(){const e=document.querySelector(".jb-job-submission-form-wrapper");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
  • jobboardwp/trunk/includes/blocks/jb-job/block.json

    r2916991 r3186671  
    66  "icon": "text",
    77  "category": "jb-blocks",
    8   "attributes": {
    9     "job_id": {
    10       "type": "integer"
    11     }
    12   },
    13   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    149  "textdomain": "jobboardwp"
    1510}
  • jobboardwp/trunk/includes/blocks/jb-job/src/index.js

    r2916991 r3186671  
    1 import { useSelect } from '@wordpress/data';
    2 import { PanelBody, SelectControl, Spinner } from '@wordpress/components';
    3 import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
    4 import ServerSideRender from '@wordpress/server-side-render';
    5 import { registerBlockType } from "@wordpress/blocks";
    6 
    7 registerBlockType('jb-block/jb-job', {
    8     edit: function (props) {
    9         let { job_id, setAttributes } = props.attributes;
    10         const blockProps = useBlockProps();
    11         const posts = useSelect((select) => {
    12             return select('core').getEntityRecords('postType', 'jb-job', {
    13                 per_page: -1,
    14                 _fields: ['id', 'title']
    15             });
    16         });
    17 
    18         if (!posts) {
    19             return (
    20                 <p>
    21                     <Spinner />
    22                     {wp.i18n.__('Loading...', 'jobboardwp')}
    23                 </p>
    24             );
    25         }
    26 
    27         if (posts.length === 0) {
    28             return 'No posts found.';
    29         }
    30 
    31         let posts_data = [{ id: '', title: '' }].concat(posts);
    32 
    33         let get_post = posts_data.map((post) => {
    34             return {
    35                 label: post.title.rendered,
    36                 value: post.id
    37             };
    38         });
    39 
    40         function jbShortcode(value) {
    41             let shortcode = '';
    42             if (value !== undefined && value !== '') {
    43                 shortcode = '[jb_job id="' + value + '"]';
    44             } else {
    45                 shortcode = '[jb_job]';
    46             }
    47             return shortcode;
    48         }
    49 
    50         return (
    51             <div {...blockProps}>
    52                 <ServerSideRender block="jb-block/jb-job" attributes={props.attributes} />
    53                 <InspectorControls>
    54                     <PanelBody title={wp.i18n.__('Job', 'jobboardwp')}>
    55                         <SelectControl
    56                             label={wp.i18n.__('Job', 'jobboardwp')}
    57                             className="jb_select_job"
    58                             value={job_id}
    59                             options={get_post}
    60                             style={{ height: '35px', lineHeight: '20px', padding: '0 7px' }}
    61                             onChange={(value) => {
    62                                 props.setAttributes({ job_id: value });
    63                                 jbShortcode(value);
    64                             }}
    65                         />
    66                     </PanelBody>
    67                 </InspectorControls>
    68             </div>
    69         );
    70     }, // end edit
    71 
    72     save: function save(props) {
    73         return null;
    74     }
    75 
    76 });
     1(()=>{"use strict";var e={n:o=>{var t=o&&o.__esModule?()=>o.default:()=>o;return e.d(t,{a:t}),t},d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.data,t=window.wp.components,n=window.wp.blockEditor,r=window.wp.serverSideRender;var i=e.n(r);const s=window.wp.blocks,a=window.ReactJSXRuntime;(0,s.registerBlockType)("jb-block/jb-job",{edit:function(e){const{attributes:r,setAttributes:s}=e,{job_id:d}=r,c=(0,n.useBlockProps)(),l=(0,o.useSelect)((e=>e("core").getEntityRecords("postType","jb-job",{per_page:-1,_fields:["id","title"]})),[]);if(!l)return(0,a.jsxs)("p",{children:[(0,a.jsx)(t.Spinner,{}),wp.i18n.__("Loading...","jobboardwp")]});if(0===l.length)return(0,a.jsx)("p",{children:wp.i18n.__("Jobs not found","jobboardwp")});const b=[{label:"",value:""}].concat(l.map((e=>({label:e.title.rendered,value:e.id}))));return(0,a.jsxs)("div",{...c,children:[(0,a.jsx)(i(),{block:"jb-block/jb-job",attributes:r}),(0,a.jsx)(n.InspectorControls,{children:(0,a.jsx)(t.PanelBody,{title:wp.i18n.__("Job","jobboardwp"),children:(0,a.jsx)(t.SelectControl,{label:wp.i18n.__("Job","jobboardwp"),className:"jb_select_job",value:d,options:b,onChange:e=>s({job_id:e})})})})]})},save:()=>null}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-single-job-wrapper").each((function(){const e=document.querySelector(".jb-single-job-wrapper");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
  • jobboardwp/trunk/includes/blocks/jb-jobs-categories-list/block.json

    r2916991 r3186671  
    66  "category": "jb-blocks",
    77  "icon": "editor-ul",
    8   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    99  "textdomain": "jobboardwp"
    1010}
  • jobboardwp/trunk/includes/blocks/jb-jobs-categories-list/src/index.js

    r2916991 r3186671  
    1 jQuery(window).on( 'load', function($) {
    2     var observer = new MutationObserver(function(mutations) {
    3         mutations.forEach(function(mutation) {
    4 
    5             jQuery(mutation.addedNodes).find('.jb-job-categories').each(function() {
    6                 wp.JB.job_categories_list.objects.wrapper = jQuery('.jb-job-categories');
    7                 if ( wp.JB.job_categories_list.objects.wrapper.length ) {
    8                     wp.JB.job_categories_list.ajax();
    9                 }
    10             });
    11 
    12             jQuery(mutation.addedNodes).find('.jb').each(function() {
    13                 jb_responsive();
    14             });
    15         });
    16     });
    17 
    18     observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
    19 });
    20 
    21 import { registerBlockType } from '@wordpress/blocks';
    22 import ServerSideRender from '@wordpress/server-side-render';
    23 import { useBlockProps } from '@wordpress/block-editor';
    24 
    25 registerBlockType('jb-block/jb-jobs-categories-list', {
    26     edit: function(props) {
    27         const blockProps = useBlockProps();
    28 
    29         return (
    30             <div {...blockProps}>
    31                 <ServerSideRender block="jb-block/jb-jobs-categories-list" />
    32             </div>
    33         );
    34     },
    35     save: function() {
    36         return null;
    37     }
    38 });
     1(()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var r in o)e.o(o,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:o[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.blocks,o=window.wp.serverSideRender;var r=e.n(o);const n=window.wp.blockEditor,c=window.ReactJSXRuntime;jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-job-categories").each((function(){wp.JB.job_categories_list.objects.wrapper=jQuery(".jb-job-categories"),wp.JB.job_categories_list.objects.wrapper.length&&wp.JB.job_categories_list.ajax();const e=document.querySelector(".jb-job-categories");e&&e.addEventListener("click",(t=>{t.target!==e&&(t.preventDefault(),t.stopPropagation())}))})),jQuery(e.addedNodes).find(".jb").each((function(){jb_responsive();const e=document.querySelector(".jb-job-categories");e&&e.addEventListener("click",(t=>{t.target!==e&&(t.preventDefault(),t.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})})),(0,t.registerBlockType)("jb-block/jb-jobs-categories-list",{edit:function(e){const t=(0,n.useBlockProps)();return(0,c.jsx)("div",{...t,children:(0,c.jsx)(r(),{block:"jb-block/jb-jobs-categories-list"})})},save:function(){return null}})})();
  • jobboardwp/trunk/includes/blocks/jb-jobs-dashboard/block.json

    r2916991 r3186671  
    66  "category": "jb-blocks",
    77  "icon": "dashboard",
    8   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    99  "textdomain": "jobboardwp"
    1010}
  • jobboardwp/trunk/includes/blocks/jb-jobs-dashboard/src/index.js

    r2916991 r3186671  
    1 jQuery(window).on( 'load', function($) {
    2     var observer = new MutationObserver(function(mutations) {
    3         mutations.forEach(function(mutation) {
    4 
    5             jQuery(mutation.addedNodes).find('.jb-job-dashboard').each(function() {
    6                 wp.JB.jobs_dashboard.objects.wrapper = jQuery('.jb-job-dashboard');
    7                 if ( wp.JB.jobs_dashboard.objects.wrapper.length ) {
    8                     wp.JB.jobs_dashboard.ajax();
    9                 }
    10             });
    11 
    12             jQuery(mutation.addedNodes).find('.jb').each(function() {
    13                 jb_responsive();
    14             });
    15         });
    16     });
    17 
    18     observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
    19 });
    20 
    21 import { registerBlockType } from '@wordpress/blocks';
    22 import ServerSideRender from '@wordpress/server-side-render';
    23 import { useBlockProps } from '@wordpress/block-editor';
    24 
    25 registerBlockType('jb-block/jb-jobs-dashboard', {
    26     edit: function (props) {
    27         const blockProps = useBlockProps();
    28 
    29         return (
    30             <div {...blockProps}>
    31                 <ServerSideRender block="jb-block/jb-jobs-dashboard" />
    32             </div>
    33         );
    34     },
    35 
    36     save: function () {
    37         return null;
    38     }
    39 });
     1(()=>{"use strict";var e={n:o=>{var r=o&&o.__esModule?()=>o.default:()=>o;return e.d(r,{a:r}),r},d:(o,r)=>{for(var t in r)e.o(r,t)&&!e.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:r[t]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.blocks,r=window.wp.serverSideRender;var t=e.n(r);const a=window.wp.blockEditor,n=window.ReactJSXRuntime;jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-job-dashboard").each((function(){wp.JB.jobs_dashboard.objects.wrapper=jQuery(".jb-job-dashboard"),wp.JB.jobs_dashboard.objects.wrapper.length&&wp.JB.jobs_dashboard.ajax();const e=document.querySelector(".jb-job-dashboard");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))})),jQuery(e.addedNodes).find(".jb").each((function(){jb_responsive();const e=document.querySelector(".jb-job-dashboard");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})})),(0,o.registerBlockType)("jb-block/jb-jobs-dashboard",{edit:function(e){const o=(0,a.useBlockProps)();return(0,n.jsx)("div",{...o,children:(0,n.jsx)(t(),{block:"jb-block/jb-jobs-dashboard"})})},save:function(){return null}})})();
  • jobboardwp/trunk/includes/blocks/jb-jobs-list/block.json

    r2916991 r3186671  
    66  "icon": "editor-ul",
    77  "category": "jb-blocks",
    8   "attributes": {
    9     "user_id": {
    10       "type": "string"
    11     },
    12     "per_page": {
    13       "type": "string"
    14     },
    15     "no_logo": {
    16       "type": "boolean"
    17     },
    18     "hide_filled": {
    19       "type": "boolean"
    20     },
    21     "hide_expired": {
    22       "type": "boolean"
    23     },
    24     "hide_search": {
    25       "type": "boolean"
    26     },
    27     "hide_location_search": {
    28       "type": "boolean"
    29     },
    30     "hide_filters": {
    31       "type": "boolean"
    32     },
    33     "hide_job_types": {
    34       "type": "boolean"
    35     },
    36     "no_jobs_text": {
    37       "type": "string"
    38     },
    39     "no_job_search_text": {
    40       "type": "string"
    41     },
    42     "load_more_text": {
    43       "type": "string"
    44     },
    45     "category": {
    46       "type": "string"
    47     },
    48     "type": {
    49       "type": "string"
    50     },
    51     "orderby": {
    52       "type": "string",
    53       "default": "date"
    54     },
    55     "order": {
    56       "type": "string",
    57       "default": "DESC"
    58     },
    59     "filled_only": {
    60       "type": "boolean",
    61       "default": false
    62     }
    63   },
    64   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    659  "textdomain": "jobboardwp"
    6610}
  • jobboardwp/trunk/includes/blocks/jb-jobs-list/src/index.js

    r2916991 r3186671  
    1 import { useSelect } from '@wordpress/data';
    2 import { PanelBody, SelectControl, TextControl, ToggleControl, Spinner } from '@wordpress/components';
    3 import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
    4 import ServerSideRender from '@wordpress/server-side-render';
    5 import { registerBlockType } from '@wordpress/blocks';
    6 
    7 registerBlockType('jb-block/jb-jobs-list', {
    8     edit: (function (props) {
    9             const blockProps = useBlockProps();
    10             const users = useSelect((select) => {
    11                 return select('core').getEntityRecords('root', 'user', {
    12                     per_page: -1,
    13                     _fields: ['id', 'name']
    14                 });
    15             });
    16             const types = useSelect((select) => {
    17                 return select('core').getEntityRecords('taxonomy', 'jb-job-type', {
    18                     per_page: -1,
    19                     _fields: ['id', 'name']
    20                 });
    21             });
    22             const categories = useSelect((select) => {
    23                 return select('core').getEntityRecords('taxonomy', 'jb-job-category', {
    24                     per_page: -1,
    25                     _fields: ['id', 'name']
    26                 });
    27             });
    28             let user_id = props.attributes.user_id,
    29                 users_data = [{id: '', name: ''}],
    30                 per_page = props.attributes.per_page,
    31                 no_logo = props.attributes.no_logo,
    32                 hide_filled = props.attributes.hide_filled,
    33                 hide_expired = props.attributes.hide_expired,
    34                 hide_search = props.attributes.hide_search,
    35                 hide_location_search = props.attributes.hide_location_search,
    36                 hide_filters = props.attributes.hide_filters,
    37                 hide_job_types = props.attributes.hide_job_types,
    38                 no_jobs_text = props.attributes.no_jobs_text,
    39                 no_job_search_text = props.attributes.no_job_search_text,
    40                 load_more_text = props.attributes.load_more_text,
    41                 orderby = props.attributes.orderby,
    42                 order = props.attributes.order,
    43                 orderby_opt = [
    44                     {label: wp.i18n.__('Date', 'jobboardwp'), value: 'date'},
    45                     {label: wp.i18n.__('Title', 'jobboardwp'), value: 'title'}
    46                 ],
    47                 order_opt = [
    48                     {label: wp.i18n.__('Ascending', 'jobboardwp'), value: 'ASC'},
    49                     {label: wp.i18n.__('Descending', 'jobboardwp'), value: 'DESC'}
    50                 ],
    51                 type = props.attributes.type,
    52                 types_data = [],
    53                 // categories = props.categories,
    54                 category = props.attributes.category,
    55                 categories_data = [],
    56                 filled_only = props.attributes.filled_only,
    57                 category_hide = '-hide',
    58                 type_hide = '-hide';
    59 
    60             if ('' === category) {
    61                 category = [];
    62             }
    63             if ('' === type) {
    64                 type = [];
    65             }
    66 
    67             if (users !== null) {
    68                 users_data = users_data.concat(users);
    69             }
    70 
    71             if (types !== null) {
    72                 types_data = types_data.concat(types);
    73                 if (types.length !== 0) {
    74                     type_hide = '';
    75                 }
    76             }
    77 
    78             if (categories !== null) {
    79                 categories_data = categories_data.concat(categories);
    80                 if (categories.length !== 0) {
    81                     category_hide = '';
    82                 }
    83             }
    84 
    85             function get_option(data, type) {
    86 
    87                 let option = [];
    88 
    89                 if (type === 'user') {
    90                     data.map(function (user) {
    91                         option.push(
    92                             {
    93                                 label: user.name,
    94                                 value: user.id
    95                             }
    96                         );
    97                     });
    98                 } else if (type === 'type') {
    99                     data.map(function (type) {
    100                         option.push(
    101                             {
    102                                 label: type.name,
    103                                 value: type.id
    104                             }
    105                         );
    106                     });
    107                 } else if (type === 'category') {
    108                     data.map(function (category) {
    109                         option.push(
    110                             {
    111                                 label: category.name,
    112                                 value: category.id
    113                             }
    114                         );
    115                     });
    116                 }
    117 
    118                 return option;
    119             }
    120 
    121             function jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only) {
    122                 let shortcode = '[jb_jobs';
    123 
    124                 if (user_id !== undefined && user_id !== '') {
    125                     shortcode = shortcode + ' employer-id="' + user_id + '"';
    126                 }
    127 
    128                 if (per_page !== undefined && per_page !== '') {
    129                     shortcode = shortcode + ' per-page="' + per_page + '"';
    130                 }
    131 
    132                 if (no_logo === true) {
    133                     shortcode = shortcode + ' no-logo="' + 1 + '"';
    134                 } else {
    135                     shortcode = shortcode + ' no-logo="' + 0 + '"';
    136                 }
    137 
    138                 if (hide_filled === true) {
    139                     shortcode = shortcode + ' hide-filled="' + 1 + '"';
    140                 } else {
    141                     shortcode = shortcode + ' hide-filled="' + 0 + '"';
    142                 }
    143 
    144                 if (hide_expired === true) {
    145                     shortcode = shortcode + ' hide-expired="' + 1 + '"';
    146                 } else {
    147                     shortcode = shortcode + ' hide-expired="' + 0 + '"';
    148                 }
    149 
    150                 if (hide_search === true) {
    151                     shortcode = shortcode + ' hide-search="' + 1 + '"';
    152                 } else {
    153                     shortcode = shortcode + ' hide-search="' + 0 + '"';
    154                 }
    155 
    156                 if (hide_location_search === true) {
    157                     shortcode = shortcode + ' hide-location-search="' + 1 + '"';
    158                 } else {
    159                     shortcode = shortcode + ' hide-location-search="' + 0 + '"';
    160                 }
    161 
    162                 if (hide_filters === true) {
    163                     shortcode = shortcode + ' hide-filters="' + 1 + '"';
    164                 } else {
    165                     shortcode = shortcode + ' hide-filters="' + 0 + '"';
    166                 }
    167 
    168                 if (hide_job_types === true) {
    169                     shortcode = shortcode + ' hide-job-types="' + 1 + '"';
    170                 } else {
    171                     shortcode = shortcode + ' hide-job-types="' + 0 + '"';
    172                 }
    173 
    174                 if (no_jobs_text !== undefined && no_jobs_text !== '') {
    175                     shortcode = shortcode + ' no-jobs-text="' + no_jobs_text + '"';
    176                 }
    177 
    178                 if (no_job_search_text !== undefined && no_job_search_text !== '') {
    179                     shortcode = shortcode + ' no-jobs-search-text="' + no_job_search_text + '"';
    180                 }
    181 
    182                 if (load_more_text !== undefined && load_more_text !== '') {
    183                     shortcode = shortcode + ' load-more-text="' + load_more_text + '"';
    184                 }
    185 
    186                 if (type !== undefined && type !== '') {
    187                     shortcode = shortcode + ' type="' + type + '"';
    188                 }
    189 
    190                 if (category !== undefined && category !== '') {
    191                     shortcode = shortcode + ' category="' + category + '"';
    192                 }
    193 
    194                 if (orderby !== undefined) {
    195                     shortcode = shortcode + ' orderby="' + orderby + '"';
    196                 }
    197 
    198                 if (order !== undefined) {
    199                     shortcode = shortcode + ' order="' + order + '"';
    200                 }
    201 
    202                 if (filled_only === true) {
    203                     shortcode = shortcode + ' filled-only="' + 1 + '"';
    204                 } else {
    205                     shortcode = shortcode + ' filled-only="' + 0 + '"';
    206                 }
    207 
    208                 shortcode = shortcode + ']';
    209                 return shortcode;
    210             }
    211 
    212             if (!users_data || !types_data || !categories_data) {
    213                 return (
    214                     <p>
    215                         <Spinner />
    216                         {wp.i18n.__('Loading...', 'jobboardwp')}
    217                     </p>
    218                 );
    219             }
    220 
    221             if (0 === users_data.length || 0 === types_data.length || 0 === categories_data.length) {
    222                 return 'No data.';
    223             }
    224 
    225             let get_category = get_option(categories_data, 'category');
    226             let get_users = get_option(users_data, 'user');
    227             let get_types = get_option(types_data, 'type');
    228 
    229             return (
    230                 <div {...blockProps}>
    231                     <ServerSideRender block="jb-block/jb-jobs-list" attributes={props.attributes} />
    232                     <InspectorControls>
    233                         <PanelBody title={wp.i18n.__('Jobs list', 'jobboardwp')}>
    234                             <SelectControl
    235                                 label={wp.i18n.__('Select employer', 'jobboardwp')}
    236                                 className="jb_select_employer"
    237                                 value={props.attributes.user_id}
    238                                 options={get_users}
    239                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    240                                 onChange={(value) => {
    241                                     props.setAttributes({user_id: value});
    242                                     jbShortcode(value, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    243                                 }}
    244                             />
    245                             <TextControl
    246                                 label={wp.i18n.__('Per page', 'jobboardwp')}
    247                                 className="jb_per_page"
    248                                 type="number"
    249                                 min={ 1 }
    250                                 value={props.attributes.per_page}
    251                                 onChange={(value) => {
    252                                     if (value === '') {
    253                                         value = 1;
    254                                     }
    255                                     props.setAttributes({per_page: value});
    256                                     jbShortcode(user_id, value, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    257                                 }}
    258                             />
    259                             <ToggleControl
    260                                 label={wp.i18n.__('Hide logo', 'jobboardwp')}
    261                                 className="jb_no_logo"
    262                                 checked={props.attributes.no_logo}
    263                                 onChange={(value) => {
    264                                     props.setAttributes({no_logo: value});
    265                                     jbShortcode(user_id, per_page, value, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    266                                 }}
    267                             />
    268                             <ToggleControl
    269                                 label={wp.i18n.__('Hide filled', 'jobboardwp')}
    270                                 className="jb_hide_filled"
    271                                 checked={props.attributes.hide_filled}
    272                                 onChange={(value) => {
    273                                     props.setAttributes({hide_filled: value});
    274                                     jbShortcode(user_id, per_page, no_logo, value, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    275                                 }}
    276                             />
    277                             <ToggleControl
    278                                 label={wp.i18n.__('Hide expired', 'jobboardwp')}
    279                                 className="jb_hide_expired"
    280                                 checked={props.attributes.hide_expired}
    281                                 onChange={(value) => {
    282                                     props.setAttributes({hide_expired: value});
    283                                     jbShortcode(user_id, per_page, no_logo, hide_filled, value, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    284                                 }}
    285                             />
    286                             <ToggleControl
    287                                 label={wp.i18n.__('Hide search', 'jobboardwp')}
    288                                 className="jb_hide_search"
    289                                 checked={props.attributes.hide_search}
    290                                 onChange={(value) => {
    291                                     props.setAttributes({hide_search: value});
    292                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, value, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    293                                 }}
    294                             />
    295                             <ToggleControl
    296                                 label={wp.i18n.__('Hide location search', 'jobboardwp')}
    297                                 className="jb_hide_location_search"
    298                                 checked={props.attributes.hide_location_search}
    299                                 onChange={(value) => {
    300                                     props.setAttributes({hide_location_search: value});
    301                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, value, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    302                                 }}
    303                             />
    304                             <ToggleControl
    305                                 label={wp.i18n.__('Hide filters', 'jobboardwp')}
    306                                 className="jb_hide_filters"
    307                                 checked={props.attributes.hide_filters}
    308                                 onChange={(value) => {
    309                                     props.setAttributes({hide_filters: value});
    310                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, value, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    311                                 }}
    312                             />
    313                             <ToggleControl
    314                                 label={wp.i18n.__('Hide job types', 'jobboardwp')}
    315                                 className="jb_hide_job_types"
    316                                 checked={props.attributes.hide_job_types}
    317                                 onChange={(value) => {
    318                                     props.setAttributes({hide_job_types: value});
    319                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, value, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    320                                 }}
    321                             />
    322                             <TextControl
    323                                 label={wp.i18n.__('No jobs text', 'jobboardwp')}
    324                                 className="jb_no_jobs_text"
    325                                 type="text"
    326                                 value={props.attributes.no_jobs_text}
    327                                 onChange={(value) => {
    328                                     props.setAttributes({no_jobs_text: value});
    329                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, value, no_job_search_text, load_more_text, category, type, orderby, order, filled_only);
    330                                 }}
    331                             />
    332                             <TextControl
    333                                 label={wp.i18n.__('No job search text', 'jobboardwp')}
    334                                 className="jb_no_job_search_text"
    335                                 type="text"
    336                                 value={props.attributes.no_job_search_text}
    337                                 onChange={(value) => {
    338                                     props.setAttributes({no_job_search_text: value});
    339                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, value, load_more_text, category, type, orderby, order, filled_only);
    340                                 }}
    341                             />
    342                             <TextControl
    343                                 label={wp.i18n.__('Load more text', 'jobboardwp')}
    344                                 className="jb_load_more_text"
    345                                 type="text"
    346                                 value={props.attributes.load_more_text}
    347                                 onChange={(value) => {
    348                                     props.setAttributes({load_more_text: value});
    349                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, value, category, type, orderby, order, filled_only);
    350                                 }}
    351                             />
    352                             <SelectControl
    353                                 label={wp.i18n.__('Select category', 'jobboardwp')}
    354                                 className={'jb_select_category' + category_hide}
    355                                 value={category}
    356                                 options={get_category}
    357                                 multiple={true}
    358                                 suffix=' '
    359                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    360                                 onChange={(value) => {
    361                                     props.setAttributes({category: value});
    362                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, value, type, orderby, order, filled_only);
    363                                 }}
    364                             />
    365                             <SelectControl
    366                                 label={wp.i18n.__('Select type', 'jobboardwp')}
    367                                 className="{'jb_select_type' + type_hide}"
    368                                 value={type}
    369                                 options={get_types}
    370                                 multiple={true}
    371                                 suffix=' '
    372                                 style={{height: '80px', overflow: 'auto'}}
    373                                 onChange={(value) => {
    374                                     props.setAttributes({type: value});
    375                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, value, orderby, order, filled_only);
    376                                 }}
    377                             />
    378                             <SelectControl
    379                                 label={wp.i18n.__('Select order by', 'jobboardwp')}
    380                                 className='jb_select_orderby'
    381                                 value={props.attributes.orderby}
    382                                 options={orderby_opt}
    383                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    384                                 onChange={(value) => {
    385                                     props.setAttributes({orderby: value});
    386                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, value, order, filled_only);
    387                                 }}
    388                             />
    389                             <SelectControl
    390                                 label={wp.i18n.__('Select order', 'jobboardwp')}
    391                                 className='jb_select_order'
    392                                 value={props.attributes.order}
    393                                 options={order_opt}
    394                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    395                                 onChange={(value) => {
    396                                     props.setAttributes({order: value});
    397                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, value, filled_only);
    398                                 }}
    399                             />
    400                             <ToggleControl
    401                                 label={wp.i18n.__('Filled only', 'jobboardwp')}
    402                                 className="jb_filled_only"
    403                                 checked={props.attributes.filled_only}
    404                                 onChange={(value) => {
    405                                     props.setAttributes({filled_only: value});
    406                                     jbShortcode(user_id, per_page, no_logo, hide_filled, hide_expired, hide_search, hide_location_search, hide_filters, hide_job_types, no_jobs_text, no_job_search_text, load_more_text, category, type, orderby, order, value);
    407                                 }}
    408                             />
    409                         </PanelBody>
    410                     </InspectorControls>
    411                 </div>
    412             );
    413         } // end withSelect
    414     ), // end edit
    415 
    416     save: function save(props) {
    417         return null;
    418     }
    419 });
    420 
    421 jQuery(window).on( 'load', function($) {
    422     let observer = new MutationObserver(function(mutations) {
    423         mutations.forEach(function(mutation) {
    424 
    425             jQuery(mutation.addedNodes).find('.jb-jobs').each(function() {
    426                 wp.JB.jobs_list.objects.wrapper = jQuery('.jb-jobs');
    427                 if ( wp.JB.jobs_list.objects.wrapper.length ) {
    428                     wp.JB.jobs_list.objects.wrapper.each( function () {
    429                         wp.JB.jobs_list.ajax( jQuery(this) );
    430                     });
    431                 }
    432             });
    433 
    434             jQuery(mutation.addedNodes).find('.jb').each(function() {
    435                 jb_responsive();
    436             });
    437         });
    438     });
    439 
    440     observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
    441 });
     1(()=>{"use strict";var e={n:o=>{var l=o&&o.__esModule?()=>o.default:()=>o;return e.d(l,{a:l}),l},d:(o,l)=>{for(var t in l)e.o(l,t)&&!e.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:l[t]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.data,l=window.wp.components,t=window.wp.blockEditor,a=window.wp.serverSideRender;var n=e.n(a);const r=window.wp.blocks,i=window.wp.element,b=window.ReactJSXRuntime;(0,r.registerBlockType)("jb-block/jb-jobs-list",{edit:e=>{const a=(0,t.useBlockProps)(),{attributes:r,setAttributes:d}=e,{user_id:s,per_page:p,no_logo:c,hide_filled:_,hide_expired:j,hide_search:w,hide_location_search:u,hide_filters:g,hide_job_types:h,no_jobs_text:x="",no_job_search_text:y="",load_more_text:C="",orderby:v,order:m,type:f,category:S,filled_only:k}=r,T=(0,o.useSelect)((e=>e("core").getEntityRecords("root","user",{per_page:-1,_fields:["id","name","username"]})),[]),E=(0,o.useSelect)((e=>e("core").getEntityRecords("taxonomy","jb-job-type",{per_page:-1,_fields:["id","name"]})),[]),B=(0,o.useSelect)((e=>e("core").getEntityRecords("taxonomy","jb-job-category",{per_page:-1,_fields:["id","name"]})),[]),H=(0,i.useMemo)((()=>({users:[{label:"",value:""}].concat(T?T.map((({id:e,name:o})=>({label:o,value:e}))):[]),types:E?E.map((({id:e,name:o})=>({label:o,value:e}))):[],categories:B?B.map((({id:e,name:o})=>({label:o,value:e}))):[]})),[T,E,B]),P=(0,i.useCallback)(((e,o)=>{d({[e]:o})}),[d]);return T&&E&&B?(0,b.jsxs)("div",{...a,children:[(0,b.jsx)(n(),{block:"jb-block/jb-jobs-list",attributes:r}),(0,b.jsx)(t.InspectorControls,{children:(0,b.jsxs)(l.PanelBody,{title:wp.i18n.__("Jobs list","jobboardwp"),children:[(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select employer","jobboardwp"),value:s,options:[{label:wp.i18n.__("Select a User","jobboardwp"),value:""},...T?T.map((e=>({label:e.name||e.username,value:e.id}))):[]],onChange:e=>P("user_id",e)}),(0,b.jsx)(l.TextControl,{label:wp.i18n.__("Per page","jobboardwp"),type:"number",min:1,value:p,onChange:e=>P("per_page",e||1)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide logo","jobboardwp"),checked:c,onChange:e=>P("no_logo",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide filled","jobboardwp"),checked:_,onChange:e=>P("hide_filled",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide expired","jobboardwp"),checked:j,onChange:e=>P("hide_expired",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide search","jobboardwp"),checked:w,onChange:e=>P("hide_search",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide location search","jobboardwp"),checked:u,onChange:e=>P("hide_location_search",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide filters","jobboardwp"),checked:g,onChange:e=>P("hide_filters",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Hide job types","jobboardwp"),checked:h,onChange:e=>P("hide_job_types",e)}),(0,b.jsx)(l.TextControl,{label:wp.i18n.__("No jobs text","jobboardwp"),value:x,onChange:e=>P("no_jobs_text",e)}),(0,b.jsx)(l.TextControl,{label:wp.i18n.__("No job search text","jobboardwp"),value:y,onChange:e=>P("no_job_search_text",e)}),(0,b.jsx)(l.TextControl,{label:wp.i18n.__("Load more text","jobboardwp"),value:C,onChange:e=>P("load_more_text",e)}),(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select category","jobboardwp"),value:S,options:H.categories,multiple:!0,onChange:e=>P("category",e)}),(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select type","jobboardwp"),value:f,options:H.types,multiple:!0,onChange:e=>P("type",e)}),(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select order by","jobboardwp"),value:v,options:[{label:wp.i18n.__("Date","jobboardwp"),value:"date"},{label:wp.i18n.__("Title","jobboardwp"),value:"title"}],onChange:e=>P("orderby",e)}),(0,b.jsx)(l.SelectControl,{label:wp.i18n.__("Select order","jobboardwp"),value:m,options:[{label:wp.i18n.__("Ascending","jobboardwp"),value:"ASC"},{label:wp.i18n.__("Descending","jobboardwp"),value:"DESC"}],onChange:e=>P("order",e)}),(0,b.jsx)(l.ToggleControl,{label:wp.i18n.__("Filled only","jobboardwp"),checked:k,onChange:e=>P("filled_only",e)})]})})]}):(0,b.jsxs)("p",{children:[(0,b.jsx)(l.Spinner,{}),wp.i18n.__("Loading...","jobboardwp")]})},save:()=>null}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-jobs").each((function(){wp.JB.jobs_list.objects.wrapper=jQuery(".jb-jobs"),wp.JB.jobs_list.objects.wrapper.length&&wp.JB.jobs_list.objects.wrapper.each((function(){wp.JB.jobs_list.ajax(jQuery(this))}));const e=document.querySelector(".jb-jobs");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))})),jQuery(e.addedNodes).find(".jb").each((function(){jb_responsive();const e=document.querySelector(".jb-jobs");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
  • jobboardwp/trunk/includes/blocks/jb-recent-jobs/block.json

    r2916991 r3186671  
    66  "icon": "editor-ul",
    77  "category": "jb-blocks",
    8   "attributes": {
    9     "number": {
    10       "type": "string",
    11       "default": 5
    12     },
    13     "no_logo": {
    14       "type": "boolean"
    15     },
    16     "hide_filled": {
    17       "type": "boolean"
    18     },
    19     "no_job_types": {
    20       "type": "boolean"
    21     },
    22     "category": {
    23       "type": "string"
    24     },
    25     "type": {
    26       "type": "string"
    27     },
    28     "orderby": {
    29       "type": "string",
    30       "default": "date"
    31     },
    32     "remote_only": {
    33       "type": "boolean",
    34       "default": false
    35     }
    36   },
    37   "editorScript": "file:./build/index.js",
     8  "editorScript": "file:./src/index.js",
    389  "textdomain": "jobboardwp"
    3910}
  • jobboardwp/trunk/includes/blocks/jb-recent-jobs/src/index.js

    r2916991 r3186671  
    1 import { useSelect } from '@wordpress/data';
    2 import { PanelBody, SelectControl, TextControl, ToggleControl, Spinner } from '@wordpress/components';
    3 import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
    4 import ServerSideRender from '@wordpress/server-side-render';
    5 import { registerBlockType } from '@wordpress/blocks';
    6 
    7 registerBlockType('jb-block/jb-recent-jobs', {
    8     edit: (function (props) {
    9             const blockProps = useBlockProps();
    10             const types = useSelect((select) => {
    11                 return select('core').getEntityRecords('taxonomy', 'jb-job-type', {
    12                     per_page: -1,
    13                     _fields: ['id', 'name']
    14                 });
    15             });
    16             const categories = useSelect((select) => {
    17                 return select('core').getEntityRecords('taxonomy', 'jb-job-category', {
    18                     per_page: -1,
    19                     _fields: ['id', 'name']
    20                 });
    21             });
    22             let number = props.attributes.number,
    23                 no_logo = props.attributes.no_logo,
    24                 no_job_types = props.attributes.no_job_types,
    25                 hide_filled = props.attributes.hide_filled,
    26                 orderby = props.attributes.orderby,
    27                 orderby_opt = [
    28                     {label: wp.i18n.__('Posting date', 'jobboardwp'), value: 'date'},
    29                     {label: wp.i18n.__('Expiry date', 'jobboardwp'), value: 'expiry_date'}
    30                 ],
    31                 type = props.attributes.type,
    32                 types_data = [],
    33                 category = props.attributes.category,
    34                 categories_data = [],
    35                 remote_only = props.attributes.remote_only,
    36                 category_hide = '-hide',
    37                 type_hide = '-hide';
    38 
    39             if ('' === category) {
    40                 category = [];
    41             }
    42             if ('' === type) {
    43                 type = [];
    44             }
    45             if (types !== null) {
    46                 types_data = types_data.concat(types);
    47                 if (types.length !== 0) {
    48                     type_hide = '';
    49                 }
    50             }
    51 
    52             if (categories !== null) {
    53                 categories_data = categories_data.concat(categories);
    54                 if (categories.length !== 0) {
    55                     category_hide = '';
    56                 }
    57             }
    58 
    59             function get_option(data, type) {
    60 
    61                 let option = [];
    62 
    63                 if (type === 'type') {
    64                     data.map(function (type) {
    65                         option.push(
    66                             {
    67                                 label: type.name,
    68                                 value: type.id
    69                             }
    70                         );
    71                     });
    72                 } else if (type === 'category') {
    73                     data.map(function (category) {
    74                         option.push(
    75                             {
    76                                 label: category.name,
    77                                 value: category.id
    78                             }
    79                         );
    80                     });
    81                 }
    82 
    83                 return option;
    84             }
    85 
    86             function jbShortcode(number, category, type, remote_only, orderby, hide_filled, no_logo, no_job_types) {
    87                 let shortcode = '[jb_recent_jobs';
    88 
    89                 if (number !== undefined && number !== '') {
    90                     shortcode = shortcode + ' number="' + number + '"';
    91                 } else {
    92                     shortcode = shortcode + ' number="' + 5 + '"';
    93                 }
    94 
    95                 if (no_logo === true) {
    96                     shortcode = shortcode + ' no_logo="' + 1 + '"';
    97                 } else {
    98                     shortcode = shortcode + ' no_logo="' + 0 + '"';
    99                 }
    100 
    101                 if (hide_filled === true) {
    102                     shortcode = shortcode + ' hide_filled="' + 1 + '"';
    103                 } else {
    104                     shortcode = shortcode + ' hide_filled="' + 0 + '"';
    105                 }
    106 
    107                 if (no_job_types === true) {
    108                     shortcode = shortcode + ' no_job_types="' + 1 + '"';
    109                 } else {
    110                     shortcode = shortcode + ' no_job_types="' + 0 + '"';
    111                 }
    112 
    113                 if (type !== undefined && type !== '') {
    114                     shortcode = shortcode + ' type="' + type + '"';
    115                 }
    116 
    117                 if (category !== undefined && category !== '') {
    118                     shortcode = shortcode + ' category="' + category + '"';
    119                 }
    120 
    121                 if (orderby !== undefined) {
    122                     shortcode = shortcode + ' orderby="' + orderby + '"';
    123                 }
    124 
    125                 if (remote_only === true) {
    126                     shortcode = shortcode + ' remote_only="' + 1 + '"';
    127                 } else {
    128                     shortcode = shortcode + ' remote_only="' + 0 + '"';
    129                 }
    130 
    131                 shortcode = shortcode + ']';
    132                 return shortcode;
    133             }
    134 
    135             if (!types_data || !categories_data) {
    136                 return (
    137                     <p>
    138                         <Spinner />
    139                         {wp.i18n.__('Loading...', 'jobboardwp')}
    140                     </p>
    141                 );
    142             }
    143 
    144             if (0 === types_data.length || 0 === categories_data.length) {
    145                 return 'No data.';
    146             }
    147 
    148             let get_category = get_option(categories_data, 'category');
    149             let get_types = get_option(types_data, 'type');
    150 
    151 
    152             return (
    153                 <div {...blockProps}>
    154                     <ServerSideRender block="jb-block/jb-recent-jobs" attributes={props.attributes} />
    155                     <InspectorControls>
    156                         <PanelBody title={wp.i18n.__('Recent jobs', 'jobboardwp')}>
    157                             <TextControl
    158                                 label={wp.i18n.__('Number', 'jobboardwp')}
    159                                 className="jb_number"
    160                                 type="number"
    161                                 min={ 1 }
    162                                 value={props.attributes.number}
    163                                 onChange={(value) => {
    164                                     if (value === '') {
    165                                         value = 1;
    166                                     }
    167                                     props.setAttributes({number: value});
    168                                     jbShortcode(value, category, type, remote_only, orderby, hide_filled, no_logo, no_job_types);
    169                                 }}
    170                             />
    171                             <ToggleControl
    172                                 label={wp.i18n.__('Hide logo', 'jobboardwp')}
    173                                 className="jb_no_logo"
    174                                 checked={props.attributes.no_logo}
    175                                 onChange={(value) => {
    176                                     props.setAttributes({no_logo: value});
    177                                     jbShortcode(number, category, type, remote_only, orderby, hide_filled, value, no_job_types);
    178                                 }}
    179                             />
    180                             <ToggleControl
    181                                 label={wp.i18n.__('Hide filled', 'jobboardwp')}
    182                                 className="jb_hide_filled"
    183                                 checked={props.attributes.hide_filled}
    184                                 onChange={(value) => {
    185                                     props.setAttributes({hide_filled: value});
    186                                     jbShortcode(number, category, type, remote_only, orderby, value, no_logo, no_job_types);
    187                                 }}
    188                             />
    189                             <ToggleControl
    190                                 label={wp.i18n.__('Hide job types', 'jobboardwp')}
    191                                 className="jb_no_job_types"
    192                                 checked={props.attributes.no_job_types}
    193                                 onChange={(value) => {
    194                                     props.setAttributes({no_job_types: value});
    195                                     jbShortcode(number, category, type, remote_only, orderby, hide_filled, no_logo, value);
    196                                 }}
    197                             />
    198                             <SelectControl
    199                                 label={wp.i18n.__('Select category', 'jobboardwp')}
    200                                 className="{'jb_select_category' + category_hide}"
    201                                 value={category}
    202                                 options={get_category}
    203                                 multiple={true}
    204                                 suffix=' '
    205                                 style={{height: '80px', overflow: 'auto'}}
    206                                 onChange={(value) => {
    207                                     props.setAttributes({category: value});
    208                                     jbShortcode(number, value, type, remote_only, orderby, hide_filled, no_logo, no_job_types);
    209                                 }}
    210                             />
    211                             <SelectControl
    212                                 label={wp.i18n.__('Select type', 'jobboardwp')}
    213                                 className="{'jb_select_type' + type_hide}"
    214                                 value={type}
    215                                 options={get_types}
    216                                 multiple={true}
    217                                 suffix=' '
    218                                 style={{height: '80px', overflow: 'auto'}}
    219                                 onChange={(value) => {
    220                                     props.setAttributes({type: value});
    221                                     jbShortcode(number, category, value, remote_only, orderby, hide_filled, no_logo, no_job_types);
    222                                 }}
    223                             />
    224                             <SelectControl
    225                                 label={wp.i18n.__('Select order by', 'jobboardwp')}
    226                                 className='jb_select_orderby'
    227                                 value={props.attributes.orderby}
    228                                 options={orderby_opt}
    229                                 style={{height: '35px', lineHeight: '20px', padding: '0 7px'}}
    230                                 onChange={(value) => {
    231                                     props.setAttributes({orderby: value});
    232                                     jbShortcode(number, category, type, remote_only, value, hide_filled, no_logo, no_job_types);
    233                                 }}
    234                             />
    235                             <ToggleControl
    236                                 label={wp.i18n.__('Remote only', 'jobboardwp')}
    237                                 className="jb_remote_only"
    238                                 checked={props.attributes.remote_only}
    239                                 onChange={(value) => {
    240                                     props.setAttributes({remote_only: value});
    241                                     jbShortcode(number, category, type, value, orderby, hide_filled, no_logo, no_job_types);
    242                                 }}
    243                             />
    244                         </PanelBody>
    245                     </InspectorControls>
    246                 </div>
    247             );
    248         } // end withSelect
    249     ), // end edit
    250     save: function save(props) {
    251         return null;
    252     }
    253 });
     1(()=>{"use strict";var e={n:o=>{var t=o&&o.__esModule?()=>o.default:()=>o;return e.d(t,{a:t}),t},d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.data,t=window.wp.components,n=window.wp.blockEditor,r=window.wp.serverSideRender;var a=e.n(r);const l=window.wp.blocks,i=window.wp.element,b=window.ReactJSXRuntime;(0,l.registerBlockType)("jb-block/jb-recent-jobs",{edit:e=>{const r=(0,n.useBlockProps)(),{attributes:l,setAttributes:d}=e,{number:s,no_logo:c,hide_filled:p,no_job_types:w,orderby:j,type:u,category:y,remote_only:_}=l,g=(0,o.useSelect)((e=>e("core").getEntityRecords("taxonomy","jb-job-type",{per_page:-1,_fields:["id","name"]})),[]),m=(0,o.useSelect)((e=>e("core").getEntityRecords("taxonomy","jb-job-category",{per_page:-1,_fields:["id","name"]})),[]),h=(0,i.useMemo)((()=>({types:g?g.map((({id:e,name:o})=>({label:o,value:e}))):[],categories:m?m.map((({id:e,name:o})=>({label:o,value:e}))):[]})),[g,m]),v=(0,i.useCallback)(((e,o)=>d({[e]:o})),[d]);return g&&m?(0,b.jsxs)("div",{...r,children:[(0,b.jsx)(a(),{block:"jb-block/jb-recent-jobs",attributes:l}),(0,b.jsx)(n.InspectorControls,{children:(0,b.jsxs)(t.PanelBody,{title:wp.i18n.__("Recent jobs","jobboardwp"),children:[(0,b.jsx)(t.TextControl,{label:wp.i18n.__("Number","jobboardwp"),type:"number",min:1,value:s,onChange:e=>v("number",e||1)}),(0,b.jsx)(t.ToggleControl,{label:wp.i18n.__("Hide logo","jobboardwp"),checked:c,onChange:e=>v("no_logo",e)}),(0,b.jsx)(t.ToggleControl,{label:wp.i18n.__("Hide filled","jobboardwp"),checked:p,onChange:e=>v("hide_filled",e)}),(0,b.jsx)(t.ToggleControl,{label:wp.i18n.__("Hide job types","jobboardwp"),checked:w,onChange:e=>v("no_job_types",e)}),(0,b.jsx)(t.SelectControl,{label:wp.i18n.__("Select category","jobboardwp"),value:Array.isArray(y)?y:[],options:h.categories,multiple:!0,onChange:e=>v("category",Array.isArray(e)?e:[e])}),(0,b.jsx)(t.SelectControl,{label:wp.i18n.__("Select type","jobboardwp"),value:Array.isArray(u)?u:[],options:h.types,multiple:!0,onChange:e=>v("type",Array.isArray(e)?e:[e])}),(0,b.jsx)(t.SelectControl,{label:wp.i18n.__("Select order by","jobboardwp"),value:j,options:[{label:wp.i18n.__("Posting date","jobboardwp"),value:"date"},{label:wp.i18n.__("Expiry date","jobboardwp"),value:"expiry_date"}],onChange:e=>v("orderby",e)}),(0,b.jsx)(t.ToggleControl,{label:wp.i18n.__("Remote only","jobboardwp"),checked:_,onChange:e=>v("remote_only",e)})]})})]}):(0,b.jsxs)("p",{children:[(0,b.jsx)(t.Spinner,{}),wp.i18n.__("Loading...","jobboardwp")]})},save:()=>null}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".jb-jobs-widget").each((function(){const e=document.querySelector(".jb-jobs-widget");e&&e.addEventListener("click",(o=>{o.target!==e&&(o.preventDefault(),o.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
  • jobboardwp/trunk/includes/common/class-blocks.php

    r3169481 r3186671  
    99
    1010if ( ! class_exists( 'jb\common\Blocks' ) ) {
    11 
    1211
    1312    /**
     
    2726
    2827        public function block_editor_render() {
     28            if ( function_exists( 'wp_register_block_metadata_collection' ) ) {
     29                wp_register_block_metadata_collection( JB_PATH . 'includes/blocks', JB_PATH . 'includes/blocks/blocks-manifest.php' );
     30            }
     31
    2932            $blocks = array(
    3033                'jb-block/jb-job-post'             => array(
  • jobboardwp/trunk/jobboardwp.php

    r3169481 r3186671  
    44 * Plugin URI: https://jobboardwp.com/
    55 * Description: Add a modern job board to your website. Display job listings and allow employers to submit and manage jobs all from the front-end
    6  * Version: 1.2.8
     6 * Version: 1.2.9
    77 * Author: JobBoardWP
    88 * Text Domain: jobboardwp
  • jobboardwp/trunk/languages/jobboardwp.pot

    r3169481 r3186671  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: JobBoardWP 1.2.8\n"
     5"Project-Id-Version: JobBoardWP 1.2.9\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/jobboardwp\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2024-10-15T18:36:23+00:00\n"
     12"POT-Creation-Date: 2024-11-12T10:09:11+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.11.0\n"
     
    672672#: includes/common/class-cpt.php:59
    673673#: includes/common/class-cpt.php:363
    674 #: includes/blocks/jb-job/build/index.js:1
    675 #: includes/blocks/jb-job/src/index.js:54
    676 #: includes/blocks/jb-job/src/index.js:56
     674#: blocks-src/jb-job/src/index.js:44
     675#: blocks-src/jb-job/src/index.js:46
     676#: includes/blocks/jb-job/src/index.js:1
    677677msgid "Job"
    678678msgstr ""
     
    855855#: includes/admin/class-settings.php:730
    856856#: includes/admin/class-site-health.php:453
    857 #: includes/blocks/jb-jobs-list/build/index.js:1
    858 #: includes/blocks/jb-jobs-list/src/index.js:305
     857#: blocks-src/jb-jobs-list/src/index.js:91
     858#: includes/blocks/jb-jobs-list/src/index.js:1
    859859msgid "Hide filters"
    860860msgstr ""
     
    867867#: includes/admin/class-site-health.php:457
    868868#: includes/widgets/class-recent-jobs.php:192
    869 #: includes/blocks/jb-jobs-list/build/index.js:1
    870 #: includes/blocks/jb-jobs-list/src/index.js:314
    871 #: includes/blocks/jb-recent-jobs/build/index.js:1
    872 #: includes/blocks/jb-recent-jobs/src/index.js:190
     869#: blocks-src/jb-jobs-list/src/index.js:96
     870#: blocks-src/jb-recent-jobs/src/index.js:56
     871#: includes/blocks/jb-jobs-list/src/index.js:1
     872#: includes/blocks/jb-recent-jobs/src/index.js:1
    873873msgid "Hide job types"
    874874msgstr ""
     
    31953195
    31963196#: includes/frontend/class-shortcodes.php:522
    3197 #: includes/blocks/jb-jobs-list/build/index.js:1
    3198 #: includes/blocks/jb-jobs-list/src/index.js:45
     3197#: blocks-src/jb-jobs-list/src/index.js:134
     3198#: includes/blocks/jb-jobs-list/src/index.js:1
    31993199msgid "Title"
    32003200msgstr ""
     
    32573257
    32583258#: includes/widgets/class-recent-jobs.php:169
    3259 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3260 #: includes/blocks/jb-recent-jobs/src/index.js:236
     3259#: blocks-src/jb-recent-jobs/src/index.js:84
     3260#: includes/blocks/jb-recent-jobs/src/index.js:1
    32613261msgid "Remote only"
    32623262msgstr ""
    32633263
    32643264#: includes/widgets/class-recent-jobs.php:174
    3265 #: includes/blocks/jb-jobs-list/build/index.js:1
    3266 #: includes/blocks/jb-jobs-list/src/index.js:269
    3267 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3268 #: includes/blocks/jb-recent-jobs/src/index.js:181
     3265#: blocks-src/jb-jobs-list/src/index.js:71
     3266#: blocks-src/jb-recent-jobs/src/index.js:51
     3267#: includes/blocks/jb-jobs-list/src/index.js:1
     3268#: includes/blocks/jb-recent-jobs/src/index.js:1
    32693269msgid "Hide filled"
    32703270msgstr ""
     
    32753275
    32763276#: includes/widgets/class-recent-jobs.php:180
    3277 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3278 #: includes/blocks/jb-recent-jobs/src/index.js:29
     3277#: blocks-src/jb-recent-jobs/src/index.js:79
     3278#: includes/blocks/jb-recent-jobs/src/index.js:1
    32793279msgid "Expiry date"
    32803280msgstr ""
    32813281
    32823282#: includes/widgets/class-recent-jobs.php:181
    3283 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3284 #: includes/blocks/jb-recent-jobs/src/index.js:28
     3283#: blocks-src/jb-recent-jobs/src/index.js:78
     3284#: includes/blocks/jb-recent-jobs/src/index.js:1
    32853285msgid "Posting date"
    32863286msgstr ""
     
    36013601msgstr ""
    36023602
    3603 #: includes/blocks/jb-job/build/index.js:1
    3604 #: includes/blocks/jb-job/src/index.js:22
    3605 #: includes/blocks/jb-jobs-list/build/index.js:1
    3606 #: includes/blocks/jb-jobs-list/src/index.js:216
    3607 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3608 #: includes/blocks/jb-recent-jobs/src/index.js:139
     3603#: blocks-src/jb-job/src/index.js:24
     3604#: blocks-src/jb-jobs-list/src/index.js:36
     3605#: blocks-src/jb-recent-jobs/src/index.js:28
     3606#: includes/blocks/jb-job/src/index.js:1
     3607#: includes/blocks/jb-jobs-list/src/index.js:1
     3608#: includes/blocks/jb-recent-jobs/src/index.js:1
    36093609msgid "Loading..."
    36103610msgstr ""
    36113611
    3612 #: includes/blocks/jb-jobs-list/build/index.js:1
    3613 #: includes/blocks/jb-jobs-list/src/index.js:44
     3612#: blocks-src/jb-job/src/index.js:30
     3613#: includes/blocks/jb-job/src/index.js:1
     3614msgid "Jobs not found"
     3615msgstr ""
     3616
     3617#: blocks-src/jb-jobs-list/src/index.js:45
     3618#: includes/blocks/jb-jobs-list/src/index.js:1
     3619msgid "Jobs list"
     3620msgstr ""
     3621
     3622#: blocks-src/jb-jobs-list/src/index.js:47
     3623#: includes/blocks/jb-jobs-list/src/index.js:1
     3624msgid "Select employer"
     3625msgstr ""
     3626
     3627#: blocks-src/jb-jobs-list/src/index.js:50
     3628#: includes/blocks/jb-jobs-list/src/index.js:1
     3629msgid "Select a User"
     3630msgstr ""
     3631
     3632#: blocks-src/jb-jobs-list/src/index.js:59
     3633#: includes/blocks/jb-jobs-list/src/index.js:1
     3634msgid "Per page"
     3635msgstr ""
     3636
     3637#: blocks-src/jb-jobs-list/src/index.js:66
     3638#: blocks-src/jb-recent-jobs/src/index.js:46
     3639#: includes/blocks/jb-jobs-list/src/index.js:1
     3640#: includes/blocks/jb-recent-jobs/src/index.js:1
     3641msgid "Hide logo"
     3642msgstr ""
     3643
     3644#: blocks-src/jb-jobs-list/src/index.js:76
     3645#: includes/blocks/jb-jobs-list/src/index.js:1
     3646msgid "Hide expired"
     3647msgstr ""
     3648
     3649#: blocks-src/jb-jobs-list/src/index.js:81
     3650#: includes/blocks/jb-jobs-list/src/index.js:1
     3651msgid "Hide search"
     3652msgstr ""
     3653
     3654#: blocks-src/jb-jobs-list/src/index.js:86
     3655#: includes/blocks/jb-jobs-list/src/index.js:1
     3656msgid "Hide location search"
     3657msgstr ""
     3658
     3659#: blocks-src/jb-jobs-list/src/index.js:101
     3660#: includes/blocks/jb-jobs-list/src/index.js:1
     3661msgid "No jobs text"
     3662msgstr ""
     3663
     3664#: blocks-src/jb-jobs-list/src/index.js:106
     3665#: includes/blocks/jb-jobs-list/src/index.js:1
     3666msgid "No job search text"
     3667msgstr ""
     3668
     3669#: blocks-src/jb-jobs-list/src/index.js:111
     3670#: includes/blocks/jb-jobs-list/src/index.js:1
     3671msgid "Load more text"
     3672msgstr ""
     3673
     3674#: blocks-src/jb-jobs-list/src/index.js:116
     3675#: blocks-src/jb-recent-jobs/src/index.js:61
     3676#: includes/blocks/jb-jobs-list/src/index.js:1
     3677#: includes/blocks/jb-recent-jobs/src/index.js:1
     3678msgid "Select category"
     3679msgstr ""
     3680
     3681#: blocks-src/jb-jobs-list/src/index.js:123
     3682#: blocks-src/jb-recent-jobs/src/index.js:68
     3683#: includes/blocks/jb-jobs-list/src/index.js:1
     3684#: includes/blocks/jb-recent-jobs/src/index.js:1
     3685msgid "Select type"
     3686msgstr ""
     3687
     3688#: blocks-src/jb-jobs-list/src/index.js:130
     3689#: blocks-src/jb-recent-jobs/src/index.js:75
     3690#: includes/blocks/jb-jobs-list/src/index.js:1
     3691#: includes/blocks/jb-recent-jobs/src/index.js:1
     3692msgid "Select order by"
     3693msgstr ""
     3694
     3695#: blocks-src/jb-jobs-list/src/index.js:133
     3696#: includes/blocks/jb-jobs-list/src/index.js:1
    36143697msgid "Date"
    36153698msgstr ""
    36163699
    3617 #: includes/blocks/jb-jobs-list/build/index.js:1
    3618 #: includes/blocks/jb-jobs-list/src/index.js:48
     3700#: blocks-src/jb-jobs-list/src/index.js:139
     3701#: includes/blocks/jb-jobs-list/src/index.js:1
     3702msgid "Select order"
     3703msgstr ""
     3704
     3705#: blocks-src/jb-jobs-list/src/index.js:142
     3706#: includes/blocks/jb-jobs-list/src/index.js:1
    36193707msgid "Ascending"
    36203708msgstr ""
    36213709
    3622 #: includes/blocks/jb-jobs-list/build/index.js:1
    3623 #: includes/blocks/jb-jobs-list/src/index.js:49
     3710#: blocks-src/jb-jobs-list/src/index.js:143
     3711#: includes/blocks/jb-jobs-list/src/index.js:1
    36243712msgid "Descending"
    36253713msgstr ""
    36263714
    3627 #: includes/blocks/jb-jobs-list/build/index.js:1
    3628 #: includes/blocks/jb-jobs-list/src/index.js:233
    3629 msgid "Jobs list"
    3630 msgstr ""
    3631 
    3632 #: includes/blocks/jb-jobs-list/build/index.js:1
    3633 #: includes/blocks/jb-jobs-list/src/index.js:235
    3634 msgid "Select employer"
    3635 msgstr ""
    3636 
    3637 #: includes/blocks/jb-jobs-list/build/index.js:1
    3638 #: includes/blocks/jb-jobs-list/src/index.js:246
    3639 msgid "Per page"
    3640 msgstr ""
    3641 
    3642 #: includes/blocks/jb-jobs-list/build/index.js:1
    3643 #: includes/blocks/jb-jobs-list/src/index.js:260
    3644 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3645 #: includes/blocks/jb-recent-jobs/src/index.js:172
    3646 msgid "Hide logo"
    3647 msgstr ""
    3648 
    3649 #: includes/blocks/jb-jobs-list/build/index.js:1
    3650 #: includes/blocks/jb-jobs-list/src/index.js:278
    3651 msgid "Hide expired"
    3652 msgstr ""
    3653 
    3654 #: includes/blocks/jb-jobs-list/build/index.js:1
    3655 #: includes/blocks/jb-jobs-list/src/index.js:287
    3656 msgid "Hide search"
    3657 msgstr ""
    3658 
    3659 #: includes/blocks/jb-jobs-list/build/index.js:1
    3660 #: includes/blocks/jb-jobs-list/src/index.js:296
    3661 msgid "Hide location search"
    3662 msgstr ""
    3663 
    3664 #: includes/blocks/jb-jobs-list/build/index.js:1
    3665 #: includes/blocks/jb-jobs-list/src/index.js:323
    3666 msgid "No jobs text"
    3667 msgstr ""
    3668 
    3669 #: includes/blocks/jb-jobs-list/build/index.js:1
    3670 #: includes/blocks/jb-jobs-list/src/index.js:333
    3671 msgid "No job search text"
    3672 msgstr ""
    3673 
    3674 #: includes/blocks/jb-jobs-list/build/index.js:1
    3675 #: includes/blocks/jb-jobs-list/src/index.js:343
    3676 msgid "Load more text"
    3677 msgstr ""
    3678 
    3679 #: includes/blocks/jb-jobs-list/build/index.js:1
    3680 #: includes/blocks/jb-jobs-list/src/index.js:353
    3681 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3682 #: includes/blocks/jb-recent-jobs/src/index.js:199
    3683 msgid "Select category"
    3684 msgstr ""
    3685 
    3686 #: includes/blocks/jb-jobs-list/build/index.js:1
    3687 #: includes/blocks/jb-jobs-list/src/index.js:366
    3688 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3689 #: includes/blocks/jb-recent-jobs/src/index.js:212
    3690 msgid "Select type"
    3691 msgstr ""
    3692 
    3693 #: includes/blocks/jb-jobs-list/build/index.js:1
    3694 #: includes/blocks/jb-jobs-list/src/index.js:379
    3695 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3696 #: includes/blocks/jb-recent-jobs/src/index.js:225
    3697 msgid "Select order by"
    3698 msgstr ""
    3699 
    3700 #: includes/blocks/jb-jobs-list/build/index.js:1
    3701 #: includes/blocks/jb-jobs-list/src/index.js:390
    3702 msgid "Select order"
    3703 msgstr ""
    3704 
    3705 #: includes/blocks/jb-jobs-list/build/index.js:1
    3706 #: includes/blocks/jb-jobs-list/src/index.js:401
     3715#: blocks-src/jb-jobs-list/src/index.js:148
     3716#: includes/blocks/jb-jobs-list/src/index.js:1
    37073717msgid "Filled only"
    37083718msgstr ""
    37093719
    3710 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3711 #: includes/blocks/jb-recent-jobs/src/index.js:156
     3720#: blocks-src/jb-recent-jobs/src/index.js:37
     3721#: includes/blocks/jb-recent-jobs/src/index.js:1
    37123722msgid "Recent jobs"
    37133723msgstr ""
    37143724
    3715 #: includes/blocks/jb-recent-jobs/build/index.js:1
    3716 #: includes/blocks/jb-recent-jobs/src/index.js:158
     3725#: blocks-src/jb-recent-jobs/src/index.js:39
     3726#: includes/blocks/jb-recent-jobs/src/index.js:1
    37173727msgid "Number"
    37183728msgstr ""
    37193729
     3730#: blocks-src/jb-job-post/block.json
    37203731#: includes/blocks/jb-job-post/block.json
    37213732msgctxt "block title"
     
    37233734msgstr ""
    37243735
     3736#: blocks-src/jb-job-post/block.json
    37253737#: includes/blocks/jb-job-post/block.json
    37263738msgctxt "block description"
     
    37283740msgstr ""
    37293741
     3742#: blocks-src/jb-job/block.json
    37303743#: includes/blocks/jb-job/block.json
    37313744msgctxt "block title"
     
    37333746msgstr ""
    37343747
     3748#: blocks-src/jb-job/block.json
    37353749#: includes/blocks/jb-job/block.json
    37363750msgctxt "block description"
     
    37383752msgstr ""
    37393753
     3754#: blocks-src/jb-jobs-categories-list/block.json
    37403755#: includes/blocks/jb-jobs-categories-list/block.json
    37413756msgctxt "block title"
     
    37433758msgstr ""
    37443759
     3760#: blocks-src/jb-jobs-categories-list/block.json
    37453761#: includes/blocks/jb-jobs-categories-list/block.json
    37463762msgctxt "block description"
     
    37483764msgstr ""
    37493765
     3766#: blocks-src/jb-jobs-dashboard/block.json
    37503767#: includes/blocks/jb-jobs-dashboard/block.json
    37513768msgctxt "block title"
     
    37533770msgstr ""
    37543771
     3772#: blocks-src/jb-jobs-dashboard/block.json
    37553773#: includes/blocks/jb-jobs-dashboard/block.json
    37563774msgctxt "block description"
     
    37583776msgstr ""
    37593777
     3778#: blocks-src/jb-jobs-list/block.json
    37603779#: includes/blocks/jb-jobs-list/block.json
    37613780msgctxt "block title"
     
    37633782msgstr ""
    37643783
     3784#: blocks-src/jb-jobs-list/block.json
    37653785#: includes/blocks/jb-jobs-list/block.json
    37663786msgctxt "block description"
     
    37683788msgstr ""
    37693789
     3790#: blocks-src/jb-recent-jobs/block.json
    37703791#: includes/blocks/jb-recent-jobs/block.json
    37713792msgctxt "block title"
     
    37733794msgstr ""
    37743795
     3796#: blocks-src/jb-recent-jobs/block.json
    37753797#: includes/blocks/jb-recent-jobs/block.json
    37763798msgctxt "block description"
  • jobboardwp/trunk/readme.txt

    r3169481 r3186671  
    66Requires PHP: 5.6
    77Requires at least: 5.5
    8 Tested up to: 6.6
    9 Stable tag: 1.2.8
     8Tested up to: 6.7
     9Stable tag: 1.2.9
    1010License: GPLv3
    1111License URI: http://www.gnu.org/licenses/gpl-3.0.txt
     
    105105
    106106== Changelog ==
     107
     108= 1.2.9: November 12, 2024 =
     109
     110* Added: Supporting new `wp_register_block_metadata_collection()` function for registering WP Blocks
     111
     112* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade
    107113
    108114= 1.2.8: October 16, 2024 =
Note: See TracChangeset for help on using the changeset viewer.