Continuo migrando, estoy perfilando activity y los settings

This commit is contained in:
imnavajas
2024-05-01 22:13:00 +02:00
parent dce9e08cf6
commit 54de3402f3
62 changed files with 698 additions and 425 deletions

View File

@ -1,6 +1,6 @@
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
<?= $this->include("themes/_commonPartialsBs/datatables") ?>
<?= $this->extend('themes/backend/vuexy/main/activities_layout') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<!--Content Body-->
@ -137,31 +137,25 @@
<div class="col-sm-6">
<h4 class="card-title"><?= $title['page']??'' ?></h4>
</div>
<?php if (session()->get('dashboard')=='admin') : ?>
<div class="col-sm-6 justify-content-sm-end mt-2 mt-sm-0 d-flex">
<a href="<?= site_url("activity/all")?>" class="btn btn-primary float-md-right">
<?=lang("App.activity_all_btn")?>
</a>
</div>
<?php endif; ?>
</div>
<div class="card-body">
<!-- CSRF token -->
<input type="hidden" class="txt_csrfname" name="<?= csrf_token() ?>" value="<?= csrf_hash() ?>" />
<!-- Table -->
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<div class="table-responsive">
<table id='table-grid' class="table table-striped nowrap" style="width:100%">
<table id='activityTable' class="table table-striped table-hover" style="width:100%">
<thead>
<tr>
<th><?=lang("App.activity_grid_user")?></th>
<th><?=lang("App.activity_grid_level")?></th>
<th><?=lang("App.activity_grid_event")?></th>
<th><?=lang("App.activity_grid_ip")?></th>
<th><?=lang("App.activity_grid_os")?></th>
<th><?=lang("App.activity_grid_browser")?></th>
<th><?=lang("App.activity_grid_created")?></th>
<th><?=lang("Actividad.user")?></th>
<th><?=lang("Actividad.level")?></th>
<th><?=lang("Actividad.event")?></th>
<th><?=lang("Actividad.ip")?></th>
<th><?=lang("Actividad.os")?></th>
<th><?=lang("Actividad.browser")?></th>
<th><?=lang("Actividad.createdAt")?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
@ -174,48 +168,112 @@
<?= $this->endSection() ?>
<?= $this->section('additionalInlineJs') ?>
"use strict";
$(document).ready(function () {
let dataFormat = [
{
targets: 1,
render: function ( data, type, row ) {
switch (data) {
case 'error':
return '<span class="badge bg-danger"><?=lang("App.activity_alert_error")?></span>';
case 'recovery':
return '<span class="badge bg-secondary"><?=lang("App.activity_alert_recovery")?></span>';
case 'throttling':
return '<span class="badge bg-warning"><?=lang("App.activity_alert_throttling")?></span>';
case 'information':
return '<span class="badge bg-primary"><?=lang("App.activity_alert_information")?></span>';
default:
return '<span class="badge bg-primary">'+data+'</span>';
}
}
},
{
targets: 2,
render: function ( data, type, row ) {
switch (data) {
case 'login-authenticate':
return '<?=lang("App.activity_alert_login_auth")?>';
case 'recovery-password':
return '<?=lang("App.activity_alert_recovery")?>';
default:
return data;
}
}
},
{
targets: 6,
//render: $.fn.dataTable.render.moment('YYYY-MM-DD HH:mm:ss','<?=momentDateTimeJS()?>')
const lastColNr = $('#activityTable').find("tr:first th").length - 1;
const actionBtns = function(data) {
return `<td class="text-right py-0 align-middle">
<div class="btn-group btn-group-sm">
<button class="btn btn-sm btn-danger btn-delete ms-1" data-id="${data.id}"><?= lang('Basic.global.Delete') ?></button>
</div>
</td>`;
};
theTable = $('#activityTable').DataTable({
processing: true,
serverSide: true,
autoWidth: true,
responsive: true,
scrollX: true,
lengthMenu: [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ],
pageLength: 10,
lengthChange: true,
"dom": 'lfBrtip',
"buttons": [
'copy', 'csv', 'excel', 'print', {
extend: 'pdfHtml5',
orientation: 'landscape',
pageSize: 'A4'
}
];
let order = [[6, "desc"]];
let translate = '/themes/focus2/vendor/datatables/locales/<?=langJS()?>.json';
let button = ["<?=lang("App.global_copy")?>","<?=lang("App.global_print")?>","<?=lang("App.global_excel")?>","<?=lang("App.global_pdf")?>"];
let columns = [{ data: 'name' },{ data: 'level' },{ data: 'event' },{ data: 'ip' },{ data: 'os' },{ data: 'browser' },{ data: 'created_at' }];
loadDataTableAjax('table-grid', '<?=site_url("ajax/getActivities".$all??"")?>', translate, true, true, order, columns,dataFormat, button);
],
stateSave: true,
order: [[1, 'asc']],
language: {
url: "/themes/vuexy/vendors/libs/datatables-sk/plugins/i18n/es-ES.json"
},
ajax : $.fn.dataTable.pipeline( {
url: '<?= route_to('dataTableOfActividad') ?>',
method: 'POST',
headers: {'X-Requested-With': 'XMLHttpRequest'},
async: true,
}),
columnDefs: [
{
orderable: false,
searchable: false,
targets: [lastColNr]
}
],
columns : [
{ 'data': 'user' },
{ 'data': 'level' },
{ 'data': 'event' },
{ 'data': 'ip' },
{ 'data': 'os' },
{ 'data': 'browser' },
{ 'data': 'created_at' },
{ 'data': actionBtns }
]
});
theTable.on( 'draw.dt', function () {
const boolCols = [7];
for (let coln of boolCols) {
theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) {
cell.innerHTML = cell.innerHTML == '1' ? '<i class="text-success bi bi-check-lg"></i>' : '';
});
}
});
/*$(document).on('click', '.btn-delete', function(e) {
Swal.fire({
title: '<?= lang('Basic.global.sweet.sureToDeleteTitle', [mb_strtolower(lang('Paises.pais'))]) ?>',
text: '<?= lang('Basic.global.sweet.sureToDeleteText') ?>',
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
confirmButtonText: '<?= lang('Basic.global.sweet.deleteConfirmationButton') ?>',
cancelButtonText: '<?= lang('Basic.global.Cancel') ?>',
cancelButtonColor: '#d33'
})
.then((result) => {
const dataId = $(this).data('id');
const row = $(this).closest('tr');
if (result.value) {
$.ajax({
url: `<?= route_to('activityList') ?>/${dataId}`,
method: 'DELETE',
}).done((data, textStatus, jqXHR) => {
Toast.fire({
icon: 'success',
title: data.msg ?? jqXHR.statusText,
});
theTable.clearPipeline();
theTable.row($(row)).invalidate().draw();
}).fail((jqXHR, textStatus, errorThrown) => {
Toast.fire({
icon: 'error',
title: jqXHR.responseJSON.messages.error,
});
})
}
});
});*/
<?= $this->endSection() ?>

View File

@ -1,234 +0,0 @@
<!--Content Body-->
<div class="content-body">
<div class="container-fluid">
<div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0">
<div class="welcome-text">
<h4><i class="<?= $title['icon']??'' ?>"></i> <?= $title['module']??'' ?></h4>
<span class="ml-1"><?= $title['page']??'' ?></span>
</div>
</div>
<div class="col-sm-6 p-md-0 justify-content-sm-end mt-2 mt-sm-0 d-flex">
<ol class="breadcrumb">
<?php foreach ($breadcrumb??[] as $item) : ?>
<?php if (!$item['active']) : ?>
<li class="breadcrumb-item"><a href="<?= site_url($item['route']) ?>"><?= $item['title'] ?></a></li>
<?php else : ?>
<li class="breadcrumb-item active"><?= $item['title'] ?></li>
<?php endif; ?>
<?php endforeach; ?>
</ol>
</div>
</div>
<div class="row">
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fab fa-windows text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.activity_top_windows"))?></div>
<div class="stat-digit"><?=$logs['windows']??'0'?></div>
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fab fa-apple text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.activity_top_mac"))?></div>
<div class="stat-digit"><?=$logs['mac']??'0'?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fab fa-linux text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.activity_top_linux"))?></div>
<div class="stat-digit"><?=$logs['linux']??'0'?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fab fa-android text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.activity_top_mobile"))?></div>
<div class="stat-digit"><?=($logs['android']??'0') + ($logs['iphone']??'0')?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fab fa-edge text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.activity_top_edge"))?></div>
<div class="stat-digit"><?=($logs['ie']??'0') + ($logs['edge']??'0')?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fab fa-safari text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.activity_top_safari"))?></div>
<div class="stat-digit"><?=$logs['safari']??'0'?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fab fa-firefox-browser text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.activity_top_firefox"))?></div>
<div class="stat-digit"><?=$logs['firefox']??'0'?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="stat-widget-one card-body">
<div class="d-inline-block">
<i class="fab fa-chrome text-pink fa-3x"></i>
</div>
<div class="stat-content d-inline-block">
<div class="stat-text text-pink"><?=strtoupper(lang("App.activity_top_chrome"))?></div>
<div class="stat-digit"><?=$logs['chrome']??'0'?></div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header row">
<div class="col-sm-6">
<h4 class="card-title"><?= $title['page']??'' ?></h4>
</div>
<?php if (session()->get('dashboard')=='admin') : ?>
<div class="col-sm-6 justify-content-sm-end mt-2 mt-sm-0 d-flex">
<a href="<?= site_url("activity/all")?>" class="btn btn-lg btn-primary float-md-right">
<i class="fas fa-eye"></i> <?=lang("App.activity_all_btn")?></a>
</div>
<?php endif; ?>
</div>
<div class="card-body">
<!-- CSRF token -->
<input type="hidden" class="txt_csrfname" name="<?= csrf_token() ?>" value="<?= csrf_hash() ?>" />
<!-- Table -->
<div class="table-responsive">
<table id='table-grid' class="table table-striped nowrap" style="width:100%">
<thead>
<tr>
<th><?=lang("App.activity_grid_user")?></th>
<th><?=lang("App.activity_grid_level")?></th>
<th><?=lang("App.activity_grid_event")?></th>
<th><?=lang("App.activity_grid_ip")?></th>
<th><?=lang("App.activity_grid_os")?></th>
<th><?=lang("App.activity_grid_browser")?></th>
<th><?=lang("App.activity_grid_created")?></th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Required vendors -->
<script src="<?=site_url("themes/focus2/vendor/global/global.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/js/quixnav-init.js")?>"></script>
<script src="<?=site_url("themes/focus2/js/custom.min.js")?>"></script>
<!-- Datatable -->
<script src="<?=site_url("themes/focus2/vendor/datatables/js/jquery.dataTables.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/pickers/daterange/moment.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/datatables/js/dataTables.datetime.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/datatables/js/dataTables.buttons.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/datatables/js/buttons.bootstrap4.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/datatables/js/jszip.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/datatables/js/pdfmake.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/datatables/js/vfs_fonts.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/datatables/js/buttons.html5.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/datatables/js/buttons.print.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/datatables/js/buttons.colVis.min.js")?>"></script>
<!-- Alert -->
<script src="<?=site_url("themes/focus2/vendor/sweetalert2/dist/sweetalert2.min.js")?>"></script>
<script src="<?=site_url("themes/focus2/vendor/toastr/js/toastr.min.js")?>"></script>
<!-- Custom -->
<script src="<?=site_url("assets/js/main.js")?>"></script>
<script>
"use strict";
$(document).ready(function () {
let dataFormat = [
{
targets: 1,
render: function ( data, type, row ) {
switch (data) {
case 'error':
return '<span class="badge badge-danger"><?=lang("App.activity_alert_error")?></span>';
case 'recovery':
return '<span class="badge badge-secondary"><?=lang("App.activity_alert_recovery")?></span>';
case 'throttling':
return '<span class="badge badge-warning"><?=lang("App.activity_alert_throttling")?></span>';
case 'information':
return '<span class="badge badge-primary"><?=lang("App.activity_alert_information")?></span>';
default:
return '<span class="badge badge-primary">'+data+'</span>';
}
}
},
{
targets: 2,
render: function ( data, type, row ) {
switch (data) {
case 'login-authenticate':
return '<?=lang("App.activity_alert_login_auth")?>';
case 'recovery-password':
return '<?=lang("App.activity_alert_recovery")?>';
default:
return data;
}
}
},
{
targets: 6,
render: $.fn.dataTable.render.moment('YYYY-MM-DD HH:mm:ss','<?=momentDateTimeJS()?>')
}
];
let order = [[6, "desc"]];
let translate = '/themes/focus2/vendor/datatables/locales/<?=langJS()?>.json';
let button = ["<?=lang("App.global_copy")?>","<?=lang("App.global_print")?>","<?=lang("App.global_excel")?>","<?=lang("App.global_pdf")?>"];
let columns = [{ data: 'name' },{ data: 'level' },{ data: 'event' },{ data: 'ip' },{ data: 'os' },{ data: 'browser' },{ data: 'created_at' }];
loadDataTableAjax('table-grid', '<?=site_url("ajax/getActivities".$all??"")?>', translate, true, true, order, columns,dataFormat, button);
});
</script>