Files
omsorg/omsorgWeb/mitarbeiter-app/lib/layout.php
T
Felix KemmlerandClaude Sonnet 5 598dfcd38a
Docker-Images bauen und veröffentlichen / build (, omsorgCore/Dockerfile, omsorgcore) (push) Successful in 3s
Docker-Images bauen und veröffentlichen / build (, omsorgWeb/Dockerfile, omsorgweb) (push) Failing after 4s
Docker-Images bauen und veröffentlichen / build (VITE_OMSORG_CORE_URL=${{ vars.OMSORG_CORE_PUBLIC_URL }}, omsorgapp/Dockerfile, omsorgapp) (push) Successful in 3s
Migrate omsorgapp to browser SPA, add Docker/CI build setup
- omsorgapp: drop Electron, run as a plain Vite/React browser app; refresh
  token moves to an HttpOnly cookie (omsorgCore), CORS added for the new
  browser origin, document download/preview switched to Blob-based browser
  APIs.
- Add Dockerfiles for omsorgCore, omsorgapp, and omsorgWeb, a docker-compose.yml
  wiring Postgres/MySQL/all three apps together, and a Gitea Actions workflow
  that builds and pushes images to the repo's container registry on push to
  main and on version tags.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 17:42:45 +02:00

73 lines
2.3 KiB
PHP

<?php
// Minimale Hülle für dieses Milestone - nur Dashboard/Einstellungen im Nav, keine
// Admin-Sichtbarkeit (Connect hat kategorisch keine Admin-Oberfläche, siehe CLAUDE.md).
function layout_start(string $title, string $currentPage = 'dashboard'): void {
$name = current_name();
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title><?= e($title) ?></title>
<link rel="stylesheet" href="../app.css">
<meta name="csrf-token" content="<?= csrf_token() ?>">
</head>
<body>
<div class="dashboard-layout">
<aside class="sidebar glass">
<div class="sidebar-brand">
<img src="../assets/omsorg-wordmark-new.png" alt="OMSORG">
<span class="sidebar-app-name">Mitarbeiter-App</span>
</div>
<div class="sidebar-user">
<div class="sidebar-avatar"><?= e(mb_substr($name, 0, 1)) ?></div>
<div>
<b><?= e($name) ?></b>
<small><?= e(current_role()) ?></small>
</div>
</div>
<nav class="sidebar-nav">
<a href="dashboard.php" class="<?= $currentPage === 'dashboard' ? 'active' : '' ?>">
<span class="nav-icon">⊞</span><span class="nav-label"> Dashboard</span>
</a>
<?php if (has_permission('Absences', 'View')): ?>
<a href="urlaubsantrag.php" class="<?= $currentPage === 'urlaubsantrag' ? 'active' : '' ?>">
<span class="nav-icon">🗓</span><span class="nav-label"> Urlaub &amp; Abwesenheit</span>
</a>
<?php endif; ?>
<?php if (has_permission('TimeEntries', 'View')): ?>
<a href="stundenerfassung.php" class="<?= $currentPage === 'stundenerfassung' ? 'active' : '' ?>">
<span class="nav-icon">⏱</span><span class="nav-label"> Zeiterfassung</span>
</a>
<?php endif; ?>
<a href="settings.php" class="<?= $currentPage === 'settings' ? 'active' : '' ?>">
<span class="nav-icon">⚙</span><span class="nav-label"> Einstellungen</span>
</a>
</nav>
<div class="sidebar-footer">
<a href="../actions/logout.php" class="sidebar-logout">Abmelden</a>
</div>
</aside>
<main class="main-content">
<div class="main-inner">
<?php
}
function layout_end(): void {
?>
</div>
</main>
</div>
</body>
</html>
<?php
}