projectbased/app/Views/layout/header.php
SHA-256: 638800d288e5195e241acc0b11147c6ed50b125d50fecb86a5f7b2f6799cfe0c
<?php
use App\Lib\Url;
use App\Lib\Build;
?>
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= htmlspecialchars($title ?? 'Projekt-Ökonomie Demo') ?></title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="<?= \App\Lib\Url::path('/assets/app.css') . '?v=' . urlencode(Build::id()) ?>">
<script src="<?= \App\Lib\Url::path('/assets/app.js') . '?v=' . urlencode(Build::id()) ?>"></script>
</head>
<body>
<div class="bg-orb"></div>
<div class="layout-shell">
<aside class="sidebar">
<div class="brand">Projekt-Ökonomie Demo</div>
<div class="muted small">Demo-Plattform (PHP) · installierbar</div>
<div class="side-group">
<div class="side-title">Öffentlich</div>
<a class="side-link" href="<?= Url::route('public') ?>">
<span>Public Demo</span>
<span class="side-pill">read-only</span>
</a>
<a class="side-link" href="<?= Url::route('source') ?>">
<span>Open Source</span>
<span class="side-pill">diff</span>
</a>
</div>
<div class="side-group">
<div class="side-title">App</div>
<?php if (!empty($user)): ?>
<a class="side-link" href="<?= Url::route('dashboard') ?>"><span>Dashboard</span></a>
<a class="side-link" href="<?= Url::route('matching') ?>"><span>Matching</span></a>
<a class="side-link" href="<?= Url::route('projects') ?>"><span>Projekte</span></a>
<a class="side-link" href="<?= Url::route('needs') ?>"><span>Bedarf</span></a>
<a class="side-link" href="<?= Url::route('rindex') ?>">
<span>R-Index</span>
<span class="side-pill"><?= (int)($user['r_index'] ?? 0) ?></span>
</a>
<a class="side-link" href="<?= Url::route('profile') ?>"><span>Profil</span></a>
<a class="side-link" href="<?= Url::route('admin_audit') ?>"><span>Audit</span></a>
<?php if (($user['is_admin'] ?? 0) == 1): ?>
<a class="side-link" href="<?= Url::route('admin_moderation') ?>"><span>Moderation</span></a>
<a class="side-link" href="<?= Url::route('admin_source') ?>"><span>Source Admin</span></a>
<a class="side-link" href="<?= Url::route('admin_system') ?>"><span>System-Check</span><span class="side-pill">diag</span></a>
<a class="side-link" href="<?= Url::route('admin_update') ?>"><span>Updater</span><span class="side-pill">ZIP</span></a>
<?php endif; ?>
<?php else: ?>
<a class="side-link" href="<?= Url::route('login') ?>"><span>Login</span></a>
<a class="side-link" href="<?= Url::route('register') ?>"><span>Registrieren</span></a>
<?php endif; ?>
</div>
<div class="side-actions">
<button class="btn btn-outline-light btn-sm w-100" type="button" onclick="POTheme.toggle()">Hell/Dunkel</button>
<?php if (!empty($user)): ?>
<a class="btn btn-outline-light btn-sm w-100" href="<?= Url::route('logout') ?>">Logout</a>
<?php endif; ?>
</div>
<div class="muted small mt-3">
<?= htmlspecialchars((Build::currentVersion()['version'] ?? 'v?')) ?> · System-Check + Matching
</div>
</aside>
<main class="content">
<div class="topbar d-flex justify-content-between align-items-center">
<div class="d-flex align-items-center gap-2">
<span class="fw-semibold"><?= htmlspecialchars($pageTitle ?? '') ?></span>
</div>
<div class="d-flex align-items-center gap-2">
<?php if (!empty($user)): ?>
<span class="muted small"><?= htmlspecialchars($user['display_name'] ?? '') ?></span>
<?php endif; ?>
</div>
</div>
<div class="content-inner container-fluid container-narrow">