Proyectos de Subversion LeadersLinked - Backend

Rev

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