'Portal', 'welcome' => '', 'links' => []]; } // Set by admin.php when it exists; otherwise the portal stays read-only. $isAdmin = false; $csrf = ''; $flash = null; if (is_file(__DIR__ . '/admin.php')) require __DIR__ . '/admin.php'; $mode = in_array($config['appearance']['mode'] ?? '', MODES, true) ? $config['appearance']['mode'] : 'auto'; $accent = in_array($config['appearance']['accent'] ?? '', ACCENTS, true) ? $config['appearance']['accent'] : 'blue'; $edit = ($isAdmin && is_string($_GET['edit'] ?? null)) ? $_GET['edit'] : ''; $links = array_values(array_filter($config['links'] ?? [], 'is_array')); if ($edit === 'new') $links[] = ['id' => 'new', 'enabled' => true]; ?> <?= e($config['title'] ?? 'Portal') ?>
Editing mode ✎ Site default theme
Cancel
Cancel

✎

>
Cancel

Disabled
/.php and add 'name/name.php' to this list. // Each file renders its own HTML, can use $config, $isAdmin and $csrf, and shares portal.css. foreach (['chat/chat.php', 'files/files.php'] as $part) { if (!is_file(__DIR__ . '/' . $part)) continue; echo '
'; include __DIR__ . '/' . $part; echo '
'; } ?>