Miglioramento timeline

This commit is contained in:
Thomas Zilio 2018-07-14 10:59:14 +02:00
parent 79c3c7b369
commit cf309b3632
3 changed files with 236 additions and 23 deletions

View File

@ -180,6 +180,9 @@ if (Modules::getPermission($permesso) == 'r' || Modules::getPermission($permesso
// Inserimento iniziale
if (starts_with(post('op'), 'add')) {
// Informazioni di log
Filter::set('get', 'id_record', $id_record);
foreach ($values as $key => $value) {
$dbo->insert('zz_field_record', [
'id_record' => $id_record,

View File

@ -364,7 +364,7 @@ span.form-control {
.info-box-text {
white-space: normal;
overflow: auto;
font-size: 12px;
font-size: 12px;
}
.colorpicker,
@ -536,11 +536,9 @@ input.small-width {
width: 90%;
margin-top: 20px
}
.main-header .logo {
.main-header .logo {
display: none;
}
/*
.content-wrapper,
.right-side,
@ -583,27 +581,34 @@ input.small-width {
margin: 5%;
}
}
.callout a{
text-decoration: none;
.callout a {
text-decoration: none;
}
.dropdown-menu{
.dropdown-menu {
min-width: 130px;
}
/*fix per tabs editor */
.nav-tabs-custom > .nav-tabs > li{
border-top: 3px solid #ddd;
.nav-tabs-custom>.nav-tabs>li {
border-top: 3px solid #ddd;
}
.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a{
border-right-color: #f4f4f4;
border-right-width : 1px;
border-left-width : 0px;
.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type.active>a {
border-right-color: #f4f4f4;
border-right-width: 1px;
border-left-width: 0px;
}
.nav-tabs-custom > .nav-tabs > li.header{
padding:0px;
.nav-tabs-custom>.nav-tabs>li.header {
padding: 0px;
}
.nav-tabs-custom > .nav-tabs > li{
margin-bottom:-1px;
margin-right: 0px;
.nav-tabs-custom>.nav-tabs>li {
margin-bottom: -1px;
margin-right: 0px;
}
.ui-autocomplete {
@ -618,6 +623,169 @@ input.small-width {
background-clip: padding-box;
}
.parsley-errors-list{
.parsley-errors-list {
color: red;
}
/** TIMELINE */
.timeline {
list-style: none;
padding: 20px 0 20px;
position: relative;
}
.timeline:before {
top: 0;
bottom: 0;
position: absolute;
content: " ";
width: 3px;
background-color: #eeeeee;
left: 50%;
margin-left: -4.5px;
}
.timeline>li {
margin-bottom: 20px;
position: relative;
}
.timeline>li:before,
.timeline>li:after {
content: " ";
display: table;
}
.timeline>li:after {
clear: both;
}
.timeline>li:before,
.timeline>li:after {
content: " ";
display: table;
}
.timeline>li:after {
clear: both;
}
.timeline>li>.timeline-panel {
width: 50%;
float: left;
border: 1px solid #d4d4d4;
border-radius: 2px;
padding: 20px;
position: relative;
-webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175);
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175);
}
.timeline>li.timeline-inverted+li:not(.timeline-inverted),
.timeline>li:not(.timeline-inverted)+li.timeline-inverted {
margin-top: -60px;
}
.timeline>li:not(.timeline-inverted) {
padding-right: 90px;
}
.timeline>li.timeline-inverted {
padding-left: 90px;
}
.timeline>li>.timeline-panel:before {
position: absolute;
top: 26px;
right: -15px;
display: inline-block;
border-top: 15px solid transparent;
border-left: 15px solid #ccc;
border-right: 0 solid #ccc;
border-bottom: 15px solid transparent;
content: " ";
}
.timeline>li>.timeline-panel:after {
position: absolute;
top: 27px;
right: -14px;
display: inline-block;
border-top: 14px solid transparent;
border-left: 14px solid #fff;
border-right: 0 solid #fff;
border-bottom: 14px solid transparent;
content: " ";
}
.timeline>li>.timeline-badge {
color: #fff;
width: 50px;
height: 50px;
line-height: 50px;
font-size: 1.4em;
text-align: center;
position: absolute;
top: 16px;
left: 50%;
margin-left: -25px;
background-color: #999999;
z-index: 100;
border-top-right-radius: 50%;
border-top-left-radius: 50%;
border-bottom-right-radius: 50%;
border-bottom-left-radius: 50%;
}
.timeline>li.timeline-inverted>.timeline-panel {
float: right;
}
.timeline>li.timeline-inverted>.timeline-panel:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
.timeline>li.timeline-inverted>.timeline-panel:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
.timeline-badge.primary {
background-color: #2e6da4 !important;
}
.timeline-badge.success {
background-color: #3f903f !important;
}
.timeline-badge.warning {
background-color: #f0ad4e !important;
}
.timeline-badge.danger {
background-color: #d9534f !important;
}
.timeline-badge.info {
background-color: #5bc0de !important;
}
.timeline-title {
margin-top: 0;
color: inherit;
}
.timeline-body>p,
.timeline-body>ul {
margin-bottom: 0;
}
.timeline-body>p+p {
margin-top: 5px;
}

View File

@ -74,7 +74,7 @@ if (empty($records)) {
// Tab per le informazioni sulle operazioni
if (Auth::admin()) {
echo '
<li>
<li class="bg-warning">
<a data-toggle="tab" href="#tab_info" id="link-tab_info">'.tr('Info').'</a>
</li>';
}
@ -220,13 +220,55 @@ if (empty($records)) {
if (Auth::admin()) {
echo '
<div id="tab_info" class="tab-pane">
<ul>';
<ul class="timeline">';
$operations = $dbo->fetchArray('SELECT `zz_operations`.*, `zz_users`.`username` FROM `zz_operations` JOIN `zz_users` ON `zz_operations`.`id_utente` = `zz_users`.`id` WHERE id_module = '.prepare($id_module).' AND id_record = '.prepare($id_record).' ORDER BY `created_at` DESC LIMIT 200');
$operations = $dbo->fetchArray('SELECT `zz_operations`.*, `zz_users`.`username` FROM `zz_operations` JOIN `zz_users` ON `zz_operations`.`id_utente` = `zz_users`.`id` WHERE id_module = '.prepare($id_module).' AND id_record = '.prepare($id_record).' ORDER BY `created_at` ASC LIMIT 200');
foreach ($operations as $operation) {
$description = $operation['op'];
$icon = 'pencil-square-o';
$color = null;
$timeline = null;
switch ($operation['op']) {
case 'add':
$description = tr('Creazione');
$icon = 'plus';
$color = 'success';
break;
case 'update':
$description = tr('Modifica');
$icon = 'pencil';
$color = 'info';
break;
case 'delete':
$description = tr('Eliminazione');
$icon = 'times';
$color = 'danger';
break;
default:
$timeline = ' class="timeline-inverted"';
break;
}
echo '
<li>'.$operation['username'].': '.$operation['op'].' - '.Translator::timestampToLocale($operation['created_at']).'</li>';
<li'.$timeline.'>
<div class="timeline-badge '.$color.'"><i class="fa fa-'.$icon.'"></i></div>
<div class="timeline-panel">
<div class="timeline-heading">
<h4 class="timeline-title">'.$description.'</h4>
<p><small class="text-muted"><i class="fa fa-clock-o"></i> '.Translator::timestampToLocale($operation['created_at']).'</small></p>
</div>
<div class="timeline-body">
<p>'.tr('Utente: _USER_', [
'_USER_' => $operation['username'],
]).'</p>
</div>
</div>
</li>';
}
echo '