WP Job Manager - Version 1.14.0

Version Description

  • Extra filters for the filters template.
  • Changed text strings for easier customisations based on post type labels, and made some strings more generic.
  • New field types - term-checklist, term-multiselect, term-select. These save terms only.
  • Added chosen javascript to enhance multiselect boxes when needed.
  • Multiple category support.
  • Attach Images on Upload to the job posts.
  • Added an option to show a multiselect for categories on the job filters.
  • Enabled chosen() for the job category filter.
  • Added content-single-job_listing-company.php and content-single-job_listing-meta.php templates. These are hooked in.
  • Added optional company video field to submission form.
  • Video appended to company information box.
  • the_company_video() and get_the_company_video() functions.
  • show_more="false" for jobs shortcode to prevent loading more jobs.
  • job_manager_delete_expired_jobs filter (__return_false to disable expired job deletion).
  • job_manager_delete_expired_jobs_days filter (set number of days before deletion - default is 30).
  • Support HTML5 multiple attribute for file upload field. Pass multiple=>'true' to form field definition to enable.
  • Later loading for template functions.
Download this release

Release Info

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

Code changes from version 1.13.0 to 1.14.0

Files changed (60) hide show
  1. Gruntfile.js +167 -0
  2. assets/css/admin.css +1 -1
  3. assets/css/admin.less +7 -0
  4. assets/css/chosen.css +11 -0
  5. assets/css/chosen.less +435 -0
  6. assets/css/frontend.css +1 -1
  7. assets/css/frontend.less +70 -30
  8. assets/images/chosen-sprite.png +0 -0
  9. assets/images/chosen-sprite@2x.png +0 -0
  10. assets/js/admin.js +50 -0
  11. assets/js/admin.min.js +1 -1
  12. assets/js/ajax-filters.js +4 -1
  13. assets/js/ajax-filters.min.js +1 -1
  14. assets/js/job-submission.js +1 -1
  15. assets/js/job-submission.min.js +1 -1
  16. assets/js/jquery-chosen/chosen.jquery.js +1211 -0
  17. assets/js/jquery-chosen/chosen.jquery.min.js +2 -0
  18. assets/js/term-multiselect.js +3 -0
  19. assets/js/term-multiselect.min.js +1 -0
  20. includes/admin/class-wp-job-manager-addons.php +3 -3
  21. includes/admin/class-wp-job-manager-cpt.php +39 -67
  22. includes/admin/class-wp-job-manager-settings.php +29 -15
  23. includes/admin/class-wp-job-manager-writepanels.php +42 -53
  24. includes/class-wp-job-manager-ajax.php +7 -5
  25. includes/class-wp-job-manager-category-walker.php +49 -0
  26. includes/class-wp-job-manager-geocode.php +15 -15
  27. includes/class-wp-job-manager-post-types.php +34 -30
  28. includes/class-wp-job-manager-shortcodes.php +33 -32
  29. includes/class-wp-job-manager-widgets.php +6 -4
  30. includes/forms/class-wp-job-manager-form-edit-job.php +18 -26
  31. includes/forms/class-wp-job-manager-form-submit-job.php +253 -72
  32. languages/wp-job-manager-it_IT.mo +0 -0
  33. languages/wp-job-manager-it_IT.po +18 -17
  34. languages/wp-job-manager-ko_KR.mo +0 -0
  35. languages/wp-job-manager-ko_KR.po +984 -0
  36. languages/wp-job-manager-nb_NO.mo +0 -0
  37. languages/wp-job-manager-nb_NO.po +142 -140
  38. languages/wp-job-manager-pl.mo +0 -0
  39. languages/wp-job-manager-pl.po +989 -0
  40. languages/wp-job-manager.pot +267 -252
  41. package.json +22 -0
  42. readme.txt +28 -9
  43. templates/account-signin.php +1 -1
  44. templates/content-no-jobs-found.php +1 -1
  45. templates/content-single-job_listing-company.php +20 -0
  46. templates/content-single-job_listing-meta.php +28 -0
  47. templates/content-single-job_listing.php +19 -35
  48. templates/form-fields/file-field.php +22 -8
  49. templates/form-fields/multiselect-field.php +1 -1
  50. templates/form-fields/term-checklist-field.php +21 -0
  51. templates/form-fields/term-multiselect-field.php +24 -0
  52. templates/form-fields/term-select-field.php +28 -0
  53. templates/form-fields/wp-editor-field.php +5 -5
  54. templates/job-dashboard.php +2 -2
  55. templates/job-filters.php +14 -4
  56. templates/job-submit.php +1 -1
  57. templates/job-submitted.php +4 -2
  58. wp-job-manager-functions.php +88 -9
  59. wp-job-manager-template.php +54 -6
  60. wp-job-manager.php +17 -7
Gruntfile.js ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* jshint node:true */
2
+ module.exports = function( grunt ){
3
+ 'use strict';
4
+
5
+ grunt.initConfig({
6
+ // setting folder templates
7
+ dirs: {
8
+ css: 'assets/css',
9
+ fonts: 'assets/font',
10
+ images: 'assets/images',
11
+ js: 'assets/js'
12
+ },
13
+
14
+ // Compile all .less files.
15
+ less: {
16
+ compile: {
17
+ options: {
18
+ // These paths are searched for @imports
19
+ paths: ['<%= dirs.css %>/']
20
+ },
21
+ files: [{
22
+ expand: true,
23
+ cwd: '<%= dirs.css %>/',
24
+ src: [
25
+ '*.less',
26
+ '!icons.less',
27
+ '!mixins.less'
28
+ ],
29
+ dest: '<%= dirs.css %>/',
30
+ ext: '.css'
31
+ }]
32
+ }
33
+ },
34
+
35
+ // Minify all .css files.
36
+ cssmin: {
37
+ minify: {
38
+ expand: true,
39
+ cwd: '<%= dirs.css %>/',
40
+ src: ['*.css'],
41
+ dest: '<%= dirs.css %>/',
42
+ ext: '.css'
43
+ }
44
+ },
45
+
46
+ // Minify .js files.
47
+ uglify: {
48
+ options: {
49
+ preserveComments: 'some'
50
+ },
51
+ frontend: {
52
+ files: [{
53
+ expand: true,
54
+ cwd: '<%= dirs.js %>',
55
+ src: [
56
+ '*.js',
57
+ '!*.min.js'
58
+ ],
59
+ dest: '<%= dirs.js %>',
60
+ ext: '.min.js'
61
+ }]
62
+ },
63
+ },
64
+
65
+ // Watch changes for assets
66
+ watch: {
67
+ less: {
68
+ files: ['<%= dirs.css %>/*.less'],
69
+ tasks: ['less', 'cssmin'],
70
+ },
71
+ js: {
72
+ files: [
73
+ '<%= dirs.js %>/*js',
74
+ '!<%= dirs.js %>/*.min.js',
75
+ ],
76
+ tasks: ['uglify']
77
+ }
78
+ },
79
+
80
+ shell: {
81
+ options: {
82
+ stdout: true,
83
+ stderr: true
84
+ },
85
+ txpull: {
86
+ command: [
87
+ 'tx pull -a -f',
88
+ ].join( '&&' )
89
+ },
90
+ generatemos: {
91
+ command: [
92
+ 'cd languages',
93
+ 'for i in *.po; do msgfmt $i -o ${i%%.*}.mo; done'
94
+ ].join( '&&' )
95
+ },
96
+ generatepot: {
97
+ command: [
98
+ 'makepot'
99
+ ].join( '&&' )
100
+ }
101
+ },
102
+
103
+ copy: {
104
+ deploy: {
105
+ src: [
106
+ '**',
107
+ '!Gruntfile.js',
108
+ '!package.json',
109
+ '!node_modules/**'
110
+ ],
111
+ dest: 'deploy',
112
+ expand: true
113
+ },
114
+ },
115
+
116
+ clean: {
117
+ deploy: {
118
+ src: [ 'deploy' ]
119
+ },
120
+ },
121
+
122
+ wp_deploy: {
123
+ deploy: {
124
+ options: {
125
+ plugin_slug: 'wp-job-manager',
126
+ svn_user: 'mikejolley',
127
+ build_dir: 'deploy'
128
+ },
129
+ }
130
+ },
131
+
132
+ });
133
+
134
+ // Load NPM tasks to be used here
135
+ grunt.loadNpmTasks( 'grunt-shell' );
136
+ grunt.loadNpmTasks( 'grunt-contrib-less' );
137
+ grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
138
+ grunt.loadNpmTasks( 'grunt-contrib-uglify' );
139
+ grunt.loadNpmTasks( 'grunt-contrib-watch' );
140
+ grunt.loadNpmTasks( 'grunt-contrib-copy' );
141
+ grunt.loadNpmTasks( 'grunt-contrib-clean' );
142
+ grunt.loadNpmTasks( 'grunt-wp-deploy' );
143
+
144
+ // Register tasks
145
+ grunt.registerTask( 'default', [
146
+ 'less',
147
+ 'cssmin',
148
+ 'uglify'
149
+ ]);
150
+
151
+ // Just an alias for pot file generation
152
+ grunt.registerTask( 'pot', [
153
+ 'shell:generatepot'
154
+ ]);
155
+
156
+ grunt.registerTask( 'dev', [
157
+ 'default',
158
+ 'shell:txpull',
159
+ 'shell:generatemos'
160
+ ]);
161
+
162
+ grunt.registerTask( 'deploy', [
163
+ 'clean:deploy',
164
+ 'copy:deploy'
165
+ ]);
166
+
167
+ };
assets/css/admin.css CHANGED
@@ -1 +1 @@
1
- .clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}@font-face{font-family:job-manager;src:url(../font/job-manager.eot?4963673);src:url(../font/job-manager.eot?4963673#iefix) format('embedded-opentype'),url(../font/job-manager.woff?4963673) format('woff'),url(../font/job-manager.ttf?4963673) format('truetype'),url(../font/job-manager.svg?4963673#job-manager) format('svg');font-weight:400;font-style:normal}.jm-icon{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.job-manager-settings-wrap .updated{display:none}.job-manager-settings-wrap .job-manager-updated{display:block;margin:1em 0 0}.widefat td.column-featured_job,.widefat td.column-filled{width:46px;text-align:left;padding-left:11px}.widefat th.column-featured_job,.widefat th.column-filled{width:1em}.widefat th.column-featured_job span,.widefat th.column-filled span{display:block;width:1em;height:1em;line-height:1em;padding:1px 0 0;overflow:hidden}.widefat th.column-featured_job span:before,.widefat th.column-filled span:before{content:'\e803';font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.widefat th.column-filled span:before{content:'\e807'}.widefat .column-job_posted strong{display:block;margin-bottom:.2em}.widefat .column-job_listing_type{text-align:left;width:6em;word-wrap:normal!important}.widefat .column-job_listing_type .job-type{color:#fff;padding:4px;font-size:11px;-webkit-border-radius:2px;border-radius:2px;display:block;background-color:#f08d3c;text-align:center}.widefat .column-job_listing_type .full-time{background-color:#90da36}.widefat .column-job_listing_type .part-time{background-color:#f08d3c}.widefat .column-job_listing_type .temporary{background-color:#d93674}.widefat .column-job_listing_type .freelance{background-color:#39c}.widefat .column-job_listing_type .internship{background-color:#6033cc}.widefat th.column-job_position{width:30%}.widefat td.column-job_position{width:30%;height:34px}.widefat td.column-job_position .job_position{position:relative;padding-right:50px!important}.widefat td.column-job_position a.job_title{font-weight:700}.widefat td.column-job_position img{width:32px;height:32px;position:absolute;right:7px;top:4px;-webkit-border-radius:50%;border-radius:50%;box-shadow:0 1px 0 1px rgba(0,0,0,.1);-webkit-box-shadow:0 1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 0 1px rgba(0,0,0,.1);border:1px solid #fff}.widefat td.column-job_position .location{margin-top:.2em;display:block;padding-top:2px;color:#bbb}.widefat .column-job_actions{text-align:right;width:138px}.widefat .column-job_actions strong{display:block;margin-bottom:.2em}.widefat .column-job_actions .actions{padding-top:2px}.widefat .column-job_actions a.button{display:inline-block;margin:0 0 2px 4px;cursor:pointer;padding:0!important;height:2em!important;width:2em!important;font-size:1em!important;line-height:2em!important;overflow:hidden}.widefat .column-job_actions a.button:before{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;text-align:center;font-variant:normal;text-transform:none;float:left;width:2em!important;line-height:2em}.widefat .column-job_actions .icon-view:before{content:'\e805'}.widefat .column-job_actions .icon-edit:before{content:'\e804'}.widefat .column-job_actions .icon-delete:before{content:'\e801'}.widefat .column-job_actions .icon-approve:before{content:'\e802'}.wp_job_manager_meta_data p{overflow:hidden;margin:0 0 1em;padding:0 0 0 20%;position:relative;line-height:2em}.wp_job_manager_meta_data label{width:20%;position:absolute;left:0;vertical-align:middle}.wp_job_manager_meta_data input{width:50%;margin:1px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.wp_job_manager_meta_data input.checkbox{width:auto;margin:4px 2px}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_left{padding-right:5px}#tiptip_content{font-size:11px;color:#fff;padding:4px 8px;background:#464646;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;box-shadow:1px 1px 3px rgba(0,0,0,.1);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.1);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.1);text-align:center}#tiptip_content code{background:#999;padding:1px}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#464646}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#464646}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#464646}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#464646}.wp_job_manager_addons_wrap .products{overflow:hidden}.wp_job_manager_addons_wrap .products li{display:inline-block;margin:0 10px 10px 0!important;padding:0;vertical-align:top;width:250px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1);overflow:hidden;position:relative}.wp_job_manager_addons_wrap .products li a{color:inherit;text-decoration:none}.wp_job_manager_addons_wrap .products li img{max-width:100%;height:auto;display:block;margin:0;background:#fff;border-bottom:1px solid rgba(0,0,0,.1)}.wp_job_manager_addons_wrap .products li h2{margin:0!important;padding:10px 10px!important;line-height:1;background:rgba(255,255,255,.6);border-bottom:1px solid rgba(0,0,0,.1);color:#000;text-align:center;position:absolute;width:230px;top:0;left:0;font-size:16px;text-shadow:none}.wp_job_manager_addons_wrap .products li .third_party{display:none}.wp_job_manager_addons_wrap .products li p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wp_job_manager_addons_wrap .products li .price{display:none}
1
+ .clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}@font-face{font-family:job-manager;src:url(../font/job-manager.eot?4963673);src:url(../font/job-manager.eot?4963673#iefix) format('embedded-opentype'),url(../font/job-manager.woff?4963673) format('woff'),url(../font/job-manager.ttf?4963673) format('truetype'),url(../font/job-manager.svg?4963673#job-manager) format('svg');font-weight:400;font-style:normal}.jm-icon{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.job-manager-settings-wrap .updated{display:none}.job-manager-settings-wrap .job-manager-updated{display:block;margin:1em 0 0}.widefat td.column-featured_job,.widefat td.column-filled{width:46px;text-align:left;padding-left:11px}.widefat th.column-featured_job,.widefat th.column-filled{width:1em}.widefat th.column-featured_job span,.widefat th.column-filled span{display:block;width:1em;height:1em;line-height:1em;padding:1px 0 0;overflow:hidden}.widefat th.column-featured_job span:before,.widefat th.column-filled span:before{content:'\e803';font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.widefat th.column-filled span:before{content:'\e807'}.widefat .column-job_posted strong{display:block;margin-bottom:.2em}.widefat .column-job_listing_type{text-align:left;width:6em;word-wrap:normal!important}.widefat .column-job_listing_type .job-type{color:#fff;padding:4px;font-size:11px;-webkit-border-radius:2px;border-radius:2px;display:block;background-color:#f08d3c;text-align:center}.widefat .column-job_listing_type .full-time{background-color:#90da36}.widefat .column-job_listing_type .part-time{background-color:#f08d3c}.widefat .column-job_listing_type .temporary{background-color:#d93674}.widefat .column-job_listing_type .freelance{background-color:#39c}.widefat .column-job_listing_type .internship{background-color:#6033cc}.widefat th.column-job_position{width:30%}.widefat td.column-job_position{width:30%;height:34px}.widefat td.column-job_position .job_position{position:relative;padding-right:50px!important}.widefat td.column-job_position a.job_title{font-weight:700}.widefat td.column-job_position img{width:32px;height:32px;position:absolute;right:7px;top:4px;-webkit-border-radius:50%;border-radius:50%;box-shadow:0 1px 0 1px rgba(0,0,0,.1);-webkit-box-shadow:0 1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 0 1px rgba(0,0,0,.1);border:1px solid #fff}.widefat td.column-job_position .location{margin-top:.2em;display:block;padding-top:2px;color:#bbb}.widefat .column-job_actions{text-align:right;width:138px}.widefat .column-job_actions strong{display:block;margin-bottom:.2em}.widefat .column-job_actions .actions{padding-top:2px}.widefat .column-job_actions a.button{display:inline-block;margin:0 0 2px 4px;cursor:pointer;padding:0!important;height:2em!important;width:2em!important;font-size:1em!important;line-height:2em!important;overflow:hidden}.widefat .column-job_actions a.button:before{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;text-align:center;font-variant:normal;text-transform:none;float:left;width:2em!important;line-height:2em}.widefat .column-job_actions .icon-view:before{content:'\e805'}.widefat .column-job_actions .icon-edit:before{content:'\e804'}.widefat .column-job_actions .icon-delete:before{content:'\e801'}.widefat .column-job_actions .icon-approve:before{content:'\e802'}.wp_job_manager_meta_data p{overflow:hidden;margin:0 0 1em;padding:0 0 0 20%;position:relative;line-height:2em}.wp_job_manager_meta_data label{width:20%;position:absolute;left:0;vertical-align:middle}.wp_job_manager_meta_data input{width:50%;margin:1px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.wp_job_manager_meta_data input.checkbox{width:auto;margin:4px 2px}.wp_job_manager_meta_data .description{display:block;color:#999}.wp_job_manager_meta_data .form-field-checkbox .description{display:inline}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_left{padding-right:5px}#tiptip_content{font-size:11px;color:#fff;padding:4px 8px;background:#464646;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;box-shadow:1px 1px 3px rgba(0,0,0,.1);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.1);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.1);text-align:center}#tiptip_content code{background:#999;padding:1px}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#464646}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#464646}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#464646}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#464646}.wp_job_manager_addons_wrap .products{overflow:hidden}.wp_job_manager_addons_wrap .products li{display:inline-block;margin:0 10px 10px 0!important;padding:0;vertical-align:top;width:250px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1);overflow:hidden;position:relative}.wp_job_manager_addons_wrap .products li a{color:inherit;text-decoration:none}.wp_job_manager_addons_wrap .products li img{max-width:100%;height:auto;display:block;margin:0;background:#fff;border-bottom:1px solid rgba(0,0,0,.1)}.wp_job_manager_addons_wrap .products li h2{margin:0!important;padding:10px 10px!important;line-height:1;background:rgba(255,255,255,.6);border-bottom:1px solid rgba(0,0,0,.1);color:#000;text-align:center;position:absolute;width:230px;top:0;left:0;font-size:16px;text-shadow:none}.wp_job_manager_addons_wrap .products li .third_party{display:none}.wp_job_manager_addons_wrap .products li p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wp_job_manager_addons_wrap .products li .price{display:none}
assets/css/admin.less CHANGED
@@ -170,6 +170,13 @@
170
  width: auto;
171
  margin: 4px 2px;
172
  }
 
 
 
 
 
 
 
173
  }
174
 
175
  /* TipTip CSS - Version 1.2 */
170
  width: auto;
171
  margin: 4px 2px;
172
  }
173
+ .description {
174
+ display: block;
175
+ color: #999;
176
+ }
177
+ .form-field-checkbox .description {
178
+ display: inline;
179
+ }
180
  }
181
 
182
  /* TipTip CSS - Version 1.2 */
assets/css/chosen.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ Chosen, a Select Box Enhancer for jQuery and Prototype
3
+ by Patrick Filler for Harvest, http://getharvest.com
4
+
5
+ Version 1.1.0
6
+ Full source at https://github.com/harvesthq/chosen
7
+ Copyright (c) 2011 Harvest http://getharvest.com
8
+
9
+ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
10
+ This file is generated by `grunt build`, do not edit it by hand.
11
+ */.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;*display:inline;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:23px;border:1px solid #aaa;border-radius:5px;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover,.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(../images/chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:#fff url(../images/chosen-sprite.png) no-repeat 100% -20px;background:url(../images/chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:5px;height:15px;outline:0;border:0!important;background:transparent!important;box-shadow:none;color:#666;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;border:1px solid #aaa;border-radius:3px;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:0;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close,.chosen-disabled .chosen-single{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl .chosen-drop,.chosen-rtl.chosen-container-single-nosearch .chosen-search{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:0}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:#fff url(../images/chosen-sprite.png) no-repeat -30px -20px;background:url(../images/chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(../images/chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
assets/css/chosen.less ADDED
@@ -0,0 +1,435 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ Chosen, a Select Box Enhancer for jQuery and Prototype
3
+ by Patrick Filler for Harvest, http://getharvest.com
4
+
5
+ Version 1.1.0
6
+ Full source at https://github.com/harvesthq/chosen
7
+ Copyright (c) 2011 Harvest http://getharvest.com
8
+
9
+ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
10
+ This file is generated by `grunt build`, do not edit it by hand.
11
+ */
12
+
13
+ /* @group Base */
14
+ .chosen-container {
15
+ position: relative;
16
+ display: inline-block;
17
+ vertical-align: middle;
18
+ font-size: 13px;
19
+ zoom: 1;
20
+ *display: inline;
21
+ -webkit-user-select: none;
22
+ -moz-user-select: none;
23
+ user-select: none;
24
+ }
25
+ .chosen-container .chosen-drop {
26
+ position: absolute;
27
+ top: 100%;
28
+ left: -9999px;
29
+ z-index: 1010;
30
+ -webkit-box-sizing: border-box;
31
+ -moz-box-sizing: border-box;
32
+ box-sizing: border-box;
33
+ width: 100%;
34
+ border: 1px solid #aaa;
35
+ border-top: 0;
36
+ background: #fff;
37
+ box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
38
+ }
39
+ .chosen-container.chosen-with-drop .chosen-drop {
40
+ left: 0;
41
+ }
42
+ .chosen-container a {
43
+ cursor: pointer;
44
+ }
45
+
46
+ /* @end */
47
+ /* @group Single Chosen */
48
+ .chosen-container-single .chosen-single {
49
+ position: relative;
50
+ display: block;
51
+ overflow: hidden;
52
+ padding: 0 0 0 8px;
53
+ height: 23px;
54
+ border: 1px solid #aaa;
55
+ border-radius: 5px;
56
+ background-color: #fff;
57
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
58
+ background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
59
+ background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
60
+ background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
61
+ background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
62
+ background-clip: padding-box;
63
+ box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
64
+ color: #444;
65
+ text-decoration: none;
66
+ white-space: nowrap;
67
+ line-height: 24px;
68
+ }
69
+ .chosen-container-single .chosen-default {
70
+ color: #999;
71
+ }
72
+ .chosen-container-single .chosen-single span {
73
+ display: block;
74
+ overflow: hidden;
75
+ margin-right: 26px;
76
+ text-overflow: ellipsis;
77
+ white-space: nowrap;
78
+ }
79
+ .chosen-container-single .chosen-single-with-deselect span {
80
+ margin-right: 38px;
81
+ }
82
+ .chosen-container-single .chosen-single abbr {
83
+ position: absolute;
84
+ top: 6px;
85
+ right: 26px;
86
+ display: block;
87
+ width: 12px;
88
+ height: 12px;
89
+ background: url('../images/chosen-sprite.png') -42px 1px no-repeat;
90
+ font-size: 1px;
91
+ }
92
+ .chosen-container-single .chosen-single abbr:hover {
93
+ background-position: -42px -10px;
94
+ }
95
+ .chosen-container-single.chosen-disabled .chosen-single abbr:hover {
96
+ background-position: -42px -10px;
97
+ }
98
+ .chosen-container-single .chosen-single div {
99
+ position: absolute;
100
+ top: 0;
101
+ right: 0;
102
+ display: block;
103
+ width: 18px;
104
+ height: 100%;
105
+ }
106
+ .chosen-container-single .chosen-single div b {
107
+ display: block;
108
+ width: 100%;
109
+ height: 100%;
110
+ background: url('../images/chosen-sprite.png') no-repeat 0px 2px;
111
+ }
112
+ .chosen-container-single .chosen-search {
113
+ position: relative;
114
+ z-index: 1010;
115
+ margin: 0;
116
+ padding: 3px 4px;
117
+ white-space: nowrap;
118
+ }
119
+ .chosen-container-single .chosen-search input[type="text"] {
120
+ -webkit-box-sizing: border-box;
121
+ -moz-box-sizing: border-box;
122
+ box-sizing: border-box;
123
+ margin: 1px 0;
124
+ padding: 4px 20px 4px 5px;
125
+ width: 100%;
126
+ height: auto;
127
+ outline: 0;
128
+ border: 1px solid #aaa;
129
+ background: white url('../images/chosen-sprite.png') no-repeat 100% -20px;
130
+ background: url('../images/chosen-sprite.png') no-repeat 100% -20px;
131
+ font-size: 1em;
132
+ font-family: sans-serif;
133
+ line-height: normal;
134
+ border-radius: 0;
135
+ }
136
+ .chosen-container-single .chosen-drop {
137
+ margin-top: -1px;
138
+ border-radius: 0 0 4px 4px;
139
+ background-clip: padding-box;
140
+ }
141
+ .chosen-container-single.chosen-container-single-nosearch .chosen-search {
142
+ position: absolute;
143
+ left: -9999px;
144
+ }
145
+
146
+ /* @end */
147
+ /* @group Results */
148
+ .chosen-container .chosen-results {
149
+ position: relative;
150
+ overflow-x: hidden;
151
+ overflow-y: auto;
152
+ margin: 0 4px 4px 0;
153
+ padding: 0 0 0 4px;
154
+ max-height: 240px;
155
+ -webkit-overflow-scrolling: touch;
156
+ }
157
+ .chosen-container .chosen-results li {
158
+ display: none;
159
+ margin: 0;
160
+ padding: 5px 6px;
161
+ list-style: none;
162
+ line-height: 15px;
163
+ -webkit-touch-callout: none;
164
+ }
165
+ .chosen-container .chosen-results li.active-result {
166
+ display: list-item;
167
+ cursor: pointer;
168
+ }
169
+ .chosen-container .chosen-results li.disabled-result {
170
+ display: list-item;
171
+ color: #ccc;
172
+ cursor: default;
173
+ }
174
+ .chosen-container .chosen-results li.highlighted {
175
+ background-color: #3875d7;
176
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
177
+ background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
178
+ background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
179
+ background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
180
+ background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
181
+ color: #fff;
182
+ }
183
+ .chosen-container .chosen-results li.no-results {
184
+ display: list-item;
185
+ background: #f4f4f4;
186
+ }
187
+ .chosen-container .chosen-results li.group-result {
188
+ display: list-item;
189
+ font-weight: bold;
190
+ cursor: default;
191
+ }
192
+ .chosen-container .chosen-results li.group-option {
193
+ padding-left: 15px;
194
+ }
195
+ .chosen-container .chosen-results li em {
196
+ font-style: normal;
197
+ text-decoration: underline;
198
+ }
199
+
200
+ /* @end */
201
+ /* @group Multi Chosen */
202
+ .chosen-container-multi .chosen-choices {
203
+ position: relative;
204
+ overflow: hidden;
205
+ -webkit-box-sizing: border-box;
206
+ -moz-box-sizing: border-box;
207
+ box-sizing: border-box;
208
+ margin: 0;
209
+ padding: 0;
210
+ width: 100%;
211
+ height: auto !important;
212
+ height: 1%;
213
+ border: 1px solid #aaa;
214
+ background-color: #fff;
215
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
216
+ background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
217
+ background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
218
+ background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
219
+ background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
220
+ cursor: text;
221
+ }
222
+ .chosen-container-multi .chosen-choices li {
223
+ float: left;
224
+ list-style: none;
225
+ }
226
+ .chosen-container-multi .chosen-choices li.search-field {
227
+ margin: 0;
228
+ padding: 0;
229
+ white-space: nowrap;
230
+ }
231
+ .chosen-container-multi .chosen-choices li.search-field input[type="text"] {
232
+ margin: 1px 0;
233
+ padding: 5px;
234
+ height: 15px;
235
+ outline: 0;
236
+ border: 0 !important;
237
+ background: transparent !important;
238
+ box-shadow: none;
239
+ color: #666;
240
+ font-size: 100%;
241
+ font-family: sans-serif;
242
+ line-height: normal;
243
+ border-radius: 0;
244
+ }
245
+ .chosen-container-multi .chosen-choices li.search-field .default {
246
+ color: #999;
247
+ }
248
+ .chosen-container-multi .chosen-choices li.search-choice {
249
+ position: relative;
250
+ margin: 3px 0 3px 5px;
251
+ padding: 3px 20px 3px 5px;
252
+ border: 1px solid #aaa;
253
+ border-radius: 3px;
254
+ background-color: #e4e4e4;
255
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
256
+ background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
257
+ background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
258
+ background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
259
+ background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
260
+ background-clip: padding-box;
261
+ box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
262
+ color: #333;
263
+ line-height: 13px;
264
+ cursor: default;
265
+ }
266
+ .chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
267
+ position: absolute;
268
+ top: 4px;
269
+ right: 3px;
270
+ display: block;
271
+ width: 12px;
272
+ height: 12px;
273
+ background: url('../images/chosen-sprite.png') -42px 1px no-repeat;
274
+ font-size: 1px;
275
+ }
276
+ .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
277
+ background-position: -42px -10px;
278
+ }
279
+ .chosen-container-multi .chosen-choices li.search-choice-disabled {
280
+ padding-right: 5px;
281
+ border: 1px solid #ccc;
282
+ background-color: #e4e4e4;
283
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
284
+ background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
285
+ background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
286
+ background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
287
+ background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
288
+ color: #666;
289
+ }
290
+ .chosen-container-multi .chosen-choices li.search-choice-focus {
291
+ background: #d4d4d4;
292
+ }
293
+ .chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
294
+ background-position: -42px -10px;
295
+ }
296
+ .chosen-container-multi .chosen-results {
297
+ margin: 0;
298
+ padding: 0;
299
+ }
300
+ .chosen-container-multi .chosen-drop .result-selected {
301
+ display: list-item;
302
+ color: #ccc;
303
+ cursor: default;
304
+ }
305
+
306
+ /* @end */
307
+ /* @group Active */
308
+ .chosen-container-active .chosen-single {
309
+ border: 1px solid #5897fb;
310
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
311
+ }
312
+ .chosen-container-active.chosen-with-drop .chosen-single {
313
+ border: 1px solid #aaa;
314
+ -moz-border-radius-bottomright: 0;
315
+ border-bottom-right-radius: 0;
316
+ -moz-border-radius-bottomleft: 0;
317
+ border-bottom-left-radius: 0;
318
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
319
+ background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
320
+ background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
321
+ background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
322
+ background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
323
+ box-shadow: 0 1px 0 #fff inset;
324
+ }
325
+ .chosen-container-active.chosen-with-drop .chosen-single div {
326
+ border-left: none;
327
+ background: transparent;
328
+ }
329
+ .chosen-container-active.chosen-with-drop .chosen-single div b {
330
+ background-position: -18px 2px;
331
+ }
332
+ .chosen-container-active .chosen-choices {
333
+ border: 1px solid #5897fb;
334
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
335
+ }
336
+ .chosen-container-active .chosen-choices li.search-field input[type="text"] {
337
+ color: #111 !important;
338
+ }
339
+
340
+ /* @end */
341
+ /* @group Disabled Support */
342
+ .chosen-disabled {
343
+ opacity: 0.5 !important;
344
+ cursor: default;
345
+ }
346
+ .chosen-disabled .chosen-single {
347
+ cursor: default;
348
+ }
349
+ .chosen-disabled .chosen-choices .search-choice .search-choice-close {
350
+ cursor: default;
351
+ }
352
+
353
+ /* @end */
354
+ /* @group Right to Left */
355
+ .chosen-rtl {
356
+ text-align: right;
357
+ }
358
+ .chosen-rtl .chosen-single {
359
+ overflow: visible;
360
+ padding: 0 8px 0 0;
361
+ }
362
+ .chosen-rtl .chosen-single span {
363
+ margin-right: 0;
364
+ margin-left: 26px;
365
+ direction: rtl;
366
+ }
367
+ .chosen-rtl .chosen-single-with-deselect span {
368
+ margin-left: 38px;
369
+ }
370
+ .chosen-rtl .chosen-single div {
371
+ right: auto;
372
+ left: 3px;
373
+ }
374
+ .chosen-rtl .chosen-single abbr {
375
+ right: auto;
376
+ left: 26px;
377
+ }
378
+ .chosen-rtl .chosen-choices li {
379
+ float: right;
380
+ }
381
+ .chosen-rtl .chosen-choices li.search-field input[type="text"] {
382
+ direction: rtl;
383
+ }
384
+ .chosen-rtl .chosen-choices li.search-choice {
385
+ margin: 3px 5px 3px 0;
386
+ padding: 3px 5px 3px 19px;
387
+ }
388
+ .chosen-rtl .chosen-choices li.search-choice .search-choice-close {
389
+ right: auto;
390
+ left: 4px;
391
+ }
392
+ .chosen-rtl.chosen-container-single-nosearch .chosen-search,
393
+ .chosen-rtl .chosen-drop {
394
+ left: 9999px;
395
+ }
396
+ .chosen-rtl.chosen-container-single .chosen-results {
397
+ margin: 0 0 4px 4px;
398
+ padding: 0 4px 0 0;
399
+ }
400
+ .chosen-rtl .chosen-results li.group-option {
401
+ padding-right: 15px;
402
+ padding-left: 0;
403
+ }
404
+ .chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
405
+ border-right: none;
406
+ }
407
+ .chosen-rtl .chosen-search input[type="text"] {
408
+ padding: 4px 5px 4px 20px;
409
+ background: white url('../images/chosen-sprite.png') no-repeat -30px -20px;
410
+ background: url('../images/chosen-sprite.png') no-repeat -30px -20px;
411
+ direction: rtl;
412
+ }
413
+ .chosen-rtl.chosen-container-single .chosen-single div b {
414
+ background-position: 6px 2px;
415
+ }
416
+ .chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
417
+ background-position: -12px 2px;
418
+ }
419
+
420
+ /* @end */
421
+ /* @group Retina compatibility */
422
+ @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) {
423
+ .chosen-rtl .chosen-search input[type="text"],
424
+ .chosen-container-single .chosen-single abbr,
425
+ .chosen-container-single .chosen-single div b,
426
+ .chosen-container-single .chosen-search input[type="text"],
427
+ .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
428
+ .chosen-container .chosen-results-scroll-down span,
429
+ .chosen-container .chosen-results-scroll-up span {
430
+ background-image: url('../images/chosen-sprite@2x.png') !important;
431
+ background-size: 52px 37px !important;
432
+ background-repeat: no-repeat !important;
433
+ }
434
+ }
435
+ /* @end */
assets/css/frontend.css CHANGED
@@ -1 +1 @@
1
- .clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}@font-face{font-family:job-manager;src:url(../font/job-manager.eot?4963673);src:url(../font/job-manager.eot?4963673#iefix) format('embedded-opentype'),url(../font/job-manager.woff?4963673) format('woff'),url(../font/job-manager.ttf?4963673) format('truetype'),url(../font/job-manager.svg?4963673#job-manager) format('svg');font-weight:400;font-style:normal}.jm-icon{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.display-icon{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline}.job-manager-error,.job-manager-info,.job-manager-message{padding:1em 1em 1em 3.5em;margin:0 0 2em;position:relative;-webkit-border-radius:4px;border-radius:4px;background:#fff;background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background:-webkit-linear-gradient(#fff,#fff);background:-moz-linear-gradient(center top,#fff 0,#fff 100%);background:-moz-gradient(center top,#fff 0,#fff 100%);color:#666;text-shadow:0 1px 0 #fff;list-style:none outside;zoom:1;width:auto;-webkit-box-shadow:inset 0 -2px 6px rgba(0,0,0,.05),inset 0 -2px 30px rgba(0,0,0,.015),inset 0 1px 0 #fff,0 1px 2px rgba(0,0,0,.3);box-shadow:inset 0 -2px 6px rgba(0,0,0,.05),inset 0 -2px 30px rgba(0,0,0,.015),inset 0 1px 0 #fff,0 1px 2px rgba(0,0,0,.3)}.job-manager-error:after,.job-manager-error:before,.job-manager-info:after,.job-manager-info:before,.job-manager-message:after,.job-manager-message:before{content:"";display:table}.job-manager-error:after,.job-manager-info:after,.job-manager-message:after{clear:both}.job-manager-error:before,.job-manager-info:before,.job-manager-message:before{content:"";height:1.5em;width:1.5em;display:block;position:absolute;top:0;left:1em;font-family:sans-serif;font-size:1em;line-height:1.5;text-align:center;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.2);padding-top:1em;-webkit-border-bottom-left-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1);-webkit-box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1);-moz-box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1)}.job-manager-error li,.job-manager-info li,.job-manager-message li{list-style:none outside;padding-left:0;margin-left:0}.job-manager-error.job-manager-message,.job-manager-info.job-manager-message,.job-manager-message.job-manager-message{border-top:3px solid #8fae1b}.job-manager-error.job-manager-message:before,.job-manager-info.job-manager-message:before,.job-manager-message.job-manager-message:before{background-color:#8fae1b;content:"\2713"}.job-manager-error.job-manager-info,.job-manager-info.job-manager-info,.job-manager-message.job-manager-info{border-top:3px solid #1e85be}.job-manager-error.job-manager-info:before,.job-manager-info.job-manager-info:before,.job-manager-message.job-manager-info:before{background-color:#1e85be;content:"i";font-family:Times,Georgia,serif;font-style:italic}.job-manager-error.job-manager-error,.job-manager-info.job-manager-error,.job-manager-message.job-manager-error{border-top:3px solid #b81c23}.job-manager-error.job-manager-error:before,.job-manager-info.job-manager-error:before,.job-manager-message.job-manager-error:before{background-color:#b81c23;content:"\00d7";font-weight:700}.job-manager-form fieldset{margin:0 0 1em;padding:0 0 1em;line-height:2em;border:0;border-bottom:1px solid #eee;zoom:1}.job-manager-form fieldset:after,.job-manager-form fieldset:before{content:"";display:table}.job-manager-form fieldset:after{clear:both}.job-manager-form fieldset label{display:block;margin:0;width:29%;float:left;vertical-align:middle}.job-manager-form fieldset label small{opacity:.75;font-size:.83em}.job-manager-form fieldset div.field{width:70%;float:right;vertical-align:middle}.job-manager-form fieldset .wp-editor-container{border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.job-manager-form fieldset .account-sign-in .button{margin-right:.5em}.job-manager-form fieldset .account-sign-in .button:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e808'}.job-manager-form fieldset abbr.required{color:red;font-weight:700;border:0}.job-manager-form fieldset input.input-text,.job-manager-form fieldset select,.job-manager-form fieldset textarea{margin:0;vertical-align:middle;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job-manager-form fieldset small.description{opacity:.75;font-size:.83em;margin:1.2em 0 0;display:block;line-height:1.2em}.job-manager-form fieldset .job-manager-uploaded-file{line-height:64px;font-style:italic;margin:0 0 1em}.job-manager-form fieldset .job-manager-uploaded-file img{height:64px;vertical-align:middle;margin:0 1em 0 0}.job-manager-form .submit-job{padding:1em 0}div.job_listings{margin-bottom:1em}div.job_listings ul.job_listings{margin:0}ul.job_listings{padding:0;margin:0;border-top:1px solid #eee}ul.job_listings.loading{min-height:96px;border-bottom:1px solid #eee;background:url(../images/ajax-loader.gif) no-repeat center 32px}ul.job_listings li.job_listing,ul.job_listings li.no_job_listings_found{list-style:none outside;padding:0;margin:0;border-bottom:1px solid #eee}ul.job_listings li.job_listing.job_position_filled a,ul.job_listings li.no_job_listings_found.job_position_filled a{opacity:.25}ul.job_listings li.job_listing.no_job_listings_found,ul.job_listings li.no_job_listings_found.no_job_listings_found{padding:1em;border-bottom:1px solid #eee}ul.job_listings li.job_listing a,ul.job_listings li.no_job_listings_found a{display:block;padding:1em 1em 1em 2em;overflow:hidden;zoom:1;position:relative;line-height:3em;font-size:1em;text-decoration:none}ul.job_listings li.job_listing a:focus,ul.job_listings li.job_listing a:hover,ul.job_listings li.no_job_listings_found a:focus,ul.job_listings li.no_job_listings_found a:hover{background-color:#fcfcfc}ul.job_listings li.job_listing a img.company_logo,ul.job_listings li.no_job_listings_found a img.company_logo{width:42px;height:42px;position:absolute;left:1em;float:left;margin-right:1em;vertical-align:middle;box-shadow:none}ul.job_listings li.job_listing a div.location,ul.job_listings li.job_listing a div.position,ul.job_listings li.job_listing a ul.meta,ul.job_listings li.no_job_listings_found a div.location,ul.job_listings li.no_job_listings_found a div.position,ul.job_listings li.no_job_listings_found a ul.meta{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}ul.job_listings li.job_listing a div.position,ul.job_listings li.no_job_listings_found a div.position{float:left;width:60%;padding:0 0 0 42px;line-height:1.5em}ul.job_listings li.job_listing a div.position h3,ul.job_listings li.no_job_listings_found a div.position h3{margin:0;padding:0;font-size:1em;line-height:1.5em}ul.job_listings li.job_listing a div.position .company,ul.job_listings li.no_job_listings_found a div.position .company{color:#999;font-size:.75em}ul.job_listings li.job_listing a div.position .company .tagline,ul.job_listings li.no_job_listings_found a div.position .company .tagline{margin-left:.5em}ul.job_listings li.job_listing a div.location,ul.job_listings li.no_job_listings_found a div.location{float:left;text-align:left;width:20%;padding:0 0 0 1em;color:#999;font-size:.75em}ul.job_listings li.job_listing a .meta,ul.job_listings li.no_job_listings_found a .meta{float:right;text-align:right;width:20%;padding:0 0 0 1em;margin:0;line-height:1.5em;color:#999;list-style:none outside}ul.job_listings li.job_listing a .meta li,ul.job_listings li.no_job_listings_found a .meta li{list-style:none outside;display:block;font-size:.75em;margin:0}ul.job_listings li.job_listing a .meta .job-type,ul.job_listings li.no_job_listings_found a .meta .job-type{font-weight:700}ul.job_listings li.job_listing.job_position_featured a,ul.job_listings li.no_job_listings_found.job_position_featured a{background:#fefee5}ul.job_listings li.job_listing.job_position_featured a:focus,ul.job_listings li.job_listing.job_position_featured a:hover,ul.job_listings li.no_job_listings_found.job_position_featured a:focus,ul.job_listings li.no_job_listings_found.job_position_featured a:hover{background-color:#fefed8}.widget ul.job_listings li.job_listing a{padding:1em 0}.widget ul.job_listings li.job_listing .position{float:none;width:auto;padding:0}.widget ul.job_listings li.job_listing ul.meta{float:none;width:auto;padding:0;margin:0;text-align:left}.widget ul.job_listings li.job_listing ul.meta li{float:none;display:inline;padding:0;margin:0 .5em 0 0;font-weight:400}.widget ul.job_listings li.job_listing ul.meta li:after{padding:0 0 0 .5em;content:"\2023"}.widget ul.job_listings li.job_listing ul.meta li:last-child:after{content:''}.job-manager .job-type,.job-types .job-type,.job_listing .job-type{color:#f08d3c}.job-manager .full-time,.job-types .full-time,.job_listing .full-time{color:#90da36}.job-manager .part-time,.job-types .part-time,.job_listing .part-time{color:#f08d3c}.job-manager .temporary,.job-types .temporary,.job_listing .temporary{color:#d93674}.job-manager .freelance,.job-types .freelance,.job_listing .freelance{color:#39c}.job-manager .internship,.job-types .internship,.job_listing .internship{color:#6033cc}.single_job_listing .company{position:relative;border:1px solid #eee;padding:1em 1em 1em 42px;margin:0 0 2em;display:block;clear:both;min-height:42px}.single_job_listing .company img{width:42px;height:42px;position:absolute;left:1em;float:left;vertical-align:middle;box-shadow:none}.single_job_listing .company .name{margin:0;padding:0 0 0 2em}.single_job_listing .company .name a{float:right;margin-left:1em}.single_job_listing .company .tagline{display:block;margin:0;padding:0 0 0 2em;font-style:italic;color:#999}.single_job_listing .company .website:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e809'}.single_job_listing .company .company_twitter:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e80a'}.single_job_listing .meta{list-style:none outside;padding:0;margin:0 0 1.5em;overflow:hidden;zoom:1;clear:both}.single_job_listing .meta li{margin:0 1em 0 0;padding:.5em;float:left;line-height:1em;color:#999}.single_job_listing .meta .job-type{color:#fff;background-color:#f08d3c}.single_job_listing .meta .full-time{background-color:#90da36}.single_job_listing .meta .part-time{background-color:#f08d3c}.single_job_listing .meta .temporary{background-color:#d93674}.single_job_listing .meta .freelance{background-color:#39c}.single_job_listing .meta .internship{background-color:#6033cc}.single_job_listing .meta .position-filled{color:#b81c23}.single_job_listing .meta .location:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e81d'}.single_job_listing .meta .date-posted:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e80f'}.single_job_listing .meta .position-filled:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e80e'}.single_job_listing .application{padding:0;margin:0 0 1em}.single_job_listing .application .application_button,.single_job_listing .application .application_details{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single_job_listing .application .application_button{text-align:center;font-size:1.1em;line-height:1em;float:left;margin:0 .5em 20px 0;padding:.90909091em 2em;outline:0}.single_job_listing .application .application_details{clear:both;border:1px solid #eee;padding:.75em 1em 0;margin:0;line-height:1.5em;display:block;position:relative;box-shadow:0 1px 1px rgba(0,0,0,.1)}.single_job_listing .application .application_details p{margin:0 0 .75em}.single_job_listing .application .application_details:before{content:"";position:absolute;margin:-10px 0 0 0;top:0;left:5em;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #eee}.single_job_listing .application .application_details:after{content:"";position:absolute;margin:-9px 0 0 1px;left:5em;top:0;width:0;height:0;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid #fff}.job_filters{background:#eee;zoom:1}.job_filters:after,.job_filters:before{content:"";display:table}.job_filters:after{clear:both}.job_filters .search_jobs{padding:1em;zoom:1}.job_filters .search_jobs:after,.job_filters .search_jobs:before{content:"";display:table}.job_filters .search_jobs:after{clear:both}.job_filters .search_jobs div{width:50%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job_filters .search_jobs div label{display:none}.job_filters .search_jobs div.filter_first,.job_filters .search_jobs div.search_keywords{float:left;padding-right:.5em}.job_filters .search_jobs div.filter_last,.job_filters .search_jobs div.search_location{float:right;padding-left:.5em}.job_filters .search_jobs div.filter_wide,.job_filters .search_jobs div.search_categories{padding-top:.5em;clear:both;width:100%}.job_filters .search_jobs div a{padding:.25em}.job_filters .search_jobs div a.active{background:#ddd;text-decoration:none}.job_filters .search_jobs input,.job_filters .search_jobs select{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}.job_filters .job_types{list-style:none outside;margin:0;padding:0;font-size:.83em;background:#f9f9f9;border-top:1px solid #e5e5e5;zoom:1}.job_filters .job_types:after,.job_filters .job_types:before{content:"";display:table}.job_filters .job_types:after{clear:both}.job_filters .job_types li{margin:0;padding:.5em 1em;float:left;border-right:1px solid #eee}.job_filters .job_types li:last-child{border-right:0}.job_filters .showing_jobs{padding:.5em 1em;display:none;font-size:.83em;background:#f9f9f9;border-top:1px solid #e5e5e5}.job_filters .showing_jobs a{float:right;padding-left:10px}div.job_listings .job-manager-pagination{text-align:center;display:block;padding:1em 0;border-bottom:1px solid #eee;line-height:1}div.job_listings .load_more_jobs{text-align:center;display:block;padding:1em 1em 1em 2em;border-bottom:1px solid #eee;font-weight:700}div.job_listings .load_more_jobs.loading{background:url(../images/ajax-loader.gif) no-repeat center}div.job_listings .load_more_jobs.loading strong{visibility:hidden}div.job_listings .load_more_jobs:focus,div.job_listings .load_more_jobs:hover{background-color:#fcfcfc}.job_listing_preview{padding:0 1em 1em;border:5px solid #eee}.entry-content .job_listing_preview_title,.job_listing_preview_title{padding:.5em 1em;vertical-align:middle;position:relative;background:#eee}.entry-content .job_listing_preview_title h2,.job_listing_preview_title h2{margin:0;clear:none}.entry-content .job_listing_preview_title .button,.job_listing_preview_title .button{float:right;margin-left:.25em}.job_summary_shortcode{border:1px solid #ccc;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;text-align:center;position:relative;box-shadow:0 2px 4px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.4);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job_summary_shortcode.aligncenter{display:block;margin:2em auto}.job_summary_shortcode.alignleft{float:left;margin:0 2em 2em 0}.job_summary_shortcode.alignright{float:right;margin:0 0 2em 2em}.job_summary_shortcode a{text-decoration:none;color:inherit}.job_summary_shortcode img{margin:0;padding:0;display:block;width:100%;-moz-border-radius:0;-webkit-border-radius:0;-moz-border-top-left-radius:3px;-moz-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-radius:0;border-top-left-radius:3px;border-top-right-radius:3px;box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}.job_summary_shortcode .job_summary_content{padding:0 1em}.job_summary_shortcode .meta{font-style:italic;color:#777}.job_summary_shortcode .job-type{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em;color:#fff;text-shadow:0 1px 0 rgba(255,255,255,.5);box-shadow:0 2px 4px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.4);position:absolute;top:0;right:0;padding:.5em;height:1em;width:auto;min-width:1em;font-size:1em;text-align:center;vertical-align:middle;line-height:1em;margin:-.5em -.5em 0 0}.job_summary_shortcode .job-type.full-time{background-color:#90da36}.job_summary_shortcode .job-type.part-time{background-color:#f08d3c}.job_summary_shortcode .job-type.temporary{background-color:#d93674}.job_summary_shortcode .job-type.freelance{background-color:#39c}.job_summary_shortcode .job-type.internship{background-color:#6033cc}#job-manager-job-dashboard table ul.job-dashboard-actions{margin:0;padding:0;visibility:hidden;font-size:.92em}#job-manager-job-dashboard table ul.job-dashboard-actions li{float:none;display:inline;padding:0;margin:0 .5em 0 0;font-weight:400;list-style:none outside}#job-manager-job-dashboard table ul.job-dashboard-actions li:after{padding:0 0 0 .5em;content:"\2023"}#job-manager-job-dashboard table ul.job-dashboard-actions li:last-child:after{content:''}#job-manager-job-dashboard table ul.job-dashboard-actions li .job-dashboard-action-delete{color:red}#job-manager-job-dashboard table tr:focus ul.job-dashboard-actions,#job-manager-job-dashboard table tr:hover ul.job-dashboard-actions{visibility:visible}#job-manager-job-dashboard table td,#job-manager-job-dashboard table th{padding:.5em 1em .5em 0}#job-manager-job-dashboard table .job_title small{color:#999}#content nav.job-manager-pagination,#job-manager-job-dashboard table .applications,#job-manager-job-dashboard table .expires,#job-manager-job-dashboard table .filled,nav.job-manager-pagination{text-align:center}#content nav.job-manager-pagination ul,nav.job-manager-pagination ul{display:inline-block;white-space:nowrap;padding:0;clear:both;border-left:1px solid #eee;margin:1px}#content nav.job-manager-pagination ul li,nav.job-manager-pagination ul li{border-right:1px solid #eee;border-top:1px solid #eee;border-bottom:1px solid #eee;padding:0;margin:0;float:left;display:inline;overflow:hidden}#content nav.job-manager-pagination ul li a,#content nav.job-manager-pagination ul li span,nav.job-manager-pagination ul li a,nav.job-manager-pagination ul li span{margin:0;text-decoration:none;line-height:1em;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}#content nav.job-manager-pagination ul li a:focus,#content nav.job-manager-pagination ul li a:hover,#content nav.job-manager-pagination ul li span.current,nav.job-manager-pagination ul li a:focus,nav.job-manager-pagination ul li a:hover,nav.job-manager-pagination ul li span.current{background:#eee;color:#888}@media only screen and (max-width:767px){ul.job_listings li.job_listing a,ul.job_listings li.no_job_listings_found a{padding:1em}ul.job_listings li.job_listing a img.company_logo,ul.job_listings li.no_job_listings_found a img.company_logo{visibility:hidden}ul.job_listings li.job_listing a div.position,ul.job_listings li.no_job_listings_found a div.position{float:left;width:60%;padding:0}ul.job_listings li.job_listing a div.location,ul.job_listings li.no_job_listings_found a div.location{float:right;width:40%;line-height:2em;font-size:.75em;padding:0 0 0 1em;text-align:right}ul.job_listings li.job_listing a .meta,ul.job_listings li.no_job_listings_found a .meta{float:right;width:40%;line-height:2em;font-size:.75em}ul.job_listings li.job_listing a .meta li,ul.job_listings li.no_job_listings_found a .meta li{font-size:1em}}
1
+ .clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}@font-face{font-family:job-manager;src:url(../font/job-manager.eot?4963673);src:url(../font/job-manager.eot?4963673#iefix) format('embedded-opentype'),url(../font/job-manager.woff?4963673) format('woff'),url(../font/job-manager.ttf?4963673) format('truetype'),url(../font/job-manager.svg?4963673#job-manager) format('svg');font-weight:400;font-style:normal}.jm-icon{font-family:job-manager!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.display-icon{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline}.job-manager-error,.job-manager-info,.job-manager-message{padding:1em 1em 1em 3.5em;margin:0 0 2em;position:relative;-webkit-border-radius:4px;border-radius:4px;background:#fff;background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background:-webkit-linear-gradient(#fff,#fff);background:-moz-linear-gradient(center top,#fff 0,#fff 100%);background:-moz-gradient(center top,#fff 0,#fff 100%);color:#666;text-shadow:0 1px 0 #fff;list-style:none outside;zoom:1;width:auto;box-shadow:inset 0 -2px 6px rgba(0,0,0,.05),inset 0 -2px 30px rgba(0,0,0,.015),inset 0 1px 0 #fff,0 1px 2px rgba(0,0,0,.3)}.job-manager-error:after,.job-manager-error:before,.job-manager-info:after,.job-manager-info:before,.job-manager-message:after,.job-manager-message:before{content:"";display:table}.job-manager-error:after,.job-manager-info:after,.job-manager-message:after{clear:both}.job-manager-error:before,.job-manager-info:before,.job-manager-message:before{content:"";height:1.5em;width:1.5em;display:block;position:absolute;top:0;left:1em;font-family:sans-serif;font-size:1em;line-height:1.5;text-align:center;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.2);padding-top:1em;-webkit-border-bottom-left-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1);-webkit-box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1);-moz-box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1)}.job-manager-error li,.job-manager-info li,.job-manager-message li{list-style:none outside;padding-left:0;margin-left:0}.job-manager-error.job-manager-message,.job-manager-info.job-manager-message,.job-manager-message.job-manager-message{border-top:3px solid #8fae1b}.job-manager-error.job-manager-message:before,.job-manager-info.job-manager-message:before,.job-manager-message.job-manager-message:before{background-color:#8fae1b;content:"\2713"}.job-manager-error.job-manager-info,.job-manager-info.job-manager-info,.job-manager-message.job-manager-info{border-top:3px solid #1e85be}.job-manager-error.job-manager-info:before,.job-manager-info.job-manager-info:before,.job-manager-message.job-manager-info:before{background-color:#1e85be;content:"i";font-family:Times,Georgia,serif;font-style:italic}.job-manager-error.job-manager-error,.job-manager-info.job-manager-error,.job-manager-message.job-manager-error{border-top:3px solid #b81c23}.job-manager-error.job-manager-error:before,.job-manager-info.job-manager-error:before,.job-manager-message.job-manager-error:before{background-color:#b81c23;content:"\00d7";font-weight:700}.job-manager-form fieldset{margin:0 0 1em;padding:0 0 1em;line-height:2em;border:0;border-bottom:1px solid #eee;zoom:1}.job-manager-form fieldset:after,.job-manager-form fieldset:before{content:"";display:table}.job-manager-form fieldset:after{clear:both}.job-manager-form fieldset label{display:block;margin:0;width:29%;float:left;vertical-align:middle}.job-manager-form fieldset label small{opacity:.75;font-size:.83em}.job-manager-form fieldset div.field{width:70%;float:right;vertical-align:middle}.job-manager-form fieldset .wp-editor-container{border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.job-manager-form fieldset .account-sign-in .button{margin-right:.5em}.job-manager-form fieldset .account-sign-in .button:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e808'}.job-manager-form fieldset abbr.required{color:red;font-weight:700;border:0}.job-manager-form fieldset input.input-text,.job-manager-form fieldset select,.job-manager-form fieldset textarea{margin:0;vertical-align:middle;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job-manager-form fieldset small.description{opacity:.75;font-size:.83em;margin:1.2em 0 0;display:block;line-height:1.2em}.job-manager-form fieldset .job-manager-uploaded-files{display:table}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file{line-height:1.5em;font-style:italic;display:table-row}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file .job-manager-uploaded-file-preview{display:table-cell;vertical-align:middle;padding:.5em 0}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file .job-manager-uploaded-file-preview img{height:64px;margin:0}.job-manager-form fieldset .job-manager-uploaded-files .job-manager-uploaded-file .job-manager-uploaded-file-name{display:table-cell;vertical-align:middle;padding:.5em 0 .5em 1em}.job-manager-form .submit-job{padding:1em 0}.job-manager-form .job-manager-term-checklist{list-style:none outside;max-height:200px;overflow:auto;margin:0}.job-manager-form .job-manager-term-checklist li{list-style:none outside;margin:0;display:block;float:none}.job-manager-form .job-manager-term-checklist li label{width:auto;float:none}.job-manager-form .job-manager-term-checklist li li{margin:0 0 0 2em}div.job_listings{margin-bottom:1em}div.job_listings ul.job_listings{margin:0}ul.job_listings{padding:0;margin:0;border-top:1px solid #eee}ul.job_listings.loading{min-height:96px;border-bottom:1px solid #eee;background:url(../images/ajax-loader.gif) no-repeat center 32px}ul.job_listings li.job_listing,ul.job_listings li.no_job_listings_found{list-style:none outside;padding:0;margin:0;border-bottom:1px solid #eee}ul.job_listings li.job_listing.job_position_filled a,ul.job_listings li.no_job_listings_found.job_position_filled a{opacity:.25}ul.job_listings li.job_listing.no_job_listings_found,ul.job_listings li.no_job_listings_found.no_job_listings_found{padding:1em;border-bottom:1px solid #eee}ul.job_listings li.job_listing a,ul.job_listings li.no_job_listings_found a{display:block;padding:1em 1em 1em 2em;overflow:hidden;zoom:1;position:relative;line-height:3em;font-size:1em;text-decoration:none}ul.job_listings li.job_listing a:focus,ul.job_listings li.job_listing a:hover,ul.job_listings li.no_job_listings_found a:focus,ul.job_listings li.no_job_listings_found a:hover{background-color:#fcfcfc}ul.job_listings li.job_listing a img.company_logo,ul.job_listings li.no_job_listings_found a img.company_logo{width:42px;height:42px;position:absolute;left:1em;float:left;margin-right:1em;vertical-align:middle;box-shadow:none}ul.job_listings li.job_listing a div.location,ul.job_listings li.job_listing a div.position,ul.job_listings li.job_listing a ul.meta,ul.job_listings li.no_job_listings_found a div.location,ul.job_listings li.no_job_listings_found a div.position,ul.job_listings li.no_job_listings_found a ul.meta{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}ul.job_listings li.job_listing a div.position,ul.job_listings li.no_job_listings_found a div.position{float:left;width:60%;padding:0 0 0 42px;line-height:1.5em}ul.job_listings li.job_listing a div.position h3,ul.job_listings li.no_job_listings_found a div.position h3{margin:0;padding:0;font-size:1em;line-height:1.5em}ul.job_listings li.job_listing a div.position .company,ul.job_listings li.no_job_listings_found a div.position .company{color:#999;font-size:.75em}ul.job_listings li.job_listing a div.position .company .tagline,ul.job_listings li.no_job_listings_found a div.position .company .tagline{margin-left:.5em}ul.job_listings li.job_listing a div.location,ul.job_listings li.no_job_listings_found a div.location{float:left;text-align:left;width:20%;padding:0 0 0 1em;color:#999;font-size:.75em}ul.job_listings li.job_listing a .meta,ul.job_listings li.no_job_listings_found a .meta{float:right;text-align:right;width:20%;padding:0 0 0 1em;margin:0;line-height:1.5em;color:#999;list-style:none outside}ul.job_listings li.job_listing a .meta li,ul.job_listings li.no_job_listings_found a .meta li{list-style:none outside;display:block;font-size:.75em;margin:0}ul.job_listings li.job_listing a .meta .job-type,ul.job_listings li.no_job_listings_found a .meta .job-type{font-weight:700}ul.job_listings li.job_listing.job_position_featured a,ul.job_listings li.no_job_listings_found.job_position_featured a{background:#fefee5}ul.job_listings li.job_listing.job_position_featured a:focus,ul.job_listings li.job_listing.job_position_featured a:hover,ul.job_listings li.no_job_listings_found.job_position_featured a:focus,ul.job_listings li.no_job_listings_found.job_position_featured a:hover{background-color:#fefed8}.widget ul.job_listings li.job_listing a{padding:1em 0}.widget ul.job_listings li.job_listing .position{float:none;width:auto;padding:0}.widget ul.job_listings li.job_listing ul.meta{float:none;width:auto;padding:0;margin:0;text-align:left}.widget ul.job_listings li.job_listing ul.meta li{float:none;display:inline;padding:0;margin:0 .5em 0 0;font-weight:400}.widget ul.job_listings li.job_listing ul.meta li:after{padding:0 0 0 .5em;content:"\2023"}.widget ul.job_listings li.job_listing ul.meta li:last-child:after{content:''}.job-manager .job-type,.job-types .job-type,.job_listing .job-type{color:#f08d3c}.job-manager .full-time,.job-types .full-time,.job_listing .full-time{color:#90da36}.job-manager .part-time,.job-types .part-time,.job_listing .part-time{color:#f08d3c}.job-manager .temporary,.job-types .temporary,.job_listing .temporary{color:#d93674}.job-manager .freelance,.job-types .freelance,.job_listing .freelance{color:#39c}.job-manager .internship,.job-types .internship,.job_listing .internship{color:#6033cc}.single_job_listing .company{position:relative;border:1px solid #eee;padding:1em;margin:0 0 2em;display:block;clear:both;min-height:3em;box-shadow:0 1px 1px rgba(0,0,0,.1)}.single_job_listing .company img{width:3em;height:3em;position:absolute;left:1em;float:left;vertical-align:middle;box-shadow:none}.single_job_listing .company .name{margin:0 0 0 3em;padding:0 0 0 1em;line-height:1.5em}.single_job_listing .company .name a{float:right;margin-left:1em}.single_job_listing .company .tagline{display:block;margin:0 0 0 42px;padding:0 0 0 1em;line-height:1.5em;font-style:italic;color:#999}.single_job_listing .company .website:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e809'}.single_job_listing .company .company_twitter:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e80a'}.single_job_listing .company .company_video{border-top:1px solid #eee;padding:1em 0 0;margin:1em 0 0}.single_job_listing .company .company_video iframe{margin:0;display:block}.single_job_listing .meta{list-style:none outside;padding:0;margin:0 0 1.5em;overflow:hidden;zoom:1;clear:both}.single_job_listing .meta li{margin:0 1em 0 0;padding:.5em;float:left;line-height:1em;color:#999}.single_job_listing .meta .job-type{color:#fff;background-color:#f08d3c}.single_job_listing .meta .full-time{background-color:#90da36}.single_job_listing .meta .part-time{background-color:#f08d3c}.single_job_listing .meta .temporary{background-color:#d93674}.single_job_listing .meta .freelance{background-color:#39c}.single_job_listing .meta .internship{background-color:#6033cc}.single_job_listing .meta .position-filled{color:#b81c23}.single_job_listing .meta .location:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e81d'}.single_job_listing .meta .date-posted:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e80f'}.single_job_listing .meta .position-filled:before{display:inline-block;width:16px;height:16px;-webkit-font-smoothing:antialiased;font-family:job-manager!important;text-decoration:none;font-weight:400;font-style:normal;vertical-align:top;font-size:16px;margin:0 2px 0 0;*overflow:auto;*zoom:1;*display:inline;content:'\e80e'}.single_job_listing .application{padding:0;margin:0 0 1em}.single_job_listing .application .application_button,.single_job_listing .application .application_details{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single_job_listing .application .application_button{text-align:center;font-size:1.1em;line-height:1em;float:left;margin:0 .5em 20px 0;padding:.90909091em 2em;outline:0}.single_job_listing .application .application_details{clear:both;border:1px solid #eee;padding:.75em 1em 0;margin:0;line-height:1.5em;display:block;position:relative;box-shadow:0 1px 1px rgba(0,0,0,.1)}.single_job_listing .application .application_details p{margin:0 0 .75em}.single_job_listing .application .application_details:before{content:"";position:absolute;margin:-10px 0 0 0;top:0;left:5em;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #eee}.single_job_listing .application .application_details:after{content:"";position:absolute;margin:-9px 0 0 1px;left:5em;top:0;width:0;height:0;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid #fff}.job_filters{background:#eee;zoom:1}.job_filters:after,.job_filters:before{content:"";display:table}.job_filters:after{clear:both}.job_filters .search_jobs{padding:1em;zoom:1}.job_filters .search_jobs:after,.job_filters .search_jobs:before{content:"";display:table}.job_filters .search_jobs:after{clear:both}.job_filters .search_jobs div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job_filters .search_jobs div label{display:none}.job_filters .search_jobs div.filter_first,.job_filters .search_jobs div.search_keywords{float:left;padding-right:.5em;width:50%}.job_filters .search_jobs div.filter_last,.job_filters .search_jobs div.search_location{float:right;padding-left:.5em;width:50%}.job_filters .search_jobs div.filter_wide,.job_filters .search_jobs div.search_categories{padding-top:.5em;clear:both;width:100%}.job_filters .search_jobs div .showing_jobs a{padding:.25em}.job_filters .search_jobs div .showing_jobs a.active{background:#ddd;text-decoration:none}.job_filters .search_jobs input,.job_filters .search_jobs select{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}.job_filters .job_types{list-style:none outside;margin:0;padding:0;font-size:.83em;background:#f9f9f9;border-top:1px solid #e5e5e5;zoom:1}.job_filters .job_types:after,.job_filters .job_types:before{content:"";display:table}.job_filters .job_types:after{clear:both}.job_filters .job_types li{margin:0;padding:.5em 1em;float:left;border-right:1px solid #eee}.job_filters .job_types li:last-child{border-right:0}.job_filters .showing_jobs{padding:.5em 1em;display:none;font-size:.83em;background:#f9f9f9;border-top:1px solid #e5e5e5}.job_filters .showing_jobs a{float:right;padding-left:10px}div.job_listings .job-manager-pagination{text-align:center;display:block;padding:1em 0;border-bottom:1px solid #eee;line-height:1}div.job_listings .load_more_jobs{text-align:center;display:block;padding:1em 1em 1em 2em;border-bottom:1px solid #eee;font-weight:700}div.job_listings .load_more_jobs.loading{background:url(../images/ajax-loader.gif) no-repeat center}div.job_listings .load_more_jobs.loading strong{visibility:hidden}div.job_listings .load_more_jobs:focus,div.job_listings .load_more_jobs:hover{background-color:#fcfcfc}.job_listing_preview{padding:0 1em 1em;border:5px solid #eee}.entry-content .job_listing_preview_title,.job_listing_preview_title{padding:.5em 1em;vertical-align:middle;position:relative;background:#eee}.entry-content .job_listing_preview_title h2,.job_listing_preview_title h2{margin:0;clear:none}.entry-content .job_listing_preview_title .button,.job_listing_preview_title .button{float:right;margin-left:.25em}.job_summary_shortcode{border:1px solid #ccc;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;text-align:center;position:relative;box-shadow:0 2px 4px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.4);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.job_summary_shortcode.aligncenter{display:block;margin:2em auto}.job_summary_shortcode.alignleft{float:left;margin:0 2em 2em 0}.job_summary_shortcode.alignright{float:right;margin:0 0 2em 2em}.job_summary_shortcode a{text-decoration:none;color:inherit}.job_summary_shortcode img{margin:0;padding:0;display:block;width:100%;-moz-border-radius:0;-webkit-border-radius:0;-moz-border-top-left-radius:3px;-moz-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-radius:0;border-top-left-radius:3px;border-top-right-radius:3px;box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}.job_summary_shortcode .job_summary_content{padding:0 1em}.job_summary_shortcode .meta{font-style:italic;color:#777}.job_summary_shortcode .job-type{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em;color:#fff;text-shadow:0 1px 0 rgba(255,255,255,.5);box-shadow:0 2px 4px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.4);position:absolute;top:0;right:0;padding:.5em;height:1em;width:auto;min-width:1em;font-size:1em;text-align:center;vertical-align:middle;line-height:1em;margin:-.5em -.5em 0 0}.job_summary_shortcode .job-type.full-time{background-color:#90da36}.job_summary_shortcode .job-type.part-time{background-color:#f08d3c}.job_summary_shortcode .job-type.temporary{background-color:#d93674}.job_summary_shortcode .job-type.freelance{background-color:#39c}.job_summary_shortcode .job-type.internship{background-color:#6033cc}#job-manager-job-dashboard table ul.job-dashboard-actions{margin:0;padding:0;visibility:hidden;font-size:.92em}#job-manager-job-dashboard table ul.job-dashboard-actions li{float:none;display:inline;padding:0;margin:0 .5em 0 0;font-weight:400;list-style:none outside}#job-manager-job-dashboard table ul.job-dashboard-actions li:after{padding:0 0 0 .5em;content:"\2023"}#job-manager-job-dashboard table ul.job-dashboard-actions li:last-child:after{content:''}#job-manager-job-dashboard table ul.job-dashboard-actions li .job-dashboard-action-delete{color:red}#job-manager-job-dashboard table tr:focus ul.job-dashboard-actions,#job-manager-job-dashboard table tr:hover ul.job-dashboard-actions{visibility:visible}#job-manager-job-dashboard table td,#job-manager-job-dashboard table th{padding:.5em 1em .5em 0}#job-manager-job-dashboard table .job_title small{color:#999}#content nav.job-manager-pagination,#job-manager-job-dashboard table .applications,#job-manager-job-dashboard table .expires,#job-manager-job-dashboard table .filled,nav.job-manager-pagination{text-align:center}#content nav.job-manager-pagination ul,nav.job-manager-pagination ul{display:inline-block;white-space:nowrap;padding:0;clear:both;border-left:1px solid #eee;margin:1px}#content nav.job-manager-pagination ul li,nav.job-manager-pagination ul li{border-right:1px solid #eee;border-top:1px solid #eee;border-bottom:1px solid #eee;padding:0;margin:0;float:left;display:inline;overflow:hidden}#content nav.job-manager-pagination ul li a,#content nav.job-manager-pagination ul li span,nav.job-manager-pagination ul li a,nav.job-manager-pagination ul li span{margin:0;text-decoration:none;line-height:1em;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}#content nav.job-manager-pagination ul li a:focus,#content nav.job-manager-pagination ul li a:hover,#content nav.job-manager-pagination ul li span.current,nav.job-manager-pagination ul li a:focus,nav.job-manager-pagination ul li a:hover,nav.job-manager-pagination ul li span.current{background:#eee;color:#888}@media only screen and (max-width:767px){ul.job_listings li.job_listing a,ul.job_listings li.no_job_listings_found a{padding:1em}ul.job_listings li.job_listing a img.company_logo,ul.job_listings li.no_job_listings_found a img.company_logo{visibility:hidden}ul.job_listings li.job_listing a div.position,ul.job_listings li.no_job_listings_found a div.position{float:left;width:60%;padding:0}ul.job_listings li.job_listing a div.location,ul.job_listings li.no_job_listings_found a div.location{float:right;width:40%;line-height:2em;font-size:.75em;padding:0 0 0 1em;text-align:right}ul.job_listings li.job_listing a .meta,ul.job_listings li.no_job_listings_found a .meta{float:right;width:40%;line-height:2em;font-size:.75em}ul.job_listings li.job_listing a .meta li,ul.job_listings li.no_job_listings_found a .meta li{font-size:1em}}
assets/css/frontend.less CHANGED
@@ -45,11 +45,6 @@
45
  list-style:none outside;
46
  .clearfix;
47
  width: auto;
48
- -webkit-box-shadow:
49
- inset 0 -2px 6px rgba(0,0,0,0.05),
50
- inset 0 -2px 30px rgba(0,0,0,0.015),
51
- inset 0 1px 0 #fff,
52
- 0 1px 2px rgba(0,0,0,0.3);
53
  box-shadow:
54
  inset 0 -2px 6px rgba(0,0,0,0.05),
55
  inset 0 -2px 30px rgba(0,0,0,0.015),
@@ -164,21 +159,51 @@
164
  display: block;
165
  line-height: 1.2em;
166
  }
167
- .job-manager-uploaded-file {
168
- line-height: 64px;
169
- font-style: italic;
170
- margin: 0 0 1em 0;
171
- img {
172
- height: 64px;
173
- vertical-align: middle;
174
- margin: 0 1em 0 0;
 
 
 
 
 
 
 
 
 
 
 
 
175
  }
176
  }
177
  }
178
  .submit-job {
179
  padding: 1em 0;
180
  }
181
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
  }
183
  div.job_listings {
184
  margin-bottom: 1em;
@@ -357,15 +382,16 @@ ul.job_listings {
357
  .company {
358
  position: relative;
359
  border: 1px solid #eee;
360
- padding: 1em 1em 1em 42px;
361
  margin: 0 0 2em;
362
  display: block;
363
  clear: both;
364
- min-height: 42px;
 
365
 
366
  img {
367
- width: 42px;
368
- height: 42px;
369
  position: absolute;
370
  left: 1em;
371
  float: left;
@@ -373,8 +399,9 @@ ul.job_listings {
373
  box-shadow: none;
374
  }
375
  .name {
376
- margin: 0;
377
- padding: 0 0 0 2em;
 
378
  a {
379
  float: right;
380
  margin-left: 1em;
@@ -382,8 +409,9 @@ ul.job_listings {
382
  }
383
  .tagline {
384
  display: block;
385
- margin: 0;
386
- padding: 0 0 0 2em;
 
387
  font-style: italic;
388
  color: #999;
389
  }
@@ -395,6 +423,15 @@ ul.job_listings {
395
  .display-icon;
396
  content: '\e80a';
397
  }
 
 
 
 
 
 
 
 
 
398
  }
399
  .meta {
400
  list-style: none outside;
@@ -448,7 +485,7 @@ ul.job_listings {
448
  .application {
449
  padding: 0;
450
  margin: 0 0 1em;
451
-
452
  .application_button, .application_details {
453
  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
454
  -moz-box-sizing: border-box; /* Firefox, other Gecko */
@@ -512,7 +549,6 @@ ul.job_listings {
512
  padding: 1em;
513
  .clearfix;
514
  div {
515
- width: 50%;
516
  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
517
  -moz-box-sizing: border-box; /* Firefox, other Gecko */
518
  box-sizing: border-box; /* Opera/IE 8+ */
@@ -523,22 +559,26 @@ ul.job_listings {
523
  &.search_keywords, &.filter_first {
524
  float: left;
525
  padding-right: .5em;
 
526
  }
527
  &.search_location, &.filter_last {
528
  float: right;
529
  padding-left: .5em;
 
530
  }
531
  &.search_categories, &.filter_wide {
532
  padding-top: .5em;
533
  clear: both;
534
  width: 100%;
535
  }
536
- a {
537
- padding: .25em;
538
- }
539
- a.active {
540
- background: #ddd;
541
- text-decoration: none;
 
 
542
  }
543
  }
544
  input, select {
45
  list-style:none outside;
46
  .clearfix;
47
  width: auto;
 
 
 
 
 
48
  box-shadow:
49
  inset 0 -2px 6px rgba(0,0,0,0.05),
50
  inset 0 -2px 30px rgba(0,0,0,0.015),
159
  display: block;
160
  line-height: 1.2em;
161
  }
162
+ .job-manager-uploaded-files {
163
+ display: table;
164
+ .job-manager-uploaded-file {
165
+ line-height: 1.5em;
166
+ font-style: italic;
167
+ display: table-row;
168
+ .job-manager-uploaded-file-preview {
169
+ display: table-cell;
170
+ vertical-align: middle;
171
+ padding: .5em 0 .5em 0;
172
+ img {
173
+ height: 64px;
174
+ margin: 0;
175
+ }
176
+ }
177
+ .job-manager-uploaded-file-name {
178
+ display: table-cell;
179
+ vertical-align: middle;
180
+ padding: .5em 0 .5em 1em;
181
+ }
182
  }
183
  }
184
  }
185
  .submit-job {
186
  padding: 1em 0;
187
  }
188
+ .job-manager-term-checklist {
189
+ list-style: none outside;
190
+ max-height: 200px;
191
+ overflow: auto;
192
+ margin: 0;
193
+ li {
194
+ list-style: none outside;
195
+ margin: 0;
196
+ display: block;
197
+ float: none;
198
+ label {
199
+ width: auto;
200
+ float: none;
201
+ }
202
+ li {
203
+ margin: 0 0 0 2em;
204
+ }
205
+ }
206
+ }
207
  }
208
  div.job_listings {
209
  margin-bottom: 1em;
382
  .company {
383
  position: relative;
384
  border: 1px solid #eee;
385
+ padding: 1em;
386
  margin: 0 0 2em;
387
  display: block;
388
  clear: both;
389
+ min-height: 3em;
390
+ box-shadow: 0 1px 1px rgba(0,0,0,0.1);
391
 
392
  img {
393
+ width: 3em;
394
+ height: 3em;
395
  position: absolute;
396
  left: 1em;
397
  float: left;
399
  box-shadow: none;
400
  }
401
  .name {
402
+ margin: 0 0 0 3em;
403
+ padding: 0 0 0 1em;
404
+ line-height: 1.5em;
405
  a {
406
  float: right;
407
  margin-left: 1em;
409
  }
410
  .tagline {
411
  display: block;
412
+ margin: 0 0 0 42px;
413
+ padding: 0 0 0 1em;
414
+ line-height: 1.5em;
415
  font-style: italic;
416
  color: #999;
417
  }
423
  .display-icon;
424
  content: '\e80a';
425
  }
426
+ .company_video {
427
+ border-top: 1px solid #eee;
428
+ padding: 1em 0 0;
429
+ margin: 1em 0 0 0;
430
+ iframe {
431
+ margin: 0;
432
+ display: block;
433
+ }
434
+ }
435
  }
436
  .meta {
437
  list-style: none outside;
485
  .application {
486
  padding: 0;
487
  margin: 0 0 1em;
488
+
489
  .application_button, .application_details {
490
  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
491
  -moz-box-sizing: border-box; /* Firefox, other Gecko */
549
  padding: 1em;
550
  .clearfix;
551
  div {
 
552
  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
553
  -moz-box-sizing: border-box; /* Firefox, other Gecko */
554
  box-sizing: border-box; /* Opera/IE 8+ */
559
  &.search_keywords, &.filter_first {
560
  float: left;
561
  padding-right: .5em;
562
+ width: 50%;
563
  }
564
  &.search_location, &.filter_last {
565
  float: right;
566
  padding-left: .5em;
567
+ width: 50%;
568
  }
569
  &.search_categories, &.filter_wide {
570
  padding-top: .5em;
571
  clear: both;
572
  width: 100%;
573
  }
574
+ .showing_jobs {
575
+ a {
576
+ padding: .25em;
577
+ }
578
+ a.active {
579
+ background: #ddd;
580
+ text-decoration: none;
581
+ }
582
  }
583
  }
584
  input, select {
assets/images/chosen-sprite.png ADDED
Binary file
assets/images/chosen-sprite@2x.png ADDED
Binary file
assets/js/admin.js CHANGED
@@ -12,4 +12,54 @@ jQuery(document).ready(function($) {
12
  dateFormat: 'yy-mm-dd',
13
  minDate: 0
14
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  });
12
  dateFormat: 'yy-mm-dd',
13
  minDate: 0
14
  });
15
+
16
+ // Uploading files
17
+ var file_frame;
18
+ var file_target_input;
19
+ var file_target_wrapper;
20
+
21
+ $('.wp_job_manager_add_another_file_button').live('click', function( event ){
22
+ event.preventDefault();
23
+
24
+ var wrapper = $( this ).closest( '.form-field' );
25
+ var field_name = $( this ).data( 'field_name' );
26
+ var field_placeholder = $( this ).data( 'field_placeholder' );
27
+ var button_text = $( this ).data( 'uploader_button_text' );
28
+ var button = $( this ).data( 'uploader_button' );
29
+
30
+ wrapper.prepend('<span class="file_url"><input type="text" name="' + field_name + '[]" placeholder="' + field_placeholder + '" /> <button class="button wp_job_manager_upload_file_button" data-uploader_button_text="' + button_text + '">' + button + '</button></span>');
31
+ });
32
+
33
+ $('.wp_job_manager_upload_file_button').live('click', function( event ){
34
+ event.preventDefault();
35
+
36
+ file_target_wrapper = $( this ).closest('.file_url');
37
+ file_target_input = file_target_wrapper.find('input');
38
+
39
+ // If the media frame already exists, reopen it.
40
+ if ( file_frame ) {
41
+ file_frame.open();
42
+ return;
43
+ }
44
+
45
+ // Create the media frame.
46
+ file_frame = wp.media.frames.file_frame = wp.media({
47
+ title: $( this ).data( 'uploader_title' ),
48
+ button: {
49
+ text: $( this ).data( 'uploader_button_text' ),
50
+ },
51
+ multiple: false // Set to true to allow multiple files to be selected
52
+ });
53
+
54
+ // When an image is selected, run a callback.
55
+ file_frame.on( 'select', function() {
56
+ // We set multiple to false so only get one image from the uploader
57
+ attachment = file_frame.state().get('selection').first().toJSON();
58
+
59
+ $( file_target_input ).val( attachment.url );
60
+ });
61
+
62
+ // Finally, open the modal
63
+ file_frame.open();
64
+ });
65
  });
assets/js/admin.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(a){a(".tips, .help_tip").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200}),a("input#_job_expires").datepicker({dateFormat:"yy-mm-dd",minDate:0})});
1
+ jQuery(document).ready(function(a){a(".tips, .help_tip").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200}),a("input#_job_expires").datepicker({dateFormat:"yy-mm-dd",minDate:0});var b,c,d;a(".wp_job_manager_add_another_file_button").live("click",function(b){b.preventDefault();var c=a(this).closest(".form-field"),d=a(this).data("field_name"),e=a(this).data("field_placeholder"),f=a(this).data("uploader_button_text"),g=a(this).data("uploader_button");c.prepend('<span class="file_url"><input type="text" name="'+d+'[]" placeholder="'+e+'" /> <button class="button wp_job_manager_upload_file_button" data-uploader_button_text="'+f+'">'+g+"</button></span>")}),a(".wp_job_manager_upload_file_button").live("click",function(e){return e.preventDefault(),d=a(this).closest(".file_url"),c=d.find("input"),b?void b.open():(b=wp.media.frames.file_frame=wp.media({title:a(this).data("uploader_title"),button:{text:a(this).data("uploader_button_text")},multiple:!1}),b.on("select",function(){attachment=b.state().get("selection").first().toJSON(),a(c).val(attachment.url)}),void b.open())})});
assets/js/ajax-filters.js CHANGED
@@ -173,7 +173,7 @@ jQuery( document ).ready( function ( $ ) {
173
 
174
  form.find( ':input[name=search_keywords]' ).val( '' );
175
  form.find( ':input[name=search_location]' ).val( '' );
176
- form.find( ':input[name^=search_categories]' ).val( 0 );
177
  $( ':input[name="filter_job_type[]"]', form ).attr( 'checked', 'checked' );
178
 
179
  target.trigger( 'reset' );
@@ -208,4 +208,7 @@ jQuery( document ).ready( function ( $ ) {
208
  return false;
209
  } );
210
 
 
 
 
211
  } );
173
 
174
  form.find( ':input[name=search_keywords]' ).val( '' );
175
  form.find( ':input[name=search_location]' ).val( '' );
176
+ form.find( ':input[name^=search_categories]' ).val( 0 ).trigger( 'chosen:updated' );
177
  $( ':input[name="filter_job_type[]"]', form ).attr( 'checked', 'checked' );
178
 
179
  target.trigger( 'reset' );
208
  return false;
209
  } );
210
 
211
+ if ( $.isFunction( $.fn.chosen ) ) {
212
+ $( 'select[name^=search_categories]' ).chosen();
213
+ }
214
  } );
assets/js/ajax-filters.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(a){var b=[];a(".job_listings").on("update_results",function(c,d,e){var f="",g=a(this),h=g.find(".job_filters"),i=g.find(".showing_jobs"),j=g.find(".job_listings"),k=g.data("per_page"),l=g.data("orderby"),m=g.data("order"),n=g.data("featured"),o=a("div.job_listings").index(this);if(b[o]&&b[o].abort(),e?a(".load_more_jobs",g).addClass("loading"):(a(j).addClass("loading"),a("li.job_listing, li.no_job_listings_found",j).css("visibility","hidden")),1==g.data("show_filters")){var p=[];a(':input[name="filter_job_type[]"]:checked, :input[name="filter_job_type[]"][type="hidden"]',h).each(function(){p.push(a(this).val())});var q=h.find(":input[name^=search_categories], :input[name^=search_categories]").map(function(){return a(this).val()}).get(),r="",s="",t=h.find(":input[name=search_keywords]"),u=h.find(":input[name=search_location]");t.val()!==t.attr("placeholder")&&(r=t.val()),u.val()!==u.attr("placeholder")&&(s=u.val()),f={action:"job_manager_get_listings",search_keywords:r,search_location:s,search_categories:q,filter_job_type:p,per_page:k,orderby:l,order:m,page:d,featured:n,show_pagination:g.data("show_pagination"),form_data:h.serialize()}}else{var q=g.data("categories"),r=g.data("keywords"),s=g.data("location");q&&(q=q.split(",")),f={action:"job_manager_get_listings",search_categories:q,search_keywords:r,search_location:s,per_page:k,orderby:l,order:m,page:d,featured:n,show_pagination:g.data("show_pagination")}}b[o]=a.ajax({type:"POST",url:job_manager_ajax_filters.ajax_url,data:f,success:function(b){if(b)try{b.indexOf("<!--WPJM-->")>=0&&(b=b.split("<!--WPJM-->")[1]),b.indexOf("<!--WPJM_END-->")>=0&&(b=b.split("<!--WPJM_END-->")[0]);var c=a.parseJSON(b);c.showing?a(i).show().html("").append("<span>"+c.showing+"</span>"+c.showing_links):a(i).hide(),c.html&&(e?a(j).append(c.html):a(j).html(c.html)),1==g.data("show_pagination")?(g.find(".job-manager-pagination").remove(),c.pagination&&g.append(c.pagination)):(c.found_jobs&&c.max_num_pages!==d?a(".load_more_jobs",g).show().data("page",d):a(".load_more_jobs",g).hide(),a(".load_more_jobs",g).removeClass("loading"),a("li.job_listing",j).css("visibility","visible")),a(j).removeClass("loading"),g.trigger("updated_results",c)}catch(f){}}})}),a("#search_keywords, #search_location, .job_types input, #search_categories").change(function(){var b=a(this).closest("div.job_listings");b.trigger("update_results",[1,!1])}).on("keyup",function(b){13===b.which&&a(this).trigger("change")}),a(".job_filters").each(function(){a(this).find("#search_keywords, #search_location, .job_types input, #search_categories").eq(0).change()}),a(".job_filters").on("click",".reset",function(){var b=a(this).closest("div.job_listings"),c=a(this).closest("form");return c.find(":input[name=search_keywords]").val(""),c.find(":input[name=search_location]").val(""),c.find(":input[name^=search_categories]").val(0),a(':input[name="filter_job_type[]"]',c).attr("checked","checked"),b.trigger("reset"),b.trigger("update_results",[1,!1]),!1}),a(".load_more_jobs").click(function(){var b=a(this).closest("div.job_listings"),c=a(this).data("page");return c=c?parseInt(c):1,a(this).data("page",c+1),b.trigger("update_results",[c+1,!0]),!1}),a("div.job_listings").on("click",".job-manager-pagination a",function(){var b=a(this).closest("div.job_listings"),c=a(this).data("page");return b.trigger("update_results",[c,!1]),!1})});
1
+ jQuery(document).ready(function(a){var b=[];a(".job_listings").on("update_results",function(c,d,e){var f="",g=a(this),h=g.find(".job_filters"),i=g.find(".showing_jobs"),j=g.find(".job_listings"),k=g.data("per_page"),l=g.data("orderby"),m=g.data("order"),n=g.data("featured"),o=a("div.job_listings").index(this);if(b[o]&&b[o].abort(),e?a(".load_more_jobs",g).addClass("loading"):(a(j).addClass("loading"),a("li.job_listing, li.no_job_listings_found",j).css("visibility","hidden")),1==g.data("show_filters")){var p=[];a(':input[name="filter_job_type[]"]:checked, :input[name="filter_job_type[]"][type="hidden"]',h).each(function(){p.push(a(this).val())});var q=h.find(":input[name^=search_categories], :input[name^=search_categories]").map(function(){return a(this).val()}).get(),r="",s="",t=h.find(":input[name=search_keywords]"),u=h.find(":input[name=search_location]");t.val()!==t.attr("placeholder")&&(r=t.val()),u.val()!==u.attr("placeholder")&&(s=u.val()),f={action:"job_manager_get_listings",search_keywords:r,search_location:s,search_categories:q,filter_job_type:p,per_page:k,orderby:l,order:m,page:d,featured:n,show_pagination:g.data("show_pagination"),form_data:h.serialize()}}else{var q=g.data("categories"),r=g.data("keywords"),s=g.data("location");q&&(q=q.split(",")),f={action:"job_manager_get_listings",search_categories:q,search_keywords:r,search_location:s,per_page:k,orderby:l,order:m,page:d,featured:n,show_pagination:g.data("show_pagination")}}b[o]=a.ajax({type:"POST",url:job_manager_ajax_filters.ajax_url,data:f,success:function(b){if(b)try{b.indexOf("<!--WPJM-->")>=0&&(b=b.split("<!--WPJM-->")[1]),b.indexOf("<!--WPJM_END-->")>=0&&(b=b.split("<!--WPJM_END-->")[0]);var c=a.parseJSON(b);c.showing?a(i).show().html("").append("<span>"+c.showing+"</span>"+c.showing_links):a(i).hide(),c.html&&(e?a(j).append(c.html):a(j).html(c.html)),1==g.data("show_pagination")?(g.find(".job-manager-pagination").remove(),c.pagination&&g.append(c.pagination)):(c.found_jobs&&c.max_num_pages!==d?a(".load_more_jobs",g).show().data("page",d):a(".load_more_jobs",g).hide(),a(".load_more_jobs",g).removeClass("loading"),a("li.job_listing",j).css("visibility","visible")),a(j).removeClass("loading"),g.trigger("updated_results",c)}catch(f){}}})}),a("#search_keywords, #search_location, .job_types input, #search_categories").change(function(){var b=a(this).closest("div.job_listings");b.trigger("update_results",[1,!1])}).on("keyup",function(b){13===b.which&&a(this).trigger("change")}),a(".job_filters").each(function(){a(this).find("#search_keywords, #search_location, .job_types input, #search_categories").eq(0).change()}),a(".job_filters").on("click",".reset",function(){var b=a(this).closest("div.job_listings"),c=a(this).closest("form");return c.find(":input[name=search_keywords]").val(""),c.find(":input[name=search_location]").val(""),c.find(":input[name^=search_categories]").val(0).trigger("chosen:updated"),a(':input[name="filter_job_type[]"]',c).attr("checked","checked"),b.trigger("reset"),b.trigger("update_results",[1,!1]),!1}),a(".load_more_jobs").click(function(){var b=a(this).closest("div.job_listings"),c=a(this).data("page");return c=c?parseInt(c):1,a(this).data("page",c+1),b.trigger("update_results",[c+1,!0]),!1}),a("div.job_listings").on("click",".job-manager-pagination a",function(){var b=a(this).closest("div.job_listings"),c=a(this).data("page");return b.trigger("update_results",[c,!1]),!1}),a.isFunction(a.fn.chosen)&&a("select[name^=search_categories]").chosen()});
assets/js/job-submission.js CHANGED
@@ -1,6 +1,6 @@
1
  jQuery(document).ready(function($) {
2
  jQuery( '.job-manager-remove-uploaded-file' ).click(function() {
3
- jQuery( '.job-manager-uploaded-file' ).remove();
4
  return false;
5
  });
6
  });
1
  jQuery(document).ready(function($) {
2
  jQuery( '.job-manager-remove-uploaded-file' ).click(function() {
3
+ jQuery(this).closest( '.job-manager-uploaded-file' ).remove();
4
  return false;
5
  });
6
  });
assets/js/job-submission.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(){jQuery(".job-manager-remove-uploaded-file").click(function(){return jQuery(".job-manager-uploaded-file").remove(),!1})});
1
+ jQuery(document).ready(function(){jQuery(".job-manager-remove-uploaded-file").click(function(){return jQuery(this).closest(".job-manager-uploaded-file").remove(),!1})});
assets/js/jquery-chosen/chosen.jquery.js ADDED
@@ -0,0 +1,1211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ Chosen, a Select Box Enhancer for jQuery and Prototype
3
+ by Patrick Filler for Harvest, http://getharvest.com
4
+
5
+ Version 1.1.0
6
+ Full source at https://github.com/harvesthq/chosen
7
+ Copyright (c) 2011 Harvest http://getharvest.com
8
+
9
+ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
10
+ This file is generated by `grunt build`, do not edit it by hand.
11
+ */
12
+
13
+ (function() {
14
+ var $, AbstractChosen, Chosen, SelectParser, _ref,
15
+ __hasProp = {}.hasOwnProperty,
16
+ __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
17
+
18
+ SelectParser = (function() {
19
+ function SelectParser() {
20
+ this.options_index = 0;
21
+ this.parsed = [];
22
+ }
23
+
24
+ SelectParser.prototype.add_node = function(child) {
25
+ if (child.nodeName.toUpperCase() === "OPTGROUP") {
26
+ return this.add_group(child);
27
+ } else {
28
+ return this.add_option(child);
29
+ }
30
+ };
31
+
32
+ SelectParser.prototype.add_group = function(group) {
33
+ var group_position, option, _i, _len, _ref, _results;
34
+ group_position = this.parsed.length;
35
+ this.parsed.push({
36
+ array_index: group_position,
37
+ group: true,
38
+ label: this.escapeExpression(group.label),
39
+ children: 0,
40
+ disabled: group.disabled
41
+ });
42
+ _ref = group.childNodes;
43
+ _results = [];
44
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
45
+ option = _ref[_i];
46
+ _results.push(this.add_option(option, group_position, group.disabled));
47
+ }
48
+ return _results;
49
+ };
50
+
51
+ SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
52
+ if (option.nodeName.toUpperCase() === "OPTION") {
53
+ if (option.text !== "") {
54
+ if (group_position != null) {
55
+ this.parsed[group_position].children += 1;
56
+ }
57
+ this.parsed.push({
58
+ array_index: this.parsed.length,
59
+ options_index: this.options_index,
60
+ value: option.value,
61
+ text: option.text,
62
+ html: option.innerHTML,
63
+ selected: option.selected,
64
+ disabled: group_disabled === true ? group_disabled : option.disabled,
65
+ group_array_index: group_position,
66
+ classes: option.className,
67
+ style: option.style.cssText
68
+ });
69
+ } else {
70
+ this.parsed.push({
71
+ array_index: this.parsed.length,
72
+ options_index: this.options_index,
73
+ empty: true
74
+ });
75
+ }
76
+ return this.options_index += 1;
77
+ }
78
+ };
79
+
80
+ SelectParser.prototype.escapeExpression = function(text) {
81
+ var map, unsafe_chars;
82
+ if ((text == null) || text === false) {
83
+ return "";
84
+ }
85
+ if (!/[\&\<\>\"\'\`]/.test(text)) {
86
+ return text;
87
+ }
88
+ map = {
89
+ "<": "&lt;",
90
+ ">": "&gt;",
91
+ '"': "&quot;",
92
+ "'": "&#x27;",
93
+ "`": "&#x60;"
94
+ };
95
+ unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g;
96
+ return text.replace(unsafe_chars, function(chr) {
97
+ return map[chr] || "&amp;";
98
+ });
99
+ };
100
+
101
+ return SelectParser;
102
+
103
+ })();
104
+
105
+ SelectParser.select_to_array = function(select) {
106
+ var child, parser, _i, _len, _ref;
107
+ parser = new SelectParser();
108
+ _ref = select.childNodes;
109
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
110
+ child = _ref[_i];
111
+ parser.add_node(child);
112
+ }
113
+ return parser.parsed;
114
+ };
115
+
116
+ AbstractChosen = (function() {
117
+ function AbstractChosen(form_field, options) {
118
+ this.form_field = form_field;
119
+ this.options = options != null ? options : {};
120
+ if (!AbstractChosen.browser_is_supported()) {
121
+ return;
122
+ }
123
+ this.is_multiple = this.form_field.multiple;
124
+ this.set_default_text();
125
+ this.set_default_values();
126
+ this.setup();
127
+ this.set_up_html();
128
+ this.register_observers();
129
+ }
130
+
131
+ AbstractChosen.prototype.set_default_values = function() {
132
+ var _this = this;
133
+ this.click_test_action = function(evt) {
134
+ return _this.test_active_click(evt);
135
+ };
136
+ this.activate_action = function(evt) {
137
+ return _this.activate_field(evt);
138
+ };
139
+ this.active_field = false;
140
+ this.mouse_on_container = false;
141
+ this.results_showing = false;
142
+ this.result_highlighted = null;
143
+ this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
144
+ this.disable_search_threshold = this.options.disable_search_threshold || 0;
145
+ this.disable_search = this.options.disable_search || false;
146
+ this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
147
+ this.group_search = this.options.group_search != null ? this.options.group_search : true;
148
+ this.search_contains = this.options.search_contains || false;
149
+ this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
150
+ this.max_selected_options = this.options.max_selected_options || Infinity;
151
+ this.inherit_select_classes = this.options.inherit_select_classes || false;
152
+ this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
153
+ return this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
154
+ };
155
+
156
+ AbstractChosen.prototype.set_default_text = function() {
157
+ if (this.form_field.getAttribute("data-placeholder")) {
158
+ this.default_text = this.form_field.getAttribute("data-placeholder");
159
+ } else if (this.is_multiple) {
160
+ this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
161
+ } else {
162
+ this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
163
+ }
164
+ return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
165
+ };
166
+
167
+ AbstractChosen.prototype.mouse_enter = function() {
168
+ return this.mouse_on_container = true;
169
+ };
170
+
171
+ AbstractChosen.prototype.mouse_leave = function() {
172
+ return this.mouse_on_container = false;
173
+ };
174
+
175
+ AbstractChosen.prototype.input_focus = function(evt) {
176
+ var _this = this;
177
+ if (this.is_multiple) {
178
+ if (!this.active_field) {
179
+ return setTimeout((function() {
180
+ return _this.container_mousedown();
181
+ }), 50);
182
+ }
183
+ } else {
184
+ if (!this.active_field) {
185
+ return this.activate_field();
186
+ }
187
+ }
188
+ };
189
+
190
+ AbstractChosen.prototype.input_blur = function(evt) {
191
+ var _this = this;
192
+ if (!this.mouse_on_container) {
193
+ this.active_field = false;
194
+ return setTimeout((function() {
195
+ return _this.blur_test();
196
+ }), 100);
197
+ }
198
+ };
199
+
200
+ AbstractChosen.prototype.results_option_build = function(options) {
201
+ var content, data, _i, _len, _ref;
202
+ content = '';
203
+ _ref = this.results_data;
204
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
205
+ data = _ref[_i];
206
+ if (data.group) {
207
+ content += this.result_add_group(data);
208
+ } else {
209
+ content += this.result_add_option(data);
210
+ }
211
+ if (options != null ? options.first : void 0) {
212
+ if (data.selected && this.is_multiple) {
213
+ this.choice_build(data);
214
+ } else if (data.selected && !this.is_multiple) {
215
+ this.single_set_selected_text(data.text);
216
+ }
217
+ }
218
+ }
219
+ return content;
220
+ };
221
+
222
+ AbstractChosen.prototype.result_add_option = function(option) {
223
+ var classes, option_el;
224
+ if (!option.search_match) {
225
+ return '';
226
+ }
227
+ if (!this.include_option_in_results(option)) {
228
+ return '';
229
+ }
230
+ classes = [];
231
+ if (!option.disabled && !(option.selected && this.is_multiple)) {
232
+ classes.push("active-result");
233
+ }
234
+ if (option.disabled && !(option.selected && this.is_multiple)) {
235
+ classes.push("disabled-result");
236
+ }
237
+ if (option.selected) {
238
+ classes.push("result-selected");
239
+ }
240
+ if (option.group_array_index != null) {
241
+ classes.push("group-option");
242
+ }
243
+ if (option.classes !== "") {
244
+ classes.push(option.classes);
245
+ }
246
+ option_el = document.createElement("li");
247
+ option_el.className = classes.join(" ");
248
+ option_el.style.cssText = option.style;
249
+ option_el.setAttribute("data-option-array-index", option.array_index);
250
+ option_el.innerHTML = option.search_text;
251
+ return this.outerHTML(option_el);
252
+ };
253
+
254
+ AbstractChosen.prototype.result_add_group = function(group) {
255
+ var group_el;
256
+ if (!(group.search_match || group.group_match)) {
257
+ return '';
258
+ }
259
+ if (!(group.active_options > 0)) {
260
+ return '';
261
+ }
262
+ group_el = document.createElement("li");
263
+ group_el.className = "group-result";
264
+ group_el.innerHTML = group.search_text;
265
+ return this.outerHTML(group_el);
266
+ };
267
+
268
+ AbstractChosen.prototype.results_update_field = function() {
269
+ this.set_default_text();
270
+ if (!this.is_multiple) {
271
+ this.results_reset_cleanup();
272
+ }
273
+ this.result_clear_highlight();
274
+ this.results_build();
275
+ if (this.results_showing) {
276
+ return this.winnow_results();
277
+ }
278
+ };
279
+
280
+ AbstractChosen.prototype.reset_single_select_options = function() {
281
+ var result, _i, _len, _ref, _results;
282
+ _ref = this.results_data;
283
+ _results = [];
284
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
285
+ result = _ref[_i];
286
+ if (result.selected) {
287
+ _results.push(result.selected = false);
288
+ } else {
289
+ _results.push(void 0);
290
+ }
291
+ }
292
+ return _results;
293
+ };
294
+
295
+ AbstractChosen.prototype.results_toggle = function() {
296
+ if (this.results_showing) {
297
+ return this.results_hide();
298
+ } else {
299
+ return this.results_show();
300
+ }
301
+ };
302
+
303
+ AbstractChosen.prototype.results_search = function(evt) {
304
+ if (this.results_showing) {
305
+ return this.winnow_results();
306
+ } else {
307
+ return this.results_show();
308
+ }
309
+ };
310
+
311
+ AbstractChosen.prototype.winnow_results = function() {
312
+ var escapedSearchText, option, regex, regexAnchor, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref;
313
+ this.no_results_clear();
314
+ results = 0;
315
+ searchText = this.get_search_text();
316
+ escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
317
+ regexAnchor = this.search_contains ? "" : "^";
318
+ regex = new RegExp(regexAnchor + escapedSearchText, 'i');
319
+ zregex = new RegExp(escapedSearchText, 'i');
320
+ _ref = this.results_data;
321
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
322
+ option = _ref[_i];
323
+ option.search_match = false;
324
+ results_group = null;
325
+ if (this.include_option_in_results(option)) {
326
+ if (option.group) {
327
+ option.group_match = false;
328
+ option.active_options = 0;
329
+ }
330
+ if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
331
+ results_group = this.results_data[option.group_array_index];
332
+ if (results_group.active_options === 0 && results_group.search_match) {
333
+ results += 1;
334
+ }
335
+ results_group.active_options += 1;
336
+ }
337
+ if (!(option.group && !this.group_search)) {
338
+ option.search_text = option.group ? option.label : option.html;
339
+ option.search_match = this.search_string_match(option.search_text, regex);
340
+ if (option.search_match && !option.group) {
341
+ results += 1;
342
+ }
343
+ if (option.search_match) {
344
+ if (searchText.length) {
345
+ startpos = option.search_text.search(zregex);
346
+ text = option.search_text.substr(0, startpos + searchText.length) + '</em>' + option.search_text.substr(startpos + searchText.length);
347
+ option.search_text = text.substr(0, startpos) + '<em>' + text.substr(startpos);
348
+ }
349
+ if (results_group != null) {
350
+ results_group.group_match = true;
351
+ }
352
+ } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
353
+ option.search_match = true;
354
+ }
355
+ }
356
+ }
357
+ }
358
+ this.result_clear_highlight();
359
+ if (results < 1 && searchText.length) {
360
+ this.update_results_content("");
361
+ return this.no_results(searchText);
362
+ } else {
363
+ this.update_results_content(this.results_option_build());
364
+ return this.winnow_results_set_highlight();
365
+ }
366
+ };
367
+
368
+ AbstractChosen.prototype.search_string_match = function(search_string, regex) {
369
+ var part, parts, _i, _len;
370
+ if (regex.test(search_string)) {
371
+ return true;
372
+ } else if (this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) {
373
+ parts = search_string.replace(/\[|\]/g, "").split(" ");
374
+ if (parts.length) {
375
+ for (_i = 0, _len = parts.length; _i < _len; _i++) {
376
+ part = parts[_i];
377
+ if (regex.test(part)) {
378
+ return true;
379
+ }
380
+ }
381
+ }
382
+ }
383
+ };
384
+
385
+ AbstractChosen.prototype.choices_count = function() {
386
+ var option, _i, _len, _ref;
387
+ if (this.selected_option_count != null) {
388
+ return this.selected_option_count;
389
+ }
390
+ this.selected_option_count = 0;
391
+ _ref = this.form_field.options;
392
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
393
+ option = _ref[_i];
394
+ if (option.selected) {
395
+ this.selected_option_count += 1;
396
+ }
397
+ }
398
+ return this.selected_option_count;
399
+ };
400
+
401
+ AbstractChosen.prototype.choices_click = function(evt) {
402
+ evt.preventDefault();
403
+ if (!(this.results_showing || this.is_disabled)) {
404
+ return this.results_show();
405
+ }
406
+ };
407
+
408
+ AbstractChosen.prototype.keyup_checker = function(evt) {
409
+ var stroke, _ref;
410
+ stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;
411
+ this.search_field_scale();
412
+ switch (stroke) {
413
+ case 8:
414
+ if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
415
+ return this.keydown_backstroke();
416
+ } else if (!this.pending_backstroke) {
417
+ this.result_clear_highlight();
418
+ return this.results_search();
419
+ }
420
+ break;
421
+ case 13:
422
+ evt.preventDefault();
423
+ if (this.results_showing) {
424
+ return this.result_select(evt);
425
+ }
426
+ break;
427
+ case 27:
428
+ if (this.results_showing) {
429
+ this.results_hide();
430
+ }
431
+ return true;
432
+ case 9:
433
+ case 38:
434
+ case 40:
435
+ case 16:
436
+ case 91:
437
+ case 17:
438
+ break;
439
+ default:
440
+ return this.results_search();
441
+ }
442
+ };
443
+
444
+ AbstractChosen.prototype.clipboard_event_checker = function(evt) {
445
+ var _this = this;
446
+ return setTimeout((function() {
447
+ return _this.results_search();
448
+ }), 50);
449
+ };
450
+
451
+ AbstractChosen.prototype.container_width = function() {
452
+ if (this.options.width != null) {
453
+ return this.options.width;
454
+ } else {
455
+ return "" + this.form_field.offsetWidth + "px";
456
+ }
457
+ };
458
+
459
+ AbstractChosen.prototype.include_option_in_results = function(option) {
460
+ if (this.is_multiple && (!this.display_selected_options && option.selected)) {
461
+ return false;
462
+ }
463
+ if (!this.display_disabled_options && option.disabled) {
464
+ return false;
465
+ }
466
+ if (option.empty) {
467
+ return false;
468
+ }
469
+ return true;
470
+ };
471
+
472
+ AbstractChosen.prototype.search_results_touchstart = function(evt) {
473
+ this.touch_started = true;
474
+ return this.search_results_mouseover(evt);
475
+ };
476
+
477
+ AbstractChosen.prototype.search_results_touchmove = function(evt) {
478
+ this.touch_started = false;
479
+ return this.search_results_mouseout(evt);
480
+ };
481
+
482
+ AbstractChosen.prototype.search_results_touchend = function(evt) {
483
+ if (this.touch_started) {
484
+ return this.search_results_mouseup(evt);
485
+ }
486
+ };
487
+
488
+ AbstractChosen.prototype.outerHTML = function(element) {
489
+ var tmp;
490
+ if (element.outerHTML) {
491
+ return element.outerHTML;
492
+ }
493
+ tmp = document.createElement("div");
494
+ tmp.appendChild(element);
495
+ return tmp.innerHTML;
496
+ };
497
+
498
+ AbstractChosen.browser_is_supported = function() {
499
+ if (window.navigator.appName === "Microsoft Internet Explorer") {
500
+ return document.documentMode >= 8;
501
+ }
502
+ if (/iP(od|hone)/i.test(window.navigator.userAgent)) {
503
+ return false;
504
+ }
505
+ if (/Android/i.test(window.navigator.userAgent)) {
506
+ if (/Mobile/i.test(window.navigator.userAgent)) {
507
+ return false;
508
+ }
509
+ }
510
+ return true;
511
+ };
512
+
513
+ AbstractChosen.default_multiple_text = "Select Some Options";
514
+
515
+ AbstractChosen.default_single_text = "Select an Option";
516
+
517
+ AbstractChosen.default_no_result_text = "No results match";
518
+
519
+ return AbstractChosen;
520
+
521
+ })();
522
+
523
+ $ = jQuery;
524
+
525
+ $.fn.extend({
526
+ chosen: function(options) {
527
+ if (!AbstractChosen.browser_is_supported()) {
528
+ return this;
529
+ }
530
+ return this.each(function(input_field) {
531
+ var $this, chosen;
532
+ $this = $(this);
533
+ chosen = $this.data('chosen');
534
+ if (options === 'destroy' && chosen) {
535
+ chosen.destroy();
536
+ } else if (!chosen) {
537
+ $this.data('chosen', new Chosen(this, options));
538
+ }
539
+ });
540
+ }
541
+ });
542
+
543
+ Chosen = (function(_super) {
544
+ __extends(Chosen, _super);
545
+
546
+ function Chosen() {
547
+ _ref = Chosen.__super__.constructor.apply(this, arguments);
548
+ return _ref;
549
+ }
550
+
551
+ Chosen.prototype.setup = function() {
552
+ this.form_field_jq = $(this.form_field);
553
+ this.current_selectedIndex = this.form_field.selectedIndex;
554
+ return this.is_rtl = this.form_field_jq.hasClass("chosen-rtl");
555
+ };
556
+
557
+ Chosen.prototype.set_up_html = function() {
558
+ var container_classes, container_props;
559
+ container_classes = ["chosen-container"];
560
+ container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
561
+ if (this.inherit_select_classes && this.form_field.className) {
562
+ container_classes.push(this.form_field.className);
563
+ }
564
+ if (this.is_rtl) {
565
+ container_classes.push("chosen-rtl");
566
+ }
567
+ container_props = {
568
+ 'class': container_classes.join(' '),
569
+ 'style': "width: " + (this.container_width()) + ";",
570
+ 'title': this.form_field.title
571
+ };
572
+ if (this.form_field.id.length) {
573
+ container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
574
+ }
575
+ this.container = $("<div />", container_props);
576
+ if (this.is_multiple) {
577
+ this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="' + this.default_text + '" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>');
578
+ } else {
579
+ this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>' + this.default_text + '</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>');
580
+ }
581
+ this.form_field_jq.hide().after(this.container);
582
+ this.dropdown = this.container.find('div.chosen-drop').first();
583
+ this.search_field = this.container.find('input').first();
584
+ this.search_results = this.container.find('ul.chosen-results').first();
585
+ this.search_field_scale();
586
+ this.search_no_results = this.container.find('li.no-results').first();
587
+ if (this.is_multiple) {
588
+ this.search_choices = this.container.find('ul.chosen-choices').first();
589
+ this.search_container = this.container.find('li.search-field').first();
590
+ } else {
591
+ this.search_container = this.container.find('div.chosen-search').first();
592
+ this.selected_item = this.container.find('.chosen-single').first();
593
+ }
594
+ this.results_build();
595
+ this.set_tab_index();
596
+ this.set_label_behavior();
597
+ return this.form_field_jq.trigger("chosen:ready", {
598
+ chosen: this
599
+ });
600
+ };
601
+
602
+ Chosen.prototype.register_observers = function() {
603
+ var _this = this;
604
+ this.container.bind('mousedown.chosen', function(evt) {
605
+ _this.container_mousedown(evt);
606
+ });
607
+ this.container.bind('mouseup.chosen', function(evt) {
608
+ _this.container_mouseup(evt);
609
+ });
610
+ this.container.bind('mouseenter.chosen', function(evt) {
611
+ _this.mouse_enter(evt);
612
+ });
613
+ this.container.bind('mouseleave.chosen', function(evt) {
614
+ _this.mouse_leave(evt);
615
+ });
616
+ this.search_results.bind('mouseup.chosen', function(evt) {
617
+ _this.search_results_mouseup(evt);
618
+ });
619
+ this.search_results.bind('mouseover.chosen', function(evt) {
620
+ _this.search_results_mouseover(evt);
621
+ });
622
+ this.search_results.bind('mouseout.chosen', function(evt) {
623
+ _this.search_results_mouseout(evt);
624
+ });
625
+ this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) {
626
+ _this.search_results_mousewheel(evt);
627
+ });
628
+ this.search_results.bind('touchstart.chosen', function(evt) {
629
+ _this.search_results_touchstart(evt);
630
+ });
631
+ this.search_results.bind('touchmove.chosen', function(evt) {
632
+ _this.search_results_touchmove(evt);
633
+ });
634
+ this.search_results.bind('touchend.chosen', function(evt) {
635
+ _this.search_results_touchend(evt);
636
+ });
637
+ this.form_field_jq.bind("chosen:updated.chosen", function(evt) {
638
+ _this.results_update_field(evt);
639
+ });
640
+ this.form_field_jq.bind("chosen:activate.chosen", function(evt) {
641
+ _this.activate_field(evt);
642
+ });
643
+ this.form_field_jq.bind("chosen:open.chosen", function(evt) {
644
+ _this.container_mousedown(evt);
645
+ });
646
+ this.form_field_jq.bind("chosen:close.chosen", function(evt) {
647
+ _this.input_blur(evt);
648
+ });
649
+ this.search_field.bind('blur.chosen', function(evt) {
650
+ _this.input_blur(evt);
651
+ });
652
+ this.search_field.bind('keyup.chosen', function(evt) {
653
+ _this.keyup_checker(evt);
654
+ });
655
+ this.search_field.bind('keydown.chosen', function(evt) {
656
+ _this.keydown_checker(evt);
657
+ });
658
+ this.search_field.bind('focus.chosen', function(evt) {
659
+ _this.input_focus(evt);
660
+ });
661
+ this.search_field.bind('cut.chosen', function(evt) {
662
+ _this.clipboard_event_checker(evt);
663
+ });
664
+ this.search_field.bind('paste.chosen', function(evt) {
665
+ _this.clipboard_event_checker(evt);
666
+ });
667
+ if (this.is_multiple) {
668
+ return this.search_choices.bind('click.chosen', function(evt) {
669
+ _this.choices_click(evt);
670
+ });
671
+ } else {
672
+ return this.container.bind('click.chosen', function(evt) {
673
+ evt.preventDefault();
674
+ });
675
+ }
676
+ };
677
+
678
+ Chosen.prototype.destroy = function() {
679
+ $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action);
680
+ if (this.search_field[0].tabIndex) {
681
+ this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;
682
+ }
683
+ this.container.remove();
684
+ this.form_field_jq.removeData('chosen');
685
+ return this.form_field_jq.show();
686
+ };
687
+
688
+ Chosen.prototype.search_field_disabled = function() {
689
+ this.is_disabled = this.form_field_jq[0].disabled;
690
+ if (this.is_disabled) {
691
+ this.container.addClass('chosen-disabled');
692
+ this.search_field[0].disabled = true;
693
+ if (!this.is_multiple) {
694
+ this.selected_item.unbind("focus.chosen", this.activate_action);
695
+ }
696
+ return this.close_field();
697
+ } else {
698
+ this.container.removeClass('chosen-disabled');
699
+ this.search_field[0].disabled = false;
700
+ if (!this.is_multiple) {
701
+ return this.selected_item.bind("focus.chosen", this.activate_action);
702
+ }
703
+ }
704
+ };
705
+
706
+ Chosen.prototype.container_mousedown = function(evt) {
707
+ if (!this.is_disabled) {
708
+ if (evt && evt.type === "mousedown" && !this.results_showing) {
709
+ evt.preventDefault();
710
+ }
711
+ if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) {
712
+ if (!this.active_field) {
713
+ if (this.is_multiple) {
714
+ this.search_field.val("");
715
+ }
716
+ $(this.container[0].ownerDocument).bind('click.chosen', this.click_test_action);
717
+ this.results_show();
718
+ } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) {
719
+ evt.preventDefault();
720
+ this.results_toggle();
721
+ }
722
+ return this.activate_field();
723
+ }
724
+ }
725
+ };
726
+
727
+ Chosen.prototype.container_mouseup = function(evt) {
728
+ if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
729
+ return this.results_reset(evt);
730
+ }
731
+ };
732
+
733
+ Chosen.prototype.search_results_mousewheel = function(evt) {
734
+ var delta;
735
+ if (evt.originalEvent) {
736
+ delta = -evt.originalEvent.wheelDelta || evt.originalEvent.detail;
737
+ }
738
+ if (delta != null) {
739
+ evt.preventDefault();
740
+ if (evt.type === 'DOMMouseScroll') {
741
+ delta = delta * 40;
742
+ }
743
+ return this.search_results.scrollTop(delta + this.search_results.scrollTop());
744
+ }
745
+ };
746
+
747
+ Chosen.prototype.blur_test = function(evt) {
748
+ if (!this.active_field && this.container.hasClass("chosen-container-active")) {
749
+ return this.close_field();
750
+ }
751
+ };
752
+
753
+ Chosen.prototype.close_field = function() {
754
+ $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action);
755
+ this.active_field = false;
756
+ this.results_hide();
757
+ this.container.removeClass("chosen-container-active");
758
+ this.clear_backstroke();
759
+ this.show_search_field_default();
760
+ return this.search_field_scale();
761
+ };
762
+
763
+ Chosen.prototype.activate_field = function() {
764
+ this.container.addClass("chosen-container-active");
765
+ this.active_field = true;
766
+ this.search_field.val(this.search_field.val());
767
+ return this.search_field.focus();
768
+ };
769
+
770
+ Chosen.prototype.test_active_click = function(evt) {
771
+ var active_container;
772
+ active_container = $(evt.target).closest('.chosen-container');
773
+ if (active_container.length && this.container[0] === active_container[0]) {
774
+ return this.active_field = true;
775
+ } else {
776
+ return this.close_field();
777
+ }
778
+ };
779
+
780
+ Chosen.prototype.results_build = function() {
781
+ this.parsing = true;
782
+ this.selected_option_count = null;
783
+ this.results_data = SelectParser.select_to_array(this.form_field);
784
+ if (this.is_multiple) {
785
+ this.search_choices.find("li.search-choice").remove();
786
+ } else if (!this.is_multiple) {
787
+ this.single_set_selected_text();
788
+ if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
789
+ this.search_field[0].readOnly = true;
790
+ this.container.addClass("chosen-container-single-nosearch");
791
+ } else {
792
+ this.search_field[0].readOnly = false;
793
+ this.container.removeClass("chosen-container-single-nosearch");
794
+ }
795
+ }
796
+ this.update_results_content(this.results_option_build({
797
+ first: true
798
+ }));
799
+ this.search_field_disabled();
800
+ this.show_search_field_default();
801
+ this.search_field_scale();
802
+ return this.parsing = false;
803
+ };
804
+
805
+ Chosen.prototype.result_do_highlight = function(el) {
806
+ var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
807
+ if (el.length) {
808
+ this.result_clear_highlight();
809
+ this.result_highlight = el;
810
+ this.result_highlight.addClass("highlighted");
811
+ maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
812
+ visible_top = this.search_results.scrollTop();
813
+ visible_bottom = maxHeight + visible_top;
814
+ high_top = this.result_highlight.position().top + this.search_results.scrollTop();
815
+ high_bottom = high_top + this.result_highlight.outerHeight();
816
+ if (high_bottom >= visible_bottom) {
817
+ return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
818
+ } else if (high_top < visible_top) {
819
+ return this.search_results.scrollTop(high_top);
820
+ }
821
+ }
822
+ };
823
+
824
+ Chosen.prototype.result_clear_highlight = function() {
825
+ if (this.result_highlight) {
826
+ this.result_highlight.removeClass("highlighted");
827
+ }
828
+ return this.result_highlight = null;
829
+ };
830
+
831
+ Chosen.prototype.results_show = function() {
832
+ if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
833
+ this.form_field_jq.trigger("chosen:maxselected", {
834
+ chosen: this
835
+ });
836
+ return false;
837
+ }
838
+ this.container.addClass("chosen-with-drop");
839
+ this.results_showing = true;
840
+ this.search_field.focus();
841
+ this.search_field.val(this.search_field.val());
842
+ this.winnow_results();
843
+ return this.form_field_jq.trigger("chosen:showing_dropdown", {
844
+ chosen: this
845
+ });
846
+ };
847
+
848
+ Chosen.prototype.update_results_content = function(content) {
849
+ return this.search_results.html(content);
850
+ };
851
+
852
+ Chosen.prototype.results_hide = function() {
853
+ if (this.results_showing) {
854
+ this.result_clear_highlight();
855
+ this.container.removeClass("chosen-with-drop");
856
+ this.form_field_jq.trigger("chosen:hiding_dropdown", {
857
+ chosen: this
858
+ });
859
+ }
860
+ return this.results_showing = false;
861
+ };
862
+
863
+ Chosen.prototype.set_tab_index = function(el) {
864
+ var ti;
865
+ if (this.form_field.tabIndex) {
866
+ ti = this.form_field.tabIndex;
867
+ this.form_field.tabIndex = -1;
868
+ return this.search_field[0].tabIndex = ti;
869
+ }
870
+ };
871
+
872
+ Chosen.prototype.set_label_behavior = function() {
873
+ var _this = this;
874
+ this.form_field_label = this.form_field_jq.parents("label");
875
+ if (!this.form_field_label.length && this.form_field.id.length) {
876
+ this.form_field_label = $("label[for='" + this.form_field.id + "']");
877
+ }
878
+ if (this.form_field_label.length > 0) {
879
+ return this.form_field_label.bind('click.chosen', function(evt) {
880
+ if (_this.is_multiple) {
881
+ return _this.container_mousedown(evt);
882
+ } else {
883
+ return _this.activate_field();
884
+ }
885
+ });
886
+ }
887
+ };
888
+
889
+ Chosen.prototype.show_search_field_default = function() {
890
+ if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
891
+ this.search_field.val(this.default_text);
892
+ return this.search_field.addClass("default");
893
+ } else {
894
+ this.search_field.val("");
895
+ return this.search_field.removeClass("default");
896
+ }
897
+ };
898
+
899
+ Chosen.prototype.search_results_mouseup = function(evt) {
900
+ var target;
901
+ target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
902
+ if (target.length) {
903
+ this.result_highlight = target;
904
+ this.result_select(evt);
905
+ return this.search_field.focus();
906
+ }
907
+ };
908
+
909
+ Chosen.prototype.search_results_mouseover = function(evt) {
910
+ var target;
911
+ target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
912
+ if (target) {
913
+ return this.result_do_highlight(target);
914
+ }
915
+ };
916
+
917
+ Chosen.prototype.search_results_mouseout = function(evt) {
918
+ if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) {
919
+ return this.result_clear_highlight();
920
+ }
921
+ };
922
+
923
+ Chosen.prototype.choice_build = function(item) {
924
+ var choice, close_link,
925
+ _this = this;
926
+ choice = $('<li />', {
927
+ "class": "search-choice"
928
+ }).html("<span>" + item.html + "</span>");
929
+ if (item.disabled) {
930
+ choice.addClass('search-choice-disabled');
931
+ } else {
932
+ close_link = $('<a />', {
933
+ "class": 'search-choice-close',
934
+ 'data-option-array-index': item.array_index
935
+ });
936
+ close_link.bind('click.chosen', function(evt) {
937
+ return _this.choice_destroy_link_click(evt);
938
+ });
939
+ choice.append(close_link);
940
+ }
941
+ return this.search_container.before(choice);
942
+ };
943
+
944
+ Chosen.prototype.choice_destroy_link_click = function(evt) {
945
+ evt.preventDefault();
946
+ evt.stopPropagation();
947
+ if (!this.is_disabled) {
948
+ return this.choice_destroy($(evt.target));
949
+ }
950
+ };
951
+
952
+ Chosen.prototype.choice_destroy = function(link) {
953
+ if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) {
954
+ this.show_search_field_default();
955
+ if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) {
956
+ this.results_hide();
957
+ }
958
+ link.parents('li').first().remove();
959
+ return this.search_field_scale();
960
+ }
961
+ };
962
+
963
+ Chosen.prototype.results_reset = function() {
964
+ this.reset_single_select_options();
965
+ this.form_field.options[0].selected = true;
966
+ this.single_set_selected_text();
967
+ this.show_search_field_default();
968
+ this.results_reset_cleanup();
969
+ this.form_field_jq.trigger("change");
970
+ if (this.active_field) {
971
+ return this.results_hide();
972
+ }
973
+ };
974
+
975
+ Chosen.prototype.results_reset_cleanup = function() {
976
+ this.current_selectedIndex = this.form_field.selectedIndex;
977
+ return this.selected_item.find("abbr").remove();
978
+ };
979
+
980
+ Chosen.prototype.result_select = function(evt) {
981
+ var high, item;
982
+ if (this.result_highlight) {
983
+ high = this.result_highlight;
984
+ this.result_clear_highlight();
985
+ if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
986
+ this.form_field_jq.trigger("chosen:maxselected", {
987
+ chosen: this
988
+ });
989
+ return false;
990
+ }
991
+ if (this.is_multiple) {
992
+ high.removeClass("active-result");
993
+ } else {
994
+ this.reset_single_select_options();
995
+ }
996
+ item = this.results_data[high[0].getAttribute("data-option-array-index")];
997
+ item.selected = true;
998
+ this.form_field.options[item.options_index].selected = true;
999
+ this.selected_option_count = null;
1000
+ if (this.is_multiple) {
1001
+ this.choice_build(item);
1002
+ } else {
1003
+ this.single_set_selected_text(item.text);
1004
+ }
1005
+ if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) {
1006
+ this.results_hide();
1007
+ }
1008
+ this.search_field.val("");
1009
+ if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
1010
+ this.form_field_jq.trigger("change", {
1011
+ 'selected': this.form_field.options[item.options_index].value
1012
+ });
1013
+ }
1014
+ this.current_selectedIndex = this.form_field.selectedIndex;
1015
+ return this.search_field_scale();
1016
+ }
1017
+ };
1018
+
1019
+ Chosen.prototype.single_set_selected_text = function(text) {
1020
+ if (text == null) {
1021
+ text = this.default_text;
1022
+ }
1023
+ if (text === this.default_text) {
1024
+ this.selected_item.addClass("chosen-default");
1025
+ } else {
1026
+ this.single_deselect_control_build();
1027
+ this.selected_item.removeClass("chosen-default");
1028
+ }
1029
+ return this.selected_item.find("span").text(text);
1030
+ };
1031
+
1032
+ Chosen.prototype.result_deselect = function(pos) {
1033
+ var result_data;
1034
+ result_data = this.results_data[pos];
1035
+ if (!this.form_field.options[result_data.options_index].disabled) {
1036
+ result_data.selected = false;
1037
+ this.form_field.options[result_data.options_index].selected = false;
1038
+ this.selected_option_count = null;
1039
+ this.result_clear_highlight();
1040
+ if (this.results_showing) {
1041
+ this.winnow_results();
1042
+ }
1043
+ this.form_field_jq.trigger("change", {
1044
+ deselected: this.form_field.options[result_data.options_index].value
1045
+ });
1046
+ this.search_field_scale();
1047
+ return true;
1048
+ } else {
1049
+ return false;
1050
+ }
1051
+ };
1052
+
1053
+ Chosen.prototype.single_deselect_control_build = function() {
1054
+ if (!this.allow_single_deselect) {
1055
+ return;
1056
+ }
1057
+ if (!this.selected_item.find("abbr").length) {
1058
+ this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>");
1059
+ }
1060
+ return this.selected_item.addClass("chosen-single-with-deselect");
1061
+ };
1062
+
1063
+ Chosen.prototype.get_search_text = function() {
1064
+ if (this.search_field.val() === this.default_text) {
1065
+ return "";
1066
+ } else {
1067
+ return $('<div/>').text($.trim(this.search_field.val())).html();
1068
+ }
1069
+ };
1070
+
1071
+ Chosen.prototype.winnow_results_set_highlight = function() {
1072
+ var do_high, selected_results;
1073
+ selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : [];
1074
+ do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first();
1075
+ if (do_high != null) {
1076
+ return this.result_do_highlight(do_high);
1077
+ }
1078
+ };
1079
+
1080
+ Chosen.prototype.no_results = function(terms) {
1081
+ var no_results_html;
1082
+ no_results_html = $('<li class="no-results">' + this.results_none_found + ' "<span></span>"</li>');
1083
+ no_results_html.find("span").first().html(terms);
1084
+ this.search_results.append(no_results_html);
1085
+ return this.form_field_jq.trigger("chosen:no_results", {
1086
+ chosen: this
1087
+ });
1088
+ };
1089
+
1090
+ Chosen.prototype.no_results_clear = function() {
1091
+ return this.search_results.find(".no-results").remove();
1092
+ };
1093
+
1094
+ Chosen.prototype.keydown_arrow = function() {
1095
+ var next_sib;
1096
+ if (this.results_showing && this.result_highlight) {
1097
+ next_sib = this.result_highlight.nextAll("li.active-result").first();
1098
+ if (next_sib) {
1099
+ return this.result_do_highlight(next_sib);
1100
+ }
1101
+ } else {
1102
+ return this.results_show();
1103
+ }
1104
+ };
1105
+
1106
+ Chosen.prototype.keyup_arrow = function() {
1107
+ var prev_sibs;
1108
+ if (!this.results_showing && !this.is_multiple) {
1109
+ return this.results_show();
1110
+ } else if (this.result_highlight) {
1111
+ prev_sibs = this.result_highlight.prevAll("li.active-result");
1112
+ if (prev_sibs.length) {
1113
+ return this.result_do_highlight(prev_sibs.first());
1114
+ } else {
1115
+ if (this.choices_count() > 0) {
1116
+ this.results_hide();
1117
+ }
1118
+ return this.result_clear_highlight();
1119
+ }
1120
+ }
1121
+ };
1122
+
1123
+ Chosen.prototype.keydown_backstroke = function() {
1124
+ var next_available_destroy;
1125
+ if (this.pending_backstroke) {
1126
+ this.choice_destroy(this.pending_backstroke.find("a").first());
1127
+ return this.clear_backstroke();
1128
+ } else {
1129
+ next_available_destroy = this.search_container.siblings("li.search-choice").last();
1130
+ if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) {
1131
+ this.pending_backstroke = next_available_destroy;
1132
+ if (this.single_backstroke_delete) {
1133
+ return this.keydown_backstroke();
1134
+ } else {
1135
+ return this.pending_backstroke.addClass("search-choice-focus");
1136
+ }
1137
+ }
1138
+ }
1139
+ };
1140
+
1141
+ Chosen.prototype.clear_backstroke = function() {
1142
+ if (this.pending_backstroke) {
1143
+ this.pending_backstroke.removeClass("search-choice-focus");
1144
+ }
1145
+ return this.pending_backstroke = null;
1146
+ };
1147
+
1148
+ Chosen.prototype.keydown_checker = function(evt) {
1149
+ var stroke, _ref1;
1150
+ stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode;
1151
+ this.search_field_scale();
1152
+ if (stroke !== 8 && this.pending_backstroke) {
1153
+ this.clear_backstroke();
1154
+ }
1155
+ switch (stroke) {
1156
+ case 8:
1157
+ this.backstroke_length = this.search_field.val().length;
1158
+ break;
1159
+ case 9:
1160
+ if (this.results_showing && !this.is_multiple) {
1161
+ this.result_select(evt);
1162
+ }
1163
+ this.mouse_on_container = false;
1164
+ break;
1165
+ case 13:
1166
+ evt.preventDefault();
1167
+ break;
1168
+ case 38:
1169
+ evt.preventDefault();
1170
+ this.keyup_arrow();
1171
+ break;
1172
+ case 40:
1173
+ evt.preventDefault();
1174
+ this.keydown_arrow();
1175
+ break;
1176
+ }
1177
+ };
1178
+
1179
+ Chosen.prototype.search_field_scale = function() {
1180
+ var div, f_width, h, style, style_block, styles, w, _i, _len;
1181
+ if (this.is_multiple) {
1182
+ h = 0;
1183
+ w = 0;
1184
+ style_block = "position:absolute; left: -1000px; top: -1000px; display:none;";
1185
+ styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing'];
1186
+ for (_i = 0, _len = styles.length; _i < _len; _i++) {
1187
+ style = styles[_i];
1188
+ style_block += style + ":" + this.search_field.css(style) + ";";
1189
+ }
1190
+ div = $('<div />', {
1191
+ 'style': style_block
1192
+ });
1193
+ div.text(this.search_field.val());
1194
+ $('body').append(div);
1195
+ w = div.width() + 25;
1196
+ div.remove();
1197
+ f_width = this.container.outerWidth();
1198
+ if (w > f_width - 10) {
1199
+ w = f_width - 10;
1200
+ }
1201
+ return this.search_field.css({
1202
+ 'width': w + 'px'
1203
+ });
1204
+ }
1205
+ };
1206
+
1207
+ return Chosen;
1208
+
1209
+ })(AbstractChosen);
1210
+
1211
+ }).call(this);
assets/js/jquery-chosen/chosen.jquery.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ /* Chosen v1.1.0 | (c) 2011-2013 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
2
+ !function(){var a,AbstractChosen,Chosen,SelectParser,b,c={}.hasOwnProperty,d=function(a,b){function d(){this.constructor=a}for(var e in b)c.call(b,e)&&(a[e]=b[e]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};SelectParser=function(){function SelectParser(){this.options_index=0,this.parsed=[]}return SelectParser.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},SelectParser.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),children:0,disabled:a.disabled}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&amp;"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0},AbstractChosen.prototype.set_default_text=function(){return this.default_text=this.form_field.getAttribute("data-placeholder")?this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(){var a=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return a.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(){var a=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return a.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f;for(b="",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(c.text));return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match?this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.style.cssText=a.style,c.setAttribute("data-option-array-index",a.array_index),c.innerHTML=a.search_text,this.outerHTML(c)):"":""},AbstractChosen.prototype.result_add_group=function(a){var b;return a.search_match||a.group_match?a.active_options>0?(b=document.createElement("li"),b.className="group-result",b.innerHTML=a.search_text,this.outerHTML(b)):"":""},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(this.no_results_clear(),e=0,g=this.get_search_text(),a=g.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d=this.search_contains?"":"^",c=new RegExp(d+a,"i"),j=new RegExp(a,"i"),m=this.results_data,k=0,l=m.length;l>k;k++)b=m[k],b.search_match=!1,f=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(f=this.results_data[b.group_array_index],0===f.active_options&&f.search_match&&(e+=1),f.active_options+=1),(!b.group||this.group_search)&&(b.search_text=b.group?b.label:b.html,b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(e+=1),b.search_match?(g.length&&(h=b.search_text.search(j),i=b.search_text.substr(0,h+g.length)+"</em>"+b.search_text.substr(h+g.length),b.search_text=i.substr(0,h)+"<em>"+i.substr(h)),null!=f&&(f.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>e&&g.length?(this.update_results_content(""),this.no_results(g)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},AbstractChosen.prototype.clipboard_event_checker=function(){var a=this;return setTimeout(function(){return a.results_search()},50)},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},AbstractChosen.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},AbstractChosen.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},AbstractChosen.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement("div"),b.appendChild(a),b.innerHTML)},AbstractChosen.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:!0},AbstractChosen.default_multiple_text="Select Some Options",AbstractChosen.default_single_text="Select an Option",AbstractChosen.default_no_result_text="No results match",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(){var c,d;c=a(this),d=c.data("chosen"),"destroy"===b&&d?d.destroy():d||c.data("chosen",new Chosen(this,b))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},Chosen.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("<div />",c),this.is_multiple?this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>'):this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>'),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.search_results.bind("touchstart.chosen",function(b){a.search_results_touchstart(b)}),this.search_results.bind("touchmove.chosen",function(b){a.search_results_touchmove(b)}),this.search_results.bind("touchend.chosen",function(b){a.search_results_touchend(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.form_field_jq.bind("chosen:close.chosen",function(b){a.input_blur(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.search_field.bind("cut.chosen",function(b){a.clipboard_event_checker(b)}),this.search_field.bind("paste.chosen",function(b){a.clipboard_event_checker(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(".chosen-container"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(){var a;return this.form_field.tabIndex?(a=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=a):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a("<li />",{"class":"search-choice"}).html("<span>"+b.html+"</span>"),b.disabled?c.addClass("search-choice-disabled"):(d=a("<a />",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},Chosen.prototype.result_select=function(a){var b,c;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):this.reset_single_select_options(),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(c.text),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").text(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")):void 0},Chosen.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":a("<div/>").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),c.find("span").first().html(b),this.search_results.append(c),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},Chosen.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("<div />",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},Chosen}(AbstractChosen)}.call(this);
assets/js/term-multiselect.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ jQuery(function(){
2
+ jQuery( '.job-manager-category-dropdown' ).chosen();
3
+ });
assets/js/term-multiselect.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(function(){jQuery(".job-manager-category-dropdown").chosen()});
includes/admin/class-wp-job-manager-addons.php CHANGED
@@ -19,13 +19,13 @@ class WP_Job_Manager_Addons {
19
 
20
  if ( false === ( $addons = get_transient( 'wp_job_manager_addons_html' ) ) ) {
21
 
22
- $raw_addons = wp_remote_get(
23
  'https://wpjobmanager.com/add-ons/',
24
  array(
25
  'timeout' => 10,
26
  'redirection' => 5,
27
  'sslverify' => false
28
- )
29
  );
30
 
31
  if ( ! is_wp_error( $raw_addons ) ) {
@@ -44,7 +44,7 @@ class WP_Job_Manager_Addons {
44
  break;
45
  }
46
 
47
- $addons = wp_kses_post( $addons );
48
 
49
  if ( $addons ) {
50
  set_transient( 'wp_job_manager_addons_html', $addons, 60*60*24*7 ); // Cached for a week
19
 
20
  if ( false === ( $addons = get_transient( 'wp_job_manager_addons_html' ) ) ) {
21
 
22
+ $raw_addons = wp_remote_get(
23
  'https://wpjobmanager.com/add-ons/',
24
  array(
25
  'timeout' => 10,
26
  'redirection' => 5,
27
  'sslverify' => false
28
+ )
29
  );
30
 
31
  if ( ! is_wp_error( $raw_addons ) ) {
44
  break;
45
  }
46
 
47
+ $addons = wp_kses_post( utf8_decode( $addons ) );
48
 
49
  if ( $addons ) {
50
  set_transient( 'wp_job_manager_addons_html', $addons, 60*60*24*7 ); // Cached for a week
includes/admin/class-wp-job-manager-cpt.php CHANGED
@@ -39,17 +39,17 @@ class WP_Job_Manager_CPT {
39
  * Edit bulk actions
40
  */
41
  public function add_bulk_actions() {
42
- global $post_type;
43
 
44
  if ( $post_type == 'job_listing' ) {
45
  ?>
46
  <script type="text/javascript">
47
  jQuery(document).ready(function() {
48
- jQuery('<option>').val('approve_jobs').text('<?php _e( 'Approve Jobs', 'wp-job-manager' )?>').appendTo("select[name='action']");
49
- jQuery('<option>').val('approve_jobs').text('<?php _e( 'Approve Jobs', 'wp-job-manager' )?>').appendTo("select[name='action2']");
50
 
51
- jQuery('<option>').val('expire_jobs').text('<?php _e( 'Expire Jobs', 'wp-job-manager' )?>').appendTo("select[name='action']");
52
- jQuery('<option>').val('expire_jobs').text('<?php _e( 'Expire Jobs', 'wp-job-manager' )?>').appendTo("select[name='action2']");
53
  });
54
  </script>
55
  <?php
@@ -76,8 +76,9 @@ class WP_Job_Manager_CPT {
76
  'ID' => $post_id,
77
  'post_status' => 'publish'
78
  );
79
- if ( get_post_status( $post_id ) == 'pending' && wp_update_post( $job_data ) )
80
  $approved_jobs[] = $post_id;
 
81
  }
82
 
83
  wp_redirect( add_query_arg( 'approve_jobs', $approved_jobs, remove_query_arg( array( 'approved_jobs', 'expired_jobs' ), admin_url( 'edit.php?post_type=job_listing' ) ) ) );
@@ -164,68 +165,39 @@ class WP_Job_Manager_CPT {
164
  }
165
 
166
  /**
167
- * jobs_by_category function.
168
- *
169
- * @access public
170
- * @param int $show_counts (default: 1)
171
- * @param int $hierarchical (default: 1)
172
- * @param int $show_uncategorized (default: 1)
173
- * @param string $orderby (default: '')
174
- * @return void
175
  */
176
- public function jobs_by_category( $show_counts = 1, $hierarchical = 1, $show_uncategorized = 1, $orderby = '' ) {
177
  global $typenow, $wp_query;
178
 
179
- if ( $typenow != 'job_listing' || ! taxonomy_exists( 'job_listing_category' ) )
180
  return;
 
181
 
182
- include_once( 'class-wp-job-manager-category-walker.php' );
183
-
184
- $r = array();
185
- $r['pad_counts'] = 1;
186
- $r['hierarchical'] = $hierarchical;
187
- $r['hide_empty'] = 0;
188
- $r['show_count'] = $show_counts;
189
- $r['selected'] = ( isset( $wp_query->query['job_listing_category'] ) ) ? $wp_query->query['job_listing_category'] : '';
190
 
191
- $r['menu_order'] = false;
 
 
 
 
 
 
 
 
192
 
193
- if ( $orderby == 'order' )
194
- $r['menu_order'] = 'asc';
195
- elseif ( $orderby )
196
- $r['orderby'] = $orderby;
197
-
198
- $terms = get_terms( 'job_listing_category', $r );
199
-
200
- if ( ! $terms )
201
  return;
 
202
 
203
  $output = "<select name='job_listing_category' id='dropdown_job_listing_category'>";
204
- $output .= '<option value="" ' . selected( isset( $_GET['job_listing_category'] ) ? $_GET['job_listing_category'] : '', '', false ) . '>'.__( 'Select a category', 'wp-job-manager' ).'</option>';
205
- $output .= $this->walk_category_dropdown_tree( $terms, 0, $r );
206
- $output .="</select>";
207
 
208
  echo $output;
209
  }
210
 
211
- /**
212
- * Walk the Product Categories.
213
- *
214
- * @access public
215
- * @return void
216
- */
217
- private function walk_category_dropdown_tree() {
218
- $args = func_get_args();
219
-
220
- // the user's options are the third parameter
221
- if ( empty($args[2]['walker']) || !is_a($args[2]['walker'], 'Walker') )
222
- $walker = new WP_Job_Manager_Category_Walker;
223
- else
224
- $walker = $args[2]['walker'];
225
-
226
- return call_user_func_array( array( $walker, 'walk' ), $args );
227
- }
228
-
229
  /**
230
  * enter_title_here function.
231
  *
@@ -234,7 +206,7 @@ class WP_Job_Manager_CPT {
234
  */
235
  public function enter_title_here( $text, $post ) {
236
  if ( $post->post_type == 'job_listing' )
237
- return __( 'Job position title', 'wp-job-manager' );
238
  return $text;
239
  }
240
 
@@ -246,21 +218,21 @@ class WP_Job_Manager_CPT {
246
  * @return void
247
  */
248
  public function post_updated_messages( $messages ) {
249
- global $post, $post_ID;
250
 
251
  $messages['job_listing'] = array(
252
  0 => '',
253
- 1 => sprintf( __( 'Job listing updated. <a href="%s">View Job</a>', 'wp-job-manager' ), esc_url( get_permalink( $post_ID ) ) ),
254
  2 => __( 'Custom field updated.', 'wp-job-manager' ),
255
  3 => __( 'Custom field deleted.', 'wp-job-manager' ),
256
- 4 => __( 'Job listing updated.', 'wp-job-manager' ),
257
- 5 => isset( $_GET['revision'] ) ? sprintf( __( 'Job listing restored to revision from %s', 'wp-job-manager' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
258
- 6 => sprintf( __( 'Job listing published. <a href="%s">View Job</a>', 'wp-job-manager' ), esc_url( get_permalink( $post_ID ) ) ),
259
- 7 => __('Job listing saved.', 'wp-job-manager' ),
260
- 8 => sprintf( __( 'Job listing submitted. <a target="_blank" href="%s">Preview Job</a>', 'wp-job-manager' ), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
261
- 9 => sprintf( __( 'Job listing scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview Job</a>', 'wp-job-manager' ),
262
  date_i18n( __( 'M j, Y @ G:i', 'wp-job-manager' ), strtotime( $post->post_date ) ), esc_url( get_permalink( $post_ID ) ) ),
263
- 10 => sprintf( __( 'Job listing draft updated. <a target="_blank" href="%s">Preview Job</a>', 'wp-job-manager' ), esc_url( add_query_arg( 'preview', 'true', get_permalink( $post_ID ) ) ) ),
264
  );
265
 
266
  return $messages;
@@ -311,7 +283,7 @@ class WP_Job_Manager_CPT {
311
  break;
312
  case "job_position" :
313
  echo '<div class="job_position">';
314
- echo '<a href="' . admin_url('post.php?post=' . $post->ID . '&action=edit') . '" class="tips job_title" data-tip="' . sprintf( __( 'Job ID: %d', 'wp-job-manager' ), $post->ID ) . '">' . $post->post_title . '</a>';
315
 
316
  echo '<div class="location">';
317
 
@@ -352,7 +324,7 @@ class WP_Job_Manager_CPT {
352
  case "job_actions" :
353
  echo '<div class="actions">';
354
  $admin_actions = array();
355
- if ( $post->post_status == 'pending' ) {
356
  $admin_actions['approve'] = array(
357
  'action' => 'approve',
358
  'name' => __( 'Approve', 'wp-job-manager' ),
@@ -380,7 +352,7 @@ class WP_Job_Manager_CPT {
380
  $admin_actions = apply_filters( 'job_manager_admin_actions', $admin_actions, $post );
381
 
382
  foreach ( $admin_actions as $action ) {
383
- printf( '<a class="button tips icon-%s" href="%s" data-tip="%s">%s</a>', sanitize_title( $action['name'] ), esc_url( $action['url'] ), esc_attr( $action['name'] ), esc_attr( $action['name'] ) );
384
  }
385
 
386
  echo '</div>';
39
  * Edit bulk actions
40
  */
41
  public function add_bulk_actions() {
42
+ global $post_type, $wp_post_types;;
43
 
44
  if ( $post_type == 'job_listing' ) {
45
  ?>
46
  <script type="text/javascript">
47
  jQuery(document).ready(function() {
48
+ jQuery('<option>').val('approve_jobs').text('<?php printf( __( 'Approve %s', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->name ); ?>').appendTo("select[name='action']");
49
+ jQuery('<option>').val('approve_jobs').text('<?php printf( __( 'Approve %s', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->name ); ?>').appendTo("select[name='action2']");
50
 
51
+ jQuery('<option>').val('expire_jobs').text('<?php printf( __( 'Expire %s', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->name ); ?>').appendTo("select[name='action']");
52
+ jQuery('<option>').val('expire_jobs').text('<?php printf( __( 'Expire %s', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->name ); ?>').appendTo("select[name='action2']");
53
  });
54
  </script>
55
  <?php
76
  'ID' => $post_id,
77
  'post_status' => 'publish'
78
  );
79
+ if ( in_array( get_post_status( $post_id ), array( 'pending', 'pending_payment' ) ) && wp_update_post( $job_data ) ) {
80
  $approved_jobs[] = $post_id;
81
+ }
82
  }
83
 
84
  wp_redirect( add_query_arg( 'approve_jobs', $approved_jobs, remove_query_arg( array( 'approved_jobs', 'expired_jobs' ), admin_url( 'edit.php?post_type=job_listing' ) ) ) );
165
  }
166
 
167
  /**
168
+ * Show category dropdown
 
 
 
 
 
 
 
169
  */
170
+ public function jobs_by_category() {
171
  global $typenow, $wp_query;
172
 
173
+ if ( $typenow != 'job_listing' || ! taxonomy_exists( 'job_listing_category' ) ) {
174
  return;
175
+ }
176
 
177
+ include_once( JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-category-walker.php' );
 
 
 
 
 
 
 
178
 
179
+ $r = array();
180
+ $r['pad_counts'] = 1;
181
+ $r['hierarchical'] = 1;
182
+ $r['hide_empty'] = 0;
183
+ $r['show_count'] = 1;
184
+ $r['selected'] = ( isset( $wp_query->query['job_listing_category'] ) ) ? $wp_query->query['job_listing_category'] : '';
185
+ $r['menu_order'] = false;
186
+ $terms = get_terms( 'job_listing_category', $r );
187
+ $walker = new WP_Job_Manager_Category_Walker;
188
 
189
+ if ( ! $terms ) {
 
 
 
 
 
 
 
190
  return;
191
+ }
192
 
193
  $output = "<select name='job_listing_category' id='dropdown_job_listing_category'>";
194
+ $output .= '<option value="" ' . selected( isset( $_GET['job_listing_category'] ) ? $_GET['job_listing_category'] : '', '', false ) . '>' . __( 'Select category', 'wp-job-manager' ) . '</option>';
195
+ $output .= $walker->walk( $terms, 0, $r );
196
+ $output .= "</select>";
197
 
198
  echo $output;
199
  }
200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  /**
202
  * enter_title_here function.
203
  *
206
  */
207
  public function enter_title_here( $text, $post ) {
208
  if ( $post->post_type == 'job_listing' )
209
+ return __( 'Position', 'wp-job-manager' );
210
  return $text;
211
  }
212
 
218
  * @return void
219
  */
220
  public function post_updated_messages( $messages ) {
221
+ global $post, $post_ID, $wp_post_types;
222
 
223
  $messages['job_listing'] = array(
224
  0 => '',
225
+ 1 => sprintf( __( '%s updated. <a href="%s">View</a>', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name, esc_url( get_permalink( $post_ID ) ) ),
226
  2 => __( 'Custom field updated.', 'wp-job-manager' ),
227
  3 => __( 'Custom field deleted.', 'wp-job-manager' ),
228
+ 4 => sprintf( __( '%s updated.', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name ),
229
+ 5 => isset( $_GET['revision'] ) ? sprintf( __( '%s restored to revision from %s', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name, wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
230
+ 6 => sprintf( __( '%s published. <a href="%s">View</a>', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name, esc_url( get_permalink( $post_ID ) ) ),
231
+ 7 => sprintf( __( '%s saved.', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name ),
232
+ 8 => sprintf( __( '%s submitted. <a target="_blank" href="%s">Preview</a>', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name, esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
233
+ 9 => sprintf( __( '%s scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview</a>', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name,
234
  date_i18n( __( 'M j, Y @ G:i', 'wp-job-manager' ), strtotime( $post->post_date ) ), esc_url( get_permalink( $post_ID ) ) ),
235
+ 10 => sprintf( __( '%s draft updated. <a target="_blank" href="%s">Preview</a>', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name, esc_url( add_query_arg( 'preview', 'true', get_permalink( $post_ID ) ) ) ),
236
  );
237
 
238
  return $messages;
283
  break;
284
  case "job_position" :
285
  echo '<div class="job_position">';
286
+ echo '<a href="' . admin_url('post.php?post=' . $post->ID . '&action=edit') . '" class="tips job_title" data-tip="' . sprintf( __( 'ID: %d', 'wp-job-manager' ), $post->ID ) . '">' . $post->post_title . '</a>';
287
 
288
  echo '<div class="location">';
289
 
324
  case "job_actions" :
325
  echo '<div class="actions">';
326
  $admin_actions = array();
327
+ if ( in_array( $post->post_status, array( 'pending', 'pending_payment' ) ) ) {
328
  $admin_actions['approve'] = array(
329
  'action' => 'approve',
330
  'name' => __( 'Approve', 'wp-job-manager' ),
352
  $admin_actions = apply_filters( 'job_manager_admin_actions', $admin_actions, $post );
353
 
354
  foreach ( $admin_actions as $action ) {
355
+ printf( '<a class="button tips icon-%1$s" href="%2$s" data-tip="%3$s">%4$s</a>', $action['action'], esc_url( $action['url'] ), esc_attr( $action['name'] ), esc_html( $action['name'] ) );
356
  }
357
 
358
  echo '</div>';
includes/admin/class-wp-job-manager-settings.php CHANGED
@@ -45,8 +45,8 @@ class WP_Job_Manager_Settings {
45
  'name' => 'job_manager_per_page',
46
  'std' => '10',
47
  'placeholder' => '',
48
- 'label' => __( 'Jobs per page', 'wp-job-manager' ),
49
- 'desc' => __( 'How many jobs should be shown per page by default?', 'wp-job-manager' ),
50
  'attributes' => array()
51
  ),
52
  array(
@@ -54,30 +54,39 @@ class WP_Job_Manager_Settings {
54
  'std' => '0',
55
  'label' => __( 'Filled positions', 'wp-job-manager' ),
56
  'cb_label' => __( 'Hide filled positions', 'wp-job-manager' ),
57
- 'desc' => __( 'If enabled, filled positions will be hidden from the job list.', 'wp-job-manager' ),
58
  'type' => 'checkbox',
59
  'attributes' => array()
60
  ),
61
  array(
62
  'name' => 'job_manager_enable_categories',
63
  'std' => '0',
64
- 'label' => __( 'Job categories', 'wp-job-manager' ),
65
- 'cb_label' => __( 'Enable job categories', 'wp-job-manager' ),
66
- 'desc' => __( 'Choose whether to enable job categories. Categories must be setup by an admin for users to choose during job submission.', 'wp-job-manager' ),
 
 
 
 
 
 
 
 
 
67
  'type' => 'checkbox',
68
  'attributes' => array()
69
  ),
70
  ),
71
  ),
72
  'job_submission' => array(
73
- __( 'Job Submission', 'wp-job-manager' ),
74
  array(
75
  array(
76
  'name' => 'job_manager_enable_registration',
77
  'std' => '1',
78
  'label' => __( 'Account creation', 'wp-job-manager' ),
79
  'cb_label' => __( 'Allow account creation', 'wp-job-manager' ),
80
- 'desc' => __( 'If enabled, non-logged in users will be able to create an account by entering their email address on the job submission form.', 'wp-job-manager' ),
81
  'type' => 'checkbox',
82
  'attributes' => array()
83
  ),
@@ -85,7 +94,7 @@ class WP_Job_Manager_Settings {
85
  'name' => 'job_manager_registration_role',
86
  'std' => 'employer',
87
  'label' => __( 'Account Role', 'wp-job-manager' ),
88
- 'desc' => __( 'If you enable registration on your job submission form, choose a role for the new user.', 'wp-job-manager' ),
89
  'type' => 'select',
90
  'options' => $account_roles
91
  ),
@@ -93,8 +102,8 @@ class WP_Job_Manager_Settings {
93
  'name' => 'job_manager_user_requires_account',
94
  'std' => '1',
95
  'label' => __( 'Account required', 'wp-job-manager' ),
96
- 'cb_label' => __( 'Job submission requires an account', 'wp-job-manager' ),
97
- 'desc' => __( 'If disabled, non-logged in users will be able to submit job listings without creating an account.', 'wp-job-manager' ),
98
  'type' => 'checkbox',
99
  'attributes' => array()
100
  ),
@@ -118,7 +127,7 @@ class WP_Job_Manager_Settings {
118
  'name' => 'job_manager_allowed_application_method',
119
  'std' => '',
120
  'label' => __( 'Application method', 'wp-job-manager' ),
121
- 'desc' => __( 'Choose what employers can use for their job application method.', 'wp-job-manager' ),
122
  'type' => 'select',
123
  'options' => array(
124
  '' => __( 'Email address or website URL', 'wp-job-manager' ),
@@ -136,7 +145,7 @@ class WP_Job_Manager_Settings {
136
  array(
137
  'name' => 'job_manager_job_dashboard_page_slug',
138
  'std' => '',
139
- 'label' => __( 'Job Dashboard Page Slug', 'wp-job-manager' ),
140
  'desc' => __( 'Enter the slug of the page where you have placed the [job_dashboard] shortcode. This lets the plugin know where the dashboard is located.', 'wp-job-manager' ),
141
  'type' => 'input'
142
  )
@@ -249,7 +258,9 @@ class WP_Job_Manager_Settings {
249
  echo ' <p class="description">' . $option['desc'] . '</p>';
250
 
251
  break;
252
- default :
 
 
253
 
254
  ?><input id="setting-<?php echo $option['name']; ?>" class="regular-text" type="text" name="<?php echo $option['name']; ?>" value="<?php esc_attr_e( $value ); ?>" <?php echo implode( ' ', $attributes ); ?> <?php echo $placeholder; ?> /><?php
255
 
@@ -257,6 +268,9 @@ class WP_Job_Manager_Settings {
257
  echo ' <p class="description">' . $option['desc'] . '</p>';
258
 
259
  break;
 
 
 
260
 
261
  }
262
 
@@ -285,4 +299,4 @@ class WP_Job_Manager_Settings {
285
  </script>
286
  <?php
287
  }
288
- }
45
  'name' => 'job_manager_per_page',
46
  'std' => '10',
47
  'placeholder' => '',
48
+ 'label' => __( 'Listings per page', 'wp-job-manager' ),
49
+ 'desc' => __( 'How many listings should be shown per page by default?', 'wp-job-manager' ),
50
  'attributes' => array()
51
  ),
52
  array(
54
  'std' => '0',
55
  'label' => __( 'Filled positions', 'wp-job-manager' ),
56
  'cb_label' => __( 'Hide filled positions', 'wp-job-manager' ),
57
+ 'desc' => __( 'If enabled, filled positions will be hidden.', 'wp-job-manager' ),
58
  'type' => 'checkbox',
59
  'attributes' => array()
60
  ),
61
  array(
62
  'name' => 'job_manager_enable_categories',
63
  'std' => '0',
64
+ 'label' => __( 'Job Categories', 'wp-job-manager' ),
65
+ 'cb_label' => __( 'Enable categories for listings', 'wp-job-manager' ),
66
+ 'desc' => __( 'Choose whether to enable categories. Categories must be setup by an admin to allow users to choose them during submission.', 'wp-job-manager' ),
67
+ 'type' => 'checkbox',
68
+ 'attributes' => array()
69
+ ),
70
+ array(
71
+ 'name' => 'job_manager_enable_default_category_multiselect',
72
+ 'std' => '0',
73
+ 'label' => __( 'Job Category filter', 'wp-job-manager' ),
74
+ 'cb_label' => __( 'Enable category multiselect by default', 'wp-job-manager' ),
75
+ 'desc' => __( 'If enabled, the category select box will default to a multiselect on the [jobs] shortcode.', 'wp-job-manager' ),
76
  'type' => 'checkbox',
77
  'attributes' => array()
78
  ),
79
  ),
80
  ),
81
  'job_submission' => array(
82
+ __( 'Submissions', 'wp-job-manager' ),
83
  array(
84
  array(
85
  'name' => 'job_manager_enable_registration',
86
  'std' => '1',
87
  'label' => __( 'Account creation', 'wp-job-manager' ),
88
  'cb_label' => __( 'Allow account creation', 'wp-job-manager' ),
89
+ 'desc' => __( 'If enabled, non-logged in users will be able to create an account by entering their email address on the submission form.', 'wp-job-manager' ),
90
  'type' => 'checkbox',
91
  'attributes' => array()
92
  ),
94
  'name' => 'job_manager_registration_role',
95
  'std' => 'employer',
96
  'label' => __( 'Account Role', 'wp-job-manager' ),
97
+ 'desc' => __( 'If you enable registration on your submission form, choose a role for the new user.', 'wp-job-manager' ),
98
  'type' => 'select',
99
  'options' => $account_roles
100
  ),
102
  'name' => 'job_manager_user_requires_account',
103
  'std' => '1',
104
  'label' => __( 'Account required', 'wp-job-manager' ),
105
+ 'cb_label' => __( 'Submitting listings requires an account', 'wp-job-manager' ),
106
+ 'desc' => __( 'If disabled, non-logged in users will be able to submit listings without creating an account.', 'wp-job-manager' ),
107
  'type' => 'checkbox',
108
  'attributes' => array()
109
  ),
127
  'name' => 'job_manager_allowed_application_method',
128
  'std' => '',
129
  'label' => __( 'Application method', 'wp-job-manager' ),
130
+ 'desc' => __( 'Choose the contact method for listings.', 'wp-job-manager' ),
131
  'type' => 'select',
132
  'options' => array(
133
  '' => __( 'Email address or website URL', 'wp-job-manager' ),
145
  array(
146
  'name' => 'job_manager_job_dashboard_page_slug',
147
  'std' => '',
148
+ 'label' => __( 'Dashboard Page Slug', 'wp-job-manager' ),
149
  'desc' => __( 'Enter the slug of the page where you have placed the [job_dashboard] shortcode. This lets the plugin know where the dashboard is located.', 'wp-job-manager' ),
150
  'type' => 'input'
151
  )
258
  echo ' <p class="description">' . $option['desc'] . '</p>';
259
 
260
  break;
261
+ case "" :
262
+ case "input" :
263
+ case "text" :
264
 
265
  ?><input id="setting-<?php echo $option['name']; ?>" class="regular-text" type="text" name="<?php echo $option['name']; ?>" value="<?php esc_attr_e( $value ); ?>" <?php echo implode( ' ', $attributes ); ?> <?php echo $placeholder; ?> /><?php
266
 
268
  echo ' <p class="description">' . $option['desc'] . '</p>';
269
 
270
  break;
271
+ default :
272
+ do_action( 'wp_job_manager_admin_field_' . $option['type'], $option, $attributes, $value, $placeholder );
273
+ break;
274
 
275
  }
276
 
299
  </script>
300
  <?php
301
  }
302
+ }
includes/admin/class-wp-job-manager-writepanels.php CHANGED
@@ -24,13 +24,14 @@ class WP_Job_Manager_Writepanels {
24
  public function job_listing_fields() {
25
  return apply_filters( 'job_manager_job_listing_data_fields', array(
26
  '_job_location' => array(
27
- 'label' => __( 'Job location', 'wp-job-manager' ),
28
- 'placeholder' => __( 'e.g. "London, UK", "New York", "Houston, TX"', 'wp-job-manager' ),
29
- 'description' => __( 'Leave this blank if the job can be done from anywhere (i.e. telecommuting)', 'wp-job-manager' )
30
  ),
31
  '_application' => array(
32
  'label' => __( 'Application email/URL', 'wp-job-manager' ),
33
- 'placeholder' => __( 'URL or email which applicants use to apply', 'wp-job-manager' )
 
34
  ),
35
  '_company_name' => array(
36
  'label' => __( 'Company name', 'wp-job-manager' ),
@@ -58,12 +59,12 @@ class WP_Job_Manager_Writepanels {
58
  'type' => 'checkbox'
59
  ),
60
  '_featured' => array(
61
- 'label' => __( 'Feature this job listing?', 'wp-job-manager' ),
62
  'type' => 'checkbox',
63
  'description' => __( 'Featured listings will be sticky during searches, and can be styled differently.', 'wp-job-manager' )
64
  ),
65
  '_job_expires' => array(
66
- 'label' => __( 'Job Expires', 'wp-job-manager' ),
67
  'placeholder' => __( 'yyyy-mm-dd', 'wp-job-manager' )
68
  ),
69
  '_job_author' => array(
@@ -80,7 +81,9 @@ class WP_Job_Manager_Writepanels {
80
  * @return void
81
  */
82
  public function add_meta_boxes() {
83
- add_meta_box( 'job_listing_data', __( 'Job Listing Data', 'wp-job-manager' ), array( $this, 'job_listing_data' ), 'job_listing', 'normal', 'high' );
 
 
84
  }
85
 
86
  /**
@@ -92,52 +95,38 @@ class WP_Job_Manager_Writepanels {
92
  public function input_file( $key, $field ) {
93
  global $thepostid;
94
 
95
- if ( empty( $field['value'] ) )
96
  $field['value'] = get_post_meta( $thepostid, $key, true );
 
 
 
 
97
  ?>
98
  <p class="form-field">
99
  <label for="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $field['label'] ) ; ?>:</label>
100
- <input type="text" class="file_url" name="<?php echo esc_attr( $key ); ?>" id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo esc_attr( $field['placeholder'] ); ?>" value="<?php echo esc_attr( $field['value'] ); ?>" />
101
- <?php if ( ! empty( $field['description'] ) ) : ?><span class="description"><?php echo $field['description']; ?></span><?php endif; ?> <button class="button upload_image_button" data-uploader_button_text="<?php _e( 'Use file', 'wp-job-manager' ); ?>"><?php _e( 'Upload', 'wp-job-manager' ); ?></button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  </p>
103
- <script type="text/javascript">
104
- // Uploading files
105
- var file_frame;
106
- var file_target_input;
107
-
108
- jQuery('.upload_image_button').live('click', function( event ){
109
-
110
- event.preventDefault();
111
-
112
- file_target_input = jQuery( this ).closest('.form-field').find('.file_url');
113
-
114
- // If the media frame already exists, reopen it.
115
- if ( file_frame ) {
116
- file_frame.open();
117
- return;
118
- }
119
-
120
- // Create the media frame.
121
- file_frame = wp.media.frames.file_frame = wp.media({
122
- title: jQuery( this ).data( 'uploader_title' ),
123
- button: {
124
- text: jQuery( this ).data( 'uploader_button_text' ),
125
- },
126
- multiple: false // Set to true to allow multiple files to be selected
127
- });
128
-
129
- // When an image is selected, run a callback.
130
- file_frame.on( 'select', function() {
131
- // We set multiple to false so only get one image from the uploader
132
- attachment = file_frame.state().get('selection').first().toJSON();
133
-
134
- jQuery( file_target_input ).val( attachment.url );
135
- });
136
-
137
- // Finally, open the modal
138
- file_frame.open();
139
- });
140
- </script>
141
  <?php
142
  }
143
 
@@ -180,7 +169,7 @@ class WP_Job_Manager_Writepanels {
180
  </p>
181
  <?php
182
  }
183
-
184
  /**
185
  * input_select function.
186
  *
@@ -241,7 +230,7 @@ class WP_Job_Manager_Writepanels {
241
  if ( empty( $field['value'] ) )
242
  $field['value'] = get_post_meta( $thepostid, $key, true );
243
  ?>
244
- <p class="form-field">
245
  <label for="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $field['label'] ) ; ?></label>
246
  <input type="checkbox" class="checkbox" name="<?php echo esc_attr( $key ); ?>" id="<?php echo esc_attr( $key ); ?>" value="1" <?php checked( $field['value'], 1 ); ?> />
247
  <?php if ( ! empty( $field['description'] ) ) : ?><span class="description"><?php echo $field['description']; ?></span><?php endif; ?>
@@ -274,7 +263,7 @@ class WP_Job_Manager_Writepanels {
274
  ?>
275
  <?php if ( ! empty( $field['description'] ) ) : ?><span class="description"><?php echo $field['description']; ?></span><?php endif; ?>
276
  </p>
277
- <?php
278
  }
279
 
280
  /**
@@ -387,9 +376,9 @@ class WP_Job_Manager_Writepanels {
387
  update_post_meta( $post_id, $key, 0 );
388
  }
389
  break;
390
- default :
391
  if ( is_array( $_POST[ $key ] ) ) {
392
- update_post_meta( $post_id, $key, array_map( 'sanitize_text_field', $_POST[ $key ] ) );
393
  } else {
394
  update_post_meta( $post_id, $key, sanitize_text_field( $_POST[ $key ] ) );
395
  }
24
  public function job_listing_fields() {
25
  return apply_filters( 'job_manager_job_listing_data_fields', array(
26
  '_job_location' => array(
27
+ 'label' => __( 'Location', 'wp-job-manager' ),
28
+ 'placeholder' => __( 'e.g. "London"', 'wp-job-manager' ),
29
+ 'description' => __( 'Leave this blank if the location is not important', 'wp-job-manager' )
30
  ),
31
  '_application' => array(
32
  'label' => __( 'Application email/URL', 'wp-job-manager' ),
33
+ 'placeholder' => __( 'URL or email which applicants use to apply', 'wp-job-manager' ),
34
+ 'description' => __( 'This field is required for the "application" area to appear beneath the listing.', 'wp-job-manager' )
35
  ),
36
  '_company_name' => array(
37
  'label' => __( 'Company name', 'wp-job-manager' ),
59
  'type' => 'checkbox'
60
  ),
61
  '_featured' => array(
62
+ 'label' => __( 'Feature this listing?', 'wp-job-manager' ),
63
  'type' => 'checkbox',
64
  'description' => __( 'Featured listings will be sticky during searches, and can be styled differently.', 'wp-job-manager' )
65
  ),
66
  '_job_expires' => array(
67
+ 'label' => __( 'Expires', 'wp-job-manager' ),
68
  'placeholder' => __( 'yyyy-mm-dd', 'wp-job-manager' )
69
  ),
70
  '_job_author' => array(
81
  * @return void
82
  */
83
  public function add_meta_boxes() {
84
+ global $wp_post_types;
85
+
86
+ add_meta_box( 'job_listing_data', sprintf( __( '%s Data', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name ), array( $this, 'job_listing_data' ), 'job_listing', 'normal', 'high' );
87
  }
88
 
89
  /**
95
  public function input_file( $key, $field ) {
96
  global $thepostid;
97
 
98
+ if ( empty( $field['value'] ) ) {
99
  $field['value'] = get_post_meta( $thepostid, $key, true );
100
+ }
101
+ if ( empty( $field['placeholder'] ) ) {
102
+ $field['placeholder'] = 'http://';
103
+ }
104
  ?>
105
  <p class="form-field">
106
  <label for="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $field['label'] ) ; ?>:</label>
107
+
108
+ <?php if ( ! empty( $field['multiple'] ) ) : ?>
109
+ <?php foreach ( (array) $field['value'] as $value ) : ?>
110
+ <span class="file_url">
111
+ <input type="text" name="<?php echo esc_attr( $key ); ?>[]" placeholder="<?php echo esc_attr( $field['placeholder'] ); ?>" value="<?php echo esc_attr( $value ); ?>" />
112
+ <button class="button wp_job_manager_upload_file_button" data-uploader_button_text="<?php _e( 'Use file', 'wp-job-manager' ); ?>"><?php _e( 'Upload', 'wp-job-manager' ); ?></button>
113
+ </span>
114
+ <?php endforeach; ?>
115
+ <?php else : ?>
116
+ <span class="file_url">
117
+ <input type="text" name="<?php echo esc_attr( $key ); ?>" id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo esc_attr( $field['placeholder'] ); ?>" value="<?php echo esc_attr( $field['value'] ); ?>" />
118
+ <button class="button wp_job_manager_upload_file_button" data-uploader_button_text="<?php _e( 'Use file', 'wp-job-manager' ); ?>"><?php _e( 'Upload', 'wp-job-manager' ); ?></button>
119
+ </span>
120
+ <?php endif; ?>
121
+
122
+ <?php if ( ! empty( $field['description'] ) ) : ?>
123
+ <span class="description"><?php echo $field['description']; ?></span>
124
+ <?php endif; ?>
125
+
126
+ <?php if ( ! empty( $field['multiple'] ) ) : ?>
127
+ <button class="button wp_job_manager_add_another_file_button" data-field_name="<?php echo esc_attr( $key ); ?>" data-field_placeholder="<?php echo esc_attr( $field['placeholder'] ); ?>" data-uploader_button_text="<?php _e( 'Use file', 'wp-job-manager' ); ?>" data-uploader_button="<?php _e( 'Upload', 'wp-job-manager' ); ?>"><?php _e( 'Add file', 'wp-job-manager' ); ?></button>
128
+ <?php endif; ?>
129
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  <?php
131
  }
132
 
169
  </p>
170
  <?php
171
  }
172
+
173
  /**
174
  * input_select function.
175
  *
230
  if ( empty( $field['value'] ) )
231
  $field['value'] = get_post_meta( $thepostid, $key, true );
232
  ?>
233
+ <p class="form-field form-field-checkbox">
234
  <label for="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $field['label'] ) ; ?></label>
235
  <input type="checkbox" class="checkbox" name="<?php echo esc_attr( $key ); ?>" id="<?php echo esc_attr( $key ); ?>" value="1" <?php checked( $field['value'], 1 ); ?> />
236
  <?php if ( ! empty( $field['description'] ) ) : ?><span class="description"><?php echo $field['description']; ?></span><?php endif; ?>
263
  ?>
264
  <?php if ( ! empty( $field['description'] ) ) : ?><span class="description"><?php echo $field['description']; ?></span><?php endif; ?>
265
  </p>
266
+ <?php
267
  }
268
 
269
  /**
376
  update_post_meta( $post_id, $key, 0 );
377
  }
378
  break;
379
+ default :
380
  if ( is_array( $_POST[ $key ] ) ) {
381
+ update_post_meta( $post_id, $key, array_filter( array_map( 'sanitize_text_field', $_POST[ $key ] ) ) );
382
  } else {
383
  update_post_meta( $post_id, $key, sanitize_text_field( $_POST[ $key ] ) );
384
  }
includes/class-wp-job-manager-ajax.php CHANGED
@@ -19,6 +19,8 @@ class WP_Job_Manager_Ajax {
19
  * Get listings via ajax
20
  */
21
  public function get_listings() {
 
 
22
  $result = array();
23
  $search_location = sanitize_text_field( stripslashes( $_POST['search_location'] ) );
24
  $search_keywords = sanitize_text_field( stripslashes( $_POST['search_keywords'] ) );
@@ -47,7 +49,7 @@ class WP_Job_Manager_Ajax {
47
  }
48
 
49
  ob_start();
50
-
51
  $jobs = get_job_listings( apply_filters( 'job_manager_get_listings_args', $args ) );
52
 
53
  $result['found_jobs'] = false;
@@ -98,7 +100,7 @@ class WP_Job_Manager_Ajax {
98
  foreach ( $search_categories as $category ) {
99
  if ( ! is_numeric( $category ) ) {
100
  $category_object = get_term_by( 'slug', $category, 'job_listing_category' );
101
- }
102
  if ( is_numeric( $category ) || is_wp_error( $category_object ) || ! $category_object ) {
103
  $category_object = get_term_by( 'id', $category, 'job_listing_category' );
104
  }
@@ -109,9 +111,9 @@ class WP_Job_Manager_Ajax {
109
  }
110
 
111
  if ( $search_keywords ) {
112
- $showing_jobs = sprintf( __( 'Showing %s&ldquo;%s&rdquo; %sjobs', 'wp-job-manager' ), $showing_types, $search_keywords, implode( ', ', $showing_categories ) );
113
  } else {
114
- $showing_jobs = sprintf( __( 'Showing all %s%sjobs', 'wp-job-manager' ), $showing_types, implode( ', ', $showing_categories ) . ' ' );
115
  }
116
 
117
  $showing_location = $search_location ? sprintf( ' ' . __( 'located in &ldquo;%s&rdquo;', 'wp-job-manager' ), $search_location ) : '';
@@ -138,7 +140,7 @@ class WP_Job_Manager_Ajax {
138
  $result['max_num_pages'] = $jobs->max_num_pages;
139
 
140
  echo '<!--WPJM-->';
141
- echo json_encode( apply_filters( 'job_manager_get_listings_result', $result ) );
142
  echo '<!--WPJM_END-->';
143
 
144
  die();
19
  * Get listings via ajax
20
  */
21
  public function get_listings() {
22
+ global $wp_post_types;
23
+
24
  $result = array();
25
  $search_location = sanitize_text_field( stripslashes( $_POST['search_location'] ) );
26
  $search_keywords = sanitize_text_field( stripslashes( $_POST['search_keywords'] ) );
49
  }
50
 
51
  ob_start();
52
+
53
  $jobs = get_job_listings( apply_filters( 'job_manager_get_listings_args', $args ) );
54
 
55
  $result['found_jobs'] = false;
100
  foreach ( $search_categories as $category ) {
101
  if ( ! is_numeric( $category ) ) {
102
  $category_object = get_term_by( 'slug', $category, 'job_listing_category' );
103
+ }
104
  if ( is_numeric( $category ) || is_wp_error( $category_object ) || ! $category_object ) {
105
  $category_object = get_term_by( 'id', $category, 'job_listing_category' );
106
  }
111
  }
112
 
113
  if ( $search_keywords ) {
114
+ $showing_jobs = sprintf( __( 'Showing %s', 'wp-job-manager' ), $showing_types . '&ldquo;' . $search_keywords . '&rdquo; ' . implode( ', ', $showing_categories ) . $wp_post_types['job_listing']->labels->name );
115
  } else {
116
+ $showing_jobs = sprintf( __( 'Showing all %s', 'wp-job-manager' ), $showing_types . implode( ', ', $showing_categories ) . ' ' . $wp_post_types['job_listing']->labels->name );
117
  }
118
 
119
  $showing_location = $search_location ? sprintf( ' ' . __( 'located in &ldquo;%s&rdquo;', 'wp-job-manager' ), $search_location ) : '';
140
  $result['max_num_pages'] = $jobs->max_num_pages;
141
 
142
  echo '<!--WPJM-->';
143
+ echo json_encode( apply_filters( 'job_manager_get_listings_result', $result, $jobs ) );
144
  echo '<!--WPJM_END-->';
145
 
146
  die();
includes/class-wp-job-manager-category-walker.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
+
4
+ /**
5
+ * WP_Job_Manager_Category_Walker class.
6
+ *
7
+ * @extends Walker
8
+ */
9
+ class WP_Job_Manager_Category_Walker extends Walker {
10
+
11
+ var $tree_type = 'category';
12
+ var $db_fields = array ('parent' => 'parent', 'id' => 'term_id', 'slug' => 'slug' );
13
+
14
+ /**
15
+ * @see Walker::start_el()
16
+ * @since 2.1.0
17
+ *
18
+ * @param string $output Passed by reference. Used to append additional content.
19
+ * @param object $category Category data object.
20
+ * @param int $depth Depth of category in reference to parents.
21
+ * @param array $args
22
+ */
23
+ function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) {
24
+
25
+ if ( ! empty( $args['hierarchical'] ) )
26
+ $pad = str_repeat('&nbsp;', $depth * 3);
27
+ else
28
+ $pad = '';
29
+
30
+ $cat_name = apply_filters( 'list_product_cats', $object->name, $object );
31
+
32
+ $value = isset( $args['value'] ) && $args['value'] == 'id' ? $object->term_id : $object->slug;
33
+
34
+ $output .= "\t<option class=\"level-$depth\" value=\"" . $value . "\"";
35
+
36
+ if ( $value == $args['selected'] || ( is_array( $args['selected'] ) && in_array( $value, $args['selected'] ) ) )
37
+ $output .= ' selected="selected"';
38
+
39
+ $output .= '>';
40
+
41
+ $output .= $pad . $cat_name;
42
+
43
+ if ( ! empty( $args['show_count'] ) ) {
44
+ $output .= '&nbsp;(' . $object->count . ')';
45
+ }
46
+
47
+ $output .= "</option>\n";
48
+ }
49
+ }
includes/class-wp-job-manager-geocode.php CHANGED
@@ -21,7 +21,7 @@ class WP_Job_Manager_Geocode {
21
  * Update location data - when submitting a job
22
  */
23
  public function update_location_data( $job_id, $values ) {
24
- if ( apply_filters( 'job_manager_geolocation_enabled', true ) ) {
25
  $address_data = self::get_location_data( $values['job']['job_location'] );
26
  self::save_location_data( $job_id, $address_data );
27
  }
@@ -97,7 +97,7 @@ class WP_Job_Manager_Geocode {
97
  * Get Location Data from Google
98
  *
99
  * Based on code by Eyal Fitoussi.
100
- *
101
  * @param string $raw_address
102
  * @return array location data
103
  */
@@ -109,8 +109,8 @@ class WP_Job_Manager_Geocode {
109
  return false;
110
  }
111
 
112
- $transient_name = 'geocode_' . md5( $raw_address );
113
- $geocoded_address = get_transient( $transient_name );
114
  $jm_geocode_over_query_limit = get_transient( 'jm_geocode_over_query_limit' );
115
 
116
  // Query limit reached - don't geocode for a while
@@ -120,8 +120,8 @@ class WP_Job_Manager_Geocode {
120
 
121
  try {
122
  if ( false === $geocoded_address || empty( $geocoded_address->results[0] ) ) {
123
- $result = wp_remote_get(
124
- "http://maps.googleapis.com/maps/api/geocode/json?address=" . $raw_address . "&sensor=false",
125
  array(
126
  'timeout' => 5,
127
  'redirection' => 1,
@@ -160,12 +160,12 @@ class WP_Job_Manager_Geocode {
160
  } catch ( Exception $e ) {
161
  return new WP_Error( 'error', $e->getMessage() );
162
  }
163
-
164
  $address = array();
165
  $address['lat'] = sanitize_text_field( $geocoded_address->results[0]->geometry->location->lat );
166
  $address['long'] = sanitize_text_field( $geocoded_address->results[0]->geometry->location->lng );
167
  $address['formatted_address'] = sanitize_text_field( $geocoded_address->results[0]->formatted_address );
168
-
169
  if ( ! empty( $geocoded_address->results[0]->address_components ) ) {
170
  $address_data = $geocoded_address->results[0]->address_components;
171
  $street_number = false;
@@ -176,32 +176,32 @@ class WP_Job_Manager_Geocode {
176
  $address['zipcode'] = false;
177
  $address['country_short'] = false;
178
  $address['country_long'] = false;
179
-
180
  foreach ( $address_data as $data ) {
181
  switch ( $data->types[0] ) {
182
  case 'street_number' :
183
- $address['street'] = sanitize_text_field( $data->long_name );
184
  break;
185
  case 'route' :
186
  $route = sanitize_text_field( $data->long_name );
187
 
188
- if ( ! empty( $address['street'] ) )
189
  $address['street'] = $address['street'] . ' ' . $route;
190
  else
191
  $address['street'] = $route;
192
  break;
193
  case 'locality' :
194
- $address['city'] = sanitize_text_field( $data->long_name );
195
  break;
196
  case 'administrative_area_level_1' :
197
- $address['state_short'] = sanitize_text_field( $data->short_name );
198
  $address['state_long'] = sanitize_text_field( $data->long_name );
199
  break;
200
  case 'postal_code' :
201
- $address['postcode'] = sanitize_text_field( $data->long_name );
202
  break;
203
  case 'country' :
204
- $address['country_short'] = sanitize_text_field( $data->short_name );
205
  $address['country_long'] = sanitize_text_field( $data->long_name );
206
  break;
207
  }
21
  * Update location data - when submitting a job
22
  */
23
  public function update_location_data( $job_id, $values ) {
24
+ if ( apply_filters( 'job_manager_geolocation_enabled', true ) && isset( $values['job']['job_location'] ) ) {
25
  $address_data = self::get_location_data( $values['job']['job_location'] );
26
  self::save_location_data( $job_id, $address_data );
27
  }
97
  * Get Location Data from Google
98
  *
99
  * Based on code by Eyal Fitoussi.
100
+ *
101
  * @param string $raw_address
102
  * @return array location data
103
  */
109
  return false;
110
  }
111
 
112
+ $transient_name = 'geocode_' . md5( $raw_address );
113
+ $geocoded_address = get_transient( $transient_name );
114
  $jm_geocode_over_query_limit = get_transient( 'jm_geocode_over_query_limit' );
115
 
116
  // Query limit reached - don't geocode for a while
120
 
121
  try {
122
  if ( false === $geocoded_address || empty( $geocoded_address->results[0] ) ) {
123
+ $result = wp_remote_get(
124
+ apply_filters( 'job_manager_geolocation_endpoint', "http://maps.googleapis.com/maps/api/geocode/json?address=" . $raw_address . "&sensor=false&region=" . apply_filters( 'job_manager_geolocation_region_cctld', '', $raw_address ), $raw_address ),
125
  array(
126
  'timeout' => 5,
127
  'redirection' => 1,
160
  } catch ( Exception $e ) {
161
  return new WP_Error( 'error', $e->getMessage() );
162
  }
163
+
164
  $address = array();
165
  $address['lat'] = sanitize_text_field( $geocoded_address->results[0]->geometry->location->lat );
166
  $address['long'] = sanitize_text_field( $geocoded_address->results[0]->geometry->location->lng );
167
  $address['formatted_address'] = sanitize_text_field( $geocoded_address->results[0]->formatted_address );
168
+
169
  if ( ! empty( $geocoded_address->results[0]->address_components ) ) {
170
  $address_data = $geocoded_address->results[0]->address_components;
171
  $street_number = false;
176
  $address['zipcode'] = false;
177
  $address['country_short'] = false;
178
  $address['country_long'] = false;
179
+
180
  foreach ( $address_data as $data ) {
181
  switch ( $data->types[0] ) {
182
  case 'street_number' :
183
+ $address['street'] = sanitize_text_field( $data->long_name );
184
  break;
185
  case 'route' :
186
  $route = sanitize_text_field( $data->long_name );
187
 
188
+ if ( ! empty( $address['street'] ) )
189
  $address['street'] = $address['street'] . ' ' . $route;
190
  else
191
  $address['street'] = $route;
192
  break;
193
  case 'locality' :
194
+ $address['city'] = sanitize_text_field( $data->long_name );
195
  break;
196
  case 'administrative_area_level_1' :
197
+ $address['state_short'] = sanitize_text_field( $data->short_name );
198
  $address['state_long'] = sanitize_text_field( $data->long_name );
199
  break;
200
  case 'postal_code' :
201
+ $address['postcode'] = sanitize_text_field( $data->long_name );
202
  break;
203
  case 'country' :
204
+ $address['country_short'] = sanitize_text_field( $data->short_name );
205
  $address['country_long'] = sanitize_text_field( $data->long_name );
206
  break;
207
  }
includes/class-wp-job-manager-post-types.php CHANGED
@@ -8,7 +8,7 @@ class WP_Job_Manager_Post_Types {
8
  * Constructor
9
  */
10
  public function __construct() {
11
- add_action( 'init', array( $this, 'register_post_types' ) );
12
  add_filter( 'admin_head', array( $this, 'admin_head' ) );
13
  add_filter( 'the_content', array( $this, 'job_content' ) );
14
  add_action( 'job_manager_check_for_expired_jobs', array( $this, 'check_for_expired_jobs' ) );
@@ -46,8 +46,8 @@ class WP_Job_Manager_Post_Types {
46
  * Taxonomies
47
  */
48
  if ( get_option( 'job_manager_enable_categories' ) ) {
49
- $singular = __( 'Job Category', 'wp-job-manager' );
50
- $plural = __( 'Job Categories', 'wp-job-manager' );
51
 
52
  if ( current_theme_supports( 'job-manager-templates' ) ) {
53
  $rewrite = array(
@@ -68,16 +68,17 @@ class WP_Job_Manager_Post_Types {
68
  'update_count_callback' => '_update_post_term_count',
69
  'label' => $plural,
70
  'labels' => array(
71
- 'name' => $plural,
72
- 'singular_name' => $singular,
73
- 'search_items' => sprintf( __( 'Search %s', 'wp-job-manager' ), $plural ),
74
- 'all_items' => sprintf( __( 'All %s', 'wp-job-manager' ), $plural ),
75
- 'parent_item' => sprintf( __( 'Parent %s', 'wp-job-manager' ), $singular ),
76
- 'parent_item_colon' => sprintf( __( 'Parent %s:', 'wp-job-manager' ), $singular ),
77
- 'edit_item' => sprintf( __( 'Edit %s', 'wp-job-manager' ), $singular ),
78
- 'update_item' => sprintf( __( 'Update %s', 'wp-job-manager' ), $singular ),
79
- 'add_new_item' => sprintf( __( 'Add New %s', 'wp-job-manager' ), $singular ),
80
- 'new_item_name' => sprintf( __( 'New %s Name', 'wp-job-manager' ), $singular )
 
81
  ),
82
  'show_ui' => true,
83
  'public' => $public,
@@ -92,8 +93,8 @@ class WP_Job_Manager_Post_Types {
92
  );
93
  }
94
 
95
- $singular = __( 'Job Type', 'wp-job-manager' );
96
- $plural = __( 'Job Types', 'wp-job-manager' );
97
 
98
  if ( current_theme_supports( 'job-manager-templates' ) ) {
99
  $rewrite = array(
@@ -115,6 +116,7 @@ class WP_Job_Manager_Post_Types {
115
  'labels' => array(
116
  'name' => $plural,
117
  'singular_name' => $singular,
 
118
  'search_items' => sprintf( __( 'Search %s', 'wp-job-manager' ), $plural ),
119
  'all_items' => sprintf( __( 'All %s', 'wp-job-manager' ), $plural ),
120
  'parent_item' => sprintf( __( 'Parent %s', 'wp-job-manager' ), $singular ),
@@ -139,8 +141,8 @@ class WP_Job_Manager_Post_Types {
139
  /**
140
  * Post types
141
  */
142
- $singular = __( 'Job Listing', 'wp-job-manager' );
143
- $plural = __( 'Job Listings', 'wp-job-manager' );
144
 
145
  if ( current_theme_supports( 'job-manager-templates' ) ) {
146
  $has_archive = _x( 'jobs', 'Post type archive slug - resave permalinks after changing this', 'wp-job-manager' );
@@ -160,7 +162,7 @@ class WP_Job_Manager_Post_Types {
160
  'labels' => array(
161
  'name' => $plural,
162
  'singular_name' => $singular,
163
- 'menu_name' => $plural,
164
  'all_items' => sprintf( __( 'All %s', 'wp-job-manager' ), $plural ),
165
  'add_new' => __( 'Add New', 'wp-job-manager' ),
166
  'add_new_item' => sprintf( __( 'Add %s', 'wp-job-manager' ), $singular ),
@@ -174,7 +176,7 @@ class WP_Job_Manager_Post_Types {
174
  'not_found_in_trash' => sprintf( __( 'No %s found in trash', 'wp-job-manager' ), $plural ),
175
  'parent' => sprintf( __( 'Parent %s', 'wp-job-manager' ), $singular )
176
  ),
177
- 'description' => __( 'This is where you can create and manage job listings.', 'wp-job-manager' ),
178
  'public' => true,
179
  'show_ui' => true,
180
  'capability_type' => 'post',
@@ -307,7 +309,7 @@ class WP_Job_Manager_Post_Types {
307
  if ( ! empty( $_GET['job_categories'] ) ) {
308
  $args['tax_query'][] = array(
309
  'taxonomy' => 'job_listing_category',
310
- 'field' => 'id',
311
  'terms' => explode( ',', sanitize_text_field( $_GET['job_categories'] ) ) + array( 0 )
312
  );
313
  }
@@ -374,16 +376,18 @@ class WP_Job_Manager_Post_Types {
374
  }
375
 
376
  // Delete old expired jobs
377
- $job_ids = $wpdb->get_col( $wpdb->prepare( "
378
- SELECT posts.ID FROM {$wpdb->posts} as posts
379
- WHERE posts.post_type = 'job_listing'
380
- AND posts.post_modified < %s
381
- AND posts.post_status = 'expired'
382
- ", date( 'Y-m-d', strtotime( '-30 days', current_time( 'timestamp' ) ) ) ) );
383
-
384
- if ( $job_ids ) {
385
- foreach ( $job_ids as $job_id ) {
386
- wp_trash_post( $job_id );
 
 
387
  }
388
  }
389
  }
8
  * Constructor
9
  */
10
  public function __construct() {
11
+ add_action( 'init', array( $this, 'register_post_types' ), 0 );
12
  add_filter( 'admin_head', array( $this, 'admin_head' ) );
13
  add_filter( 'the_content', array( $this, 'job_content' ) );
14
  add_action( 'job_manager_check_for_expired_jobs', array( $this, 'check_for_expired_jobs' ) );
46
  * Taxonomies
47
  */
48
  if ( get_option( 'job_manager_enable_categories' ) ) {
49
+ $singular = __( 'Job category', 'wp-job-manager' );
50
+ $plural = __( 'Job categories', 'wp-job-manager' );
51
 
52
  if ( current_theme_supports( 'job-manager-templates' ) ) {
53
  $rewrite = array(
68
  'update_count_callback' => '_update_post_term_count',
69
  'label' => $plural,
70
  'labels' => array(
71
+ 'name' => $plural,
72
+ 'singular_name' => $singular,
73
+ 'menu_name' => ucwords( $plural ),
74
+ 'search_items' => sprintf( __( 'Search %s', 'wp-job-manager' ), $plural ),
75
+ 'all_items' => sprintf( __( 'All %s', 'wp-job-manager' ), $plural ),
76
+ 'parent_item' => sprintf( __( 'Parent %s', 'wp-job-manager' ), $singular ),
77
+ 'parent_item_colon' => sprintf( __( 'Parent %s:', 'wp-job-manager' ), $singular ),
78
+ 'edit_item' => sprintf( __( 'Edit %s', 'wp-job-manager' ), $singular ),
79
+ 'update_item' => sprintf( __( 'Update %s', 'wp-job-manager' ), $singular ),
80
+ 'add_new_item' => sprintf( __( 'Add New %s', 'wp-job-manager' ), $singular ),
81
+ 'new_item_name' => sprintf( __( 'New %s Name', 'wp-job-manager' ), $singular )
82
  ),
83
  'show_ui' => true,
84
  'public' => $public,
93
  );
94
  }
95
 
96
+ $singular = __( 'Job type', 'wp-job-manager' );
97
+ $plural = __( 'Job types', 'wp-job-manager' );
98
 
99
  if ( current_theme_supports( 'job-manager-templates' ) ) {
100
  $rewrite = array(
116
  'labels' => array(
117
  'name' => $plural,
118
  'singular_name' => $singular,
119
+ 'menu_name' => ucwords( $plural ),
120
  'search_items' => sprintf( __( 'Search %s', 'wp-job-manager' ), $plural ),
121
  'all_items' => sprintf( __( 'All %s', 'wp-job-manager' ), $plural ),
122
  'parent_item' => sprintf( __( 'Parent %s', 'wp-job-manager' ), $singular ),
141
  /**
142
  * Post types
143
  */
144
+ $singular = __( 'Job', 'wp-job-manager' );
145
+ $plural = __( 'Jobs', 'wp-job-manager' );
146
 
147
  if ( current_theme_supports( 'job-manager-templates' ) ) {
148
  $has_archive = _x( 'jobs', 'Post type archive slug - resave permalinks after changing this', 'wp-job-manager' );
162
  'labels' => array(
163
  'name' => $plural,
164
  'singular_name' => $singular,
165
+ 'menu_name' => __( 'Job Listings', 'wp-job-manager' ),
166
  'all_items' => sprintf( __( 'All %s', 'wp-job-manager' ), $plural ),
167
  'add_new' => __( 'Add New', 'wp-job-manager' ),
168
  'add_new_item' => sprintf( __( 'Add %s', 'wp-job-manager' ), $singular ),
176
  'not_found_in_trash' => sprintf( __( 'No %s found in trash', 'wp-job-manager' ), $plural ),
177
  'parent' => sprintf( __( 'Parent %s', 'wp-job-manager' ), $singular )
178
  ),
179
+ 'description' => sprintf( __( 'This is where you can create and manage %s.', 'wp-job-manager' ), $plural ),
180
  'public' => true,
181
  'show_ui' => true,
182
  'capability_type' => 'post',
309
  if ( ! empty( $_GET['job_categories'] ) ) {
310
  $args['tax_query'][] = array(
311
  'taxonomy' => 'job_listing_category',
312
+ 'field' => 'slug',
313
  'terms' => explode( ',', sanitize_text_field( $_GET['job_categories'] ) ) + array( 0 )
314
  );
315
  }
376
  }
377
 
378
  // Delete old expired jobs
379
+ if ( apply_filters( 'job_manager_delete_expired_jobs', true ) ) {
380
+ $job_ids = $wpdb->get_col( $wpdb->prepare( "
381
+ SELECT posts.ID FROM {$wpdb->posts} as posts
382
+ WHERE posts.post_type = 'job_listing'
383
+ AND posts.post_modified < %s
384
+ AND posts.post_status = 'expired'
385
+ ", date( 'Y-m-d', strtotime( '-' . apply_filters( 'job_manager_delete_expired_jobs_days', 30 ) . ' days', current_time( 'timestamp' ) ) ) ) );
386
+
387
+ if ( $job_ids ) {
388
+ foreach ( $job_ids as $job_id ) {
389
+ wp_trash_post( $job_id );
390
+ }
391
  }
392
  }
393
  }
includes/class-wp-job-manager-shortcodes.php CHANGED
@@ -61,14 +61,14 @@ class WP_Job_Manager_Shortcodes {
61
 
62
  // Check ownership
63
  if ( $job->post_author != get_current_user_id() ) {
64
- throw new Exception( __( 'Invalid Job ID', 'wp-job-manager' ) );
65
  }
66
 
67
  switch ( $action ) {
68
  case 'mark_filled' :
69
  // Check status
70
  if ( $job->_filled == 1 )
71
- throw new Exception( __( 'This job is already filled', 'wp-job-manager' ) );
72
 
73
  // Update
74
  update_post_meta( $job_id, '_filled', 1 );
@@ -78,8 +78,9 @@ class WP_Job_Manager_Shortcodes {
78
  break;
79
  case 'mark_not_filled' :
80
  // Check status
81
- if ( $job->_filled != 1 )
82
- throw new Exception( __( 'This job is already not filled', 'wp-job-manager' ) );
 
83
 
84
  // Update
85
  update_post_meta( $job_id, '_filled', 0 );
@@ -118,7 +119,7 @@ class WP_Job_Manager_Shortcodes {
118
  */
119
  public function job_dashboard( $atts ) {
120
  if ( ! is_user_logged_in() ) {
121
- return __( 'You need to be signed in to manage your job listings.', 'wp-job-manager' );
122
  }
123
 
124
  extract( shortcode_atts( array(
@@ -158,7 +159,7 @@ class WP_Job_Manager_Shortcodes {
158
  echo $this->job_dashboard_message;
159
 
160
  $job_dashboard_columns = apply_filters( 'job_manager_job_dashboard_columns', array(
161
- 'job_title' => __( 'Job Title', 'wp-job-manager' ),
162
  'filled' => __( 'Filled?', 'wp-job-manager' ),
163
  'date' => __( 'Date Posted', 'wp-job-manager' ),
164
  'expires' => __( 'Date Expires', 'wp-job-manager' )
@@ -189,26 +190,28 @@ class WP_Job_Manager_Shortcodes {
189
  ob_start();
190
 
191
  extract( $atts = shortcode_atts( apply_filters( 'job_manager_output_jobs_defaults', array(
192
- 'per_page' => get_option( 'job_manager_per_page' ),
193
- 'orderby' => 'featured',
194
- 'order' => 'DESC',
195
 
196
  // Filters + cats
197
- 'show_filters' => true,
198
- 'show_categories' => true,
199
- 'show_pagination' => false,
 
 
200
 
201
  // Limit what jobs are shown based on category and type
202
- 'categories' => '',
203
- 'job_types' => '',
204
- 'featured' => null, // True to show only featured, false to hide featuref, leave null to show both.
205
- 'show_featured_only' => false, // Deprecated
206
 
207
  // Default values for filters
208
- 'location' => '',
209
- 'keywords' => '',
210
- 'selected_category' => '',
211
- 'selected_job_types' => implode( ',', array_values( get_job_listing_types( 'id=>slug' ) ) ),
212
  ) ), $atts ) );
213
 
214
  if ( ! get_option( 'job_manager_enable_categories' ) ) {
@@ -216,9 +219,11 @@ class WP_Job_Manager_Shortcodes {
216
  }
217
 
218
  // String and bool handling
219
- $show_filters = ( is_bool( $show_filters ) && $show_filters ) || in_array( $show_filters, array( '1', 'true', 'yes' ) ) ? true : false;
220
- $show_categories = ( is_bool( $show_categories ) && $show_categories ) || in_array( $show_categories, array( '1', 'true', 'yes' ) ) ? true : false;
221
- $show_featured_only = ( is_bool( $show_featured_only ) && $show_featured_only ) || in_array( $show_featured_only, array( '1', 'true', 'yes' ) ) ? true : false;
 
 
222
 
223
  if ( ! is_null( $featured ) ) {
224
  $featured = ( is_bool( $featured ) && $featured ) || in_array( $featured, array( '1', 'true', 'yes' ) ) ? true : false;
@@ -244,12 +249,12 @@ class WP_Job_Manager_Shortcodes {
244
 
245
  if ( $show_filters ) {
246
 
247
- get_job_manager_template( 'job-filters.php', array( 'per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'show_categories' => $show_categories, 'categories' => $categories, 'selected_category' => $selected_category, 'job_types' => $job_types, 'atts' => $atts, 'location' => $location, 'keywords' => $keywords, 'selected_job_types' => $selected_job_types ) );
248
 
249
  echo '<ul class="job_listings"></ul>';
250
 
251
- if ( ! $show_pagination ) {
252
- echo '<a class="load_more_jobs" href="#" style="display:none;"><strong>' . __( 'Load more job listings', 'wp-job-manager' ) . '</strong></a>';
253
  }
254
 
255
  } else {
@@ -268,23 +273,19 @@ class WP_Job_Manager_Shortcodes {
268
  if ( $jobs->have_posts() ) : ?>
269
 
270
  <ul class="job_listings">
271
-
272
  <?php while ( $jobs->have_posts() ) : $jobs->the_post(); ?>
273
-
274
  <?php get_job_manager_template_part( 'content', 'job_listing' ); ?>
275
-
276
  <?php endwhile; ?>
277
-
278
  </ul>
279
 
280
- <?php if ( $jobs->found_posts > $per_page ) : ?>
281
 
282
  <?php wp_enqueue_script( 'wp-job-manager-ajax-filters' ); ?>
283
 
284
  <?php if ( $show_pagination ) : ?>
285
  <?php echo get_job_listing_pagination( $jobs->max_num_pages ); ?>
286
  <?php else : ?>
287
- <a class="load_more_jobs" href="#"><strong><?php _e( 'Load more job listings', 'wp-job-manager' ); ?></strong></a>
288
  <?php endif; ?>
289
 
290
  <?php endif; ?>
61
 
62
  // Check ownership
63
  if ( $job->post_author != get_current_user_id() ) {
64
+ throw new Exception( __( 'Invalid ID', 'wp-job-manager' ) );
65
  }
66
 
67
  switch ( $action ) {
68
  case 'mark_filled' :
69
  // Check status
70
  if ( $job->_filled == 1 )
71
+ throw new Exception( __( 'This position has already been filled', 'wp-job-manager' ) );
72
 
73
  // Update
74
  update_post_meta( $job_id, '_filled', 1 );
78
  break;
79
  case 'mark_not_filled' :
80
  // Check status
81
+ if ( $job->_filled != 1 ) {
82
+ throw new Exception( __( 'This position is not filled', 'wp-job-manager' ) );
83
+ }
84
 
85
  // Update
86
  update_post_meta( $job_id, '_filled', 0 );
119
  */
120
  public function job_dashboard( $atts ) {
121
  if ( ! is_user_logged_in() ) {
122
+ return __( 'You need to be signed in to manage your listings.', 'wp-job-manager' );
123
  }
124
 
125
  extract( shortcode_atts( array(
159
  echo $this->job_dashboard_message;
160
 
161
  $job_dashboard_columns = apply_filters( 'job_manager_job_dashboard_columns', array(
162
+ 'job_title' => __( 'Title', 'wp-job-manager' ),
163
  'filled' => __( 'Filled?', 'wp-job-manager' ),
164
  'date' => __( 'Date Posted', 'wp-job-manager' ),
165
  'expires' => __( 'Date Expires', 'wp-job-manager' )
190
  ob_start();
191
 
192
  extract( $atts = shortcode_atts( apply_filters( 'job_manager_output_jobs_defaults', array(
193
+ 'per_page' => get_option( 'job_manager_per_page' ),
194
+ 'orderby' => 'featured',
195
+ 'order' => 'DESC',
196
 
197
  // Filters + cats
198
+ 'show_filters' => true,
199
+ 'show_categories' => true,
200
+ 'show_category_multiselect' => get_option( 'job_manager_enable_default_category_multiselect', false ),
201
+ 'show_pagination' => false,
202
+ 'show_more' => true,
203
 
204
  // Limit what jobs are shown based on category and type
205
+ 'categories' => '',
206
+ 'job_types' => '',
207
+ 'featured' => null, // True to show only featured, false to hide featured, leave null to show both.
208
+ 'show_featured_only' => false, // Deprecated
209
 
210
  // Default values for filters
211
+ 'location' => '',
212
+ 'keywords' => '',
213
+ 'selected_category' => '',
214
+ 'selected_job_types' => implode( ',', array_values( get_job_listing_types( 'id=>slug' ) ) ),
215
  ) ), $atts ) );
216
 
217
  if ( ! get_option( 'job_manager_enable_categories' ) ) {
219
  }
220
 
221
  // String and bool handling
222
+ $show_filters = ( is_bool( $show_filters ) && $show_filters ) || in_array( $show_filters, array( '1', 'true', 'yes' ) ) ? true : false;
223
+ $show_categories = ( is_bool( $show_categories ) && $show_categories ) || in_array( $show_categories, array( '1', 'true', 'yes' ) ) ? true : false;
224
+ $show_featured_only = ( is_bool( $show_featured_only ) && $show_featured_only ) || in_array( $show_featured_only, array( '1', 'true', 'yes' ) ) ? true : false;
225
+ $show_category_multiselect = ( is_bool( $show_category_multiselect ) && $show_category_multiselect ) || in_array( $show_category_multiselect, array( '1', 'true', 'yes' ) ) ? true : false;
226
+ $show_more = ( is_bool( $show_more ) && $show_more ) || in_array( $show_more, array( '1', 'true', 'yes' ) ) ? true : false;
227
 
228
  if ( ! is_null( $featured ) ) {
229
  $featured = ( is_bool( $featured ) && $featured ) || in_array( $featured, array( '1', 'true', 'yes' ) ) ? true : false;
249
 
250
  if ( $show_filters ) {
251
 
252
+ get_job_manager_template( 'job-filters.php', array( 'per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'show_categories' => $show_categories, 'categories' => $categories, 'selected_category' => $selected_category, 'job_types' => $job_types, 'atts' => $atts, 'location' => $location, 'keywords' => $keywords, 'selected_job_types' => $selected_job_types, 'show_category_multiselect' => $show_category_multiselect ) );
253
 
254
  echo '<ul class="job_listings"></ul>';
255
 
256
+ if ( ! $show_pagination && $show_more ) {
257
+ echo '<a class="load_more_jobs" href="#" style="display:none;"><strong>' . __( 'Load more listings', 'wp-job-manager' ) . '</strong></a>';
258
  }
259
 
260
  } else {
273
  if ( $jobs->have_posts() ) : ?>
274
 
275
  <ul class="job_listings">
 
276
  <?php while ( $jobs->have_posts() ) : $jobs->the_post(); ?>
 
277
  <?php get_job_manager_template_part( 'content', 'job_listing' ); ?>
 
278
  <?php endwhile; ?>
 
279
  </ul>
280
 
281
+ <?php if ( $jobs->found_posts > $per_page && $show_more ) : ?>
282
 
283
  <?php wp_enqueue_script( 'wp-job-manager-ajax-filters' ); ?>
284
 
285
  <?php if ( $show_pagination ) : ?>
286
  <?php echo get_job_listing_pagination( $jobs->max_num_pages ); ?>
287
  <?php else : ?>
288
+ <a class="load_more_jobs" href="#"><strong><?php _e( 'Load more listings', 'wp-job-manager' ); ?></strong></a>
289
  <?php endif; ?>
290
 
291
  <?php endif; ?>
includes/class-wp-job-manager-widgets.php CHANGED
@@ -135,14 +135,16 @@ class WP_Job_Manager_Widget_Recent_Jobs extends WP_Job_Manager_Widget {
135
  * Constructor
136
  */
137
  public function __construct() {
 
 
138
  $this->widget_cssclass = 'job_manager widget_recent_jobs';
139
- $this->widget_description = __( 'Display a list of the most recent jobs on your site.', 'wp-job-manager' );
140
  $this->widget_id = 'widget_recent_jobs';
141
- $this->widget_name = __( 'Recent Job Listings', 'wp-job-manager' );
142
  $this->settings = array(
143
  'title' => array(
144
  'type' => 'text',
145
- 'std' => __( 'Recent Jobs', 'wp-job-manager' ),
146
  'label' => __( 'Title', 'wp-job-manager' )
147
  ),
148
  'number' => array(
@@ -151,7 +153,7 @@ class WP_Job_Manager_Widget_Recent_Jobs extends WP_Job_Manager_Widget {
151
  'min' => 1,
152
  'max' => '',
153
  'std' => 10,
154
- 'label' => __( 'Number of jobs to show', 'wp-job-manager' )
155
  )
156
  );
157
  parent::__construct();
135
  * Constructor
136
  */
137
  public function __construct() {
138
+ global $wp_post_types;
139
+
140
  $this->widget_cssclass = 'job_manager widget_recent_jobs';
141
+ $this->widget_description = __( 'Display a list of the most recent listings on your site.', 'wp-job-manager' );
142
  $this->widget_id = 'widget_recent_jobs';
143
+ $this->widget_name = sprintf( __( 'Recent %s', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->name );
144
  $this->settings = array(
145
  'title' => array(
146
  'type' => 'text',
147
+ 'std' => sprintf( __( 'Recent %s', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->name ),
148
  'label' => __( 'Title', 'wp-job-manager' )
149
  ),
150
  'number' => array(
153
  'min' => 1,
154
  'max' => '',
155
  'std' => 10,
156
+ 'label' => __( 'Number of listings to show', 'wp-job-manager' )
157
  )
158
  );
159
  parent::__construct();
includes/forms/class-wp-job-manager-form-edit-job.php CHANGED
@@ -38,35 +38,27 @@ class WP_Job_Manager_Form_Edit_Job extends WP_Job_Manager_Form_Submit_Job {
38
  $job = get_post( self::$job_id );
39
 
40
  if ( empty( self::$job_id ) || $job->post_status !== 'publish' ) {
41
- echo wpautop( __( 'Invalid job', 'wp-job-manager' ) );
42
  return;
43
  }
44
 
45
  self::init_fields();
46
 
47
- foreach ( self::$fields as $group_key => $fields ) {
48
- foreach ( $fields as $key => $field ) {
49
- switch ( $key ) {
50
- case 'job_title' :
51
- if ( ! isset( self::$fields[ $group_key ][ $key ]['value'] ) )
52
- self::$fields[ $group_key ][ $key ]['value'] = $job->post_title;
53
- break;
54
- case 'job_description' :
55
- if ( ! isset( self::$fields[ $group_key ][ $key ]['value'] ) )
56
- self::$fields[ $group_key ][ $key ]['value'] = $job->post_content;
57
- break;
58
- case 'job_type' :
59
- if ( ! isset( self::$fields[ $group_key ][ $key ]['value'] ) )
60
- self::$fields[ $group_key ][ $key ]['value'] = current( wp_get_object_terms( $job->ID, 'job_listing_type', array( 'fields' => 'slugs' ) ) );
61
- break;
62
- case 'job_category' :
63
- if ( ! isset( self::$fields[ $group_key ][ $key ]['value'] ) )
64
- self::$fields[ $group_key ][ $key ]['value'] = current( wp_get_object_terms( $job->ID, 'job_listing_category', array( 'fields' => 'ids' ) ) );
65
- break;
66
- default:
67
- if ( ! isset( self::$fields[ $group_key ][ $key ]['value'] ) )
68
- self::$fields[ $group_key ][ $key ]['value'] = get_post_meta( $job->ID, '_' . $key, true );
69
- break;
70
  }
71
  }
72
  }
@@ -81,7 +73,7 @@ class WP_Job_Manager_Form_Edit_Job extends WP_Job_Manager_Form_Submit_Job {
81
  'action' => self::get_action(),
82
  'job_fields' => self::get_fields( 'job' ),
83
  'company_fields' => self::get_fields( 'company' ),
84
- 'submit_button_text' => __( 'Update job listing', 'wp-job-manager' )
85
  ) );
86
  }
87
 
@@ -108,7 +100,7 @@ class WP_Job_Manager_Form_Edit_Job extends WP_Job_Manager_Form_Submit_Job {
108
  self::update_job_data( $values );
109
 
110
  // Successful
111
- echo '<div class="job-manager-message">' . __( 'Your changes have been saved.', 'wp-job-manager' ), ' <a href="' . get_permalink( self::$job_id ) . '">' . __( 'View Job Listing &rarr;', 'wp-job-manager' ) . '</a>' . '</div>';
112
 
113
  } catch ( Exception $e ) {
114
  echo '<div class="job-manager-error">' . $e->getMessage() . '</div>';
38
  $job = get_post( self::$job_id );
39
 
40
  if ( empty( self::$job_id ) || $job->post_status !== 'publish' ) {
41
+ echo wpautop( __( 'Invalid listing', 'wp-job-manager' ) );
42
  return;
43
  }
44
 
45
  self::init_fields();
46
 
47
+ foreach ( self::$fields as $group_key => $group_fields ) {
48
+ foreach ( $group_fields as $key => $field ) {
49
+ if ( ! isset( self::$fields[ $group_key ][ $key ]['value'] ) ) {
50
+ if ( 'job_title' === $key ) {
51
+ self::$fields[ $group_key ][ $key ]['value'] = $job->post_title;
52
+
53
+ } elseif ( 'job_description' === $key ) {
54
+ self::$fields[ $group_key ][ $key ]['value'] = $job->post_content;
55
+
56
+ } elseif ( ! empty( $field['taxonomy'] ) ) {
57
+ self::$fields[ $group_key ][ $key ]['value'] = wp_get_object_terms( $job->ID, $field['taxonomy'], array( 'fields' => 'ids' ) );
58
+
59
+ } else {
60
+ self::$fields[ $group_key ][ $key ]['value'] = get_post_meta( $job->ID, '_' . $key, true );
61
+ }
 
 
 
 
 
 
 
 
62
  }
63
  }
64
  }
73
  'action' => self::get_action(),
74
  'job_fields' => self::get_fields( 'job' ),
75
  'company_fields' => self::get_fields( 'company' ),
76
+ 'submit_button_text' => __( 'Save changes', 'wp-job-manager' )
77
  ) );
78
  }
79
 
100
  self::update_job_data( $values );
101
 
102
  // Successful
103
+ echo '<div class="job-manager-message">' . __( 'Your changes have been saved.', 'wp-job-manager' ), ' <a href="' . get_permalink( self::$job_id ) . '">' . __( 'View &rarr;', 'wp-job-manager' ) . '</a>' . '</div>';
104
 
105
  } catch ( Exception $e ) {
106
  echo '<div class="job-manager-error">' . $e->getMessage() . '</div>';
includes/forms/class-wp-job-manager-form-submit-job.php CHANGED
@@ -128,36 +128,37 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
128
  self::$fields = apply_filters( 'submit_job_form_fields', array(
129
  'job' => array(
130
  'job_title' => array(
131
- 'label' => __( 'Job title', 'wp-job-manager' ),
132
  'type' => 'text',
133
  'required' => true,
134
  'placeholder' => '',
135
  'priority' => 1
136
  ),
137
  'job_location' => array(
138
- 'label' => __( 'Job location', 'wp-job-manager' ),
139
- 'description' => __( 'Leave this blank if the job can be done from anywhere (i.e. telecommuting)', 'wp-job-manager' ),
140
  'type' => 'text',
141
  'required' => false,
142
- 'placeholder' => __( 'e.g. "London, UK", "New York", "Houston, TX"', 'wp-job-manager' ),
143
  'priority' => 2
144
  ),
145
  'job_type' => array(
146
  'label' => __( 'Job type', 'wp-job-manager' ),
147
- 'type' => 'select',
148
  'required' => true,
149
- 'options' => self::job_types(),
150
  'placeholder' => '',
151
  'priority' => 3,
152
- 'default' => 'full-time'
 
153
  ),
154
  'job_category' => array(
155
  'label' => __( 'Job category', 'wp-job-manager' ),
156
- 'type' => 'job-category',
157
  'required' => true,
158
  'placeholder' => '',
159
  'priority' => 4,
160
- 'default' => ''
 
161
  ),
162
  'job_description' => array(
163
  'label' => __( 'Description', 'wp-job-manager' ),
@@ -197,19 +198,26 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
197
  'maxlength' => 64,
198
  'priority' => 3
199
  ),
 
 
 
 
 
 
 
200
  'company_twitter' => array(
201
  'label' => __( 'Twitter username', 'wp-job-manager' ),
202
  'type' => 'text',
203
  'required' => false,
204
  'placeholder' => __( '@yourcompany', 'wp-job-manager' ),
205
- 'priority' => 4
206
  ),
207
  'company_logo' => array(
208
  'label' => __( 'Logo', 'wp-job-manager' ),
209
  'type' => 'file',
210
  'required' => false,
211
  'placeholder' => '',
212
- 'priority' => 5,
213
  'allowed_mime_types' => array(
214
  'jpg' => 'image/jpeg',
215
  'gif' => 'image/gif',
@@ -230,16 +238,16 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
230
  * @return array of data
231
  */
232
  protected static function get_posted_fields() {
233
-
234
  self::init_fields();
235
 
236
  $values = array();
237
 
238
- foreach ( self::$fields as $group_key => $fields ) {
239
- foreach ( $fields as $key => $field ) {
240
  // Get the value
241
  $field_type = str_replace( '-', '_', $field['type'] );
242
-
243
  if ( method_exists( __CLASS__, "get_posted_{$field_type}_field" ) ) {
244
  $values[ $group_key ][ $key ] = call_user_func( __CLASS__ . "::get_posted_{$field_type}_field", $key, $field );
245
  } else {
@@ -258,10 +266,17 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
258
  * Get the value of a posted field
259
  * @param string $key
260
  * @param array $field
261
- * @return string
262
  */
263
  protected static function get_posted_field( $key, $field ) {
264
- return isset( $_POST[ $key ] ) ? sanitize_text_field( trim( urldecode( stripslashes( $_POST[ $key ] ) ) ) ) : '';
 
 
 
 
 
 
 
265
  }
266
 
267
  /**
@@ -271,20 +286,23 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
271
  * @return array
272
  */
273
  protected static function get_posted_multiselect_field( $key, $field ) {
274
- return isset( $_POST[ $key ] ) ? array_map( 'sanitize_text_field', $_POST[ $key ] ) : array();
275
  }
276
 
277
  /**
278
  * Get the value of a posted file field
279
  * @param string $key
280
  * @param array $field
281
- * @return string
282
  */
283
  protected static function get_posted_file_field( $key, $field ) {
284
  $file = self::upload_file( $key, $field );
285
-
286
- if ( ! $file )
287
  $file = self::get_posted_field( 'current_' . $key, $field );
 
 
 
288
 
289
  return $file;
290
  }
@@ -309,17 +327,65 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
309
  return self::get_posted_textarea_field( $key, $field );
310
  }
311
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312
  /**
313
  * Validate the posted fields
314
  *
315
  * @return bool on success, WP_ERROR on failure
316
  */
317
  protected static function validate_fields( $values ) {
318
- foreach ( self::$fields as $group_key => $fields ) {
319
- foreach ( $fields as $key => $field ) {
320
  if ( $field['required'] && empty( $values[ $group_key ][ $key ] ) ) {
321
  return new WP_Error( 'validation-error', sprintf( __( '%s is a required field', 'wp-job-manager' ), $field['label'] ) );
322
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
323
  }
324
  }
325
 
@@ -367,8 +433,9 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
367
  private static function job_types() {
368
  $options = array();
369
  $terms = get_job_listing_types();
370
- foreach ( $terms as $term )
371
  $options[ $term->slug ] = $term->name;
 
372
  return $options;
373
  }
374
 
@@ -405,8 +472,8 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
405
  // Load data if neccessary
406
  if ( ! empty( $_POST['edit_job'] ) && self::$job_id ) {
407
  $job = get_post( self::$job_id );
408
- foreach ( self::$fields as $group_key => $fields ) {
409
- foreach ( $fields as $key => $field ) {
410
  switch ( $key ) {
411
  case 'job_title' :
412
  self::$fields[ $group_key ][ $key ]['value'] = $job->post_title;
@@ -415,10 +482,10 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
415
  self::$fields[ $group_key ][ $key ]['value'] = $job->post_content;
416
  break;
417
  case 'job_type' :
418
- self::$fields[ $group_key ][ $key ]['value'] = current( wp_get_object_terms( $job->ID, 'job_listing_type', array( 'fields' => 'slugs' ) ) );
419
  break;
420
  case 'job_category' :
421
- self::$fields[ $group_key ][ $key ]['value'] = current( wp_get_object_terms( $job->ID, 'job_listing_category', array( 'fields' => 'ids' ) ) );
422
  break;
423
  default:
424
  self::$fields[ $group_key ][ $key ]['value'] = get_post_meta( $job->ID, '_' . $key, true );
@@ -454,7 +521,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
454
  'action' => self::get_action(),
455
  'job_fields' => self::get_fields( 'job' ),
456
  'company_fields' => self::get_fields( 'company' ),
457
- 'submit_button_text' => __( 'Preview job listing &rarr;', 'wp-job-manager' )
458
  ) );
459
  }
460
 
@@ -463,10 +530,9 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
463
  */
464
  public static function submit_handler() {
465
  try {
466
-
467
  // Init fields
468
  self::init_fields();
469
-
470
  // Get posted values
471
  $values = self::get_posted_fields();
472
 
@@ -483,15 +549,18 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
483
  if ( ! is_user_logged_in() ) {
484
  $create_account = false;
485
 
486
- if ( job_manager_enable_registration() && ! empty( $_POST['create_account_email'] ) )
487
  $create_account = wp_job_manager_create_account( $_POST['create_account_email'], get_option( 'job_manager_registration_role' ) );
 
488
 
489
- if ( is_wp_error( $create_account ) )
490
  throw new Exception( $create_account->get_error_message() );
 
491
  }
492
 
493
- if ( job_manager_user_requires_account() && ! is_user_logged_in() )
494
- throw new Exception( __( 'You must be signed in to post a new job listing.' ) );
 
495
 
496
  // Update the job
497
  self::save_job( $values['job']['job_title'], $values['job']['job_description'], self::$job_id ? '' : 'preview', $values );
@@ -514,20 +583,22 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
514
  * @param string $status
515
  */
516
  protected static function save_job( $post_title, $post_content, $status = 'preview', $values = array() ) {
517
-
518
  $job_slug = array();
519
 
520
  // Prepend with company name
521
- if ( ! empty( $values['company']['company_name'] ) )
522
  $job_slug[] = $values['company']['company_name'];
 
523
 
524
  // Prepend location
525
- if ( ! empty( $values['job']['job_location'] ) )
526
  $job_slug[] = $values['job']['job_location'];
 
527
 
528
  // Prepend with job type
529
- if ( ! empty( $values['job']['job_type'] ) )
530
  $job_slug[] = $values['job']['job_type'];
 
531
 
532
  $job_slug[] = $post_title;
533
 
@@ -539,8 +610,9 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
539
  'comment_status' => 'closed'
540
  ), $post_title, $post_content, $status, $values );
541
 
542
- if ( $status )
543
  $job_data['post_status'] = $status;
 
544
 
545
  if ( self::$job_id ) {
546
  $job_data['ID'] = self::$job_id;
@@ -556,31 +628,91 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
556
  * @param array $values
557
  */
558
  protected static function update_job_data( $values ) {
 
 
 
559
 
560
- wp_set_object_terms( self::$job_id, array( $values['job']['job_type'] ), 'job_listing_type', false );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
561
 
562
- if ( get_option( 'job_manager_enable_categories' ) && isset( $values['job']['job_category'] ) ) {
563
- $posted_cats = array_map( 'absint', is_array( $values['job']['job_category'] ) ? $values['job']['job_category'] : array( $values['job']['job_category'] ) );
564
- wp_set_object_terms( self::$job_id, $posted_cats, 'job_listing_category', false );
 
 
 
 
 
 
 
 
 
 
 
 
 
565
  }
566
 
567
- update_post_meta( self::$job_id, '_application', $values['job']['application'] );
568
- update_post_meta( self::$job_id, '_job_location', $values['job']['job_location'] );
569
- update_post_meta( self::$job_id, '_company_name', $values['company']['company_name'] );
570
- update_post_meta( self::$job_id, '_company_website', $values['company']['company_website'] );
571
- update_post_meta( self::$job_id, '_company_tagline', $values['company']['company_tagline'] );
572
- update_post_meta( self::$job_id, '_company_twitter', $values['company']['company_twitter'] );
573
- update_post_meta( self::$job_id, '_company_logo', $values['company']['company_logo'] );
574
- add_post_meta( self::$job_id, '_filled', 0, true );
575
- add_post_meta( self::$job_id, '_featured', 0, true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
576
 
577
  // And user meta to save time in future
578
  if ( is_user_logged_in() ) {
579
- update_user_meta( get_current_user_id(), '_company_name', $values['company']['company_name'] );
580
- update_user_meta( get_current_user_id(), '_company_website', $values['company']['company_website'] );
581
- update_user_meta( get_current_user_id(), '_company_tagline', $values['company']['company_tagline'] );
582
- update_user_meta( get_current_user_id(), '_company_twitter', $values['company']['company_twitter'] );
583
- update_user_meta( get_current_user_id(), '_company_logo', $values['company']['company_logo'] );
 
584
  }
585
 
586
  do_action( 'job_manager_update_job_data', self::$job_id, $values );
@@ -624,8 +756,9 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
624
  * Preview Step Form handler
625
  */
626
  public static function preview_handler() {
627
- if ( ! $_POST )
628
  return;
 
629
 
630
  // Edit = show submit form again
631
  if ( ! empty( $_POST['edit_job'] ) ) {
@@ -637,6 +770,10 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
637
  $job = get_post( self::$job_id );
638
 
639
  if ( in_array( $job->post_status, array( 'preview', 'expired' ) ) ) {
 
 
 
 
640
  $update_job = array();
641
  $update_job['ID'] = $job->ID;
642
  $update_job['post_status'] = get_option( 'job_manager_submission_requires_approval' ) ? 'pending' : 'publish';
@@ -667,6 +804,8 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
667
 
668
  /**
669
  * Upload a file
 
 
670
  */
671
  public static function upload_file( $field_key, $field ) {
672
 
@@ -677,7 +816,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
677
  include_once( ABSPATH . 'wp-admin/includes/media.php' );
678
 
679
  if ( isset( $_FILES[ $field_key ] ) && ! empty( $_FILES[ $field_key ] ) && ! empty( $_FILES[ $field_key ]['name'] ) ) {
680
- $file = $_FILES[ $field_key ];
681
 
682
  if ( ! empty( $field['allowed_mime_types'] ) ) {
683
  $allowed_mime_types = $field['allowed_mime_types'];
@@ -685,19 +824,55 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
685
  $allowed_mime_types = get_allowed_mime_types();
686
  }
687
 
688
- if ( ! in_array( $_FILES[ $field_key ]["type"], $allowed_mime_types ) )
689
- throw new Exception( sprintf( __( '"%s" (filetype %s) needs to be one of the following file types: %s', 'wp-job-manager' ), $field['label'], $_FILES[ $field_key ]["type"], implode( ', ', array_keys( $allowed_mime_types ) ) ) );
 
 
 
 
690
 
691
- add_filter( 'upload_dir', array( __CLASS__, 'upload_dir' ) );
 
692
 
693
- $upload = wp_handle_upload( $file, array( 'test_form' => false ) );
 
 
 
 
 
 
 
 
 
 
694
 
695
- remove_filter('upload_dir', array( __CLASS__, 'upload_dir' ) );
 
 
696
 
697
- if ( ! empty( $upload['error'] ) ) {
698
- throw new Exception( $upload['error'] );
 
 
 
 
 
 
 
699
  } else {
700
- return $upload['url'];
 
 
 
 
 
 
 
 
 
 
 
 
701
  }
702
  }
703
  }
@@ -706,10 +881,16 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
706
  * Filter the upload directory
707
  */
708
  public static function upload_dir( $pathdata ) {
709
- $subdir = '/job_listings';
710
- $pathdata['path'] = str_replace( $pathdata['subdir'], $subdir, $pathdata['path'] );
711
- $pathdata['url'] = str_replace( $pathdata['subdir'], $subdir, $pathdata['url'] );
712
- $pathdata['subdir'] = str_replace( $pathdata['subdir'], $subdir, $pathdata['subdir'] );
 
 
 
 
 
 
713
  return $pathdata;
714
  }
715
  }
128
  self::$fields = apply_filters( 'submit_job_form_fields', array(
129
  'job' => array(
130
  'job_title' => array(
131
+ 'label' => __( 'Title', 'wp-job-manager' ),
132
  'type' => 'text',
133
  'required' => true,
134
  'placeholder' => '',
135
  'priority' => 1
136
  ),
137
  'job_location' => array(
138
+ 'label' => __( 'Location', 'wp-job-manager' ),
139
+ 'description' => __( 'Leave this blank if the location is not important', 'wp-job-manager' ),
140
  'type' => 'text',
141
  'required' => false,
142
+ 'placeholder' => __( 'e.g. "London"', 'wp-job-manager' ),
143
  'priority' => 2
144
  ),
145
  'job_type' => array(
146
  'label' => __( 'Job type', 'wp-job-manager' ),
147
+ 'type' => 'term-select',
148
  'required' => true,
 
149
  'placeholder' => '',
150
  'priority' => 3,
151
+ 'default' => 'full-time',
152
+ 'taxonomy' => 'job_listing_type'
153
  ),
154
  'job_category' => array(
155
  'label' => __( 'Job category', 'wp-job-manager' ),
156
+ 'type' => 'term-multiselect',
157
  'required' => true,
158
  'placeholder' => '',
159
  'priority' => 4,
160
+ 'default' => '',
161
+ 'taxonomy' => 'job_listing_category'
162
  ),
163
  'job_description' => array(
164
  'label' => __( 'Description', 'wp-job-manager' ),
198
  'maxlength' => 64,
199
  'priority' => 3
200
  ),
201
+ 'company_video' => array(
202
+ 'label' => __( 'Video', 'wp-job-manager' ),
203
+ 'type' => 'text',
204
+ 'required' => false,
205
+ 'placeholder' => __( 'A link to a video about your company', 'wp-job-manager' ),
206
+ 'priority' => 4
207
+ ),
208
  'company_twitter' => array(
209
  'label' => __( 'Twitter username', 'wp-job-manager' ),
210
  'type' => 'text',
211
  'required' => false,
212
  'placeholder' => __( '@yourcompany', 'wp-job-manager' ),
213
+ 'priority' => 5
214
  ),
215
  'company_logo' => array(
216
  'label' => __( 'Logo', 'wp-job-manager' ),
217
  'type' => 'file',
218
  'required' => false,
219
  'placeholder' => '',
220
+ 'priority' => 6,
221
  'allowed_mime_types' => array(
222
  'jpg' => 'image/jpeg',
223
  'gif' => 'image/gif',
238
  * @return array of data
239
  */
240
  protected static function get_posted_fields() {
241
+
242
  self::init_fields();
243
 
244
  $values = array();
245
 
246
+ foreach ( self::$fields as $group_key => $group_fields ) {
247
+ foreach ( $group_fields as $key => $field ) {
248
  // Get the value
249
  $field_type = str_replace( '-', '_', $field['type'] );
250
+
251
  if ( method_exists( __CLASS__, "get_posted_{$field_type}_field" ) ) {
252
  $values[ $group_key ][ $key ] = call_user_func( __CLASS__ . "::get_posted_{$field_type}_field", $key, $field );
253
  } else {
266
  * Get the value of a posted field
267
  * @param string $key
268
  * @param array $field
269
+ * @return string|array
270
  */
271
  protected static function get_posted_field( $key, $field ) {
272
+ if ( ! isset( $_POST[ $key ] ) ) {
273
+ return '';
274
+ }
275
+ if ( is_array( $_POST[ $key ] ) ) {
276
+ return array_map( 'sanitize_text_field', array_map( 'urldecode', stripslashes_deep( $_POST[ $key ] ) ) );
277
+ } else {
278
+ return sanitize_text_field( trim( urldecode( stripslashes( $_POST[ $key ] ) ) ) );
279
+ }
280
  }
281
 
282
  /**
286
  * @return array
287
  */
288
  protected static function get_posted_multiselect_field( $key, $field ) {
289
+ return isset( $_POST[ $key ] ) ? array_map( 'sanitize_text_field', $_POST[ $key ] ) : array();
290
  }
291
 
292
  /**
293
  * Get the value of a posted file field
294
  * @param string $key
295
  * @param array $field
296
+ * @return string|array
297
  */
298
  protected static function get_posted_file_field( $key, $field ) {
299
  $file = self::upload_file( $key, $field );
300
+
301
+ if ( ! $file ) {
302
  $file = self::get_posted_field( 'current_' . $key, $field );
303
+ } elseif ( is_array( $file ) ) {
304
+ $file = array_filter( array_merge( $file, (array) self::get_posted_field( 'current_' . $key, $field ) ) );
305
+ }
306
 
307
  return $file;
308
  }
327
  return self::get_posted_textarea_field( $key, $field );
328
  }
329
 
330
+ /**
331
+ * Get posted terms for the taxonomy
332
+ * @param string $key
333
+ * @param array $field
334
+ * @return array
335
+ */
336
+ protected static function get_posted_term_checklist_field( $key, $field ) {
337
+ if ( isset( $_POST[ 'tax_input' ] ) && isset( $_POST[ 'tax_input' ][ $field['taxonomy'] ] ) ) {
338
+ // Ids were posted
339
+ return array_map( 'absint', $_POST[ 'tax_input' ][ $field['taxonomy'] ] );
340
+ } else {
341
+ return array();
342
+ }
343
+ }
344
+
345
+ /**
346
+ * Get posted terms for the taxonomy
347
+ * @param string $key
348
+ * @param array $field
349
+ * @return int
350
+ */
351
+ protected static function get_posted_term_multiselect_field( $key, $field ) {
352
+ return isset( $_POST[ $key ] ) ? array_map( 'absint', $_POST[ $key ] ) : array();
353
+ }
354
+
355
+ /**
356
+ * Get posted terms for the taxonomy
357
+ * @param string $key
358
+ * @param array $field
359
+ * @return int
360
+ */
361
+ protected static function get_posted_term_select_field( $key, $field ) {
362
+ return ! empty( $_POST[ $key ] ) && $_POST[ $key ] > 0 ? absint( $_POST[ $key ] ) : '';
363
+ }
364
+
365
  /**
366
  * Validate the posted fields
367
  *
368
  * @return bool on success, WP_ERROR on failure
369
  */
370
  protected static function validate_fields( $values ) {
371
+ foreach ( self::$fields as $group_key => $group_fields ) {
372
+ foreach ( $group_fields as $key => $field ) {
373
  if ( $field['required'] && empty( $values[ $group_key ][ $key ] ) ) {
374
  return new WP_Error( 'validation-error', sprintf( __( '%s is a required field', 'wp-job-manager' ), $field['label'] ) );
375
  }
376
+ if ( ! empty( $field['taxonomy'] ) && in_array( $field['type'], array( 'term-checklist', 'term-select', 'term-multiselect' ) ) ) {
377
+ if ( is_array( $values[ $group_key ][ $key ] ) ) {
378
+ foreach ( $values[ $group_key ][ $key ] as $term ) {
379
+ if ( ! term_exists( $term, $field['taxonomy'] ) ) {
380
+ return new WP_Error( 'validation-error', sprintf( __( '%s is invalid', 'wp-job-manager' ), $field['label'] ) );
381
+ }
382
+ }
383
+ } elseif ( ! empty( $values[ $group_key ][ $key ] ) ) {
384
+ if ( ! term_exists( $values[ $group_key ][ $key ], $field['taxonomy'] ) ) {
385
+ return new WP_Error( 'validation-error', sprintf( __( '%s is invalid', 'wp-job-manager' ), $field['label'] ) );
386
+ }
387
+ }
388
+ }
389
  }
390
  }
391
 
433
  private static function job_types() {
434
  $options = array();
435
  $terms = get_job_listing_types();
436
+ foreach ( $terms as $term ) {
437
  $options[ $term->slug ] = $term->name;
438
+ }
439
  return $options;
440
  }
441
 
472
  // Load data if neccessary
473
  if ( ! empty( $_POST['edit_job'] ) && self::$job_id ) {
474
  $job = get_post( self::$job_id );
475
+ foreach ( self::$fields as $group_key => $group_fields ) {
476
+ foreach ( $group_fields as $key => $field ) {
477
  switch ( $key ) {
478
  case 'job_title' :
479
  self::$fields[ $group_key ][ $key ]['value'] = $job->post_title;
482
  self::$fields[ $group_key ][ $key ]['value'] = $job->post_content;
483
  break;
484
  case 'job_type' :
485
+ self::$fields[ $group_key ][ $key ]['value'] = current( wp_get_object_terms( $job->ID, 'job_listing_type', array( 'fields' => 'ids' ) ) );
486
  break;
487
  case 'job_category' :
488
+ self::$fields[ $group_key ][ $key ]['value'] = wp_get_object_terms( $job->ID, 'job_listing_category', array( 'fields' => 'ids' ) );
489
  break;
490
  default:
491
  self::$fields[ $group_key ][ $key ]['value'] = get_post_meta( $job->ID, '_' . $key, true );
521
  'action' => self::get_action(),
522
  'job_fields' => self::get_fields( 'job' ),
523
  'company_fields' => self::get_fields( 'company' ),
524
+ 'submit_button_text' => __( 'Preview &rarr;', 'wp-job-manager' )
525
  ) );
526
  }
527
 
530
  */
531
  public static function submit_handler() {
532
  try {
 
533
  // Init fields
534
  self::init_fields();
535
+
536
  // Get posted values
537
  $values = self::get_posted_fields();
538
 
549
  if ( ! is_user_logged_in() ) {
550
  $create_account = false;
551
 
552
+ if ( job_manager_enable_registration() && ! empty( $_POST['create_account_email'] ) ) {
553
  $create_account = wp_job_manager_create_account( $_POST['create_account_email'], get_option( 'job_manager_registration_role' ) );
554
+ }
555
 
556
+ if ( is_wp_error( $create_account ) ) {
557
  throw new Exception( $create_account->get_error_message() );
558
+ }
559
  }
560
 
561
+ if ( job_manager_user_requires_account() && ! is_user_logged_in() ) {
562
+ throw new Exception( __( 'You must be signed in to post a new listing.' ) );
563
+ }
564
 
565
  // Update the job
566
  self::save_job( $values['job']['job_title'], $values['job']['job_description'], self::$job_id ? '' : 'preview', $values );
583
  * @param string $status
584
  */
585
  protected static function save_job( $post_title, $post_content, $status = 'preview', $values = array() ) {
 
586
  $job_slug = array();
587
 
588
  // Prepend with company name
589
+ if ( ! empty( $values['company']['company_name'] ) ) {
590
  $job_slug[] = $values['company']['company_name'];
591
+ }
592
 
593
  // Prepend location
594
+ if ( ! empty( $values['job']['job_location'] ) ) {
595
  $job_slug[] = $values['job']['job_location'];
596
+ }
597
 
598
  // Prepend with job type
599
+ if ( ! empty( $values['job']['job_type'] ) ) {
600
  $job_slug[] = $values['job']['job_type'];
601
+ }
602
 
603
  $job_slug[] = $post_title;
604
 
610
  'comment_status' => 'closed'
611
  ), $post_title, $post_content, $status, $values );
612
 
613
+ if ( $status ) {
614
  $job_data['post_status'] = $status;
615
+ }
616
 
617
  if ( self::$job_id ) {
618
  $job_data['ID'] = self::$job_id;
628
  * @param array $values
629
  */
630
  protected static function update_job_data( $values ) {
631
+ // Set defaults
632
+ add_post_meta( self::$job_id, '_filled', 0, true );
633
+ add_post_meta( self::$job_id, '_featured', 0, true );
634
 
635
+ $maybe_attach = array();
636
+
637
+ // Loop fields and save meta and term data
638
+ foreach ( self::$fields as $group_key => $group_fields ) {
639
+ foreach ( $group_fields as $key => $field ) {
640
+ // Save taxonomies
641
+ if ( ! empty( $field['taxonomy'] ) ) {
642
+ if ( is_array( $values[ $group_key ][ $key ] ) ) {
643
+ wp_set_object_terms( self::$job_id, $values[ $group_key ][ $key ], $field['taxonomy'], false );
644
+ } else {
645
+ wp_set_object_terms( self::$job_id, array( $values[ $group_key ][ $key ] ), $field['taxonomy'], false );
646
+ }
647
+
648
+ // Save meta data
649
+ } else {
650
+ update_post_meta( self::$job_id, '_' . $key, $values[ $group_key ][ $key ] );
651
+ }
652
 
653
+ // Handle attachments
654
+ if ( 'file' === $field['type'] ) {
655
+ // Must be absolute
656
+ if ( is_array( $values[ $group_key ][ $key ] ) ) {
657
+ foreach ( $values[ $group_key ][ $key ] as $file_url ) {
658
+ if ( strstr( $file_url, WP_CONTENT_URL ) ) {
659
+ $maybe_attach[] = str_replace( WP_CONTENT_URL, WP_CONTENT_DIR, $file_url );
660
+ }
661
+ }
662
+ } else {
663
+ if ( strstr( $values[ $group_key ][ $key ], WP_CONTENT_URL ) ) {
664
+ $maybe_attach[] = str_replace( WP_CONTENT_URL, WP_CONTENT_DIR, $values[ $group_key ][ $key ] );
665
+ }
666
+ }
667
+ }
668
+ }
669
  }
670
 
671
+ // Handle attachments
672
+ if ( sizeof( $maybe_attach ) ) {
673
+ /** WordPress Administration Image API */
674
+ include_once( ABSPATH . 'wp-admin/includes/image.php' );
675
+
676
+ // Get attachments
677
+ $attachments = get_posts( 'post_parent=' . self::$job_id . '&post_type=attachment&fields=ids&post_mime_type=image&numberposts=-1' );
678
+ $attachment_urls = array();
679
+
680
+ // Loop attachments already attached to the job
681
+ foreach ( $attachments as $attachment_key => $attachment ) {
682
+ $attachment_urls[] = wp_get_attachment_url( $attachment );
683
+ }
684
+
685
+ foreach ( $maybe_attach as $attachment_url ) {
686
+ if ( ! in_array( $attachment_url, $attachment_urls ) ) {
687
+ $attachment = array(
688
+ 'post_title' => get_the_title( self::$job_id ),
689
+ 'post_content' => '',
690
+ 'post_status' => 'inherit',
691
+ 'post_parent' => self::$job_id,
692
+ 'guid' => $attachment_url
693
+ );
694
+
695
+ if ( $info = wp_check_filetype( $attachment_url ) ) {
696
+ $attachment['post_mime_type'] = $info['type'];
697
+ }
698
+
699
+ $attachment_id = wp_insert_attachment( $attachment, $attachment_url, self::$job_id );
700
+
701
+ if ( ! is_wp_error( $attachment_id ) ) {
702
+ wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $attachment_url ) );
703
+ }
704
+ }
705
+ }
706
+ }
707
 
708
  // And user meta to save time in future
709
  if ( is_user_logged_in() ) {
710
+ update_user_meta( get_current_user_id(), '_company_name', isset( $values['company']['company_name'] ) ? $values['company']['company_name'] : '' );
711
+ update_user_meta( get_current_user_id(), '_company_website', isset( $values['company']['company_name'] ) ? $values['company']['company_website'] : '' );
712
+ update_user_meta( get_current_user_id(), '_company_tagline', isset( $values['company']['company_name'] ) ? $values['company']['company_tagline'] : '' );
713
+ update_user_meta( get_current_user_id(), '_company_twitter', isset( $values['company']['company_name'] ) ? $values['company']['company_twitter'] : '' );
714
+ update_user_meta( get_current_user_id(), '_company_logo', isset( $values['company']['company_name'] ) ? $values['company']['company_logo'] : '' );
715
+ update_user_meta( get_current_user_id(), '_company_video', isset( $values['company']['company_video'] ) ? $values['company']['company_video'] : '' );
716
  }
717
 
718
  do_action( 'job_manager_update_job_data', self::$job_id, $values );
756
  * Preview Step Form handler
757
  */
758
  public static function preview_handler() {
759
+ if ( ! $_POST ) {
760
  return;
761
+ }
762
 
763
  // Edit = show submit form again
764
  if ( ! empty( $_POST['edit_job'] ) ) {
770
  $job = get_post( self::$job_id );
771
 
772
  if ( in_array( $job->post_status, array( 'preview', 'expired' ) ) ) {
773
+ // Reset expirey
774
+ delete_post_meta( $job->ID, '_job_expires' );
775
+
776
+ // Update job listing
777
  $update_job = array();
778
  $update_job['ID'] = $job->ID;
779
  $update_job['post_status'] = get_option( 'job_manager_submission_requires_approval' ) ? 'pending' : 'publish';
804
 
805
  /**
806
  * Upload a file
807
+ *
808
+ * @return string or array
809
  */
810
  public static function upload_file( $field_key, $field ) {
811
 
816
  include_once( ABSPATH . 'wp-admin/includes/media.php' );
817
 
818
  if ( isset( $_FILES[ $field_key ] ) && ! empty( $_FILES[ $field_key ] ) && ! empty( $_FILES[ $field_key ]['name'] ) ) {
819
+ $file = $_FILES[ $field_key ];
820
 
821
  if ( ! empty( $field['allowed_mime_types'] ) ) {
822
  $allowed_mime_types = $field['allowed_mime_types'];
824
  $allowed_mime_types = get_allowed_mime_types();
825
  }
826
 
827
+ if ( empty( $file['name'] ) ) {
828
+ return false;
829
+ }
830
+
831
+ if ( is_array( $file['name'] ) ) {
832
+ $file_urls = array();
833
 
834
+ foreach ( $file['name'] as $key => $value ) {
835
+ if ( ! empty( $file['name'][ $key ] ) ) {
836
 
837
+ if ( ! in_array( $file['type'][ $key ], $allowed_mime_types ) ) {
838
+ throw new Exception( sprintf( __( '"%s" (filetype %s) needs to be one of the following file types: %s', 'wp-job-manager' ), $field['label'], $file['type'][ $key ], implode( ', ', array_keys( $allowed_mime_types ) ) ) );
839
+ }
840
+
841
+ $upload_file = array(
842
+ 'name' => $file['name'][ $key ],
843
+ 'type' => $file['type'][ $key ],
844
+ 'tmp_name' => $file['tmp_name'][ $key ],
845
+ 'error' => $file['error'][ $key ],
846
+ 'size' => $file['size'][ $key ]
847
+ );
848
 
849
+ add_filter( 'upload_dir', array( __CLASS__, 'upload_dir' ) );
850
+ $upload = wp_handle_upload( $upload_file, array( 'test_form' => false ) );
851
+ remove_filter( 'upload_dir', array( __CLASS__, 'upload_dir' ) );
852
 
853
+ if ( ! empty( $upload['error'] ) ) {
854
+ throw new Exception( $upload['error'] );
855
+ }
856
+
857
+ $file_urls[] = $upload['url'];
858
+ }
859
+ }
860
+
861
+ return $file_urls;
862
  } else {
863
+ if ( ! in_array( $file['type'], $allowed_mime_types ) ) {
864
+ throw new Exception( sprintf( __( '"%s" (filetype %s) needs to be one of the following file types: %s', 'wp-job-manager' ), $field['label'], $file['type'], implode( ', ', array_keys( $allowed_mime_types ) ) ) );
865
+ }
866
+
867
+ add_filter( 'upload_dir', array( __CLASS__, 'upload_dir' ) );
868
+ $upload = wp_handle_upload( $file, array( 'test_form' => false ) );
869
+ remove_filter( 'upload_dir', array( __CLASS__, 'upload_dir' ) );
870
+
871
+ if ( ! empty( $upload['error'] ) ) {
872
+ throw new Exception( $upload['error'] );
873
+ } else {
874
+ return $upload['url'];
875
+ }
876
  }
877
  }
878
  }
881
  * Filter the upload directory
882
  */
883
  public static function upload_dir( $pathdata ) {
884
+ if ( empty( $pathdata['subdir'] ) ) {
885
+ $pathdata['path'] = $pathdata['path'] . '/job_listings';
886
+ $pathdata['url'] = $pathdata['url']. '/job_listings';
887
+ $pathdata['subdir'] = '/job_listings';
888
+ } else {
889
+ $new_subdir = '/job_listings' . $pathdata['subdir'];
890
+ $pathdata['path'] = str_replace( $pathdata['subdir'], $new_subdir, $pathdata['path'] );
891
+ $pathdata['url'] = str_replace( $pathdata['subdir'], $new_subdir, $pathdata['url'] );
892
+ $pathdata['subdir'] = str_replace( $pathdata['subdir'], $new_subdir, $pathdata['subdir'] );
893
+ }
894
  return $pathdata;
895
  }
896
  }
languages/wp-job-manager-it_IT.mo CHANGED
Binary file
languages/wp-job-manager-it_IT.po CHANGED
@@ -2,13 +2,14 @@
2
  # This file is distributed under the same license as the WP Job Manager package.
3
  # Translators:
4
  # paletta, 2014
 
5
  msgid ""
6
  msgstr ""
7
  "Project-Id-Version: WP Job Manager\n"
8
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-job-manager\n"
9
  "POT-Creation-Date: 2014-05-11 11:00:29+00:00\n"
10
- "PO-Revision-Date: 2014-05-12 08:21+0000\n"
11
- "Last-Translator: Mike Jolley <mike.jolley@me.com>\n"
12
  "Language-Team: Italian (Italy) (http://www.transifex.com/projects/p/wp-job-manager/language/it_IT/)\n"
13
  "MIME-Version: 1.0\n"
14
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -43,7 +44,7 @@ msgstr "Approva offerta"
43
  #: includes/admin/class-wp-job-manager-cpt.php:47
44
  #: includes/admin/class-wp-job-manager-cpt.php:48
45
  msgid "Expire Jobs"
46
- msgstr ""
47
 
48
  #: includes/admin/class-wp-job-manager-cpt.php:135
49
  #: includes/admin/class-wp-job-manager-cpt.php:137
@@ -53,7 +54,7 @@ msgstr "%s approvato"
53
  #: includes/admin/class-wp-job-manager-cpt.php:155
54
  #: includes/admin/class-wp-job-manager-cpt.php:157
55
  msgid "%s expired"
56
- msgstr ""
57
 
58
  #: includes/admin/class-wp-job-manager-cpt.php:200
59
  msgid "Select a category"
@@ -290,7 +291,7 @@ msgstr "Per quanti <strong>giorni</strong> sarà valida l'offerta? Se non compil
290
 
291
  #: includes/admin/class-wp-job-manager-settings.php:120
292
  msgid "Application method"
293
- msgstr ""
294
 
295
  #: includes/admin/class-wp-job-manager-settings.php:121
296
  msgid "Choose what employers can use for their job application method."
@@ -298,15 +299,15 @@ msgstr ""
298
 
299
  #: includes/admin/class-wp-job-manager-settings.php:124
300
  msgid "Email address or website URL"
301
- msgstr ""
302
 
303
  #: includes/admin/class-wp-job-manager-settings.php:125
304
  msgid "Email addresses only"
305
- msgstr ""
306
 
307
  #: includes/admin/class-wp-job-manager-settings.php:126
308
  msgid "Website URLs only"
309
- msgstr ""
310
 
311
  #: includes/admin/class-wp-job-manager-settings.php:132
312
  msgid "Submit Page Slug"
@@ -404,7 +405,7 @@ msgstr "aaaa-mm-gg"
404
 
405
  #: includes/admin/class-wp-job-manager-writepanels.php:70
406
  msgid "Posted by"
407
- msgstr ""
408
 
409
  #: includes/admin/class-wp-job-manager-writepanels.php:83
410
  msgid "Job Listing Data"
@@ -450,7 +451,7 @@ msgstr ""
450
 
451
  #: includes/class-wp-job-manager-install.php:39
452
  msgid "Employer"
453
- msgstr ""
454
 
455
  #: includes/class-wp-job-manager-post-types.php:48
456
  msgid "Job Category"
@@ -660,7 +661,7 @@ msgstr "Fatto"
660
 
661
  #: includes/forms/class-wp-job-manager-form-submit-job.php:107
662
  msgid "Application email"
663
- msgstr ""
664
 
665
  #: includes/forms/class-wp-job-manager-form-submit-job.php:108
666
  msgid "you@yourdomain.com"
@@ -668,7 +669,7 @@ msgstr ""
668
 
669
  #: includes/forms/class-wp-job-manager-form-submit-job.php:111
670
  msgid "Application URL"
671
- msgstr ""
672
 
673
  #: includes/forms/class-wp-job-manager-form-submit-job.php:112
674
  #: includes/forms/class-wp-job-manager-form-submit-job.php:182
@@ -730,15 +731,15 @@ msgstr "%s è un campo obbligatorio"
730
 
731
  #: includes/forms/class-wp-job-manager-form-submit-job.php:325
732
  msgid "Please enter a valid application email address"
733
- msgstr ""
734
 
735
  #: includes/forms/class-wp-job-manager-form-submit-job.php:330
736
  msgid "Please enter a valid application URL"
737
- msgstr ""
738
 
739
  #: includes/forms/class-wp-job-manager-form-submit-job.php:335
740
  msgid "Please enter a valid application email address or URL"
741
- msgstr ""
742
 
743
  #: includes/forms/class-wp-job-manager-form-submit-job.php:456
744
  msgid "Preview job listing &rarr;"
@@ -784,7 +785,7 @@ msgstr "Iscriviti"
784
  msgid ""
785
  "If you don&rsquo;t have an account you can %screate one below by entering "
786
  "your email address. A password will be automatically emailed to you."
787
- msgstr ""
788
 
789
  #: templates/account-signin.php:27
790
  msgid "optionally"
@@ -847,7 +848,7 @@ msgstr "Candidati tramite webmail:"
847
  msgid ""
848
  "To apply for this job please visit the following URL: <a href=\"%1$s\" "
849
  "target=\"_blank\">%1$s &rarr;</a>"
850
- msgstr ""
851
 
852
  #: templates/job-application.php:5
853
  msgid "Apply for job"
2
  # This file is distributed under the same license as the WP Job Manager package.
3
  # Translators:
4
  # paletta, 2014
5
+ # sinnamora <pinnamail@yahoo.com>, 2014
6
  msgid ""
7
  msgstr ""
8
  "Project-Id-Version: WP Job Manager\n"
9
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-job-manager\n"
10
  "POT-Creation-Date: 2014-05-11 11:00:29+00:00\n"
11
+ "PO-Revision-Date: 2014-08-13 00:39+0000\n"
12
+ "Last-Translator: sinnamora <pinnamail@yahoo.com>\n"
13
  "Language-Team: Italian (Italy) (http://www.transifex.com/projects/p/wp-job-manager/language/it_IT/)\n"
14
  "MIME-Version: 1.0\n"
15
  "Content-Type: text/plain; charset=UTF-8\n"
44
  #: includes/admin/class-wp-job-manager-cpt.php:47
45
  #: includes/admin/class-wp-job-manager-cpt.php:48
46
  msgid "Expire Jobs"
47
+ msgstr "Offerte scadute"
48
 
49
  #: includes/admin/class-wp-job-manager-cpt.php:135
50
  #: includes/admin/class-wp-job-manager-cpt.php:137
54
  #: includes/admin/class-wp-job-manager-cpt.php:155
55
  #: includes/admin/class-wp-job-manager-cpt.php:157
56
  msgid "%s expired"
57
+ msgstr "%s scaduta"
58
 
59
  #: includes/admin/class-wp-job-manager-cpt.php:200
60
  msgid "Select a category"
291
 
292
  #: includes/admin/class-wp-job-manager-settings.php:120
293
  msgid "Application method"
294
+ msgstr "Modalità di candidatura"
295
 
296
  #: includes/admin/class-wp-job-manager-settings.php:121
297
  msgid "Choose what employers can use for their job application method."
299
 
300
  #: includes/admin/class-wp-job-manager-settings.php:124
301
  msgid "Email address or website URL"
302
+ msgstr "Indirizzo e-mail o Web"
303
 
304
  #: includes/admin/class-wp-job-manager-settings.php:125
305
  msgid "Email addresses only"
306
+ msgstr "Solo indirizzo e-mail"
307
 
308
  #: includes/admin/class-wp-job-manager-settings.php:126
309
  msgid "Website URLs only"
310
+ msgstr "Solo indirizzo Web"
311
 
312
  #: includes/admin/class-wp-job-manager-settings.php:132
313
  msgid "Submit Page Slug"
405
 
406
  #: includes/admin/class-wp-job-manager-writepanels.php:70
407
  msgid "Posted by"
408
+ msgstr "Inviata da"
409
 
410
  #: includes/admin/class-wp-job-manager-writepanels.php:83
411
  msgid "Job Listing Data"
451
 
452
  #: includes/class-wp-job-manager-install.php:39
453
  msgid "Employer"
454
+ msgstr "Candidato"
455
 
456
  #: includes/class-wp-job-manager-post-types.php:48
457
  msgid "Job Category"
661
 
662
  #: includes/forms/class-wp-job-manager-form-submit-job.php:107
663
  msgid "Application email"
664
+ msgstr "Email di candidatura"
665
 
666
  #: includes/forms/class-wp-job-manager-form-submit-job.php:108
667
  msgid "you@yourdomain.com"
669
 
670
  #: includes/forms/class-wp-job-manager-form-submit-job.php:111
671
  msgid "Application URL"
672
+ msgstr "Indirizzo Web per le candidature"
673
 
674
  #: includes/forms/class-wp-job-manager-form-submit-job.php:112
675
  #: includes/forms/class-wp-job-manager-form-submit-job.php:182
731
 
732
  #: includes/forms/class-wp-job-manager-form-submit-job.php:325
733
  msgid "Please enter a valid application email address"
734
+ msgstr "Inserire un indirizzo email valido"
735
 
736
  #: includes/forms/class-wp-job-manager-form-submit-job.php:330
737
  msgid "Please enter a valid application URL"
738
+ msgstr "Inserire un indirizzo web valido"
739
 
740
  #: includes/forms/class-wp-job-manager-form-submit-job.php:335
741
  msgid "Please enter a valid application email address or URL"
742
+ msgstr "Inserisci l'indirizzo email o URL del sito"
743
 
744
  #: includes/forms/class-wp-job-manager-form-submit-job.php:456
745
  msgid "Preview job listing &rarr;"
785
  msgid ""
786
  "If you don&rsquo;t have an account you can %screate one below by entering "
787
  "your email address. A password will be automatically emailed to you."
788
+ msgstr "Se non hai un profilo puoi crearlo %s qui sotto inserendo il tuo indirizzo email. La password ti sarà inviata automaticamente all'indirizzo inserito. "
789
 
790
  #: templates/account-signin.php:27
791
  msgid "optionally"
848
  msgid ""
849
  "To apply for this job please visit the following URL: <a href=\"%1$s\" "
850
  "target=\"_blank\">%1$s &rarr;</a>"
851
+ msgstr "Per candidarsi clicca qui: <a href=\"%1$s\" target=\"_blank\">%1$s &rarr;</a>"
852
 
853
  #: templates/job-application.php:5
854
  msgid "Apply for job"
languages/wp-job-manager-ko_KR.mo ADDED
Binary file
languages/wp-job-manager-ko_KR.po ADDED
@@ -0,0 +1,984 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2014 WP Job Manager
2
+ # This file is distributed under the same license as the WP Job Manager package.
3
+ # Translators:
4
+ # Eugine Kim <martian36@naver.com>, 2014
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: WP Job Manager\n"
8
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-job-manager\n"
9
+ "POT-Creation-Date: 2014-05-11 11:00:29+00:00\n"
10
+ "PO-Revision-Date: 2014-05-12 08:21+0000\n"
11
+ "Last-Translator: Mike Jolley <mike.jolley@me.com>\n"
12
+ "Language-Team: Korean (Korea) (http://www.transifex.com/projects/p/wp-job-manager/language/ko_KR/)\n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=UTF-8\n"
15
+ "Content-Transfer-Encoding: 8bit\n"
16
+ "Language: ko_KR\n"
17
+ "Plural-Forms: nplurals=1; plural=0;\n"
18
+
19
+ #: includes/admin/class-wp-job-manager-addons.php:50
20
+ #: includes/admin/class-wp-job-manager-admin.php:60
21
+ msgid "WP Job Manager Add-ons"
22
+ msgstr "WP Job Manager Add-ons"
23
+
24
+ #: includes/admin/class-wp-job-manager-addons.php:51
25
+ msgid ""
26
+ "Buying multiple add-ons? <a href=\"%s\">Check out the core add-on bundle "
27
+ "&rarr;</a>"
28
+ msgstr ""
29
+
30
+ #: includes/admin/class-wp-job-manager-admin.php:57
31
+ msgid "Settings"
32
+ msgstr "설정"
33
+
34
+ #: includes/admin/class-wp-job-manager-admin.php:60
35
+ msgid "Add-ons"
36
+ msgstr "애드온"
37
+
38
+ #: includes/admin/class-wp-job-manager-cpt.php:44
39
+ #: includes/admin/class-wp-job-manager-cpt.php:45
40
+ msgid "Approve Jobs"
41
+ msgstr "직업 승인"
42
+
43
+ #: includes/admin/class-wp-job-manager-cpt.php:47
44
+ #: includes/admin/class-wp-job-manager-cpt.php:48
45
+ msgid "Expire Jobs"
46
+ msgstr ""
47
+
48
+ #: includes/admin/class-wp-job-manager-cpt.php:135
49
+ #: includes/admin/class-wp-job-manager-cpt.php:137
50
+ msgid "%s approved"
51
+ msgstr "%s 승인됨"
52
+
53
+ #: includes/admin/class-wp-job-manager-cpt.php:155
54
+ #: includes/admin/class-wp-job-manager-cpt.php:157
55
+ msgid "%s expired"
56
+ msgstr ""
57
+
58
+ #: includes/admin/class-wp-job-manager-cpt.php:200
59
+ msgid "Select a category"
60
+ msgstr "카테고리 선택"
61
+
62
+ #: includes/admin/class-wp-job-manager-cpt.php:233
63
+ msgid "Job position title"
64
+ msgstr "직업 지위 타이틀"
65
+
66
+ #: includes/admin/class-wp-job-manager-cpt.php:249
67
+ msgid "Job listing updated. <a href=\"%s\">View Job</a>"
68
+ msgstr "직업 목록 업데이트 됨. <a href=\"%s\">직업 보기</a>"
69
+
70
+ #: includes/admin/class-wp-job-manager-cpt.php:250
71
+ msgid "Custom field updated."
72
+ msgstr ""
73
+
74
+ #: includes/admin/class-wp-job-manager-cpt.php:251
75
+ msgid "Custom field deleted."
76
+ msgstr ""
77
+
78
+ #: includes/admin/class-wp-job-manager-cpt.php:252
79
+ msgid "Job listing updated."
80
+ msgstr ""
81
+
82
+ #: includes/admin/class-wp-job-manager-cpt.php:253
83
+ msgid "Job listing restored to revision from %s"
84
+ msgstr ""
85
+
86
+ #: includes/admin/class-wp-job-manager-cpt.php:254
87
+ msgid "Job listing published. <a href=\"%s\">View Job</a>"
88
+ msgstr ""
89
+
90
+ #: includes/admin/class-wp-job-manager-cpt.php:255
91
+ msgid "Job listing saved."
92
+ msgstr ""
93
+
94
+ #: includes/admin/class-wp-job-manager-cpt.php:256
95
+ msgid "Job listing submitted. <a target=\"_blank\" href=\"%s\">Preview Job</a>"
96
+ msgstr ""
97
+
98
+ #: includes/admin/class-wp-job-manager-cpt.php:257
99
+ msgid ""
100
+ "Job listing scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" "
101
+ "href=\"%2$s\">Preview Job</a>"
102
+ msgstr ""
103
+
104
+ #: includes/admin/class-wp-job-manager-cpt.php:258
105
+ msgid "M j, Y @ G:i"
106
+ msgstr ""
107
+
108
+ #: includes/admin/class-wp-job-manager-cpt.php:259
109
+ msgid "Job listing draft updated. <a target=\"_blank\" href=\"%s\">Preview Job</a>"
110
+ msgstr ""
111
+
112
+ #: includes/admin/class-wp-job-manager-cpt.php:278
113
+ msgid "Type"
114
+ msgstr ""
115
+
116
+ #: includes/admin/class-wp-job-manager-cpt.php:279
117
+ msgid "Position"
118
+ msgstr ""
119
+
120
+ #: includes/admin/class-wp-job-manager-cpt.php:280
121
+ msgid "Posted"
122
+ msgstr ""
123
+
124
+ #: includes/admin/class-wp-job-manager-cpt.php:281
125
+ #: templates/job-dashboard.php:9
126
+ msgid "Expires"
127
+ msgstr ""
128
+
129
+ #: includes/admin/class-wp-job-manager-cpt.php:283
130
+ msgid "Categories"
131
+ msgstr ""
132
+
133
+ #: includes/admin/class-wp-job-manager-cpt.php:284
134
+ msgid "Featured?"
135
+ msgstr ""
136
+
137
+ #: includes/admin/class-wp-job-manager-cpt.php:285
138
+ #: templates/job-dashboard.php:10
139
+ msgid "Filled?"
140
+ msgstr ""
141
+
142
+ #: includes/admin/class-wp-job-manager-cpt.php:286
143
+ #: templates/job-dashboard.php:8
144
+ msgid "Status"
145
+ msgstr ""
146
+
147
+ #: includes/admin/class-wp-job-manager-cpt.php:287
148
+ msgid "Actions"
149
+ msgstr ""
150
+
151
+ #: includes/admin/class-wp-job-manager-cpt.php:310
152
+ msgid "Job ID: %d"
153
+ msgstr ""
154
+
155
+ #: includes/admin/class-wp-job-manager-cpt.php:336
156
+ #: includes/admin/class-wp-job-manager-cpt.php:341
157
+ msgid "M j, Y"
158
+ msgstr ""
159
+
160
+ #: includes/admin/class-wp-job-manager-cpt.php:337
161
+ msgid "by a guest"
162
+ msgstr ""
163
+
164
+ #: includes/admin/class-wp-job-manager-cpt.php:337
165
+ msgid "by %s"
166
+ msgstr ""
167
+
168
+ #: includes/admin/class-wp-job-manager-cpt.php:354
169
+ msgid "Approve"
170
+ msgstr ""
171
+
172
+ #: includes/admin/class-wp-job-manager-cpt.php:361
173
+ msgid "View"
174
+ msgstr ""
175
+
176
+ #: includes/admin/class-wp-job-manager-cpt.php:366
177
+ #: includes/class-wp-job-manager-post-types.php:162
178
+ #: templates/job-dashboard.php:33
179
+ msgid "Edit"
180
+ msgstr ""
181
+
182
+ #: includes/admin/class-wp-job-manager-cpt.php:371
183
+ #: templates/job-dashboard.php:43
184
+ msgid "Delete"
185
+ msgstr ""
186
+
187
+ #: includes/admin/class-wp-job-manager-settings.php:42
188
+ #: includes/class-wp-job-manager-post-types.php:138
189
+ #: includes/class-wp-job-manager-post-types.php:228
190
+ msgid "Job Listings"
191
+ msgstr ""
192
+
193
+ #: includes/admin/class-wp-job-manager-settings.php:48
194
+ msgid "Jobs per page"
195
+ msgstr ""
196
+
197
+ #: includes/admin/class-wp-job-manager-settings.php:49
198
+ msgid "How many jobs should be shown per page by default?"
199
+ msgstr ""
200
+
201
+ #: includes/admin/class-wp-job-manager-settings.php:55
202
+ msgid "Filled positions"
203
+ msgstr ""
204
+
205
+ #: includes/admin/class-wp-job-manager-settings.php:56
206
+ msgid "Hide filled positions"
207
+ msgstr ""
208
+
209
+ #: includes/admin/class-wp-job-manager-settings.php:57
210
+ msgid "If enabled, filled positions will be hidden from the job list."
211
+ msgstr ""
212
+
213
+ #: includes/admin/class-wp-job-manager-settings.php:64
214
+ msgid "Job categories"
215
+ msgstr ""
216
+
217
+ #: includes/admin/class-wp-job-manager-settings.php:65
218
+ msgid "Enable job categories"
219
+ msgstr ""
220
+
221
+ #: includes/admin/class-wp-job-manager-settings.php:66
222
+ msgid ""
223
+ "Choose whether to enable job categories. Categories must be setup by an "
224
+ "admin for users to choose during job submission."
225
+ msgstr ""
226
+
227
+ #: includes/admin/class-wp-job-manager-settings.php:73
228
+ msgid "Job Submission"
229
+ msgstr ""
230
+
231
+ #: includes/admin/class-wp-job-manager-settings.php:78
232
+ msgid "Account creation"
233
+ msgstr ""
234
+
235
+ #: includes/admin/class-wp-job-manager-settings.php:79
236
+ msgid "Allow account creation"
237
+ msgstr ""
238
+
239
+ #: includes/admin/class-wp-job-manager-settings.php:80
240
+ msgid ""
241
+ "If enabled, non-logged in users will be able to create an account by "
242
+ "entering their email address on the job submission form."
243
+ msgstr ""
244
+
245
+ #: includes/admin/class-wp-job-manager-settings.php:87
246
+ msgid "Account Role"
247
+ msgstr ""
248
+
249
+ #: includes/admin/class-wp-job-manager-settings.php:88
250
+ msgid ""
251
+ "If you enable registration on your job submission form, choose a role for "
252
+ "the new user."
253
+ msgstr ""
254
+
255
+ #: includes/admin/class-wp-job-manager-settings.php:95
256
+ msgid "Account required"
257
+ msgstr ""
258
+
259
+ #: includes/admin/class-wp-job-manager-settings.php:96
260
+ msgid "Job submission requires an account"
261
+ msgstr ""
262
+
263
+ #: includes/admin/class-wp-job-manager-settings.php:97
264
+ msgid ""
265
+ "If disabled, non-logged in users will be able to submit job listings without"
266
+ " creating an account."
267
+ msgstr ""
268
+
269
+ #: includes/admin/class-wp-job-manager-settings.php:104
270
+ msgid "Approval Required"
271
+ msgstr ""
272
+
273
+ #: includes/admin/class-wp-job-manager-settings.php:105
274
+ msgid "New submissions require admin approval"
275
+ msgstr ""
276
+
277
+ #: includes/admin/class-wp-job-manager-settings.php:106
278
+ msgid "If enabled, new submissions will be inactive, pending admin approval."
279
+ msgstr ""
280
+
281
+ #: includes/admin/class-wp-job-manager-settings.php:113
282
+ msgid "Listing duration"
283
+ msgstr ""
284
+
285
+ #: includes/admin/class-wp-job-manager-settings.php:114
286
+ msgid ""
287
+ "How many <strong>days</strong> listings are live before expiring. Can be "
288
+ "left blank to never expire."
289
+ msgstr ""
290
+
291
+ #: includes/admin/class-wp-job-manager-settings.php:120
292
+ msgid "Application method"
293
+ msgstr ""
294
+
295
+ #: includes/admin/class-wp-job-manager-settings.php:121
296
+ msgid "Choose what employers can use for their job application method."
297
+ msgstr ""
298
+
299
+ #: includes/admin/class-wp-job-manager-settings.php:124
300
+ msgid "Email address or website URL"
301
+ msgstr ""
302
+
303
+ #: includes/admin/class-wp-job-manager-settings.php:125
304
+ msgid "Email addresses only"
305
+ msgstr ""
306
+
307
+ #: includes/admin/class-wp-job-manager-settings.php:126
308
+ msgid "Website URLs only"
309
+ msgstr ""
310
+
311
+ #: includes/admin/class-wp-job-manager-settings.php:132
312
+ msgid "Submit Page Slug"
313
+ msgstr ""
314
+
315
+ #: includes/admin/class-wp-job-manager-settings.php:133
316
+ msgid ""
317
+ "Enter the slug of the page where you have placed the [submit_job_form] "
318
+ "shortcode. This lets the plugin know where the form is located."
319
+ msgstr ""
320
+
321
+ #: includes/admin/class-wp-job-manager-settings.php:185
322
+ msgid "Settings successfully saved"
323
+ msgstr ""
324
+
325
+ #: includes/admin/class-wp-job-manager-settings.php:264
326
+ msgid "Save Changes"
327
+ msgstr ""
328
+
329
+ #: includes/admin/class-wp-job-manager-writepanels.php:27
330
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:130
331
+ msgid "Job location"
332
+ msgstr ""
333
+
334
+ #: includes/admin/class-wp-job-manager-writepanels.php:28
335
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:134
336
+ msgid "e.g. \"London, UK\", \"New York\", \"Houston, TX\""
337
+ msgstr ""
338
+
339
+ #: includes/admin/class-wp-job-manager-writepanels.php:29
340
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:131
341
+ msgid ""
342
+ "Leave this blank if the job can be done from anywhere (i.e. telecommuting)"
343
+ msgstr ""
344
+
345
+ #: includes/admin/class-wp-job-manager-writepanels.php:32
346
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:115
347
+ msgid "Application email/URL"
348
+ msgstr ""
349
+
350
+ #: includes/admin/class-wp-job-manager-writepanels.php:33
351
+ msgid "URL or email which applicants use to apply"
352
+ msgstr ""
353
+
354
+ #: includes/admin/class-wp-job-manager-writepanels.php:36
355
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:172
356
+ msgid "Company name"
357
+ msgstr ""
358
+
359
+ #: includes/admin/class-wp-job-manager-writepanels.php:40
360
+ msgid "Company website"
361
+ msgstr ""
362
+
363
+ #: includes/admin/class-wp-job-manager-writepanels.php:44
364
+ msgid "Company tagline"
365
+ msgstr ""
366
+
367
+ #: includes/admin/class-wp-job-manager-writepanels.php:45
368
+ msgid "Brief description about the company"
369
+ msgstr ""
370
+
371
+ #: includes/admin/class-wp-job-manager-writepanels.php:48
372
+ msgid "Company Twitter"
373
+ msgstr ""
374
+
375
+ #: includes/admin/class-wp-job-manager-writepanels.php:52
376
+ msgid "Company logo"
377
+ msgstr ""
378
+
379
+ #: includes/admin/class-wp-job-manager-writepanels.php:53
380
+ msgid "URL to the company logo"
381
+ msgstr ""
382
+
383
+ #: includes/admin/class-wp-job-manager-writepanels.php:57
384
+ msgid "Position filled?"
385
+ msgstr ""
386
+
387
+ #: includes/admin/class-wp-job-manager-writepanels.php:61
388
+ msgid "Feature this job listing?"
389
+ msgstr ""
390
+
391
+ #: includes/admin/class-wp-job-manager-writepanels.php:63
392
+ msgid ""
393
+ "Featured listings will be sticky during searches, and can be styled "
394
+ "differently."
395
+ msgstr ""
396
+
397
+ #: includes/admin/class-wp-job-manager-writepanels.php:66
398
+ msgid "Job Expires"
399
+ msgstr ""
400
+
401
+ #: includes/admin/class-wp-job-manager-writepanels.php:67
402
+ msgid "yyyy-mm-dd"
403
+ msgstr ""
404
+
405
+ #: includes/admin/class-wp-job-manager-writepanels.php:70
406
+ msgid "Posted by"
407
+ msgstr ""
408
+
409
+ #: includes/admin/class-wp-job-manager-writepanels.php:83
410
+ msgid "Job Listing Data"
411
+ msgstr ""
412
+
413
+ #: includes/admin/class-wp-job-manager-writepanels.php:101
414
+ msgid "Use file"
415
+ msgstr ""
416
+
417
+ #: includes/admin/class-wp-job-manager-writepanels.php:101
418
+ msgid "Upload"
419
+ msgstr ""
420
+
421
+ #: includes/admin/class-wp-job-manager-writepanels.php:269
422
+ msgid "Guest user"
423
+ msgstr ""
424
+
425
+ #: includes/class-wp-job-manager-ajax.php:111
426
+ msgid "Showing %s&ldquo;%s&rdquo; %sjobs"
427
+ msgstr ""
428
+
429
+ #: includes/class-wp-job-manager-ajax.php:113
430
+ msgid "Showing all %s%sjobs"
431
+ msgstr ""
432
+
433
+ #: includes/class-wp-job-manager-ajax.php:116
434
+ msgid "located in &ldquo;%s&rdquo;"
435
+ msgstr ""
436
+
437
+ #: includes/class-wp-job-manager-geocode.php:139
438
+ msgid "No results found"
439
+ msgstr ""
440
+
441
+ #: includes/class-wp-job-manager-geocode.php:143
442
+ msgid "Query limit reached"
443
+ msgstr ""
444
+
445
+ #: includes/class-wp-job-manager-geocode.php:149
446
+ #: includes/class-wp-job-manager-geocode.php:153
447
+ #: includes/class-wp-job-manager-geocode.php:157
448
+ msgid "Geocoding error"
449
+ msgstr ""
450
+
451
+ #: includes/class-wp-job-manager-install.php:39
452
+ msgid "Employer"
453
+ msgstr ""
454
+
455
+ #: includes/class-wp-job-manager-post-types.php:48
456
+ msgid "Job Category"
457
+ msgstr ""
458
+
459
+ #: includes/class-wp-job-manager-post-types.php:49
460
+ msgid "Job Categories"
461
+ msgstr ""
462
+
463
+ #: includes/class-wp-job-manager-post-types.php:53
464
+ msgctxt "Job category slug - resave permalinks after changing this"
465
+ msgid "job-category"
466
+ msgstr ""
467
+
468
+ #: includes/class-wp-job-manager-post-types.php:70
469
+ #: includes/class-wp-job-manager-post-types.php:113
470
+ #: includes/class-wp-job-manager-post-types.php:167
471
+ msgid "Search %s"
472
+ msgstr ""
473
+
474
+ #: includes/class-wp-job-manager-post-types.php:71
475
+ #: includes/class-wp-job-manager-post-types.php:114
476
+ #: includes/class-wp-job-manager-post-types.php:159
477
+ msgid "All %s"
478
+ msgstr ""
479
+
480
+ #: includes/class-wp-job-manager-post-types.php:72
481
+ #: includes/class-wp-job-manager-post-types.php:115
482
+ #: includes/class-wp-job-manager-post-types.php:170
483
+ msgid "Parent %s"
484
+ msgstr ""
485
+
486
+ #: includes/class-wp-job-manager-post-types.php:73
487
+ #: includes/class-wp-job-manager-post-types.php:116
488
+ msgid "Parent %s:"
489
+ msgstr ""
490
+
491
+ #: includes/class-wp-job-manager-post-types.php:74
492
+ #: includes/class-wp-job-manager-post-types.php:117
493
+ #: includes/class-wp-job-manager-post-types.php:163
494
+ msgid "Edit %s"
495
+ msgstr ""
496
+
497
+ #: includes/class-wp-job-manager-post-types.php:75
498
+ #: includes/class-wp-job-manager-post-types.php:118
499
+ msgid "Update %s"
500
+ msgstr ""
501
+
502
+ #: includes/class-wp-job-manager-post-types.php:76
503
+ #: includes/class-wp-job-manager-post-types.php:119
504
+ msgid "Add New %s"
505
+ msgstr ""
506
+
507
+ #: includes/class-wp-job-manager-post-types.php:77
508
+ #: includes/class-wp-job-manager-post-types.php:120
509
+ msgid "New %s Name"
510
+ msgstr ""
511
+
512
+ #: includes/class-wp-job-manager-post-types.php:92
513
+ msgid "Job Type"
514
+ msgstr ""
515
+
516
+ #: includes/class-wp-job-manager-post-types.php:93
517
+ msgid "Job Types"
518
+ msgstr ""
519
+
520
+ #: includes/class-wp-job-manager-post-types.php:97
521
+ msgctxt "Job type slug - resave permalinks after changing this"
522
+ msgid "job-type"
523
+ msgstr ""
524
+
525
+ #: includes/class-wp-job-manager-post-types.php:137
526
+ msgid "Job Listing"
527
+ msgstr ""
528
+
529
+ #: includes/class-wp-job-manager-post-types.php:141
530
+ msgctxt "Post type archive slug - resave permalinks after changing this"
531
+ msgid "jobs"
532
+ msgstr ""
533
+
534
+ #: includes/class-wp-job-manager-post-types.php:147
535
+ msgctxt "Job permalink - resave permalinks after changing this"
536
+ msgid "job"
537
+ msgstr ""
538
+
539
+ #: includes/class-wp-job-manager-post-types.php:160
540
+ msgid "Add New"
541
+ msgstr ""
542
+
543
+ #: includes/class-wp-job-manager-post-types.php:161
544
+ msgid "Add %s"
545
+ msgstr ""
546
+
547
+ #: includes/class-wp-job-manager-post-types.php:164
548
+ msgid "New %s"
549
+ msgstr ""
550
+
551
+ #: includes/class-wp-job-manager-post-types.php:165
552
+ #: includes/class-wp-job-manager-post-types.php:166
553
+ msgid "View %s"
554
+ msgstr ""
555
+
556
+ #: includes/class-wp-job-manager-post-types.php:168
557
+ msgid "No %s found"
558
+ msgstr ""
559
+
560
+ #: includes/class-wp-job-manager-post-types.php:169
561
+ msgid "No %s found in trash"
562
+ msgstr ""
563
+
564
+ #: includes/class-wp-job-manager-post-types.php:172
565
+ msgid "This is where you can create and manage job listings."
566
+ msgstr ""
567
+
568
+ #: includes/class-wp-job-manager-post-types.php:207
569
+ msgctxt "job_listing"
570
+ msgid "Expired"
571
+ msgstr ""
572
+
573
+ #: includes/class-wp-job-manager-post-types.php:212
574
+ msgid "Expired <span class=\"count\">(%s)</span>"
575
+ msgid_plural "Expired <span class=\"count\">(%s)</span>"
576
+ msgstr[0] ""
577
+
578
+ #: includes/class-wp-job-manager-shortcodes.php:61
579
+ msgid "Invalid Job ID"
580
+ msgstr ""
581
+
582
+ #: includes/class-wp-job-manager-shortcodes.php:67
583
+ msgid "This job is already filled"
584
+ msgstr ""
585
+
586
+ #: includes/class-wp-job-manager-shortcodes.php:73
587
+ msgid "%s has been filled"
588
+ msgstr ""
589
+
590
+ #: includes/class-wp-job-manager-shortcodes.php:78
591
+ msgid "This job is already not filled"
592
+ msgstr ""
593
+
594
+ #: includes/class-wp-job-manager-shortcodes.php:84
595
+ msgid "%s has been marked as not filled"
596
+ msgstr ""
597
+
598
+ #: includes/class-wp-job-manager-shortcodes.php:91
599
+ msgid "%s has been deleted"
600
+ msgstr ""
601
+
602
+ #: includes/class-wp-job-manager-shortcodes.php:111
603
+ msgid "You need to be signed in to manage your job listings."
604
+ msgstr ""
605
+
606
+ #: includes/class-wp-job-manager-shortcodes.php:204
607
+ #: includes/class-wp-job-manager-shortcodes.php:235
608
+ msgid "Load more job listings"
609
+ msgstr ""
610
+
611
+ #: includes/class-wp-job-manager-widgets.php:139
612
+ msgid "Display a list of the most recent jobs on your site."
613
+ msgstr ""
614
+
615
+ #: includes/class-wp-job-manager-widgets.php:141
616
+ msgid "Recent Job Listings"
617
+ msgstr ""
618
+
619
+ #: includes/class-wp-job-manager-widgets.php:145
620
+ msgid "Recent Jobs"
621
+ msgstr ""
622
+
623
+ #: includes/class-wp-job-manager-widgets.php:146
624
+ msgid "Title"
625
+ msgstr ""
626
+
627
+ #: includes/class-wp-job-manager-widgets.php:154
628
+ msgid "Number of jobs to show"
629
+ msgstr ""
630
+
631
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:43
632
+ msgid "Invalid job"
633
+ msgstr ""
634
+
635
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:86
636
+ msgid "Update job listing"
637
+ msgstr ""
638
+
639
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:112
640
+ msgid "Your changes have been saved."
641
+ msgstr ""
642
+
643
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:112
644
+ msgid "View Job Listing &rarr;"
645
+ msgstr ""
646
+
647
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:22
648
+ msgid "Submit Details"
649
+ msgstr ""
650
+
651
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:28
652
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:606
653
+ msgid "Preview"
654
+ msgstr ""
655
+
656
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:34
657
+ msgid "Done"
658
+ msgstr ""
659
+
660
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:107
661
+ msgid "Application email"
662
+ msgstr ""
663
+
664
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:108
665
+ msgid "you@yourdomain.com"
666
+ msgstr ""
667
+
668
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:111
669
+ msgid "Application URL"
670
+ msgstr ""
671
+
672
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:112
673
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:182
674
+ msgid "http://"
675
+ msgstr ""
676
+
677
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:116
678
+ msgid "Enter an email address or website URL"
679
+ msgstr ""
680
+
681
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:123
682
+ msgid "Job title"
683
+ msgstr ""
684
+
685
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:138
686
+ msgid "Job type"
687
+ msgstr ""
688
+
689
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:147
690
+ msgid "Job category"
691
+ msgstr ""
692
+
693
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:156
694
+ msgid "Description"
695
+ msgstr ""
696
+
697
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:175
698
+ msgid "Enter the name of the company"
699
+ msgstr ""
700
+
701
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:179
702
+ #: templates/content-single-job_listing.php:36
703
+ msgid "Website"
704
+ msgstr ""
705
+
706
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:186
707
+ msgid "Tagline"
708
+ msgstr ""
709
+
710
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:189
711
+ msgid "Briefly describe your company"
712
+ msgstr ""
713
+
714
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:194
715
+ msgid "Twitter username"
716
+ msgstr ""
717
+
718
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:197
719
+ msgid "@yourcompany"
720
+ msgstr ""
721
+
722
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:201
723
+ msgid "Logo"
724
+ msgstr ""
725
+
726
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:314
727
+ msgid "%s is a required field"
728
+ msgstr ""
729
+
730
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:325
731
+ msgid "Please enter a valid application email address"
732
+ msgstr ""
733
+
734
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:330
735
+ msgid "Please enter a valid application URL"
736
+ msgstr ""
737
+
738
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:335
739
+ msgid "Please enter a valid application email address or URL"
740
+ msgstr ""
741
+
742
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:456
743
+ msgid "Preview job listing &rarr;"
744
+ msgstr ""
745
+
746
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:492
747
+ msgid "You must be signed in to post a new job listing."
748
+ msgstr ""
749
+
750
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:600
751
+ msgid "Submit Listing &rarr;"
752
+ msgstr ""
753
+
754
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:601
755
+ msgid "&larr; Edit listing"
756
+ msgstr ""
757
+
758
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:684
759
+ msgid "\"%s\" needs to be one of the following file types: %s"
760
+ msgstr ""
761
+
762
+ #: templates/account-signin.php:4
763
+ msgid "Your account"
764
+ msgstr ""
765
+
766
+ #: templates/account-signin.php:8
767
+ msgid "You are currently signed in as <strong>%s</strong>."
768
+ msgstr ""
769
+
770
+ #: templates/account-signin.php:11
771
+ msgid "Sign out"
772
+ msgstr ""
773
+
774
+ #: templates/account-signin.php:21
775
+ msgid "Have an account?"
776
+ msgstr ""
777
+
778
+ #: templates/account-signin.php:23
779
+ msgid "Sign in"
780
+ msgstr ""
781
+
782
+ #: templates/account-signin.php:27
783
+ msgid ""
784
+ "If you don&rsquo;t have an account you can %screate one below by entering "
785
+ "your email address. A password will be automatically emailed to you."
786
+ msgstr ""
787
+
788
+ #: templates/account-signin.php:27
789
+ msgid "optionally"
790
+ msgstr ""
791
+
792
+ #: templates/account-signin.php:31
793
+ msgid "You must sign in to create a new job listing."
794
+ msgstr ""
795
+
796
+ #: templates/account-signin.php:38
797
+ msgid "Your email"
798
+ msgstr ""
799
+
800
+ #: templates/account-signin.php:38 templates/job-submit.php:24
801
+ #: templates/job-submit.php:41
802
+ msgid "(optional)"
803
+ msgstr ""
804
+
805
+ #: templates/content-job_listing.php:16
806
+ #: templates/content-single-job_listing.php:21
807
+ #: templates/content-summary-job_listing.php:14
808
+ msgid "Posted %s ago"
809
+ msgstr ""
810
+
811
+ #: templates/content-no-jobs-found.php:1
812
+ msgid "No more jobs found matching your selection."
813
+ msgstr ""
814
+
815
+ #: templates/content-single-job_listing.php:8
816
+ msgid "This job listing has expired"
817
+ msgstr ""
818
+
819
+ #: templates/content-single-job_listing.php:24
820
+ msgid "This position has been filled"
821
+ msgstr ""
822
+
823
+ #: templates/form-fields/file-field.php:6
824
+ msgid "remove"
825
+ msgstr ""
826
+
827
+ #: templates/form-fields/file-field.php:6
828
+ msgid "or"
829
+ msgstr ""
830
+
831
+ #: templates/form-fields/file-field.php:16
832
+ msgid "Max. file size: %s."
833
+ msgstr ""
834
+
835
+ #: templates/job-application-email.php:1
836
+ msgid ""
837
+ "To apply for this job <strong>email your details to</strong> <a "
838
+ "class=\"job_application_email\" href=\"mailto:%1$s%2$s\">%1$s</a>"
839
+ msgstr ""
840
+
841
+ #: templates/job-application-email.php:4
842
+ msgid "Apply using webmail: "
843
+ msgstr ""
844
+
845
+ #: templates/job-application-url.php:1
846
+ msgid ""
847
+ "To apply for this job please visit the following URL: <a href=\"%1$s\" "
848
+ "target=\"_blank\">%1$s &rarr;</a>"
849
+ msgstr ""
850
+
851
+ #: templates/job-application.php:5
852
+ msgid "Apply for job"
853
+ msgstr ""
854
+
855
+ #: templates/job-dashboard.php:2
856
+ msgid ""
857
+ "Your job listings are shown in the table below. Expired listings will be "
858
+ "automatically removed after 30 days."
859
+ msgstr ""
860
+
861
+ #: templates/job-dashboard.php:6
862
+ msgid "Job Title"
863
+ msgstr ""
864
+
865
+ #: templates/job-dashboard.php:7
866
+ msgid "Date Posted"
867
+ msgstr ""
868
+
869
+ #: templates/job-dashboard.php:16
870
+ msgid "You do not have any active job listings."
871
+ msgstr ""
872
+
873
+ #: templates/job-dashboard.php:36
874
+ msgid "Mark not filled"
875
+ msgstr ""
876
+
877
+ #: templates/job-dashboard.php:38
878
+ msgid "Mark filled"
879
+ msgstr ""
880
+
881
+ #: templates/job-filters.php:8
882
+ msgid "Keywords"
883
+ msgstr ""
884
+
885
+ #: templates/job-filters.php:9
886
+ msgid "All Jobs"
887
+ msgstr ""
888
+
889
+ #: templates/job-filters.php:13
890
+ msgid "Location"
891
+ msgstr ""
892
+
893
+ #: templates/job-filters.php:14
894
+ msgid "Any Location"
895
+ msgstr ""
896
+
897
+ #: templates/job-filters.php:23
898
+ msgid "Category"
899
+ msgstr ""
900
+
901
+ #: templates/job-filters.php:24
902
+ msgid "All Job Categories"
903
+ msgstr ""
904
+
905
+ #: templates/job-submit.php:35
906
+ msgid "Company details"
907
+ msgstr ""
908
+
909
+ #: templates/job-submitted.php:4
910
+ msgid ""
911
+ "Job listed successfully. To view your job listing <a href=\"%s\">click "
912
+ "here</a>."
913
+ msgstr ""
914
+
915
+ #: templates/job-submitted.php:7
916
+ msgid ""
917
+ "Job submitted successfully. Your job listing will be visible once approved."
918
+ msgstr ""
919
+
920
+ #: wp-job-manager-functions.php:224
921
+ msgid "Reset"
922
+ msgstr ""
923
+
924
+ #: wp-job-manager-functions.php:228
925
+ msgid "RSS"
926
+ msgstr ""
927
+
928
+ #: wp-job-manager-functions.php:278
929
+ msgid "Your email address isn&#8217;t correct."
930
+ msgstr ""
931
+
932
+ #: wp-job-manager-functions.php:281
933
+ msgid "This email is already registered, please choose another one."
934
+ msgstr ""
935
+
936
+ #: wp-job-manager-template.php:116
937
+ msgid "Active"
938
+ msgstr ""
939
+
940
+ #: wp-job-manager-template.php:118
941
+ msgid "Expired"
942
+ msgstr ""
943
+
944
+ #: wp-job-manager-template.php:120
945
+ msgid "Pending Review"
946
+ msgstr ""
947
+
948
+ #: wp-job-manager-template.php:122
949
+ msgid "Inactive"
950
+ msgstr ""
951
+
952
+ #: wp-job-manager-template.php:197
953
+ msgid "Job Application via \"%s\" listing on %s"
954
+ msgstr ""
955
+
956
+ #: wp-job-manager-template.php:255
957
+ msgid "Anywhere"
958
+ msgstr ""
959
+
960
+ #: wp-job-manager.php:97
961
+ msgid "Are you sure you want to delete this job?"
962
+ msgstr ""
963
+
964
+ #. Plugin Name of the plugin/theme
965
+ msgid "WP Job Manager"
966
+ msgstr ""
967
+
968
+ #. Plugin URI of the plugin/theme
969
+ msgid "https://wpjobmanager.com/"
970
+ msgstr ""
971
+
972
+ #. Description of the plugin/theme
973
+ msgid ""
974
+ "Manage job listings from the WordPress admin panel, and allow users to post "
975
+ "jobs directly to your site."
976
+ msgstr ""
977
+
978
+ #. Author of the plugin/theme
979
+ msgid "Mike Jolley"
980
+ msgstr ""
981
+
982
+ #. Author URI of the plugin/theme
983
+ msgid "http://mikejolley.com"
984
+ msgstr ""
languages/wp-job-manager-nb_NO.mo CHANGED
Binary file
languages/wp-job-manager-nb_NO.po CHANGED
@@ -2,13 +2,15 @@
2
  # This file is distributed under the same license as the WP Job Manager package.
3
  # Translators:
4
  # magnusnesse <magnus@skarpsinn.no>, 2014
 
 
5
  msgid ""
6
  msgstr ""
7
  "Project-Id-Version: WP Job Manager\n"
8
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-job-manager\n"
9
  "POT-Creation-Date: 2014-05-11 11:00:29+00:00\n"
10
- "PO-Revision-Date: 2014-06-28 12:01+0000\n"
11
- "Last-Translator: Mike Jolley <mike.jolley@me.com>\n"
12
  "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/wp-job-manager/language/nb_NO/)\n"
13
  "MIME-Version: 1.0\n"
14
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -43,7 +45,7 @@ msgstr "Godkjenn stillinger"
43
  #: includes/admin/class-wp-job-manager-cpt.php:47
44
  #: includes/admin/class-wp-job-manager-cpt.php:48
45
  msgid "Expire Jobs"
46
- msgstr ""
47
 
48
  #: includes/admin/class-wp-job-manager-cpt.php:135
49
  #: includes/admin/class-wp-job-manager-cpt.php:137
@@ -53,7 +55,7 @@ msgstr "%s godkjent"
53
  #: includes/admin/class-wp-job-manager-cpt.php:155
54
  #: includes/admin/class-wp-job-manager-cpt.php:157
55
  msgid "%s expired"
56
- msgstr ""
57
 
58
  #: includes/admin/class-wp-job-manager-cpt.php:200
59
  msgid "Select a category"
@@ -244,7 +246,7 @@ msgstr "Hvis aktivert vil besøkende som ikke er logget inn kunne opprette en br
244
 
245
  #: includes/admin/class-wp-job-manager-settings.php:87
246
  msgid "Account Role"
247
- msgstr ""
248
 
249
  #: includes/admin/class-wp-job-manager-settings.php:88
250
  msgid ""
@@ -294,19 +296,19 @@ msgstr ""
294
 
295
  #: includes/admin/class-wp-job-manager-settings.php:121
296
  msgid "Choose what employers can use for their job application method."
297
- msgstr ""
298
 
299
  #: includes/admin/class-wp-job-manager-settings.php:124
300
  msgid "Email address or website URL"
301
- msgstr ""
302
 
303
  #: includes/admin/class-wp-job-manager-settings.php:125
304
  msgid "Email addresses only"
305
- msgstr ""
306
 
307
  #: includes/admin/class-wp-job-manager-settings.php:126
308
  msgid "Website URLs only"
309
- msgstr ""
310
 
311
  #: includes/admin/class-wp-job-manager-settings.php:132
312
  msgid "Submit Page Slug"
@@ -340,25 +342,25 @@ msgstr "eks. \"London, UK\", \"Haugesund, NO\", \"New York\", \"Houston, TX\""
340
  #: includes/forms/class-wp-job-manager-form-submit-job.php:131
341
  msgid ""
342
  "Leave this blank if the job can be done from anywhere (i.e. telecommuting)"
343
- msgstr ""
344
 
345
  #: includes/admin/class-wp-job-manager-writepanels.php:32
346
  #: includes/forms/class-wp-job-manager-form-submit-job.php:115
347
  msgid "Application email/URL"
348
- msgstr ""
349
 
350
  #: includes/admin/class-wp-job-manager-writepanels.php:33
351
  msgid "URL or email which applicants use to apply"
352
- msgstr ""
353
 
354
  #: includes/admin/class-wp-job-manager-writepanels.php:36
355
  #: includes/forms/class-wp-job-manager-form-submit-job.php:172
356
  msgid "Company name"
357
- msgstr ""
358
 
359
  #: includes/admin/class-wp-job-manager-writepanels.php:40
360
  msgid "Company website"
361
- msgstr ""
362
 
363
  #: includes/admin/class-wp-job-manager-writepanels.php:44
364
  msgid "Company tagline"
@@ -366,27 +368,27 @@ msgstr ""
366
 
367
  #: includes/admin/class-wp-job-manager-writepanels.php:45
368
  msgid "Brief description about the company"
369
- msgstr ""
370
 
371
  #: includes/admin/class-wp-job-manager-writepanels.php:48
372
  msgid "Company Twitter"
373
- msgstr ""
374
 
375
  #: includes/admin/class-wp-job-manager-writepanels.php:52
376
  msgid "Company logo"
377
- msgstr ""
378
 
379
  #: includes/admin/class-wp-job-manager-writepanels.php:53
380
  msgid "URL to the company logo"
381
- msgstr ""
382
 
383
  #: includes/admin/class-wp-job-manager-writepanels.php:57
384
  msgid "Position filled?"
385
- msgstr ""
386
 
387
  #: includes/admin/class-wp-job-manager-writepanels.php:61
388
  msgid "Feature this job listing?"
389
- msgstr ""
390
 
391
  #: includes/admin/class-wp-job-manager-writepanels.php:63
392
  msgid ""
@@ -396,15 +398,15 @@ msgstr ""
396
 
397
  #: includes/admin/class-wp-job-manager-writepanels.php:66
398
  msgid "Job Expires"
399
- msgstr ""
400
 
401
  #: includes/admin/class-wp-job-manager-writepanels.php:67
402
  msgid "yyyy-mm-dd"
403
- msgstr ""
404
 
405
  #: includes/admin/class-wp-job-manager-writepanels.php:70
406
  msgid "Posted by"
407
- msgstr ""
408
 
409
  #: includes/admin/class-wp-job-manager-writepanels.php:83
410
  msgid "Job Listing Data"
@@ -412,23 +414,23 @@ msgstr ""
412
 
413
  #: includes/admin/class-wp-job-manager-writepanels.php:101
414
  msgid "Use file"
415
- msgstr ""
416
 
417
  #: includes/admin/class-wp-job-manager-writepanels.php:101
418
  msgid "Upload"
419
- msgstr ""
420
 
421
  #: includes/admin/class-wp-job-manager-writepanels.php:269
422
  msgid "Guest user"
423
- msgstr ""
424
 
425
  #: includes/class-wp-job-manager-ajax.php:111
426
  msgid "Showing %s&ldquo;%s&rdquo; %sjobs"
427
- msgstr ""
428
 
429
  #: includes/class-wp-job-manager-ajax.php:113
430
  msgid "Showing all %s%sjobs"
431
- msgstr ""
432
 
433
  #: includes/class-wp-job-manager-ajax.php:116
434
  msgid "located in &ldquo;%s&rdquo;"
@@ -436,7 +438,7 @@ msgstr ""
436
 
437
  #: includes/class-wp-job-manager-geocode.php:139
438
  msgid "No results found"
439
- msgstr ""
440
 
441
  #: includes/class-wp-job-manager-geocode.php:143
442
  msgid "Query limit reached"
@@ -450,32 +452,32 @@ msgstr ""
450
 
451
  #: includes/class-wp-job-manager-install.php:39
452
  msgid "Employer"
453
- msgstr ""
454
 
455
  #: includes/class-wp-job-manager-post-types.php:48
456
  msgid "Job Category"
457
- msgstr ""
458
 
459
  #: includes/class-wp-job-manager-post-types.php:49
460
  msgid "Job Categories"
461
- msgstr ""
462
 
463
  #: includes/class-wp-job-manager-post-types.php:53
464
  msgctxt "Job category slug - resave permalinks after changing this"
465
  msgid "job-category"
466
- msgstr ""
467
 
468
  #: includes/class-wp-job-manager-post-types.php:70
469
  #: includes/class-wp-job-manager-post-types.php:113
470
  #: includes/class-wp-job-manager-post-types.php:167
471
  msgid "Search %s"
472
- msgstr ""
473
 
474
  #: includes/class-wp-job-manager-post-types.php:71
475
  #: includes/class-wp-job-manager-post-types.php:114
476
  #: includes/class-wp-job-manager-post-types.php:159
477
  msgid "All %s"
478
- msgstr ""
479
 
480
  #: includes/class-wp-job-manager-post-types.php:72
481
  #: includes/class-wp-job-manager-post-types.php:115
@@ -492,70 +494,70 @@ msgstr ""
492
  #: includes/class-wp-job-manager-post-types.php:117
493
  #: includes/class-wp-job-manager-post-types.php:163
494
  msgid "Edit %s"
495
- msgstr ""
496
 
497
  #: includes/class-wp-job-manager-post-types.php:75
498
  #: includes/class-wp-job-manager-post-types.php:118
499
  msgid "Update %s"
500
- msgstr ""
501
 
502
  #: includes/class-wp-job-manager-post-types.php:76
503
  #: includes/class-wp-job-manager-post-types.php:119
504
  msgid "Add New %s"
505
- msgstr ""
506
 
507
  #: includes/class-wp-job-manager-post-types.php:77
508
  #: includes/class-wp-job-manager-post-types.php:120
509
  msgid "New %s Name"
510
- msgstr ""
511
 
512
  #: includes/class-wp-job-manager-post-types.php:92
513
  msgid "Job Type"
514
- msgstr ""
515
 
516
  #: includes/class-wp-job-manager-post-types.php:93
517
  msgid "Job Types"
518
- msgstr ""
519
 
520
  #: includes/class-wp-job-manager-post-types.php:97
521
  msgctxt "Job type slug - resave permalinks after changing this"
522
  msgid "job-type"
523
- msgstr ""
524
 
525
  #: includes/class-wp-job-manager-post-types.php:137
526
  msgid "Job Listing"
527
- msgstr ""
528
 
529
  #: includes/class-wp-job-manager-post-types.php:141
530
  msgctxt "Post type archive slug - resave permalinks after changing this"
531
  msgid "jobs"
532
- msgstr ""
533
 
534
  #: includes/class-wp-job-manager-post-types.php:147
535
  msgctxt "Job permalink - resave permalinks after changing this"
536
  msgid "job"
537
- msgstr ""
538
 
539
  #: includes/class-wp-job-manager-post-types.php:160
540
  msgid "Add New"
541
- msgstr ""
542
 
543
  #: includes/class-wp-job-manager-post-types.php:161
544
  msgid "Add %s"
545
- msgstr ""
546
 
547
  #: includes/class-wp-job-manager-post-types.php:164
548
  msgid "New %s"
549
- msgstr ""
550
 
551
  #: includes/class-wp-job-manager-post-types.php:165
552
  #: includes/class-wp-job-manager-post-types.php:166
553
  msgid "View %s"
554
- msgstr ""
555
 
556
  #: includes/class-wp-job-manager-post-types.php:168
557
  msgid "No %s found"
558
- msgstr ""
559
 
560
  #: includes/class-wp-job-manager-post-types.php:169
561
  msgid "No %s found in trash"
@@ -563,22 +565,22 @@ msgstr ""
563
 
564
  #: includes/class-wp-job-manager-post-types.php:172
565
  msgid "This is where you can create and manage job listings."
566
- msgstr ""
567
 
568
  #: includes/class-wp-job-manager-post-types.php:207
569
  msgctxt "job_listing"
570
  msgid "Expired"
571
- msgstr ""
572
 
573
  #: includes/class-wp-job-manager-post-types.php:212
574
  msgid "Expired <span class=\"count\">(%s)</span>"
575
  msgid_plural "Expired <span class=\"count\">(%s)</span>"
576
- msgstr[0] ""
577
- msgstr[1] ""
578
 
579
  #: includes/class-wp-job-manager-shortcodes.php:61
580
  msgid "Invalid Job ID"
581
- msgstr ""
582
 
583
  #: includes/class-wp-job-manager-shortcodes.php:67
584
  msgid "This job is already filled"
@@ -586,7 +588,7 @@ msgstr ""
586
 
587
  #: includes/class-wp-job-manager-shortcodes.php:73
588
  msgid "%s has been filled"
589
- msgstr ""
590
 
591
  #: includes/class-wp-job-manager-shortcodes.php:78
592
  msgid "This job is already not filled"
@@ -594,69 +596,69 @@ msgstr ""
594
 
595
  #: includes/class-wp-job-manager-shortcodes.php:84
596
  msgid "%s has been marked as not filled"
597
- msgstr ""
598
 
599
  #: includes/class-wp-job-manager-shortcodes.php:91
600
  msgid "%s has been deleted"
601
- msgstr ""
602
 
603
  #: includes/class-wp-job-manager-shortcodes.php:111
604
  msgid "You need to be signed in to manage your job listings."
605
- msgstr ""
606
 
607
  #: includes/class-wp-job-manager-shortcodes.php:204
608
  #: includes/class-wp-job-manager-shortcodes.php:235
609
  msgid "Load more job listings"
610
- msgstr ""
611
 
612
  #: includes/class-wp-job-manager-widgets.php:139
613
  msgid "Display a list of the most recent jobs on your site."
614
- msgstr ""
615
 
616
  #: includes/class-wp-job-manager-widgets.php:141
617
  msgid "Recent Job Listings"
618
- msgstr ""
619
 
620
  #: includes/class-wp-job-manager-widgets.php:145
621
  msgid "Recent Jobs"
622
- msgstr ""
623
 
624
  #: includes/class-wp-job-manager-widgets.php:146
625
  msgid "Title"
626
- msgstr ""
627
 
628
  #: includes/class-wp-job-manager-widgets.php:154
629
  msgid "Number of jobs to show"
630
- msgstr ""
631
 
632
  #: includes/forms/class-wp-job-manager-form-edit-job.php:43
633
  msgid "Invalid job"
634
- msgstr ""
635
 
636
  #: includes/forms/class-wp-job-manager-form-edit-job.php:86
637
  msgid "Update job listing"
638
- msgstr ""
639
 
640
  #: includes/forms/class-wp-job-manager-form-edit-job.php:112
641
  msgid "Your changes have been saved."
642
- msgstr ""
643
 
644
  #: includes/forms/class-wp-job-manager-form-edit-job.php:112
645
  msgid "View Job Listing &rarr;"
646
- msgstr ""
647
 
648
  #: includes/forms/class-wp-job-manager-form-submit-job.php:22
649
  msgid "Submit Details"
650
- msgstr ""
651
 
652
  #: includes/forms/class-wp-job-manager-form-submit-job.php:28
653
  #: includes/forms/class-wp-job-manager-form-submit-job.php:606
654
  msgid "Preview"
655
- msgstr ""
656
 
657
  #: includes/forms/class-wp-job-manager-form-submit-job.php:34
658
  msgid "Done"
659
- msgstr ""
660
 
661
  #: includes/forms/class-wp-job-manager-form-submit-job.php:107
662
  msgid "Application email"
@@ -664,7 +666,7 @@ msgstr ""
664
 
665
  #: includes/forms/class-wp-job-manager-form-submit-job.php:108
666
  msgid "you@yourdomain.com"
667
- msgstr ""
668
 
669
  #: includes/forms/class-wp-job-manager-form-submit-job.php:111
670
  msgid "Application URL"
@@ -673,15 +675,15 @@ msgstr ""
673
  #: includes/forms/class-wp-job-manager-form-submit-job.php:112
674
  #: includes/forms/class-wp-job-manager-form-submit-job.php:182
675
  msgid "http://"
676
- msgstr ""
677
 
678
  #: includes/forms/class-wp-job-manager-form-submit-job.php:116
679
  msgid "Enter an email address or website URL"
680
- msgstr ""
681
 
682
  #: includes/forms/class-wp-job-manager-form-submit-job.php:123
683
  msgid "Job title"
684
- msgstr ""
685
 
686
  #: includes/forms/class-wp-job-manager-form-submit-job.php:138
687
  msgid "Job type"
@@ -689,20 +691,20 @@ msgstr "Type"
689
 
690
  #: includes/forms/class-wp-job-manager-form-submit-job.php:147
691
  msgid "Job category"
692
- msgstr ""
693
 
694
  #: includes/forms/class-wp-job-manager-form-submit-job.php:156
695
  msgid "Description"
696
- msgstr ""
697
 
698
  #: includes/forms/class-wp-job-manager-form-submit-job.php:175
699
  msgid "Enter the name of the company"
700
- msgstr ""
701
 
702
  #: includes/forms/class-wp-job-manager-form-submit-job.php:179
703
  #: templates/content-single-job_listing.php:36
704
  msgid "Website"
705
- msgstr ""
706
 
707
  #: includes/forms/class-wp-job-manager-form-submit-job.php:186
708
  msgid "Tagline"
@@ -710,47 +712,47 @@ msgstr ""
710
 
711
  #: includes/forms/class-wp-job-manager-form-submit-job.php:189
712
  msgid "Briefly describe your company"
713
- msgstr ""
714
 
715
  #: includes/forms/class-wp-job-manager-form-submit-job.php:194
716
  msgid "Twitter username"
717
- msgstr ""
718
 
719
  #: includes/forms/class-wp-job-manager-form-submit-job.php:197
720
  msgid "@yourcompany"
721
- msgstr ""
722
 
723
  #: includes/forms/class-wp-job-manager-form-submit-job.php:201
724
  msgid "Logo"
725
- msgstr ""
726
 
727
  #: includes/forms/class-wp-job-manager-form-submit-job.php:314
728
  msgid "%s is a required field"
729
- msgstr ""
730
 
731
  #: includes/forms/class-wp-job-manager-form-submit-job.php:325
732
  msgid "Please enter a valid application email address"
733
- msgstr ""
734
 
735
  #: includes/forms/class-wp-job-manager-form-submit-job.php:330
736
  msgid "Please enter a valid application URL"
737
- msgstr ""
738
 
739
  #: includes/forms/class-wp-job-manager-form-submit-job.php:335
740
  msgid "Please enter a valid application email address or URL"
741
- msgstr ""
742
 
743
  #: includes/forms/class-wp-job-manager-form-submit-job.php:456
744
  msgid "Preview job listing &rarr;"
745
- msgstr ""
746
 
747
  #: includes/forms/class-wp-job-manager-form-submit-job.php:492
748
  msgid "You must be signed in to post a new job listing."
749
- msgstr ""
750
 
751
  #: includes/forms/class-wp-job-manager-form-submit-job.php:600
752
  msgid "Submit Listing &rarr;"
753
- msgstr ""
754
 
755
  #: includes/forms/class-wp-job-manager-form-submit-job.php:601
756
  msgid "&larr; Edit listing"
@@ -758,118 +760,118 @@ msgstr ""
758
 
759
  #: includes/forms/class-wp-job-manager-form-submit-job.php:684
760
  msgid "\"%s\" needs to be one of the following file types: %s"
761
- msgstr ""
762
 
763
  #: templates/account-signin.php:4
764
  msgid "Your account"
765
- msgstr ""
766
 
767
  #: templates/account-signin.php:8
768
  msgid "You are currently signed in as <strong>%s</strong>."
769
- msgstr ""
770
 
771
  #: templates/account-signin.php:11
772
  msgid "Sign out"
773
- msgstr ""
774
 
775
  #: templates/account-signin.php:21
776
  msgid "Have an account?"
777
- msgstr ""
778
 
779
  #: templates/account-signin.php:23
780
  msgid "Sign in"
781
- msgstr ""
782
 
783
  #: templates/account-signin.php:27
784
  msgid ""
785
  "If you don&rsquo;t have an account you can %screate one below by entering "
786
  "your email address. A password will be automatically emailed to you."
787
- msgstr ""
788
 
789
  #: templates/account-signin.php:27
790
  msgid "optionally"
791
- msgstr ""
792
 
793
  #: templates/account-signin.php:31
794
  msgid "You must sign in to create a new job listing."
795
- msgstr ""
796
 
797
  #: templates/account-signin.php:38
798
  msgid "Your email"
799
- msgstr ""
800
 
801
  #: templates/account-signin.php:38 templates/job-submit.php:24
802
  #: templates/job-submit.php:41
803
  msgid "(optional)"
804
- msgstr ""
805
 
806
  #: templates/content-job_listing.php:16
807
  #: templates/content-single-job_listing.php:21
808
  #: templates/content-summary-job_listing.php:14
809
  msgid "Posted %s ago"
810
- msgstr ""
811
 
812
  #: templates/content-no-jobs-found.php:1
813
  msgid "No more jobs found matching your selection."
814
- msgstr ""
815
 
816
  #: templates/content-single-job_listing.php:8
817
  msgid "This job listing has expired"
818
- msgstr ""
819
 
820
  #: templates/content-single-job_listing.php:24
821
  msgid "This position has been filled"
822
- msgstr ""
823
 
824
  #: templates/form-fields/file-field.php:6
825
  msgid "remove"
826
- msgstr ""
827
 
828
  #: templates/form-fields/file-field.php:6
829
  msgid "or"
830
- msgstr ""
831
 
832
  #: templates/form-fields/file-field.php:16
833
  msgid "Max. file size: %s."
834
- msgstr ""
835
 
836
  #: templates/job-application-email.php:1
837
  msgid ""
838
  "To apply for this job <strong>email your details to</strong> <a "
839
  "class=\"job_application_email\" href=\"mailto:%1$s%2$s\">%1$s</a>"
840
- msgstr ""
841
 
842
  #: templates/job-application-email.php:4
843
  msgid "Apply using webmail: "
844
- msgstr ""
845
 
846
  #: templates/job-application-url.php:1
847
  msgid ""
848
  "To apply for this job please visit the following URL: <a href=\"%1$s\" "
849
  "target=\"_blank\">%1$s &rarr;</a>"
850
- msgstr ""
851
 
852
  #: templates/job-application.php:5
853
  msgid "Apply for job"
854
- msgstr ""
855
 
856
  #: templates/job-dashboard.php:2
857
  msgid ""
858
  "Your job listings are shown in the table below. Expired listings will be "
859
  "automatically removed after 30 days."
860
- msgstr ""
861
 
862
  #: templates/job-dashboard.php:6
863
  msgid "Job Title"
864
- msgstr ""
865
 
866
  #: templates/job-dashboard.php:7
867
  msgid "Date Posted"
868
- msgstr ""
869
 
870
  #: templates/job-dashboard.php:16
871
  msgid "You do not have any active job listings."
872
- msgstr ""
873
 
874
  #: templates/job-dashboard.php:36
875
  msgid "Mark not filled"
@@ -881,66 +883,66 @@ msgstr ""
881
 
882
  #: templates/job-filters.php:8
883
  msgid "Keywords"
884
- msgstr ""
885
 
886
  #: templates/job-filters.php:9
887
  msgid "All Jobs"
888
- msgstr ""
889
 
890
  #: templates/job-filters.php:13
891
  msgid "Location"
892
- msgstr ""
893
 
894
  #: templates/job-filters.php:14
895
  msgid "Any Location"
896
- msgstr ""
897
 
898
  #: templates/job-filters.php:23
899
  msgid "Category"
900
- msgstr ""
901
 
902
  #: templates/job-filters.php:24
903
  msgid "All Job Categories"
904
- msgstr ""
905
 
906
  #: templates/job-submit.php:35
907
  msgid "Company details"
908
- msgstr ""
909
 
910
  #: templates/job-submitted.php:4
911
  msgid ""
912
  "Job listed successfully. To view your job listing <a href=\"%s\">click "
913
  "here</a>."
914
- msgstr ""
915
 
916
  #: templates/job-submitted.php:7
917
  msgid ""
918
  "Job submitted successfully. Your job listing will be visible once approved."
919
- msgstr ""
920
 
921
  #: wp-job-manager-functions.php:224
922
  msgid "Reset"
923
- msgstr ""
924
 
925
  #: wp-job-manager-functions.php:228
926
  msgid "RSS"
927
- msgstr ""
928
 
929
  #: wp-job-manager-functions.php:278
930
  msgid "Your email address isn&#8217;t correct."
931
- msgstr ""
932
 
933
  #: wp-job-manager-functions.php:281
934
  msgid "This email is already registered, please choose another one."
935
- msgstr ""
936
 
937
  #: wp-job-manager-template.php:116
938
  msgid "Active"
939
- msgstr ""
940
 
941
  #: wp-job-manager-template.php:118
942
  msgid "Expired"
943
- msgstr ""
944
 
945
  #: wp-job-manager-template.php:120
946
  msgid "Pending Review"
@@ -948,7 +950,7 @@ msgstr ""
948
 
949
  #: wp-job-manager-template.php:122
950
  msgid "Inactive"
951
- msgstr ""
952
 
953
  #: wp-job-manager-template.php:197
954
  msgid "Job Application via \"%s\" listing on %s"
@@ -956,30 +958,30 @@ msgstr ""
956
 
957
  #: wp-job-manager-template.php:255
958
  msgid "Anywhere"
959
- msgstr ""
960
 
961
  #: wp-job-manager.php:97
962
  msgid "Are you sure you want to delete this job?"
963
- msgstr ""
964
 
965
  #. Plugin Name of the plugin/theme
966
  msgid "WP Job Manager"
967
- msgstr ""
968
 
969
  #. Plugin URI of the plugin/theme
970
  msgid "https://wpjobmanager.com/"
971
- msgstr ""
972
 
973
  #. Description of the plugin/theme
974
  msgid ""
975
  "Manage job listings from the WordPress admin panel, and allow users to post "
976
  "jobs directly to your site."
977
- msgstr ""
978
 
979
  #. Author of the plugin/theme
980
  msgid "Mike Jolley"
981
- msgstr ""
982
 
983
  #. Author URI of the plugin/theme
984
  msgid "http://mikejolley.com"
985
- msgstr ""
2
  # This file is distributed under the same license as the WP Job Manager package.
3
  # Translators:
4
  # magnusnesse <magnus@skarpsinn.no>, 2014
5
+ # peepe, 2014
6
+ # Roms <inactive+Roms@transifex.com>, 2014
7
  msgid ""
8
  msgstr ""
9
  "Project-Id-Version: WP Job Manager\n"
10
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-job-manager\n"
11
  "POT-Creation-Date: 2014-05-11 11:00:29+00:00\n"
12
+ "PO-Revision-Date: 2014-08-08 07:33+0000\n"
13
+ "Last-Translator: Roms <inactive+Roms@transifex.com>\n"
14
  "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/wp-job-manager/language/nb_NO/)\n"
15
  "MIME-Version: 1.0\n"
16
  "Content-Type: text/plain; charset=UTF-8\n"
45
  #: includes/admin/class-wp-job-manager-cpt.php:47
46
  #: includes/admin/class-wp-job-manager-cpt.php:48
47
  msgid "Expire Jobs"
48
+ msgstr "Utløpte Jobber"
49
 
50
  #: includes/admin/class-wp-job-manager-cpt.php:135
51
  #: includes/admin/class-wp-job-manager-cpt.php:137
55
  #: includes/admin/class-wp-job-manager-cpt.php:155
56
  #: includes/admin/class-wp-job-manager-cpt.php:157
57
  msgid "%s expired"
58
+ msgstr "%s utløpt"
59
 
60
  #: includes/admin/class-wp-job-manager-cpt.php:200
61
  msgid "Select a category"
246
 
247
  #: includes/admin/class-wp-job-manager-settings.php:87
248
  msgid "Account Role"
249
+ msgstr "Brukerrolle"
250
 
251
  #: includes/admin/class-wp-job-manager-settings.php:88
252
  msgid ""
296
 
297
  #: includes/admin/class-wp-job-manager-settings.php:121
298
  msgid "Choose what employers can use for their job application method."
299
+ msgstr "Velg hva arbeidsgivere kan bruke for deres søkemetode."
300
 
301
  #: includes/admin/class-wp-job-manager-settings.php:124
302
  msgid "Email address or website URL"
303
+ msgstr "E-postadresse eller URL-adresse"
304
 
305
  #: includes/admin/class-wp-job-manager-settings.php:125
306
  msgid "Email addresses only"
307
+ msgstr "Kun e-postadresse"
308
 
309
  #: includes/admin/class-wp-job-manager-settings.php:126
310
  msgid "Website URLs only"
311
+ msgstr "Kun URL-adresse"
312
 
313
  #: includes/admin/class-wp-job-manager-settings.php:132
314
  msgid "Submit Page Slug"
342
  #: includes/forms/class-wp-job-manager-form-submit-job.php:131
343
  msgid ""
344
  "Leave this blank if the job can be done from anywhere (i.e. telecommuting)"
345
+ msgstr "Etterlat blank dersom jobben kan utføres hvor som helst (f.eks. hjemmekontor)"
346
 
347
  #: includes/admin/class-wp-job-manager-writepanels.php:32
348
  #: includes/forms/class-wp-job-manager-form-submit-job.php:115
349
  msgid "Application email/URL"
350
+ msgstr "E-post/URL"
351
 
352
  #: includes/admin/class-wp-job-manager-writepanels.php:33
353
  msgid "URL or email which applicants use to apply"
354
+ msgstr "URL eller e-post som oppdragstakerne kan bruke for å søke på"
355
 
356
  #: includes/admin/class-wp-job-manager-writepanels.php:36
357
  #: includes/forms/class-wp-job-manager-form-submit-job.php:172
358
  msgid "Company name"
359
+ msgstr "Bedriftens navn"
360
 
361
  #: includes/admin/class-wp-job-manager-writepanels.php:40
362
  msgid "Company website"
363
+ msgstr "Bedriftens nettside"
364
 
365
  #: includes/admin/class-wp-job-manager-writepanels.php:44
366
  msgid "Company tagline"
368
 
369
  #: includes/admin/class-wp-job-manager-writepanels.php:45
370
  msgid "Brief description about the company"
371
+ msgstr "Kort beskrivelse av bedriften"
372
 
373
  #: includes/admin/class-wp-job-manager-writepanels.php:48
374
  msgid "Company Twitter"
375
+ msgstr "Bedrift Twitter"
376
 
377
  #: includes/admin/class-wp-job-manager-writepanels.php:52
378
  msgid "Company logo"
379
+ msgstr "Bedriftslogo"
380
 
381
  #: includes/admin/class-wp-job-manager-writepanels.php:53
382
  msgid "URL to the company logo"
383
+ msgstr "URL til bedriftens logo"
384
 
385
  #: includes/admin/class-wp-job-manager-writepanels.php:57
386
  msgid "Position filled?"
387
+ msgstr "Er stillingen besatt?"
388
 
389
  #: includes/admin/class-wp-job-manager-writepanels.php:61
390
  msgid "Feature this job listing?"
391
+ msgstr "Fremheve denne jobben?"
392
 
393
  #: includes/admin/class-wp-job-manager-writepanels.php:63
394
  msgid ""
398
 
399
  #: includes/admin/class-wp-job-manager-writepanels.php:66
400
  msgid "Job Expires"
401
+ msgstr "Jobben Utgår"
402
 
403
  #: includes/admin/class-wp-job-manager-writepanels.php:67
404
  msgid "yyyy-mm-dd"
405
+ msgstr "yyyy-mm-dd"
406
 
407
  #: includes/admin/class-wp-job-manager-writepanels.php:70
408
  msgid "Posted by"
409
+ msgstr "Postet av"
410
 
411
  #: includes/admin/class-wp-job-manager-writepanels.php:83
412
  msgid "Job Listing Data"
414
 
415
  #: includes/admin/class-wp-job-manager-writepanels.php:101
416
  msgid "Use file"
417
+ msgstr "Bruk fil"
418
 
419
  #: includes/admin/class-wp-job-manager-writepanels.php:101
420
  msgid "Upload"
421
+ msgstr "Last opp"
422
 
423
  #: includes/admin/class-wp-job-manager-writepanels.php:269
424
  msgid "Guest user"
425
+ msgstr "Gjestebruker"
426
 
427
  #: includes/class-wp-job-manager-ajax.php:111
428
  msgid "Showing %s&ldquo;%s&rdquo; %sjobs"
429
+ msgstr "Viser %s&ldquo;%s&rdquo; %sjobber"
430
 
431
  #: includes/class-wp-job-manager-ajax.php:113
432
  msgid "Showing all %s%sjobs"
433
+ msgstr "Viser alle %s%sjobber"
434
 
435
  #: includes/class-wp-job-manager-ajax.php:116
436
  msgid "located in &ldquo;%s&rdquo;"
438
 
439
  #: includes/class-wp-job-manager-geocode.php:139
440
  msgid "No results found"
441
+ msgstr "Ingen resultater funnet"
442
 
443
  #: includes/class-wp-job-manager-geocode.php:143
444
  msgid "Query limit reached"
452
 
453
  #: includes/class-wp-job-manager-install.php:39
454
  msgid "Employer"
455
+ msgstr "Arbeidsgiver"
456
 
457
  #: includes/class-wp-job-manager-post-types.php:48
458
  msgid "Job Category"
459
+ msgstr "Jobbkategori"
460
 
461
  #: includes/class-wp-job-manager-post-types.php:49
462
  msgid "Job Categories"
463
+ msgstr "Jobbkategorier"
464
 
465
  #: includes/class-wp-job-manager-post-types.php:53
466
  msgctxt "Job category slug - resave permalinks after changing this"
467
  msgid "job-category"
468
+ msgstr "jobb-kategori"
469
 
470
  #: includes/class-wp-job-manager-post-types.php:70
471
  #: includes/class-wp-job-manager-post-types.php:113
472
  #: includes/class-wp-job-manager-post-types.php:167
473
  msgid "Search %s"
474
+ msgstr "Søk %s"
475
 
476
  #: includes/class-wp-job-manager-post-types.php:71
477
  #: includes/class-wp-job-manager-post-types.php:114
478
  #: includes/class-wp-job-manager-post-types.php:159
479
  msgid "All %s"
480
+ msgstr "Alle %s"
481
 
482
  #: includes/class-wp-job-manager-post-types.php:72
483
  #: includes/class-wp-job-manager-post-types.php:115
494
  #: includes/class-wp-job-manager-post-types.php:117
495
  #: includes/class-wp-job-manager-post-types.php:163
496
  msgid "Edit %s"
497
+ msgstr "Endre %s"
498
 
499
  #: includes/class-wp-job-manager-post-types.php:75
500
  #: includes/class-wp-job-manager-post-types.php:118
501
  msgid "Update %s"
502
+ msgstr "Oppdater %s"
503
 
504
  #: includes/class-wp-job-manager-post-types.php:76
505
  #: includes/class-wp-job-manager-post-types.php:119
506
  msgid "Add New %s"
507
+ msgstr "Legg til ny %s"
508
 
509
  #: includes/class-wp-job-manager-post-types.php:77
510
  #: includes/class-wp-job-manager-post-types.php:120
511
  msgid "New %s Name"
512
+ msgstr "Nytt %s Navn"
513
 
514
  #: includes/class-wp-job-manager-post-types.php:92
515
  msgid "Job Type"
516
+ msgstr "Jobbtype"
517
 
518
  #: includes/class-wp-job-manager-post-types.php:93
519
  msgid "Job Types"
520
+ msgstr "Jobbtyper"
521
 
522
  #: includes/class-wp-job-manager-post-types.php:97
523
  msgctxt "Job type slug - resave permalinks after changing this"
524
  msgid "job-type"
525
+ msgstr "jobb-type"
526
 
527
  #: includes/class-wp-job-manager-post-types.php:137
528
  msgid "Job Listing"
529
+ msgstr "Stillinger"
530
 
531
  #: includes/class-wp-job-manager-post-types.php:141
532
  msgctxt "Post type archive slug - resave permalinks after changing this"
533
  msgid "jobs"
534
+ msgstr "jobber"
535
 
536
  #: includes/class-wp-job-manager-post-types.php:147
537
  msgctxt "Job permalink - resave permalinks after changing this"
538
  msgid "job"
539
+ msgstr "jobb"
540
 
541
  #: includes/class-wp-job-manager-post-types.php:160
542
  msgid "Add New"
543
+ msgstr "Legg til ny"
544
 
545
  #: includes/class-wp-job-manager-post-types.php:161
546
  msgid "Add %s"
547
+ msgstr "Legg til %s"
548
 
549
  #: includes/class-wp-job-manager-post-types.php:164
550
  msgid "New %s"
551
+ msgstr "Ny %s"
552
 
553
  #: includes/class-wp-job-manager-post-types.php:165
554
  #: includes/class-wp-job-manager-post-types.php:166
555
  msgid "View %s"
556
+ msgstr "Vis %s"
557
 
558
  #: includes/class-wp-job-manager-post-types.php:168
559
  msgid "No %s found"
560
+ msgstr "Ingen %s funnet"
561
 
562
  #: includes/class-wp-job-manager-post-types.php:169
563
  msgid "No %s found in trash"
565
 
566
  #: includes/class-wp-job-manager-post-types.php:172
567
  msgid "This is where you can create and manage job listings."
568
+ msgstr "Her kan du opprette og administrere dine jobbprofiler."
569
 
570
  #: includes/class-wp-job-manager-post-types.php:207
571
  msgctxt "job_listing"
572
  msgid "Expired"
573
+ msgstr "Utgått"
574
 
575
  #: includes/class-wp-job-manager-post-types.php:212
576
  msgid "Expired <span class=\"count\">(%s)</span>"
577
  msgid_plural "Expired <span class=\"count\">(%s)</span>"
578
+ msgstr[0] "Utgått <span class=\"count\">(%s)</span>"
579
+ msgstr[1] "Utgått <span class=\"count\">(%s)</span>"
580
 
581
  #: includes/class-wp-job-manager-shortcodes.php:61
582
  msgid "Invalid Job ID"
583
+ msgstr "Ugyldig Jobb-ID"
584
 
585
  #: includes/class-wp-job-manager-shortcodes.php:67
586
  msgid "This job is already filled"
588
 
589
  #: includes/class-wp-job-manager-shortcodes.php:73
590
  msgid "%s has been filled"
591
+ msgstr "% er fylt ut"
592
 
593
  #: includes/class-wp-job-manager-shortcodes.php:78
594
  msgid "This job is already not filled"
596
 
597
  #: includes/class-wp-job-manager-shortcodes.php:84
598
  msgid "%s has been marked as not filled"
599
+ msgstr "% gjenstår av utfyllingen"
600
 
601
  #: includes/class-wp-job-manager-shortcodes.php:91
602
  msgid "%s has been deleted"
603
+ msgstr "%s har blitt slettet"
604
 
605
  #: includes/class-wp-job-manager-shortcodes.php:111
606
  msgid "You need to be signed in to manage your job listings."
607
+ msgstr "Du må være innlogget for å redigerer dine oppføringer"
608
 
609
  #: includes/class-wp-job-manager-shortcodes.php:204
610
  #: includes/class-wp-job-manager-shortcodes.php:235
611
  msgid "Load more job listings"
612
+ msgstr "Last inn flere jobber"
613
 
614
  #: includes/class-wp-job-manager-widgets.php:139
615
  msgid "Display a list of the most recent jobs on your site."
616
+ msgstr "Vis en liste over de nyeste jobbene på siden"
617
 
618
  #: includes/class-wp-job-manager-widgets.php:141
619
  msgid "Recent Job Listings"
620
+ msgstr "Nyeste jobber"
621
 
622
  #: includes/class-wp-job-manager-widgets.php:145
623
  msgid "Recent Jobs"
624
+ msgstr "Nyeste jobber"
625
 
626
  #: includes/class-wp-job-manager-widgets.php:146
627
  msgid "Title"
628
+ msgstr "Tittel"
629
 
630
  #: includes/class-wp-job-manager-widgets.php:154
631
  msgid "Number of jobs to show"
632
+ msgstr "Antall jobber å vise"
633
 
634
  #: includes/forms/class-wp-job-manager-form-edit-job.php:43
635
  msgid "Invalid job"
636
+ msgstr "Ugyldig jobb"
637
 
638
  #: includes/forms/class-wp-job-manager-form-edit-job.php:86
639
  msgid "Update job listing"
640
+ msgstr "Oppdater jobbprofil"
641
 
642
  #: includes/forms/class-wp-job-manager-form-edit-job.php:112
643
  msgid "Your changes have been saved."
644
+ msgstr "Dine endringer er lagret."
645
 
646
  #: includes/forms/class-wp-job-manager-form-edit-job.php:112
647
  msgid "View Job Listing &rarr;"
648
+ msgstr "Vis Jobbprofil %rarr;"
649
 
650
  #: includes/forms/class-wp-job-manager-form-submit-job.php:22
651
  msgid "Submit Details"
652
+ msgstr "Lagre detaljene"
653
 
654
  #: includes/forms/class-wp-job-manager-form-submit-job.php:28
655
  #: includes/forms/class-wp-job-manager-form-submit-job.php:606
656
  msgid "Preview"
657
+ msgstr "Forhåndsvis"
658
 
659
  #: includes/forms/class-wp-job-manager-form-submit-job.php:34
660
  msgid "Done"
661
+ msgstr "Fullført"
662
 
663
  #: includes/forms/class-wp-job-manager-form-submit-job.php:107
664
  msgid "Application email"
666
 
667
  #: includes/forms/class-wp-job-manager-form-submit-job.php:108
668
  msgid "you@yourdomain.com"
669
+ msgstr "eksempel@dittdomene.no"
670
 
671
  #: includes/forms/class-wp-job-manager-form-submit-job.php:111
672
  msgid "Application URL"
675
  #: includes/forms/class-wp-job-manager-form-submit-job.php:112
676
  #: includes/forms/class-wp-job-manager-form-submit-job.php:182
677
  msgid "http://"
678
+ msgstr "http://"
679
 
680
  #: includes/forms/class-wp-job-manager-form-submit-job.php:116
681
  msgid "Enter an email address or website URL"
682
+ msgstr "Fyll inn en e-postadresse eller URL-adresse"
683
 
684
  #: includes/forms/class-wp-job-manager-form-submit-job.php:123
685
  msgid "Job title"
686
+ msgstr "Jobbtittel"
687
 
688
  #: includes/forms/class-wp-job-manager-form-submit-job.php:138
689
  msgid "Job type"
691
 
692
  #: includes/forms/class-wp-job-manager-form-submit-job.php:147
693
  msgid "Job category"
694
+ msgstr "Jobbkategori"
695
 
696
  #: includes/forms/class-wp-job-manager-form-submit-job.php:156
697
  msgid "Description"
698
+ msgstr "Beskrivelse"
699
 
700
  #: includes/forms/class-wp-job-manager-form-submit-job.php:175
701
  msgid "Enter the name of the company"
702
+ msgstr "Fyll inn navnet på bedriften"
703
 
704
  #: includes/forms/class-wp-job-manager-form-submit-job.php:179
705
  #: templates/content-single-job_listing.php:36
706
  msgid "Website"
707
+ msgstr "Nettside"
708
 
709
  #: includes/forms/class-wp-job-manager-form-submit-job.php:186
710
  msgid "Tagline"
712
 
713
  #: includes/forms/class-wp-job-manager-form-submit-job.php:189
714
  msgid "Briefly describe your company"
715
+ msgstr "Gi en kort beskrivelse av bedriften"
716
 
717
  #: includes/forms/class-wp-job-manager-form-submit-job.php:194
718
  msgid "Twitter username"
719
+ msgstr "Twitter-brukernavn"
720
 
721
  #: includes/forms/class-wp-job-manager-form-submit-job.php:197
722
  msgid "@yourcompany"
723
+ msgstr "@dinbedrift"
724
 
725
  #: includes/forms/class-wp-job-manager-form-submit-job.php:201
726
  msgid "Logo"
727
+ msgstr "Logo"
728
 
729
  #: includes/forms/class-wp-job-manager-form-submit-job.php:314
730
  msgid "%s is a required field"
731
+ msgstr "%s er et obligatorisk felt"
732
 
733
  #: includes/forms/class-wp-job-manager-form-submit-job.php:325
734
  msgid "Please enter a valid application email address"
735
+ msgstr "Vennligst fyll inn en gyldig e-postadresse"
736
 
737
  #: includes/forms/class-wp-job-manager-form-submit-job.php:330
738
  msgid "Please enter a valid application URL"
739
+ msgstr "Vennligst fyll inn en gyldig URL-adresse"
740
 
741
  #: includes/forms/class-wp-job-manager-form-submit-job.php:335
742
  msgid "Please enter a valid application email address or URL"
743
+ msgstr "Vennligst fyll inn en gyldig e-postadresse eller URL-adresse"
744
 
745
  #: includes/forms/class-wp-job-manager-form-submit-job.php:456
746
  msgid "Preview job listing &rarr;"
747
+ msgstr "Forhåndsvis jobben"
748
 
749
  #: includes/forms/class-wp-job-manager-form-submit-job.php:492
750
  msgid "You must be signed in to post a new job listing."
751
+ msgstr "Du må være logget inn for å legge til en ny jobb"
752
 
753
  #: includes/forms/class-wp-job-manager-form-submit-job.php:600
754
  msgid "Submit Listing &rarr;"
755
+ msgstr "Send inn profil &rarr;"
756
 
757
  #: includes/forms/class-wp-job-manager-form-submit-job.php:601
758
  msgid "&larr; Edit listing"
760
 
761
  #: includes/forms/class-wp-job-manager-form-submit-job.php:684
762
  msgid "\"%s\" needs to be one of the following file types: %s"
763
+ msgstr "\"%s\" må være av følgende typer: %s"
764
 
765
  #: templates/account-signin.php:4
766
  msgid "Your account"
767
+ msgstr "Din konto"
768
 
769
  #: templates/account-signin.php:8
770
  msgid "You are currently signed in as <strong>%s</strong>."
771
+ msgstr "Du er logget inn som <strong>%s</strong>."
772
 
773
  #: templates/account-signin.php:11
774
  msgid "Sign out"
775
+ msgstr "Logg ut"
776
 
777
  #: templates/account-signin.php:21
778
  msgid "Have an account?"
779
+ msgstr "Har du en konto?"
780
 
781
  #: templates/account-signin.php:23
782
  msgid "Sign in"
783
+ msgstr "Logg inn"
784
 
785
  #: templates/account-signin.php:27
786
  msgid ""
787
  "If you don&rsquo;t have an account you can %screate one below by entering "
788
  "your email address. A password will be automatically emailed to you."
789
+ msgstr "Dersom du ikke har en konto, kan du %sopprette en nedenfor ved å fylle inn din e-postadresse. Et passord vil automatisk bli sendt til deg."
790
 
791
  #: templates/account-signin.php:27
792
  msgid "optionally"
793
+ msgstr "valgfritt"
794
 
795
  #: templates/account-signin.php:31
796
  msgid "You must sign in to create a new job listing."
797
+ msgstr "Du må være logget inn for å opprette nye jobbprofiler."
798
 
799
  #: templates/account-signin.php:38
800
  msgid "Your email"
801
+ msgstr "Din e-post"
802
 
803
  #: templates/account-signin.php:38 templates/job-submit.php:24
804
  #: templates/job-submit.php:41
805
  msgid "(optional)"
806
+ msgstr "(valgfritt)"
807
 
808
  #: templates/content-job_listing.php:16
809
  #: templates/content-single-job_listing.php:21
810
  #: templates/content-summary-job_listing.php:14
811
  msgid "Posted %s ago"
812
+ msgstr "Postet %s siden"
813
 
814
  #: templates/content-no-jobs-found.php:1
815
  msgid "No more jobs found matching your selection."
816
+ msgstr "Ingen flere jobber samsvarer med dine valg."
817
 
818
  #: templates/content-single-job_listing.php:8
819
  msgid "This job listing has expired"
820
+ msgstr "Denne jobben er utgått"
821
 
822
  #: templates/content-single-job_listing.php:24
823
  msgid "This position has been filled"
824
+ msgstr "Denne stillingen er besatt"
825
 
826
  #: templates/form-fields/file-field.php:6
827
  msgid "remove"
828
+ msgstr "fjern"
829
 
830
  #: templates/form-fields/file-field.php:6
831
  msgid "or"
832
+ msgstr "eller"
833
 
834
  #: templates/form-fields/file-field.php:16
835
  msgid "Max. file size: %s."
836
+ msgstr "Maks filstørrelse: %s."
837
 
838
  #: templates/job-application-email.php:1
839
  msgid ""
840
  "To apply for this job <strong>email your details to</strong> <a "
841
  "class=\"job_application_email\" href=\"mailto:%1$s%2$s\">%1$s</a>"
842
+ msgstr "Søk på jobben ved å sende en <strong>e-post med dine detaljer til</strong> <a class=\"job_application_email\" href=\"mailto:%1$s%2$s\">%1$s</a>"
843
 
844
  #: templates/job-application-email.php:4
845
  msgid "Apply using webmail: "
846
+ msgstr "Søk med e-post"
847
 
848
  #: templates/job-application-url.php:1
849
  msgid ""
850
  "To apply for this job please visit the following URL: <a href=\"%1$s\" "
851
  "target=\"_blank\">%1$s &rarr;</a>"
852
+ msgstr "Vennligst benytt følgende link for å søke: <a href=\"%1$s\" target=\"_blank\">%1$s &rarr;</a>"
853
 
854
  #: templates/job-application.php:5
855
  msgid "Apply for job"
856
+ msgstr "Søk på jobb"
857
 
858
  #: templates/job-dashboard.php:2
859
  msgid ""
860
  "Your job listings are shown in the table below. Expired listings will be "
861
  "automatically removed after 30 days."
862
+ msgstr "Dine jobber er vist i vinduet nedenfor. Utgåtte jobber vil automatisk bli fjernet etter 30 dager."
863
 
864
  #: templates/job-dashboard.php:6
865
  msgid "Job Title"
866
+ msgstr "Jobbtittel"
867
 
868
  #: templates/job-dashboard.php:7
869
  msgid "Date Posted"
870
+ msgstr "Dato Postet"
871
 
872
  #: templates/job-dashboard.php:16
873
  msgid "You do not have any active job listings."
874
+ msgstr "Du har ingen aktive jobber."
875
 
876
  #: templates/job-dashboard.php:36
877
  msgid "Mark not filled"
883
 
884
  #: templates/job-filters.php:8
885
  msgid "Keywords"
886
+ msgstr "Nøkkelord"
887
 
888
  #: templates/job-filters.php:9
889
  msgid "All Jobs"
890
+ msgstr "Alle Jobber"
891
 
892
  #: templates/job-filters.php:13
893
  msgid "Location"
894
+ msgstr "Steder"
895
 
896
  #: templates/job-filters.php:14
897
  msgid "Any Location"
898
+ msgstr "Alle steder"
899
 
900
  #: templates/job-filters.php:23
901
  msgid "Category"
902
+ msgstr "Kategori"
903
 
904
  #: templates/job-filters.php:24
905
  msgid "All Job Categories"
906
+ msgstr "Alle Jobbkategorier"
907
 
908
  #: templates/job-submit.php:35
909
  msgid "Company details"
910
+ msgstr "Detaljer om bedriften"
911
 
912
  #: templates/job-submitted.php:4
913
  msgid ""
914
  "Job listed successfully. To view your job listing <a href=\"%s\">click "
915
  "here</a>."
916
+ msgstr "Jobben ble publisert. For å vise jobbprofilen, <a href=\"%s\">klikk her</a>."
917
 
918
  #: templates/job-submitted.php:7
919
  msgid ""
920
  "Job submitted successfully. Your job listing will be visible once approved."
921
+ msgstr "Jobben er sendt inn. Den vil bli publisert så fort den er godkjent."
922
 
923
  #: wp-job-manager-functions.php:224
924
  msgid "Reset"
925
+ msgstr "Tilbakestill"
926
 
927
  #: wp-job-manager-functions.php:228
928
  msgid "RSS"
929
+ msgstr "RSS"
930
 
931
  #: wp-job-manager-functions.php:278
932
  msgid "Your email address isn&#8217;t correct."
933
+ msgstr "Din e-postadresse er ikke korrekt."
934
 
935
  #: wp-job-manager-functions.php:281
936
  msgid "This email is already registered, please choose another one."
937
+ msgstr "Denne e-postadressen er allerede registrert. Vennligst prøv en annen."
938
 
939
  #: wp-job-manager-template.php:116
940
  msgid "Active"
941
+ msgstr "Aktiv"
942
 
943
  #: wp-job-manager-template.php:118
944
  msgid "Expired"
945
+ msgstr "Utgått"
946
 
947
  #: wp-job-manager-template.php:120
948
  msgid "Pending Review"
950
 
951
  #: wp-job-manager-template.php:122
952
  msgid "Inactive"
953
+ msgstr "Inaktiv"
954
 
955
  #: wp-job-manager-template.php:197
956
  msgid "Job Application via \"%s\" listing on %s"
958
 
959
  #: wp-job-manager-template.php:255
960
  msgid "Anywhere"
961
+ msgstr "Hvor som helst"
962
 
963
  #: wp-job-manager.php:97
964
  msgid "Are you sure you want to delete this job?"
965
+ msgstr "Er du sikker på at du vil slette denne jobben?"
966
 
967
  #. Plugin Name of the plugin/theme
968
  msgid "WP Job Manager"
969
+ msgstr "WP Job Manager"
970
 
971
  #. Plugin URI of the plugin/theme
972
  msgid "https://wpjobmanager.com/"
973
+ msgstr "http://wpjobmanager.com/"
974
 
975
  #. Description of the plugin/theme
976
  msgid ""
977
  "Manage job listings from the WordPress admin panel, and allow users to post "
978
  "jobs directly to your site."
979
+ msgstr "Administrer jobbene fra WordPress-panelet, og tillat brukere å legge til jobber direkte på din side."
980
 
981
  #. Author of the plugin/theme
982
  msgid "Mike Jolley"
983
+ msgstr "Mike Jolley"
984
 
985
  #. Author URI of the plugin/theme
986
  msgid "http://mikejolley.com"
987
+ msgstr "http://mikejolley.com"
languages/wp-job-manager-pl.mo ADDED
Binary file
languages/wp-job-manager-pl.po ADDED
@@ -0,0 +1,989 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2014 WP Job Manager
2
+ # This file is distributed under the same license as the WP Job Manager package.
3
+ # Translators:
4
+ # davedoes <kontakt@davedoesweb.com>, 2014
5
+ # davedoes <kontakt@davedoesweb.com>, 2014
6
+ # michalkortas <michal@kortas.info>, 2014
7
+ # michalkortas <michal@kortas.info>, 2014
8
+ msgid ""
9
+ msgstr ""
10
+ "Project-Id-Version: WP Job Manager\n"
11
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-job-manager\n"
12
+ "POT-Creation-Date: 2014-05-11 11:00:29+00:00\n"
13
+ "PO-Revision-Date: 2014-07-24 15:20+0000\n"
14
+ "Last-Translator: michalkortas <michal@kortas.info>\n"
15
+ "Language-Team: Polish (http://www.transifex.com/projects/p/wp-job-manager/language/pl/)\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Language: pl\n"
20
+ "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
21
+
22
+ #: includes/admin/class-wp-job-manager-addons.php:50
23
+ #: includes/admin/class-wp-job-manager-admin.php:60
24
+ msgid "WP Job Manager Add-ons"
25
+ msgstr "Dodatki WP Job Manager"
26
+
27
+ #: includes/admin/class-wp-job-manager-addons.php:51
28
+ msgid ""
29
+ "Buying multiple add-ons? <a href=\"%s\">Check out the core add-on bundle "
30
+ "&rarr;</a>"
31
+ msgstr "Kupujesz wiele dodatków? <a href=\"%s\">Sprawdź pakiet łączony &rarr;</a>"
32
+
33
+ #: includes/admin/class-wp-job-manager-admin.php:57
34
+ msgid "Settings"
35
+ msgstr "Ustawienia"
36
+
37
+ #: includes/admin/class-wp-job-manager-admin.php:60
38
+ msgid "Add-ons"
39
+ msgstr "Dodatki"
40
+
41
+ #: includes/admin/class-wp-job-manager-cpt.php:44
42
+ #: includes/admin/class-wp-job-manager-cpt.php:45
43
+ msgid "Approve Jobs"
44
+ msgstr "Zatwierdź oferty pracy"
45
+
46
+ #: includes/admin/class-wp-job-manager-cpt.php:47
47
+ #: includes/admin/class-wp-job-manager-cpt.php:48
48
+ msgid "Expire Jobs"
49
+ msgstr "Praca kończy się"
50
+
51
+ #: includes/admin/class-wp-job-manager-cpt.php:135
52
+ #: includes/admin/class-wp-job-manager-cpt.php:137
53
+ msgid "%s approved"
54
+ msgstr "%s zatwierdzonych"
55
+
56
+ #: includes/admin/class-wp-job-manager-cpt.php:155
57
+ #: includes/admin/class-wp-job-manager-cpt.php:157
58
+ msgid "%s expired"
59
+ msgstr "%s zakończyła się"
60
+
61
+ #: includes/admin/class-wp-job-manager-cpt.php:200
62
+ msgid "Select a category"
63
+ msgstr "Wybierz kategorię"
64
+
65
+ #: includes/admin/class-wp-job-manager-cpt.php:233
66
+ msgid "Job position title"
67
+ msgstr "Tytuł"
68
+
69
+ #: includes/admin/class-wp-job-manager-cpt.php:249
70
+ msgid "Job listing updated. <a href=\"%s\">View Job</a>"
71
+ msgstr "Zaktualizowano listę. <a href=\"%s\">Pokaż oferty</a>"
72
+
73
+ #: includes/admin/class-wp-job-manager-cpt.php:250
74
+ msgid "Custom field updated."
75
+ msgstr "Pole niestandardowe zostało aktualizowane."
76
+
77
+ #: includes/admin/class-wp-job-manager-cpt.php:251
78
+ msgid "Custom field deleted."
79
+ msgstr "Pole niestandardowe zostało usunięte."
80
+
81
+ #: includes/admin/class-wp-job-manager-cpt.php:252
82
+ msgid "Job listing updated."
83
+ msgstr "Oferta pracy została zaktualizowana."
84
+
85
+ #: includes/admin/class-wp-job-manager-cpt.php:253
86
+ msgid "Job listing restored to revision from %s"
87
+ msgstr "Oferta pracy została przywrócona do wersji korekty z %s"
88
+
89
+ #: includes/admin/class-wp-job-manager-cpt.php:254
90
+ msgid "Job listing published. <a href=\"%s\">View Job</a>"
91
+ msgstr "Oferta pracy została opublikowana. <a href=\"%s\">Zobacz</a>"
92
+
93
+ #: includes/admin/class-wp-job-manager-cpt.php:255
94
+ msgid "Job listing saved."
95
+ msgstr "Oferta pracy została zapisana."
96
+
97
+ #: includes/admin/class-wp-job-manager-cpt.php:256
98
+ msgid "Job listing submitted. <a target=\"_blank\" href=\"%s\">Preview Job</a>"
99
+ msgstr "Oferta pracy została wysłana. <a target=\"_blank\" href=\"%s\">Podgląd</a>"
100
+
101
+ #: includes/admin/class-wp-job-manager-cpt.php:257
102
+ msgid ""
103
+ "Job listing scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" "
104
+ "href=\"%2$s\">Preview Job</a>"
105
+ msgstr "Lista ofert prac zaplanowanych: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s\">Podgląd</a>"
106
+
107
+ #: includes/admin/class-wp-job-manager-cpt.php:258
108
+ msgid "M j, Y @ G:i"
109
+ msgstr "M d, R @ G:m"
110
+
111
+ #: includes/admin/class-wp-job-manager-cpt.php:259
112
+ msgid "Job listing draft updated. <a target=\"_blank\" href=\"%s\">Preview Job</a>"
113
+ msgstr "Wersja robocza oferty pracy została zaktualizowana. <a target=\"_blank\" href=\"%s\">Podgląd</a>"
114
+
115
+ #: includes/admin/class-wp-job-manager-cpt.php:278
116
+ msgid "Type"
117
+ msgstr "Typ"
118
+
119
+ #: includes/admin/class-wp-job-manager-cpt.php:279
120
+ msgid "Position"
121
+ msgstr "Pozycja"
122
+
123
+ #: includes/admin/class-wp-job-manager-cpt.php:280
124
+ msgid "Posted"
125
+ msgstr "Wprowadzone przez"
126
+
127
+ #: includes/admin/class-wp-job-manager-cpt.php:281
128
+ #: templates/job-dashboard.php:9
129
+ msgid "Expires"
130
+ msgstr "Zakończenie"
131
+
132
+ #: includes/admin/class-wp-job-manager-cpt.php:283
133
+ msgid "Categories"
134
+ msgstr "Kategorie"
135
+
136
+ #: includes/admin/class-wp-job-manager-cpt.php:284
137
+ msgid "Featured?"
138
+ msgstr "Wyróżnić?"
139
+
140
+ #: includes/admin/class-wp-job-manager-cpt.php:285
141
+ #: templates/job-dashboard.php:10
142
+ msgid "Filled?"
143
+ msgstr "Czy oferta jest dostępna?"
144
+
145
+ #: includes/admin/class-wp-job-manager-cpt.php:286
146
+ #: templates/job-dashboard.php:8
147
+ msgid "Status"
148
+ msgstr "Status"
149
+
150
+ #: includes/admin/class-wp-job-manager-cpt.php:287
151
+ msgid "Actions"
152
+ msgstr "Akcje"
153
+
154
+ #: includes/admin/class-wp-job-manager-cpt.php:310
155
+ msgid "Job ID: %d"
156
+ msgstr "ID pracy: %d"
157
+
158
+ #: includes/admin/class-wp-job-manager-cpt.php:336
159
+ #: includes/admin/class-wp-job-manager-cpt.php:341
160
+ msgid "M j, Y"
161
+ msgstr "M d, R"
162
+
163
+ #: includes/admin/class-wp-job-manager-cpt.php:337
164
+ msgid "by a guest"
165
+ msgstr "przez gościa"
166
+
167
+ #: includes/admin/class-wp-job-manager-cpt.php:337
168
+ msgid "by %s"
169
+ msgstr "przez %s"
170
+
171
+ #: includes/admin/class-wp-job-manager-cpt.php:354
172
+ msgid "Approve"
173
+ msgstr "Zatwierdź"
174
+
175
+ #: includes/admin/class-wp-job-manager-cpt.php:361
176
+ msgid "View"
177
+ msgstr "Zobacz"
178
+
179
+ #: includes/admin/class-wp-job-manager-cpt.php:366
180
+ #: includes/class-wp-job-manager-post-types.php:162
181
+ #: templates/job-dashboard.php:33
182
+ msgid "Edit"
183
+ msgstr "Edytuj"
184
+
185
+ #: includes/admin/class-wp-job-manager-cpt.php:371
186
+ #: templates/job-dashboard.php:43
187
+ msgid "Delete"
188
+ msgstr "Usuń"
189
+
190
+ #: includes/admin/class-wp-job-manager-settings.php:42
191
+ #: includes/class-wp-job-manager-post-types.php:138
192
+ #: includes/class-wp-job-manager-post-types.php:228
193
+ msgid "Job Listings"
194
+ msgstr "Oferty pracy"
195
+
196
+ #: includes/admin/class-wp-job-manager-settings.php:48
197
+ msgid "Jobs per page"
198
+ msgstr "Oferty pracy na stronę"
199
+
200
+ #: includes/admin/class-wp-job-manager-settings.php:49
201
+ msgid "How many jobs should be shown per page by default?"
202
+ msgstr "Ile ofert pracy powinno być domyślnie widocznych na jednej stronie?"
203
+
204
+ #: includes/admin/class-wp-job-manager-settings.php:55
205
+ msgid "Filled positions"
206
+ msgstr "Zajęte oferty pracy"
207
+
208
+ #: includes/admin/class-wp-job-manager-settings.php:56
209
+ msgid "Hide filled positions"
210
+ msgstr "Ukryj zajęte oferty pracy"
211
+
212
+ #: includes/admin/class-wp-job-manager-settings.php:57
213
+ msgid "If enabled, filled positions will be hidden from the job list."
214
+ msgstr "Jeśli włączone, zajęte oferty pracy będą wyłączone."
215
+
216
+ #: includes/admin/class-wp-job-manager-settings.php:64
217
+ msgid "Job categories"
218
+ msgstr "Kategorie"
219
+
220
+ #: includes/admin/class-wp-job-manager-settings.php:65
221
+ msgid "Enable job categories"
222
+ msgstr "Włącz kategorie"
223
+
224
+ #: includes/admin/class-wp-job-manager-settings.php:66
225
+ msgid ""
226
+ "Choose whether to enable job categories. Categories must be setup by an "
227
+ "admin for users to choose during job submission."
228
+ msgstr "Wybierz, czy włączyć kategorie ofert pracy. Kategorie muszą być wcześniej ustawione przez administratora, aby użytkownik mógł je wybrać podczas składania wniosku o pracę."
229
+
230
+ #: includes/admin/class-wp-job-manager-settings.php:73
231
+ msgid "Job Submission"
232
+ msgstr "Wniosek o pracę"
233
+
234
+ #: includes/admin/class-wp-job-manager-settings.php:78
235
+ msgid "Account creation"
236
+ msgstr "Tworzenie konta"
237
+
238
+ #: includes/admin/class-wp-job-manager-settings.php:79
239
+ msgid "Allow account creation"
240
+ msgstr "Pozwól na tworzenie konta"
241
+
242
+ #: includes/admin/class-wp-job-manager-settings.php:80
243
+ msgid ""
244
+ "If enabled, non-logged in users will be able to create an account by "
245
+ "entering their email address on the job submission form."
246
+ msgstr "Jeśli włączone, niezalogowani użytkownicy będą mogli utworzyć konto poprzez wprowadzenie swojego adresu email w tworzonym wniosku o pracę."
247
+
248
+ #: includes/admin/class-wp-job-manager-settings.php:87
249
+ msgid "Account Role"
250
+ msgstr "Uprawnienia konta"
251
+
252
+ #: includes/admin/class-wp-job-manager-settings.php:88
253
+ msgid ""
254
+ "If you enable registration on your job submission form, choose a role for "
255
+ "the new user."
256
+ msgstr "Jeśli włączysz rejestrację w formularzu pracy, wybierz uprawnienia nowego użytkownika."
257
+
258
+ #: includes/admin/class-wp-job-manager-settings.php:95
259
+ msgid "Account required"
260
+ msgstr "Posiadanie konta jest wymagane"
261
+
262
+ #: includes/admin/class-wp-job-manager-settings.php:96
263
+ msgid "Job submission requires an account"
264
+ msgstr "Wniosek o pracę wymaga konta"
265
+
266
+ #: includes/admin/class-wp-job-manager-settings.php:97
267
+ msgid ""
268
+ "If disabled, non-logged in users will be able to submit job listings without"
269
+ " creating an account."
270
+ msgstr "Jeśli wyłączone, niezalogowani użytkownicy będą mogli wysyłać oferty pracy bez zakładania konta."
271
+
272
+ #: includes/admin/class-wp-job-manager-settings.php:104
273
+ msgid "Approval Required"
274
+ msgstr "Wymagane jest zatwierdzenie"
275
+
276
+ #: includes/admin/class-wp-job-manager-settings.php:105
277
+ msgid "New submissions require admin approval"
278
+ msgstr "Nowe wnioski wymagają zatwierdzenia przez administratora"
279
+
280
+ #: includes/admin/class-wp-job-manager-settings.php:106
281
+ msgid "If enabled, new submissions will be inactive, pending admin approval."
282
+ msgstr "Jeśli włączone, nowe wnioski pozostaną nieaktywne, do czasu zatwierdzenia ich przez administratora."
283
+
284
+ #: includes/admin/class-wp-job-manager-settings.php:113
285
+ msgid "Listing duration"
286
+ msgstr "Czas trwania oferty"
287
+
288
+ #: includes/admin/class-wp-job-manager-settings.php:114
289
+ msgid ""
290
+ "How many <strong>days</strong> listings are live before expiring. Can be "
291
+ "left blank to never expire."
292
+ msgstr "Ile <strong>dni</strong> oferty mają być aktywne zanim wygasną. Puste pole oznacza, że oferta nigdy nie wygasa."
293
+
294
+ #: includes/admin/class-wp-job-manager-settings.php:120
295
+ msgid "Application method"
296
+ msgstr "Metoda aplikowania"
297
+
298
+ #: includes/admin/class-wp-job-manager-settings.php:121
299
+ msgid "Choose what employers can use for their job application method."
300
+ msgstr "Wybierz to, co pracodawca może użyć do rekrutacji."
301
+
302
+ #: includes/admin/class-wp-job-manager-settings.php:124
303
+ msgid "Email address or website URL"
304
+ msgstr "Adres email lub strona WWW"
305
+
306
+ #: includes/admin/class-wp-job-manager-settings.php:125
307
+ msgid "Email addresses only"
308
+ msgstr "Tylko adres email"
309
+
310
+ #: includes/admin/class-wp-job-manager-settings.php:126
311
+ msgid "Website URLs only"
312
+ msgstr "Tylko adres strony WWW"
313
+
314
+ #: includes/admin/class-wp-job-manager-settings.php:132
315
+ msgid "Submit Page Slug"
316
+ msgstr "Wyślij unikalną nazwę strony"
317
+
318
+ #: includes/admin/class-wp-job-manager-settings.php:133
319
+ msgid ""
320
+ "Enter the slug of the page where you have placed the [submit_job_form] "
321
+ "shortcode. This lets the plugin know where the form is located."
322
+ msgstr "Wpisz unikalną nazwę strony, w której umieścisz kod [submit_job_form]. To pozwoli pluginowi wiedzieć, gdzie formularz ma zostać wyświetlony."
323
+
324
+ #: includes/admin/class-wp-job-manager-settings.php:185
325
+ msgid "Settings successfully saved"
326
+ msgstr "Ustawienia zostały pomyślnie zapisane"
327
+
328
+ #: includes/admin/class-wp-job-manager-settings.php:264
329
+ msgid "Save Changes"
330
+ msgstr "Zmiany zostały zapisane"
331
+
332
+ #: includes/admin/class-wp-job-manager-writepanels.php:27
333
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:130
334
+ msgid "Job location"
335
+ msgstr "Lokalizacja pracy"
336
+
337
+ #: includes/admin/class-wp-job-manager-writepanels.php:28
338
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:134
339
+ msgid "e.g. \"London, UK\", \"New York\", \"Houston, TX\""
340
+ msgstr "mp. \"Warszawa, PL\", \"Kraków\", \"Bydgoszcz, kujawsko-pomorskie\""
341
+
342
+ #: includes/admin/class-wp-job-manager-writepanels.php:29
343
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:131
344
+ msgid ""
345
+ "Leave this blank if the job can be done from anywhere (i.e. telecommuting)"
346
+ msgstr "Zostaw to miejsce puste, jeśli praca może być wykonywana gdziekolwiek (praca zdalna)"
347
+
348
+ #: includes/admin/class-wp-job-manager-writepanels.php:32
349
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:115
350
+ msgid "Application email/URL"
351
+ msgstr "Email lub URL do rekrutacji"
352
+
353
+ #: includes/admin/class-wp-job-manager-writepanels.php:33
354
+ msgid "URL or email which applicants use to apply"
355
+ msgstr "URL lub email, którego aplikant używa do zatwierdzenia"
356
+
357
+ #: includes/admin/class-wp-job-manager-writepanels.php:36
358
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:172
359
+ msgid "Company name"
360
+ msgstr "Nazwa firmy"
361
+
362
+ #: includes/admin/class-wp-job-manager-writepanels.php:40
363
+ msgid "Company website"
364
+ msgstr "Strona WWW firmy"
365
+
366
+ #: includes/admin/class-wp-job-manager-writepanels.php:44
367
+ msgid "Company tagline"
368
+ msgstr "Slogan firmy"
369
+
370
+ #: includes/admin/class-wp-job-manager-writepanels.php:45
371
+ msgid "Brief description about the company"
372
+ msgstr "Krótki opis firmy"
373
+
374
+ #: includes/admin/class-wp-job-manager-writepanels.php:48
375
+ msgid "Company Twitter"
376
+ msgstr "Konto na Twitterze"
377
+
378
+ #: includes/admin/class-wp-job-manager-writepanels.php:52
379
+ msgid "Company logo"
380
+ msgstr "Logo firmy"
381
+
382
+ #: includes/admin/class-wp-job-manager-writepanels.php:53
383
+ msgid "URL to the company logo"
384
+ msgstr "URL do loga firmy"
385
+
386
+ #: includes/admin/class-wp-job-manager-writepanels.php:57
387
+ msgid "Position filled?"
388
+ msgstr "Czy oferta pracy jest została zajęta?"
389
+
390
+ #: includes/admin/class-wp-job-manager-writepanels.php:61
391
+ msgid "Feature this job listing?"
392
+ msgstr "Wyróżnić tę ofertę pracy?"
393
+
394
+ #: includes/admin/class-wp-job-manager-writepanels.php:63
395
+ msgid ""
396
+ "Featured listings will be sticky during searches, and can be styled "
397
+ "differently."
398
+ msgstr "Wyróżnione oferty pracy będą na stałe widoczne podczas wyszukiwania i mogą być wyróżnione w inny sposób."
399
+
400
+ #: includes/admin/class-wp-job-manager-writepanels.php:66
401
+ msgid "Job Expires"
402
+ msgstr "Zakończenie pracy"
403
+
404
+ #: includes/admin/class-wp-job-manager-writepanels.php:67
405
+ msgid "yyyy-mm-dd"
406
+ msgstr "rrrr-mm-dd"
407
+
408
+ #: includes/admin/class-wp-job-manager-writepanels.php:70
409
+ msgid "Posted by"
410
+ msgstr "Wprowadzone przez"
411
+
412
+ #: includes/admin/class-wp-job-manager-writepanels.php:83
413
+ msgid "Job Listing Data"
414
+ msgstr "Data dodania oferty"
415
+
416
+ #: includes/admin/class-wp-job-manager-writepanels.php:101
417
+ msgid "Use file"
418
+ msgstr "Użyj pliku"
419
+
420
+ #: includes/admin/class-wp-job-manager-writepanels.php:101
421
+ msgid "Upload"
422
+ msgstr "Wyślij na serwer"
423
+
424
+ #: includes/admin/class-wp-job-manager-writepanels.php:269
425
+ msgid "Guest user"
426
+ msgstr "Gość"
427
+
428
+ #: includes/class-wp-job-manager-ajax.php:111
429
+ msgid "Showing %s&ldquo;%s&rdquo; %sjobs"
430
+ msgstr "Oferty pracy %s"
431
+
432
+ #: includes/class-wp-job-manager-ajax.php:113
433
+ msgid "Showing all %s%sjobs"
434
+ msgstr "Oferty pracy: %s"
435
+
436
+ #: includes/class-wp-job-manager-ajax.php:116
437
+ msgid "located in &ldquo;%s&rdquo;"
438
+ msgstr "lokalizacja w &ldquo;%s&rdquo;"
439
+
440
+ #: includes/class-wp-job-manager-geocode.php:139
441
+ msgid "No results found"
442
+ msgstr "Nic nie znaleziono"
443
+
444
+ #: includes/class-wp-job-manager-geocode.php:143
445
+ msgid "Query limit reached"
446
+ msgstr "Osiągnięto limit zapytania"
447
+
448
+ #: includes/class-wp-job-manager-geocode.php:149
449
+ #: includes/class-wp-job-manager-geocode.php:153
450
+ #: includes/class-wp-job-manager-geocode.php:157
451
+ msgid "Geocoding error"
452
+ msgstr "Błąd auto-lokalizacji"
453
+
454
+ #: includes/class-wp-job-manager-install.php:39
455
+ msgid "Employer"
456
+ msgstr "Pracodawca"
457
+
458
+ #: includes/class-wp-job-manager-post-types.php:48
459
+ msgid "Job Category"
460
+ msgstr "Kategoria pracy"
461
+
462
+ #: includes/class-wp-job-manager-post-types.php:49
463
+ msgid "Job Categories"
464
+ msgstr "Kategorie pracy"
465
+
466
+ #: includes/class-wp-job-manager-post-types.php:53
467
+ msgctxt "Job category slug - resave permalinks after changing this"
468
+ msgid "job-category"
469
+ msgstr "kategorie-pracy"
470
+
471
+ #: includes/class-wp-job-manager-post-types.php:70
472
+ #: includes/class-wp-job-manager-post-types.php:113
473
+ #: includes/class-wp-job-manager-post-types.php:167
474
+ msgid "Search %s"
475
+ msgstr "Wyszukaj %s"
476
+
477
+ #: includes/class-wp-job-manager-post-types.php:71
478
+ #: includes/class-wp-job-manager-post-types.php:114
479
+ #: includes/class-wp-job-manager-post-types.php:159
480
+ msgid "All %s"
481
+ msgstr "Wszystkie %s"
482
+
483
+ #: includes/class-wp-job-manager-post-types.php:72
484
+ #: includes/class-wp-job-manager-post-types.php:115
485
+ #: includes/class-wp-job-manager-post-types.php:170
486
+ msgid "Parent %s"
487
+ msgstr "Nadrzędna %s"
488
+
489
+ #: includes/class-wp-job-manager-post-types.php:73
490
+ #: includes/class-wp-job-manager-post-types.php:116
491
+ msgid "Parent %s:"
492
+ msgstr "Nadrzędna %s:"
493
+
494
+ #: includes/class-wp-job-manager-post-types.php:74
495
+ #: includes/class-wp-job-manager-post-types.php:117
496
+ #: includes/class-wp-job-manager-post-types.php:163
497
+ msgid "Edit %s"
498
+ msgstr "Edytuj %s"
499
+
500
+ #: includes/class-wp-job-manager-post-types.php:75
501
+ #: includes/class-wp-job-manager-post-types.php:118
502
+ msgid "Update %s"
503
+ msgstr "Zaktualizuj %s"
504
+
505
+ #: includes/class-wp-job-manager-post-types.php:76
506
+ #: includes/class-wp-job-manager-post-types.php:119
507
+ msgid "Add New %s"
508
+ msgstr "Dodaj nowy %s"
509
+
510
+ #: includes/class-wp-job-manager-post-types.php:77
511
+ #: includes/class-wp-job-manager-post-types.php:120
512
+ msgid "New %s Name"
513
+ msgstr "Nowa %s nazwa"
514
+
515
+ #: includes/class-wp-job-manager-post-types.php:92
516
+ msgid "Job Type"
517
+ msgstr "Typ pracy"
518
+
519
+ #: includes/class-wp-job-manager-post-types.php:93
520
+ msgid "Job Types"
521
+ msgstr "Rodzaje pracy"
522
+
523
+ #: includes/class-wp-job-manager-post-types.php:97
524
+ msgctxt "Job type slug - resave permalinks after changing this"
525
+ msgid "job-type"
526
+ msgstr "rodzaje-pracy"
527
+
528
+ #: includes/class-wp-job-manager-post-types.php:137
529
+ msgid "Job Listing"
530
+ msgstr "Oferty pracy"
531
+
532
+ #: includes/class-wp-job-manager-post-types.php:141
533
+ msgctxt "Post type archive slug - resave permalinks after changing this"
534
+ msgid "jobs"
535
+ msgstr "oferty"
536
+
537
+ #: includes/class-wp-job-manager-post-types.php:147
538
+ msgctxt "Job permalink - resave permalinks after changing this"
539
+ msgid "job"
540
+ msgstr "oferta"
541
+
542
+ #: includes/class-wp-job-manager-post-types.php:160
543
+ msgid "Add New"
544
+ msgstr "Dodaj nowy"
545
+
546
+ #: includes/class-wp-job-manager-post-types.php:161
547
+ msgid "Add %s"
548
+ msgstr "Dodaj %s"
549
+
550
+ #: includes/class-wp-job-manager-post-types.php:164
551
+ msgid "New %s"
552
+ msgstr "Nowy %s"
553
+
554
+ #: includes/class-wp-job-manager-post-types.php:165
555
+ #: includes/class-wp-job-manager-post-types.php:166
556
+ msgid "View %s"
557
+ msgstr "Zobacz %s"
558
+
559
+ #: includes/class-wp-job-manager-post-types.php:168
560
+ msgid "No %s found"
561
+ msgstr "Nic z %s nie znaleziono"
562
+
563
+ #: includes/class-wp-job-manager-post-types.php:169
564
+ msgid "No %s found in trash"
565
+ msgstr "Nic z %s nie znaleziono w koszu"
566
+
567
+ #: includes/class-wp-job-manager-post-types.php:172
568
+ msgid "This is where you can create and manage job listings."
569
+ msgstr "To jest tam, gdzie można tworzyć i zarządzać ofertami pracy."
570
+
571
+ #: includes/class-wp-job-manager-post-types.php:207
572
+ msgctxt "job_listing"
573
+ msgid "Expired"
574
+ msgstr "Kończy się"
575
+
576
+ #: includes/class-wp-job-manager-post-types.php:212
577
+ msgid "Expired <span class=\"count\">(%s)</span>"
578
+ msgid_plural "Expired <span class=\"count\">(%s)</span>"
579
+ msgstr[0] "Kończy się <span class=\"count\">(%s)</span>"
580
+ msgstr[1] "Kończą się <span class=\"count\">(%s)</span>"
581
+ msgstr[2] "Kończy się <span class=\"count\">(%s)</span>"
582
+
583
+ #: includes/class-wp-job-manager-shortcodes.php:61
584
+ msgid "Invalid Job ID"
585
+ msgstr "Nieprawidłowe ID oferty pracy"
586
+
587
+ #: includes/class-wp-job-manager-shortcodes.php:67
588
+ msgid "This job is already filled"
589
+ msgstr "Ta praca jest już zajęta"
590
+
591
+ #: includes/class-wp-job-manager-shortcodes.php:73
592
+ msgid "%s has been filled"
593
+ msgstr "%s zostało zajęte"
594
+
595
+ #: includes/class-wp-job-manager-shortcodes.php:78
596
+ msgid "This job is already not filled"
597
+ msgstr "Ta praca jeszcze nie jest zajęta"
598
+
599
+ #: includes/class-wp-job-manager-shortcodes.php:84
600
+ msgid "%s has been marked as not filled"
601
+ msgstr "%s zostało oznaczone jako niezajęte "
602
+
603
+ #: includes/class-wp-job-manager-shortcodes.php:91
604
+ msgid "%s has been deleted"
605
+ msgstr "%s zostało usuniete"
606
+
607
+ #: includes/class-wp-job-manager-shortcodes.php:111
608
+ msgid "You need to be signed in to manage your job listings."
609
+ msgstr "Musisz być zalogowany, aby zarządzać swoimi ofertami pracy."
610
+
611
+ #: includes/class-wp-job-manager-shortcodes.php:204
612
+ #: includes/class-wp-job-manager-shortcodes.php:235
613
+ msgid "Load more job listings"
614
+ msgstr "Załaduj więcej ofert pracy."
615
+
616
+ #: includes/class-wp-job-manager-widgets.php:139
617
+ msgid "Display a list of the most recent jobs on your site."
618
+ msgstr "Wyświetl listę ostatnio dodanych ofert pracy na Twojej stronie."
619
+
620
+ #: includes/class-wp-job-manager-widgets.php:141
621
+ msgid "Recent Job Listings"
622
+ msgstr "Najczęściej oglądane oferty pracy"
623
+
624
+ #: includes/class-wp-job-manager-widgets.php:145
625
+ msgid "Recent Jobs"
626
+ msgstr "Ostatnie prace"
627
+
628
+ #: includes/class-wp-job-manager-widgets.php:146
629
+ msgid "Title"
630
+ msgstr "Tytuł"
631
+
632
+ #: includes/class-wp-job-manager-widgets.php:154
633
+ msgid "Number of jobs to show"
634
+ msgstr "Liczba prac do pokazania"
635
+
636
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:43
637
+ msgid "Invalid job"
638
+ msgstr "Nieprawidłowa praca"
639
+
640
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:86
641
+ msgid "Update job listing"
642
+ msgstr "Zaktualizuj ofertę pracy"
643
+
644
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:112
645
+ msgid "Your changes have been saved."
646
+ msgstr "Twoje zmiany zostały zapisane"
647
+
648
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:112
649
+ msgid "View Job Listing &rarr;"
650
+ msgstr "Zobacz ofertę pracy &rarr;"
651
+
652
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:22
653
+ msgid "Submit Details"
654
+ msgstr "Prześlij szczegóły"
655
+
656
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:28
657
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:606
658
+ msgid "Preview"
659
+ msgstr "Podgląd"
660
+
661
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:34
662
+ msgid "Done"
663
+ msgstr "Zrobione"
664
+
665
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:107
666
+ msgid "Application email"
667
+ msgstr "Email rekrutacyjny"
668
+
669
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:108
670
+ msgid "you@yourdomain.com"
671
+ msgstr "ty@twojadomena.pl"
672
+
673
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:111
674
+ msgid "Application URL"
675
+ msgstr "Strona WWW aplikacji"
676
+
677
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:112
678
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:182
679
+ msgid "http://"
680
+ msgstr "http://"
681
+
682
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:116
683
+ msgid "Enter an email address or website URL"
684
+ msgstr "Wprowadź adres email lub adres URL"
685
+
686
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:123
687
+ msgid "Job title"
688
+ msgstr "Tytuł oferty"
689
+
690
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:138
691
+ msgid "Job type"
692
+ msgstr "Typ pracy"
693
+
694
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:147
695
+ msgid "Job category"
696
+ msgstr "Kategoria pracy"
697
+
698
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:156
699
+ msgid "Description"
700
+ msgstr "Opis"
701
+
702
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:175
703
+ msgid "Enter the name of the company"
704
+ msgstr "Wprowadź nazwę firmy"
705
+
706
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:179
707
+ #: templates/content-single-job_listing.php:36
708
+ msgid "Website"
709
+ msgstr "Strona WWW"
710
+
711
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:186
712
+ msgid "Tagline"
713
+ msgstr "Slogan"
714
+
715
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:189
716
+ msgid "Briefly describe your company"
717
+ msgstr "Krótki opis Twojej firmy"
718
+
719
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:194
720
+ msgid "Twitter username"
721
+ msgstr "Konto na Twitterze"
722
+
723
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:197
724
+ msgid "@yourcompany"
725
+ msgstr "@twojanazwa"
726
+
727
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:201
728
+ msgid "Logo"
729
+ msgstr "Logo"
730
+
731
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:314
732
+ msgid "%s is a required field"
733
+ msgstr "%s jest wymaganym polem"
734
+
735
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:325
736
+ msgid "Please enter a valid application email address"
737
+ msgstr "Proszę, wpisz poprawny adres email aplikacji"
738
+
739
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:330
740
+ msgid "Please enter a valid application URL"
741
+ msgstr "Proszę, wprowadź poprawny adres strony WWW aplikacji"
742
+
743
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:335
744
+ msgid "Please enter a valid application email address or URL"
745
+ msgstr "Proszę, wprowadź poprawny adres email lub adres strony WWW"
746
+
747
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:456
748
+ msgid "Preview job listing &rarr;"
749
+ msgstr "Podgląd oferty pracy &rarr;"
750
+
751
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:492
752
+ msgid "You must be signed in to post a new job listing."
753
+ msgstr "Musisz być zalogowany, aby dodać nową ofertę pracy."
754
+
755
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:600
756
+ msgid "Submit Listing &rarr;"
757
+ msgstr "Wyślij ofertę &rarr;"
758
+
759
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:601
760
+ msgid "&larr; Edit listing"
761
+ msgstr "&larr; Edytuj ofertę"
762
+
763
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:684
764
+ msgid "\"%s\" needs to be one of the following file types: %s"
765
+ msgstr "\"%s\" wymaga jednego z wymienionych typów plików: %s"
766
+
767
+ #: templates/account-signin.php:4
768
+ msgid "Your account"
769
+ msgstr "Twoje konto"
770
+
771
+ #: templates/account-signin.php:8
772
+ msgid "You are currently signed in as <strong>%s</strong>."
773
+ msgstr "Jesteś obecnie zalogowany jako <strong>%s</strong>."
774
+
775
+ #: templates/account-signin.php:11
776
+ msgid "Sign out"
777
+ msgstr "Wyloguj się"
778
+
779
+ #: templates/account-signin.php:21
780
+ msgid "Have an account?"
781
+ msgstr "Czy masz już konto?"
782
+
783
+ #: templates/account-signin.php:23
784
+ msgid "Sign in"
785
+ msgstr "Zarejestruj się"
786
+
787
+ #: templates/account-signin.php:27
788
+ msgid ""
789
+ "If you don&rsquo;t have an account you can %screate one below by entering "
790
+ "your email address. A password will be automatically emailed to you."
791
+ msgstr "Jeśli nie masz konta, możesz %s utworzyć je, wpisując Twój adres email. Hasło zostanie automatycznie wysłane na Twoją skrzynkę mailową."
792
+
793
+ #: templates/account-signin.php:27
794
+ msgid "optionally"
795
+ msgstr "opcjonalnie"
796
+
797
+ #: templates/account-signin.php:31
798
+ msgid "You must sign in to create a new job listing."
799
+ msgstr "Musisz posiadać konto, aby dodać nową ofertę pracy."
800
+
801
+ #: templates/account-signin.php:38
802
+ msgid "Your email"
803
+ msgstr "Twój email."
804
+
805
+ #: templates/account-signin.php:38 templates/job-submit.php:24
806
+ #: templates/job-submit.php:41
807
+ msgid "(optional)"
808
+ msgstr "(opcjonalne)"
809
+
810
+ #: templates/content-job_listing.php:16
811
+ #: templates/content-single-job_listing.php:21
812
+ #: templates/content-summary-job_listing.php:14
813
+ msgid "Posted %s ago"
814
+ msgstr "Opublikowane %s temu"
815
+
816
+ #: templates/content-no-jobs-found.php:1
817
+ msgid "No more jobs found matching your selection."
818
+ msgstr "Niestety, nie udało nam się znaleźć nic więcej :-("
819
+
820
+ #: templates/content-single-job_listing.php:8
821
+ msgid "This job listing has expired"
822
+ msgstr "Oferta pracy wygasła"
823
+
824
+ #: templates/content-single-job_listing.php:24
825
+ msgid "This position has been filled"
826
+ msgstr "Ta oferta pracy jest już zajęta"
827
+
828
+ #: templates/form-fields/file-field.php:6
829
+ msgid "remove"
830
+ msgstr "usuń"
831
+
832
+ #: templates/form-fields/file-field.php:6
833
+ msgid "or"
834
+ msgstr "lub"
835
+
836
+ #: templates/form-fields/file-field.php:16
837
+ msgid "Max. file size: %s."
838
+ msgstr "Maksymalny rozmiar pliku: %s."
839
+
840
+ #: templates/job-application-email.php:1
841
+ msgid ""
842
+ "To apply for this job <strong>email your details to</strong> <a "
843
+ "class=\"job_application_email\" href=\"mailto:%1$s%2$s\">%1$s</a>"
844
+ msgstr "Aby ubiegać się o pracę <strong>wyślij nam informacje o sobie na</strong> <a class=\"job_application_email\" href=\"mailto:%1$s%2$s\">%1$s</a>"
845
+
846
+ #: templates/job-application-email.php:4
847
+ msgid "Apply using webmail: "
848
+ msgstr "Skorzystaj z webmaila:"
849
+
850
+ #: templates/job-application-url.php:1
851
+ msgid ""
852
+ "To apply for this job please visit the following URL: <a href=\"%1$s\" "
853
+ "target=\"_blank\">%1$s &rarr;</a>"
854
+ msgstr "Aby ubiegać się o pracę, odwiedź stronę: <a href=\"%1$s\" target=\"_blank\">%1$s &rarr;</a>"
855
+
856
+ #: templates/job-application.php:5
857
+ msgid "Apply for job"
858
+ msgstr "Ubiegaj się o pracę"
859
+
860
+ #: templates/job-dashboard.php:2
861
+ msgid ""
862
+ "Your job listings are shown in the table below. Expired listings will be "
863
+ "automatically removed after 30 days."
864
+ msgstr "Twoje oferta pracy zostanie opublikowana. Jeżeli wygaśnie, zostanie automatycznie usunięta po 30 dniach."
865
+
866
+ #: templates/job-dashboard.php:6
867
+ msgid "Job Title"
868
+ msgstr "Tytuł oferty"
869
+
870
+ #: templates/job-dashboard.php:7
871
+ msgid "Date Posted"
872
+ msgstr "Data wprowadzenia"
873
+
874
+ #: templates/job-dashboard.php:16
875
+ msgid "You do not have any active job listings."
876
+ msgstr "Nie posiadasz żadnej aktywnej oferty pracy."
877
+
878
+ #: templates/job-dashboard.php:36
879
+ msgid "Mark not filled"
880
+ msgstr "Oznacz jako zajęta oferta pracy"
881
+
882
+ #: templates/job-dashboard.php:38
883
+ msgid "Mark filled"
884
+ msgstr "Oznacz jako wolna oferta pracy"
885
+
886
+ #: templates/job-filters.php:8
887
+ msgid "Keywords"
888
+ msgstr "Słowa kluczowe"
889
+
890
+ #: templates/job-filters.php:9
891
+ msgid "All Jobs"
892
+ msgstr "Wpisz poszukiwaną pracę"
893
+
894
+ #: templates/job-filters.php:13
895
+ msgid "Location"
896
+ msgstr "Lokalizacja"
897
+
898
+ #: templates/job-filters.php:14
899
+ msgid "Any Location"
900
+ msgstr "Dowolna lokalizacja"
901
+
902
+ #: templates/job-filters.php:23
903
+ msgid "Category"
904
+ msgstr "Kategoria"
905
+
906
+ #: templates/job-filters.php:24
907
+ msgid "All Job Categories"
908
+ msgstr "Wszystkie kategorie pracy"
909
+
910
+ #: templates/job-submit.php:35
911
+ msgid "Company details"
912
+ msgstr "Szczegóły firmy"
913
+
914
+ #: templates/job-submitted.php:4
915
+ msgid ""
916
+ "Job listed successfully. To view your job listing <a href=\"%s\">click "
917
+ "here</a>."
918
+ msgstr "Praca zamieszczona z powodzeniem. Aby ją zobaczyć <a href=\"%s\">kliknij tutaj</a>."
919
+
920
+ #: templates/job-submitted.php:7
921
+ msgid ""
922
+ "Job submitted successfully. Your job listing will be visible once approved."
923
+ msgstr "Twoja oferta pracy została wysłana i oferta czeka na zatwierdzenie przez Moderatora."
924
+
925
+ #: wp-job-manager-functions.php:224
926
+ msgid "Reset"
927
+ msgstr "Resetuj"
928
+
929
+ #: wp-job-manager-functions.php:228
930
+ msgid "RSS"
931
+ msgstr "RSS"
932
+
933
+ #: wp-job-manager-functions.php:278
934
+ msgid "Your email address isn&#8217;t correct."
935
+ msgstr "Twój adres email nie jest poprawny."
936
+
937
+ #: wp-job-manager-functions.php:281
938
+ msgid "This email is already registered, please choose another one."
939
+ msgstr "Ten adres email jest już używany. Spróbuj wybrać inny."
940
+
941
+ #: wp-job-manager-template.php:116
942
+ msgid "Active"
943
+ msgstr "Aktywny"
944
+
945
+ #: wp-job-manager-template.php:118
946
+ msgid "Expired"
947
+ msgstr "Kończy się"
948
+
949
+ #: wp-job-manager-template.php:120
950
+ msgid "Pending Review"
951
+ msgstr "Oczekuje"
952
+
953
+ #: wp-job-manager-template.php:122
954
+ msgid "Inactive"
955
+ msgstr "Nieaktywny"
956
+
957
+ #: wp-job-manager-template.php:197
958
+ msgid "Job Application via \"%s\" listing on %s"
959
+ msgstr "Aplikacja o pracę od \"%s\" na %s"
960
+
961
+ #: wp-job-manager-template.php:255
962
+ msgid "Anywhere"
963
+ msgstr "Gdziekolwiek"
964
+
965
+ #: wp-job-manager.php:97
966
+ msgid "Are you sure you want to delete this job?"
967
+ msgstr "Czy jesteś pewien, że chcesz usunąć tę pracę?"
968
+
969
+ #. Plugin Name of the plugin/theme
970
+ msgid "WP Job Manager"
971
+ msgstr "WP Job Manager"
972
+
973
+ #. Plugin URI of the plugin/theme
974
+ msgid "https://wpjobmanager.com/"
975
+ msgstr "https://wpjobmanager.com/"
976
+
977
+ #. Description of the plugin/theme
978
+ msgid ""
979
+ "Manage job listings from the WordPress admin panel, and allow users to post "
980
+ "jobs directly to your site."
981
+ msgstr "Zarządzaj ofertami pracy z panelu WordPressa i pozwól swoim użytkownikom publikować oferty pracy na Twojej stronie."
982
+
983
+ #. Author of the plugin/theme
984
+ msgid "Mike Jolley"
985
+ msgstr "Mike Jolley"
986
+
987
+ #. Author URI of the plugin/theme
988
+ msgid "http://mikejolley.com"
989
+ msgstr "http://mikejolley.com"
languages/wp-job-manager.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the WP Job Manager package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WP Job Manager 1.13.0\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-job-manager\n"
7
- "POT-Creation-Date: 2014-07-09 16:28:44+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -33,164 +33,161 @@ msgstr ""
33
 
34
  #: includes/admin/class-wp-job-manager-cpt.php:48
35
  #: includes/admin/class-wp-job-manager-cpt.php:49
36
- msgid "Approve Jobs"
37
  msgstr ""
38
 
39
  #: includes/admin/class-wp-job-manager-cpt.php:51
40
  #: includes/admin/class-wp-job-manager-cpt.php:52
41
- msgid "Expire Jobs"
42
  msgstr ""
43
 
44
- #: includes/admin/class-wp-job-manager-cpt.php:139
45
- #: includes/admin/class-wp-job-manager-cpt.php:141
46
  msgid "%s approved"
47
  msgstr ""
48
 
49
- #: includes/admin/class-wp-job-manager-cpt.php:159
50
- #: includes/admin/class-wp-job-manager-cpt.php:161
51
  msgid "%s expired"
52
  msgstr ""
53
 
54
- #: includes/admin/class-wp-job-manager-cpt.php:204
55
- msgid "Select a category"
56
  msgstr ""
57
 
58
- #: includes/admin/class-wp-job-manager-cpt.php:237
59
- msgid "Job position title"
 
60
  msgstr ""
61
 
62
- #: includes/admin/class-wp-job-manager-cpt.php:253
63
- msgid "Job listing updated. <a href=\"%s\">View Job</a>"
64
  msgstr ""
65
 
66
- #: includes/admin/class-wp-job-manager-cpt.php:254
67
  msgid "Custom field updated."
68
  msgstr ""
69
 
70
- #: includes/admin/class-wp-job-manager-cpt.php:255
71
  msgid "Custom field deleted."
72
  msgstr ""
73
 
74
- #: includes/admin/class-wp-job-manager-cpt.php:256
75
- msgid "Job listing updated."
76
  msgstr ""
77
 
78
- #: includes/admin/class-wp-job-manager-cpt.php:257
79
- msgid "Job listing restored to revision from %s"
80
  msgstr ""
81
 
82
- #: includes/admin/class-wp-job-manager-cpt.php:258
83
- msgid "Job listing published. <a href=\"%s\">View Job</a>"
84
  msgstr ""
85
 
86
- #: includes/admin/class-wp-job-manager-cpt.php:259
87
- msgid "Job listing saved."
88
  msgstr ""
89
 
90
- #: includes/admin/class-wp-job-manager-cpt.php:260
91
- msgid "Job listing submitted. <a target=\"_blank\" href=\"%s\">Preview Job</a>"
92
  msgstr ""
93
 
94
- #: includes/admin/class-wp-job-manager-cpt.php:261
95
  msgid ""
96
- "Job listing scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href="
97
- "\"%2$s\">Preview Job</a>"
98
  msgstr ""
99
 
100
- #: includes/admin/class-wp-job-manager-cpt.php:262
101
  msgid "M j, Y @ G:i"
102
  msgstr ""
103
 
104
- #: includes/admin/class-wp-job-manager-cpt.php:263
105
- msgid ""
106
- "Job listing draft updated. <a target=\"_blank\" href=\"%s\">Preview Job</a>"
107
  msgstr ""
108
 
109
- #: includes/admin/class-wp-job-manager-cpt.php:282
110
  msgid "Type"
111
  msgstr ""
112
 
113
- #: includes/admin/class-wp-job-manager-cpt.php:283
114
- msgid "Position"
115
- msgstr ""
116
-
117
- #: includes/admin/class-wp-job-manager-cpt.php:284
118
  msgid "Posted"
119
  msgstr ""
120
 
121
- #: includes/admin/class-wp-job-manager-cpt.php:285
 
122
  msgid "Expires"
123
  msgstr ""
124
 
125
- #: includes/admin/class-wp-job-manager-cpt.php:287
126
  msgid "Categories"
127
  msgstr ""
128
 
129
- #: includes/admin/class-wp-job-manager-cpt.php:288
130
  msgid "Featured?"
131
  msgstr ""
132
 
133
- #: includes/admin/class-wp-job-manager-cpt.php:289
134
- #: includes/class-wp-job-manager-shortcodes.php:162
135
  msgid "Filled?"
136
  msgstr ""
137
 
138
- #: includes/admin/class-wp-job-manager-cpt.php:290
139
  msgid "Status"
140
  msgstr ""
141
 
142
- #: includes/admin/class-wp-job-manager-cpt.php:291
143
  msgid "Actions"
144
  msgstr ""
145
 
146
- #: includes/admin/class-wp-job-manager-cpt.php:314
147
- msgid "Job ID: %d"
148
  msgstr ""
149
 
150
- #: includes/admin/class-wp-job-manager-cpt.php:340
151
- #: includes/admin/class-wp-job-manager-cpt.php:345
152
  msgid "M j, Y"
153
  msgstr ""
154
 
155
- #: includes/admin/class-wp-job-manager-cpt.php:341
156
  msgid "by a guest"
157
  msgstr ""
158
 
159
- #: includes/admin/class-wp-job-manager-cpt.php:341
160
  msgid "by %s"
161
  msgstr ""
162
 
163
- #: includes/admin/class-wp-job-manager-cpt.php:358
164
  msgid "Approve"
165
  msgstr ""
166
 
167
- #: includes/admin/class-wp-job-manager-cpt.php:365
168
  msgid "View"
169
  msgstr ""
170
 
171
- #: includes/admin/class-wp-job-manager-cpt.php:370
172
  #: includes/class-wp-job-manager-post-types.php:167
173
  #: templates/job-dashboard.php:33
174
  msgid "Edit"
175
  msgstr ""
176
 
177
- #: includes/admin/class-wp-job-manager-cpt.php:375
178
  #: templates/job-dashboard.php:48
179
  msgid "Delete"
180
  msgstr ""
181
 
182
  #: includes/admin/class-wp-job-manager-settings.php:42
183
- #: includes/class-wp-job-manager-post-types.php:143
184
  #: includes/class-wp-job-manager-post-types.php:233
185
  msgid "Job Listings"
186
  msgstr ""
187
 
188
  #: includes/admin/class-wp-job-manager-settings.php:48
189
- msgid "Jobs per page"
190
  msgstr ""
191
 
192
  #: includes/admin/class-wp-job-manager-settings.php:49
193
- msgid "How many jobs should be shown per page by default?"
194
  msgstr ""
195
 
196
  #: includes/admin/class-wp-job-manager-settings.php:55
@@ -202,149 +199,163 @@ msgid "Hide filled positions"
202
  msgstr ""
203
 
204
  #: includes/admin/class-wp-job-manager-settings.php:57
205
- msgid "If enabled, filled positions will be hidden from the job list."
206
  msgstr ""
207
 
208
  #: includes/admin/class-wp-job-manager-settings.php:64
209
- msgid "Job categories"
210
  msgstr ""
211
 
212
  #: includes/admin/class-wp-job-manager-settings.php:65
213
- msgid "Enable job categories"
214
  msgstr ""
215
 
216
  #: includes/admin/class-wp-job-manager-settings.php:66
217
  msgid ""
218
- "Choose whether to enable job categories. Categories must be setup by an "
219
- "admin for users to choose during job submission."
220
  msgstr ""
221
 
222
  #: includes/admin/class-wp-job-manager-settings.php:73
223
- msgid "Job Submission"
224
  msgstr ""
225
 
226
- #: includes/admin/class-wp-job-manager-settings.php:78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  msgid "Account creation"
228
  msgstr ""
229
 
230
- #: includes/admin/class-wp-job-manager-settings.php:79
231
  msgid "Allow account creation"
232
  msgstr ""
233
 
234
- #: includes/admin/class-wp-job-manager-settings.php:80
235
  msgid ""
236
  "If enabled, non-logged in users will be able to create an account by "
237
- "entering their email address on the job submission form."
238
  msgstr ""
239
 
240
- #: includes/admin/class-wp-job-manager-settings.php:87
241
  msgid "Account Role"
242
  msgstr ""
243
 
244
- #: includes/admin/class-wp-job-manager-settings.php:88
245
  msgid ""
246
- "If you enable registration on your job submission form, choose a role for "
247
- "the new user."
248
  msgstr ""
249
 
250
- #: includes/admin/class-wp-job-manager-settings.php:95
251
  msgid "Account required"
252
  msgstr ""
253
 
254
- #: includes/admin/class-wp-job-manager-settings.php:96
255
- msgid "Job submission requires an account"
256
  msgstr ""
257
 
258
- #: includes/admin/class-wp-job-manager-settings.php:97
259
  msgid ""
260
- "If disabled, non-logged in users will be able to submit job listings without "
261
  "creating an account."
262
  msgstr ""
263
 
264
- #: includes/admin/class-wp-job-manager-settings.php:104
265
  msgid "Approval Required"
266
  msgstr ""
267
 
268
- #: includes/admin/class-wp-job-manager-settings.php:105
269
  msgid "New submissions require admin approval"
270
  msgstr ""
271
 
272
- #: includes/admin/class-wp-job-manager-settings.php:106
273
  msgid "If enabled, new submissions will be inactive, pending admin approval."
274
  msgstr ""
275
 
276
- #: includes/admin/class-wp-job-manager-settings.php:113
277
  msgid "Listing duration"
278
  msgstr ""
279
 
280
- #: includes/admin/class-wp-job-manager-settings.php:114
281
  msgid ""
282
  "How many <strong>days</strong> listings are live before expiring. Can be "
283
  "left blank to never expire."
284
  msgstr ""
285
 
286
- #: includes/admin/class-wp-job-manager-settings.php:120
287
  msgid "Application method"
288
  msgstr ""
289
 
290
- #: includes/admin/class-wp-job-manager-settings.php:121
291
- msgid "Choose what employers can use for their job application method."
292
  msgstr ""
293
 
294
- #: includes/admin/class-wp-job-manager-settings.php:124
295
  msgid "Email address or website URL"
296
  msgstr ""
297
 
298
- #: includes/admin/class-wp-job-manager-settings.php:125
299
  msgid "Email addresses only"
300
  msgstr ""
301
 
302
- #: includes/admin/class-wp-job-manager-settings.php:126
303
  msgid "Website URLs only"
304
  msgstr ""
305
 
306
- #: includes/admin/class-wp-job-manager-settings.php:132
307
  msgid "Submit Page Slug"
308
  msgstr ""
309
 
310
- #: includes/admin/class-wp-job-manager-settings.php:133
311
  msgid ""
312
  "Enter the slug of the page where you have placed the [submit_job_form] "
313
  "shortcode. This lets the plugin know where the form is located."
314
  msgstr ""
315
 
316
- #: includes/admin/class-wp-job-manager-settings.php:139
317
- msgid "Job Dashboard Page Slug"
318
  msgstr ""
319
 
320
- #: includes/admin/class-wp-job-manager-settings.php:140
321
  msgid ""
322
  "Enter the slug of the page where you have placed the [job_dashboard] "
323
  "shortcode. This lets the plugin know where the dashboard is located."
324
  msgstr ""
325
 
326
- #: includes/admin/class-wp-job-manager-settings.php:192
327
  msgid "Settings successfully saved"
328
  msgstr ""
329
 
330
- #: includes/admin/class-wp-job-manager-settings.php:271
331
  msgid "Save Changes"
332
  msgstr ""
333
 
334
  #: includes/admin/class-wp-job-manager-writepanels.php:27
335
  #: includes/forms/class-wp-job-manager-form-submit-job.php:138
336
- msgid "Job location"
 
337
  msgstr ""
338
 
339
  #: includes/admin/class-wp-job-manager-writepanels.php:28
340
  #: includes/forms/class-wp-job-manager-form-submit-job.php:142
341
- msgid "e.g. \"London, UK\", \"New York\", \"Houston, TX\""
342
  msgstr ""
343
 
344
  #: includes/admin/class-wp-job-manager-writepanels.php:29
345
  #: includes/forms/class-wp-job-manager-form-submit-job.php:139
346
- msgid ""
347
- "Leave this blank if the job can be done from anywhere (i.e. telecommuting)"
348
  msgstr ""
349
 
350
  #: includes/admin/class-wp-job-manager-writepanels.php:32
@@ -356,86 +367,96 @@ msgstr ""
356
  msgid "URL or email which applicants use to apply"
357
  msgstr ""
358
 
359
- #: includes/admin/class-wp-job-manager-writepanels.php:36
360
- #: includes/forms/class-wp-job-manager-form-submit-job.php:179
 
 
 
 
 
 
361
  msgid "Company name"
362
  msgstr ""
363
 
364
- #: includes/admin/class-wp-job-manager-writepanels.php:40
365
  msgid "Company website"
366
  msgstr ""
367
 
368
- #: includes/admin/class-wp-job-manager-writepanels.php:44
369
  msgid "Company tagline"
370
  msgstr ""
371
 
372
- #: includes/admin/class-wp-job-manager-writepanels.php:45
373
  msgid "Brief description about the company"
374
  msgstr ""
375
 
376
- #: includes/admin/class-wp-job-manager-writepanels.php:48
377
  msgid "Company Twitter"
378
  msgstr ""
379
 
380
- #: includes/admin/class-wp-job-manager-writepanels.php:52
381
  msgid "Company logo"
382
  msgstr ""
383
 
384
- #: includes/admin/class-wp-job-manager-writepanels.php:53
385
  msgid "URL to the company logo"
386
  msgstr ""
387
 
388
- #: includes/admin/class-wp-job-manager-writepanels.php:57
389
  msgid "Position filled?"
390
  msgstr ""
391
 
392
- #: includes/admin/class-wp-job-manager-writepanels.php:61
393
- msgid "Feature this job listing?"
394
  msgstr ""
395
 
396
- #: includes/admin/class-wp-job-manager-writepanels.php:63
397
  msgid ""
398
  "Featured listings will be sticky during searches, and can be styled "
399
  "differently."
400
  msgstr ""
401
 
402
- #: includes/admin/class-wp-job-manager-writepanels.php:66
403
- msgid "Job Expires"
404
- msgstr ""
405
-
406
- #: includes/admin/class-wp-job-manager-writepanels.php:67
407
  msgid "yyyy-mm-dd"
408
  msgstr ""
409
 
410
- #: includes/admin/class-wp-job-manager-writepanels.php:70
411
  msgid "Posted by"
412
  msgstr ""
413
 
414
- #: includes/admin/class-wp-job-manager-writepanels.php:83
415
- msgid "Job Listing Data"
416
  msgstr ""
417
 
418
- #: includes/admin/class-wp-job-manager-writepanels.php:101
 
 
419
  msgid "Use file"
420
  msgstr ""
421
 
422
- #: includes/admin/class-wp-job-manager-writepanels.php:101
 
 
423
  msgid "Upload"
424
  msgstr ""
425
 
426
- #: includes/admin/class-wp-job-manager-writepanels.php:269
427
- msgid "Guest user"
428
  msgstr ""
429
 
430
- #: includes/class-wp-job-manager-ajax.php:112
431
- msgid "Showing %s&ldquo;%s&rdquo; %sjobs"
432
  msgstr ""
433
 
434
  #: includes/class-wp-job-manager-ajax.php:114
435
- msgid "Showing all %s%sjobs"
 
 
 
 
436
  msgstr ""
437
 
438
- #: includes/class-wp-job-manager-ajax.php:117
439
  msgid "located in &ldquo;%s&rdquo;"
440
  msgstr ""
441
 
@@ -458,11 +479,12 @@ msgid "Employer"
458
  msgstr ""
459
 
460
  #: includes/class-wp-job-manager-post-types.php:49
461
- msgid "Job Category"
 
462
  msgstr ""
463
 
464
  #: includes/class-wp-job-manager-post-types.php:50
465
- msgid "Job Categories"
466
  msgstr ""
467
 
468
  #: includes/class-wp-job-manager-post-types.php:54
@@ -515,11 +537,12 @@ msgid "New %s Name"
515
  msgstr ""
516
 
517
  #: includes/class-wp-job-manager-post-types.php:95
518
- msgid "Job Type"
 
519
  msgstr ""
520
 
521
  #: includes/class-wp-job-manager-post-types.php:96
522
- msgid "Job Types"
523
  msgstr ""
524
 
525
  #: includes/class-wp-job-manager-post-types.php:100
@@ -528,7 +551,11 @@ msgid "job-type"
528
  msgstr ""
529
 
530
  #: includes/class-wp-job-manager-post-types.php:142
531
- msgid "Job Listing"
 
 
 
 
532
  msgstr ""
533
 
534
  #: includes/class-wp-job-manager-post-types.php:146
@@ -567,11 +594,11 @@ msgid "No %s found in trash"
567
  msgstr ""
568
 
569
  #: includes/class-wp-job-manager-post-types.php:177
570
- msgid "This is where you can create and manage job listings."
571
  msgstr ""
572
 
573
  #: includes/class-wp-job-manager-post-types.php:212
574
- #: wp-job-manager-functions.php:156
575
  msgctxt "post status"
576
  msgid "Expired"
577
  msgstr ""
@@ -583,11 +610,11 @@ msgstr[0] ""
583
  msgstr[1] ""
584
 
585
  #: includes/class-wp-job-manager-shortcodes.php:64
586
- msgid "Invalid Job ID"
587
  msgstr ""
588
 
589
  #: includes/class-wp-job-manager-shortcodes.php:71
590
- msgid "This job is already filled"
591
  msgstr ""
592
 
593
  #: includes/class-wp-job-manager-shortcodes.php:77
@@ -595,72 +622,67 @@ msgid "%s has been filled"
595
  msgstr ""
596
 
597
  #: includes/class-wp-job-manager-shortcodes.php:82
598
- msgid "This job is already not filled"
599
  msgstr ""
600
 
601
- #: includes/class-wp-job-manager-shortcodes.php:88
602
  msgid "%s has been marked as not filled"
603
  msgstr ""
604
 
605
- #: includes/class-wp-job-manager-shortcodes.php:95
606
  msgid "%s has been deleted"
607
  msgstr ""
608
 
609
- #: includes/class-wp-job-manager-shortcodes.php:121
610
- msgid "You need to be signed in to manage your job listings."
611
  msgstr ""
612
 
613
- #: includes/class-wp-job-manager-shortcodes.php:161
614
- msgid "Job Title"
 
 
615
  msgstr ""
616
 
617
- #: includes/class-wp-job-manager-shortcodes.php:163
618
  msgid "Date Posted"
619
  msgstr ""
620
 
621
- #: includes/class-wp-job-manager-shortcodes.php:164
622
  msgid "Date Expires"
623
  msgstr ""
624
 
625
- #: includes/class-wp-job-manager-shortcodes.php:252
626
- #: includes/class-wp-job-manager-shortcodes.php:287
627
- msgid "Load more job listings"
628
- msgstr ""
629
-
630
- #: includes/class-wp-job-manager-widgets.php:139
631
- msgid "Display a list of the most recent jobs on your site."
632
  msgstr ""
633
 
634
  #: includes/class-wp-job-manager-widgets.php:141
635
- msgid "Recent Job Listings"
636
- msgstr ""
637
-
638
- #: includes/class-wp-job-manager-widgets.php:145
639
- msgid "Recent Jobs"
640
  msgstr ""
641
 
642
- #: includes/class-wp-job-manager-widgets.php:146
643
- msgid "Title"
 
644
  msgstr ""
645
 
646
- #: includes/class-wp-job-manager-widgets.php:154
647
- msgid "Number of jobs to show"
648
  msgstr ""
649
 
650
  #: includes/forms/class-wp-job-manager-form-edit-job.php:41
651
- msgid "Invalid job"
652
  msgstr ""
653
 
654
- #: includes/forms/class-wp-job-manager-form-edit-job.php:84
655
- msgid "Update job listing"
656
  msgstr ""
657
 
658
- #: includes/forms/class-wp-job-manager-form-edit-job.php:111
659
  msgid "Your changes have been saved."
660
  msgstr ""
661
 
662
- #: includes/forms/class-wp-job-manager-form-edit-job.php:111
663
- msgid "View Job Listing &rarr;"
664
  msgstr ""
665
 
666
  #: includes/forms/class-wp-job-manager-form-submit-job.php:22
@@ -668,7 +690,7 @@ msgid "Submit Details"
668
  msgstr ""
669
 
670
  #: includes/forms/class-wp-job-manager-form-submit-job.php:28
671
- #: includes/forms/class-wp-job-manager-form-submit-job.php:609
672
  msgid "Preview"
673
  msgstr ""
674
 
@@ -690,7 +712,7 @@ msgid "Application URL"
690
  msgstr ""
691
 
692
  #: includes/forms/class-wp-job-manager-form-submit-job.php:120
693
- #: includes/forms/class-wp-job-manager-form-submit-job.php:189
694
  msgid "http://"
695
  msgstr ""
696
 
@@ -698,84 +720,86 @@ msgstr ""
698
  msgid "Enter an email address or website URL"
699
  msgstr ""
700
 
701
- #: includes/forms/class-wp-job-manager-form-submit-job.php:131
702
- msgid "Job title"
703
- msgstr ""
704
-
705
- #: includes/forms/class-wp-job-manager-form-submit-job.php:146
706
- msgid "Job type"
707
- msgstr ""
708
-
709
- #: includes/forms/class-wp-job-manager-form-submit-job.php:155
710
- msgid "Job category"
711
- msgstr ""
712
-
713
- #: includes/forms/class-wp-job-manager-form-submit-job.php:163
714
  msgid "Description"
715
  msgstr ""
716
 
717
- #: includes/forms/class-wp-job-manager-form-submit-job.php:182
718
  msgid "Enter the name of the company"
719
  msgstr ""
720
 
721
- #: includes/forms/class-wp-job-manager-form-submit-job.php:186
722
- #: templates/content-single-job_listing.php:36
723
  msgid "Website"
724
  msgstr ""
725
 
726
- #: includes/forms/class-wp-job-manager-form-submit-job.php:193
727
  msgid "Tagline"
728
  msgstr ""
729
 
730
- #: includes/forms/class-wp-job-manager-form-submit-job.php:196
731
  msgid "Briefly describe your company"
732
  msgstr ""
733
 
734
- #: includes/forms/class-wp-job-manager-form-submit-job.php:201
 
 
 
 
 
 
 
 
735
  msgid "Twitter username"
736
  msgstr ""
737
 
738
- #: includes/forms/class-wp-job-manager-form-submit-job.php:204
739
  msgid "@yourcompany"
740
  msgstr ""
741
 
742
- #: includes/forms/class-wp-job-manager-form-submit-job.php:208
743
  msgid "Logo"
744
  msgstr ""
745
 
746
- #: includes/forms/class-wp-job-manager-form-submit-job.php:321
747
  msgid "%s is a required field"
748
  msgstr ""
749
 
750
- #: includes/forms/class-wp-job-manager-form-submit-job.php:332
 
 
 
 
 
751
  msgid "Please enter a valid application email address"
752
  msgstr ""
753
 
754
- #: includes/forms/class-wp-job-manager-form-submit-job.php:341
755
  msgid "Please enter a valid application URL"
756
  msgstr ""
757
 
758
- #: includes/forms/class-wp-job-manager-form-submit-job.php:351
759
  msgid "Please enter a valid application email address or URL"
760
  msgstr ""
761
 
762
- #: includes/forms/class-wp-job-manager-form-submit-job.php:457
763
- msgid "Preview job listing &rarr;"
764
  msgstr ""
765
 
766
- #: includes/forms/class-wp-job-manager-form-submit-job.php:494
767
- msgid "You must be signed in to post a new job listing."
768
  msgstr ""
769
 
770
- #: includes/forms/class-wp-job-manager-form-submit-job.php:603
771
  msgid "Submit Listing &rarr;"
772
  msgstr ""
773
 
774
- #: includes/forms/class-wp-job-manager-form-submit-job.php:604
775
  msgid "&larr; Edit listing"
776
  msgstr ""
777
 
778
- #: includes/forms/class-wp-job-manager-form-submit-job.php:689
 
779
  msgid "\"%s\" (filetype %s) needs to be one of the following file types: %s"
780
  msgstr ""
781
 
@@ -810,7 +834,7 @@ msgid "optionally"
810
  msgstr ""
811
 
812
  #: templates/account-signin.php:31
813
- msgid "You must sign in to create a new job listing."
814
  msgstr ""
815
 
816
  #: templates/account-signin.php:38
@@ -823,33 +847,34 @@ msgid "(optional)"
823
  msgstr ""
824
 
825
  #: templates/content-job_listing.php:16
826
- #: templates/content-single-job_listing.php:21
827
  #: templates/content-summary-job_listing.php:14
828
  msgid "Posted %s ago"
829
  msgstr ""
830
 
831
  #: templates/content-no-jobs-found.php:1
832
- msgid "No more jobs found matching your selection."
833
  msgstr ""
834
 
835
- #: templates/content-single-job_listing.php:8
836
- msgid "This job listing has expired"
837
  msgstr ""
838
 
839
- #: templates/content-single-job_listing.php:24
840
- msgid "This position has been filled"
841
  msgstr ""
842
 
843
- #: templates/form-fields/file-field.php:6
 
844
  msgid "remove"
845
  msgstr ""
846
 
847
- #: templates/form-fields/file-field.php:6
848
  msgid "or"
849
  msgstr ""
850
 
851
- #: templates/form-fields/file-field.php:16
852
- msgid "Max. file size: %s."
853
  msgstr ""
854
 
855
  #: templates/job-application-email.php:1
@@ -874,12 +899,12 @@ msgstr ""
874
 
875
  #: templates/job-dashboard.php:2
876
  msgid ""
877
- "Your job listings are shown in the table below. Expired listings will be "
878
  "automatically removed after 30 days."
879
  msgstr ""
880
 
881
  #: templates/job-dashboard.php:14
882
- msgid "You do not have any active job listings."
883
  msgstr ""
884
 
885
  #: templates/job-dashboard.php:36
@@ -894,106 +919,96 @@ msgstr ""
894
  msgid "Relist"
895
  msgstr ""
896
 
897
- #: templates/job-filters.php:9
898
  msgid "Keywords"
899
  msgstr ""
900
 
901
- #: templates/job-filters.php:10
902
- msgid "All Jobs"
903
- msgstr ""
904
-
905
- #: templates/job-filters.php:14
906
- msgid "Location"
907
- msgstr ""
908
-
909
- #: templates/job-filters.php:15
910
- msgid "Any Location"
911
- msgstr ""
912
-
913
- #: templates/job-filters.php:24
914
  msgid "Category"
915
  msgstr ""
916
 
917
- #: templates/job-filters.php:25
918
- msgid "All Job Categories"
919
  msgstr ""
920
 
921
- #: templates/job-filters.php:34
922
  msgid ""
923
  "Your browser does not support JavaScript, or it is disabled. JavaScript must "
924
- "be enabled in order to view job listings."
925
  msgstr ""
926
 
927
  #: templates/job-submit.php:35
928
- msgid "Company details"
929
  msgstr ""
930
 
931
- #: templates/job-submitted.php:4
932
  msgid ""
933
- "Job listed successfully. To view your job listing <a href=\"%s\">click here</"
934
- "a>."
935
  msgstr ""
936
 
937
- #: templates/job-submitted.php:7
938
- msgid ""
939
- "Job submitted successfully. Your job listing will be visible once approved."
940
  msgstr ""
941
 
942
- #: wp-job-manager-functions.php:155
943
  msgctxt "post status"
944
  msgid "Draft"
945
  msgstr ""
946
 
947
- #: wp-job-manager-functions.php:157
948
  msgctxt "post status"
949
  msgid "Preview"
950
  msgstr ""
951
 
952
- #: wp-job-manager-functions.php:158
953
  msgctxt "post status"
954
  msgid "Pending approval"
955
  msgstr ""
956
 
957
- #: wp-job-manager-functions.php:159
958
  msgctxt "post status"
959
  msgid "Pending payment"
960
  msgstr ""
961
 
962
- #: wp-job-manager-functions.php:160
963
  msgctxt "post status"
964
  msgid "Active"
965
  msgstr ""
966
 
967
- #: wp-job-manager-functions.php:246
968
  msgid "Reset"
969
  msgstr ""
970
 
971
- #: wp-job-manager-functions.php:250
972
  msgid "RSS"
973
  msgstr ""
974
 
975
- #: wp-job-manager-functions.php:300
976
  msgid "Your email address isn&#8217;t correct."
977
  msgstr ""
978
 
979
- #: wp-job-manager-functions.php:303
980
  msgid "This email is already registered, please choose another one."
981
  msgstr ""
982
 
 
 
 
 
983
  #: wp-job-manager-template.php:128
984
  msgid "Inactive"
985
  msgstr ""
986
 
987
  #: wp-job-manager-template.php:204
988
- msgid "Job Application via \"%s\" listing on %s"
989
  msgstr ""
990
 
991
  #: wp-job-manager-template.php:262
992
  msgid "Anywhere"
993
  msgstr ""
994
 
995
- #: wp-job-manager.php:98
996
- msgid "Are you sure you want to delete this job?"
997
  msgstr ""
998
 
999
  #. Plugin Name of the plugin/theme
2
  # This file is distributed under the same license as the WP Job Manager package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WP Job Manager 1.14.0\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-job-manager\n"
7
+ "POT-Creation-Date: 2014-09-05 16:04:35+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
33
 
34
  #: includes/admin/class-wp-job-manager-cpt.php:48
35
  #: includes/admin/class-wp-job-manager-cpt.php:49
36
+ msgid "Approve %s"
37
  msgstr ""
38
 
39
  #: includes/admin/class-wp-job-manager-cpt.php:51
40
  #: includes/admin/class-wp-job-manager-cpt.php:52
41
+ msgid "Expire %s"
42
  msgstr ""
43
 
44
+ #: includes/admin/class-wp-job-manager-cpt.php:140
45
+ #: includes/admin/class-wp-job-manager-cpt.php:142
46
  msgid "%s approved"
47
  msgstr ""
48
 
49
+ #: includes/admin/class-wp-job-manager-cpt.php:160
50
+ #: includes/admin/class-wp-job-manager-cpt.php:162
51
  msgid "%s expired"
52
  msgstr ""
53
 
54
+ #: includes/admin/class-wp-job-manager-cpt.php:194
55
+ msgid "Select category"
56
  msgstr ""
57
 
58
+ #: includes/admin/class-wp-job-manager-cpt.php:209
59
+ #: includes/admin/class-wp-job-manager-cpt.php:255
60
+ msgid "Position"
61
  msgstr ""
62
 
63
+ #: includes/admin/class-wp-job-manager-cpt.php:225
64
+ msgid "%s updated. <a href=\"%s\">View</a>"
65
  msgstr ""
66
 
67
+ #: includes/admin/class-wp-job-manager-cpt.php:226
68
  msgid "Custom field updated."
69
  msgstr ""
70
 
71
+ #: includes/admin/class-wp-job-manager-cpt.php:227
72
  msgid "Custom field deleted."
73
  msgstr ""
74
 
75
+ #: includes/admin/class-wp-job-manager-cpt.php:228
76
+ msgid "%s updated."
77
  msgstr ""
78
 
79
+ #: includes/admin/class-wp-job-manager-cpt.php:229
80
+ msgid "%s restored to revision from %s"
81
  msgstr ""
82
 
83
+ #: includes/admin/class-wp-job-manager-cpt.php:230
84
+ msgid "%s published. <a href=\"%s\">View</a>"
85
  msgstr ""
86
 
87
+ #: includes/admin/class-wp-job-manager-cpt.php:231
88
+ msgid "%s saved."
89
  msgstr ""
90
 
91
+ #: includes/admin/class-wp-job-manager-cpt.php:232
92
+ msgid "%s submitted. <a target=\"_blank\" href=\"%s\">Preview</a>"
93
  msgstr ""
94
 
95
+ #: includes/admin/class-wp-job-manager-cpt.php:233
96
  msgid ""
97
+ "%s scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s"
98
+ "\">Preview</a>"
99
  msgstr ""
100
 
101
+ #: includes/admin/class-wp-job-manager-cpt.php:234
102
  msgid "M j, Y @ G:i"
103
  msgstr ""
104
 
105
+ #: includes/admin/class-wp-job-manager-cpt.php:235
106
+ msgid "%s draft updated. <a target=\"_blank\" href=\"%s\">Preview</a>"
 
107
  msgstr ""
108
 
109
+ #: includes/admin/class-wp-job-manager-cpt.php:254
110
  msgid "Type"
111
  msgstr ""
112
 
113
+ #: includes/admin/class-wp-job-manager-cpt.php:256
 
 
 
 
114
  msgid "Posted"
115
  msgstr ""
116
 
117
+ #: includes/admin/class-wp-job-manager-cpt.php:257
118
+ #: includes/admin/class-wp-job-manager-writepanels.php:67
119
  msgid "Expires"
120
  msgstr ""
121
 
122
+ #: includes/admin/class-wp-job-manager-cpt.php:259
123
  msgid "Categories"
124
  msgstr ""
125
 
126
+ #: includes/admin/class-wp-job-manager-cpt.php:260
127
  msgid "Featured?"
128
  msgstr ""
129
 
130
+ #: includes/admin/class-wp-job-manager-cpt.php:261
131
+ #: includes/class-wp-job-manager-shortcodes.php:163
132
  msgid "Filled?"
133
  msgstr ""
134
 
135
+ #: includes/admin/class-wp-job-manager-cpt.php:262
136
  msgid "Status"
137
  msgstr ""
138
 
139
+ #: includes/admin/class-wp-job-manager-cpt.php:263
140
  msgid "Actions"
141
  msgstr ""
142
 
143
+ #: includes/admin/class-wp-job-manager-cpt.php:286
144
+ msgid "ID: %d"
145
  msgstr ""
146
 
147
+ #: includes/admin/class-wp-job-manager-cpt.php:312
148
+ #: includes/admin/class-wp-job-manager-cpt.php:317
149
  msgid "M j, Y"
150
  msgstr ""
151
 
152
+ #: includes/admin/class-wp-job-manager-cpt.php:313
153
  msgid "by a guest"
154
  msgstr ""
155
 
156
+ #: includes/admin/class-wp-job-manager-cpt.php:313
157
  msgid "by %s"
158
  msgstr ""
159
 
160
+ #: includes/admin/class-wp-job-manager-cpt.php:330
161
  msgid "Approve"
162
  msgstr ""
163
 
164
+ #: includes/admin/class-wp-job-manager-cpt.php:337
165
  msgid "View"
166
  msgstr ""
167
 
168
+ #: includes/admin/class-wp-job-manager-cpt.php:342
169
  #: includes/class-wp-job-manager-post-types.php:167
170
  #: templates/job-dashboard.php:33
171
  msgid "Edit"
172
  msgstr ""
173
 
174
+ #: includes/admin/class-wp-job-manager-cpt.php:347
175
  #: templates/job-dashboard.php:48
176
  msgid "Delete"
177
  msgstr ""
178
 
179
  #: includes/admin/class-wp-job-manager-settings.php:42
180
+ #: includes/class-wp-job-manager-post-types.php:163
181
  #: includes/class-wp-job-manager-post-types.php:233
182
  msgid "Job Listings"
183
  msgstr ""
184
 
185
  #: includes/admin/class-wp-job-manager-settings.php:48
186
+ msgid "Listings per page"
187
  msgstr ""
188
 
189
  #: includes/admin/class-wp-job-manager-settings.php:49
190
+ msgid "How many listings should be shown per page by default?"
191
  msgstr ""
192
 
193
  #: includes/admin/class-wp-job-manager-settings.php:55
199
  msgstr ""
200
 
201
  #: includes/admin/class-wp-job-manager-settings.php:57
202
+ msgid "If enabled, filled positions will be hidden."
203
  msgstr ""
204
 
205
  #: includes/admin/class-wp-job-manager-settings.php:64
206
+ msgid "Job Categories"
207
  msgstr ""
208
 
209
  #: includes/admin/class-wp-job-manager-settings.php:65
210
+ msgid "Enable categories for listings"
211
  msgstr ""
212
 
213
  #: includes/admin/class-wp-job-manager-settings.php:66
214
  msgid ""
215
+ "Choose whether to enable categories. Categories must be setup by an admin to "
216
+ "allow users to choose them during submission."
217
  msgstr ""
218
 
219
  #: includes/admin/class-wp-job-manager-settings.php:73
220
+ msgid "Job Category filter"
221
  msgstr ""
222
 
223
+ #: includes/admin/class-wp-job-manager-settings.php:74
224
+ msgid "Enable category multiselect by default"
225
+ msgstr ""
226
+
227
+ #: includes/admin/class-wp-job-manager-settings.php:75
228
+ msgid ""
229
+ "If enabled, the category select box will default to a multiselect on the "
230
+ "[jobs] shortcode."
231
+ msgstr ""
232
+
233
+ #: includes/admin/class-wp-job-manager-settings.php:82
234
+ msgid "Submissions"
235
+ msgstr ""
236
+
237
+ #: includes/admin/class-wp-job-manager-settings.php:87
238
  msgid "Account creation"
239
  msgstr ""
240
 
241
+ #: includes/admin/class-wp-job-manager-settings.php:88
242
  msgid "Allow account creation"
243
  msgstr ""
244
 
245
+ #: includes/admin/class-wp-job-manager-settings.php:89
246
  msgid ""
247
  "If enabled, non-logged in users will be able to create an account by "
248
+ "entering their email address on the submission form."
249
  msgstr ""
250
 
251
+ #: includes/admin/class-wp-job-manager-settings.php:96
252
  msgid "Account Role"
253
  msgstr ""
254
 
255
+ #: includes/admin/class-wp-job-manager-settings.php:97
256
  msgid ""
257
+ "If you enable registration on your submission form, choose a role for the "
258
+ "new user."
259
  msgstr ""
260
 
261
+ #: includes/admin/class-wp-job-manager-settings.php:104
262
  msgid "Account required"
263
  msgstr ""
264
 
265
+ #: includes/admin/class-wp-job-manager-settings.php:105
266
+ msgid "Submitting listings requires an account"
267
  msgstr ""
268
 
269
+ #: includes/admin/class-wp-job-manager-settings.php:106
270
  msgid ""
271
+ "If disabled, non-logged in users will be able to submit listings without "
272
  "creating an account."
273
  msgstr ""
274
 
275
+ #: includes/admin/class-wp-job-manager-settings.php:113
276
  msgid "Approval Required"
277
  msgstr ""
278
 
279
+ #: includes/admin/class-wp-job-manager-settings.php:114
280
  msgid "New submissions require admin approval"
281
  msgstr ""
282
 
283
+ #: includes/admin/class-wp-job-manager-settings.php:115
284
  msgid "If enabled, new submissions will be inactive, pending admin approval."
285
  msgstr ""
286
 
287
+ #: includes/admin/class-wp-job-manager-settings.php:122
288
  msgid "Listing duration"
289
  msgstr ""
290
 
291
+ #: includes/admin/class-wp-job-manager-settings.php:123
292
  msgid ""
293
  "How many <strong>days</strong> listings are live before expiring. Can be "
294
  "left blank to never expire."
295
  msgstr ""
296
 
297
+ #: includes/admin/class-wp-job-manager-settings.php:129
298
  msgid "Application method"
299
  msgstr ""
300
 
301
+ #: includes/admin/class-wp-job-manager-settings.php:130
302
+ msgid "Choose the contact method for listings."
303
  msgstr ""
304
 
305
+ #: includes/admin/class-wp-job-manager-settings.php:133
306
  msgid "Email address or website URL"
307
  msgstr ""
308
 
309
+ #: includes/admin/class-wp-job-manager-settings.php:134
310
  msgid "Email addresses only"
311
  msgstr ""
312
 
313
+ #: includes/admin/class-wp-job-manager-settings.php:135
314
  msgid "Website URLs only"
315
  msgstr ""
316
 
317
+ #: includes/admin/class-wp-job-manager-settings.php:141
318
  msgid "Submit Page Slug"
319
  msgstr ""
320
 
321
+ #: includes/admin/class-wp-job-manager-settings.php:142
322
  msgid ""
323
  "Enter the slug of the page where you have placed the [submit_job_form] "
324
  "shortcode. This lets the plugin know where the form is located."
325
  msgstr ""
326
 
327
+ #: includes/admin/class-wp-job-manager-settings.php:148
328
+ msgid "Dashboard Page Slug"
329
  msgstr ""
330
 
331
+ #: includes/admin/class-wp-job-manager-settings.php:149
332
  msgid ""
333
  "Enter the slug of the page where you have placed the [job_dashboard] "
334
  "shortcode. This lets the plugin know where the dashboard is located."
335
  msgstr ""
336
 
337
+ #: includes/admin/class-wp-job-manager-settings.php:201
338
  msgid "Settings successfully saved"
339
  msgstr ""
340
 
341
+ #: includes/admin/class-wp-job-manager-settings.php:285
342
  msgid "Save Changes"
343
  msgstr ""
344
 
345
  #: includes/admin/class-wp-job-manager-writepanels.php:27
346
  #: includes/forms/class-wp-job-manager-form-submit-job.php:138
347
+ #: templates/job-filters.php:17 templates/job-filters.php:18
348
+ msgid "Location"
349
  msgstr ""
350
 
351
  #: includes/admin/class-wp-job-manager-writepanels.php:28
352
  #: includes/forms/class-wp-job-manager-form-submit-job.php:142
353
+ msgid "e.g. \"London\""
354
  msgstr ""
355
 
356
  #: includes/admin/class-wp-job-manager-writepanels.php:29
357
  #: includes/forms/class-wp-job-manager-form-submit-job.php:139
358
+ msgid "Leave this blank if the location is not important"
 
359
  msgstr ""
360
 
361
  #: includes/admin/class-wp-job-manager-writepanels.php:32
367
  msgid "URL or email which applicants use to apply"
368
  msgstr ""
369
 
370
+ #: includes/admin/class-wp-job-manager-writepanels.php:34
371
+ msgid ""
372
+ "This field is required for the \"application\" area to appear beneath the "
373
+ "listing."
374
+ msgstr ""
375
+
376
+ #: includes/admin/class-wp-job-manager-writepanels.php:37
377
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:180
378
  msgid "Company name"
379
  msgstr ""
380
 
381
+ #: includes/admin/class-wp-job-manager-writepanels.php:41
382
  msgid "Company website"
383
  msgstr ""
384
 
385
+ #: includes/admin/class-wp-job-manager-writepanels.php:45
386
  msgid "Company tagline"
387
  msgstr ""
388
 
389
+ #: includes/admin/class-wp-job-manager-writepanels.php:46
390
  msgid "Brief description about the company"
391
  msgstr ""
392
 
393
+ #: includes/admin/class-wp-job-manager-writepanels.php:49
394
  msgid "Company Twitter"
395
  msgstr ""
396
 
397
+ #: includes/admin/class-wp-job-manager-writepanels.php:53
398
  msgid "Company logo"
399
  msgstr ""
400
 
401
+ #: includes/admin/class-wp-job-manager-writepanels.php:54
402
  msgid "URL to the company logo"
403
  msgstr ""
404
 
405
+ #: includes/admin/class-wp-job-manager-writepanels.php:58
406
  msgid "Position filled?"
407
  msgstr ""
408
 
409
+ #: includes/admin/class-wp-job-manager-writepanels.php:62
410
+ msgid "Feature this listing?"
411
  msgstr ""
412
 
413
+ #: includes/admin/class-wp-job-manager-writepanels.php:64
414
  msgid ""
415
  "Featured listings will be sticky during searches, and can be styled "
416
  "differently."
417
  msgstr ""
418
 
419
+ #: includes/admin/class-wp-job-manager-writepanels.php:68
 
 
 
 
420
  msgid "yyyy-mm-dd"
421
  msgstr ""
422
 
423
+ #: includes/admin/class-wp-job-manager-writepanels.php:71
424
  msgid "Posted by"
425
  msgstr ""
426
 
427
+ #: includes/admin/class-wp-job-manager-writepanels.php:86
428
+ msgid "%s Data"
429
  msgstr ""
430
 
431
+ #: includes/admin/class-wp-job-manager-writepanels.php:112
432
+ #: includes/admin/class-wp-job-manager-writepanels.php:118
433
+ #: includes/admin/class-wp-job-manager-writepanels.php:127
434
  msgid "Use file"
435
  msgstr ""
436
 
437
+ #: includes/admin/class-wp-job-manager-writepanels.php:112
438
+ #: includes/admin/class-wp-job-manager-writepanels.php:118
439
+ #: includes/admin/class-wp-job-manager-writepanels.php:127
440
  msgid "Upload"
441
  msgstr ""
442
 
443
+ #: includes/admin/class-wp-job-manager-writepanels.php:127
444
+ msgid "Add file"
445
  msgstr ""
446
 
447
+ #: includes/admin/class-wp-job-manager-writepanels.php:258
448
+ msgid "Guest user"
449
  msgstr ""
450
 
451
  #: includes/class-wp-job-manager-ajax.php:114
452
+ msgid "Showing %s"
453
+ msgstr ""
454
+
455
+ #: includes/class-wp-job-manager-ajax.php:116
456
+ msgid "Showing all %s"
457
  msgstr ""
458
 
459
+ #: includes/class-wp-job-manager-ajax.php:119
460
  msgid "located in &ldquo;%s&rdquo;"
461
  msgstr ""
462
 
479
  msgstr ""
480
 
481
  #: includes/class-wp-job-manager-post-types.php:49
482
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:155
483
+ msgid "Job category"
484
  msgstr ""
485
 
486
  #: includes/class-wp-job-manager-post-types.php:50
487
+ msgid "Job categories"
488
  msgstr ""
489
 
490
  #: includes/class-wp-job-manager-post-types.php:54
537
  msgstr ""
538
 
539
  #: includes/class-wp-job-manager-post-types.php:95
540
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:146
541
+ msgid "Job type"
542
  msgstr ""
543
 
544
  #: includes/class-wp-job-manager-post-types.php:96
545
+ msgid "Job types"
546
  msgstr ""
547
 
548
  #: includes/class-wp-job-manager-post-types.php:100
551
  msgstr ""
552
 
553
  #: includes/class-wp-job-manager-post-types.php:142
554
+ msgid "Job"
555
+ msgstr ""
556
+
557
+ #: includes/class-wp-job-manager-post-types.php:143
558
+ msgid "Jobs"
559
  msgstr ""
560
 
561
  #: includes/class-wp-job-manager-post-types.php:146
594
  msgstr ""
595
 
596
  #: includes/class-wp-job-manager-post-types.php:177
597
+ msgid "This is where you can create and manage %s."
598
  msgstr ""
599
 
600
  #: includes/class-wp-job-manager-post-types.php:212
601
+ #: wp-job-manager-functions.php:158
602
  msgctxt "post status"
603
  msgid "Expired"
604
  msgstr ""
610
  msgstr[1] ""
611
 
612
  #: includes/class-wp-job-manager-shortcodes.php:64
613
+ msgid "Invalid ID"
614
  msgstr ""
615
 
616
  #: includes/class-wp-job-manager-shortcodes.php:71
617
+ msgid "This position has already been filled"
618
  msgstr ""
619
 
620
  #: includes/class-wp-job-manager-shortcodes.php:77
622
  msgstr ""
623
 
624
  #: includes/class-wp-job-manager-shortcodes.php:82
625
+ msgid "This position is not filled"
626
  msgstr ""
627
 
628
+ #: includes/class-wp-job-manager-shortcodes.php:89
629
  msgid "%s has been marked as not filled"
630
  msgstr ""
631
 
632
+ #: includes/class-wp-job-manager-shortcodes.php:96
633
  msgid "%s has been deleted"
634
  msgstr ""
635
 
636
+ #: includes/class-wp-job-manager-shortcodes.php:122
637
+ msgid "You need to be signed in to manage your listings."
638
  msgstr ""
639
 
640
+ #: includes/class-wp-job-manager-shortcodes.php:162
641
+ #: includes/class-wp-job-manager-widgets.php:148
642
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:131
643
+ msgid "Title"
644
  msgstr ""
645
 
646
+ #: includes/class-wp-job-manager-shortcodes.php:164
647
  msgid "Date Posted"
648
  msgstr ""
649
 
650
+ #: includes/class-wp-job-manager-shortcodes.php:165
651
  msgid "Date Expires"
652
  msgstr ""
653
 
654
+ #: includes/class-wp-job-manager-shortcodes.php:257
655
+ #: includes/class-wp-job-manager-shortcodes.php:288
656
+ msgid "Load more listings"
 
 
 
 
657
  msgstr ""
658
 
659
  #: includes/class-wp-job-manager-widgets.php:141
660
+ msgid "Display a list of the most recent listings on your site."
 
 
 
 
661
  msgstr ""
662
 
663
+ #: includes/class-wp-job-manager-widgets.php:143
664
+ #: includes/class-wp-job-manager-widgets.php:147
665
+ msgid "Recent %s"
666
  msgstr ""
667
 
668
+ #: includes/class-wp-job-manager-widgets.php:156
669
+ msgid "Number of listings to show"
670
  msgstr ""
671
 
672
  #: includes/forms/class-wp-job-manager-form-edit-job.php:41
673
+ msgid "Invalid listing"
674
  msgstr ""
675
 
676
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:76
677
+ msgid "Save changes"
678
  msgstr ""
679
 
680
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:103
681
  msgid "Your changes have been saved."
682
  msgstr ""
683
 
684
+ #: includes/forms/class-wp-job-manager-form-edit-job.php:103
685
+ msgid "View &rarr;"
686
  msgstr ""
687
 
688
  #: includes/forms/class-wp-job-manager-form-submit-job.php:22
690
  msgstr ""
691
 
692
  #: includes/forms/class-wp-job-manager-form-submit-job.php:28
693
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:741
694
  msgid "Preview"
695
  msgstr ""
696
 
712
  msgstr ""
713
 
714
  #: includes/forms/class-wp-job-manager-form-submit-job.php:120
715
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:190
716
  msgid "http://"
717
  msgstr ""
718
 
720
  msgid "Enter an email address or website URL"
721
  msgstr ""
722
 
723
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:164
 
 
 
 
 
 
 
 
 
 
 
 
724
  msgid "Description"
725
  msgstr ""
726
 
727
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:183
728
  msgid "Enter the name of the company"
729
  msgstr ""
730
 
731
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:187
732
+ #: templates/content-single-job_listing-company.php:14
733
  msgid "Website"
734
  msgstr ""
735
 
736
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:194
737
  msgid "Tagline"
738
  msgstr ""
739
 
740
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:197
741
  msgid "Briefly describe your company"
742
  msgstr ""
743
 
744
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:202
745
+ msgid "Video"
746
+ msgstr ""
747
+
748
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:205
749
+ msgid "A link to a video about your company"
750
+ msgstr ""
751
+
752
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:209
753
  msgid "Twitter username"
754
  msgstr ""
755
 
756
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:212
757
  msgid "@yourcompany"
758
  msgstr ""
759
 
760
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:216
761
  msgid "Logo"
762
  msgstr ""
763
 
764
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:374
765
  msgid "%s is a required field"
766
  msgstr ""
767
 
768
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:380
769
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:385
770
+ msgid "%s is invalid"
771
+ msgstr ""
772
+
773
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:398
774
  msgid "Please enter a valid application email address"
775
  msgstr ""
776
 
777
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:407
778
  msgid "Please enter a valid application URL"
779
  msgstr ""
780
 
781
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:417
782
  msgid "Please enter a valid application email address or URL"
783
  msgstr ""
784
 
785
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:524
786
+ msgid "Preview &rarr;"
787
  msgstr ""
788
 
789
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:562
790
+ msgid "You must be signed in to post a new listing."
791
  msgstr ""
792
 
793
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:735
794
  msgid "Submit Listing &rarr;"
795
  msgstr ""
796
 
797
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:736
798
  msgid "&larr; Edit listing"
799
  msgstr ""
800
 
801
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:838
802
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:864
803
  msgid "\"%s\" (filetype %s) needs to be one of the following file types: %s"
804
  msgstr ""
805
 
834
  msgstr ""
835
 
836
  #: templates/account-signin.php:31
837
+ msgid "You must sign in to create a new listing."
838
  msgstr ""
839
 
840
  #: templates/account-signin.php:38
847
  msgstr ""
848
 
849
  #: templates/content-job_listing.php:16
850
+ #: templates/content-single-job_listing-meta.php:19
851
  #: templates/content-summary-job_listing.php:14
852
  msgid "Posted %s ago"
853
  msgstr ""
854
 
855
  #: templates/content-no-jobs-found.php:1
856
+ msgid "No more results found."
857
  msgstr ""
858
 
859
+ #: templates/content-single-job_listing-meta.php:22
860
+ msgid "This position has been filled"
861
  msgstr ""
862
 
863
+ #: templates/content-single-job_listing.php:6
864
+ msgid "This listing has expired"
865
  msgstr ""
866
 
867
+ #: templates/form-fields/file-field.php:9
868
+ #: templates/form-fields/file-field.php:18
869
  msgid "remove"
870
  msgstr ""
871
 
872
+ #: templates/form-fields/file-field.php:18
873
  msgid "or"
874
  msgstr ""
875
 
876
+ #: templates/form-fields/file-field.php:30
877
+ msgid "Maximum file size: %s."
878
  msgstr ""
879
 
880
  #: templates/job-application-email.php:1
899
 
900
  #: templates/job-dashboard.php:2
901
  msgid ""
902
+ "Your listings are shown in the table below. Expired listings will be "
903
  "automatically removed after 30 days."
904
  msgstr ""
905
 
906
  #: templates/job-dashboard.php:14
907
+ msgid "You do not have any active listings."
908
  msgstr ""
909
 
910
  #: templates/job-dashboard.php:36
919
  msgid "Relist"
920
  msgstr ""
921
 
922
+ #: templates/job-filters.php:12 templates/job-filters.php:13
923
  msgid "Keywords"
924
  msgstr ""
925
 
926
+ #: templates/job-filters.php:27
 
 
 
 
 
 
 
 
 
 
 
 
927
  msgid "Category"
928
  msgstr ""
929
 
930
+ #: templates/job-filters.php:31
931
+ msgid "Any category"
932
  msgstr ""
933
 
934
+ #: templates/job-filters.php:44
935
  msgid ""
936
  "Your browser does not support JavaScript, or it is disabled. JavaScript must "
937
+ "be enabled in order to view listings."
938
  msgstr ""
939
 
940
  #: templates/job-submit.php:35
941
+ msgid "Company Details"
942
  msgstr ""
943
 
944
+ #: templates/job-submitted.php:6
945
  msgid ""
946
+ "%s listed successfully. To view your listing <a href=\"%s\">click here</a>."
 
947
  msgstr ""
948
 
949
+ #: templates/job-submitted.php:9
950
+ msgid "%s submitted successfully. Your listing will be visible once approved."
 
951
  msgstr ""
952
 
953
+ #: wp-job-manager-functions.php:157
954
  msgctxt "post status"
955
  msgid "Draft"
956
  msgstr ""
957
 
958
+ #: wp-job-manager-functions.php:159
959
  msgctxt "post status"
960
  msgid "Preview"
961
  msgstr ""
962
 
963
+ #: wp-job-manager-functions.php:160
964
  msgctxt "post status"
965
  msgid "Pending approval"
966
  msgstr ""
967
 
968
+ #: wp-job-manager-functions.php:161
969
  msgctxt "post status"
970
  msgid "Pending payment"
971
  msgstr ""
972
 
973
+ #: wp-job-manager-functions.php:162
974
  msgctxt "post status"
975
  msgid "Active"
976
  msgstr ""
977
 
978
+ #: wp-job-manager-functions.php:263
979
  msgid "Reset"
980
  msgstr ""
981
 
982
+ #: wp-job-manager-functions.php:267
983
  msgid "RSS"
984
  msgstr ""
985
 
986
+ #: wp-job-manager-functions.php:317
987
  msgid "Your email address isn&#8217;t correct."
988
  msgstr ""
989
 
990
+ #: wp-job-manager-functions.php:320
991
  msgid "This email is already registered, please choose another one."
992
  msgstr ""
993
 
994
+ #: wp-job-manager-functions.php:442
995
+ msgid "Choose a category&hellip;"
996
+ msgstr ""
997
+
998
  #: wp-job-manager-template.php:128
999
  msgid "Inactive"
1000
  msgstr ""
1001
 
1002
  #: wp-job-manager-template.php:204
1003
+ msgid "Application via \"%s\" listing on %s"
1004
  msgstr ""
1005
 
1006
  #: wp-job-manager-template.php:262
1007
  msgid "Anywhere"
1008
  msgstr ""
1009
 
1010
+ #: wp-job-manager.php:107
1011
+ msgid "Are you sure you want to delete this listing?"
1012
  msgstr ""
1013
 
1014
  #. Plugin Name of the plugin/theme
package.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "wp-job-manager",
3
+ "title": "WP Job Manager",
4
+ "version": "1.12.0",
5
+ "homepage": "http://wordpress.org/plugins/wp-job-manager/",
6
+ "main": "Gruntfile.js",
7
+ "devDependencies": {
8
+ "grunt": "~0.4.2",
9
+ "grunt-contrib-uglify": "~0.3.2",
10
+ "grunt-contrib-less": "~0.9.0",
11
+ "grunt-contrib-cssmin": "~0.7.0",
12
+ "grunt-shell": "~0.6.4",
13
+ "grunt-contrib-watch": "~0.5.3",
14
+ "grunt-contrib-copy": "~0.5.0",
15
+ "grunt-contrib-clean": "0.5.x",
16
+ "grunt-wp-deploy": "0.3.x"
17
+ },
18
+ "engines": {
19
+ "node": ">=0.8.0",
20
+ "npm": ">=1.1.0"
21
+ }
22
+ }
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=mike.jol
4
  Tags: job listing, job board, job, jobs, company, hiring, employment, employees, candidate, freelance, internship
5
  Requires at least: 3.8
6
  Tested up to: 4.0
7
- Stable tag: 1.13.0
8
 
9
  Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
10
 
@@ -74,7 +74,7 @@ Once installed:
74
 
75
  1. Create a page called "jobs" and inside place the `[jobs]` shortcode. This will list your jobs.
76
  2. Create a page called "submit job" and inside place the `[submit_job_form]` shortcode if you want front-end submissions.
77
- 3. Create a page called "job dashboard" and inside place the `[job_dashboard]` shortcode for logged in users to manage their listings.
78
 
79
  **Note when using shortcodes**, if the content looks blown up/spaced out/poorly styled, edit your page and above the visual editor click on the 'text' tab. Then remove any 'pre' or 'code' tags wrapping your shortcode.
80
 
@@ -91,6 +91,25 @@ For more information, [read the documentation](https://wpjobmanager.com/document
91
 
92
  == Changelog ==
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  = 1.13.0 =
95
  * Shortcode arg to show numbered pagination instead of 'load more jobs'. show_pagination argument.
96
  * Define support for Jetpack publicize.
@@ -132,7 +151,7 @@ For more information, [read the documentation](https://wpjobmanager.com/document
132
  * Took out show_featured_only arg for the [jobs] shortcode and added 'featured' which can be set to true or false to show or hide featured jobs, or left null to show both.
133
  * Removed nonce from frontend job submission form to prevent issues with caching.
134
 
135
- = 1.10.0 =
136
  * Trigger change on 'enter' when filtering jobs.
137
  * Updated add-ons page to pull from wpjobmanager.com.
138
  * Updated links.
@@ -143,14 +162,14 @@ For more information, [read the documentation](https://wpjobmanager.com/document
143
  * Add required-field class around required inputs.
144
  * Enable paste as text in wp-editor field.
145
 
146
- = 1.9.3 =
147
  * Fix email URLs.
148
  * Target blank for application URLs.
149
  * Add posted by (author) setting in backend.
150
  * When saving jobs, ensure _featured and _filled are set.
151
  * Load admin scripts conditionally.
152
 
153
- = 1.9.2 =
154
  * Fix missing parameter in application_details_url causing URLs to be missing when applying.
155
 
156
  = 1.9.1 =
@@ -173,7 +192,7 @@ For more information, [read the documentation](https://wpjobmanager.com/document
173
  = 1.8.2 =
174
  * For initial load, target all .job_filters areas. Jobify compat.
175
 
176
- = 1.8.1 =
177
  * Fix - Corrected check to see if any category terms with jobs exist
178
 
179
  = 1.8.0 =
@@ -204,11 +223,11 @@ For more information, [read the documentation](https://wpjobmanager.com/document
204
 
205
  = 1.7.1 =
206
  * Updated textdomain to wp-job-manager
207
- * Re-done .pot file
208
  * Additonal filters for ajax responses
209
  * Moved localisations to Transifex https://www.transifex.com/projects/p/wp-job-manager/
210
 
211
- = 1.7.0 =
212
  * Added geolocation to save location data to meta after posting or saving a job. This will be used by other plugins.
213
  * Filter job_manager_geolocation_enabled and return false to turn off geolocation features.
214
  * Jobs shortcode can now be passed 'location' and 'keywords' to set the default for filters, or show only jobs with those keywords if filters are disabled
@@ -218,7 +237,7 @@ For more information, [read the documentation](https://wpjobmanager.com/document
218
  * submit_job_form_wp_editor_args filter
219
  * "Empty" categories are visible when filtering jobs in admin.
220
 
221
- = 1.6.0 =
222
  * MP6/WP 3.8 optimised styling. Min version 3.8 for new styling.
223
  * Removed images previously used in admin.
224
  * Tweak the_company_logo() to check if logo is valid URL.
4
  Tags: job listing, job board, job, jobs, company, hiring, employment, employees, candidate, freelance, internship
5
  Requires at least: 3.8
6
  Tested up to: 4.0
7
+ Stable tag: 1.14.0
8
 
9
  Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
10
 
74
 
75
  1. Create a page called "jobs" and inside place the `[jobs]` shortcode. This will list your jobs.
76
  2. Create a page called "submit job" and inside place the `[submit_job_form]` shortcode if you want front-end submissions.
77
+ 3. Create a page called "job dashboard" and inside place the `[job_dashboard]` shortcode for logged in users to manage their listings.
78
 
79
  **Note when using shortcodes**, if the content looks blown up/spaced out/poorly styled, edit your page and above the visual editor click on the 'text' tab. Then remove any 'pre' or 'code' tags wrapping your shortcode.
80
 
91
 
92
  == Changelog ==
93
 
94
+ = 1.14.0 =
95
+ * Extra filters for the filters template.
96
+ * Changed text strings for easier customisations based on post type labels, and made some strings more generic.
97
+ * New field types - term-checklist, term-multiselect, term-select. These save terms only.
98
+ * Added chosen javascript to enhance multiselect boxes when needed.
99
+ * Multiple category support.
100
+ * Attach Images on Upload to the job posts.
101
+ * Added an option to show a multiselect for categories on the job filters.
102
+ * Enabled chosen() for the job category filter.
103
+ * Added content-single-job_listing-company.php and content-single-job_listing-meta.php templates. These are hooked in.
104
+ * Added optional company video field to submission form.
105
+ * Video appended to company information box.
106
+ * the_company_video() and get_the_company_video() functions.
107
+ * show_more="false" for jobs shortcode to prevent loading more jobs.
108
+ * job_manager_delete_expired_jobs filter (__return_false to disable expired job deletion).
109
+ * job_manager_delete_expired_jobs_days filter (set number of days before deletion - default is 30).
110
+ * Support HTML5 multiple attribute for file upload field. Pass multiple=>'true' to form field definition to enable.
111
+ * Later loading for template functions.
112
+
113
  = 1.13.0 =
114
  * Shortcode arg to show numbered pagination instead of 'load more jobs'. show_pagination argument.
115
  * Define support for Jetpack publicize.
151
  * Took out show_featured_only arg for the [jobs] shortcode and added 'featured' which can be set to true or false to show or hide featured jobs, or left null to show both.
152
  * Removed nonce from frontend job submission form to prevent issues with caching.
153
 
154
+ = 1.10.0 =
155
  * Trigger change on 'enter' when filtering jobs.
156
  * Updated add-ons page to pull from wpjobmanager.com.
157
  * Updated links.
162
  * Add required-field class around required inputs.
163
  * Enable paste as text in wp-editor field.
164
 
165
+ = 1.9.3 =
166
  * Fix email URLs.
167
  * Target blank for application URLs.
168
  * Add posted by (author) setting in backend.
169
  * When saving jobs, ensure _featured and _filled are set.
170
  * Load admin scripts conditionally.
171
 
172
+ = 1.9.2 =
173
  * Fix missing parameter in application_details_url causing URLs to be missing when applying.
174
 
175
  = 1.9.1 =
192
  = 1.8.2 =
193
  * For initial load, target all .job_filters areas. Jobify compat.
194
 
195
+ = 1.8.1 =
196
  * Fix - Corrected check to see if any category terms with jobs exist
197
 
198
  = 1.8.0 =
223
 
224
  = 1.7.1 =
225
  * Updated textdomain to wp-job-manager
226
+ * Re-done .pot file
227
  * Additonal filters for ajax responses
228
  * Moved localisations to Transifex https://www.transifex.com/projects/p/wp-job-manager/
229
 
230
+ = 1.7.0 =
231
  * Added geolocation to save location data to meta after posting or saving a job. This will be used by other plugins.
232
  * Filter job_manager_geolocation_enabled and return false to turn off geolocation features.
233
  * Jobs shortcode can now be passed 'location' and 'keywords' to set the default for filters, or show only jobs with those keywords if filters are disabled
237
  * submit_job_form_wp_editor_args filter
238
  * "Empty" categories are visible when filtering jobs in admin.
239
 
240
+ = 1.6.0 =
241
  * MP6/WP 3.8 optimised styling. Min version 3.8 for new styling.
242
  * Removed images previously used in admin.
243
  * Tweak the_company_logo() to check if logo is valid URL.
templates/account-signin.php CHANGED
@@ -28,7 +28,7 @@
28
 
29
  <?php elseif ( $account_required ) : ?>
30
 
31
- <?php echo apply_filters( 'submit_job_form_login_required_message', __('You must sign in to create a new job listing.', 'wp-job-manager' ) ); ?>
32
 
33
  <?php endif; ?>
34
  </div>
28
 
29
  <?php elseif ( $account_required ) : ?>
30
 
31
+ <?php echo apply_filters( 'submit_job_form_login_required_message', __('You must sign in to create a new listing.', 'wp-job-manager' ) ); ?>
32
 
33
  <?php endif; ?>
34
  </div>
templates/content-no-jobs-found.php CHANGED
@@ -1 +1 @@
1
- <li class="no_job_listings_found"><?php _e( 'No more jobs found matching your selection.', 'wp-job-manager' ); ?></li>
1
+ <li class="no_job_listings_found"><?php _e( 'No more results found.', 'wp-job-manager' ); ?></li>
templates/content-single-job_listing-company.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Single view Company information box
4
+ *
5
+ * Hooked into single_job_listing_start priority 30
6
+ *
7
+ * @since 1.14.0
8
+ */
9
+ ?>
10
+ <div class="company" itemscope itemtype="http://data-vocabulary.org/Organization">
11
+ <?php the_company_logo(); ?>
12
+
13
+ <p class="name">
14
+ <a class="website" href="<?php echo get_the_company_website(); ?>" itemprop="url" target="_blank"><?php _e( 'Website', 'wp-job-manager' ); ?></a>
15
+ <?php the_company_twitter(); ?>
16
+ <?php the_company_name( '<strong itemprop="name">', '</strong>' ); ?>
17
+ </p>
18
+ <?php the_company_tagline( '<p class="tagline">', '</p>' ); ?>
19
+ <?php the_company_video(); ?>
20
+ </div>
templates/content-single-job_listing-meta.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Single view Job meta box
4
+ *
5
+ * Hooked into single_job_listing_start priority 20
6
+ *
7
+ * @since 1.14.0
8
+ */
9
+ ?>
10
+ <?php do_action( 'single_job_listing_meta_before' ); ?>
11
+
12
+ <ul class="meta">
13
+ <?php do_action( 'single_job_listing_meta_start' ); ?>
14
+
15
+ <li class="job-type <?php echo get_the_job_type() ? sanitize_title( get_the_job_type()->slug ) : ''; ?>" itemprop="employmentType"><?php the_job_type(); ?></li>
16
+
17
+ <li class="location" itemprop="jobLocation"><?php the_job_location(); ?></li>
18
+
19
+ <li class="date-posted" itemprop="datePosted"><date><?php printf( __( 'Posted %s ago', 'wp-job-manager' ), human_time_diff( get_post_time( 'U' ), current_time( 'timestamp' ) ) ); ?></date></li>
20
+
21
+ <?php if ( is_position_filled() ) : ?>
22
+ <li class="position-filled"><?php _e( 'This position has been filled', 'wp-job-manager' ); ?></li>
23
+ <?php endif; ?>
24
+
25
+ <?php do_action( 'single_job_listing_meta_end' ); ?>
26
+ </ul>
27
+
28
+ <?php do_action( 'single_job_listing_meta_after' ); ?>
templates/content-single-job_listing.php CHANGED
@@ -1,52 +1,36 @@
1
- <?php global $job_manager; ?>
2
-
3
  <div class="single_job_listing" itemscope itemtype="http://schema.org/JobPosting">
4
  <meta itemprop="title" content="<?php echo esc_attr( $post->post_title ); ?>" />
5
 
6
  <?php if ( $post->post_status == 'expired' ) : ?>
7
 
8
- <div class="job-manager-info"><?php _e( 'This job listing has expired', 'wp-job-manager' ); ?></div>
9
 
10
  <?php else : ?>
11
 
12
- <?php do_action( 'single_job_listing_start' ); ?>
13
-
14
- <ul class="meta">
15
- <?php do_action( 'single_job_listing_meta_start' ); ?>
16
-
17
- <li class="job-type <?php echo get_the_job_type() ? sanitize_title( get_the_job_type()->slug ) : ''; ?>" itemprop="employmentType"><?php the_job_type(); ?></li>
18
-
19
- <li class="location" itemprop="jobLocation"><?php the_job_location(); ?></li>
20
-
21
- <li class="date-posted" itemprop="datePosted"><date><?php printf( __( 'Posted %s ago', 'wp-job-manager' ), human_time_diff( get_post_time( 'U' ), current_time( 'timestamp' ) ) ); ?></date></li>
22
-
23
- <?php if ( is_position_filled() ) : ?>
24
- <li class="position-filled"><?php _e( 'This position has been filled', 'wp-job-manager' ); ?></li>
25
- <?php endif; ?>
26
-
27
- <?php do_action( 'single_job_listing_meta_end' ); ?>
28
- </ul>
29
-
30
- <?php do_action( 'single_job_listing_meta_after' ); ?>
31
-
32
- <div class="company" itemscope itemtype="http://data-vocabulary.org/Organization">
33
- <?php the_company_logo(); ?>
34
-
35
- <p class="name">
36
- <a class="website" href="<?php echo get_the_company_website(); ?>" itemprop="url" target="_blank"><?php _e( 'Website', 'wp-job-manager' ); ?></a>
37
- <?php the_company_twitter(); ?>
38
- <?php the_company_name( '<strong itemprop="name">', '</strong>' ); ?>
39
- </p>
40
- <?php the_company_tagline( '<p class="tagline">', '</p>' ); ?>
41
- </div>
42
 
43
  <div class="job_description" itemprop="description">
44
  <?php echo apply_filters( 'the_job_description', get_the_content() ); ?>
45
  </div>
46
 
47
- <?php if ( ! is_position_filled() && $post->post_status !== 'preview' ) get_job_manager_template( 'job-application.php' ); ?>
 
 
48
 
49
- <?php do_action( 'single_job_listing_end' ); ?>
 
 
 
 
 
50
 
51
  <?php endif; ?>
52
  </div>
 
 
1
  <div class="single_job_listing" itemscope itemtype="http://schema.org/JobPosting">
2
  <meta itemprop="title" content="<?php echo esc_attr( $post->post_title ); ?>" />
3
 
4
  <?php if ( $post->post_status == 'expired' ) : ?>
5
 
6
+ <div class="job-manager-info"><?php _e( 'This listing has expired', 'wp-job-manager' ); ?></div>
7
 
8
  <?php else : ?>
9
 
10
+ <?php
11
+ /**
12
+ * single_job_listing_start hook
13
+ *
14
+ * @hooked job_listing_meta_display - 20
15
+ * @hooked job_listing_company_display - 30
16
+ */
17
+ do_action( 'single_job_listing_start' );
18
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  <div class="job_description" itemprop="description">
21
  <?php echo apply_filters( 'the_job_description', get_the_content() ); ?>
22
  </div>
23
 
24
+ <?php if ( ! is_position_filled() && $post->post_status !== 'preview' ) : ?>
25
+ <?php get_job_manager_template( 'job-application.php' ); ?>
26
+ <?php endif; ?>
27
 
28
+ <?php
29
+ /**
30
+ * single_job_listing_end hook
31
+ */
32
+ do_action( 'single_job_listing_end' );
33
+ ?>
34
 
35
  <?php endif; ?>
36
  </div>
templates/form-fields/file-field.php CHANGED
@@ -1,18 +1,32 @@
1
  <?php if ( ! empty( $field['value'] ) ) : ?>
2
- <div class="job-manager-uploaded-file">
3
- <?php if ( in_array( substr( strrchr( $field['value'], '.' ), 1 ), array( 'jpg', 'gif', 'png', 'jpeg', 'jpe' ) ) ) : ?>
4
- <img src="<?php echo $field['value']; ?>" />
5
- <?php endif; ?>
6
- <?php echo '<code>' . basename( $field['value'] ) . ' <a class="job-manager-remove-uploaded-file" href="#">[' . __( 'remove', 'wp-job-manager' ) . ']</a>' . '</code> ' . __( 'or', 'wp-job-manager' ) . '&hellip;'; ?>
7
- <input type="hidden" class="input-text" name="current_<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>" value="<?php echo isset( $field['value'] ) ? esc_attr( $field['value'] ) : ''; ?>" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  </div>
9
  <?php endif; ?>
10
 
11
- <input type="file" class="input-text" name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>" id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo esc_attr( $field['placeholder'] ); ?>" />
12
  <small class="description">
13
  <?php if ( ! empty( $field['description'] ) ) : ?>
14
  <?php echo $field['description']; ?>
15
  <?php else : ?>
16
- <?php printf( __( 'Max. file size: %s.', 'wp-job-manager' ), size_format( wp_max_upload_size() ) ); ?>
17
  <?php endif; ?>
18
  </small>
1
  <?php if ( ! empty( $field['value'] ) ) : ?>
2
+ <div class="job-manager-uploaded-files">
3
+ <?php if ( is_array( $field['value'] ) ) : ?>
4
+ <?php foreach ( $field['value'] as $value ) : ?>
5
+ <div class="job-manager-uploaded-file">
6
+ <?php if ( in_array( substr( strrchr( $value, '.' ), 1 ), array( 'jpg', 'gif', 'png', 'jpeg', 'jpe' ) ) ) : ?>
7
+ <span class="job-manager-uploaded-file-preview"><img src="<?php echo $value; ?>" /></span>
8
+ <?php endif; ?>
9
+ <?php echo '<span class="job-manager-uploaded-file-name"><code>' . basename( $value ) . ' <a class="job-manager-remove-uploaded-file" href="#">[' . __( 'remove', 'wp-job-manager' ) . ']</a></code></span>'; ?>
10
+ <input type="hidden" class="input-text" name="current_<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>[]" value="<?php echo esc_attr( $value ); ?>" />
11
+ </div>
12
+ <?php endforeach; ?>
13
+ <?php elseif ( $value = $field['value'] ) : ?>
14
+ <div class="job-manager-uploaded-file">
15
+ <?php if ( in_array( substr( strrchr( $value, '.' ), 1 ), array( 'jpg', 'gif', 'png', 'jpeg', 'jpe' ) ) ) : ?>
16
+ <span class="job-manager-uploaded-file-preview"><img src="<?php echo $value; ?>" /></span>
17
+ <?php endif; ?>
18
+ <?php echo '<span class="job-manager-uploaded-file-name"><code>' . basename( $value ) . ' <a class="job-manager-remove-uploaded-file" href="#">[' . __( 'remove', 'wp-job-manager' ) . ']</a></code> ' . __( 'or', 'wp-job-manager' ) . '&hellip;</span>'; ?>
19
+ <input type="hidden" class="input-text" name="current_<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>" value="<?php echo esc_attr( $field['value'] ); ?>" />
20
+ </div>
21
+ <?php endif; ?>
22
  </div>
23
  <?php endif; ?>
24
 
25
+ <input type="file" class="input-text" <?php if ( ! empty( $field['multiple'] ) ) echo 'multiple'; ?> name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?><?php if ( ! empty( $field['multiple'] ) ) echo '[]'; ?>" id="<?php echo esc_attr( $key ); ?>" placeholder="<?php echo esc_attr( $field['placeholder'] ); ?>" />
26
  <small class="description">
27
  <?php if ( ! empty( $field['description'] ) ) : ?>
28
  <?php echo $field['description']; ?>
29
  <?php else : ?>
30
+ <?php printf( __( 'Maximum file size: %s.', 'wp-job-manager' ), size_format( wp_max_upload_size() ) ); ?>
31
  <?php endif; ?>
32
  </small>
templates/form-fields/multiselect-field.php CHANGED
@@ -1,4 +1,4 @@
1
- <select multiple="multiple" name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>[]" id="<?php echo esc_attr( $key ); ?>">
2
  <?php foreach ( $field['options'] as $key => $value ) : ?>
3
  <option value="<?php echo esc_attr( $key ); ?>" <?php if ( ! empty( $field['value'] ) && is_array( $field['value'] ) ) selected( in_array( $key, $field['value'] ), true ); ?>><?php echo esc_html( $value ); ?></option>
4
  <?php endforeach; ?>
1
+ <select multiple="multiple" name="<?php echo esc_attr( isset( $field['name'] ) ? $field['name'] : $key ); ?>[]" id="<?php echo esc_attr( $key ); ?>" class="job-manager-multiselect">
2
  <?php foreach ( $field['options'] as $key => $value ) : ?>
3
  <option value="<?php echo esc_attr( $key ); ?>" <?php if ( ! empty( $field['value'] ) && is_array( $field['value'] ) ) selected( in_array( $key, $field['value'] ), true ); ?>><?php echo esc_html( $value ); ?></option>
4
  <?php endforeach; ?>
templates/form-fields/term-checklist-field.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <ul class="job-manager-term-checklist job-manager-term-checklist-<?php echo $key ?>">
2
+ <?php
3
+ require_once( ABSPATH . '/wp-admin/includes/template.php' );
4
+
5
+ if ( empty( $field['default'] ) ) {
6
+ $field['default'] = '';
7
+ }
8
+
9
+ $args = array(
10
+ 'descendants_and_self' => 0,
11
+ 'selected_cats' => isset( $field['value'] ) ? $field['value'] : ( is_array( $field['default'] ) ? $field['default'] : array( $field['default'] ) ),
12
+ 'popular_cats' => false,
13
+ 'taxonomy' => $field['taxonomy'],
14
+ 'checked_ontop' => false
15
+ );
16
+
17
+ // $field['post_id'] needs to be passed via the args so we can get the existing terms
18
+ wp_terms_checklist( 0, $args );
19
+ ?>
20
+ </ul>
21
+ <?php if ( ! empty( $field['description'] ) ) : ?><small class="description"><?php echo $field['description']; ?></small><?php endif; ?>
templates/form-fields/term-multiselect-field.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // Get selected value
3
+ if ( isset( $field['value'] ) ) {
4
+ $selected = $field['value'];
5
+ } elseif ( ! empty( $field['default'] ) && is_int( $field['default'] ) ) {
6
+ $selected = $field['default'];
7
+ } elseif ( ! empty( $field['default'] ) && ( $term = get_term_by( 'slug', $field['default'], $field['taxonomy'] ) ) ) {
8
+ $selected = $term->term_id;
9
+ } else {
10
+ $selected = '';
11
+ }
12
+
13
+ wp_enqueue_script( 'wp-job-manager-term-multiselect' );
14
+
15
+ job_manager_dropdown_categories( array(
16
+ 'taxonomy' => $field['taxonomy'],
17
+ 'hierarchical' => 1,
18
+ 'name' => isset( $field['name'] ) ? $field['name'] : $key,
19
+ 'orderby' => 'name',
20
+ 'selected' => $selected,
21
+ 'hide_empty' => false,
22
+ ) );
23
+
24
+ if ( ! empty( $field['description'] ) ) : ?><small class="description"><?php echo $field['description']; ?></small><?php endif; ?>
templates/form-fields/term-select-field.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Get selected value
4
+ if ( isset( $field['value'] ) ) {
5
+ $selected = $field['value'];
6
+ } elseif ( is_int( $field['default'] ) ) {
7
+ $selected = $field['default'];
8
+ } elseif ( ! empty( $field['default'] ) && ( $term = get_term_by( 'slug', $field['default'], $field['taxonomy'] ) ) ) {
9
+ $selected = $term->term_id;
10
+ } else {
11
+ $selected = '';
12
+ }
13
+
14
+ // Select only supports 1 value
15
+ if ( is_array( $selected ) ) {
16
+ $selected = current( $selected );
17
+ }
18
+
19
+ wp_dropdown_categories( array(
20
+ 'taxonomy' => $field['taxonomy'],
21
+ 'hierarchical' => 1,
22
+ 'show_option_all' => false,
23
+ 'show_option_none' => $field['required'] ? '' : '-',
24
+ 'name' => isset( $field['name'] ) ? $field['name'] : $key,
25
+ 'orderby' => 'name',
26
+ 'selected' => $selected,
27
+ 'hide_empty' => false
28
+ ) );
templates/form-fields/wp-editor-field.php CHANGED
@@ -5,17 +5,17 @@ $editor = apply_filters( 'submit_job_form_wp_editor_args', array(
5
  'textarea_rows' => 8,
6
  'quicktags' => false,
7
  'tinymce' => array(
8
- 'plugins' => 'paste',
9
  'paste_as_text' => true,
10
  'paste_auto_cleanup_on_paste' => true,
11
  'paste_remove_spans' => true,
12
  'paste_remove_styles' => true,
13
  'paste_remove_styles_if_webkit' => true,
14
  'paste_strip_class_attributes' => true,
15
- 'theme_advanced_buttons1' => 'bold,italic,|,bullist,numlist,|,undo,redo,|,|,code',
16
- 'theme_advanced_buttons2' => '',
17
- 'theme_advanced_buttons3' => '',
18
- 'theme_advanced_buttons4' => ''
19
  ),
20
  ) );
21
  wp_editor( isset( $field['value'] ) ? esc_textarea( $field['value'] ) : '', $key, $editor );
5
  'textarea_rows' => 8,
6
  'quicktags' => false,
7
  'tinymce' => array(
8
+ 'plugins' => 'paste,wplink',
9
  'paste_as_text' => true,
10
  'paste_auto_cleanup_on_paste' => true,
11
  'paste_remove_spans' => true,
12
  'paste_remove_styles' => true,
13
  'paste_remove_styles_if_webkit' => true,
14
  'paste_strip_class_attributes' => true,
15
+ 'toolbar1' => 'bold,italic,|,bullist,numlist,|,link,unlink,|,undo,redo,|,|,code',
16
+ 'toolbar2' => '',
17
+ 'toolbar3' => '',
18
+ 'toolbar4' => ''
19
  ),
20
  ) );
21
  wp_editor( isset( $field['value'] ) ? esc_textarea( $field['value'] ) : '', $key, $editor );
templates/job-dashboard.php CHANGED
@@ -1,5 +1,5 @@
1
  <div id="job-manager-job-dashboard">
2
- <p><?php _e( 'Your job listings are shown in the table below. Expired listings will be automatically removed after 30 days.', 'wp-job-manager' ); ?></p>
3
  <table class="job-manager-jobs">
4
  <thead>
5
  <tr>
@@ -11,7 +11,7 @@
11
  <tbody>
12
  <?php if ( ! $jobs ) : ?>
13
  <tr>
14
- <td colspan="6"><?php _e( 'You do not have any active job listings.', 'wp-job-manager' ); ?></td>
15
  </tr>
16
  <?php else : ?>
17
  <?php foreach ( $jobs as $job ) : ?>
1
  <div id="job-manager-job-dashboard">
2
+ <p><?php _e( 'Your listings are shown in the table below. Expired listings will be automatically removed after 30 days.', 'wp-job-manager' ); ?></p>
3
  <table class="job-manager-jobs">
4
  <thead>
5
  <tr>
11
  <tbody>
12
  <?php if ( ! $jobs ) : ?>
13
  <tr>
14
+ <td colspan="6"><?php _e( 'You do not have any active listings.', 'wp-job-manager' ); ?></td>
15
  </tr>
16
  <?php else : ?>
17
  <?php foreach ( $jobs as $job ) : ?>
templates/job-filters.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php wp_enqueue_script( 'wp-job-manager-ajax-filters' ); ?>
 
 
 
2
  <form class="job_filters">
3
  <?php do_action( 'job_manager_job_filters_start', $atts ); ?>
4
 
@@ -7,12 +10,12 @@
7
 
8
  <div class="search_keywords">
9
  <label for="search_keywords"><?php _e( 'Keywords', 'wp-job-manager' ); ?></label>
10
- <input type="text" name="search_keywords" id="search_keywords" placeholder="<?php _e( 'All Jobs', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( $keywords ); ?>" />
11
  </div>
12
 
13
  <div class="search_location">
14
  <label for="search_location"><?php _e( 'Location', 'wp-job-manager' ); ?></label>
15
- <input type="text" name="search_location" id="search_location" placeholder="<?php _e( 'Any Location', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( $location ); ?>" />
16
  </div>
17
 
18
  <?php if ( $categories ) : ?>
@@ -22,7 +25,11 @@
22
  <?php elseif ( $show_categories && ! is_tax( 'job_listing_category' ) && get_terms( 'job_listing_category' ) ) : ?>
23
  <div class="search_categories">
24
  <label for="search_categories"><?php _e( 'Category', 'wp-job-manager' ); ?></label>
25
- <?php wp_dropdown_categories( array( 'taxonomy' => 'job_listing_category', 'hierarchical' => 1, 'show_option_all' => __( 'All Job Categories', 'wp-job-manager' ), 'name' => 'search_categories', 'orderby' => 'name', 'selected' => $selected_category ) ); ?>
 
 
 
 
26
  </div>
27
  <?php endif; ?>
28
 
@@ -31,4 +38,7 @@
31
 
32
  <?php do_action( 'job_manager_job_filters_end', $atts ); ?>
33
  </form>
34
- <noscript><?php _e( 'Your browser does not support JavaScript, or it is disabled. JavaScript must be enabled in order to view job listings.', 'wp-job-manager' ); ?></noscript>
 
 
 
1
  <?php wp_enqueue_script( 'wp-job-manager-ajax-filters' ); ?>
2
+
3
+ <?php do_action( 'job_manager_job_filters_before', $atts ); ?>
4
+
5
  <form class="job_filters">
6
  <?php do_action( 'job_manager_job_filters_start', $atts ); ?>
7
 
10
 
11
  <div class="search_keywords">
12
  <label for="search_keywords"><?php _e( 'Keywords', 'wp-job-manager' ); ?></label>
13
+ <input type="text" name="search_keywords" id="search_keywords" placeholder="<?php esc_attr_e( 'Keywords', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( $keywords ); ?>" />
14
  </div>
15
 
16
  <div class="search_location">
17
  <label for="search_location"><?php _e( 'Location', 'wp-job-manager' ); ?></label>
18
+ <input type="text" name="search_location" id="search_location" placeholder="<?php esc_attr_e( 'Location', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( $location ); ?>" />
19
  </div>
20
 
21
  <?php if ( $categories ) : ?>
25
  <?php elseif ( $show_categories && ! is_tax( 'job_listing_category' ) && get_terms( 'job_listing_category' ) ) : ?>
26
  <div class="search_categories">
27
  <label for="search_categories"><?php _e( 'Category', 'wp-job-manager' ); ?></label>
28
+ <?php if ( $show_category_multiselect ) : ?>
29
+ <?php job_manager_dropdown_categories( array( 'taxonomy' => 'job_listing_category', 'hierarchical' => 1, 'name' => 'search_categories', 'orderby' => 'name', 'selected' => $selected_category, 'hide_empty' => false ) ); ?>
30
+ <?php else : ?>
31
+ <?php wp_dropdown_categories( array( 'taxonomy' => 'job_listing_category', 'hierarchical' => 1, 'show_option_all' => __( 'Any category', 'wp-job-manager' ), 'name' => 'search_categories', 'orderby' => 'name', 'selected' => $selected_category ) ); ?>
32
+ <?php endif; ?>
33
  </div>
34
  <?php endif; ?>
35
 
38
 
39
  <?php do_action( 'job_manager_job_filters_end', $atts ); ?>
40
  </form>
41
+
42
+ <?php do_action( 'job_manager_job_filters_after', $atts ); ?>
43
+
44
+ <noscript><?php _e( 'Your browser does not support JavaScript, or it is disabled. JavaScript must be enabled in order to view listings.', 'wp-job-manager' ); ?></noscript>
templates/job-submit.php CHANGED
@@ -32,7 +32,7 @@ global $job_manager;
32
 
33
  <!-- Company Information Fields -->
34
  <?php if ( $company_fields ) : ?>
35
- <h2><?php _e( 'Company details', 'wp-job-manager' ); ?></h2>
36
 
37
  <?php do_action( 'submit_job_form_company_fields_start' ); ?>
38
 
32
 
33
  <!-- Company Information Fields -->
34
  <?php if ( $company_fields ) : ?>
35
+ <h2><?php _e( 'Company Details', 'wp-job-manager' ); ?></h2>
36
 
37
  <?php do_action( 'submit_job_form_company_fields_start' ); ?>
38
 
templates/job-submitted.php CHANGED
@@ -1,10 +1,12 @@
1
  <?php
 
 
2
  switch ( $job->post_status ) :
3
  case 'publish' :
4
- printf( __( 'Job listed successfully. To view your job listing <a href="%s">click here</a>.', 'wp-job-manager' ), get_permalink( $job->ID ) );
5
  break;
6
  case 'pending' :
7
- printf( __( 'Job submitted successfully. Your job listing will be visible once approved.', 'wp-job-manager' ), get_permalink( $job->ID ) );
8
  break;
9
  default :
10
  do_action( 'job_manager_job_submitted_content_' . str_replace( '-', '_', sanitize_title( $job->post_status ) ), $job );
1
  <?php
2
+ global $wp_post_types;
3
+
4
  switch ( $job->post_status ) :
5
  case 'publish' :
6
+ printf( __( '%s listed successfully. To view your listing <a href="%s">click here</a>.', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name, get_permalink( $job->ID ) );
7
  break;
8
  case 'pending' :
9
+ printf( __( '%s submitted successfully. Your listing will be visible once approved.', 'wp-job-manager' ), $wp_post_types['job_listing']->labels->singular_name, get_permalink( $job->ID ) );
10
  break;
11
  default :
12
  do_action( 'job_manager_job_submitted_content_' . str_replace( '-', '_', sanitize_title( $job->post_status ) ), $job );
wp-job-manager-functions.php CHANGED
@@ -43,7 +43,7 @@ function get_job_listings( $args = array() ) {
43
 
44
  if ( ! empty( $args['search_categories'] ) ) {
45
  $field = is_numeric( $args['search_categories'][0] ) ? 'term_id' : 'slug';
46
-
47
  $query_args['tax_query'][] = array(
48
  'taxonomy' => 'job_listing_category',
49
  'field' => $field,
@@ -69,11 +69,13 @@ function get_job_listings( $args = array() ) {
69
 
70
  // Location search - search geolocation data and location meta
71
  if ( $args['search_location'] ) {
72
- $location_post_ids = array_merge( $wpdb->get_col( $wpdb->prepare( "
73
  SELECT DISTINCT post_id FROM {$wpdb->postmeta}
74
- WHERE meta_key IN ( 'geolocation_city', 'geolocation_country_long', 'geolocation_country_short', 'geolocation_formatted_address', 'geolocation_state_long', 'geolocation_state_short', 'geolocation_street', 'geolocation_zipcode', '_job_location' )
75
  AND meta_value LIKE '%%%s%%'
76
- ", $args['search_location'] ) ), array( 0 ) );
 
 
77
  } else {
78
  $location_post_ids = array();
79
  }
@@ -86,9 +88,9 @@ function get_job_listings( $args = array() ) {
86
 
87
  foreach ( $search_keywords as $keyword ) {
88
  $postmeta_search_keywords_sql[] = " meta_value LIKE '%" . esc_sql( $keyword ) . "%' ";
89
- $posts_search_keywords_sql[] = "
90
- post_title LIKE '%" . esc_sql( $keyword ) . "%'
91
- OR post_content LIKE '%" . esc_sql( $keyword ) . "%'
92
  ";
93
  }
94
 
@@ -240,6 +242,21 @@ if ( ! function_exists( 'job_manager_get_filtered_links' ) ) :
240
  * Shows links after filtering jobs
241
  */
242
  function job_manager_get_filtered_links( $args = array() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
 
244
  $links = apply_filters( 'job_manager_job_filters_showing_jobs_links', array(
245
  'reset' => array(
@@ -251,7 +268,7 @@ function job_manager_get_filtered_links( $args = array() ) {
251
  'url' => get_job_listing_rss_link( apply_filters( 'job_manager_get_listings_custom_filter_rss_args', array(
252
  'type' => isset( $args['filter_job_types'] ) ? implode( ',', $args['filter_job_types'] ) : '',
253
  'location' => $args['search_location'],
254
- 'job_categories' => implode( ',', $args['search_categories'] ),
255
  's' => $args['search_keywords'],
256
  ) ) )
257
  )
@@ -285,7 +302,7 @@ if ( ! function_exists( 'job_manager_create_account' ) ) :
285
  * Handle account creation.
286
  *
287
  * @param string $account_email
288
- * @param string $role
289
  * @return WP_error | bool was an account created?
290
  */
291
  function wp_job_manager_create_account( $account_email, $role = '' ) {
@@ -399,4 +416,66 @@ function job_manager_enable_registration() {
399
  */
400
  function job_manager_user_requires_account() {
401
  return apply_filters( 'job_manager_user_requires_account', get_option( 'job_manager_user_requires_account' ) == 1 ? true : false );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
402
  }
43
 
44
  if ( ! empty( $args['search_categories'] ) ) {
45
  $field = is_numeric( $args['search_categories'][0] ) ? 'term_id' : 'slug';
46
+
47
  $query_args['tax_query'][] = array(
48
  'taxonomy' => 'job_listing_category',
49
  'field' => $field,
69
 
70
  // Location search - search geolocation data and location meta
71
  if ( $args['search_location'] ) {
72
+ $location_post_ids = $wpdb->get_col( apply_filters( 'get_job_listings_location_post_ids_sql', $wpdb->prepare( "
73
  SELECT DISTINCT post_id FROM {$wpdb->postmeta}
74
+ WHERE meta_key IN ( 'geolocation_city', 'geolocation_country_long', 'geolocation_country_short', 'geolocation_formatted_address', 'geolocation_state_long', 'geolocation_state_short', 'geolocation_street', 'geolocation_zipcode', '_job_location' )
75
  AND meta_value LIKE '%%%s%%'
76
+ ", $args['search_location'] ) ) );
77
+
78
+ $location_post_ids = array_merge( $location_post_ids, array( 0 ) );
79
  } else {
80
  $location_post_ids = array();
81
  }
88
 
89
  foreach ( $search_keywords as $keyword ) {
90
  $postmeta_search_keywords_sql[] = " meta_value LIKE '%" . esc_sql( $keyword ) . "%' ";
91
+ $posts_search_keywords_sql[] = "
92
+ post_title LIKE '%" . esc_sql( $keyword ) . "%'
93
+ OR post_content LIKE '%" . esc_sql( $keyword ) . "%'
94
  ";
95
  }
96
 
242
  * Shows links after filtering jobs
243
  */
244
  function job_manager_get_filtered_links( $args = array() ) {
245
+ $job_categories = array();
246
+
247
+ // Convert to slugs
248
+ if ( $args['search_categories'] ) {
249
+ foreach ( $args['search_categories'] as $category ) {
250
+ if ( is_numeric( $category ) ) {
251
+ $category_object = get_term_by( 'id', $category, 'job_listing_category' );
252
+ if ( ! is_wp_error( $category_object ) ) {
253
+ $job_categories[] = $category_object->slug;
254
+ }
255
+ } else {
256
+ $job_categories[] = $category;
257
+ }
258
+ }
259
+ }
260
 
261
  $links = apply_filters( 'job_manager_job_filters_showing_jobs_links', array(
262
  'reset' => array(
268
  'url' => get_job_listing_rss_link( apply_filters( 'job_manager_get_listings_custom_filter_rss_args', array(
269
  'type' => isset( $args['filter_job_types'] ) ? implode( ',', $args['filter_job_types'] ) : '',
270
  'location' => $args['search_location'],
271
+ 'job_categories' => implode( ',', $job_categories ),
272
  's' => $args['search_keywords'],
273
  ) ) )
274
  )
302
  * Handle account creation.
303
  *
304
  * @param string $account_email
305
+ * @param string $role
306
  * @return WP_error | bool was an account created?
307
  */
308
  function wp_job_manager_create_account( $account_email, $role = '' ) {
416
  */
417
  function job_manager_user_requires_account() {
418
  return apply_filters( 'job_manager_user_requires_account', get_option( 'job_manager_user_requires_account' ) == 1 ? true : false );
419
+ }
420
+
421
+ /**
422
+ * Based on wp_dropdown_categories, with the exception of supporting multiple selected categories.
423
+ * @see wp_dropdown_categories
424
+ */
425
+ function job_manager_dropdown_categories( $args = '' ) {
426
+ $defaults = array(
427
+ 'orderby' => 'id',
428
+ 'order' => 'ASC',
429
+ 'show_count' => 0,
430
+ 'hide_empty' => 1,
431
+ 'child_of' => 0,
432
+ 'exclude' => '',
433
+ 'echo' => 1,
434
+ 'selected' => 0,
435
+ 'hierarchical' => 0,
436
+ 'name' => 'cat',
437
+ 'id' => '',
438
+ 'class' => 'job-manager-category-dropdown',
439
+ 'depth' => 0,
440
+ 'taxonomy' => 'job_listing_category',
441
+ 'value' => 'id',
442
+ 'placeholder' => __( 'Choose a category&hellip;', 'wp-job-manager' )
443
+ );
444
+
445
+ $r = wp_parse_args( $args, $defaults );
446
+
447
+ if ( ! isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] ) {
448
+ $r['pad_counts'] = true;
449
+ }
450
+
451
+ extract( $r );
452
+
453
+ $categories = get_terms( $taxonomy, $r );
454
+ $name = esc_attr( $name );
455
+ $class = esc_attr( $class );
456
+ $id = $id ? esc_attr( $id ) : $name;
457
+
458
+ $output = "<select name='{$name}[]' id='$id' class='$class' multiple='multiple' data-placeholder='{$placeholder}'>\n";
459
+
460
+ if ( ! empty( $categories ) ) {
461
+ include_once( JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-category-walker.php' );
462
+
463
+ $walker = new WP_Job_Manager_Category_Walker;
464
+
465
+ if ( $hierarchical ) {
466
+ $depth = $r['depth']; // Walk the full depth.
467
+ } else {
468
+ $depth = -1; // Flat.
469
+ }
470
+
471
+ $output .= $walker->walk( $categories, $depth, $r );
472
+ }
473
+
474
+ $output .= "</select>\n";
475
+
476
+ if ( $echo ) {
477
+ echo $output;
478
+ }
479
+
480
+ return $output;
481
  }
wp-job-manager-template.php CHANGED
@@ -201,7 +201,7 @@ function get_the_job_application_method( $post = null ) {
201
  $method->type = 'email';
202
  $method->raw_email = $apply;
203
  $method->email = antispambot( $apply );
204
- $method->subject = apply_filters( 'job_manager_application_email_subject', sprintf( __( 'Job Application via "%s" listing on %s', 'wp-job-manager' ), $post->post_title, home_url() ), $post );
205
  } else {
206
  if ( strpos( $apply, 'http' ) !== 0 )
207
  $apply = 'http://' . $apply;
@@ -327,10 +327,17 @@ function get_the_company_logo( $post = null ) {
327
  function job_manager_get_resized_image( $logo, $size ) {
328
  global $_wp_additional_image_sizes;
329
 
330
- if ( $size !== 'full' && isset( $_wp_additional_image_sizes[ $size ] ) ) {
331
 
332
- $img_width = $_wp_additional_image_sizes[ $size ]['width'];
333
- $img_height = $_wp_additional_image_sizes[ $size ]['height'];
 
 
 
 
 
 
 
334
 
335
  $upload_dir = wp_upload_dir();
336
  $logo_path = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $logo );
@@ -342,8 +349,7 @@ function job_manager_get_resized_image( $logo, $size ) {
342
  $image = wp_get_image_editor( $logo_path );
343
 
344
  if ( ! is_wp_error( $image ) ) {
345
- $image->resize( $_wp_additional_image_sizes[ $size ]['width'], $_wp_additional_image_sizes[ $size ]['height'], $_wp_additional_image_sizes[ $size ]['crop'] );
346
-
347
  $image->save( $resized_logo_path );
348
 
349
  $logo = dirname( $logo ) . '/' . basename( $resized_logo_path );
@@ -356,6 +362,32 @@ function job_manager_get_resized_image( $logo, $size ) {
356
  return $logo;
357
  }
358
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
  /**
360
  * Display or retrieve the current company name with optional content.
361
  *
@@ -551,3 +583,19 @@ function get_job_listing_class( $class = '', $post_id = null ) {
551
 
552
  return get_post_class( $classes, $post->ID );
553
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  $method->type = 'email';
202
  $method->raw_email = $apply;
203
  $method->email = antispambot( $apply );
204
+ $method->subject = apply_filters( 'job_manager_application_email_subject', sprintf( __( 'Application via "%s" listing on %s', 'wp-job-manager' ), $post->post_title, home_url() ), $post );
205
  } else {
206
  if ( strpos( $apply, 'http' ) !== 0 )
207
  $apply = 'http://' . $apply;
327
  function job_manager_get_resized_image( $logo, $size ) {
328
  global $_wp_additional_image_sizes;
329
 
330
+ if ( $size !== 'full' && ( isset( $_wp_additional_image_sizes[ $size ] ) || in_array( $size, array( 'thumbnail', 'medium', 'large' ) ) ) ) {
331
 
332
+ if ( in_array( $size, array( 'thumbnail', 'medium', 'large' ) ) ) {
333
+ $img_width = get_option( $size . '_size_w' );
334
+ $img_height = get_option( $size . '_size_h' );
335
+ $img_crop = get_option( $size . '_size_crop' );
336
+ } else {
337
+ $img_width = $_wp_additional_image_sizes[ $size ]['width'];
338
+ $img_height = $_wp_additional_image_sizes[ $size ]['height'];
339
+ $img_crop = $_wp_additional_image_sizes[ $size ]['crop'];
340
+ }
341
 
342
  $upload_dir = wp_upload_dir();
343
  $logo_path = str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $logo );
349
  $image = wp_get_image_editor( $logo_path );
350
 
351
  if ( ! is_wp_error( $image ) ) {
352
+ $image->resize( $img_width, $img_height, $img_crop );
 
353
  $image->save( $resized_logo_path );
354
 
355
  $logo = dirname( $logo ) . '/' . basename( $resized_logo_path );
362
  return $logo;
363
  }
364
 
365
+ /**
366
+ * Output the company video
367
+ */
368
+ function the_company_video( $post = null ) {
369
+ $video = get_the_company_video( $post );
370
+ $video_embed = wp_oembed_get( $video );
371
+
372
+ if ( $video_embed ) {
373
+ echo '<div class="company_video">' . $video_embed . '</div>';
374
+ }
375
+ }
376
+
377
+ /**
378
+ * Get the company video URL
379
+ *
380
+ * @param mixed $post (default: null)
381
+ * @return string
382
+ */
383
+ function get_the_company_video( $post = null ) {
384
+ $post = get_post( $post );
385
+ if ( $post->post_type !== 'job_listing' ) {
386
+ return;
387
+ }
388
+ return apply_filters( 'the_company_video', $post->_company_video, $post );
389
+ }
390
+
391
  /**
392
  * Display or retrieve the current company name with optional content.
393
  *
583
 
584
  return get_post_class( $classes, $post->ID );
585
  }
586
+
587
+ /**
588
+ * Displays job meta data on the single job page
589
+ */
590
+ function job_listing_meta_display() {
591
+ get_job_manager_template( 'content-single-job_listing-meta.php', array() );
592
+ }
593
+ add_action( 'single_job_listing_start', 'job_listing_meta_display', 20 );
594
+
595
+ /**
596
+ * Displays job company data on the single job page
597
+ */
598
+ function job_listing_company_display() {
599
+ get_job_manager_template( 'content-single-job_listing-company.php', array() );
600
+ }
601
+ add_action( 'single_job_listing_start', 'job_listing_company_display', 30 );
wp-job-manager.php CHANGED
@@ -3,11 +3,11 @@
3
  Plugin Name: WP Job Manager
4
  Plugin URI: https://wpjobmanager.com/
5
  Description: Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
6
- Version: 1.13.0
7
  Author: Mike Jolley
8
  Author URI: http://mikejolley.com
9
  Requires at least: 3.8
10
- Tested up to: 3.9
11
  Text Domain: wp-job-manager
12
  Domain Path: /languages
13
 
@@ -31,13 +31,11 @@ class WP_Job_Manager {
31
  */
32
  public function __construct() {
33
  // Define constants
34
- define( 'JOB_MANAGER_VERSION', '1.13.0' );
35
  define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
36
  define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
37
 
38
  // Includes
39
- include( 'wp-job-manager-functions.php' );
40
- include( 'wp-job-manager-template.php' );
41
  include( 'includes/class-wp-job-manager-post-types.php' );
42
  include( 'includes/class-wp-job-manager-ajax.php' );
43
  include( 'includes/class-wp-job-manager-shortcodes.php' );
@@ -60,6 +58,7 @@ class WP_Job_Manager {
60
 
61
  // Actions
62
  add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) );
 
63
  add_action( 'switch_theme', array( $this->post_types, 'register_post_types' ), 10 );
64
  add_action( 'switch_theme', 'flush_rewrite_rules', 15 );
65
  add_action( 'widgets_init', create_function( "", "include_once( 'includes/class-wp-job-manager-widgets.php' );" ) );
@@ -82,22 +81,33 @@ class WP_Job_Manager {
82
  load_plugin_textdomain( 'wp-job-manager', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
83
  }
84
 
 
 
 
 
 
 
 
 
85
  /**
86
  * Register and enqueue scripts and css
87
  */
88
  public function frontend_scripts() {
89
- wp_register_script( 'wp-job-manager-ajax-filters', JOB_MANAGER_PLUGIN_URL . '/assets/js/ajax-filters.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
90
  wp_register_script( 'wp-job-manager-job-dashboard', JOB_MANAGER_PLUGIN_URL . '/assets/js/job-dashboard.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
91
  wp_register_script( 'wp-job-manager-job-application', JOB_MANAGER_PLUGIN_URL . '/assets/js/job-application.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
92
  wp_register_script( 'wp-job-manager-job-submission', JOB_MANAGER_PLUGIN_URL . '/assets/js/job-submission.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
 
 
93
 
94
  wp_localize_script( 'wp-job-manager-ajax-filters', 'job_manager_ajax_filters', array(
95
  'ajax_url' => admin_url('admin-ajax.php')
96
  ) );
97
  wp_localize_script( 'wp-job-manager-job-dashboard', 'job_manager_job_dashboard', array(
98
- 'i18n_confirm_delete' => __( 'Are you sure you want to delete this job?', 'wp-job-manager' )
99
  ) );
100
 
 
101
  wp_enqueue_style( 'wp-job-manager-frontend', JOB_MANAGER_PLUGIN_URL . '/assets/css/frontend.css' );
102
  }
103
  }
3
  Plugin Name: WP Job Manager
4
  Plugin URI: https://wpjobmanager.com/
5
  Description: Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
6
+ Version: 1.14.0
7
  Author: Mike Jolley
8
  Author URI: http://mikejolley.com
9
  Requires at least: 3.8
10
+ Tested up to: 4.0
11
  Text Domain: wp-job-manager
12
  Domain Path: /languages
13
 
31
  */
32
  public function __construct() {
33
  // Define constants
34
+ define( 'JOB_MANAGER_VERSION', '1.14.0' );
35
  define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
36
  define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
37
 
38
  // Includes
 
 
39
  include( 'includes/class-wp-job-manager-post-types.php' );
40
  include( 'includes/class-wp-job-manager-ajax.php' );
41
  include( 'includes/class-wp-job-manager-shortcodes.php' );
58
 
59
  // Actions
60
  add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) );
61
+ add_action( 'after_setup_theme', array( $this, 'include_template_functions' ), 11 );
62
  add_action( 'switch_theme', array( $this->post_types, 'register_post_types' ), 10 );
63
  add_action( 'switch_theme', 'flush_rewrite_rules', 15 );
64
  add_action( 'widgets_init', create_function( "", "include_once( 'includes/class-wp-job-manager-widgets.php' );" ) );
81
  load_plugin_textdomain( 'wp-job-manager', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
82
  }
83
 
84
+ /**
85
+ * Load functions
86
+ */
87
+ public function include_template_functions() {
88
+ include( 'wp-job-manager-functions.php' );
89
+ include( 'wp-job-manager-template.php' );
90
+ }
91
+
92
  /**
93
  * Register and enqueue scripts and css
94
  */
95
  public function frontend_scripts() {
96
+ wp_register_script( 'wp-job-manager-ajax-filters', JOB_MANAGER_PLUGIN_URL . '/assets/js/ajax-filters.min.js', array( 'jquery', 'chosen' ), JOB_MANAGER_VERSION, true );
97
  wp_register_script( 'wp-job-manager-job-dashboard', JOB_MANAGER_PLUGIN_URL . '/assets/js/job-dashboard.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
98
  wp_register_script( 'wp-job-manager-job-application', JOB_MANAGER_PLUGIN_URL . '/assets/js/job-application.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
99
  wp_register_script( 'wp-job-manager-job-submission', JOB_MANAGER_PLUGIN_URL . '/assets/js/job-submission.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
100
+ wp_register_script( 'chosen', JOB_MANAGER_PLUGIN_URL . '/assets/js/jquery-chosen/chosen.jquery.min.js', array( 'jquery' ), '1.1.0', true );
101
+ wp_register_script( 'wp-job-manager-term-multiselect', JOB_MANAGER_PLUGIN_URL . '/assets/js/term-multiselect.min.js', array( 'jquery', 'chosen' ), JOB_MANAGER_VERSION, true );
102
 
103
  wp_localize_script( 'wp-job-manager-ajax-filters', 'job_manager_ajax_filters', array(
104
  'ajax_url' => admin_url('admin-ajax.php')
105
  ) );
106
  wp_localize_script( 'wp-job-manager-job-dashboard', 'job_manager_job_dashboard', array(
107
+ 'i18n_confirm_delete' => __( 'Are you sure you want to delete this listing?', 'wp-job-manager' )
108
  ) );
109
 
110
+ wp_enqueue_style( 'chosen', JOB_MANAGER_PLUGIN_URL . '/assets/css/chosen.css' );
111
  wp_enqueue_style( 'wp-job-manager-frontend', JOB_MANAGER_PLUGIN_URL . '/assets/css/frontend.css' );
112
  }
113
  }