Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 8141 | Rev 8197 | 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
 
8156 stevensc 1146
<section class="content">
1147
        <div class="container-fluid">
1148
            <div class="row">
1149
                <div class="col-lg-3">
1150
                </div>
1151
                <div class="col-lg-6">
1152
                    <div class="main-ws-sec">
1153
                        <!--user-profile-ov end-->
1154
                        <div class="user-profile-ov">
1155
                            <h3>
1156
                                LABEL_EXPERIENCE
1157
                                <a href="#" title="" class="btn-experience-edit"><i class="fa fa-pencil"></i></a>
1158
                            </h3>
1159
                            <span id="overview-experience"> </span>
1160
                        </div>
1161
                        <!--user-profile-ov end-->
1162
                        <div class="user-profile-ov">
1163
                            <h3>
1164
                                LABEL_SALARY
1165
                                <a href="#" title="" class="btn-salary-edit"><i class="fa fa-pencil"></i></a>
1166
                            </h3>
1167
                            <span id="overview-salary"></span>
1168
                        </div>
1169
                        <!--user-profile-ov end-->
1170
                        <div class="user-profile-ov">
1171
                            <h3>
1172
                                LABEL_CATEGORIE
1173
                                <a href="#" title="" class="btn-job-category-edit"><i class="fa fa-pencil"></i></a>
1174
                            </h3>
1175
                            <span id="overview-job-category"></span>
1176
                        </div>
1177
                        <!--user-profile-ov end-->
1178
                        <div class="user-profile-ov">
1179
                            <h3>
1180
                                LABEL_SKILLS <a href="#" title="" class="btn-skills-edit"> <i class="fa fa-pencil"></i></a>
1181
                            </h3>
1182
                            <ul id="list-skills">
1183
                            </ul>
1184
                        </div>
1185
                        <!--user-profile-ov end -->
1186
                        <div class="user-profile-ov">
1187
                            <h3>
1188
                                LABEL_DEGREES <a href="#" title="" class="btn-degrees-edit"> <i class="fa fa-pencil"></i></a>
1189
                            </h3>
1190
                            <ul id="list-degrees">
1191
                            </ul>
1192
                        </div>
1193
                    </div>
1194
                </div>
1195
                <div class="col-lg-3">
1196
                </div>
1197
            </div>
1198
        </div>
1199
    </section>
1200
</div>
3766 stevensc 1201
 
1 www 1202
<div class="modal" tabindex="-1" role="dialog" id="add-job-box">
3766 stevensc 1203
    <div class="modal-dialog" role="document">
1204
        <?php
1205
        $form = $this->formAdd;
1206
        $form->setAttributes([
1207
            'method'    => 'post',
1208
            'name'      => 'form-add',
1209
            'id'        => 'form-add'
1210
        ]);
1211
        $form->prepare();
1212
        echo $this->form()->openTag($form);
1213
 
1214
        $fieldnames = [
1215
            'formatted_address',
1216
            'address1',
1217
            'address2',
1218
            'country',
1219
            'state',
1220
            'city1',
1221
            'city2',
1222
            'postal_code',
1223
            'latitude',
1224
            'longitude',
1225
        ];
1226
 
1227
        foreach ($fieldnames as $fieldname) {
1228
 
1229
            $element = $form->get($fieldname);
1230
            echo $this->formHidden($element);
1231
        }
1232
        ?>
1233
        <div class="modal-content">
1234
            <div class="modal-header">
1235
                <h3 class="modal-title">LABEL_NEW_JOB</h3>
1236
            </div>
1237
            <div class="modal-body">
1238
                <div class="form-group">
1239
                    <?php
1240
                    $element = $form->get('title');
1241
                    $element->setOptions(['label' => 'LABEL_TITLE']);
1242
                    $element->setAttributes(['class' => 'form-control']);
1243
                    echo $this->formLabel($element);
1244
                    echo $this->formText($element);
1 www 1245
                    ?>
3766 stevensc 1246
                </div>
1247
                <div class="form-group">
1248
                    <?php
1249
                    $element = $form->get('employment_type');
1250
                    $element->setAttributes(['class' => 'form-control']);
1251
                    $element->setOptions(['empty_option' => 'LABEL_SELECT_EMPLOYMENT_TYPE', 'label' => 'LABEL_EMPLOYMENT_TYPE']);
1252
                    echo $this->formLabel($element);
1253
                    echo $this->formSelect($element);
1 www 1254
                    ?>
3766 stevensc 1255
                </div>
1256
                <div class="form-group">
1257
                    <?php
1258
                    $element = $form->get('last_date_of_application');
1259
                    $element->setAttributes(['class' => 'form-control']);
1260
                    $element->setOptions(['label' => 'LABEL_LAST_DATE_OF_APPLICATION']);
1261
                    echo $this->formLabel($element);
1262
                    echo $this->formText($element);
1 www 1263
                    ?>
3766 stevensc 1264
                </div>
1265
 
1266
                <div class="form-group">
1267
                    <?php
1268
                    $element = $form->get('job_category_id');
1269
                    $element->setOptions(['empty_option' => 'LABEL_SELECT_JOB_CATEGORY', 'label' => 'LABEL_JOB_CATEGORY']);
1270
                    $element->setAttributes(['class' => 'form-control']);
1271
                    echo $this->formLabel($element);
1272
                    echo $this->formSelect($element);
1 www 1273
                    ?>
3766 stevensc 1274
                </div>
1275
                <div class="form-group">
1276
                    <?php
1277
                    $element = $form->get('location_search');
1278
                    $element->setAttributes(['name' => 'add_location_search',  'id' => 'add_location_search', 'class' => 'form-control']);
1279
                    $element->setOptions(['label' => 'LABEL_LOCATION']);
1280
                    echo $this->formLabel($element);
1281
                    echo $this->formText($element);
1 www 1282
                    ?>
3766 stevensc 1283
                </div>
1284
            </div>
1285
 
1286
            <div class="modal-footer">
1287
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1288
                <button type="button" class="btn btn-default btn-add-job-cancel">LABEL_CANCEL</button>
1289
            </div>
1290
            <?php echo $this->form()->closeTag($form); ?>
1291
        </div>
1292
    </div>
1 www 1293
</div>
3766 stevensc 1294
 
1 www 1295
<div class="modal" tabindex="-1" role="dialog" id="job-category-box">
3766 stevensc 1296
    <div class="modal-dialog" role="document">
1297
        <?php
1 www 1298
        $form = $this->formJobCategory;
1299
        $form->setAttributes([
1300
            'method' => 'post',
1301
            'name' => 'form-job-category',
1302
            'id' => 'form-job-category'
1303
        ]);
1304
        $form->prepare();
1305
        echo $this->form()->openTag($form);
3766 stevensc 1306
        ?>
1307
        <div class="modal-content">
1308
            <div class="modal-header">
1309
                <h3 class="modal-title">LABEL_JOB_CATEGORY</h3>
1310
            </div>
1311
            <div class="modal-body">
1 www 1312
                <div class="form-group">
3766 stevensc 1313
                    <?php
1314
                    $element = $form->get('job_category_id');
1315
                    $element->setOptions(['label' => 'LABEL_JOB_CATEGORY']);
1316
                    $element->setAttributes(['class' => 'form-control']);
1317
                    echo $this->formLabel($element);
1318
                    echo $this->formSelect($element);
1319
                    ?>
1 www 1320
                </div>
3766 stevensc 1321
            </div>
1322
            <div class="modal-footer">
1323
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1324
                <button type="button" class="btn btn-default btn-job-category-close">LABEL_CANCEL</button>
1325
            </div>
1326
            <?php echo $this->form()->closeTag($form); ?>
1327
        </div>
1328
    </div>
1329
</div>
1 www 1330
 
1331
<div class="modal" tabindex="-1" role="dialog" id="salary-box">
3766 stevensc 1332
    <div class="modal-dialog" role="document">
1333
        <?php
1 www 1334
        $form = $this->formSalary;
1335
        $form->setAttributes([
1336
            'method' => 'post',
1337
            'name' => 'form-salary',
1338
            'id' => 'form-salary'
1339
        ]);
1340
        $form->prepare();
1341
        echo $this->form()->openTag($form);
3766 stevensc 1342
        ?>
1343
        <div class="modal-content">
1344
            <div class="modal-header">
1345
                <h3 class="modal-title">LABEL_SALARY</h3>
1346
            </div>
1347
            <div class="modal-body">
1 www 1348
                <div class="form-group">
3766 stevensc 1349
                    <?php
1350
                    $element = $form->get('salary_visible');
1351
                    echo $this->formCheckbox($element);
1352
                    ?>
1 www 1353
                </div>
1354
                <div class="form-group">
3766 stevensc 1355
                    <?php
1356
                    $element = $form->get('salary_currency');
1357
                    $element->setAttributes(['class' => 'form-control']);
1358
                    $element->setOptions(['label' => 'LABEL_CURRENCY']);
1359
                    echo $this->formLabel($element);
1360
                    echo $this->formSelect($element);
1361
                    ?>
1 www 1362
                </div>
3766 stevensc 1363
                <div class="form-group">
1364
                    <?php
1365
                    $element = $form->get('salary_min');
1366
                    $element->setOptions(['label' => 'LABEL_MINIMUM']);
1367
                    $element->setAttributes(['class' => 'form-control']);
1368
                    echo $this->formLabel($element);
1369
                    echo $this->formText($element);
1370
                    ?>
1 www 1371
                </div>
1372
                <div class="form-group">
3766 stevensc 1373
                    <?php
1374
                    $element = $form->get('salary_max');
1375
                    $element->setOptions(['label' => 'LABEL_MAXIMUM']);
1376
                    $element->setAttributes(['class' => 'form-control']);
1377
                    echo $this->formLabel($element);
1378
                    echo $this->formText($element);
1379
                    ?>
1 www 1380
                </div>
3766 stevensc 1381
            </div>
1382
            <div class="modal-footer">
1383
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1384
                <button type="button" class="btn btn-default btn-salary-close">LABEL_CANCEL</button>
1385
            </div>
1386
            <?php echo $this->form()->closeTag($form); ?>
1387
        </div>
1388
    </div>
1389
</div>
1 www 1390
 
1391
<div class="modal" tabindex="-1" role="dialog" id="experience-box">
3766 stevensc 1392
    <div class="modal-dialog" role="document">
1393
        <?php
1 www 1394
        $form = $this->formExperience;
1395
        $form->setAttributes([
1396
            'method' => 'post',
1397
            'name' => 'form-experience',
1398
            'id' => 'form-experience'
1399
        ]);
1400
        $form->prepare();
1401
        echo $this->form()->openTag($form);
3766 stevensc 1402
        ?>
1403
        <div class="modal-content">
1404
            <div class="modal-header">
1405
                <h3 class="modal-title">LABEL_EXPERIENCE</h3>
1406
            </div>
1407
            <div class="modal-body">
1 www 1408
                <div class="form-group">
3766 stevensc 1409
                    <?php
1410
                    $element = $form->get('experience_visible');
1411
 
1412
                    echo $this->formCheckbox($element);
1413
                    ?>
1 www 1414
                </div>
3766 stevensc 1415
                <div class="form-group">
1416
                    <?php
1417
                    $element = $form->get('experience_min');
1418
                    $element->setOptions(['label' => 'LABEL_MINIMUM']);
1419
                    $element->setAttributes(['class' => 'form-control']);
1420
                    echo $this->formLabel($element);
1421
                    echo $this->formText($element);
1422
                    ?>
1 www 1423
                </div>
1424
                <div class="form-group">
3766 stevensc 1425
                    <?php
1426
                    $element = $form->get('experience_max');
1427
                    $element->setOptions(['label' => 'LABEL_MAXIMUM']);
1428
                    $element->setAttributes(['class' => 'form-control']);
1429
                    echo $this->formLabel($element);
1430
                    echo $this->formText($element);
1431
                    ?>
1 www 1432
                </div>
3766 stevensc 1433
            </div>
1434
            <div class="modal-footer">
1435
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1436
                <button type="button" class="btn btn-default btn-experience-close">LABEL_CANCEL</button>
1437
            </div>
1438
            <?php echo $this->form()->closeTag($form); ?>
1439
        </div>
1440
    </div>
1441
</div>
1 www 1442
 
1443
<div class="modal" tabindex="-1" role="dialog" id="skills-box">
3766 stevensc 1444
    <div class="modal-dialog" role="document">
1445
        <?php
1446
        $form = $this->formSkill;
1447
        $form->setAttributes([
1448
            'method' => 'post',
1449
            'name' => 'form-skill',
1450
            'id' => 'form-skill'
1451
        ]);
1452
        $form->prepare();
1453
        echo $this->form()->openTag($form);
1454
        ?>
1455
        <div class="modal-content">
1456
            <div class="modal-header">
1457
                <h3 class="modal-title">LABEL_SKILLS</h3>
1458
            </div>
1459
            <div class="modal-body">
1 www 1460
                <div class="form-group">
3766 stevensc 1461
                    <?php
1 www 1462
                    $element = $form->get('skills');
1463
                    $element->setOptions(['label' => 'LABEL_SKILLS']);
1464
                    $element->setAttributes(['class' => 'form-control']);
1465
                    echo $this->formLabel($element);
1466
                    echo $this->formSelect($element);
3766 stevensc 1467
                    ?>
1 www 1468
                </div>
3766 stevensc 1469
            </div>
1470
 
1471
 
1472
            <div class="modal-footer">
1473
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1474
                <button type="button" class="btn btn-default btn-skills-close">LABEL_CANCEL</button>
1475
            </div>
1476
            <?php echo $this->form()->closeTag($form); ?>
1477
        </div>
1478
    </div>
1 www 1479
</div>
1480
 
1481
<div class="modal" tabindex="-1" role="dialog" id="degrees-box">
3766 stevensc 1482
    <div class="modal-dialog" role="document">
1483
        <?php
1 www 1484
        $form = $this->formDegree;
1485
        $form->setAttributes([
1486
            'method' => 'post',
1487
            'name' => 'form-degree',
1488
            'id' => 'form-degree'
1489
        ]);
1490
        $form->prepare();
1491
        echo $this->form()->openTag($form);
3766 stevensc 1492
        ?>
1493
        <div class="modal-content">
1494
            <div class="modal-header">
1495
                <h3 class="modal-title">LABEL_DEGREES</h3>
1496
            </div>
1497
            <div class="modal-body">
1 www 1498
                <div class="form-group">
3766 stevensc 1499
                    <?php
1 www 1500
                    $element = $form->get('degrees');
1501
                    $element->setOptions(['label' => 'LABEL_DEGREES']);
1502
                    $element->setAttributes(['class' => 'form-control']);
1503
                    echo $this->formLabel($element);
1504
                    echo $this->formSelect($element);
3766 stevensc 1505
                    ?>
1 www 1506
                </div>
3766 stevensc 1507
            </div>
1508
            <div class="modal-footer">
1509
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1510
                <button type="button" class="btn btn-default btn-degrees-close">LABEL_CANCEL</button>
1511
            </div>
1512
            <?php echo $this->form()->closeTag($form); ?>
1513
        </div>
1514
    </div>
1 www 1515
</div>