Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
15139 stevensc 1
<?php
1 www 2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser    = $this->currentUserHelper();
4
 
5
$roleName = $currentUser->getUserTypeId();
6
$routeDatatable = $this->url('microlearning/content/capsules');
7
 
8
$allowAdd       = $acl->isAllowed($roleName, 'microlearning/content/capsules/add') ? 1 : 0;
9
$allowEdit      = $acl->isAllowed($roleName, 'microlearning/content/capsules/edit') ? 1 : 0;
10
$allowDelete    = $acl->isAllowed($roleName, 'microlearning/content/capsules/delete') ? 1 : 0;
17237 stevensc 11
$allowUsers     = $acl->isAllowed($roleName, 'microlearning/content/capsules/users') ? 1 : 0;
1 www 12
 
17178 stevensc 13
// NProgress
16822 efrain 14
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/nprogress/nprogress.css'));
15
$this->inlineScript()->appendFile($this->basePath('assets/vendors/nprogress/nprogress.js'));
1 www 16
 
17178 stevensc 17
// CKEditor
16822 efrain 18
$this->inlineScript()->appendFile($this->basePath('assets/vendors/ckeditor/ckeditor.js'));
1 www 19
 
20
 
17178 stevensc 21
// File Input
16822 efrain 22
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap-fileinput/css/fileinput.min.css'));
23
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap-fileinput/themes/explorer-fas/theme.css'));
16843 efrain 24
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/plugins/piexif.js'));
25
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/plugins/sortable.js'));
16822 efrain 26
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/fileinput.js'));
27
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/locales/es.js'));
28
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/themes/fas/theme.js'));
29
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/themes/explorer-fas/theme.js'));
1 www 30
 
17178 stevensc 31
// Datatables
16822 efrain 32
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.css'));
33
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.css'));
1 www 34
 
17178 stevensc 35
// Datatables
16822 efrain 36
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net/jquery.dataTables.js'));
37
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.js'));
38
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/dataTables.responsive.min.js'));
39
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.min.js'));
1 www 40
 
17237 stevensc 41
// Toggle
42
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
43
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
44
 
45
// Input Number Format
46
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-input-number/input-number-format.jquery.js'));
47
 
48
$this->headStyle()->captureStart();
49
echo <<<CSS
50
    #gridTableUsers {
51
        display: flex;
52
        flex-flow: column;
53
        width: 100%;
54
    }
55
    #gridTableUsers thead {
56
        flex: 0 0 auto;
57
    }
58
    #gridTableUsers tbody {
59
        flex: 1 1 auto;
60
        display: block;
61
        overflow-y: auto;
62
        overflow-x: hidden;
63
    }
64
    #gridTableUsers tr {
65
        width: 100%;
66
        display: table;
67
        table-layout: fixed;
68
    }
69
    .imagen-contaner{
70
        border:1px solid rgb(200,200,200);
71
        border-radius:5px;
72
        padding:10px;
73
        display:flex;
74
        flex-flow:column;
75
        align-items:center;
76
    }
77
CSS;
78
$this->headStyle()->captureEnd();
79
 
1 www 80
$this->headLink()->captureStart();
81
 
82
$this->inlineScript()->captureStart();
83
echo <<<JS
17178 stevensc 84
    jQuery(document).ready(function ($) {
17062 stevensc 85
        // Configuración de validación de formularios
1 www 86
        $.validator.setDefaults({
87
            debug: true,
17178 stevensc 88
            highlight: function (element) {
89
            $(element).addClass('is-invalid')
1 www 90
            },
17178 stevensc 91
            unhighlight: function (element) {
92
            $(element).removeClass('is-invalid')
1 www 93
            },
94
            errorElement: 'span',
95
            errorClass: 'error invalid-feedback',
17178 stevensc 96
            errorPlacement: function (error, element) {
97
            if (element.parent('.btn-file').length) {
98
                error.insertAfter(element.parent().parent())
99
            } else if (element.parent('.toggle').length) {
100
                error.insertAfter(element.parent().parent())
101
            } else {
102
                error.insertAfter(element.parent())
1 www 103
            }
17178 stevensc 104
            }
105
        })
106
 
17062 stevensc 107
        // Variables de permisos
17178 stevensc 108
        var allowEdit = $allowEdit
109
        var allowDelete = $allowDelete
110
        var allowUsers = $allowUsers
1 www 111
 
17062 stevensc 112
        // Configuración de la tabla principal
113
        var gridTable = $('#gridTable').dataTable({
17178 stevensc 114
            processing: true,
115
            serverSide: true,
116
            searching: true,
117
            order: [[0, 'asc']],
118
            ordering: true,
119
            ordenable: true,
120
            responsive: true,
121
            select: false,
122
            paging: true,
123
            pagingType: 'simple_numbers',
124
            ajax: {
125
            url: '$routeDatatable',
126
            type: 'get',
127
            beforeSend: function (request) {
128
                NProgress.start()
129
            },
130
            dataFilter: function (response) {
131
                const data = JSON.parse(response)
17067 stevensc 132
 
17178 stevensc 133
                var json = {
134
                recordsTotal: 0,
135
                recordsFiltered: 0,
136
                data: []
1 www 137
                }
17178 stevensc 138
 
139
                if (data.success) {
140
                $('#form-add').attr('action', data.data.link_add)
141
                json.recordsTotal = data.data.total
142
                json.recordsFiltered = data.data.total
143
                json.data = data.data.items
144
                } else {
145
                $.fn.showError(data.data)
146
                }
147
 
148
                return JSON.stringify(json)
149
            }
1 www 150
            },
17178 stevensc 151
            language: {
152
            sProcessing: 'LABEL_DATATABLE_SPROCESSING',
153
            sLengthMenu: 'LABEL_DATATABLE_SLENGTHMENU',
154
            sZeroRecords: 'LABEL_DATATABLE_SZERORECORDS',
155
            sEmptyTable: 'LABEL_DATATABLE_SEMPTYTABLE',
156
            sInfo: 'LABEL_DATATABLE_SINFO',
157
            sInfoEmpty: 'LABEL_DATATABLE_SINFOEMPTY',
158
            sInfoFiltered: 'LABEL_DATATABLE_SINFOFILTERED',
159
            sInfoPostFix: '',
160
            sSearch: 'LABEL_DATATABLE_SSEARCH',
161
            sUrl: '',
162
            sInfoThousands: ',',
163
            sLoadingRecords: 'LABEL_DATATABLE_SLOADINGRECORDS',
164
            oPaginate: {
165
                sFirst: 'LABEL_DATATABLE_SFIRST',
166
                sLast: 'LABEL_DATATABLE_SLAST',
167
                sNext: 'LABEL_DATATABLE_SNEXT',
168
                sPrevious: 'LABEL_DATATABLE_SPREVIOUS'
1 www 169
            },
17178 stevensc 170
            oAria: {
171
                sSortAscending: ': LABEL_DATATABLE_SSORTASCENDING',
172
                sSortDescending: ':LABEL_DATATABLE_SSORTDESCENDING'
173
            }
174
            },
175
            drawCallback: function (settings) {
176
            NProgress.done()
177
            },
178
            aoColumns: [
179
            { mDataProp: 'name' },
17236 stevensc 180
            { mDataProp: 'description' },
181
            { mDataProp: 'image' },
17178 stevensc 182
            { mDataProp: 'actions' }
183
            ],
184
            columnDefs: [
185
            {
186
                targets: 0,
187
                className: 'text-vertical-middle'
188
            },
189
            {
190
                targets: -3,
191
                orderable: false,
192
                render: function (data, type, row) {
17236 stevensc 193
                var s = 'LABEL_DESCRIPTION: ' + data['description'] + '<br/>'
17178 stevensc 194
                return s
195
                }
196
            },
197
            {
198
                targets: -2,
199
                orderable: false,
200
                render: function (data, type, row) {
17237 stevensc 201
                s = ''
1 www 202
 
17237 stevensc 203
                if (data['image']) {
204
                    s =
205
                    s +
206
                    '&nbsp; <img class="btn-view-image-app" data-href="' +
207
                    data['image'] +
208
                    '" data-toggle="tooltip" src="' +
209
                    data['image'] +
210
                    '" title="LABEL_VIEW" style="width: 40px; object-fit: cover; height: 40px;" /> '
211
                }
1 www 212
 
17237 stevensc 213
                return s
17178 stevensc 214
                }
215
            },
216
            {
217
                targets: -1,
218
                orderable: false,
219
                render: function (data, type, row) {
17237 stevensc 220
                s = ''
1 www 221
 
17237 stevensc 222
                if (allowEdit && data['link_edit']) {
223
                    s =
224
                    s +
225
                    '<button class="btn btn-info btn-sm btn-edit" data-href="' +
226
                    data['link_edit'] +
227
                    '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pen"></i> LABEL_EDIT </button>&nbsp;'
228
                }
229
                if (allowDelete && data['link_delete']) {
230
                    s =
231
                    s +
232
                    '<button class="btn btn-danger btn-sm btn-delete" data-href="' +
233
                    data['link_delete'] +
234
                    '" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-trash"></i> LABEL_DELETE </button>&nbsp;'
235
                }
1 www 236
 
17237 stevensc 237
                return s
17178 stevensc 238
                }
239
            }
240
            ]
241
        })
242
 
243
        // Validación de formulario de creación
244
        var validatorAdd = $('#form-add').validate({
245
            debug: true,
246
            onclick: false,
247
            onkeyup: false,
248
            ignore: [],
249
            rules: {
250
            name: {
1 www 251
                required: true,
17178 stevensc 252
                maxlength: 128
1 www 253
            },
17178 stevensc 254
            description: {
255
                updateCkeditor: function () {
256
                CKEDITOR.instances.description_add.updateElement()
1 www 257
                },
258
                required: true
259
            },
17178 stevensc 260
            file: {
1 www 261
                required: true,
16905 efrain 262
                extension: 'jpg|jpeg|png',
263
                accept: 'image/jpg,image/jpeg,image/png'
1 www 264
            },
265
            },
17178 stevensc 266
            submitHandler: function (form) {
267
            var formdata = false
268
            if (window.FormData) {
269
                formdata = new FormData(form) //form[0]);
1 www 270
            }
271
 
17178 stevensc 272
            NProgress.start()
1 www 273
            $.ajax({
17178 stevensc 274
                dataType: 'json',
275
                accept: 'application/json',
276
                method: 'post',
277
                url: $('#form-add').attr('action'),
278
                data: formdata,
279
                processData: false,
280
                contentType: false
281
            })
282
                .done(function (response) {
283
                if (response['success']) {
284
                    $.fn.showSuccess(response['data'])
16905 efrain 285
 
17178 stevensc 286
                    gridTable.api().ajax.reload(null, false)
16905 efrain 287
 
17178 stevensc 288
                    $('#row-add').hide()
289
                    $('#row-edit').hide()
290
                    $('#row-listing').show()
1 www 291
                } else {
17178 stevensc 292
                    validatorAdd.resetForm()
293
                    if (jQuery.type(response['data']) == 'string') {
294
                    $.fn.showError(response['data'])
295
                    } else {
296
                    $.each(response['data'], function (fieldname, errors) {
297
                        $.fn.showFormErrorValidator('#form-add #' + fieldname, errors)
298
                    })
1 www 299
                    }
300
                }
17178 stevensc 301
                })
302
                .fail(function (jqXHR, textStatus, errorThrown) {
303
                console.log(jqXHR)
304
                $.fn.showError(textStatus)
305
                })
306
                .always(function () {
307
                NProgress.done()
308
                })
309
            return false
310
            },
311
            invalidHandler: function (form, validator) {}
312
        })
1 www 313
 
17178 stevensc 314
        // Validación de formulario de edición
315
        var validatorEdit = $('#form-edit').validate({
316
            debug: true,
317
            onclick: false,
318
            onkeyup: false,
319
            ignore: [],
320
            rules: {
321
                name: {
322
                    required: true,
323
                    maxlength: 128
1 www 324
                },
17178 stevensc 325
                description: {
326
                    updateCkeditor: function () {
327
                    CKEDITOR.instances.description_edit.updateElement()
328
                    },
329
                    required: true
330
                },
331
                file: {
332
                    required: false,
333
                    extension: 'jpg|jpeg|png',
334
                    accept: 'image/jpg,image/jpeg,image/png'
335
                }
1 www 336
            },
17178 stevensc 337
            submitHandler: function (form) {
338
                var formdata = false
339
                if (window.FormData) {
340
                    formdata = new FormData(form) //form[0]);
341
                }
1 www 342
 
17178 stevensc 343
                NProgress.start()
344
                $.ajax({
345
                    dataType: 'json',
346
                    accept: 'application/json',
347
                    method: 'post',
348
                    url: $('#form-edit').attr('action'),
349
                    data: formdata,
350
                    processData: false,
351
                    contentType: false
352
                })
353
                    .done(function (response) {
354
                    if (response['success']) {
355
                        $.fn.showSuccess(response['data'])
16905 efrain 356
 
17178 stevensc 357
                        gridTable.api().ajax.reload(null, false)
16905 efrain 358
 
17178 stevensc 359
                        $('#row-add').hide()
360
                        $('#row-edit').hide()
361
                        $('#row-listing').show()
362
                    } else {
363
                        validatorEdit.resetForm()
364
                        if (jQuery.type(response['data']) == 'string') {
365
                        $.fn.showError(response['data'])
366
                        } else {
367
                        $.each(response['data'], function (fieldname, errors) {
368
                            $.fn.showFormErrorValidator('#form-edit #' + fieldname, errors)
369
                        })
370
                        }
1 www 371
                    }
17178 stevensc 372
                    })
373
                    .fail(function (jqXHR, textStatus, errorThrown) {
374
                    $.fn.showError(textStatus)
375
                    })
376
                    .always(function () {
377
                    NProgress.done()
378
                    })
379
                return false
380
            },
381
            invalidHandler: function (form, validator) {}
382
        })
16905 efrain 383
 
17178 stevensc 384
        // Evento de botón de vista de imagen del marketplace
385
        $('body').on('click', '.btn-view-image-marketplace', function (e) {
386
            e.preventDefault()
6996 nelberth 387
 
17178 stevensc 388
            $('#image-marketplace').attr('src', $(this).data('href'))
389
            $('#modalPreviewMarketPlace').modal('show')
390
            return false
391
        })
16905 efrain 392
 
17178 stevensc 393
        // Evento de botón de vista de imagen de la aplicación
394
        $('body').on('click', '.btn-view-image-app', function (e) {
395
            e.preventDefault()
1 www 396
 
17178 stevensc 397
            $('#image-app').attr('src', $(this).data('href'))
398
            $('#modalPreviewImage').modal('show')
399
            return false
400
        })
1 www 401
 
17178 stevensc 402
        // Evento de botón de añadir
403
        $('body').on('click', 'button.btn-add', function (e) {
404
            e.preventDefault()
1 www 405
 
17178 stevensc 406
            $('#form-add #name').val('')
407
            $('#form-add #file').fileinput('reset')
408
            $('#form-add #file').val('')
1 www 409
 
17178 stevensc 410
            CKEDITOR.instances.description_add.setData('')
411
            validatorAdd.resetForm()
1 www 412
 
17178 stevensc 413
            $('#row-listing').hide()
414
            $('#row-edit').hide()
415
            $('#row-add').show()
416
        })
1 www 417
 
17178 stevensc 418
        // Evento de botón de editar
419
        $('body').on('click', 'button.btn-edit', function (e) {
420
            e.preventDefault()
421
            NProgress.start()
422
            var url = $(this).data('href')
1 www 423
            $.ajax({
17178 stevensc 424
            dataType: 'json',
425
            accept: 'application/json',
426
            method: 'get',
427
            url: url
428
            })
429
            .done(function (response) {
430
                if (response['success']) {
431
                $('#form-edit').attr('action', url)
432
                $('#form-edit #name').val(response['data']['name'])
433
                $('#form-edit #file').fileinput('reset')
434
                $('#form-edit #file').val('')
16905 efrain 435
 
17178 stevensc 436
                CKEDITOR.instances.description_edit.setData(
437
                    response['data']['description']
438
                )
439
                validatorEdit.resetForm()
440
 
441
                $('#row-listing').hide()
442
                $('#row-add').hide()
443
                $('#row-edit').show()
1 www 444
                } else {
17178 stevensc 445
                validatorEdit.resetForm()
446
                if (jQuery.type(response['data']) == 'string') {
447
                    $.fn.showError(response['data'])
448
                } else {
449
                    $.each(response['data'], function (fieldname, errors) {
450
                    $.fn.showFormErrorValidator('#form-edit #' + fieldname, errors)
451
                    })
1 www 452
                }
17178 stevensc 453
                }
454
            })
455
            .fail(function (jqXHR, textStatus, errorThrown) {
456
                $.fn.showError(textStatus)
457
            })
458
            .always(function () {
459
                NProgress.done()
460
            })
461
        })
1 www 462
 
17178 stevensc 463
        // Evento de botón de eliminar
464
        $('body').on('click', 'button.btn-delete', function (e) {
465
            e.preventDefault()
466
            var action = $(this).data('href')
6886 nelberth 467
 
17178 stevensc 468
            swal
469
            .fire({
470
                title: 'LABEL_ARE_YOU_SURE',
471
                icon: 'question',
472
                cancelButtonText: 'LABEL_NO',
473
                showCancelButton: true,
474
                confirmButtonText: 'LABEL_YES'
475
            })
476
            .then((result) => {
477
                if (result.isConfirmed) {
478
                NProgress.start()
479
                $.ajax({
480
                    dataType: 'json',
481
                    accept: 'application/json',
482
                    method: 'post',
483
                    url: action
484
                })
485
                    .done(function (response) {
486
                    if (response['success']) {
487
                        $.fn.showSuccess(response['data'])
488
                        gridTable.api().ajax.reload(null, false)
489
                    } else {
490
                        $.fn.showError(response['data'])
1 www 491
                    }
17178 stevensc 492
                    })
493
                    .fail(function (jqXHR, textStatus, errorThrown) {
494
                    $.fn.showError(textStatus)
495
                    })
496
                    .always(function () {
497
                    NProgress.done()
498
                    })
16822 efrain 499
                }
17178 stevensc 500
            })
501
        })
1 www 502
 
17178 stevensc 503
        // Evento de botón de cancelar
504
        $('body').on('click', 'button.btn-cancel', function (e) {
505
            e.preventDefault()
506
            $('#row-add').hide()
507
            $('#row-edit').hide()
508
            $('#row-listing').show()
509
        })
6682 nelberth 510
 
17178 stevensc 511
        // Evento de botón de refrescar
512
        $('body').on('click', 'button.btn-refresh', function (e) {
513
            e.preventDefault()
514
            gridTable.api().ajax.reload(null, false)
515
        })
516
 
517
        // Configuración del formulario de creación
518
        $('#form-add #file').fileinput({
519
            theme: 'fa',
520
            language: 'es',
521
            showUpload: false,
522
            dropZoneEnabled: false,
523
            maxFileCount: 1,
524
            msgPlaceholder: 'LABEL_RECOMMENDED_SIZE $image_size',
525
            allowedFileExtensions: ['jpeg', 'jpg', 'png']
526
        })
6682 nelberth 527
 
17178 stevensc 528
        // Configuración del formulario de edición
529
        $('#form-edit #file').fileinput({
530
            theme: 'fa',
531
            language: 'es',
532
            showUpload: false,
533
            dropZoneEnabled: false,
534
            maxFileCount: 1,
535
            msgPlaceholder: 'LABEL_RECOMMENDED_SIZE $image_size',
536
            allowedFileExtensions: ['jpeg', 'jpg', 'png']
537
        })
6682 nelberth 538
 
17178 stevensc 539
        // Configuración del editor de CKEditor para el formulario de creación
540
        CKEDITOR.replace('description_add', {
541
            toolbar: [
542
            { name: 'editing', items: ['Scayt'] },
543
            { name: 'links', items: ['Link', 'Unlink'] },
544
            {
545
                name: 'paragraph',
546
                items: [
547
                'NumberedList',
548
                'BulletedList',
549
                '-',
550
                'Outdent',
551
                'Indent',
552
                'Blockquote'
553
                ]
554
            },
555
            {
556
                name: 'basicstyles',
557
                items: ['Bold', 'Italic', 'Strike', 'RemoveFormat']
558
            },
559
            '/',
560
            {
561
                name: 'insert',
562
                items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar']
563
            },
564
            { name: 'styles', items: ['Styles', 'Format'] },
565
            { name: 'tools', items: ['Maximize'] }
566
            ],
567
            removePlugins: 'elementspath,Anchor',
568
            heigth: 100
569
        })
8583 nelberth 570
 
17178 stevensc 571
        // Configuración del editor de CKEditor para el formulario de edición
572
        CKEDITOR.replace('description_edit', {
573
            toolbar: [
574
            { name: 'editing', items: ['Scayt'] },
575
            { name: 'links', items: ['Link', 'Unlink'] },
576
            {
577
                name: 'paragraph',
578
                items: [
579
                'NumberedList',
580
                'BulletedList',
581
                '-',
582
                'Outdent',
583
                'Indent',
584
                'Blockquote'
585
                ]
586
            },
587
            {
588
                name: 'basicstyles',
589
                items: ['Bold', 'Italic', 'Strike', 'RemoveFormat']
590
            },
591
            '/',
592
            {
593
                name: 'insert',
594
                items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar']
595
            },
596
            { name: 'styles', items: ['Styles', 'Format'] },
597
            { name: 'tools', items: ['Maximize'] }
598
            ],
599
            removePlugins: 'elementspath,Anchor',
600
            heigth: 100
601
        })
602
    })
1 www 603
JS;
604
$this->inlineScript()->captureEnd();
605
?>
606
 
16905 efrain 607
<div class="container">
608
	<div class="card" id="row-listing">
609
	 	<div class="card-header">
610
	 		<h6 class="card-title">LABEL_CAPSULES</h6>
611
	 	</div>
17178 stevensc 612
 
16905 efrain 613
	 	<div class="card-body">
614
			<div class="row">
17178 stevensc 615
	 	        <div class="col-12 mt-3">
17061 stevensc 616
					<table id="gridTable" class="table table-bordered">
17178 stevensc 617
						<thead>
618
                            <tr>
619
                                <th>LABEL_NAME</th>
620
                                <th>LABEL_DETAILS</th>
621
                                <th>LABEL_IMAGES</th>
622
                                <th>LABEL_ACTIONS</th>
623
                            </tr>
624
						</thead>
16905 efrain 625
						<tbody>
626
						</tbody>
627
					</table>
17178 stevensc 628
	 	        </div>
629
	 	    </div>
16905 efrain 630
	 	</div>
17178 stevensc 631
 
16905 efrain 632
	 	<div class="card-footer text-right">
16992 efrain 633
			<button type="button" class="btn btn-info btn-refresh"><i class="fa fa-sync"></i> LABEL_REFRESH </button>
16905 efrain 634
			<?php if ($allowAdd) : ?>
635
			<button type="button" class="btn btn-primary btn-add"><i class="fa fa-plus"></i> LABEL_ADD </button>
636
			<?php endif; ?>
637
	 	</div>
15139 stevensc 638
	</div>
16905 efrain 639
 
640
	<div class="card" id="row-add" style="display: none">
641
	 	<div class="card-header">
642
	 		<h6 class="card-title">LABEL_ADD_CAPSULE</h6>
643
	 	</div>
17178 stevensc 644
 
16905 efrain 645
	 	<?php
15139 stevensc 646
		$form = $this->formAdd;
647
		$form->setAttributes([
648
			'method'  => 'post',
649
			'action'  => '',
16905 efrain 650
			'name'    => 'form-add',
651
			'id'      => 'form-add',
15139 stevensc 652
		]);
1 www 653
 
15139 stevensc 654
		$form->prepare();
655
		echo $this->form()->openTag($form);
656
		?>
657
 
17178 stevensc 658
            <div class="card-body">
659
                <div class="row">
660
                    <div class="col-12 mt-3">
16905 efrain 661
                        <?php
17178 stevensc 662
                        $element = $form->get('name');
663
 
16905 efrain 664
                        $element->setAttributes(['class' => 'form-control']);
17178 stevensc 665
                        $element->setOptions(['label' => 'LABEL_NAME']);
16905 efrain 666
                        echo $this->formLabel($element);
17178 stevensc 667
                        echo $this->formText($element);
16905 efrain 668
                        ?>
17178 stevensc 669
                    </div>
670
                </div>
671
 
672
                <div class="row">
673
                    <div class="col-12 mt-3">
16905 efrain 674
                        <?php
17178 stevensc 675
                        $element = $form->get('description');
676
                        $element->setAttributes(['id' => 'description_add', 'class' => 'form-control', 'rows' => '2', 'class' => 'form-control']);
677
                        $element->setOptions(['label' => 'LABEL_DESCRIPTION']);
678
                        echo $this->formLabel($element);
679
                        echo $this->formTextArea($element);
680
                        ?>
681
                    </div>
682
                </div>
683
 
684
                <div class="row">
685
                    <div class="col-12 mt-3">
686
                        <?php
687
                        $element = $form->get('file');
688
                        $element->setOptions(['label' => 'LABEL_IMAGE']);
16905 efrain 689
                        $element->setAttributes(['class' => 'form-control']);
690
                        $element->setAttributes(['accept' => 'image/jpg,image/jpeg,image/png']);
691
                        echo $this->formLabel($element);
692
                        echo $this->formFile($element);
693
                        ?>
17178 stevensc 694
                    </div>
695
                </div>
696
            </div>
697
 
698
            <div class="card-footer text-right">
699
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
700
                <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
701
            </div>
16905 efrain 702
	 	<?php echo $this->form()->closeTag($form); ?>
15139 stevensc 703
	</div>
16905 efrain 704
 
705
	<div class="card" id="row-edit" style="display: none">
706
	 	<div class="card-header">
707
	 		<h6 class="card-title">LABEL_EDIT_CAPSULE</h6>
708
	 	</div>
17178 stevensc 709
 
16905 efrain 710
	 	<?php
15139 stevensc 711
		$form = $this->formEdit;
712
		$form->setAttributes([
16905 efrain 713
		    'method'    => 'post',
714
		    'name'      => 'form-edit',
715
		    'id'        => 'form-edit'
15139 stevensc 716
		]);
1 www 717
 
15139 stevensc 718
		$form->prepare();
719
		echo $this->form()->openTag($form);
720
		?>
17178 stevensc 721
            <div class="card-body">
722
                <div class="row">
723
                    <div class="col-12 mt-3">
16905 efrain 724
                        <?php
17178 stevensc 725
                        $element = $form->get('name');
16905 efrain 726
                        $element->setAttributes(['class' => 'form-control']);
17178 stevensc 727
                        $element->setOptions(['label' => 'LABEL_NAME']);
16905 efrain 728
                        echo $this->formLabel($element);
17178 stevensc 729
                        echo $this->formText($element);
16905 efrain 730
                        ?>
17178 stevensc 731
                    </div>
732
                </div>
733
 
734
                <div class="row">
735
                    <div class="col-12 mt-3">
16905 efrain 736
                        <?php
17178 stevensc 737
                        $element = $form->get('description');
738
                        $element->setAttributes(['id' => 'description_edit', 'class' => 'form-control', 'rows' => '2', 'class' => 'form-control']);
739
                        $element->setOptions(['label' => 'LABEL_DESCRIPTION']);
16905 efrain 740
                        echo $this->formLabel($element);
17178 stevensc 741
                        echo $this->formTextArea($element);
16905 efrain 742
                        ?>
17178 stevensc 743
                    </div>
744
                </div>
745
 
746
                <div class="row">
747
                    <div class="col-12 mt-3">
748
                            <?php
749
                            $element = $form->get('file');
750
                            $element->setOptions(['label' => 'LABEL_IMAGE']);
751
                            $element->setAttributes(['class' => 'form-control']);
752
                            $element->setAttributes(['accept' => 'image/jpg,image/jpeg,image/png']);
753
                            echo $this->formLabel($element);
754
                            echo $this->formFile($element);
755
                            ?>
756
                    </div>
757
                </div>
758
            </div>
759
 
760
            <div class="card-footer text-right">
761
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
762
                <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
763
            </div>
16905 efrain 764
	 	<?php echo $this->form()->closeTag($form); ?>
15139 stevensc 765
	</div>
16905 efrain 766
</div>
15139 stevensc 767
 
1 www 768
<!-- The Modal -->
16905 efrain 769
<div class="modal" id="modalPreviewImage">
1 www 770
	<div class="modal-dialog ">
15139 stevensc 771
		<div class="modal-content">
1 www 772
 
15139 stevensc 773
			<!-- Modal Header -->
774
			<div class="modal-header">
16845 efrain 775
				<h6 class="modal-title">LABEL_IMAGE</h6>
16822 efrain 776
				<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="btn-close"></button>
15139 stevensc 777
			</div>
1 www 778
 
15139 stevensc 779
			<!-- Modal body -->
780
			<div class="modal-body text-center">
1 www 781
				<img src="" class="img img-responsive" style="width: 300px; height: auto" id="image-app" />
15139 stevensc 782
			</div>
783
 
784
			<!-- Modal footer -->
16891 efrain 785
			<div class="modal-footer text-right">
15139 stevensc 786
				<button type="button" class="btn btn-danger" data-dismiss="modal">LABEL_CLOSE</button>
787
			</div>
788
		</div>
1 www 789
	</div>
15139 stevensc 790
</div>