| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /tmp/sc/ |
Upload File : |
<?php
/* Smarty version 3.1.30, created on 2026-06-27 05:56:50
from "/var/www/clients/client1/web17/web/includes/templates/templates/worktime/dashboard.tpl" */
/* @var Smarty_Internal_Template $_smarty_tpl */
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array (
'version' => '3.1.30',
'unifunc' => 'content_6a3f4a02863b00_14625031',
'has_nocache_code' => false,
'file_dependency' =>
array (
'71e4471e4d851cfdc954819cea79caab397a6606' =>
array (
0 => '/var/www/clients/client1/web17/web/includes/templates/templates/worktime/dashboard.tpl',
1 => 1780829031,
2 => 'file',
),
),
'includes' =>
array (
),
),false)) {
function content_6a3f4a02863b00_14625031 (Smarty_Internal_Template $_smarty_tpl) {
if (!is_callable('smarty_modifier_date_format')) require_once '/var/www/clients/client1/web17/web/includes/plugins/smarty-3.1.30/plugins/modifier.date_format.php';
$_smarty_tpl->_assignInScope('kpi', $_smarty_tpl->tpl_vars['worktime']->value->dashboard());
$_smarty_tpl->_assignInScope('employees', $_smarty_tpl->tpl_vars['worktime']->value->employees());
$_smarty_tpl->_assignInScope('period', $_smarty_tpl->tpl_vars['worktime']->value->lastMonth());
$_smarty_tpl->_assignInScope('months', $_smarty_tpl->tpl_vars['worktime']->value->monthNames());
$_smarty_tpl->_assignInScope('years', $_smarty_tpl->tpl_vars['worktime']->value->years());
?>
<link rel="stylesheet" href="<?php echo @constant('SITE_URL');?>
/assets/css/worktime.css?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/css/worktime.css'));?>
">
<div class="container-fluid p-4" id="wt-dashboard">
<div class="d-flex flex-wrap justify-content-between align-items-center mb-4 gap-2">
<h1 class="h3 mb-0">Zeiterfassung</h1>
<div class="d-flex gap-2 align-items-center">
<select id="wt-month" class="form-select form-select-sm" style="width:auto;" aria-label="Monat">
<?php
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['months']->value, 'name', false, 'num');
if ($_from !== null) {
foreach ($_from as $_smarty_tpl->tpl_vars['num']->value => $_smarty_tpl->tpl_vars['name']->value) {
?><option value="<?php echo $_smarty_tpl->tpl_vars['num']->value;?>
"<?php if ($_smarty_tpl->tpl_vars['num']->value == (smarty_modifier_date_format(time(),"%m"))) {?> selected<?php }?>><?php echo $_smarty_tpl->tpl_vars['name']->value;?>
</option><?php
}
}
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl);
?>
</select>
<select id="wt-year" class="form-select form-select-sm" style="width:auto;" aria-label="Jahr">
<?php
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['years']->value, 'y');
if ($_from !== null) {
foreach ($_from as $_smarty_tpl->tpl_vars['y']->value) {
?><option value="<?php echo $_smarty_tpl->tpl_vars['y']->value;?>
"<?php if ($_smarty_tpl->tpl_vars['y']->value == (smarty_modifier_date_format(time(),"%Y"))) {?> selected<?php }?>><?php echo $_smarty_tpl->tpl_vars['y']->value;?>
</option><?php
}
}
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl);
?>
</select>
</div>
</div>
<div class="row g-3 mb-4" id="wt-kpis">
<div class="col-12 col-md-4">
<div class="card h-100 wt-kpi"><div class="card-body d-flex align-items-center gap-3">
<div class="wt-kpi-ico teal"><i class="material-icons">today</i></div>
<div>
<div class="wt-kpi-label">Heute</div>
<div class="wt-kpi-val"><span data-kpi="today_hours"><?php echo $_smarty_tpl->tpl_vars['kpi']->value->today_hours;?>
</span> <small>Std.</small></div>
<div class="wt-kpi-sub"><span data-kpi="today_employees"><?php echo $_smarty_tpl->tpl_vars['kpi']->value->today_employees;?>
</span> Mitarbeiter im Einsatz</div>
</div>
</div></div>
</div>
<div class="col-12 col-md-4">
<div class="card h-100 wt-kpi"><div class="card-body d-flex align-items-center gap-3">
<div class="wt-kpi-ico blue"><i class="material-icons">calendar_month</i></div>
<div>
<div class="wt-kpi-label" id="wt-month-label">Aktueller Monat</div>
<div class="wt-kpi-val"><span data-kpi="month_hours"><?php echo $_smarty_tpl->tpl_vars['kpi']->value->month_hours;?>
</span> <small>Std.</small></div>
<div class="wt-kpi-sub"><span data-kpi="month_employees"><?php echo $_smarty_tpl->tpl_vars['kpi']->value->month_employees;?>
</span> Mitarbeiter · Ø <span data-kpi="month_avg"><?php echo $_smarty_tpl->tpl_vars['kpi']->value->month_avg;?>
</span> Std.</div>
</div>
</div></div>
</div>
<div class="col-12 col-md-4">
<div class="card h-100 wt-kpi"><div class="card-body d-flex align-items-center gap-3">
<div class="wt-kpi-ico yellow"><i class="material-icons">history</i></div>
<div id="wt-last">
<div class="wt-kpi-label">Letzte Erfassung</div>
<?php if ($_smarty_tpl->tpl_vars['kpi']->value->last) {?>
<div class="wt-kpi-val" style="font-size:18px;"><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['kpi']->value->last->first_name, ENT_QUOTES, 'UTF-8', true);?>
<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['kpi']->value->last->last_name, ENT_QUOTES, 'UTF-8', true);?>
</div>
<div class="wt-kpi-sub"><?php echo $_smarty_tpl->tpl_vars['kpi']->value->last->date;?>
, <?php echo $_smarty_tpl->tpl_vars['kpi']->value->last->end_time;?>
Uhr · <?php echo $_smarty_tpl->tpl_vars['kpi']->value->last->work_hours;?>
Std.</div>
<?php } else { ?>
<div class="wt-kpi-sub">Noch keine Erfassung.</div>
<?php }?>
</div>
</div></div>
</div>
</div>
<div class="row g-3">
<div class="col-12 col-xl-8">
<div class="card shadow-sm h-100">
<div class="card-body">
<div id="calendar"></div>
</div>
</div>
</div>
<div class="col-12 col-xl-4">
<div class="card shadow-sm h-100">
<div class="card-header fw-bold d-flex align-items-center gap-2"><i class="material-icons sm">bolt</i> Schnell-Erfassung</div>
<div class="card-body">
<form id="workHoursForm" class="row g-2">
<input type="hidden" name="id" id="workHourId">
<div class="col-12">
<label for="selectEmployee" class="form-label">Mitarbeiter</label>
<div id="wtPickerInline" class="wt-picker"></div>
</div>
<div class="col-12">
<label for="workDate" class="form-label">Datum</label>
<input type="date" class="form-control" id="workDate" name="date" required>
</div>
<div class="col-6">
<label for="startTime" class="form-label">Beginn</label>
<input type="time" class="form-control" id="startTime" name="start_time" required>
</div>
<div class="col-6">
<label for="endTime" class="form-label">Ende</label>
<input type="time" class="form-control" id="endTime" name="end_time" required>
</div>
<div class="col-12">
<label for="breakDuration" class="form-label">Pause (Min.)</label>
<input type="number" class="form-control" id="breakDuration" name="break_duration" min="0" max="240" step="5" value="0">
</div>
<div class="col-12">
<div class="wt-live" id="wt-live">Arbeitszeit: <strong>–</strong></div>
</div>
<div class="col-12 d-flex gap-2">
<button type="submit" class="btn btn-primary flex-grow-1" id="saveButton"><i class="material-icons sm">save</i> Speichern</button>
<button type="button" class="btn btn-light border" id="cancelButton" style="display:none;">Abbrechen</button>
</div>
<div class="col-12"><div class="small" id="wt-form-status"></div></div>
</form>
</div>
</div>
</div>
</div>
<div class="row g-3 mt-0">
<div class="col-12 col-xl-4">
<div class="card shadow-sm h-100"><div class="card-header fw-bold">Stunden pro Tag (akt. Monat)</div><div class="card-body"><canvas id="chartDays" height="200"></canvas></div></div>
</div>
<div class="col-12 col-xl-4">
<div class="card shadow-sm h-100"><div class="card-header fw-bold">Stunden je Mitarbeiter</div><div class="card-body"><canvas id="chartEmp" height="200"></canvas></div></div>
</div>
<div class="col-12 col-xl-4">
<div class="card shadow-sm h-100"><div class="card-header fw-bold">Verteilung je Woche</div><div class="card-body"><canvas id="chartWeek" height="200"></canvas></div></div>
</div>
</div>
</div>
<div class="offcanvas offcanvas-end" tabindex="-1" id="dayPanel" aria-labelledby="dayPanelTitle" data-bs-backdrop="false" data-bs-scroll="true" style="width:560px;max-width:95vw;">
<div class="offcanvas-header border-bottom">
<div>
<h5 class="offcanvas-title mb-0" id="dayPanelTitle">Tag</h5>
<div class="text-muted small" id="dayPanelSummary"></div>
</div>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Schließen"></button>
</div>
<div class="offcanvas-body">
<div class="d-flex justify-content-end mb-3">
<button type="button" class="btn btn-sm btn-primary" id="dayAddBtn"><i class="material-icons sm">add</i> Arbeitszeit erfassen</button>
</div>
<div id="dayPanelBody"></div>
</div>
</div>
<div class="modal fade" id="captureModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<form id="captureForm" autocomplete="off">
<div class="modal-header">
<h5 class="modal-title" id="captureTitle">Arbeitszeit erfassen</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Schließen"></button>
</div>
<div class="modal-body">
<input type="hidden" name="id" id="capId">
<div class="row g-3">
<div class="col-12"><label class="form-label">Mitarbeiter</label><div id="wtPickerCap" class="wt-picker"></div></div>
<div class="col-12"><label class="form-label">Datum</label><input type="date" class="form-control" id="capDate" name="date" required></div>
<div class="col-6"><label class="form-label">Beginn</label><input type="time" class="form-control" id="capStart" name="start_time" required></div>
<div class="col-6"><label class="form-label">Ende</label><input type="time" class="form-control" id="capEnd" name="end_time" required></div>
<div class="col-12"><label class="form-label">Pause (Min.)</label><input type="number" class="form-control" id="capBreak" name="break_duration" min="0" max="240" step="5" value="0"></div>
<div class="col-12"><div class="wt-live" id="cap-live">Arbeitszeit: <strong>–</strong></div></div>
</div>
<div class="alert alert-danger mt-3 d-none" id="cap-error"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-bs-dismiss="modal">Abbrechen</button>
<button type="submit" class="btn btn-primary" id="capSave"><i class="material-icons sm">save</i> Speichern</button>
</div>
</form>
</div>
</div>
</div>
<?php echo '<script'; ?>
src="<?php echo @constant('SITE_URL');?>
/assets/js/plugins/fullcalendar.min.js"><?php echo '</script'; ?>
>
<?php echo '<script'; ?>
src="<?php echo @constant('SITE_URL');?>
/assets/js/plugins/fullcalendar-de.min.js"><?php echo '</script'; ?>
>
<?php echo '<script'; ?>
src="<?php echo @constant('SITE_URL');?>
/assets/js/plugins/chart.min.js"><?php echo '</script'; ?>
>
<?php echo '<script'; ?>
src="<?php echo @constant('SITE_URL');?>
/assets/js/worktime-dashboard.js?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/js/worktime-dashboard.js'));?>
"><?php echo '</script'; ?>
>
<?php }
}