Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

133 строки
5.0KB

  1. <div class="d-flex justify-content-between align-items-center mb-4">
  2. <h1 class="h3 mb-0">PrintStream Import</h1>
  3. <form method="POST" action="/admin/cron/run">
  4. <button type="submit" class="btn btn-success">
  5. <i class="bi bi-play-fill me-1"></i>Run Now
  6. </button>
  7. </form>
  8. </div>
  9. <div class="row g-4">
  10. <!-- Schedule Settings -->
  11. <div class="col-12 col-lg-5">
  12. <div class="card h-100">
  13. <div class="card-header fw-semibold">
  14. <i class="bi bi-clock me-1"></i>Schedule
  15. </div>
  16. <div class="card-body">
  17. <form method="POST" action="/admin/cron/settings">
  18. <div class="mb-4">
  19. <div class="form-check form-switch">
  20. <input class="form-check-input" type="checkbox" role="switch"
  21. id="enabled" name="enabled"
  22. <?= ($settings['enabled'] ?? true) ? 'checked' : '' ?>>
  23. <label class="form-check-label fw-semibold" for="enabled">
  24. Import Enabled
  25. </label>
  26. </div>
  27. <div class="form-text">When disabled, the background cron will skip every run.</div>
  28. </div>
  29. <div class="mb-4">
  30. <label for="interval_minutes" class="form-label fw-semibold">Run every</label>
  31. <select class="form-select" id="interval_minutes" name="interval_minutes">
  32. <?php foreach ([5, 10, 15, 30, 60] as $min): ?>
  33. <option value="<?= $min ?>"
  34. <?= (int) ($settings['interval_minutes'] ?? 30) === $min ? 'selected' : '' ?>>
  35. <?= $min ?> minutes
  36. </option>
  37. <?php endforeach; ?>
  38. </select>
  39. </div>
  40. <p class="text-muted small mb-4">
  41. <i class="bi bi-clock-history me-1"></i>
  42. <?php if (!empty($settings['last_run'])): ?>
  43. Last run: <strong><?= e($settings['last_run']) ?></strong>
  44. <?php else: ?>
  45. Never run
  46. <?php endif; ?>
  47. </p>
  48. <button type="submit" class="btn btn-primary">
  49. <i class="bi bi-floppy me-1"></i>Save
  50. </button>
  51. </form>
  52. </div>
  53. </div>
  54. </div>
  55. <!-- Board Status -->
  56. <div class="col-12 col-lg-7">
  57. <div class="card h-100">
  58. <div class="card-header fw-semibold">
  59. <i class="bi bi-kanban me-1"></i>Board Import Status
  60. </div>
  61. <?php if (empty($boards)): ?>
  62. <div class="card-body text-muted text-center py-4">No boards exist yet.</div>
  63. <?php else: ?>
  64. <div class="table-responsive">
  65. <table class="table table-sm table-hover align-middle mb-0">
  66. <thead class="table-light">
  67. <tr>
  68. <th>Board</th>
  69. <th class="text-center" style="width:110px">Status</th>
  70. <th style="width:90px"></th>
  71. </tr>
  72. </thead>
  73. <tbody>
  74. <?php foreach ($boards as $board): ?>
  75. <tr>
  76. <td>
  77. <a href="/board/<?= e($board->slug) ?>" class="text-decoration-none">
  78. <?= e($board->name) ?>
  79. </a>
  80. </td>
  81. <td class="text-center">
  82. <?php if ($board->importFromPrintstream): ?>
  83. <span class="badge bg-success">Enabled</span>
  84. <?php else: ?>
  85. <span class="badge bg-secondary">Disabled</span>
  86. <?php endif; ?>
  87. </td>
  88. <td class="text-end">
  89. <form method="POST" action="/admin/cron/board/<?= $board->id ?>/toggle">
  90. <button type="submit"
  91. class="btn btn-sm <?= $board->importFromPrintstream ? 'btn-outline-danger' : 'btn-outline-success' ?>">
  92. <?= $board->importFromPrintstream ? 'Disable' : 'Enable' ?>
  93. </button>
  94. </form>
  95. </td>
  96. </tr>
  97. <?php endforeach; ?>
  98. </tbody>
  99. </table>
  100. </div>
  101. <?php endif; ?>
  102. </div>
  103. </div>
  104. <!-- Log Viewer -->
  105. <div class="col-12">
  106. <div class="card">
  107. <div class="card-header d-flex justify-content-between align-items-center">
  108. <span class="fw-semibold"><i class="bi bi-terminal me-1"></i>Import Log</span>
  109. <div class="d-flex align-items-center gap-2">
  110. <span class="text-muted small">newest first &middot; last <?= (int) ($logLines ?? 300) ?> lines &middot; <code>storage/import.log</code></span>
  111. <a href="/admin/cron" class="btn btn-sm btn-outline-secondary">
  112. <i class="bi bi-arrow-clockwise me-1"></i>Refresh
  113. </a>
  114. </div>
  115. </div>
  116. <div class="card-body p-0">
  117. <pre class="m-0 p-3 bg-dark text-light rounded-bottom"
  118. 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>
  119. </div>
  120. </div>
  121. </div>
  122. </div>

Powered by TurnKey Linux.