OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

_widget_maintenance_body.php

3 KB
<?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>