Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
8780 eleazar 1
<?php
2
$acl = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser = $this->currentUserHelper();
4
$roleName = $currentUser->getUserTypeId();
5
 
6
$params = [
8803 eleazar 7
    'interview_uuid' => $interview_uuid,
8780 eleazar 8
];
9
 
10
$routeAdd       = $this->url('recruitment-and-selection/interview/file/add', $params);
11
$routeDatatable  = $this->url('recruitment-and-selection/interview/file', $params);
12
 
13
$allowAdd = $acl->isAllowed($roleName, 'recruitment-and-selection/interview/file/add') ? 1 : 0;
14
$allowDelete = $acl->isAllowed($roleName, 'recruitment-and-selection/interview/file/delete') ? 1 : 0;
15
$allowEdit = $acl->isAllowed($roleName, 'recruitment-and-selection/interview/file/edit') ? 1 : 0;
16
 
17
$this->headLink()->appendStylesheet($this->basePath('plugins/nprogress/nprogress.css'));
18
$this->inlineScript()->appendFile($this->basePath('plugins/nprogress/nprogress.js'));
19
 
20
$this->inlineScript()->appendFile($this->basePath('plugins/ckeditor/ckeditor.js'));
21
 
22
$this->inlineScript()->appendFile($this->basePath('plugins/bootbox/bootbox.min.js'));
23
 
24
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/css/fileinput.min.css'));
25
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fas/theme.css'));
26
 
27
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/piexif.js'));
28
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/sortable.js'));
29
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/fileinput.js'));
30
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/locales/es.js'));
31
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/fas/theme.js'));
32
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fas/theme.js'));
33
 
34
 
35
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
36
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
37
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
38
 
39
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css'));
40
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-responsive/css/responsive.bootstrap4.min.css'));
41
 
42
$this->inlineScript()->appendFile($this->basePath('plugins/datatables/jquery.dataTables.min.js'));
43
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js'));
44
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/dataTables.responsive.min.js'));
45
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/responsive.bootstrap4.min.js'));
46
 
47
 
48
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
49
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
50
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
51
 
52
 
53
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
54
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
55
 
56
$this->inlineScript()->appendFile($this->basePath('plugins/select2/js/select2.js'));
57
$this->inlineScript()->appendFile($this->basePath('plugins/select2/js/i18n/es.js'));
58
$this->headLink()->appendStylesheet($this->basePath('plugins/select2/css/select2.css'));
59
 
60
$this->headLink()->appendStylesheet($this->basePath('plugins/select2-bootstrap4-theme/select2-bootstrap4.css'));
61
 
62
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-confirmation/dist/bootstrap-confirmation.js'));
63
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-checkbox/awesome-bootstrap-checkbox.css'));
64
 
65
 
66
$this->inlineScript()->captureStart();
67
echo <<<JS
68
    $.prototype.fileinput.Constructor.prototype["setUploadUrl"] = function(url) {
69
        this.uploadUrl = url;
70
    }
71
 
72
 
73
jQuery(document).ready(function ($) {
74
 
75
 
76
 
77
    var allowAdd = $allowAdd;
78
    var allowDelete = $allowDelete;
79
    var allowEdit = $allowEdit;
80
 
81
    var gridTable = $('#gridTable').dataTable({
82
        'processing': true,
83
        'serverSide': true,
84
        'searching': true,
85
        'order': [[1, 'asc']],
86
        'ordering': true,
87
        'ordenable': true,
88
        'responsive': true,
89
        'select': false,
90
        'paging': true,
91
        'pagingType': 'simple_numbers',
92
        'lengthMenu': [[10, 25, 50, -1], [10, 25, 50, 'All']],
93
 
94
        'ajax': {
95
            'url': '$routeDatatable',
96
            'type': 'get',
97
            'data': function (d) {
98
            },
99
            'beforeSend': function (request) {
100
                NProgress.start();
101
            },
102
            'dataFilter': function (response) {
103
                var response = jQuery.parseJSON(response);
104
 
105
                var json = {};
106
                json.recordsTotal = 0;
107
                json.recordsFiltered = 0;
108
                json.data = [];
109
 
110
                if (response.success) {
111
                    json.recordsTotal = response.data.total;
112
                    json.recordsFiltered = response.data.total;
113
                    json.data = response.data.items;
114
                } else {
115
                    $.fn.showError(response.data)
116
                }
117
 
118
                return JSON.stringify(json);
119
            }
120
        },
121
        'language': {
122
            'sProcessing': 'LABEL_DATATABLE_SPROCESSING',
123
            'sLengthMenu': 'LABEL_DATATABLE_SLENGTHMENU',
124
            'sZeroRecords': 'LABEL_DATATABLE_SZERORECORDS',
125
            'sEmptyTable': 'LABEL_DATATABLE_SEMPTYTABLE',
126
            'sInfo': 'LABEL_DATATABLE_SINFO',
127
            'sInfoEmpty': 'LABEL_DATATABLE_SINFOEMPTY',
128
            'sInfoFiltered': 'LABEL_DATATABLE_SINFOFILTERED',
129
            'sInfoPostFix': '',
130
            'sSearch': 'LABEL_DATATABLE_SSEARCH',
131
            'sUrl': '',
132
            'sInfoThousands': ',',
133
            'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
134
            'oPaginate': {
135
                'sFirst': 'LABEL_DATATABLE_SFIRST',
136
                'sLast': 'LABEL_DATATABLE_SLAST',
137
                'sNext': 'LABEL_DATATABLE_SNEXT',
138
                'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
139
            },
140
            'oAria': {
141
                'sSortAscending': ': LABEL_DATATABLE_SSORTASCENDING',
142
                'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
143
            },
144
        },
145
        'drawCallback': function (settings) {
146
            NProgress.done();
147
            $('button.btn-delete').confirmation({
148
                rootSelector: 'button.btn-delete',
149
                title: 'LABEL_ARE_YOU_SURE',
150
                singleton: true,
151
                btnOkLabel: 'LABEL_YES',
152
                btnCancelLabel: 'LABEL_NO',
153
                onConfirm: function (value) {
154
                    action = $(this).data('href');
155
                    NProgress.start();
156
                    $.ajax({
157
                        'dataType': 'json',
158
                        'accept': 'application/json',
159
                        'method': 'post',
160
                        'url': action,
161
                    }).done(function (response) {
162
                        if (response['success']) {
163
                            $.fn.showSuccess(response['data']);
164
                            gridTable.api().ajax.reload(null, false);
165
                        } else {
166
                            $.fn.showError(response['data']);
167
                        }
168
                    }).fail(function (jqXHR, textStatus, errorThrown) {
169
                        $.fn.showError(textStatus);
170
                    }).always(function () {
171
                        NProgress.done();
172
                    });
173
                },
174
            });
175
 
176
            $('#form-add #file').fileinput({
177
                theme: 'fas',
178
                language: 'es',
179
                showUpload: false,
180
                dropZoneEnabled: false,
181
                maxFileCount: 1,
182
                allowedFileExtensions: ['pdf', 'docx'],
183
            });
184
 
185
            $('#form-edit #file').fileinput({
186
                theme: 'fas',
187
                language: 'es',
188
                showUpload: false,
189
                initialPreviewAsData: true,
190
                dropZoneEnabled: false,
191
                maxFileCount: 1,
192
                allowedFileExtensions: ['pdf', 'docx'],
193
            });
194
 
195
 
196
            $('body').on('click', 'button.btn-add', function (e) {
197
                e.preventDefault();
198
 
199
                $('#form-add #title').val('');
200
                $('#form-add #coment').val('');
201
                $('#form-add #file').fileinput('reset');
202
                $('#form-add #file').val('');
203
                CKEDITOR.instances.coment.setData('');
204
                validatorAdd.resetForm();
205
 
206
                $('#add-file-box').modal('show');
207
                return false;
208
            });
209
 
210
            $(".close-box, .btn-add-cancel").on("click", function (e) {
211
                e.preventDefault();
212
 
213
                $('#add-file-box').modal('hide');
214
                $('#edit-file-box').modal('hide');
215
                return false;
216
            });
217
 
218
            var validatorEdit = $('#form-edit').validate({
219
                debug: true,
220
                onclick: false,
221
                onkeyup: false,
222
                onfocusout: false,
223
                ignore: [],
224
                rules: {
225
                    'title': {
226
                        required: false,
227
                    },
228
                    'file': {
229
                        required: false,
230
                        extension: 'pdf|docx',
231
                        accept: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword,application/pdf'
232
                    },
233
                    'coment':{
234
                        updateCkeditor:function() {
235
                        CKEDITOR.instances.coment.updateElement();
236
                        },
237
                    },
238
                },
239
                submitHandler: function (form) {
240
                    var formdata = false;
241
                    if (window.FormData) {
242
                        formdata = new FormData(form); //form[0]);
243
                    }
244
 
245
                    $('input[type="submit"]').prop('disabled', true);
246
 
247
                    $.ajax({
248
                        'dataType': 'json',
249
                        'accept': 'application/json',
250
                        'method': 'post',
251
                        'url': $('#form-edit').attr('action'),
252
                        'data': formdata,
253
                        'processData': false,
254
                        'contentType': false,
255
                    }).done(function (response) {
256
                        if (response['success']) {
257
                            $.fn.showSuccess(response['data']);
258
 
259
                            $('#edit-file-box').modal('hide');
260
                            gridTable.api().ajax.reload(null, false);
261
                        } else {
262
                            validatorEdit.resetForm();
263
                            if (jQuery.type(response['data']) == 'string') {
264
                                $.fn.showError(response['data']);
265
                            } else {
266
                                $.each(response['data'], function (fieldname, errors) {
267
                                    $.fn.showFormErrorValidator('#form-edit #' + fieldname, errors);
268
                                });
269
                            }
270
                        }
271
                    }).fail(function (jqXHR, textStatus, errorThrown) {
272
                        $.fn.showError(textStatus);
273
                    }).always(function () {
274
                        NProgress.done();
275
                    });
276
                    return false;
277
                },
278
                invalidHandler: function (form, validator) {
279
 
280
                }
281
            });
282
 
283
            $('body').on('click', 'button.btn-edit', function (e) {
284
                e.preventDefault();
285
 
286
                var url = $(this).data('href');
287
                $.ajax({
288
                    'dataType': 'json',
289
                    'accept': 'application/json',
290
                    'method': 'get',
291
                    'url': url,
292
                }).done(function (response) {
293
                    if (response['success']) {
294
                        $('#form-edit')[0].reset();
295
 
296
                        $('#form-edit').attr('action', url);
297
 
298
                        $('#form-edit #title').val(response['data']['title']);
299
                        $('#form-edit #coment').val(response['data']['coment']);
300
                        $('#form-edit #btn-cv').attr('href', response['data']['file']);
301
 
302
 
303
 
304
                        $('#form-edit #file').fileinput('reset');
305
                        $('#form-edit #file').fileinput('setUploadUrl', response['data']['file'] );
306
 
307
 
308
                        $('#form-edit #status').val(response['data']['status']);
309
 
310
                        $('#edit-file-box').modal('show');
311
                    } else {
312
                        validatorEdit.resetForm();
313
                        if (jQuery.type(response['data']) == 'string') {
314
                            $.fn.showError(response['data']);
315
                        } else {
316
                            $.each(response['data'], function (fieldname, errors) {
317
                                $.fn.showFormErrorValidator('#form-edit #' + fieldname, errors);
318
                            });
319
                        }
320
                    }
321
                }).fail(function (jqXHR, textStatus, errorThrown) {
322
                    $.fn.showError(textStatus);
323
                }).always(function () {
324
                    NProgress.done();
325
                });
326
            });
327
 
328
            var validatorAdd = $('#form-add').validate({
329
                debug: true,
330
                onclick: false,
331
                onkeyup: false,
332
                onfocusout: false,
333
                ignore: [],
334
                rules: {
335
                    'title': {
336
                        required: true,
337
                        maxlength: 128,
338
                    },
339
                    'file': {
340
                        required: false,
341
                        extension: 'pdf|docx',
342
                        accept: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword,application/pdf'
343
                    },
344
                    'coment':{
345
                        updateCkeditor:function() {
346
                            CKEDITOR.instances.coment.updateElement();
347
                        },
348
                    },
349
                },
350
                submitHandler: function (form) {
351
                    var formdata = false;
352
                    if (window.FormData) {
353
                        formdata = new FormData(form); //form[0]);
354
                    }
355
 
356
                    $('input[type="submit"]').prop('disabled', true);
357
 
358
                    $.ajax({
359
                        'dataType': 'json',
360
                        'accept': 'application/json',
361
                        'method': 'post',
362
                        'url': $('#form-add').attr('action'),
363
                        'data': formdata,
364
                        'processData': false,
365
                        'contentType': false,
366
                    }).done(function (response) {
367
                        if (response['success']) {
368
                            $.fn.showSuccess(response['data']);
369
 
370
                            $('#add-file-box').modal('hide');
371
                            gridTable.api().ajax.reload(null, false);
372
                        } else {
373
                            validatorAdd.resetForm();
374
                            if (jQuery.type(response['data']) == 'string') {
375
                                $.fn.showError(response['data']);
376
                            } else {
377
                                $.each(response['data'], function (fieldname, errors) {
378
                                    $.fn.showFormErrorValidator('#form-add #' + fieldname, errors);
379
                                });
380
                            }
381
                        }
382
                    }).fail(function (jqXHR, textStatus, errorThrown) {
383
                        $.fn.showError(textStatus);
384
                    }).always(function () {
385
                        NProgress.done();
386
                    });
387
                    return false;
388
                },
389
                invalidHandler: function (form, validator) {
390
 
391
                }
392
            });
393
        },
394
        'aoColumns': [
395
            { 'mDataProp': 'title' },
396
            { 'mDataProp': 'coment' },
397
            { 'mDataProp': 'actions' },
398
        ],
399
        'columnDefs': [
400
            {
401
                'targets': -1,
402
                'orderable': false,
403
                'render': function (data, type, row) {
404
                    s = '';
405
 
406
                    if (allowEdit && data['link_edit']) {
407
                        s = s + '<button class="btn btn-info btn-sm btn-edit" data-href="' + data['link_edit'] + '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pencil"></i> LABEL_EDIT </button>&nbsp;';
408
                    }
409
 
410
                    if (allowDelete && data['link_delete']) {
411
                        s = s + '<button class="btn btn-danger btn-sm btn-delete" data-href="' + data['link_delete'] + '" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-times"></i> LABEL_DELETE </button>&nbsp;';
412
                    }
413
 
414
                    return s;
415
                }
416
            }
417
        ],
418
    });
419
 
420
 
421
    $('body').on('click', 'button.btn-refresh', function (e) {
422
        e.preventDefault();
423
        gridTable.api().ajax.reload(null, false);
424
    });
425
 
426
    CKEDITOR.replace('coment', {
427
        toolbar: [
428
                    { name: 'editing', items: ['Scayt'] },
429
                    { name: 'links', items: ['Link', 'Unlink'] },
430
                    { name: 'paragraph', items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote'] },
431
                    { name: 'basicstyles', items: ['Bold', 'Italic', 'Strike', 'RemoveFormat'] },
432
                    '/',
433
                    { name: 'insert', items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar'] },
434
                    { name: 'styles', items: ['Styles', 'Format'] },
435
                    { name: 'tools', items: ['Maximize'] }
436
                ],
437
                removePlugins: 'elementspath,Anchor',
438
                heigth: 100
439
    });
440
});
441
JS;
442
$this->inlineScript()->captureEnd();
443
?>
444
 
445
 
446
<!-- Content Header (Page header) -->
447
<section class="content-header">
448
    <div class="container-fluid">
449
        <div class="row mb-2">
450
            <div class="col-sm-12">
451
                <h1>LABEL_PSYCOPTECNICH</h1>
452
            </div>
453
        </div>
454
    </div><!-- /.container-fluid -->
455
</section>
456
 
457
<section class="content">
458
    <div class="container-fluid">
459
        <div class="row">
460
            <div class="col-12">
461
                <div class="card">
462
                    <div class="card-body">
463
                        <table id="gridTable" class="table   table-hover">
464
                            <thead>
465
                            <tr>
466
                                <th>LABEL_TITLE</th>
467
                                <th>LABEL_COMENT</th>
468
                                <th>LABEL_ACTIONS</th>
469
                            </tr>
470
                            </thead>
471
                            <tbody>
472
                            </tbody>
473
                        </table>
474
                    </div>
475
                    <div class="card-footer clearfix">
476
                        <div style="float:right;">
477
                            <button type="button" class="btn btn-info btn-refresh"><i class="fa fa-refresh"></i>
478
                                LABEL_REFRESH
479
                            </button>
480
                            <?php if ($allowAdd) : ?>
481
                                <button type="button" class="btn btn-primary btn-add"><i class="fa fa-plus"></i>
482
                                    LABEL_ADD
483
                                </button>
484
                            <?php endif; ?>
485
                        </div>
486
                    </div>
487
                </div>
488
            </div>
489
        </div>
490
    </div>
491
</section>
492
 
493
<!-- The Add Modal -->
494
<div class="modal" tabindex="-1" role="dialog" id="add-file-box">
495
    <div class="modal-dialog" role="document">
496
        <?php
497
        //$form = $this->formAdd;
498
        $form->setAttributes([
499
            'method' => 'post',
500
            'name' => 'form-add',
501
            'action' => $routeAdd,
502
            'id' => 'form-add'
503
        ]);
504
        $form->prepare();
505
        echo $this->form()->openTag($form);
506
        ?>
507
        <div class="modal-content">
508
            <div class="modal-header">
509
                <h3 class="modal-title">LABEL_NEW_EVALUATION</h3>
510
            </div>
511
            <div class="modal-body">
512
                <div class="form-group">
513
              	   <?php
514
                     $element = $form->get('title');
515
                     $element->setAttributes(['class' => 'form-control']);
516
                     $element->setOptions(['label' => 'LABEL_TITLE']);
517
                     echo $this->formLabel($element);
8820 eleazar 518
                     echo $this->formText($element);
8780 eleazar 519
                    ?>
520
      	        </div>
521
                <div class="form-group">
522
                    <?php
523
                    $element = $form->get('file');
524
                    $element->setAttributes(['class' => 'form-control', 'accept' => 'pdf/docx']);
525
                    $element->setOptions(['label' => 'LABEL_CURRICULUM']);
526
                    echo $this->formLabel($element);
527
                    ?>
528
                    <div class="file-loading">
529
                        <?php echo $this->formFile($element); ?>
530
                    </div>
531
                </div>
532
                <div class="form-group">
533
                    <?php
534
                    $element = $form->get('coment');
535
                    $element->setAttributes(['class' => 'form-control']);
536
                    $element->setOptions(['label' => 'LABEL_COMMENT']);
537
                    echo $this->formLabel($element);
538
                    echo $this->formTextArea($element);
539
                    ?>
540
                </div>
541
                <div class="modal-footer">
542
                    <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
543
                    <button type="button" class="btn btn-default btn-add-cancel">LABEL_CANCEL</button>
544
                </div>
545
            </div>
546
 
547
            <?php echo $this->form()->closeTag($form); ?>
548
        </div>
549
    </div>
550
</div>
551
 
552
<!-- The Edit Modal -->
8821 eleazar 553
<div class="modal" tabindex="-1" role="dialog" id="edit-file-box">
8780 eleazar 554
    <div class="modal-dialog" role="document">
555
        <?php
556
        $form->setAttributes([
557
            'method' => 'post',
558
            'name' => 'form-edit',
559
            'id' => 'form-edit'
560
        ]);
561
        $form->prepare();
562
        echo $this->form()->openTag($form);
563
        ?>
564
        <div class="modal-content">
565
            <div class="modal-header">
566
                <h3 class="modal-title">LABEL_NEW_EVALUATION</h3>
567
            </div>
568
            <div class="modal-body">
569
                <div class="form-group">
570
              	   <?php
571
                     $element = $form->get('title');
572
                     $element->setAttributes(['class' => 'form-control']);
573
                     $element->setOptions(['label' => 'LABEL_TITLE']);
574
                     echo $this->formLabel($element);
8820 eleazar 575
                     echo $this->formText($element);
8780 eleazar 576
                    ?>
577
      	        </div>
578
                <div class="form-group">
579
                    <?php
580
                    $element = $form->get('file');
581
                    $element->setAttributes(['class' => 'form-control', 'accept' => 'pdf/docx']);
582
                    $element->setOptions(['label' => 'LABEL_CURRICULUM']);
583
                    echo $this->formLabel($element);
584
                    ?>
585
                    <div class="file-loading">
586
                        <?php echo $this->formFile($element); ?>
587
                    </div>
588
                </div>
589
                <div class="form-group">
590
                    <?php
591
                    $element = $form->get('coment');
592
                    $element->setAttributes(['class' => 'form-control']);
593
                    $element->setOptions(['label' => 'LABEL_COMMENT']);
594
                    echo $this->formLabel($element);
595
                    echo $this->formTextArea($element);
596
                    ?>
597
                </div>
598
                <div class="modal-footer">
599
                    <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
600
                    <button type="button" class="btn btn-default btn-add-cancel">LABEL_CANCEL</button>
601
                </div>
602
            </div>
603
            <?php echo $this->form()->closeTag($form); ?>
604
        </div>
605
    </div>
606
</div>