Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 17247 | Rev 17252 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 17247 Rev 17251
Línea 1... Línea 1...
1
<?php
1
<?php
-
 
2
// Obtiene el ACL y el usuario actual
2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser    = $this->currentUserHelper();
4
$currentUser    = $this->currentUserHelper();
Línea -... Línea 5...
-
 
5
 
4
 
6
// Obtiene el tipo de usuario actual
Línea 5... Línea -...
5
$roleName = $currentUser->getUserTypeId();
-
 
-
 
7
$roleName = $currentUser->getUserTypeId();
6
 
8
 
7
 
9
// Define las rutas para agregar, listar y el dashboard
8
$routeAdd       = $this->url('media/categories/add');
10
$routeAdd       = $this->url('media/categories/add');
Línea -... Línea 11...
-
 
11
$routeDatatable = $this->url('media/categories');
9
$routeDatatable = $this->url('media/categories');
12
$routeDashboard = $this->url('dashboard');
10
$routeDashboard = $this->url('dashboard');
13
 
11
 
14
// Verifica los permisos para agregar, editar y eliminar
Línea 12... Línea -...
12
$allowAdd               = $acl->isAllowed($roleName, 'media/categories/add') ? 1 : 0;
-
 
13
$allowEdit              = $acl->isAllowed($roleName, 'media/categories/edit') ? 1 : 0;
-
 
-
 
15
$allowAdd               = $acl->isAllowed($roleName, 'media/categories/add') ? 1 : 0;
14
$allowDelete            = $acl->isAllowed($roleName, 'media/categories/delete') ? 1 : 0;
16
$allowEdit              = $acl->isAllowed($roleName, 'media/categories/edit') ? 1 : 0;
15
 
17
$allowDelete            = $acl->isAllowed($roleName, 'media/categories/delete') ? 1 : 0;
Línea 16... Línea -...
16
 
-
 
17
 
-
 
18
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/nprogress/nprogress.css'));
-
 
19
$this->inlineScript()->appendFile($this->basePath('assets/vendors/nprogress/nprogress.js'));
-
 
20
 
18
 
Línea 21... Línea 19...
21
 
19
// Agrega los estilos y scripts necesarios
22
 
20
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/nprogress/nprogress.css'));
Línea 23... Línea 21...
23
 
21
$this->inlineScript()->appendFile($this->basePath('assets/vendors/nprogress/nprogress.js'));
24
 
22
 
25
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net/jquery.dataTables.js'));
23
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net/jquery.dataTables.js'));
26
 
24
 
Línea 27... Línea -...
27
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.css'));
-
 
28
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.css'));
-
 
29
 
-
 
-
 
25
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.css'));
30
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net/jquery.dataTables.js'));
26
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.css'));
31
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.js'));
27
 
32
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/dataTables.responsive.min.js'));
28
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net/jquery.dataTables.js'));
Línea 33... Línea -...
33
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.min.js'));
-
 
34
 
-
 
-
 
29
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.js'));
35
 
30
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/dataTables.responsive.min.js'));
36
 
31
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.min.js'));
Línea -... Línea 32...
-
 
32
 
37
 
33
// Inicia el script de JavaScript
38
$this->inlineScript()->captureStart();
34
$this->inlineScript()->captureStart();
39
echo <<<JS
35
echo <<<JS
40
    jQuery( document ).ready(function( $ ) {
36
    jQuery( document ).ready(function( $ ) {
41
 
37
 
42
        
38
        // Define permisos de edición y eliminación
43
        
39
        var allowEdit   = $allowEdit;
44
        var allowEdit   = $allowEdit;
40
        var allowDelete = $allowDelete;
45
        var allowDelete = $allowDelete;
41
        
46
        
42
        // Configura la tabla de datos
47
        var gridTable = $('#gridTable').dataTable( {
43
        var gridTable = $('#gridTable').dataTable( {
48
            'processing': true,
44
            'processing': true,
49
            'serverSide': true,
45
            'serverSide': true,
50
            'searching': true,
46
            'searching': true,
51
            'order': [[ 0, 'asc' ]],
47
            'order': [[ 0, 'asc' ]],
52
            'ordering':  true,
48
            'ordering':  true,
53
            'ordenable' : true,
49
            'ordenable' : true,
54
            'responsive': true,
50
            'responsive': true,
-
 
51
            'select' : false,
55
            'select' : false,
52
            'paging': true,
56
        	'paging': true,
53
            'pagingType': 'simple_numbers',
57
            'pagingType': 'simple_numbers',
54
            'ajax': {
58
    		'ajax': {
55
                'url' : '$routeDatatable',
59
    			'url' : '$routeDatatable',
56
                'type' : 'get',
60
    			'type' : 'get',
57
                'beforeSend': function (request) {
61
                'beforeSend': function (request) {
58
                  NProgress.start();
62
                  NProgress.start();
-
 
63
                },
59
                },
64
                'dataFilter': function(response) {
60
                'dataFilter': function(response) {
65
                    console.log(response);
61
                    try {
66
                    var response = JSON.parse(response);
62
                        console.log(response); // Para depuración
67
                    
63
                        var jsonResponse = JSON.parse(response);
68
                    var json                = {};
64
 
69
                    json.recordsTotal       = 0;
65
                        var json = {};
-
 
66
                        json.recordsTotal = 0;
-
 
67
                        json.recordsFiltered = 0;
-
 
68
                        json.data = [];
-
 
69
 
-
 
70
                        if (jsonResponse.success) {
-
 
71
                            json.recordsTotal = jsonResponse.data.total;
-
 
72
                            json.recordsFiltered = jsonResponse.data.total;
70
                    json.recordsFiltered    = 0;
73
                            json.data = jsonResponse.data.items;
71
                    json.data               = [];
-
 
72
                    
-
 
73
                    
74
                        } else {
74
                    if(response.success) {
75
                            $.fn.showError(jsonResponse.data);
75
                        json.recordsTotal       = response.data.total;
76
                        }
76
                        json.recordsFiltered    = response.data.total;
77
 
77
                        json.data               = response.data.items;
78
                        return JSON.stringify(json);
78
                    } else {
79
                    } catch (e) {
79
                        $.fn.showError(response.data)
80
                        console.error("Error parsing JSON response:", e);
Línea 111... Línea 112...
111
                
112
                
112
            },
113
            },
113
            'aoColumns': [
114
            'aoColumns': [
114
                { 'mDataProp': 'name' },
115
                { 'mDataProp': 'name' },
115
                { 'mDataProp': 'actions' },
116
                { 'mDataProp': 'actions' },
116
    	    ],
117
            ],
117
            'columnDefs': [
118
            'columnDefs': [
118
                {
119
                {
119
                    'targets': 0,
120
                    'targets': 0,
120
                    'className' : 'text-vertical-middle',
121
                    'className' : 'text-vertical-middle',
Línea 136... Línea 137...
136
                    }
137
                    }
137
                }
138
                }
138
              ],
139
              ],
139
        });
140
        });
Línea 140... Línea -...
140
        
-
 
-
 
141
        
141
        
142
        // Configura el validador del formulario
142
        var validator = $('#form').validate({
143
        var validator = $('#form').validate({
143
            debug: true,
144
            debug: true,
144
            onclick: false,
145
            onclick: false,
145
            onkeyup: false,
146
            onkeyup: false,
Línea 187... Línea 188...
187
            invalidHandler: function(form, validator) {
188
            invalidHandler: function(form, validator) {
Línea 188... Línea 189...
188
            
189
            
189
            }
190
            }
Línea -... Línea 191...
-
 
191
        });
190
        });
192
        
191
        
193
        // Maneja el evento de clic para agregar una nueva categoría
Línea 192... Línea 194...
192
        $('body').on('click', 'button.btn-add', function(e) {
194
        $('body').on('click', 'button.btn-add', function(e) {
Línea 199... Línea 201...
199
            
201
            
200
            validator.resetForm();
202
            validator.resetForm();
201
            $('#modal').modal('show');
203
            $('#modal').modal('show');
Línea -... Línea 204...
-
 
204
        });
202
        });
205
        
203
        
206
        // Maneja el evento de clic para editar una categoría
204
        $('body').on('click', 'button.btn-edit', function(e) {
207
        $('body').on('click', 'button.btn-edit', function(e) {
205
            e.preventDefault();
208
            e.preventDefault();
Línea 211... Línea 214...
211
                'accept'    : 'application/json',
214
                'accept'    : 'application/json',
212
                'method'    : 'get',
215
                'method'    : 'get',
213
                'url'       :  action,
216
                'url'       :  action,
214
            }).done(function(response) {
217
            }).done(function(response) {
215
                if(response['success']) {
218
                if(response['success']) {
216
                
219
                    
Línea 217... Línea 220...
217
                    
220
                    
218
                    $('#form').attr('action', action);
221
                    $('#form').attr('action', action);
Línea 219... Línea 222...
219
                    $('#form #name').val(response['data']['name']);
222
                    $('#form #name').val(response['data']['name']);
Línea 229... Línea 232...
229
            }).always(function() {
232
            }).always(function() {
230
                NProgress.done();
233
                NProgress.done();
231
            });
234
            });
232
        });
235
        });
Línea -... Línea 236...
-
 
236
        
233
        
237
        // Maneja el evento de clic para eliminar una categoría
234
    $('body').on('click', 'button.btn-delete', function(e) {
238
    $('body').on('click', 'button.btn-delete', function(e) {
235
        e.preventDefault();
239
        e.preventDefault();
Línea 266... Línea 270...
266
                }
270
                }
267
           });
271
           });
Línea 268... Línea 272...
268
 
272
 
Línea -... Línea 273...
-
 
273
        });
269
        });
274
       
270
       
275
        // Maneja el evento de clic para refrescar la tabla
271
        $('body').on('click', 'button.btn-refresh', function(e) {
276
        $('body').on('click', 'button.btn-refresh', function(e) {
272
            e.preventDefault();
277
            e.preventDefault();
Línea 273... Línea -...
273
            gridTable.api().ajax.reload(null, false);
-
 
-
 
278
            gridTable.api().ajax.reload(null, false);
274
        });
279
        });
275
        
280
        
276
        
281
        // Maneja el evento de clic para cancelar y cerrar el modal
277
        $('body').on('click', 'button.btn-cancel', function(e) {
282
        $('body').on('click', 'button.btn-cancel', function(e) {