Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 17085 | Rev 17236 | 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
$allowUsers     = $acl->isAllowed($roleName, 'microlearning/content/capsules/users') ? 1 : 0;
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
 
17178 stevensc 41
// Toggle
16822 efrain 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'));
1 www 44
 
17178 stevensc 45
// Input Number Format
16822 efrain 46
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-input-number/input-number-format.jquery.js'));
47
 
1 www 48
$this->headStyle()->captureStart();
49
echo <<<CSS
17178 stevensc 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
    }
1 www 77
CSS;
78
$this->headStyle()->captureEnd();
79
 
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' },
180
            { mDataProp: 'details' },
181
            { mDataProp: 'images' },
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) {
193
                var s = ''
194
                s += 'LABEL_STATUS: ' + data['status'] + '<br/>'
1 www 195
 
17178 stevensc 196
                if (allowUsers && row['actions']['link_total_users']) {
197
                    s +=
198
                    'LABEL_TOTAL_USERS: ' +
199
                    data['total_users'] +
200
                    ' <button class="btn btn-view-total-users" data-href="' +
201
                    row['actions']['link_total_users'] +
202
                    '" data-toggle="tooltip" title="LABEL_VIEW"><i class="fa fa-external-link-alt"></i></button> <br>'
203
                } else {
204
                    s += 'LABEL_TOTAL_USERS: ' + data['total_users'] + '<br/>'
205
                }
206
                if (allowUsers && row['actions']['link_total_users_actives']) {
207
                    s +=
208
                    'LABEL_TOTAL_USERS_ACTIVE: ' +
209
                    data['total_users_active'] +
210
                    ' <button class="btn btn-view-total-users" data-href="' +
211
                    row['actions']['link_total_users_actives'] +
212
                    '" data-toggle="tooltip" title="LABEL_VIEW"><i class="fa fa-external-link-alt"></i></button> <br>'
213
                } else {
214
                    s +=
215
                    'LABEL_TOTAL_USERS_ACTIVE: ' +
216
                    data['total_users_active'] +
217
                    '<br/>'
218
                }
1 www 219
 
17178 stevensc 220
                return s
221
                }
222
            },
223
            {
224
                targets: -2,
225
                orderable: false,
226
                render: function (data, type, row) {
227
                s = ''
1 www 228
 
17178 stevensc 229
                if (data['marketplace']) {
230
                    s =
231
                    s +
232
                    '&nbsp; <img class="btn-view-image-marketplace" data-href="' +
233
                    data['marketplace'] +
234
                    '" data-toggle="tooltip" src="' +
235
                    data['marketplace'] +
236
                    '" title="LABEL_VIEW" style="width: 40px; object-fit: cover; height: 40px;" /> '
237
                } else {
238
                    s = s + ''
239
                }
1 www 240
 
17178 stevensc 241
                if (data['image']) {
242
                    s =
243
                    s +
244
                    '&nbsp; <img class="btn-view-image-app" data-href="' +
245
                    data['image'] +
246
                    '" data-toggle="tooltip" src="' +
247
                    data['image'] +
248
                    '" title="LABEL_VIEW" style="width: 40px; object-fit: cover; height: 40px;" /> '
249
                } else {
250
                    s = s + ''
251
                }
6903 nelberth 252
 
17178 stevensc 253
                return s
254
                }
255
            },
256
            {
257
                targets: -1,
258
                orderable: false,
259
                render: function (data, type, row) {
260
                s = ''
1 www 261
 
17178 stevensc 262
                if (allowEdit && data['link_edit']) {
263
                    s =
264
                    s +
265
                    '<button class="btn btn-info btn-sm btn-edit" data-href="' +
266
                    data['link_edit'] +
267
                    '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pen"></i> LABEL_EDIT </button>&nbsp;'
1 www 268
                }
17178 stevensc 269
                if (allowDelete && data['link_delete']) {
270
                    s =
271
                    s +
272
                    '<button class="btn btn-danger btn-sm btn-delete" data-href="' +
273
                    data['link_delete'] +
274
                    '" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-trash"></i> LABEL_DELETE </button>&nbsp;'
275
                }
1 www 276
 
17178 stevensc 277
                return s
278
                }
279
            }
280
            ]
281
        })
282
 
283
        // Validación de formulario de creación
284
        var validatorAdd = $('#form-add').validate({
285
            debug: true,
286
            onclick: false,
287
            onkeyup: false,
288
            ignore: [],
289
            rules: {
290
            name: {
1 www 291
                required: true,
17178 stevensc 292
                maxlength: 128
1 www 293
            },
17178 stevensc 294
            description: {
295
                updateCkeditor: function () {
296
                CKEDITOR.instances.description_add.updateElement()
1 www 297
                },
298
                required: true
299
            },
17178 stevensc 300
            file: {
1 www 301
                required: true,
16905 efrain 302
                extension: 'jpg|jpeg|png',
303
                accept: 'image/jpg,image/jpeg,image/png'
1 www 304
            },
305
            },
17178 stevensc 306
            submitHandler: function (form) {
307
            var formdata = false
308
            if (window.FormData) {
309
                formdata = new FormData(form) //form[0]);
1 www 310
            }
311
 
17178 stevensc 312
            NProgress.start()
1 www 313
            $.ajax({
17178 stevensc 314
                dataType: 'json',
315
                accept: 'application/json',
316
                method: 'post',
317
                url: $('#form-add').attr('action'),
318
                data: formdata,
319
                processData: false,
320
                contentType: false
321
            })
322
                .done(function (response) {
323
                if (response['success']) {
324
                    $.fn.showSuccess(response['data'])
16905 efrain 325
 
17178 stevensc 326
                    gridTable.api().ajax.reload(null, false)
16905 efrain 327
 
17178 stevensc 328
                    $('#row-add').hide()
329
                    $('#row-edit').hide()
330
                    $('#row-listing').show()
1 www 331
                } else {
17178 stevensc 332
                    validatorAdd.resetForm()
333
                    if (jQuery.type(response['data']) == 'string') {
334
                    $.fn.showError(response['data'])
335
                    } else {
336
                    $.each(response['data'], function (fieldname, errors) {
337
                        $.fn.showFormErrorValidator('#form-add #' + fieldname, errors)
338
                    })
1 www 339
                    }
340
                }
17178 stevensc 341
                })
342
                .fail(function (jqXHR, textStatus, errorThrown) {
343
                console.log(jqXHR)
344
                $.fn.showError(textStatus)
345
                })
346
                .always(function () {
347
                NProgress.done()
348
                })
349
            return false
350
            },
351
            invalidHandler: function (form, validator) {}
352
        })
1 www 353
 
17178 stevensc 354
        // Validación de formulario de edición
355
        var validatorEdit = $('#form-edit').validate({
356
            debug: true,
357
            onclick: false,
358
            onkeyup: false,
359
            ignore: [],
360
            rules: {
361
                name: {
362
                    required: true,
363
                    maxlength: 128
1 www 364
                },
17178 stevensc 365
                description: {
366
                    updateCkeditor: function () {
367
                    CKEDITOR.instances.description_edit.updateElement()
368
                    },
369
                    required: true
370
                },
371
                file: {
372
                    required: false,
373
                    extension: 'jpg|jpeg|png',
374
                    accept: 'image/jpg,image/jpeg,image/png'
375
                }
1 www 376
            },
17178 stevensc 377
            submitHandler: function (form) {
378
                var formdata = false
379
                if (window.FormData) {
380
                    formdata = new FormData(form) //form[0]);
381
                }
1 www 382
 
17178 stevensc 383
                NProgress.start()
384
                $.ajax({
385
                    dataType: 'json',
386
                    accept: 'application/json',
387
                    method: 'post',
388
                    url: $('#form-edit').attr('action'),
389
                    data: formdata,
390
                    processData: false,
391
                    contentType: false
392
                })
393
                    .done(function (response) {
394
                    if (response['success']) {
395
                        $.fn.showSuccess(response['data'])
16905 efrain 396
 
17178 stevensc 397
                        gridTable.api().ajax.reload(null, false)
16905 efrain 398
 
17178 stevensc 399
                        $('#row-add').hide()
400
                        $('#row-edit').hide()
401
                        $('#row-listing').show()
402
                    } else {
403
                        validatorEdit.resetForm()
404
                        if (jQuery.type(response['data']) == 'string') {
405
                        $.fn.showError(response['data'])
406
                        } else {
407
                        $.each(response['data'], function (fieldname, errors) {
408
                            $.fn.showFormErrorValidator('#form-edit #' + fieldname, errors)
409
                        })
410
                        }
1 www 411
                    }
17178 stevensc 412
                    })
413
                    .fail(function (jqXHR, textStatus, errorThrown) {
414
                    $.fn.showError(textStatus)
415
                    })
416
                    .always(function () {
417
                    NProgress.done()
418
                    })
419
                return false
420
            },
421
            invalidHandler: function (form, validator) {}
422
        })
16905 efrain 423
 
17178 stevensc 424
        // Evento de botón de vista de imagen del marketplace
425
        $('body').on('click', '.btn-view-image-marketplace', function (e) {
426
            e.preventDefault()
6996 nelberth 427
 
17178 stevensc 428
            $('#image-marketplace').attr('src', $(this).data('href'))
429
            $('#modalPreviewMarketPlace').modal('show')
430
            return false
431
        })
16905 efrain 432
 
17178 stevensc 433
        // Evento de botón de vista de imagen de la aplicación
434
        $('body').on('click', '.btn-view-image-app', function (e) {
435
            e.preventDefault()
1 www 436
 
17178 stevensc 437
            $('#image-app').attr('src', $(this).data('href'))
438
            $('#modalPreviewImage').modal('show')
439
            return false
440
        })
1 www 441
 
17178 stevensc 442
        // Evento de botón de añadir
443
        $('body').on('click', 'button.btn-add', function (e) {
444
            e.preventDefault()
1 www 445
 
17178 stevensc 446
            $('#form-add #name').val('')
447
            $('#form-add #file').fileinput('reset')
448
            $('#form-add #file').val('')
1 www 449
 
17178 stevensc 450
            CKEDITOR.instances.description_add.setData('')
451
            validatorAdd.resetForm()
1 www 452
 
17178 stevensc 453
            $('#row-listing').hide()
454
            $('#row-edit').hide()
455
            $('#row-add').show()
456
        })
1 www 457
 
17178 stevensc 458
        // Evento de botón de editar
459
        $('body').on('click', 'button.btn-edit', function (e) {
460
            e.preventDefault()
461
            NProgress.start()
462
            var url = $(this).data('href')
1 www 463
            $.ajax({
17178 stevensc 464
            dataType: 'json',
465
            accept: 'application/json',
466
            method: 'get',
467
            url: url
468
            })
469
            .done(function (response) {
470
                if (response['success']) {
471
                $('#form-edit').attr('action', url)
472
                $('#form-edit #name').val(response['data']['name'])
473
                $('#form-edit #file').fileinput('reset')
474
                $('#form-edit #file').val('')
16905 efrain 475
 
17178 stevensc 476
                CKEDITOR.instances.description_edit.setData(
477
                    response['data']['description']
478
                )
479
                validatorEdit.resetForm()
480
 
481
                $('#row-listing').hide()
482
                $('#row-add').hide()
483
                $('#row-edit').show()
1 www 484
                } else {
17178 stevensc 485
                validatorEdit.resetForm()
486
                if (jQuery.type(response['data']) == 'string') {
487
                    $.fn.showError(response['data'])
488
                } else {
489
                    $.each(response['data'], function (fieldname, errors) {
490
                    $.fn.showFormErrorValidator('#form-edit #' + fieldname, errors)
491
                    })
1 www 492
                }
17178 stevensc 493
                }
494
            })
495
            .fail(function (jqXHR, textStatus, errorThrown) {
496
                $.fn.showError(textStatus)
497
            })
498
            .always(function () {
499
                NProgress.done()
500
            })
501
        })
1 www 502
 
17178 stevensc 503
        // Evento de botón de eliminar
504
        $('body').on('click', 'button.btn-delete', function (e) {
505
            e.preventDefault()
506
            var action = $(this).data('href')
6886 nelberth 507
 
17178 stevensc 508
            swal
509
            .fire({
510
                title: 'LABEL_ARE_YOU_SURE',
511
                icon: 'question',
512
                cancelButtonText: 'LABEL_NO',
513
                showCancelButton: true,
514
                confirmButtonText: 'LABEL_YES'
515
            })
516
            .then((result) => {
517
                if (result.isConfirmed) {
518
                NProgress.start()
519
                $.ajax({
520
                    dataType: 'json',
521
                    accept: 'application/json',
522
                    method: 'post',
523
                    url: action
524
                })
525
                    .done(function (response) {
526
                    if (response['success']) {
527
                        $.fn.showSuccess(response['data'])
528
                        gridTable.api().ajax.reload(null, false)
529
                    } else {
530
                        $.fn.showError(response['data'])
1 www 531
                    }
17178 stevensc 532
                    })
533
                    .fail(function (jqXHR, textStatus, errorThrown) {
534
                    $.fn.showError(textStatus)
535
                    })
536
                    .always(function () {
537
                    NProgress.done()
538
                    })
16822 efrain 539
                }
17178 stevensc 540
            })
541
        })
1 www 542
 
17178 stevensc 543
        // Evento de botón de cancelar
544
        $('body').on('click', 'button.btn-cancel', function (e) {
545
            e.preventDefault()
546
            $('#row-add').hide()
547
            $('#row-edit').hide()
548
            $('#row-listing').show()
549
        })
6682 nelberth 550
 
17178 stevensc 551
        // Evento de botón de refrescar
552
        $('body').on('click', 'button.btn-refresh', function (e) {
553
            e.preventDefault()
554
            gridTable.api().ajax.reload(null, false)
555
        })
556
 
557
        // Configuración del formulario de creación
558
        $('#form-add #file').fileinput({
559
            theme: 'fa',
560
            language: 'es',
561
            showUpload: false,
562
            dropZoneEnabled: false,
563
            maxFileCount: 1,
564
            msgPlaceholder: 'LABEL_RECOMMENDED_SIZE $image_size',
565
            allowedFileExtensions: ['jpeg', 'jpg', 'png']
566
        })
6682 nelberth 567
 
17178 stevensc 568
        // Configuración del formulario de edición
569
        $('#form-edit #file').fileinput({
570
            theme: 'fa',
571
            language: 'es',
572
            showUpload: false,
573
            dropZoneEnabled: false,
574
            maxFileCount: 1,
575
            msgPlaceholder: 'LABEL_RECOMMENDED_SIZE $image_size',
576
            allowedFileExtensions: ['jpeg', 'jpg', 'png']
577
        })
6682 nelberth 578
 
17178 stevensc 579
        // Configuración del editor de CKEditor para el formulario de creación
580
        CKEDITOR.replace('description_add', {
581
            toolbar: [
582
            { name: 'editing', items: ['Scayt'] },
583
            { name: 'links', items: ['Link', 'Unlink'] },
584
            {
585
                name: 'paragraph',
586
                items: [
587
                'NumberedList',
588
                'BulletedList',
589
                '-',
590
                'Outdent',
591
                'Indent',
592
                'Blockquote'
593
                ]
594
            },
595
            {
596
                name: 'basicstyles',
597
                items: ['Bold', 'Italic', 'Strike', 'RemoveFormat']
598
            },
599
            '/',
600
            {
601
                name: 'insert',
602
                items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar']
603
            },
604
            { name: 'styles', items: ['Styles', 'Format'] },
605
            { name: 'tools', items: ['Maximize'] }
606
            ],
607
            removePlugins: 'elementspath,Anchor',
608
            heigth: 100
609
        })
8583 nelberth 610
 
17178 stevensc 611
        // Configuración del editor de CKEditor para el formulario de edición
612
        CKEDITOR.replace('description_edit', {
613
            toolbar: [
614
            { name: 'editing', items: ['Scayt'] },
615
            { name: 'links', items: ['Link', 'Unlink'] },
616
            {
617
                name: 'paragraph',
618
                items: [
619
                'NumberedList',
620
                'BulletedList',
621
                '-',
622
                'Outdent',
623
                'Indent',
624
                'Blockquote'
625
                ]
626
            },
627
            {
628
                name: 'basicstyles',
629
                items: ['Bold', 'Italic', 'Strike', 'RemoveFormat']
630
            },
631
            '/',
632
            {
633
                name: 'insert',
634
                items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar']
635
            },
636
            { name: 'styles', items: ['Styles', 'Format'] },
637
            { name: 'tools', items: ['Maximize'] }
638
            ],
639
            removePlugins: 'elementspath,Anchor',
640
            heigth: 100
641
        })
642
    })
1 www 643
JS;
644
$this->inlineScript()->captureEnd();
645
?>
646
 
16905 efrain 647
<div class="container">
648
	<div class="card" id="row-listing">
649
	 	<div class="card-header">
650
	 		<h6 class="card-title">LABEL_CAPSULES</h6>
651
	 	</div>
17178 stevensc 652
 
16905 efrain 653
	 	<div class="card-body">
654
			<div class="row">
17178 stevensc 655
	 	        <div class="col-12 mt-3">
17061 stevensc 656
					<table id="gridTable" class="table table-bordered">
17178 stevensc 657
						<thead>
658
                            <tr>
659
                                <th>LABEL_NAME</th>
660
                                <th>LABEL_DETAILS</th>
661
                                <th>LABEL_IMAGES</th>
662
                                <th>LABEL_ACTIONS</th>
663
                            </tr>
664
						</thead>
16905 efrain 665
						<tbody>
666
						</tbody>
667
					</table>
17178 stevensc 668
	 	        </div>
669
	 	    </div>
16905 efrain 670
	 	</div>
17178 stevensc 671
 
16905 efrain 672
	 	<div class="card-footer text-right">
16992 efrain 673
			<button type="button" class="btn btn-info btn-refresh"><i class="fa fa-sync"></i> LABEL_REFRESH </button>
16905 efrain 674
			<?php if ($allowAdd) : ?>
675
			<button type="button" class="btn btn-primary btn-add"><i class="fa fa-plus"></i> LABEL_ADD </button>
676
			<?php endif; ?>
677
	 	</div>
15139 stevensc 678
	</div>
16905 efrain 679
 
680
	<div class="card" id="row-add" style="display: none">
681
	 	<div class="card-header">
682
	 		<h6 class="card-title">LABEL_ADD_CAPSULE</h6>
683
	 	</div>
17178 stevensc 684
 
16905 efrain 685
	 	<?php
15139 stevensc 686
		$form = $this->formAdd;
687
		$form->setAttributes([
688
			'method'  => 'post',
689
			'action'  => '',
16905 efrain 690
			'name'    => 'form-add',
691
			'id'      => 'form-add',
15139 stevensc 692
		]);
1 www 693
 
15139 stevensc 694
		$form->prepare();
695
		echo $this->form()->openTag($form);
696
		?>
697
 
17178 stevensc 698
            <div class="card-body">
699
                <div class="row">
700
                    <div class="col-12 mt-3">
16905 efrain 701
                        <?php
17178 stevensc 702
                        $element = $form->get('name');
703
 
16905 efrain 704
                        $element->setAttributes(['class' => 'form-control']);
17178 stevensc 705
                        $element->setOptions(['label' => 'LABEL_NAME']);
16905 efrain 706
                        echo $this->formLabel($element);
17178 stevensc 707
                        echo $this->formText($element);
16905 efrain 708
                        ?>
17178 stevensc 709
                    </div>
710
                </div>
711
 
712
                <div class="row">
713
                    <div class="col-12 mt-3">
16905 efrain 714
                        <?php
17178 stevensc 715
                        $element = $form->get('description');
716
                        $element->setAttributes(['id' => 'description_add', 'class' => 'form-control', 'rows' => '2', 'class' => 'form-control']);
717
                        $element->setOptions(['label' => 'LABEL_DESCRIPTION']);
718
                        echo $this->formLabel($element);
719
                        echo $this->formTextArea($element);
720
                        ?>
721
                    </div>
722
                </div>
723
 
724
                <div class="row">
725
                    <div class="col-12 mt-3">
726
                        <?php
727
                        $element = $form->get('file');
728
                        $element->setOptions(['label' => 'LABEL_IMAGE']);
16905 efrain 729
                        $element->setAttributes(['class' => 'form-control']);
730
                        $element->setAttributes(['accept' => 'image/jpg,image/jpeg,image/png']);
731
                        echo $this->formLabel($element);
732
                        echo $this->formFile($element);
733
                        ?>
17178 stevensc 734
                    </div>
735
                </div>
736
            </div>
737
 
738
            <div class="card-footer text-right">
739
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
740
                <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
741
            </div>
16905 efrain 742
	 	<?php echo $this->form()->closeTag($form); ?>
15139 stevensc 743
	</div>
16905 efrain 744
 
745
	<div class="card" id="row-edit" style="display: none">
746
	 	<div class="card-header">
747
	 		<h6 class="card-title">LABEL_EDIT_CAPSULE</h6>
748
	 	</div>
17178 stevensc 749
 
16905 efrain 750
	 	<?php
15139 stevensc 751
		$form = $this->formEdit;
752
		$form->setAttributes([
16905 efrain 753
		    'method'    => 'post',
754
		    'name'      => 'form-edit',
755
		    'id'        => 'form-edit'
15139 stevensc 756
		]);
1 www 757
 
15139 stevensc 758
		$form->prepare();
759
		echo $this->form()->openTag($form);
760
		?>
17178 stevensc 761
            <div class="card-body">
762
                <div class="row">
763
                    <div class="col-12 mt-3">
16905 efrain 764
                        <?php
17178 stevensc 765
                        $element = $form->get('name');
16905 efrain 766
                        $element->setAttributes(['class' => 'form-control']);
17178 stevensc 767
                        $element->setOptions(['label' => 'LABEL_NAME']);
16905 efrain 768
                        echo $this->formLabel($element);
17178 stevensc 769
                        echo $this->formText($element);
16905 efrain 770
                        ?>
17178 stevensc 771
                    </div>
772
                </div>
773
 
774
                <div class="row">
775
                    <div class="col-12 mt-3">
16905 efrain 776
                        <?php
17178 stevensc 777
                        $element = $form->get('description');
778
                        $element->setAttributes(['id' => 'description_edit', 'class' => 'form-control', 'rows' => '2', 'class' => 'form-control']);
779
                        $element->setOptions(['label' => 'LABEL_DESCRIPTION']);
16905 efrain 780
                        echo $this->formLabel($element);
17178 stevensc 781
                        echo $this->formTextArea($element);
16905 efrain 782
                        ?>
17178 stevensc 783
                    </div>
784
                </div>
785
 
786
                <div class="row">
787
                    <div class="col-12 mt-3">
788
                            <?php
789
                            $element = $form->get('file');
790
                            $element->setOptions(['label' => 'LABEL_IMAGE']);
791
                            $element->setAttributes(['class' => 'form-control']);
792
                            $element->setAttributes(['accept' => 'image/jpg,image/jpeg,image/png']);
793
                            echo $this->formLabel($element);
794
                            echo $this->formFile($element);
795
                            ?>
796
                    </div>
797
                </div>
798
            </div>
799
 
800
            <div class="card-footer text-right">
801
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
802
                <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
803
            </div>
16905 efrain 804
	 	<?php echo $this->form()->closeTag($form); ?>
15139 stevensc 805
	</div>
16905 efrain 806
</div>
15139 stevensc 807
 
1 www 808
<!-- The Modal -->
16905 efrain 809
<div class="modal" id="modalPreviewImage">
1 www 810
	<div class="modal-dialog ">
15139 stevensc 811
		<div class="modal-content">
1 www 812
 
15139 stevensc 813
			<!-- Modal Header -->
814
			<div class="modal-header">
16845 efrain 815
				<h6 class="modal-title">LABEL_IMAGE</h6>
16822 efrain 816
				<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="btn-close"></button>
15139 stevensc 817
			</div>
1 www 818
 
15139 stevensc 819
			<!-- Modal body -->
820
			<div class="modal-body text-center">
1 www 821
				<img src="" class="img img-responsive" style="width: 300px; height: auto" id="image-app" />
15139 stevensc 822
			</div>
823
 
824
			<!-- Modal footer -->
16891 efrain 825
			<div class="modal-footer text-right">
15139 stevensc 826
				<button type="button" class="btn btn-danger" data-dismiss="modal">LABEL_CLOSE</button>
827
			</div>
828
		</div>
1 www 829
	</div>
15139 stevensc 830
</div>