|
- <div class="d-flex justify-content-between align-items-center mb-4">
- <h1 class="h3 mb-0">PrintStream Import</h1>
- <form method="POST" action="/admin/cron/run">
- <button type="submit" class="btn btn-success">
- <i class="bi bi-play-fill me-1"></i>Run Now
- </button>
- </form>
- </div>
-
- <div class="row g-4">
-
- <!-- Schedule Settings -->
- <div class="col-12 col-lg-5">
- <div class="card h-100">
- <div class="card-header fw-semibold">
- <i class="bi bi-clock me-1"></i>Schedule
- </div>
- <div class="card-body">
- <form method="POST" action="/admin/cron/settings">
-
- <div class="mb-4">
- <div class="form-check form-switch">
- <input class="form-check-input" type="checkbox" role="switch"
- id="enabled" name="enabled"
- <?= ($settings['enabled'] ?? true) ? 'checked' : '' ?>>
- <label class="form-check-label fw-semibold" for="enabled">
- Import Enabled
- </label>
- </div>
- <div class="form-text">When disabled, the background cron will skip every run.</div>
- </div>
-
- <div class="mb-4">
- <label for="interval_minutes" class="form-label fw-semibold">Run every</label>
- <select class="form-select" id="interval_minutes" name="interval_minutes">
- <?php foreach ([5, 10, 15, 30, 60] as $min): ?>
- <option value="<?= $min ?>"
- <?= (int) ($settings['interval_minutes'] ?? 30) === $min ? 'selected' : '' ?>>
- <?= $min ?> minutes
- </option>
- <?php endforeach; ?>
- </select>
- </div>
-
- <p class="text-muted small mb-4">
- <i class="bi bi-clock-history me-1"></i>
- <?php if (!empty($settings['last_run'])): ?>
- Last run: <strong><?= e($settings['last_run']) ?></strong>
- <?php else: ?>
- Never run
- <?php endif; ?>
- </p>
-
- <button type="submit" class="btn btn-primary">
- <i class="bi bi-floppy me-1"></i>Save
- </button>
-
- </form>
- </div>
- </div>
- </div>
-
- <!-- Board Status -->
- <div class="col-12 col-lg-7">
- <div class="card h-100">
- <div class="card-header fw-semibold">
- <i class="bi bi-kanban me-1"></i>Board Import Status
- </div>
- <?php if (empty($boards)): ?>
- <div class="card-body text-muted text-center py-4">No boards exist yet.</div>
- <?php else: ?>
- <div class="table-responsive">
- <table class="table table-sm table-hover align-middle mb-0">
- <thead class="table-light">
- <tr>
- <th>Board</th>
- <th class="text-center" style="width:110px">Status</th>
- <th style="width:90px"></th>
- </tr>
- </thead>
- <tbody>
- <?php foreach ($boards as $board): ?>
- <tr>
- <td>
- <a href="/board/<?= e($board->slug) ?>" class="text-decoration-none">
- <?= e($board->name) ?>
- </a>
- </td>
- <td class="text-center">
- <?php if ($board->importFromPrintstream): ?>
- <span class="badge bg-success">Enabled</span>
- <?php else: ?>
- <span class="badge bg-secondary">Disabled</span>
- <?php endif; ?>
- </td>
- <td class="text-end">
- <form method="POST" action="/admin/cron/board/<?= $board->id ?>/toggle">
- <button type="submit"
- class="btn btn-sm <?= $board->importFromPrintstream ? 'btn-outline-danger' : 'btn-outline-success' ?>">
- <?= $board->importFromPrintstream ? 'Disable' : 'Enable' ?>
- </button>
- </form>
- </td>
- </tr>
- <?php endforeach; ?>
- </tbody>
- </table>
- </div>
- <?php endif; ?>
- </div>
- </div>
-
- <!-- Log Viewer -->
- <div class="col-12">
- <div class="card">
- <div class="card-header d-flex justify-content-between align-items-center">
- <span class="fw-semibold"><i class="bi bi-terminal me-1"></i>Import Log</span>
- <div class="d-flex align-items-center gap-2">
- <span class="text-muted small">newest first · last <?= (int) ($logLines ?? 300) ?> lines · <code>storage/import.log</code></span>
- <a href="/admin/cron" class="btn btn-sm btn-outline-secondary">
- <i class="bi bi-arrow-clockwise me-1"></i>Refresh
- </a>
- </div>
- </div>
- <div class="card-body p-0">
- <pre class="m-0 p-3 bg-dark text-light rounded-bottom"
- style="height:420px;overflow-y:auto;font-size:0.78rem;line-height:1.5;white-space:pre-wrap;word-break:break-all;"><?php if ($log !== ''): ?><?= e($log) ?><?php else: ?><span class="text-secondary">No log entries yet (storage/import.log is empty or does not exist).</span><?php endif; ?></pre>
- </div>
- </div>
- </div>
-
- </div>
|