Proyectos de Subversion LeadersLinked - Backend

Rev

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

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