| 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/imports/manager.tpl" */
/* @var Smarty_Internal_Template $_smarty_tpl */
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array (
'version' => '3.1.30',
'unifunc' => 'content_6a3f4a02cfaba7_80033158',
'has_nocache_code' => false,
'file_dependency' =>
array (
'ebcad464ac92351c77992e08f1fac327dfde19d3' =>
array (
0 => '/var/www/clients/client1/web17/web/includes/templates/templates/imports/manager.tpl',
1 => 1781612799,
2 => 'file',
),
),
'includes' =>
array (
'file:imports/_daygroups.tpl' => 2,
),
),false)) {
function content_6a3f4a02cfaba7_80033158 (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('ov', $_smarty_tpl->tpl_vars['importmanager']->value->overview(7));
$_smarty_tpl->_assignInScope('aidaGrouped', $_smarty_tpl->tpl_vars['importmanager']->value->recentFilesByCategory('aida_bookings',7));
$_smarty_tpl->_assignInScope('parkGrouped', $_smarty_tpl->tpl_vars['importmanager']->value->recentFilesByCategory('parkinglist',7));
?>
<link rel="stylesheet" href="<?php echo @constant('SITE_URL');?>
/assets/css/imports.css">
<link rel="stylesheet" href="<?php echo @constant('SITE_URL');?>
/assets/css/cockpit.css?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/css/cockpit.css'));?>
">
<div class="container-fluid p-4">
<div class="d-flex flex-wrap justify-content-between align-items-center mb-3">
<h1 class="h3 mb-0">Import-Manager</h1>
<div class="d-flex gap-2 align-items-center">
<?php echo $_smarty_tpl->tpl_vars['importmanager']->value->aidaButton();?>
<a href="<?php echo @constant('SITE_URL');?>
/mobile/calendar.php?token=nico" target="_blank" class="btn btn-outline-primary btn-sm">Anreisen</a>
</div>
</div>
<ul class="nav nav-tabs mb-3" role="tablist">
<li class="nav-item"><button class="nav-link active" data-bs-toggle="tab" data-bs-target="#im-overview" type="button" role="tab">Übersicht</button></li>
<li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#im-aida" type="button" role="tab">AIDA <span class="badge bg-secondary ms-1"><?php echo $_smarty_tpl->tpl_vars['ov']->value['aidaFiles'];?>
</span></button></li>
<li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#im-parking" type="button" role="tab">ParkingList <span class="badge bg-secondary ms-1"><?php echo $_smarty_tpl->tpl_vars['ov']->value['parkingFiles'];?>
</span></button></li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="im-overview" role="tabpanel">
<div class="row g-3 mb-4">
<div class="col-6 col-xl-3">
<div class="card h-100"><div class="stat">
<div class="stat-icon blue"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="4" width="18" height="4" rx="1"/><path d="M5 8v11a1 1 0 001 1h12a1 1 0 001-1V8M9 12h6"/></svg></div>
<div class="stat-content"><div class="stat-label">Importdateien · 7 Tage</div>
<div class="stat-value-row"><span class="stat-value"><?php echo $_smarty_tpl->tpl_vars['ov']->value['totalFiles'];?>
</span></div>
<div class="stat-subtext">an <?php echo $_smarty_tpl->tpl_vars['ov']->value['importDays'];?>
Tag(en)</div>
</div>
</div></div>
</div>
<div class="col-6 col-xl-3">
<div class="card h-100"><div class="stat">
<div class="stat-icon teal"><i class="material-icons">directions_boat</i></div>
<div class="stat-content"><div class="stat-label">AIDA-Listen</div>
<div class="stat-value-row"><span class="stat-value"><?php echo $_smarty_tpl->tpl_vars['ov']->value['aidaFiles'];?>
</span></div>
<div class="stat-subtext"><?php if ($_smarty_tpl->tpl_vars['ov']->value['lastAida']) {?>zuletzt <?php echo smarty_modifier_date_format($_smarty_tpl->tpl_vars['ov']->value['lastAida'],"%d.%m. %H:%M");
} else { ?>—<?php }?></div>
</div>
</div></div>
</div>
<div class="col-6 col-xl-3">
<div class="card h-100"><div class="stat">
<div class="stat-icon green"><i class="material-icons">local_parking</i></div>
<div class="stat-content"><div class="stat-label">ParkingList</div>
<div class="stat-value-row"><span class="stat-value"><?php echo $_smarty_tpl->tpl_vars['ov']->value['parkingFiles'];?>
</span></div>
<div class="stat-subtext"><?php if ($_smarty_tpl->tpl_vars['ov']->value['lastParking']) {?>zuletzt <?php echo smarty_modifier_date_format($_smarty_tpl->tpl_vars['ov']->value['lastParking'],"%d.%m. %H:%M");
} else { ?>noch keine<?php }?></div>
</div>
</div></div>
</div>
<div class="col-6 col-xl-3">
<div class="card h-100"><div class="stat">
<div class="stat-icon yellow"><i class="material-icons">directions_car</i></div>
<div class="stat-content"><div class="stat-label">Fahrzeuge importiert · 7 Tage</div>
<div class="stat-value-row"><span class="stat-value"><?php echo number_format($_smarty_tpl->tpl_vars['ov']->value['vehicles'],0,",",".");?>
</span></div>
<div class="stat-subtext">aus allen Quellen</div>
</div>
</div></div>
</div>
</div>
<div class="card shadow-sm mb-4" id="importUploader">
<div class="card-header d-flex align-items-center gap-2">
<span class="fw-bold">Datei prüfen</span>
<span class="badge bg-warning text-dark">Dry-Run</span>
<span class="text-muted small ms-auto">erkennt automatisch AIDA-Liste oder ParkingList</span>
</div>
<div class="card-body">
<div id="dropZone" class="border rounded p-4 text-center text-muted" style="border-style:dashed !important;cursor:pointer;">
<input type="file" id="importFile" accept=".csv,.xls,.xlsx,.txt" class="d-none">
<div><i class="material-icons" style="font-size:40px;opacity:.6;">cloud_upload</i></div>
<div class="mt-1">Datei hierher ziehen oder <span class="text-primary fw-semibold">auswählen</span></div>
<div class="small mt-1">CSV (ParkingList) oder Excel (AIDA-Liste) · max. 20 MB</div>
</div>
<div class="d-flex align-items-center gap-2 mt-3">
<span id="importFileName" class="small text-muted"></span>
<button class="btn btn-primary ms-auto" id="importCheckBtn" disabled><i class="material-icons sm">science</i> Prüfen (Dry-Run)</button>
</div>
<div class="alert alert-info small mt-3 mb-0"><strong>Hinweis:</strong> Im Dry-Run werden die Daten nur gelesen und angezeigt – es wird nichts importiert oder gespeichert.</div>
<div id="uploadResult" class="mt-3"></div>
</div>
</div>
<?php $_smarty_tpl->_assignInScope('plog', $_smarty_tpl->tpl_vars['importmanager']->value->parkingImportLog(7));
?>
<?php if ($_smarty_tpl->tpl_vars['plog']->value) {?>
<div class="card shadow-sm mb-4">
<div class="card-header fw-bold">Letzte ParkingList-Importe (7 Tage)</div>
<div class="table-responsive">
<table class="table table-sm table-hover align-middle mb-0">
<thead><tr><th>Datei</th><th>Zeitpunkt</th><th class="text-end">Neu</th><th class="text-end">Aktualisiert</th><th class="text-end">Übersprungen</th></tr></thead>
<tbody>
<?php
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['plog']->value, 'e');
if ($_from !== null) {
foreach ($_from as $_smarty_tpl->tpl_vars['e']->value) {
?>
<tr>
<td><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['e']->value['name'], ENT_QUOTES, 'UTF-8', true);?>
</td>
<td class="small text-muted"><?php echo smarty_modifier_date_format($_smarty_tpl->tpl_vars['e']->value['dt'],"%d.%m.%Y %H:%M");?>
Uhr</td>
<td class="text-end"><span class="badge bg-success"><?php echo $_smarty_tpl->tpl_vars['e']->value['created'];?>
</span></td>
<td class="text-end"><span class="badge bg-warning text-dark"><?php echo $_smarty_tpl->tpl_vars['e']->value['updated'];?>
</span></td>
<td class="text-end"><span class="badge bg-secondary"><?php echo $_smarty_tpl->tpl_vars['e']->value['skipped'];?>
</span></td>
</tr>
<?php
}
}
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl);
?>
</tbody>
</table>
</div>
</div>
<?php }?>
<div class="text-muted small">Es werden ausschließlich Importe der letzten 7 Tage angezeigt.</div>
</div>
<div class="tab-pane fade" id="im-aida" role="tabpanel">
<div class="card shadow-sm mb-4">
<div class="card-body py-2">
<div class="d-flex align-items-center gap-2">
<input type="text" id="live-import-search" class="form-control" autocomplete="off"
placeholder="Suche: Name, Buchung, Kennzeichen, Kabine, Cruise-ID ...">
<button type="button" id="clear-live-import-search" class="btn btn-link text-muted px-2">✕</button>
<div class="spinner-border spinner-border-sm text-primary d-none" id="live-search-loader" role="status"></div>
</div>
<div id="live-search-status" class="small text-muted mt-1"></div>
</div>
</div>
<div id="live-search-wrapper" class="mb-4" style="display:none;">
<div class="h4 mb-3" id="live-search-header">0 Suchergebnisse</div>
<div id="live-search-results"></div>
</div>
<div id="default-import-list">
<?php $_smarty_tpl->_subTemplateRender("file:imports/_daygroups.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array('grouped'=>$_smarty_tpl->tpl_vars['aidaGrouped']->value,'emptyText'=>"Keine AIDA-Importe in den letzten 7 Tagen."), 0, false);
?>
</div>
</div>
<div class="tab-pane fade" id="im-parking" role="tabpanel">
<div class="d-flex align-items-center justify-content-between mb-3">
<div class="text-muted small">Täglicher Auto-Import aus dem ParkingList-Dashboard (ganzer Monat).</div>
<button type="button" class="btn btn-outline-secondary btn-sm" data-bs-toggle="modal" data-bs-target="#plSettingsModal"><i class="material-icons sm" style="vertical-align:-4px;">vpn_key</i> Zugangsdaten</button>
</div>
<?php if ($_smarty_tpl->tpl_vars['parkGrouped']->value) {?>
<?php $_smarty_tpl->_subTemplateRender("file:imports/_daygroups.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array('grouped'=>$_smarty_tpl->tpl_vars['parkGrouped']->value,'emptyText'=>"Keine ParkingList-Importe in den letzten 7 Tagen."), 0, true);
?>
<?php } else { ?>
<div class="alert alert-secondary d-flex align-items-center gap-2">
<i class="material-icons">local_parking</i>
<div>Keine ParkingList-Importe in den letzten 7 Tagen. Lade in der <strong>Übersicht</strong> eine ParkingList-CSV hoch, um sie zu prüfen.</div>
</div>
<?php }?>
</div>
</div>
</div>
<!-- Modal: Excel-Vorschau -->
<div class="modal fade" id="excelModal" tabindex="-1" aria-labelledby="excelModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="excelModalLabel">Excel-Datei</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Schließen"></button>
</div>
<div class="modal-body" id="excelModalBody"><div class="text-muted">Datei wird geladen ...</div></div>
</div>
</div>
</div>
<!-- Modal: Rückgängig-Ausgabe -->
<div class="modal fade" id="shellModal" tabindex="-1" aria-labelledby="shellModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="shellModalLabel">Rückgängig – Ausgabe</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Schließen"></button>
</div>
<div class="modal-body" id="shellModalBody"><div class="text-muted">Keine Ausgabe.</div></div>
</div>
</div>
</div>
<!-- Modal: ParkingList-Zugangsdaten -->
<div class="modal fade" id="plSettingsModal" tabindex="-1" aria-labelledby="plSettingsLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="plSettingsLabel"><i class="material-icons sm" style="vertical-align:-4px;">vpn_key</i> ParkingList – Zugangsdaten</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Schließen"></button>
</div>
<div class="modal-body">
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="plEnabled">
<label class="form-check-label" for="plEnabled">Automatischer Import aktiv</label>
</div>
<div class="mb-3">
<label class="form-label" for="plUser">Benutzer / E-Mail</label>
<input type="text" class="form-control" id="plUser" autocomplete="off" placeholder="service@parken-am-schiff.de">
</div>
<div class="mb-2">
<label class="form-label" for="plPass">Passwort</label>
<input type="password" class="form-control" id="plPass" autocomplete="new-password" placeholder="•••••••• (leer = unverändert)">
<div class="form-text" id="plPassHint">Wird verschlüsselt gespeichert.</div>
</div>
<div id="plStatus" class="small mt-2"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-bs-dismiss="modal">Abbrechen</button>
<button type="button" class="btn btn-primary" id="plSave"><i class="material-icons sm" style="vertical-align:-4px;">save</i> Speichern</button>
</div>
</div>
</div>
</div>
<?php echo '<script'; ?>
src="<?php echo @constant('SITE_URL');?>
/assets/js/imports.js"><?php echo '</script'; ?>
>
<?php echo '<script'; ?>
src="<?php echo @constant('SITE_URL');?>
/assets/js/imports-overview.js?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/js/imports-overview.js'));?>
"><?php echo '</script'; ?>
>
<?php }
}