Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 8140 | Rev 8156 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3766 stevensc 1
<?php
1 www 2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser    = $this->currentUserHelper();
4
$roleName       = $currentUser->getUserTypeId();
5
 
6
$routeAdd           = $this->url('jobs/add');
7
 
8
$routeDatatable   = $this->url('jobs');
9
 
10
$allowAdd = $acl->isAllowed($roleName, 'jobs/add') ? 1 : 0;
11
$allowDelete = $acl->isAllowed($roleName, 'jobs/delete') ? 1 : 0;
12
$allowEdit = $acl->isAllowed($roleName, 'jobs/edit') ? 1 : 0;
13
$allowUsersWhoApplied = $acl->isAllowed($roleName, 'jobs/users-who-applied') ? 1 : 0;
14
 
15
$this->headLink()->appendStylesheet($this->basePath('plugins/nprogress/nprogress.css'));
16
$this->inlineScript()->appendFile($this->basePath('plugins/nprogress/nprogress.js'));
17
 
18
$this->inlineScript()->appendFile($this->basePath('plugins/ckeditor/ckeditor.js'));
19
 
20
 
21
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/css/fileinput.min.css'));
22
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fas/theme.css'));
23
 
24
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/piexif.js'));
25
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/sortable.js'));
26
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/fileinput.js'));
27
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/locales/es.js'));
28
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/fas/theme.js'));
29
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fas/theme.js'));
30
 
31
 
32
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
33
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
34
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
35
 
36
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css'));
37
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-responsive/css/responsive.bootstrap4.min.css'));
38
 
39
$this->inlineScript()->appendFile($this->basePath('plugins/datatables/jquery.dataTables.min.js'));
40
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js'));
41
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/dataTables.responsive.min.js'));
42
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/responsive.bootstrap4.min.js'));
43
 
44
 
45
 
46
$this->headLink()->appendStylesheet($this->basePath('plugins/select2/css/select2.min.css'));
47
$this->headLink()->appendStylesheet($this->basePath('plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css'));
48
$this->inlineScript()->appendFile($this->basePath('plugins/select2/js/select2.min.js'));
49
 
50
 
51
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-input-number/input-number-format.jquery.min.js'));
52
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-confirmation/dist/bootstrap-confirmation.js'));
53
 
54
 
55
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
56
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
57
 
58
$this->inlineScript()->appendFile($this->basePath('plugins/moment/moment-with-locales.min.js'));
59
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css'));
60
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js'));
61
 
62
 
63
$this->headStyle()->captureStart();
64
echo <<<CSS
65
 
66
 
67
#gridTableUsersWhoApplied {
68
    display: flex;
69
    flex-flow: column;
70
    width: 100%;
71
}
72
 
73
#gridTableUsersWhoApplied thead {
74
    flex: 0 0 auto;
75
}
76
 
77
#gridTableUsersWhoApplied tbody {
78
    flex: 1 1 auto;
79
    display: block;
80
    overflow-y: auto;
81
    overflow-x: hidden;
82
}
83
 
84
#gridTableUsersWhoApplied tr {
85
    width: 100%;
86
    display: table;
87
    table-layout: fixed;
88
}
89
CSS;
90
$this->headStyle()->captureEnd();
91
 
92
$this->inlineScript()->captureStart();
93
echo <<<JS
94
jQuery( document ).ready(function( $ ) {
95
       var route_status = '';
96
       var route_title =  '';
97
       var route_extended =  '';
98
       var route_location =  '';
99
       var route_job_category =  '';
100
       var route_employment_type =  '';
101
       var route_salary =  '';
102
       var route_experience = '';
103
       var route_languages =  '';
104
       var route_degrees = '';
105
       var route_skills =  '';
106
       var route_last_date_of_application =  '';
7783 stevensc 107
 
1 www 108
 
7783 stevensc 109
 
1 www 110
        var allowDelete = $allowDelete;
111
        var allowEdit = $allowEdit;
112
        var allowUsersWhoApplied = $allowUsersWhoApplied;
113
 
7783 stevensc 114
        var gridTable = $('#gridTable').dataTable( {
115
            'processing': true,
116
            'serverSide': true,
117
            'searching': true,
118
            'order': [[ 0, 'desc' ]],
119
            'ordering':  true,
120
            'ordenable' : true,
121
            'responsive': true,
122
            'select' : false,
123
        	'paging': true,
124
            'pagingType': 'simple_numbers',
1 www 125
 
7783 stevensc 126
    		'ajax': {
127
    			'url' : '$routeDatatable',
128
    			'type' : 'get',
129
                'beforeSend': function (request) {
130
                  NProgress.start();
131
                },
132
                'dataFilter': function(response) {
133
                    var response = jQuery.parseJSON( response );
134
 
135
                    var json                = {};
136
                    json.recordsTotal       = 0;
137
                    json.recordsFiltered    = 0;
138
                    json.data               = [];
139
 
140
                    if(response.success) {
141
                        json.recordsTotal       = response.data.total;
142
                        json.recordsFiltered    = response.data.total;
143
                        json.data               = response.data.items;
144
                    } else {
145
                        $.fn.showError(response.data)
146
                    }
147
 
148
                    return JSON.stringify( json );
149
                }
150
    		},
151
            'language' : {
152
                'sProcessing':     'LABEL_DATATABLE_SPROCESSING',
153
                'sLengthMenu':     'LABEL_DATATABLE_SLENGTHMENU',
154
                'sZeroRecords':    'LABEL_DATATABLE_SZERORECORDS',
155
                'sEmptyTable':     'LABEL_DATATABLE_SEMPTYTABLE',
156
                'sInfo':           'LABEL_DATATABLE_SINFO',
157
                'sInfoEmpty':      'LABEL_DATATABLE_SINFOEMPTY',
158
                'sInfoFiltered':   'LABEL_DATATABLE_SINFOFILTERED',
159
                'sInfoPostFix':    '',
160
                'sSearch':         'LABEL_DATATABLE_SSEARCH',
161
                'sUrl':            '',
162
                'sInfoThousands':  ',',
163
                'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
164
                'oPaginate': {
165
                    'sFirst':    'LABEL_DATATABLE_SFIRST',
166
                    'sLast':     'LABEL_DATATABLE_SLAST',
167
                    'sNext':     'LABEL_DATATABLE_SNEXT',
168
                    'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
169
                },
170
                'oAria': {
171
                    'sSortAscending':  ': LABEL_DATATABLE_SSORTASCENDING',
172
                    'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
173
                },
174
            },
175
            'drawCallback': function( settings ) {
176
                NProgress.done();
177
                $('button.btn-delete').confirmation({
178
                    rootSelector: 'button.btn-delete',
179
                    title : 'LABEL_ARE_YOU_SURE',
180
                    singleton : true,
181
                    btnOkLabel: 'LABEL_YES',
182
                    btnCancelLabel: 'LABEL_NO',
183
                    onConfirm: function(value) {
184
                        action = $(this).data('href');
185
                        NProgress.start();
186
                        $.ajax({
187
                            'dataType'  : 'json',
188
                            'accept'    : 'application/json',
189
                            'method'    : 'post',
190
                            'url'       :  action,
191
                        }).done(function(response) {
192
                            if(response['success']) {
193
                                $.fn.showSuccess(response['data']);
194
                                gridTable.api().ajax.reload(null, false);
195
                            } else {
196
                                $.fn.showError(response['data']);
197
                            }
198
                        }).fail(function( jqXHR, textStatus, errorThrown) {
199
                            $.fn.showError(textStatus);
200
                        }).always(function() {
201
                            NProgress.done();
202
                        });
203
                    },
204
                });
205
            },
206
            'aoColumns': [
207
                { 'mDataProp': 'last_date_of_application' },
208
                { 'mDataProp': 'title' },
209
                { 'mDataProp': 'details' },
210
                { 'mDataProp': 'actions' },
211
    	    ],
212
            'columnDefs': [
213
 
214
                {
215
                    'targets': -2,
216
                    'orderable': false,
217
                    'render' : function ( data, type, row ) {
218
                        var s = 'LABEL_STATUS : ' + row['details']['status'] + '<br>';
219
                        s = s + 'LABEL_EMPLOYMENT_TYPE : <br>' + row['details']['employment_type'] + '<br>';
220
                        s = s +  'LABEL_QTY_USERS_WHO_APPLIED : ' + row['details']['users_who_applied'] + '<br>';
221
 
222
                        return s;
223
                    }
224
                },
225
 
226
                {
227
                    'targets': -1,
228
                    'orderable': false,
229
                    'render' : function ( data, type, row ) {
230
                        s = '';
231
 
232
                        if(allowEdit && data['link_edit']  ) {
233
                            s = s + '<button class="btn btn-info btn-sm btn-edit" style="margin-top: 5px" data-href="' + data['link_edit']+ '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pencil"></i> LABEL_EDIT </button><br>';
234
                        }
235
                        if(allowDelete && data['link_delete']  ) {
236
                            s = s + '<button class="btn btn-danger btn-sm btn-delete" style="margin-top: 5px" data-href="' + data['link_delete']+ '" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-trash"></i> LABEL_DELETE </button><br>';
237
                        }
238
                        if(allowUsersWhoApplied && data['link_users_who_applied']  ) {
239
                            s = s + '<button class="btn btn-primary btn-sm btn-users-who-applied" style="margin-top: 5px" data-href="' + data['link_users_who_applied']+ '" data-toggle="tooltip" title="LABEL_USERS_WHO_APPLIED"><i class="fa fa-users"></i> LABEL_USERS_WHO_APPLIED </button><br>';
240
                        }
241
 
242
                        return s;
243
                    }
244
                }
245
              ],
246
        });
247
 
1 www 248
    $.validator.addMethod('greaterThanFloat', function (value, element, param) {
249
        var otherElement = $(param);
250
        return parseFloat(value) > parseFloat(otherElement.val());
251
    }, 'ERROR_INVALID_MINIMUM');
252
 
253
 
254
 
255
    $.validator.addMethod('greaterThan', function (value, element, param) {
256
        var otherElement = $(param);
257
        return parseInt(value, 10) > parseInt(otherElement.val(), 10);
258
    }, 'ERROR_INVALID_MINIMUM');
259
 
260
 
261
    $.validator.addMethod('checkLocation', function (value, element, param) {
262
        var otherElement = $(param);
263
 
264
        return $.trim(otherElement.val()).length > 0;
265
    }, 'ERROR_PLACED_AUTOCOMPLETE_DOES_NOT_CONTAIN_GEOMETRY');
266
 
267
 
268
 
269
    $.validator.setDefaults({
270
        debug: true,
271
        highlight: function(element) {
272
            $(element).addClass('is-invalid');
273
        },
274
        unhighlight: function(element) {
275
            $(element).removeClass('is-invalid');
276
        },
277
        errorElement: 'span',
278
        errorClass: 'error invalid-feedback',
279
        errorPlacement: function(error, element) {
280
            if(element.parent('.form-group').length) {
281
                error.insertAfter(element);
282
            } else if(element.parent('.toggle').length) {
283
                error.insertAfter(element.parent().parent());
284
            } else {
285
                error.insertAfter(element.parent());
286
            }
287
        }
288
    });
289
 
290
 
291
 
292
    $.fn.showFormErrorValidator = function(fieldname, errors) {
293
        var field = $(fieldname);
294
        if(field) {
295
            $(field).addClass('form-group-has-error');
296
 
297
            var error = $('<div id="' + fieldname +'-error" class="form-group-invalid-feedback">' + errors + '</div>');
298
            if(field.parent('.form-group').length) {
299
                error.insertAfter(field.parent());
300
            } else {
301
                error.insertAfter(field);
302
            }
303
        }
304
    };
305
 
306
    var validatorAdd = $('#form-add').validate({
307
        debug: true,
308
        onclick: false,
309
        onkeyup: false,
310
        onfocusout: false,
311
        ignore: [],
312
        rules: {
313
            'name': {
314
                required: true,
315
                maxlength: 128,
316
            },
317
            'title': {
318
                required: true,
319
            },
320
            'last_date_of_application': {
321
                required: true,
322
            },
323
            'job_category_id' :  {
324
                required: true,
325
            },
326
            'employment_type' : {
327
                required: true,
328
            },
329
            'add_location_search': {
330
                required: true,
331
                checkLocation: '#form-add #latitude'
332
            }
333
        },
334
        submitHandler: function(form)
335
        {
336
            NProgress.start();
337
            $.ajax({
338
                'dataType'  : 'json',
339
                'accept'    : 'application/json',
340
                'method'    : 'post',
341
                'url'       :  '$routeAdd',
342
                'data'      :  $('#form-add').serialize(),
343
            }).done(function(response) {
344
                if(response['success']) {
345
                    $('#add-job-box').modal('hide');
346
                    gridTable.api().ajax.reload(null, false);
347
 
348
                    $('#overview-title').html(response['data']['title']);
349
                    $('#overview-job-category').html(response['data']['job_category']);
350
					$('#overview-last-date-of-application').html(response['data']['last_date_of_application']);
351
					$('#overview-employment-type').html(response['data']['employment_type']);
352
                    $('#overview-location').html(response['data']['location']);
353
 
354
                    $('#overview-status').html(response['data']['status']);
355
                    $('#overview-description').html(response['data']['description']);
356
 
357
                    $('#overview-salary').html(response['data']['salary']);
358
                    $('#overview-experience').html('')
359
 
360
 
361
 
362
 
363
 
364
                    $('list-skills').empty();
365
                    $('list-languages').empty();
366
                    $('list-degrees').empty();
367
 
368
 
369
                    route_status = response['data']['route_status'];
370
                    route_title =  response['data']['route_title'];
371
                    route_extended =  response['data']['route_extended'];
372
                    route_location =  response['data']['route_location'];
373
                    route_job_category =  response['data']['route_job_category'];
374
                    route_employment_type =  response['data']['route_employment_type'];
375
                    route_salary =  response['data']['route_salary'];
376
                    route_experience = response['data']['route_experience'];
377
                    route_languages =  response['data']['route_languages'];
378
                    route_degrees = response['data']['route_degrees'];
379
                    route_skills =  response['data']['route_skills'];
380
                    route_last_date_of_application =  response['data']['route_last_date_of_application'];
381
 
382
                    $('#divListing').hide();
383
                    $('#divEdit').show();
384
 
385
                } else {
386
                    validatorAdd.resetForm();
387
                    if(jQuery.type(response['data']) == 'string') {
388
                        $.fn.showError(response['data']);
389
                    } else  {
390
                        $.each(response['data'], function( fieldname, errors ) {
391
                            $.fn.showFormErrorValidator('#form-add #' + fieldname, errors);
392
                        });
393
                    }
394
                }
395
            }).fail(function( jqXHR, textStatus, errorThrown) {
396
                $.fn.showError(textStatus);
397
            }).always(function() {
398
                NProgress.done();
399
            });
400
            return false;
401
        },
402
        invalidHandler: function(form, validator) {
403
 
404
        }
405
    });
406
 
7783 stevensc 407
    $('body').on('click', 'button.btn-edit', function(e) {
408
        e.preventDefault();
409
 
410
        var href = $(this).data('href');
411
 
412
        NProgress.start();
413
            $.ajax({
414
                'dataType'  : 'json',
415
                'accept'    : 'application/json',
416
                'method'    : 'get',
417
                'url'       :  href,
418
            }).done(function(response) {
419
                if(response['success']) {
420
                    $('#add-job-box').modal('hide');
421
                    gridTable.api().ajax.reload(null, false);
422
 
423
                    $('#overview-title').html(response['data']['title']);
424
                    $('#overview-job-category').html(response['data']['job_category']);
425
					$('#overview-last-date-of-application').html(response['data']['last_date_of_application']);
426
					$('#overview-employment-type').html(response['data']['employment_type']);
427
                    $('#overview-location').html(response['data']['location']);
428
 
429
                    $('#overview-status').html(response['data']['status']);
430
                    $('#overview-description').html(response['data']['description']);
431
 
432
 
433
                    if(response['data']['salary']) {
434
					   $('#overview-salary').html(response['data']['salary']);
435
                    } else {
436
                       $('#overview-salary').html('')
437
                    }
438
 
439
                    if(response['data']['experience']) {
440
					   $('#overview-experience').html(response['data']['experience'] + ' LABEL_YEARS');
441
                    } else {
442
                       $('#overview-experience').html('')
443
                    }
444
 
445
 
446
 
447
                    $('#list-skills').empty();
448
                    $.each(response['data']['skills'], function(i, name) {
449
                        $('#list-skills').append('<li>' + name + '</li>');
450
                    });
451
 
452
                    $('#list-languages').empty();
453
                    $.each(response['data']['languages'], function(i, name) {
454
                        $('#list-languages').append('<li>' + name + '</li>');
455
                    });
456
 
457
                    $('#list-degrees').empty();
458
                    $.each(response['data']['degrees'], function(i, name) {
459
                        $('#list-degrees').append('<li>' + name + '</li>');
460
                    });
461
 
462
 
463
                    route_status =  response['data']['route_status'];
464
                    route_title =   response['data']['route_title'];
465
                    route_extended =   response['data']['route_extended'];
466
                    route_location =   response['data']['route_location'];
467
                    route_job_category =   response['data']['route_job_category'];
468
                    route_employment_type =   response['data']['route_employment_type'];
469
                    route_salary =   response['data']['route_salary'];
470
                    route_experience =  response['data']['route_experience'];
471
                    route_languages =   response['data']['route_languages'];
472
                    route_degrees =  response['data']['route_degrees'];
473
                    route_skills =   response['data']['route_skills'];
474
                    route_last_date_of_application =   response['data']['route_last_date_of_application'];
475
 
476
 
477
                    $('#divListing').hide();
478
                    $('#divEdit').show();
479
 
480
                } else {
481
                    validatorAdd.resetForm();
482
                    if(jQuery.type(response['data']) == 'string') {
483
                        $.fn.showError(response['data']);
484
                    } else  {
485
                        $.each(response['data'], function( fieldname, errors ) {
486
                            $.fn.showFormErrorValidator('#form-add #' + fieldname, errors);
487
                        });
488
                    }
489
                }
490
            }).fail(function( jqXHR, textStatus, errorThrown) {
491
                $.fn.showError(textStatus);
492
            }).always(function() {
493
                NProgress.done();
494
            });
495
            return false;
496
    });
497
 
498
 
499
 
1 www 500
    $(".close-box, .btn-add-job-cancel").on("click", function(e){
501
        e.preventDefault();
502
        $('#add-job-box').modal('hide');
503
        return false;
504
    });
505
 
506
    $('body').on('click', 'button.btn-add', function(e) {
507
        e.preventDefault();
508
 
509
 
510
        $('#form-add #title').val('');
511
        $('#form-add #last_date_of_application').val('');
512
        $('#form-add #employment_type').val('').trigger('change');
513
        $('#form-add #job_category_id').val('').trigger('change');
514
        $('#form-add #formatted_address').val('');
515
        $('#form-add #address1').val('');
516
        $('#form-add #address2').val('');
517
        $('#form-add #country').val('');
518
        $('#form-add #state').val('');
519
        $('#form-add #city1').val('');
520
        $('#form-add #city2').val('');
521
        $('#form-add #postal_code').val('');
522
        $('#form-add #latitude').val('');
523
        $('#form-add #longitude').val('');
524
        $('#form-add #add_location_search').val('');
525
        validatorAdd.resetForm();
526
 
527
        $('#add-job-box').modal('show');
528
        return false;
529
    });
530
 
531
 
532
    $('body').on('click', 'button.btn-view-profile', function(e) {
533
        e.preventDefault();
534
 
535
        var href = $(this).data('href');
536
        window.open(href, '_blank');
537
 
538
    });
539
 
540
    $('body').on('click', 'button.btn-users-who-applied', function(e) {
541
        e.preventDefault();
542
 
543
        var href = $(this).data('href');
544
        NProgress.start();
545
        $.ajax({
546
            'dataType'  : 'json',
547
            'accept'    : 'application/json',
548
            'method'    : 'get',
549
            'url'       :  href
550
        }).done(function(response) {
551
            if(response['success']) {
552
                $('#gridTableUsersWhoApplied tbody').empty();
553
                $.each(response['data'], function(i, record) {
554
                    var s = '<tr>';
555
                    s = s + '<td>' + record['first_name'] + '</td>';
556
                    s = s + '<td>' + record['last_name'] + '</td>';
557
                    s = s + '<td>' + record['email'] + '</td>';
558
                    s = s + '<td><button class="btn btn-default btn-view-profile" data-href="' + record['link_view']+ '"><i class="fa fa-external-link"></i></button></td>';
559
                    s = s + '<tr>';
560
 
561
                    $('#gridTableUsersWhoApplied tbody').append(s);
562
 
563
                });
564
 
565
 
566
                $('#modalUsersWhoApplied').modal('show');
567
            } else {
568
                $.fn.showError(response['data']);
569
 
570
            }
571
        }).fail(function( jqXHR, textStatus, errorThrown) {
572
            $.fn.showError(textStatus);
573
        }).always(function() {
574
            NProgress.done();
575
        });
576
        return false;
577
 
578
    });
579
 
580
 
581
    var validatorSalary = $('#form-salary').validate({
582
        debug: true,
583
        onclick: false,
584
        onkeyup: false,
585
        ignore: [],
586
        rules: {
587
            'salary_visible': {
588
                required: false,
589
            },
590
            'salary_min': {
591
                required:  '#form-salary #salary_visible:checked',
592
                number: true,
593
                maxlength: 10,
594
            },
595
            'salary currency': {
596
                required:  '#form-salary #salary_visible:checked',
597
                maxlength: 5,
598
            },
599
            'salary_max': {
600
                required:  '#form-salary #salary_visible:checked',
601
                number: true,
602
                maxlength: 10,
603
                greaterThanFloat : '#form-salary #salary_min',
604
            },
605
        },
606
        submitHandler: function(form)
607
        {
608
            NProgress.start();
609
            $.ajax({
610
                'dataType'  : 'json',
611
                'accept'    : 'application/json',
612
                'method'    : 'post',
613
                'url'       :  route_salary,
614
                'data'      :  $('#form-salary').serialize()
615
            }).done(function(response) {
616
                if(response['success']) {
617
					$('#overview-salary').html(response['data']);
618
                    $("#salary-box").modal('hide');
619
                } else {
620
                    validatorSalary.resetForm();
621
                    if(jQuery.type(response['data']) == 'string') {
622
                        $.fn.showError(response['data']);
623
                    } else  {
624
                        $.each(response['data'], function( fieldname, errors ) {
625
                            $.fn.showFormErrorValidator('#form-salary #' + fieldname, errors);
626
                        });
627
                    }
628
                }
629
            }).fail(function( jqXHR, textStatus, errorThrown) {
630
                $.fn.showError(textStatus);
631
            }).always(function() {
632
                NProgress.done();
633
            });
634
            return false;
635
        },
636
        invalidHandler: function(form, validator) {
637
 
638
        }
639
    });
640
 
641
    $('.btn-salary-edit').on("click", function(e){
642
        e.preventDefault();
643
 
644
        NProgress.start();
645
        $.ajax({
646
            'dataType'  : 'json',
647
            'accept'    : 'application/json',
648
            'method'    : 'get',
649
            'url'       : route_salary,
650
        }).done(function(response) {
651
           if(response['success']) {
652
                if(response['data']['salary_visible'] == 'y') {
653
                    $('#form-salary #salary_visible').bootstrapToggle('on')
654
                    $('#form-salary #salary_min').val(response['data']['salary_min']);
655
                    $('#form-salary #salary_min').prop('readonly', false);
656
                    $('#form-salary #salary_max').val(response['data']['salary_max']);
657
                    $('#form-salary #salary_max').prop('readonly', false);
658
                    $('#form-salary #salary_currency').val(response['data']['salary_currency']);
659
                    $('#form-salary #salary_currency').prop('disable',false);
660
                } else {
661
                    $('#form-salary #salary_visible').bootstrapToggle('off')
662
                    $('#form-salary #salary_min').val('1');
663
                    $('#form-salary #salary_min').prop('readonly', true);
664
                    $('#form-salary #salary_max').val('99');
665
                    $('#form-salary #salary_max').prop('readonly', true);
666
                    $('#form-salary #salary_currency').val('USD');
667
                    $('#form-salary #salary_currency').prop('disable',true);
668
                }
669
                validatorSalary.resetForm();
670
                $("#salary-box").modal('show');
671
            } else {
672
                $.fn.showError(response['data']);
673
            }
674
        }).fail(function( jqXHR, textStatus, errorThrown) {
675
            $.fn.showError(textStatus);
676
        }).always(function() {
677
            NProgress.done();
678
        });
679
        return false;
680
 
681
    });
682
 
683
    $('.btn-salary-close').on("click", function(e){
684
        e.preventDefault();
685
 
686
        $("#salary-box").modal('hide');
687
        return false;
688
    });
689
 
690
    var validatorExperience = $('#form-experience').validate({
691
        debug: true,
692
        onclick: false,
693
        onkeyup: false,
694
        ignore: [],
695
        rules: {
696
            'experience_visible': {
697
                required: false,
698
            },
699
            'experience_min': {
700
                required:  '#form-experience #experience_visible:checked',
701
                digits: true,
702
                maxlength: 2,
703
            },
704
            'experience_max': {
705
                required:  '#form-experience #experience_visible:checked',
706
                digits: true,
707
                maxlength: 4,
708
                greaterThan : '#form-experience #experience_min',
709
            },
710
        },
711
        submitHandler: function(form)
712
        {
713
            NProgress.start();
714
            $.ajax({
715
                'dataType'  : 'json',
716
                'accept'    : 'application/json',
717
                'method'    : 'post',
718
                'url'       :  route_experience,
719
                'data'      :  $('#form-experience').serialize()
720
            }).done(function(response) {
721
                if(response['success']) {
722
					$('#overview-experience').html(response['data']);
723
                    $("#experience-box").modal('hide');
724
                } else {
725
                    validatorExperience.resetForm();
726
                    if(jQuery.type(response['data']) == 'string') {
727
                        $.fn.showError(response['data']);
728
                    } else  {
729
                        $.each(response['data'], function( fieldname, errors ) {
730
                            $.fn.showFormErrorValidator('#form-experience #' + fieldname, errors);
731
                        });
732
                    }
733
                }
734
            }).fail(function( jqXHR, textStatus, errorThrown) {
735
                $.fn.showError(textStatus);
736
            }).always(function() {
737
                NProgress.done();
738
            });
739
            return false;
740
        },
741
        invalidHandler: function(form, validator) {
742
 
743
        }
744
    });
745
 
746
    $('.btn-experience-edit').on("click", function(e){
747
        e.preventDefault();
748
 
749
        NProgress.start();
750
        $.ajax({
751
            'dataType'  : 'json',
752
            'accept'    : 'application/json',
753
            'method'    : 'get',
754
            'url'       : route_experience,
755
        }).done(function(response) {
756
           if(response['success']) {
757
                if(response['data']['experience_visible'] == 'y') {
758
                    $('#form-experience #experience_visible').bootstrapToggle('on')
759
                    $('#form-experience #experience_min').val(response['data']['experience_min']);
760
                    $('#form-experience #experience_min').prop('readonly', false);
761
                    $('#form-experience #experience_max').val(response['data']['experience_max']);
762
                    $('#form-experience #experience_max').prop('readonly', false);
763
                } else {
764
                    $('#form-experience #experience_visible').bootstrapToggle('off')
765
                    $('#form-experience #experience_min').val('1');
766
                    $('#form-experience #experience_min').prop('readonly', true);
767
                    $('#form-experience #experience_max').val('5');
768
                    $('#form-experience #experience_max').prop('readonly', true);
769
                }
770
 
771
                validatorExperience.resetForm();
772
                $("#experience-box").modal('show');
773
            } else {
774
                $.fn.showError(response['data']);
775
            }
776
        }).fail(function( jqXHR, textStatus, errorThrown) {
777
            $.fn.showError(textStatus);
778
        }).always(function() {
779
            NProgress.done();
780
        });
781
        return false;
782
 
783
    });
784
 
785
    $('.btn-experience-close').on("click", function(e){
786
        e.preventDefault();
787
 
788
        $("#experience-box").modal('hide');
789
        return false;
790
    });
791
 
792
 
793
    $('.btn-skills-edit').on("click", function(e){
794
        e.preventDefault();
795
 
796
        NProgress.start();
797
        $.ajax({
798
            'dataType'  : 'json',
799
            'accept'    : 'application/json',
800
            'method'    : 'get',
801
            'url'       : route_skills,
802
        }).done(function(response) {
803
           if(response['success']) {
804
                $('#form-skill #skills').val(response['data']).trigger('change');
805
                validatorSkills.resetForm();
806
 
807
                $('#skills-box').modal('show');
808
            } else {
809
                $.fn.showError(response['data']);
810
            }
811
        }).fail(function( jqXHR, textStatus, errorThrown) {
812
            $.fn.showError(textStatus);
813
        }).always(function() {
814
            NProgress.done();
815
        });
816
        return false;
817
 
818
    });
819
 
820
    $('.btn-skills-close').on("click", function(e){
821
        e.preventDefault();
822
 
823
        $('#skills-box').modal('hide');
824
        return false;
825
    });
826
 
827
    var validatorSkills = $('#form-skill').validate({
828
        debug: true,
829
        onclick: false,
830
        onkeyup: false,
831
         onfocusout: false,
832
        ignore: [],
833
        rules: {
834
            'skills[]': {
835
                required: true,
836
            }
837
        },
838
        submitHandler: function(form)
839
        {
840
            NProgress.start();
841
            $.ajax({
842
                'dataType'  : 'json',
843
                'accept'    : 'application/json',
844
                'method'    : 'post',
845
                'url'       :  route_skills,
846
                'data'      :  {
847
                    'skills[]' : $('#form-skill #skills').val()
848
                },
849
            }).done(function(response) {
850
                if(response['success']) {
851
 
852
					$('#list-skills').empty();
853
                    $.each(response['data'], function(index, item) {
854
                        $('#list-skills').append('<li><a href="#" title="">' + item.label + '</a></li>');
855
                    });
856
 
857
                    $("#skills-box").modal('hide');
858
                } else {
859
                    validatorSkills.resetForm();
860
                    if(jQuery.type(response['data']) == 'string') {
861
                        $.fn.showError(response['data']);
862
                    } else  {
863
                        $.each(response['data'], function( fieldname, errors ) {
864
                            $.fn.showFormErrorValidator('#form-skill #' + fieldname, errors);
865
                        });
866
                    }
867
                }
868
            }).fail(function( jqXHR, textStatus, errorThrown) {
869
                $.fn.showError(textStatus);
870
            }).always(function() {
871
                NProgress.done();
872
            });
873
            return false;
874
        },
875
        invalidHandler: function(form, validator) {
876
 
877
        }
878
    });
879
 
880
 
881
 
882
    var validatorLanguages = $('#form-language').validate({
883
        debug: true,
884
        onclick: false,
885
        onkeyup: false,
886
         onfocusout: false,
887
        ignore: [],
888
        rules: {
889
            'languages[]': {
890
                required: true,
891
            }
892
        },
893
        submitHandler: function(form)
894
        {
895
            NProgress.start();
896
            $.ajax({
897
                'dataType'  : 'json',
898
                'accept'    : 'application/json',
899
                'method'    : 'post',
900
                'url'       :  route_languages,
901
                'data'      :  {
902
                    'languages[]' : $('#form-language #languages').val()
903
                },
904
            }).done(function(response) {
905
                if(response['success']) {
906
 
907
					$('#list-languages').empty();
908
                    $.each(response['data'], function(index, item) {
909
                        $('#list-languages').append('<li><a href="#" title="">' + item.label + '</a></li>');
910
                    });
911
 
912
                    $("#languages-box").modal('hide');
913
                } else {
914
                    validatorLanguages.resetForm();
915
                    if(jQuery.type(response['data']) == 'string') {
916
                        $.fn.showError(response['data']);
917
                    } else  {
918
                        $.each(response['data'], function( fieldname, errors ) {
919
                            $.fn.showFormErrorValidator('#form-language #' + fieldname, errors);
920
                        });
921
                    }
922
                }
923
            }).fail(function( jqXHR, textStatus, errorThrown) {
924
                $.fn.showError(textStatus);
925
            }).always(function() {
926
                NProgress.done();
927
            });
928
            return false;
929
        },
930
        invalidHandler: function(form, validator) {
931
 
932
        }
933
    });
934
 
7774 stevensc 935
    $('.btn-languages-edit').on("click", function(e){
936
        e.preventDefault();
1 www 937
 
938
        NProgress.start();
939
        $.ajax({
940
            'dataType'  : 'json',
941
            'accept'    : 'application/json',
942
            'method'    : 'get',
943
            'url'       : route_languages,
944
        }).done(function(response) {
945
           if(response['success']) {
946
                $('#form-language #languages').val(response['data']).trigger('change');
947
                validatorLanguages.resetForm();
948
 
949
                $("#languages-box").modal('show');
950
            } else {
951
                $.fn.showError(response['data']);
952
            }
953
        }).fail(function( jqXHR, textStatus, errorThrown) {
954
            $.fn.showError(textStatus);
955
        }).always(function() {
956
            NProgress.done();
957
        });
958
        return false;
959
 
960
    });
961
 
962
    $('.btn-languages-close').on("click", function(e){
963
        e.preventDefault();
964
 
965
        $("#languages-box").modal('hide');
966
        return false;
967
    });
968
 
969
 
970
    var validatorDegrees = $('#form-degree').validate({
971
        debug: true,
972
        onclick: false,
973
        onkeyup: false,
974
         onfocusout: false,
975
        ignore: [],
976
        rules: {
977
            'degrees[]': {
978
                required: true,
979
            }
980
        },
981
        submitHandler: function(form)
982
        {
983
            NProgress.start();
984
            $.ajax({
985
                'dataType'  : 'json',
986
                'accept'    : 'application/json',
987
                'method'    : 'post',
988
                'url'       :  route_degrees,
989
                'data'      :  {
990
                    'degrees[]' : $('#form-degree #degrees').val()
991
                },
992
            }).done(function(response) {
993
                if(response['success']) {
994
 
995
					$('#list-degrees').empty();
996
                    $.each(response['data'], function(index, item) {
997
                        $('#list-degrees').append('<li><a href="#" title="">' + item.label + '</a></li>');
998
                    });
999
 
1000
                    $("#degrees-box").modal('hide');
1001
                } else {
1002
                    validatorDegrees.resetForm();
1003
                    if(jQuery.type(response['data']) == 'string') {
1004
                        $.fn.showError(response['data']);
1005
                    } else  {
1006
                        $.each(response['data'], function( fieldname, errors ) {
1007
                            $.fn.showFormErrorValidator('#form-degree #' + fieldname, errors);
1008
                        });
1009
                    }
1010
                }
1011
            }).fail(function( jqXHR, textStatus, errorThrown) {
1012
                $.fn.showError(textStatus);
1013
            }).always(function() {
1014
                NProgress.done();
1015
            });
1016
            return false;
1017
        },
1018
        invalidHandler: function(form, validator) {
1019
 
1020
        }
1021
    });
1022
 
1023
    $('.btn-degrees-edit').on("click", function(e){
1024
        e.preventDefault();
1025
 
1026
        NProgress.start();
1027
        $.ajax({
1028
            'dataType'  : 'json',
1029
            'accept'    : 'application/json',
1030
            'method'    : 'get',
1031
            'url'       : route_degrees,
1032
        }).done(function(response) {
1033
           if(response['success']) {
1034
                $('#form-degree #degrees').val(response['data']).trigger('change');
1035
                validatorDegrees.resetForm();
1036
 
1037
                $("#degrees-box").modal('show');
1038
            } else {
1039
                $.fn.showError(response['data']);
1040
            }
1041
        }).fail(function( jqXHR, textStatus, errorThrown) {
1042
            $.fn.showError(textStatus);
1043
        }).always(function() {
1044
            NProgress.done();
1045
        });
1046
        return false;
1047
 
1048
    });
1049
 
1050
    $('.btn-degrees-close').on("click", function(e){
1051
        e.preventDefault();
1052
 
1053
        $("#degrees-box").modal('hide');
1054
        return false;
1055
    });
1056
 
1057
 
1058
    $('#form-degree #degrees').select2({
1059
        theme: 'bootstrap4',
1060
        width: '100%',
1061
        placeholder: 'LABEL_SELECT_DEGREE'
1062
    });
1063
 
1064
    $('#form-skill #skills').select2({
1065
        theme: 'bootstrap4',
1066
        width: '100%',
1067
        placeholder: 'LABEL_SELECT_ONE_SKILLS'
1068
    });
1069
 
1070
    $('#form-language #languages').select2({
1071
        theme: 'bootstrap4',
1072
        width: '100%',
1073
        placeholder: 'LABEL_SELECT_ONE_LANGUAGE'
1074
    });
1075
 
1076
 
1077
 
1078
    $('#form-last-date-of-application #last_date_of_application').datetimepicker({
1079
        locale: 'es',
1080
        format: 'DD/MM/YYYY'
1081
    });
1082
 
1083
    $('#form-salary #salary_visible').bootstrapToggle({'on' : 'LABEL_SHOW',  'off' : 'LABEL_NO_SHOW', 'width' : '160px', 'height' : '40px'});
1084
    $('#form-salary #salary_min').inputNumberFormat({ 'decimal': 2 });
1085
    $('#form-salary #salary_max').inputNumberFormat({ 'decimal': 2 });
1086
 
1087
    $('#form-salary #salary_visible').change(function(e) {
1088
        e.preventDefault();
1089
 
1090
        if($(this).prop('checked')) {
1091
            $('#form-salary #salary_min').prop('readonly', false);
1092
            $('#form-salary #salary_max').prop('readonly', false);
1093
            $('#form-salary #salary_currency').prop('disabled', false);
1094
        } else {
1095
            $('#form-salary #salary_min').val('1');
1096
            $('#form-salary #salary_max').val('99');
1097
            $('#form-salary #salary_min').prop('readonly', true);
1098
            $('#form-salary #salary_max').prop('readonly', true);
1099
            $('#form-salary #salary_currency').prop('disabled', true);
1100
        }
1101
    });
1102
 
1103
    $('#form-experience #experience_visible').bootstrapToggle({'on' : 'LABEL_SHOW',  'off' : 'LABEL_NO_SHOW', 'width' : '160px', 'height' : '40px'});
1104
    $('#form-experience #experience_min').inputNumberFormat({ 'decimal': 0 });
1105
    $('#form-experience #experience_max').inputNumberFormat({ 'decimal': 0 });
1106
 
1107
    $('#form-experience #experience_visible').change(function(e) {
1108
        e.preventDefault();
1109
 
1110
        if($(this).prop('checked')) {
1111
            $('#form-experience #experience_min').prop('readonly', false);
1112
            $('#form-experience #experience_max').prop('readonly', false);
1113
        } else {
1114
            $('#form-experience #experience_min').val('1');
1115
            $('#form-experience #experience_max').val('5');
1116
            $('#form-experience #experience_min').prop('readonly', true);
1117
            $('#form-experience #experience_max').prop('readonly', true);
1118
       }
1119
    });
1120
 
1121
 
1122
});
1123
JS;
1124
$this->inlineScript()->captureEnd();
8141 stevensc 1125
 
1126
$js = <<<JS
1127
const linksVars = {
1128
    link_add:"$routeAdd",
1129
    link_table: "$routeDatatable",
1130
    allowAdd: "$allowAdd",
1131
    allowDelete: "$allowDelete",
1132
    allowEdit: "$allowEdit",
1133
    allowUsersWhoApplied: "$allowUsersWhoApplied",
1134
    googleApi: "$google_map_key"
1135
}
1136
JS;
1137
 
1138
$this->inlineScript()->appendScript($js);
1139
$this->headLink()->appendStylesheet('/react-bundles/jobs/main.css');
1140
$this->inlineScript()->appendFile('/react-bundles/jobs/jobsBundle.js');
1 www 1141
?>
3766 stevensc 1142
 
1 www 1143
<!-- Content Header (Page header) -->
8141 stevensc 1144
<div id="jobs"></div>
1 www 1145
 
3766 stevensc 1146
 
1147
 
1 www 1148
<div class="modal" tabindex="-1" role="dialog" id="add-job-box">
3766 stevensc 1149
    <div class="modal-dialog" role="document">
1150
        <?php
1151
        $form = $this->formAdd;
1152
        $form->setAttributes([
1153
            'method'    => 'post',
1154
            'name'      => 'form-add',
1155
            'id'        => 'form-add'
1156
        ]);
1157
        $form->prepare();
1158
        echo $this->form()->openTag($form);
1159
 
1160
        $fieldnames = [
1161
            'formatted_address',
1162
            'address1',
1163
            'address2',
1164
            'country',
1165
            'state',
1166
            'city1',
1167
            'city2',
1168
            'postal_code',
1169
            'latitude',
1170
            'longitude',
1171
        ];
1172
 
1173
        foreach ($fieldnames as $fieldname) {
1174
 
1175
            $element = $form->get($fieldname);
1176
            echo $this->formHidden($element);
1177
        }
1178
        ?>
1179
        <div class="modal-content">
1180
            <div class="modal-header">
1181
                <h3 class="modal-title">LABEL_NEW_JOB</h3>
1182
            </div>
1183
            <div class="modal-body">
1184
                <div class="form-group">
1185
                    <?php
1186
                    $element = $form->get('title');
1187
                    $element->setOptions(['label' => 'LABEL_TITLE']);
1188
                    $element->setAttributes(['class' => 'form-control']);
1189
                    echo $this->formLabel($element);
1190
                    echo $this->formText($element);
1 www 1191
                    ?>
3766 stevensc 1192
                </div>
1193
                <div class="form-group">
1194
                    <?php
1195
                    $element = $form->get('employment_type');
1196
                    $element->setAttributes(['class' => 'form-control']);
1197
                    $element->setOptions(['empty_option' => 'LABEL_SELECT_EMPLOYMENT_TYPE', 'label' => 'LABEL_EMPLOYMENT_TYPE']);
1198
                    echo $this->formLabel($element);
1199
                    echo $this->formSelect($element);
1 www 1200
                    ?>
3766 stevensc 1201
                </div>
1202
                <div class="form-group">
1203
                    <?php
1204
                    $element = $form->get('last_date_of_application');
1205
                    $element->setAttributes(['class' => 'form-control']);
1206
                    $element->setOptions(['label' => 'LABEL_LAST_DATE_OF_APPLICATION']);
1207
                    echo $this->formLabel($element);
1208
                    echo $this->formText($element);
1 www 1209
                    ?>
3766 stevensc 1210
                </div>
1211
 
1212
                <div class="form-group">
1213
                    <?php
1214
                    $element = $form->get('job_category_id');
1215
                    $element->setOptions(['empty_option' => 'LABEL_SELECT_JOB_CATEGORY', 'label' => 'LABEL_JOB_CATEGORY']);
1216
                    $element->setAttributes(['class' => 'form-control']);
1217
                    echo $this->formLabel($element);
1218
                    echo $this->formSelect($element);
1 www 1219
                    ?>
3766 stevensc 1220
                </div>
1221
                <div class="form-group">
1222
                    <?php
1223
                    $element = $form->get('location_search');
1224
                    $element->setAttributes(['name' => 'add_location_search',  'id' => 'add_location_search', 'class' => 'form-control']);
1225
                    $element->setOptions(['label' => 'LABEL_LOCATION']);
1226
                    echo $this->formLabel($element);
1227
                    echo $this->formText($element);
1 www 1228
                    ?>
3766 stevensc 1229
                </div>
1230
            </div>
1231
 
1232
            <div class="modal-footer">
1233
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1234
                <button type="button" class="btn btn-default btn-add-job-cancel">LABEL_CANCEL</button>
1235
            </div>
1236
            <?php echo $this->form()->closeTag($form); ?>
1237
        </div>
1238
    </div>
1 www 1239
</div>
3766 stevensc 1240
 
1241
 
1 www 1242
<!-- The Modal -->
1243
<div class="modal" id="modalUsersWhoApplied">
3766 stevensc 1244
    <div class="modal-dialog modal-xl">
1245
        <div class="modal-content">
1 www 1246
 
1247
            <!-- Modal Header -->
3766 stevensc 1248
            <div class="modal-header">
1249
                <h4 class="modal-title">LABEL_USERS_WHO_APPLIED</h4>
1250
                <button type="button" class="close" data-dismiss="modal">&times;</button>
1251
            </div>
1 www 1252
 
1253
            <!-- Modal body -->
3766 stevensc 1254
            <div class="modal-body">
1255
                <div style="height: 300px;overflow: scroll;">
1256
                    <table id="gridTableUsersWhoApplied" style="width: 100%" class="table table-bordered table-hover">
1257
                        <thead>
1258
                            <tr>
1259
                                <th>LABEL_FIRST_NAME</th>
1260
                                <th>LABEL_LAST_NAME</th>
1261
                                <th>LABEL_EMAIL</th>
1262
                                <th>LABEL_ACTIONS</th>
1263
                            </tr>
1264
                        </thead>
1265
                        <tbody>
1266
                        </tbody>
1267
                    </table>
1268
                </div>
1 www 1269
 
3766 stevensc 1270
            </div>
1271
 
1 www 1272
            <!-- Modal footer -->
3766 stevensc 1273
            <div class="modal-footer">
1274
                <button type="button" class="btn btn-danger" data-dismiss="modal">LABEL_CLOSE</button>
1275
            </div>
1 www 1276
 
3766 stevensc 1277
        </div>
1278
    </div>
1279
</div>
1 www 1280
 
1281
<div class="modal" tabindex="-1" role="dialog" id="job-category-box">
3766 stevensc 1282
    <div class="modal-dialog" role="document">
1283
        <?php
1 www 1284
        $form = $this->formJobCategory;
1285
        $form->setAttributes([
1286
            'method' => 'post',
1287
            'name' => 'form-job-category',
1288
            'id' => 'form-job-category'
1289
        ]);
1290
        $form->prepare();
1291
        echo $this->form()->openTag($form);
3766 stevensc 1292
        ?>
1293
        <div class="modal-content">
1294
            <div class="modal-header">
1295
                <h3 class="modal-title">LABEL_JOB_CATEGORY</h3>
1296
            </div>
1297
            <div class="modal-body">
1 www 1298
                <div class="form-group">
3766 stevensc 1299
                    <?php
1300
                    $element = $form->get('job_category_id');
1301
                    $element->setOptions(['label' => 'LABEL_JOB_CATEGORY']);
1302
                    $element->setAttributes(['class' => 'form-control']);
1303
                    echo $this->formLabel($element);
1304
                    echo $this->formSelect($element);
1305
                    ?>
1 www 1306
                </div>
3766 stevensc 1307
            </div>
1308
            <div class="modal-footer">
1309
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1310
                <button type="button" class="btn btn-default btn-job-category-close">LABEL_CANCEL</button>
1311
            </div>
1312
            <?php echo $this->form()->closeTag($form); ?>
1313
        </div>
1314
    </div>
1315
</div>
1 www 1316
 
1317
<div class="modal" tabindex="-1" role="dialog" id="salary-box">
3766 stevensc 1318
    <div class="modal-dialog" role="document">
1319
        <?php
1 www 1320
        $form = $this->formSalary;
1321
        $form->setAttributes([
1322
            'method' => 'post',
1323
            'name' => 'form-salary',
1324
            'id' => 'form-salary'
1325
        ]);
1326
        $form->prepare();
1327
        echo $this->form()->openTag($form);
3766 stevensc 1328
        ?>
1329
        <div class="modal-content">
1330
            <div class="modal-header">
1331
                <h3 class="modal-title">LABEL_SALARY</h3>
1332
            </div>
1333
            <div class="modal-body">
1 www 1334
                <div class="form-group">
3766 stevensc 1335
                    <?php
1336
                    $element = $form->get('salary_visible');
1337
                    echo $this->formCheckbox($element);
1338
                    ?>
1 www 1339
                </div>
1340
                <div class="form-group">
3766 stevensc 1341
                    <?php
1342
                    $element = $form->get('salary_currency');
1343
                    $element->setAttributes(['class' => 'form-control']);
1344
                    $element->setOptions(['label' => 'LABEL_CURRENCY']);
1345
                    echo $this->formLabel($element);
1346
                    echo $this->formSelect($element);
1347
                    ?>
1 www 1348
                </div>
3766 stevensc 1349
                <div class="form-group">
1350
                    <?php
1351
                    $element = $form->get('salary_min');
1352
                    $element->setOptions(['label' => 'LABEL_MINIMUM']);
1353
                    $element->setAttributes(['class' => 'form-control']);
1354
                    echo $this->formLabel($element);
1355
                    echo $this->formText($element);
1356
                    ?>
1 www 1357
                </div>
1358
                <div class="form-group">
3766 stevensc 1359
                    <?php
1360
                    $element = $form->get('salary_max');
1361
                    $element->setOptions(['label' => 'LABEL_MAXIMUM']);
1362
                    $element->setAttributes(['class' => 'form-control']);
1363
                    echo $this->formLabel($element);
1364
                    echo $this->formText($element);
1365
                    ?>
1 www 1366
                </div>
3766 stevensc 1367
            </div>
1368
            <div class="modal-footer">
1369
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1370
                <button type="button" class="btn btn-default btn-salary-close">LABEL_CANCEL</button>
1371
            </div>
1372
            <?php echo $this->form()->closeTag($form); ?>
1373
        </div>
1374
    </div>
1375
</div>
1 www 1376
 
1377
<div class="modal" tabindex="-1" role="dialog" id="experience-box">
3766 stevensc 1378
    <div class="modal-dialog" role="document">
1379
        <?php
1 www 1380
        $form = $this->formExperience;
1381
        $form->setAttributes([
1382
            'method' => 'post',
1383
            'name' => 'form-experience',
1384
            'id' => 'form-experience'
1385
        ]);
1386
        $form->prepare();
1387
        echo $this->form()->openTag($form);
3766 stevensc 1388
        ?>
1389
        <div class="modal-content">
1390
            <div class="modal-header">
1391
                <h3 class="modal-title">LABEL_EXPERIENCE</h3>
1392
            </div>
1393
            <div class="modal-body">
1 www 1394
                <div class="form-group">
3766 stevensc 1395
                    <?php
1396
                    $element = $form->get('experience_visible');
1397
 
1398
                    echo $this->formCheckbox($element);
1399
                    ?>
1 www 1400
                </div>
3766 stevensc 1401
                <div class="form-group">
1402
                    <?php
1403
                    $element = $form->get('experience_min');
1404
                    $element->setOptions(['label' => 'LABEL_MINIMUM']);
1405
                    $element->setAttributes(['class' => 'form-control']);
1406
                    echo $this->formLabel($element);
1407
                    echo $this->formText($element);
1408
                    ?>
1 www 1409
                </div>
1410
                <div class="form-group">
3766 stevensc 1411
                    <?php
1412
                    $element = $form->get('experience_max');
1413
                    $element->setOptions(['label' => 'LABEL_MAXIMUM']);
1414
                    $element->setAttributes(['class' => 'form-control']);
1415
                    echo $this->formLabel($element);
1416
                    echo $this->formText($element);
1417
                    ?>
1 www 1418
                </div>
3766 stevensc 1419
            </div>
1420
            <div class="modal-footer">
1421
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1422
                <button type="button" class="btn btn-default btn-experience-close">LABEL_CANCEL</button>
1423
            </div>
1424
            <?php echo $this->form()->closeTag($form); ?>
1425
        </div>
1426
    </div>
1427
</div>
1 www 1428
 
1429
 
1430
<div class="modal" tabindex="-1" role="dialog" id="skills-box">
3766 stevensc 1431
    <div class="modal-dialog" role="document">
1432
        <?php
1433
        $form = $this->formSkill;
1434
        $form->setAttributes([
1435
            'method' => 'post',
1436
            'name' => 'form-skill',
1437
            'id' => 'form-skill'
1438
        ]);
1439
        $form->prepare();
1440
        echo $this->form()->openTag($form);
1441
        ?>
1442
        <div class="modal-content">
1443
            <div class="modal-header">
1444
                <h3 class="modal-title">LABEL_SKILLS</h3>
1445
            </div>
1446
            <div class="modal-body">
1 www 1447
                <div class="form-group">
3766 stevensc 1448
                    <?php
1 www 1449
                    $element = $form->get('skills');
1450
                    $element->setOptions(['label' => 'LABEL_SKILLS']);
1451
                    $element->setAttributes(['class' => 'form-control']);
1452
                    echo $this->formLabel($element);
1453
                    echo $this->formSelect($element);
3766 stevensc 1454
                    ?>
1 www 1455
                </div>
3766 stevensc 1456
            </div>
1457
 
1458
 
1459
            <div class="modal-footer">
1460
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1461
                <button type="button" class="btn btn-default btn-skills-close">LABEL_CANCEL</button>
1462
            </div>
1463
            <?php echo $this->form()->closeTag($form); ?>
1464
        </div>
1465
    </div>
1 www 1466
</div>
1467
 
1468
<div class="modal" tabindex="-1" role="dialog" id="languages-box">
3766 stevensc 1469
    <div class="modal-dialog" role="document">
1470
        <?php
1 www 1471
        $form = $this->formLanguage;
1472
        $form->setAttributes([
1473
            'method' => 'post',
1474
            'name' => 'form-language',
1475
            'id' => 'form-language'
1476
        ]);
1477
        $form->prepare();
1478
        echo $this->form()->openTag($form);
3766 stevensc 1479
        ?>
1480
        <div class="modal-content">
1481
            <div class="modal-header">
1482
                <h3 class="modal-title">LABEL_LANGUAGES</h3>
1483
            </div>
1484
            <div class="modal-body">
1 www 1485
                <div class="form-group">
3766 stevensc 1486
                    <?php
1 www 1487
                    $element = $form->get('languages');
1488
                    $element->setOptions(['label' => 'LABEL_LANGUAGES']);
1489
                    $element->setAttributes(['class' => 'form-control']);
1490
                    echo $this->formLabel($element);
1491
                    echo $this->formSelect($element);
3766 stevensc 1492
                    ?>
1 www 1493
                </div>
3766 stevensc 1494
            </div>
1495
            <div class="modal-footer">
1496
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1497
                <button type="button" class="btn btn-default btn-languages-close">LABEL_CANCEL</button>
1498
            </div>
1499
            <?php echo $this->form()->closeTag($form); ?>
1500
        </div>
1501
    </div>
1 www 1502
</div>
1503
 
1504
<div class="modal" tabindex="-1" role="dialog" id="degrees-box">
3766 stevensc 1505
    <div class="modal-dialog" role="document">
1506
        <?php
1 www 1507
        $form = $this->formDegree;
1508
        $form->setAttributes([
1509
            'method' => 'post',
1510
            'name' => 'form-degree',
1511
            'id' => 'form-degree'
1512
        ]);
1513
        $form->prepare();
1514
        echo $this->form()->openTag($form);
3766 stevensc 1515
        ?>
1516
        <div class="modal-content">
1517
            <div class="modal-header">
1518
                <h3 class="modal-title">LABEL_DEGREES</h3>
1519
            </div>
1520
            <div class="modal-body">
1 www 1521
                <div class="form-group">
3766 stevensc 1522
                    <?php
1 www 1523
                    $element = $form->get('degrees');
1524
                    $element->setOptions(['label' => 'LABEL_DEGREES']);
1525
                    $element->setAttributes(['class' => 'form-control']);
1526
                    echo $this->formLabel($element);
1527
                    echo $this->formSelect($element);
3766 stevensc 1528
                    ?>
1 www 1529
                </div>
3766 stevensc 1530
            </div>
1531
            <div class="modal-footer">
1532
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1533
                <button type="button" class="btn btn-default btn-degrees-close">LABEL_CANCEL</button>
1534
            </div>
1535
            <?php echo $this->form()->closeTag($form); ?>
1536
        </div>
1537
    </div>
1 www 1538
</div>