Files
deskhub/plugin-webseite/inc/layout.php
T
2026-11-05 21:22:26 +00:00

64 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/lib.php';
require_once __DIR__ . '/i18n.php';
function site_headers(): void
{
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: DENY');
header('Referrer-Policy: same-origin');
header("Content-Security-Policy: default-src 'self'; img-src 'self' data:; style-src 'self'; script-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'");
}
/** Navigation der Verwaltung: Kennung => [Beschriftung, Symbol]. */
function site_tabs(): array
{
return [
'overview' => ['Übersicht', '◧'],
'packages' => ['Pakete', '▣'],
'apps' => ['Apps', '⬇'],
'server' => ['DeskHub-Update', '⟳'],
'push' => ['Push-Dienst', '🔔'],
'settings' => ['Einstellungen', '⚙'],
];
}
function site_header(string $title, string $active = '', bool $nav = false): void
{
site_headers();
site_i18n_start(); // Sprachwahl: übersetzt die folgende Ausgabe (Deutsch bleibt unverändert)
$name = site_config()['site_name'];
?><!doctype html>
<html lang="<?= site_h(site_lang()) ?>"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#0f6f6a">
<title><?= site_h($title) ?> · <?= site_h($name) ?></title>
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
<link rel="icon" href="assets/favicon-32.png" sizes="32x32" type="image/png">
<link rel="shortcut icon" href="favicon.ico">
<link rel="apple-touch-icon" href="assets/apple-touch-icon.png">
<link rel="stylesheet" href="assets/style.css"></head>
<body>
<header class="top"><div class="wrap">
<a class="brand" href="index.php"><img src="assets/favicon.svg" alt="" width="30" height="30"><span><?= site_h($name) ?></span></a>
<?php if ($nav): ?>
<nav class="tabs" aria-label="Bereiche">
<?php foreach (site_tabs() as $key => [$label, $icon]): ?>
<a href="admin.php?tab=<?= site_h($key) ?>"<?= $key === $active ? ' class="on" aria-current="page"' : '' ?>><span class="ico" aria-hidden="true"><?= $icon ?></span><?= site_h($label) ?></a>
<?php endforeach; ?>
</nav>
<?php endif; ?>
<?= site_lang_switcher() ?>
</div></header>
<main class="wrap">
<?php
}
function site_footer(): void
{
?></main>
<footer class="wrap foot">Fremder Code läuft mit allen Rechten auf eurem Server. Installiert nur Pakete, deren Herkunft ihr prüfen könnt, am besten signierte.</footer>
</body></html>
<?php
}