Quelltext des aktuellen Standes
<?php
/**
* Partial: Body des Wartungstermine-Widgets (Lazy-Load).
*
* Wird vom Endpoint /dashboard/widget/maintenance gerendert und per fetch in
* den Skeleton-Container (#mtBody) eingesetzt. Das Wurzel-Element trägt
* data-urgent, damit der Loader das "X dringend"-Badge im Header aktualisieren
* kann.
*
* Erwartete Variablen: $maintenance_upcoming, $maintenance_urgent_count, $icon_style
*/
$maintenanceUpcoming = $maintenance_upcoming ?? [];
$urgentCount = (int)($maintenance_urgent_count ?? 0);
$_useFA = ($icon_style ?? 'fontawesome') === 'fontawesome';
$checkIcon = $_useFA ? '<i class="fa-solid fa-check"></i>' : '✓';
?>
<div data-urgent="<?= $urgentCount ?>">
<?php if (empty($maintenanceUpcoming)): ?>
<div style="padding:1.25rem 1rem;text-align:center;color:var(--gray-500);font-size:.85rem">
<span style="font-size:1.5rem"><?= $checkIcon ?></span><br><?= $this->te('Keine Termine in den nächsten 60 Tagen') ?>
</div>
<?php else: ?>
<div style="overflow:hidden">
<?php
$srcColors = [
'ssl' => ['#dc2626', '#fef2f2', 'SSL'],
'asset' => ['#d97706', '#fff7ed', 'Asset'],
'contract' => ['#7c3aed', '#f5f3ff', 'Vertrag'],
'manual' => ['#1d4ed8', '#eff6ff', 'Manuell'],
'license' => ['#059669', '#ecfdf5', 'Lizenz'],
'configlog' => ['#6366f1', '#eef2ff', 'Änderung'],
];
foreach ($maintenanceUpcoming as $me):
[$fg, $bg, $lbl] = $srcColors[$me['source']] ?? ['#6b7280', '#f3f4f6', '?'];
if ($me['urgent']) { $fg = '#dc2626'; $bg = '#fef2f2'; }
$daysLeft = (int)$me['days_left'];
$daysLabel = $daysLeft === 0 ? 'heute' : ($daysLeft === 1 ? 'morgen' : 'in ' . $daysLeft . 'd');
$dateFormatted = (new DateTime($me['date']))->format('d.m.Y');
?>
<div style="display:flex;align-items:center;gap:.5rem;padding:.45rem 1rem;border-bottom:1px solid var(--gray-100)">
<span style="flex-shrink:0;font-size:.7rem;font-weight:700;color:<?= $fg ?>;background:<?= $bg ?>;padding:.15rem .45rem;border-radius:.25rem;min-width:42px;text-align:center">
<?= $lbl ?>
</span>
<span style="flex:1;min-width:0;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">
<?php if (!empty($me['url'])): ?>
<a href="<?= $this->e($me['url']) ?>" style="color:inherit;text-decoration:none;font-weight:500"><?= $this->e($me['title']) ?></a>
<?php else: ?>
<strong><?= $this->e($me['title']) ?></strong>
<?php endif; ?>
</span>
<span style="flex-shrink:0;font-size:.72rem;color:<?= $me['urgent'] ? 'var(--red-600)' : 'var(--gray-400)' ?>;white-space:nowrap" title="<?= $dateFormatted ?>">
<?= $daysLabel ?>
</span>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>