64 lines
2.4 KiB
PHP
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
|
|
}
|