Files
CloudVisu/visu/index.php
T
2026-06-22 15:52:25 +02:00

112 lines
3.0 KiB
PHP

<?php
require '../config.php';
require '../auth.php';
require '../includes/user_background.php';
if (!isset($_SESSION['username'])) {
header('Location: /login.php');
exit;
}
$username = (string)($_SESSION['username'] ?? '');
$userId = (int)($_SESSION['user_id'] ?? 0);
$userId = resolveUserId($pdo, $userId, $username);
$userBackgroundPref = userBackgroundLoadPreference($userId);
if (
!hasPermission($pdo, $userId, 'page.visu.viewer.view') &&
!hasPermission($pdo, $userId, 'page.visu.designer.view')
) {
http_response_code(403);
exit('Kein Zugriff auf SE-Cloud Vis.');
}
require '../includes/nav.php';
render_navbar($config = null, $title = 'SE-Cloud Vis');
$manifestPath = __DIR__ . '/dist/.vite/manifest.json';
$jsFile = null;
$cssFiles = [];
if (is_file($manifestPath)) {
$manifest = json_decode((string)file_get_contents($manifestPath), true);
if (isset($manifest['index.html'])) {
$entry = $manifest['index.html'];
$jsFile = $entry['file'] ?? null;
$cssFiles = $entry['css'] ?? [];
} elseif (isset($manifest['src/main.jsx'])) {
$entry = $manifest['src/main.jsx'];
$jsFile = $entry['file'] ?? null;
$cssFiles = $entry['css'] ?? [];
}
}
function visuAssetUrl(string $file): string
{
return '/visu/dist/' . ltrim($file, '/');
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>SE-Cloud Vis</title>
<script src="https://cdn.tailwindcss.com"></script>
<?php foreach ($cssFiles as $css): ?>
<link rel="stylesheet" href="<?= htmlspecialchars(visuAssetUrl((string)$css), ENT_QUOTES, 'UTF-8') ?>">
<?php endforeach; ?>
<style>
body {
background:
linear-gradient(rgba(17, 24, 39, 0.38), rgba(17, 24, 39, 0.72)),
url('/images/green-building-investmentmarkt.jpg') center center / cover fixed no-repeat;
}
.visu-page-wrap {
width: 100%;
max-width: none;
margin: 0;
padding: 12px 16px;
}
.visu-build-missing {
padding: 18px;
border-radius: 18px;
background: rgba(127, 29, 29, 0.55);
border: 1px solid rgba(248, 113, 113, 0.55);
color: #fecaca;
font-weight: 700;
}
</style>
</head>
<body class="bg-gray-900 text-white p-4 md:p-6 min-h-screen" style="<?= htmlspecialchars(userBackgroundInlineStyle($userBackgroundPref), ENT_QUOTES, 'UTF-8') ?>">
<?php
if (function_exists('render_dashboard_nav')) {
render_dashboard_nav($pdo, $userId, '/visu/');
}
?>
<div class="visu-page-wrap">
<div id="root"></div>
<?php if (!$jsFile): ?>
<div class="visu-build-missing">
React-Build nicht gefunden. Bitte im Ordner <code>visu-src</code> einmal
<code>npm run build</code> ausführen.
</div>
<?php endif; ?>
</div>
<?php if ($jsFile): ?>
<script type="module" src="<?= htmlspecialchars(visuAssetUrl((string)$jsFile), ENT_QUOTES, 'UTF-8') ?>"></script>
<?php endif; ?>
</body>
</html>