' . "\n"; } // Preload imports foreach ($chunk['imports'] ?? [] as $importKey) { $imp = $manifest[$importKey] ?? null; if ($imp) { echo '' . "\n"; } } // Main entry echo '' . "\n"; } // Dev fallback: keine Manifest-Datei → direkte TS-Referenz (Vite Dev Server) } /** Session-Kontext als JS-Variable injizieren */ function injectSessionContext(): void { $ctx = [ 'sessionId' => Session::studentId(), 'teacherId' => Session::teacherId(), 'baseUrl' => BASE_URL, 'basePath' => BASE_PATH, ]; echo '' . "\n"; } /** Seite rendern: HTML laden, Session-Kontext + Favicon injizieren, ausgeben */ function renderPage(string $htmlFile): void { $html = file_get_contents(APP_ROOT . '/' . $htmlFile); // Favicon-Block (ersetzt alte logo.png Referenz) $bp = BASE_PATH; $favicon = << HTML; // Alten Favicon-Link ersetzen oder vor einfuegen if (preg_match('/]*rel=["\']icon["\'][^>]*>/', $html)) { $html = preg_replace('/]*rel=["\']icon["\'][^>]*>\s*/', '', $html); } $html = str_replace('', $favicon . "\n", $html); // Session-Kontext $ctx = ''; echo str_replace('', $ctx . "\n", $html); }