Proyectos de Subversion LeadersLinked - Backend

Rev

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