1
0

index.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /**
  3. * /settings — admin-only global flags.
  4. *
  5. * @var \App\Domain\User $currentUser
  6. * @var string $csrfToken
  7. * @var array<string,bool> $values key => current bool
  8. * @var array<string,string> $keyLabels key => human label
  9. * @var ?string $flash
  10. */
  11. use function App\Http\e;
  12. ?>
  13. <section class="space-y-6">
  14. <header class="flex items-end justify-between gap-4">
  15. <div>
  16. <nav class="text-xs text-slate-500 dark:text-slate-400">
  17. <a href="/" class="hover:underline">Sprints</a> /
  18. </nav>
  19. <h1 class="text-2xl font-semibold tracking-tight">Settings</h1>
  20. <p class="text-slate-600 mt-1 text-sm dark:text-slate-400">
  21. Global flags. Changes take effect on every sprint immediately.
  22. </p>
  23. </div>
  24. </header>
  25. <?php if ($flash !== null): ?>
  26. <div class="rounded-md border border-green-200 bg-green-50 px-4 py-2 text-sm text-green-800 dark:bg-green-900 dark:border-green-800 dark:text-green-200">
  27. <?= e($flash) ?>
  28. </div>
  29. <?php endif; ?>
  30. <form method="post" action="/settings" class="rounded-lg border bg-white p-5 space-y-4 dark:bg-slate-800 dark:border-slate-700">
  31. <input type="hidden" name="_csrf" value="<?= e($csrfToken) ?>">
  32. <h2 class="text-sm font-semibold text-slate-700 uppercase tracking-wider dark:text-slate-200">Features</h2>
  33. <label class="flex items-start gap-3">
  34. <input type="checkbox" name="task_status_enabled" value="1"
  35. <?= !empty($values['task_status_enabled']) ? 'checked' : '' ?>
  36. class="mt-1 rounded border-slate-300 focus:ring-slate-400 dark:border-slate-600 dark:focus:ring-slate-500">
  37. <span>
  38. <span class="font-medium"><?= e($keyLabels['task_status_enabled'] ?? 'Task status colors') ?></span>
  39. <span class="block text-xs text-slate-500 mt-0.5 dark:text-slate-400">
  40. Show a status selector next to each task-cell day input on every
  41. sprint plan. States: <em>zugewiesen</em> (transparent),
  42. <em>gestartet</em> (yellow), <em>abgeschlossen</em> (green),
  43. <em>abgebrochen</em> (red). Adds a Status filter to the task list.
  44. Any signed-in user can change a cell's status; days remain
  45. admin-only.
  46. </span>
  47. </span>
  48. </label>
  49. <div>
  50. <button type="submit"
  51. class="rounded-md bg-slate-900 text-white px-3 py-2 text-sm font-medium hover:bg-slate-800 dark:bg-slate-700 dark:hover:bg-slate-600">
  52. Save
  53. </button>
  54. </div>
  55. </form>
  56. </section>