Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16971 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
16822 efrain 1
<?php
1 www 2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser    = $this->currentUserHelper();
4
 
5
$roleName = $currentUser->getUserTypeId();
6
 
16822 efrain 7
 
1 www 8
$routeAdd       = $this->url('settings/degrees/add');
9
$routeDatatable = $this->url('settings/degrees');
10
$routeDashboard = $this->url('dashboard');
11
 
12
$allowAdd               = $acl->isAllowed($roleName, 'settings/degrees/add') ? 1 : 0;
13
$allowEdit              = $acl->isAllowed($roleName, 'settings/degrees/edit') ? 1 : 0;
14
$allowDelete            = $acl->isAllowed($roleName, 'settings/degrees/delete') ? 1 : 0;
15
 
16830 efrain 16
$this->inlineScript()->appendFile($this->basePath('assets/vendors/ckeditor/ckeditor.js'));
16822 efrain 17
 
1 www 18
 
16822 efrain 19
 
16829 efrain 20
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/nprogress/nprogress.css'));
21
$this->inlineScript()->appendFile($this->basePath('assets/vendors/nprogress/nprogress.js'));
16822 efrain 22
 
16829 efrain 23
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-maxlenght/bootstrap-maxlength.js'));
16822 efrain 24
 
16829 efrain 25
 
26
 
16929 efrain 27
 
28
 
29
 
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'));
32
 
33
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net/jquery.dataTables.js'));
34
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.js'));
35
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/dataTables.responsive.min.js'));
36
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.min.js'));
37
 
38
 
16829 efrain 39
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
40
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
16822 efrain 41
 
1 www 42
 
16822 efrain 43
 
44
 
45
 
46
$status_active = \LeadersLinked\Model\Degree::STATUS_ACTIVE;
47
 
48
$this->inlineScript()->captureStart();
49
echo <<<JS
50
    jQuery( document ).ready(function( $ ) {
51
 
16929 efrain 52
 
16822 efrain 53
 
54
 
55
        var allowEdit   = $allowEdit;
56
        var allowDelete = $allowDelete;
57
 
58
        var gridTable = $('#gridTable').dataTable( {
59
            'processing': true,
60
            'serverSide': true,
61
            'searching': true,
62
            'order': [[ 0, 'asc' ]],
63
            'ordering':  true,
64
            'ordenable' : true,
65
            'responsive': true,
66
            'select' : false,
67
        	'paging': true,
68
            'pagingType': 'simple_numbers',
69
    		'ajax': {
70
    			'url' : '$routeDatatable',
71
    			'type' : 'get',
72
                'beforeSend': function (request) {
73
                  NProgress.start();
74
                },
75
                'dataFilter': function(response) {
76
                    var response = jQuery.parseJSON( response );
77
 
78
                    var json                = {};
79
                    json.recordsTotal       = 0;
80
                    json.recordsFiltered    = 0;
81
                    json.data               = [];
82
 
83
 
84
                    if(response.success) {
85
                        json.recordsTotal       = response.data.total;
86
                        json.recordsFiltered    = response.data.total;
87
                        json.data               = response.data.items;
88
                    } else {
89
                        $.fn.showError(response.data)
90
                    }
91
 
92
                    return JSON.stringify( json );
93
                }
94
    		},
95
            'language' : {
96
                'sProcessing':     'LABEL_DATATABLE_SPROCESSING',
97
                'sLengthMenu':     'LABEL_DATATABLE_SLENGTHMENU',
98
                'sZeroRecords':    'LABEL_DATATABLE_SZERORECORDS',
99
                'sEmptyTable':     'LABEL_DATATABLE_SEMPTYTABLE',
100
                'sInfo':           'LABEL_DATATABLE_SINFO',
101
                'sInfoEmpty':      'LABEL_DATATABLE_SINFOEMPTY',
102
                'sInfoFiltered':   'LABEL_DATATABLE_SINFOFILTERED',
103
                'sInfoPostFix':    '',
104
                'sSearch':         'LABEL_DATATABLE_SSEARCH',
105
                'sUrl':            '',
106
                'sInfoThousands':  ',',
107
                'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
108
                'oPaginate': {
109
                    'sFirst':    'LABEL_DATATABLE_SFIRST',
110
                    'sLast':     'LABEL_DATATABLE_SLAST',
111
                    'sNext':     'LABEL_DATATABLE_SNEXT',
112
                    'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
113
                },
114
                'oAria': {
115
                    'sSortAscending':  ': LABEL_DATATABLE_SSORTASCENDING',
116
                    'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
117
                },
118
            },
119
            'drawCallback': function( settings ) {
120
                NProgress.done();
121
 
122
            },
123
            'aoColumns': [
124
                { 'mDataProp': 'name' },
125
                { 'mDataProp': 'status' },
126
                { 'mDataProp': 'actions' },
127
    	    ],
128
            'columnDefs': [
129
                {
130
                    'targets': 0,
131
                    'className' : 'text-vertical-middle',
132
                },
133
                {
134
                    'targets': -2,
135
                    'orderable': false,
136
                    'className' : 'text-center',
137
                      'render' : function ( data, type, row ) {
138
 
139
                        checked = data == 'a'  ? 'checked' : '';
140
                        return '<div class="form-check">' +
16971 efrain 141
                            '<input type="checkbox" class="form-check-input" disabled="" ' + checked + '>' +
16822 efrain 142
                            '<label class="form-check-label" for="checkCheckedDisabled"></label></div>' ;
143
                    }
144
                },
145
                {
146
                    'targets': -1,
147
                    'orderable': false,
148
                    'render' : function ( data, type, row ) {
149
                        s = '';
150
 
151
                        if(allowEdit) {
16906 efrain 152
                            s = s + '<button class="btn btn-primary btn-edit" data-href="' + data['link_edit']+ '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pen"></i> LABEL_EDIT </button>&nbsp;';
16822 efrain 153
                        }
154
                        if(allowDelete) {
155
                            s = s + '<button class="btn btn-danger btn-delete" data-href="' + data['link_delete']+ '" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-trash"></i> LABEL_DELETE </button>&nbsp;';
156
                        }
157
                        return s;
158
                    }
159
                }
160
              ],
161
        });
162
 
163
 
164
        var validator = $('#form').validate({
165
            debug: true,
166
            onclick: false,
167
            onkeyup: false,
168
            ignore: [],
169
            rules: {
170
                'name': {
171
                    required: true,
172
                    maxlength: 64,
173
                },
174
                'description': {
175
                    updateCkeditor:function() {
176
                        CKEDITOR.instances.description.updateElement();
177
                    },
178
                    required: true,
179
                },
180
                'status': {
181
                    required: false,
182
 
183
                },
184
            },
185
            submitHandler: function(form)
186
            {
187
                $.ajax({
188
                    'dataType'  : 'json',
189
                    'accept'    : 'application/json',
190
                    'method'    : 'post',
191
                    'url'       :  $('#form').attr('action'),
192
                    'data'      :  $('#form').serialize()
193
                }).done(function(response) {
194
                    NProgress.start();
195
                    if(response['success']) {
196
                        $.fn.showSuccess(response['data']);
197
 
198
                        $('#modal').modal('hide');
199
 
200
 
201
                         gridTable.api().ajax.reload(null, false);
202
                    } else {
203
                        validator.resetForm();
204
                        if(jQuery.type(response['data']) == 'string') {
205
                            $.fn.showError(response['data']);
206
                        } else  {
207
                            $.each(response['data'], function( fieldname, errors ) {
208
                                $.fn.showFormErrorValidator('#form #' + fieldname, errors);
209
                            });
210
                        }
211
                    }
212
                }).fail(function( jqXHR, textStatus, errorThrown) {
213
                   $.fn.showError(textStatus);
214
                }).always(function() {
215
                    NProgress.done();
216
                });
217
                return false;
218
            },
219
            invalidHandler: function(form, validator) {
220
 
221
            }
222
        });
223
 
224
        $('body').on('click', 'button.btn-add', function(e) {
225
            e.preventDefault();
226
 
16840 efrain 227
 
16822 efrain 228
            $('#form').attr('action', '$routeAdd');
229
            $('#form #name').val('');
230
            $('#form #status').bootstrapToggle('on');
231
            CKEDITOR.instances.description.setData('');
232
 
233
            validator.resetForm();
234
            $('#modal').modal('show');
235
        });
236
 
237
        $('body').on('click', 'button.btn-edit', function(e) {
238
            e.preventDefault();
239
            NProgress.start();
240
            var action = $(this).data('href');
241
 
242
            $.ajax({
243
                'dataType'  : 'json',
244
                'accept'    : 'application/json',
245
                'method'    : 'get',
246
                'url'       :  action,
247
            }).done(function(response) {
248
                if(response['success']) {
249
 
16840 efrain 250
 
16822 efrain 251
                    $('#form').attr('action', action);
252
                    $('#form #name').val(response['data']['name']);
253
                    $('#form #status').bootstrapToggle(response['data']['status'] == '$status_active' ? 'on' : 'off')
254
                    CKEDITOR.instances.description.setData(response['data']['description']);
255
 
256
                    validator.resetForm();
257
 
258
                    $('#modal').modal('show');
259
                } else {
260
                    $.fn.showError(response['data']);
261
                }
262
            }).fail(function( jqXHR, textStatus, errorThrown) {
263
                $.fn.showError(textStatus);
264
            }).always(function() {
265
                NProgress.done();
266
            });
267
        });
268
 
269
    $('body').on('click', 'button.btn-delete', function(e) {
270
        e.preventDefault();
271
        var action = $(this).data('href');
272
 
273
 
274
          swal.fire({
275
            title: 'LABEL_ARE_YOU_SURE',
276
            icon: 'question',
277
            cancelButtonText: 'LABEL_NO',
278
            showCancelButton: true,
279
            confirmButtonText: 'LABEL_YES'
280
          }).then((result) => {
281
            if (result.isConfirmed) {
282
 
283
                    NProgress.start();
284
                    $.ajax({
285
                        'dataType'  : 'json',
286
                        'accept'    : 'application/json',
287
                        'method'    : 'post',
288
                        'url'       :  action,
289
                    }).done(function(response) {
290
                        if(response['success']) {
291
                            $.fn.showSuccess(response['data']);
292
                            gridTable.api().ajax.reload(null, false);
293
                        } else {
294
                            $.fn.showError(response['data']);
295
                        }
296
                    }).fail(function( jqXHR, textStatus, errorThrown) {
297
                        $.fn.showError(textStatus);
298
                    }).always(function() {
299
                        NProgress.done();
300
                    });
16829 efrain 301
                }
302
            });
303
        });
16822 efrain 304
 
305
        $('body').on('click', 'button.btn-refresh', function(e) {
306
            e.preventDefault();
307
            gridTable.api().ajax.reload(null, false);
308
        });
309
 
310
 
311
        $('body').on('click', 'button.btn-cancel', function(e) {
312
            e.preventDefault();
313
            $('#modal').modal('hide');
314
        });
315
 
316
 
317
        $('#form #status').bootstrapToggle({'on' : 'LABEL_ACTIVE',  'off' : 'LABEL_INACTIVE', 'width' : '160px', 'height' : '40px'});
318
        CKEDITOR.replace( 'description')
319
    });
5682 stevensc 320
JS;
16822 efrain 321
$this->inlineScript()->captureEnd();
1 www 322
?>
16822 efrain 323
 
1 www 324
 
16822 efrain 325
 
326
<div class="container">
327
    	<div class="row">
16891 efrain 328
        	<div class="col-12 mt-3">
16822 efrain 329
				<div class="card">
16829 efrain 330
 
16822 efrain 331
					<div class="card-body">
16829 efrain 332
                        <h6 class="card-title">LABEL_DEGREES</h6>
16822 efrain 333
						<div class="row">
16841 efrain 334
							<div class="col-12  mt-3">
16845 efrain 335
    							<table id="gridTable" class="table   table-bordered">
16822 efrain 336
                              		<thead>
337
                						<tr>
338
                                        	<th>LABEL_NAME</th>
339
                                          	<th>LABEL_ACTIVE</th>
340
                                          	<th>LABEL_ACTIONS</th>
341
                                        </tr>
342
                               		</thead>
343
                                 	<tbody>
344
                                 	</tbody>
345
                            	</table>
346
							</div>
347
						</div>
348
 
349
                   	</div>
350
                   	<div class="card-footer text-right">
351
 
16992 efrain 352
							<button type="button" class="btn btn-info btn-refresh"><i class="fa fa-sync"></i> LABEL_REFRESH  </button>
16822 efrain 353
							<?php if($allowAdd) : ?>
354
							<button type="button" class="btn btn-primary btn-add"><i class="fa fa-plus"></i> LABEL_ADD </button>
355
							<?php endif; ?>
356
 
357
                 	</div>
358
          		</div>
359
           	</div>
360
        </div>
361
</div>
362
 
363
<!-- The Modal -->
364
<div class="modal" id="modal">
365
	<div class="modal-dialog  modal-xl">
366
    	<div class="modal-content">
367
 
368
            <!-- Modal Header -->
369
      		<div class="modal-header">
16845 efrain 370
        		<h6 class="modal-title">LABEL_DEGREES</h6>
16822 efrain 371
        		<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="btn-close"></button>
372
      		</div>
373
 
374
            <!-- Modal body -->
16831 efrain 375
            <?php
16822 efrain 376
                    $form = $this->form;
377
            		$form->setAttributes([
378
                        'method'    => 'post',
379
                        'name'      => 'form',
380
                        'id'        => 'form'
381
                    ]);
382
 
383
                    $form->prepare();
384
                    echo $this->form()->openTag($form);
16831 efrain 385
                    ?>
386
 
387
      		<div class="modal-body">
388
 
389
    					<div class="row">
16841 efrain 390
                            <div class="col-12  mr-3">
16822 efrain 391
        					<?php
392
                            $element = $form->get('name');
393
                            $element->setOptions(['label' => 'LABEL_NAME']);
394
                            $element->setAttributes(['class' => 'form-control']);
395
 
396
                            echo $this->formLabel($element);
397
                            echo $this->formText($element);
398
                            ?>
16831 efrain 399
                            </div>
16822 efrain 400
						</div>
16831 efrain 401
						<div class="row">
16841 efrain 402
                            <div class="col-12  mr-3">
16822 efrain 403
                    	<?php
404
                            $element = $form->get('description');
405
                            $element->setOptions(['label' => 'LABEL_DESCRIPTION']);
406
                            $element->setAttributes(['class' => 'form-control']);
407
 
408
                            echo $this->formLabel($element);
409
                            echo $this->formTextArea($element);
410
                        ?>
16831 efrain 411
                            </div>
16822 efrain 412
						</div>
16831 efrain 413
						<div class="row">
16841 efrain 414
                            <div class="col-12  mr-3">
16822 efrain 415
                      	<?php
416
                            $element = $form->get('status');
417
                            echo $this->formCheckbox($element);
418
                        ?>
16831 efrain 419
                            </div>
16822 efrain 420
						</div>
421
 
16831 efrain 422
 
423
 
424
 
16822 efrain 425
      		</div>
426
 
427
            <!-- Modal footer -->
16891 efrain 428
      		<div class="modal-footer text-right">
16831 efrain 429
              <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
430
                    		<button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
16822 efrain 431
      		</div>
16831 efrain 432
              <?php echo $this->form()->closeTag($form); ?>
16822 efrain 433
 
434
    	</div>
435
	</div>
436
</div>
437
 
438
 
439
 
440
 
441