Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
use LeadersLinked\Model\CompanyMicrolearningUserLog;
3
 
4
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
5
$currentUser    = $this->currentUserHelper();
6
$roleName       = $currentUser->getUserTypeId();
7
 
8
$routeDatatable = $this->url('microlearning/students');
9
 
10
$allowEdit = $acl->isAllowed($roleName, 'microlearning/students/edit') ? 1 : 0;
11
$allowTimeline = $acl->isAllowed($roleName, 'microlearning/students/timeline') ? 1 : 0;
12
$allowChangePassword    = $acl->isAllowed($roleName, 'microlearning/students/change-password') ? 1 : 0;
13
$allowUnblock           = $acl->isAllowed($roleName, 'microlearning/students/unblock') ? 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
 
19
$this->inlineScript()->appendFile($this->basePath('plugins/bootbox/bootbox.min.js'));
20
 
21
 
22
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
23
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
24
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
25
 
26
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css'));
27
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-responsive/css/responsive.bootstrap4.min.css'));
28
 
29
$this->inlineScript()->appendFile($this->basePath('plugins/datatables/jquery.dataTables.min.js'));
30
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js'));
31
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/dataTables.responsive.min.js'));
32
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/responsive.bootstrap4.min.js'));
33
 
34
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-confirmation/dist/bootstrap-confirmation.js'));
35
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-checkbox/awesome-bootstrap-checkbox.css'));
36
 
37
 
38
 
39
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
40
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
41
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
42
 
43
$activityApprovedTest = CompanyMicrolearningUserLog::ACTIVITY_APPROVED_TEST;
44
$activityCompletedCapsule = CompanyMicrolearningUserLog::ACTIVITY_COMPLETED_CAPSULE;
45
$activityCompletedTopic = CompanyMicrolearningUserLog::ACTIVITY_COMPLETED_TOPIC;
46
$activityRetakeATest = CompanyMicrolearningUserLog::ACTIVITY_RETAKE_A_TEST;
47
$activitySignin = CompanyMicrolearningUserLog::ACTIVITY_SIGNIN;
48
$activitySignout = CompanyMicrolearningUserLog::ACTIVITY_SIGNOUT;
49
$activityStartCapsule = CompanyMicrolearningUserLog::ACTIVITY_START_CAPSULE;
50
$activityStartTopic = CompanyMicrolearningUserLog::ACTIVITY_START_TOPIC;
51
$activityTakeATest = CompanyMicrolearningUserLog::ACTIVITY_TAKE_A_TEST;
52
$activityViewSlide = CompanyMicrolearningUserLog::ACTIVITY_VIEW_SLIDE;
53
 
16798 efrain 54
$this->headStyle()->captureStart();
55
echo <<<CSS
56
thead, tbody { display: block; }
1 www 57
 
16798 efrain 58
tbody {
59
    height: 200px;       /* Just for the demo          */
60
    overflow-y: auto;    /* Trigger vertical scroll    */
61
    overflow-x: hidden;  /* Hide the horizontal scroll */
62
}
1 www 63
 
16798 efrain 64
CSS;
65
$this->headStyle()->captureEnd();
66
 
67
 
1 www 68
$this->inlineScript()->captureStart();
69
echo <<<JS
70
 
71
 
72
jQuery( document ).ready(function( $ ) {
73
 
74
        var routeUpload = '';
75
        var routeNotification = '';
76
 
77
        $.validator.addMethod('passwordStrengthCheck', function(value) {
78
            return /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$^x%x*-]).{6,16}$/.test(value)
79
        }, 'ERROR_PASSWORD_STRENGTH');
80
 
81
 
82
        $.validator.setDefaults({
83
            debug: true,
84
            highlight: function(element) {
85
                $(element).addClass('is-invalid');
86
            },
87
            unhighlight: function(element) {
88
                $(element).removeClass('is-invalid');
89
            },
90
            errorElement: 'span',
91
            errorClass: 'error invalid-feedback',
92
            errorPlacement: function(error, element) {
93
                if(element.parent('.btn-file').length) {
94
                    error.insertAfter(element.parent().parent());
95
                } else if(element.parent('.toggle').length) {
96
                    error.insertAfter(element.parent().parent());
97
                } else {
98
                    error.insertAfter(element.parent());
99
                }
100
            }
101
        });
102
 
103
 
104
        $.fn.showFormErrorValidator = function(fieldname, errors) {
105
            var field = $(fieldname);
106
            if(field) {
107
                $(field).addClass('is-invalid');
108
 
109
 
110
                var error = $('<span id="' + fieldname +'-error" class="error invalid-feedback">' + errors + '</div>');
111
                if(element.parent('.btn-file').length) {
112
                    error.insertAfter(element.parent().parent());
113
                } else if(element.parent('.toggle').length) {
114
                    error.insertAfter(element.parent().parent());
115
                } else {
116
                    error.insertAfter(element.parent());
117
                }
118
            }
119
        };
120
 
121
        var allowEdit       = $allowEdit;
122
        var allowTimeline   = $allowTimeline;
123
        var allowChangePassword = $allowChangePassword;
124
        var allowUnblock = $allowUnblock;
125
 
126
 
127
        var gridTable = $('#gridTable').dataTable( {
128
            'processing': true,
129
            'serverSide': true,
130
            'searching': true,
131
            'order': [[ 0, 'asc' ]],
132
            'ordering':  true,
133
            'ordenable' : true,
134
            'responsive': true,
135
            'select' : false,
136
        	'paging': true,
137
            'pagingType': 'simple_numbers',
138
 
139
 
140
    		'ajax': {
141
    			'url' : '$routeDatatable',
142
    			'type' : 'get',
143
 
144
                'beforeSend': function (request) {
145
                  NProgress.start();
146
                },
147
                'dataFilter': function(response) {
148
                    var response = jQuery.parseJSON( response );
149
 
150
                    var json                = {};
151
                    json.recordsTotal       = 0;
152
                    json.recordsFiltered    = 0;
153
                    json.data               = [];
154
 
155
                    if(response.success) {
156
 
157
 
158
                        json.recordsTotal       = response.data.total;
159
                        json.recordsFiltered    = response.data.total;
160
                        json.data               = response.data.items;
161
                    } else {
162
                        $.fn.showError(response.data)
163
                    }
164
 
165
                    return JSON.stringify( json );
166
                }
167
    		},
168
            'language' : {
169
                'sProcessing':     'LABEL_DATATABLE_SPROCESSING',
170
                'sLengthMenu':     'LABEL_DATATABLE_SLENGTHMENU',
171
                'sZeroRecords':    'LABEL_DATATABLE_SZERORECORDS',
172
                'sEmptyTable':     'LABEL_DATATABLE_SEMPTYTABLE',
173
                'sInfo':           'LABEL_DATATABLE_SINFO',
174
                'sInfoEmpty':      'LABEL_DATATABLE_SINFOEMPTY',
175
                'sInfoFiltered':   'LABEL_DATATABLE_SINFOFILTERED',
176
                'sInfoPostFix':    '',
177
                'sSearch':         'LABEL_DATATABLE_SSEARCH',
178
                'sUrl':            '',
179
                'sInfoThousands':  ',',
180
                'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
181
                'oPaginate': {
182
                    'sFirst':    'LABEL_DATATABLE_SFIRST',
183
                    'sLast':     'LABEL_DATATABLE_SLAST',
184
                    'sNext':     'LABEL_DATATABLE_SNEXT',
185
                    'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
186
                },
187
                'oAria': {
188
                    'sSortAscending':  ': LABEL_DATATABLE_SSORTASCENDING',
189
                    'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
190
                },
191
            },
192
            'drawCallback': function( settings ) {
193
                NProgress.done();
194
                $('button.btn-unblock').confirmation({
195
                    rootSelector: 'button.btn-unblock',
196
                    title : 'LABEL_ARE_YOU_SURE',
197
                    singleton : true,
198
                    btnOkLabel: 'LABEL_YES',
199
                    btnCancelLabel: 'LABEL_NO',
200
                    onConfirm: function(value) {
201
                        action = $(this).data('href');
202
                        NProgress.start();
203
                        $.ajax({
204
                            'dataType'  : 'json',
205
                            'accept'    : 'application/json',
206
                            'method'    : 'post',
207
                            'url'       :  action,
208
                        }).done(function(response) {
209
                            if(response['success']) {
210
                                $.fn.showSuccess(response['data']);
211
                                gridTable.api().ajax.reload(null, false);
212
                            } else {
213
                                $.fn.showError(response['data']);
214
                            }
215
                        }).fail(function( jqXHR, textStatus, errorThrown) {
216
                            $.fn.showError(textStatus);
217
                        }).always(function() {
218
                            NProgress.done();
219
                        });
220
                    },
221
                });
222
            },
223
            'aoColumns': [
224
                { 'mDataProp': 'first_name' },
225
                { 'mDataProp': 'last_name' },
226
                { 'mDataProp': 'email' },
227
                { 'mDataProp': 'details' },
228
                { 'mDataProp': 'actions' },
229
    	    ],
230
            'columnDefs': [
231
                {
232
                    'targets': -2,
233
                    'orderable': false,
234
                    'render' : function ( data, type, row ) {
235
                        s = '';
236
                        s = s + 'LABEL_TOTAL_ASIGNED : ' + data['total_asigned'] + '<br>';
237
                        s = s + 'LABEL_TOTAL_WITHOUT_STARTING : ' + data['total_without_starting'] + '<br>';
238
                        s = s + 'LABEL_TOTAL_STARTED : ' + data['total_started'] + '<br>';
239
                        s = s + 'LABEL_TOTAL_COMPLETED : ' + data['total_completed'] + '<br>';
240
 
241
                        return s;
242
                    }
243
                },
244
 
245
 
246
                {
247
                    'targets': -1,
248
                    'orderable': false,
249
                    'render' : function ( data, type, row ) {
250
                        s = '';
251
 
252
                        if(allowEdit && data['link_edit']  ) {
253
                            s = s + '<button class="btn btn-primary 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>';
254
                        }
255
                        if(allowTimeline && data['link_timeline']  ) {
256
                            s = s + '<button class="btn btn-info btn-sm btn-timeline" style="margin-top: 5px" data-href="' + data['link_timeline']+ '" data-toggle="tooltip" title="LABEL_TIMELINE"><i class="fa fa-th-list"></i> LABEL_ACTIVITIES</button><br>';
257
                        }
258
                        if(allowChangePassword && data['link_change_password']) {
259
                            s = s + '<button class="btn btn-success btn-sm btn-change-password" style="margin-top: 5px" data-href="' + data['link_change_password']+ '" data-toggle="tooltip" title="LABEL_CHANGE_PASSWORD"><i class="fa fa-key"></i> LABEL_PASSWORD </button><br>';
260
                        }
261
                        if(allowUnblock && data['link_unblock']) {
262
                            s = s + '<button class="btn btn-info btn-sm  btn-unblock" style="margin-top: 5px" data-href="' + data['link_unblock']+ '" data-toggle="tooltip" title="LABEL_UNBLOCK"><i class="fa fa-unlock"></i> LABEL_UNBLOCK </button><br>';
263
                        }
264
 
265
 
266
 
267
                        return s;
268
                    }
269
                }
270
              ],
271
        });
272
 
273
    var validatorEdit  = $('#form-extend-user').validate({
274
        debug: true,
275
        onclick: false,
276
        onkeyup: false,
277
        ignore: [],
278
        rules: {
279
            'company_id': {
280
                required: false,
281
            },
282
            'function_id': {
283
                required: false,
284
            },
285
            'group_id': {
286
                required: false,
287
            },
288
            'institution_id': {
289
                required: false,
290
            },
291
            'program_id': {
292
                required: false,
293
            },
294
            'partner_id': {
295
                required: false,
296
            },
297
            'sector_id': {
298
                required: false,
299
            },
300
            'student_type_id': {
301
                required: false,
302
            },
303
        },
304
        submitHandler: function(form)
305
        {
306
 
307
            $('input[type="submit"]').prop('disabled', true);
308
 
309
            $.ajax({
310
                'dataType'  : 'json',
311
                'accept'    : 'application/json',
312
                'method'    : 'post',
313
                'url'       :  $('#form-extend-user').attr('action'),
314
                'data'      :  $('#form-extend-user').serialize(),
315
            }).done(function(response) {
316
                if(response['success']) {
317
                    $.fn.showSuccess(response['data']);
318
 
319
 
320
                    $('#modalExtendUser').modal('hide');
321
                    gridTable.api().ajax.reload(null, false);
322
                } else {
323
                    validatorEdit.resetForm();
324
                    if(jQuery.type(response['data']) == 'string') {
325
                        $.fn.showError(response['data']);
326
                    } else  {
327
                        $.each(response['data'], function( fieldname, errors ) {
328
                            $.fn.showFormErrorValidator('#form-extend-user #' + fieldname, errors);
329
                        });
330
                    }
331
                }
332
            }).fail(function( jqXHR, textStatus, errorThrown) {
333
                $.fn.showError(textStatus);
334
            }).always(function() {
335
                NProgress.done();
336
            });
337
            return false;
338
        },
339
        invalidHandler: function(form, validator) {
340
 
341
        }
342
    });
343
 
344
 
345
        $('body').on('click', 'button.btn-edit', function(e) {
346
            e.preventDefault();
347
 
348
            var url = $(this).data('href');
349
            $.ajax({
350
                'dataType'  : 'json',
351
                'accept'    : 'application/json',
352
                'method'    : 'get',
353
                'url'       :  url,
354
            }).done(function(response) {
355
                if(response['success']) {
356
                    $('#form-extend-user').attr('action',url);
357
                    $('#form-extend-user #first_name').val(response['data']['first_name']);
358
                    $('#form-extend-user #last_name').val(response['data']['last_name']);
359
                    $('#form-extend-user #email').val(response['data']['email']);
360
                    $('#form-extend-user #company_id').val(response['data']['company_id']);
361
                    $('#form-extend-user #function_id').val(response['data']['function_id']);
362
                    $('#form-extend-user #group_id').val(response['data']['group_id']);
363
                    $('#form-extend-user #institution_id').val(response['data']['institution_id']);
364
                    $('#form-extend-user #program_id').val(response['data']['program_id']);
365
                    $('#form-extend-user #partner_id').val(response['data']['partner_id']);
366
                    $('#form-extend-user #sector_id').val(response['data']['sector_id']);
367
                    $('#form-extend-user #student_type_id').val(response['data']['student_type_id']);
368
 
369
 
370
 
371
                    $('#modalExtendUser').modal('show');
372
                } else {
373
                    validatorEdit.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-extend-user #' + fieldname, errors);
379
                        });
380
                    }
381
                }
382
            }).fail(function( jqXHR, textStatus, errorThrown) {
383
                $.fn.showError(textStatus);
384
            }).always(function() {
385
                NProgress.done();
386
            });
387
        });
388
 
389
        $('body').on('click', 'button.btn-timeline', function(e) {
390
            e.preventDefault();
391
 
392
            var url = $(this).data('href');
393
            $.ajax({
394
                'dataType'  : 'json',
395
                'accept'    : 'application/json',
396
                'method'    : 'get',
397
                'url'       :  url,
398
            }).done(function(response) {
399
                if(response['success']) {
400
 
401
                    $('div.timeline').empty();
402
 
403
                    $.fn.renderTimeLine(response['data']);
404
 
405
                    $('#modalTimeline').modal('show');
406
                } else {
407
                    $.fn.showError(response['data']);
408
                }
409
            }).fail(function( jqXHR, textStatus, errorThrown) {
410
                $.fn.showError(textStatus);
411
            }).always(function() {
412
                NProgress.done();
413
            });
414
        });
415
 
416
 
417
        $('body').on('click', 'button.btn-cancel', function(e) {
418
            e.preventDefault();
419
            $('#modalExtendUser').modal('hide');
420
            $('#modalTimeline').modal('hide');
421
            $('#modalChangePassword').modal('hide');
422
        });
423
 
424
 
425
 
426
 
427
        $('body').on('click', 'button.btn-refresh', function(e) {
428
            e.preventDefault();
429
            gridTable.api().ajax.reload(null, false);
430
        });
431
 
432
        $.fn.renderTimeLine = function(data) {
433
 
434
            $.each(data['current']['items'],function(index, record) {
435
 
436
                switch(record['activity'])
437
                {
438
                    case '$activityApprovedTest' :
439
                        activity = 'LABEL_TIMELINE_ACTIVITY_APPROVED_TEST';
440
                        image = '/img/microlearning/approved-test.svg';
441
                        break;
442
 
443
                    case '$activityCompletedCapsule' :
444
                        activity = 'LABEL_TIMELINE_ACTIVITY_COMPLETED_CAPSULE';
445
                        image = '/img/microlearning/completed-capsule.svg';
446
                        break;
447
 
448
                    case '$activityCompletedTopic' :
449
                        activity = 'LABEL_TIMELINE_ACTIVITY_COMPLETED_TOPIC';
450
                        image = '/img/microlearning/completed-topic.svg';
451
                        break;
452
 
453
                    case '$activityRetakeATest' :
454
                        activity = 'LABEL_TIMELINE_ACTIVITY_RETAKE_A_TEST';
455
                        image = '/img/microlearning/retake-a-test.svg';
456
                        break;
457
 
458
                    case '$activitySignin' :
459
                        activity = 'LABEL_TIMELINE_ACTIVITY_SIGNIN';
460
                        image = '/img/microlearning/sign-in.svg';
461
                        break;
462
 
463
                    case '$activitySignout' :
464
                        activity = 'LABEL_TIMELINE_ACTIVITY_SIGNOUT';
465
                        image = '/img/microlearning/sign-out.svg';
466
                        break;
467
 
468
                    case '$activityStartCapsule' :
469
                        activity = 'LABEL_TIMELINE_ACTIVITY_START_CAPSULE';
470
                        image = '/img/microlearning/start-capsule.svg';
471
                        break;
472
 
473
                    case '$activityStartTopic' :
474
                        activity = 'LABEL_TIMELINE_ACTIVITY_START_TOPIC';
475
                        image = '/img/microlearning/start-topic.svg';
476
                        break;
477
 
478
                    case '$activityTakeATest' :
479
                        activity = 'LABEL_TIMELINE_ACTIVITY_TAKE_A_TEST';
480
                        image = '/img/microlearning/take-a-test.svg';
481
                        break;
482
 
483
                    case '$activityViewSlide' :
484
                        activity = 'LABEL_TIMELINE_ACTIVITY_VIEW_SLIDE';
485
                        image = '/img/microlearning/view-slide.svg';
486
                        break;
487
 
488
                    default :
489
                        activity = '';
490
                        break;
491
                }
492
 
493
                if(activity) {
494
 
495
 
496
                    var s = '<div>';
497
                    s = s + '<img src="' + image + '" style="width: 32px; height: auto" />';
498
                    s = s + '<div class="timeline-item">';
499
                    s = s + '<span class="time"><i class="fas fa-clock"></i> ' + record['added_on'] +'</span>';
500
                    s = s + '<h3 class="timeline-header">' + activity + '</h3>';
501
 
502
                    if(record['topic'] || record['capsule'] || record['slide']) {
503
                        s = s + '<div class="timeline-body">';
504
 
505
                        if(record['topic']) {
506
                            s = s + 'LABEL_TOPIC : ' + record['topic'] + '<br>';
507
                        }
508
                        if(record['capsule']) {
509
                            s = s + ' LABEL_CAPSULE : ' + record['capsule'] + '<br>';
510
                        }
511
                        if(record['slide']) {
512
                            s = s + ' LABEL_SLIDE : ' + record['slide'] + '<br>';
513
                        }
514
                        s = s + '</div>';
515
                    }
516
 
517
                    s = s + '</div>';
518
                    s = s + '</div>';
519
 
520
                    $('div.timeline').append(s);
521
                }
522
 
523
            });
524
        }
525
 
526
 
527
 var validatorChangePassword = $('#form-change-password').validate({
528
        debug: true,
529
        onclick: false,
530
        onkeyup: false,
531
        ignore: [':hidden'],
532
            rules: {
533
 
534
                'password': {
535
                    required: true,
536
                    minlength: 6,
537
                    maxlength: 16,
538
                    passwordStrengthCheck: true,
539
                },
540
                'confirmation' : {
541
                    required: true,
542
                    minlength: 6,
543
                    maxlength: 16,
544
                    equalTo: '#form-change-password #password'
545
                },
546
            },
547
            submitHandler: function(form)
548
            {
549
                NProgress.start();
550
                $.ajax({
551
                    'dataType'  : 'json',
552
                    'accept'    : 'application/json',
553
                    'method'    : 'post',
554
                    'url'       : $('#form-change-password').attr('action'),
555
                    'data'      : $('#form-change-password').serialize()
556
                 }).done(function(response) {
557
                    if(response.success) {
558
                        $.fn.showSuccess(response.data);
559
 
560
                        $('#modalChangePassword').modal('hide');
561
                         gridTable.api().ajax.reload(null, false);
562
                    } else {
563
                        if(jQuery.type(response.data) == 'string') {
564
                            $.fn.showError(response.data)
565
                        } else  {
566
                            $.each(response.data, function( fieldname, errors ) {
567
                                $.fn.showFormErrorValidator('#form-change-password #' + fieldname, errors);
568
                            });
569
                        }
570
                    }
571
                }).fail(function( jqXHR, textStatus, errorThrown) {
572
                    $.fn.showError(textStatus)
573
 
574
                }).always(function() {
575
                    NProgress.done();
576
                })
577
            },
578
            invalidHandler: function(form, validator) {
579
            }
580
        });
581
 
582
        $('body').on('click', 'button.btn-change-password', function(e) {
583
            e.preventDefault();
584
 
585
            NProgress.start();
586
            var action = $(this).data('href');
587
 
588
            $.ajax({
589
                'dataType'  : 'json',
590
                'accept'    : 'application/json',
591
                'method'    : 'get',
592
                'url'       :  action,
593
            }).done(function(response) {
594
                if(response['success']) {
595
 
596
                    $('#form-change-password').attr('action', action);
597
                    $('#form-change-password #first_name').val(response['data']['first_name']);
598
                    $('#form-change-password #last_name').val(response['data']['last_name']);
599
                    $('#form-change-password #email').val(response['data']['email']);
600
                    $('#form-change-password #password').val('');
601
                    $('#form-change-password #confirmation').val('');
602
                    validatorChangePassword.resetForm();
603
 
604
                    $('#modalChangePassword').modal('show');
605
                } else {
606
                    $.fn.showError(response['data']);
607
                }
608
            }).fail(function( jqXHR, textStatus, errorThrown) {
609
                $.fn.showError(textStatus);
610
            }).always(function() {
611
                NProgress.done();
612
            });
613
 
614
        });
615
 
616
 
617
 
618
    });
619
JS;
620
$this->inlineScript()->captureEnd();
621
?>
622
 
623
 
624
<!-- Content Header (Page header) -->
625
<section class="content-header">
626
	<div class="container-fluid">
627
    	<div class="row mb-2">
628
        	<div class="col-sm-12">
629
            	<h1>LABEL_STUDENTS</h1>
630
			</div>
631
		</div>
632
	</div><!-- /.container-fluid -->
633
</section>
634
 
635
<section class="content">
636
	<div class="container-fluid">
637
    	<div class="row">
638
        	<div class="col-12">
639
				<div class="card">
640
					<div class="card-header">
641
					</div>
642
					<div class="card-body">
20 steven 643
        	    		<table id="gridTable" class="table   table-hover">
1 www 644
                      		<thead>
645
        						<tr>
646
                                	<th>LABEL_FIRST_NAME</th>
647
                                	<th>LABEL_LAST_NAME</th>
648
                                	<th>LABEL_EMAIL</th>
649
                                  	<th>LABEL_CAPSULES</th>
650
                                  	<th>LABEL_ACTIONS</th>
651
                                </tr>
652
                       		</thead>
653
                         	<tbody>
654
                         	</tbody>
655
                    	</table>
656
                   	</div>
657
                   	<div class="card-footer clearfix">
658
                 	</div>
659
          		</div>
660
           	</div>
661
        </div>
662
 	</div>
663
</section>
664
 
665
 
666
<!-- The Modal -->
667
<div class="modal" id="modalExtendUser">
668
	<div class="modal-dialog  modal-xl">
669
    	<div class="modal-content">
670
 
671
            <!-- Modal Header -->
672
      		<div class="modal-header">
673
        		<h4 class="modal-title">LABEL_EDIT</h4>
674
        		<button type="button" class="close" data-dismiss="modal">&times;</button>
675
      		</div>
676
 
677
            <!-- Modal body -->
678
      		<div class="modal-body">
679
       			 <?php
680
                    $form = $this->formExtendUser;
681
            		$form->setAttributes([
682
                        'method'    => 'post',
683
                        'name'      => 'form-extend-user',
684
                        'id'        => 'form-extend-user'
685
                    ]);
686
 
687
                    $form->prepare();
688
                    echo $this->form()->openTag($form);
689
 
690
                    ?>
691
 
692
                   	<div class="form-group">
693
      					<label>LABEL_FIRST_NAME</label>
694
      					<input type="text" readonly="readonly" name="first_name" id="first_name" class="form-control" >
695
      				</div>
696
      				<div class="form-group">
697
      					<label>LABEL_LAST_NAME</label>
698
      					<input type="text" readonly="readonly" name="last_name" id="last_name" class="form-control" >
699
      				</div>
700
      				<div class="form-group">
701
      					<label>LABEL_EMAIL</label>
702
      					<input type="text" readonly="readonly" name="email" id="email" class="form-control" >
703
      				</div>
704
 
705
                    <?php
706
                    $fields = [
707
                        [
708
                            'label' => 'LABEL_COMPANIES',
709
                            'name' => 'company_id',
710
                        ],
711
                        [
712
                            'label' => 'LABEL_FUNCTIONS',
713
                            'name' => 'function_id',
714
                        ],
715
                        [
716
                            'label' => 'LABEL_GROUPS',
717
                            'name' => 'group_id',
718
                        ],
719
                        [
720
                            'label' => 'LABEL_INSTITUTIONS',
721
                            'name' => 'institution_id',
722
                        ],
723
                        [
724
                            'label' => 'LABEL_PROGRAMS',
725
                            'name' => 'program_id',
726
                        ],
727
                        [
728
                            'label' => 'LABEL_PARTNERS',
729
                            'name' => 'partner_id',
730
                        ],
731
                        [
732
                            'label' => 'LABEL_SECTORS',
733
                            'name' => 'sector_id',
734
                        ],
735
                        [
736
                            'label' => 'LABEL_STUDENT_TYPES',
737
                            'name' => 'student_type_id',
738
                        ],
739
                    ];
740
 
741
                    $column = 0;
742
                    foreach($fields as $field) :
743
                        if($column == 0) {
744
                            echo '<div class="row">';
745
 
746
                        }
747
                        $column++;
748
 
749
                    ?>
750
 
751
 
752
                             <div class="col-md-6 col-sm-12">
753
    					<div class="form-group">
754
        					<?php
755
                            $element = $form->get( $field['name'] );
756
                            $element->setOptions(['label' => $field['label'] ]);
757
                            $element->setAttributes(['class' => 'form-control']);
758
 
759
                            echo $this->formLabel($element);
760
                            echo $this->formSelect($element);
761
                            ?>
762
						</div>
763
						</div>
764
						<?php
765
						if($column == 2) {
766
						    $column = 0;
767
						    echo '</div>';
768
						}
769
						?>
770
					<?php endforeach; ?>
771
						<?php if($column) {
772
						    echo '</div>';
773
						}
774
						?>
775
 
776
 
777
        				<div class="form-group">
778
                    		<button type="submit" class="btn btn-primary">LABEL_SAVE</button>
779
                    		<button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
780
                   		</div>
781
     	      		<?php echo $this->form()->closeTag($form); ?>
782
      		</div>
783
 
784
            <!-- Modal footer -->
785
      		<div class="modal-footer">
786
        		<button type="button" class="btn btn-danger" data-dismiss="modal">Cerrar</button>
787
      		</div>
788
 
789
    	</div>
790
	</div>
791
</div>
792
 
793
<!-- The Modal -->
794
<div class="modal" id="modalTimeline">
795
	<div class="modal-dialog  modal-xl">
796
    	<div class="modal-content">
797
 
798
            <!-- Modal Header -->
799
      		<div class="modal-header">
800
        		<h4 class="modal-title">LABEL_TIMELINE</h4>
801
        		<button type="button" class="close" data-dismiss="modal">&times;</button>
802
      		</div>
803
 
804
            <!-- Modal body -->
805
      		<div class="modal-body">
806
       			<div class="row">
807
                  	<div class="col-md-12">
808
                   		<div class="timeline">
809
                   		</div>
810
                   	</div>
811
               	</div>
812
      		</div>
813
 
814
            <!-- Modal footer -->
815
      		<div class="modal-footer">
816
        		<button type="button" class="btn btn-danger" data-dismiss="modal">Cerrar</button>
817
      		</div>
818
 
819
    	</div>
820
	</div>
821
</div>
822
 
823
<!-- The Modal -->
824
<div class="modal" id="modalChangePassword">
825
	<div class="modal-dialog">
826
    	<div class="modal-content">
827
 
828
            <!-- Modal Header -->
829
      		<div class="modal-header">
830
        		<h4 class="modal-title">LABEL_USERS</h4>
831
        		<button type="button" class="close" data-dismiss="modal">&times;</button>
832
      		</div>
833
 
834
            <!-- Modal body -->
835
      		<div class="modal-body">
836
       			 <?php
837
                    $form = $this->formChangePassword;
838
            		$form->setAttributes([
839
                        'method'    => 'post',
840
                        'name'      => 'form-change-password',
841
                        'id'        => 'form-change-password'
842
                    ]);
843
 
844
                    $form->prepare();
845
                    echo $this->form()->openTag($form);
846
                    ?>
847
                        <div class="form-group">
848
        					<?php
849
                            $element = $form->get('first_name');
850
                            $element->setOptions(['label' => 'LABEL_FIRST_NAME']);
851
                            $element->setAttributes(['class' => 'form-control', 'readonly' => 'readonly']);
852
 
853
                            echo $this->formLabel($element);
854
                            echo $this->formText($element);
855
                            ?>
856
						</div>
857
						<div class="form-group">
858
        					<?php
859
                            $element = $form->get('last_name');
860
                            $element->setOptions(['label' => 'LABEL_LAST_NAME']);
861
                            $element->setAttributes(['class' => 'form-control', 'readonly' => 'readonly']);
862
 
863
                            echo $this->formLabel($element);
864
                            echo $this->formText($element);
865
                            ?>
866
						</div>
867
						<div class="form-group">
868
        					<?php
869
                            $element = $form->get('email');
870
                            $element->setOptions(['label' => 'LABEL_EMAIL']);
871
                            $element->setAttributes(['class' => 'form-control', 'readonly' => 'readonly']);
872
 
873
                            echo $this->formLabel($element);
874
                            echo $this->formText($element);
875
                            ?>
876
						</div>
877
    					<div class="form-group">
878
        					<?php
879
                            $element = $form->get('password');
880
                            $element->setOptions(['label' => 'LABEL_PASSWORD']);
881
                            $element->setAttributes(['class' => 'form-control']);
882
 
883
                            echo $this->formLabel($element);
884
                            echo $this->formPassword($element);
885
                            ?>
886
						</div>
887
						<div class="form-group">
888
                    	<?php
889
                            $element = $form->get('confirmation');
890
                            $element->setOptions(['label' => 'LABEL_CONFIRMATION']);
891
                            $element->setAttributes(['class' => 'form-control']);
892
 
893
                            echo $this->formLabel($element);
894
                            echo $this->formPassword($element);
895
                        ?>
896
						</div>
897
 
898
 
899
        				<div class="form-group">
900
                    		<button type="submit" class="btn btn-primary">LABEL_SAVE</button>
901
                    		<button type="button" class="btn btn-light btn-cancel-modal">LABEL_CANCEL</button>
902
                   		</div>
903
     	      		<?php echo $this->form()->closeTag($form); ?>
904
      		</div>
905
 
906
            <!-- Modal footer -->
907
      		<div class="modal-footer">
908
        		<button type="button" class="btn btn-danger" data-dismiss="modal">Cerrar</button>
909
      		</div>
910
 
911
    	</div>
912
	</div>
913
</div>
914
 
915