$title, 'nav_html' => app_header_nav_html($navItems), 'logout_html' => app_header_logout_html($logoutAction, $logoutLabel), 'user_html' => app_header_user_html($user, $userPrefix, $adminLabel), 'language_html' => app_header_language_html($languageLabel, $language, $languages, $languageAction, $languageHidden), 'message_html' => app_header_status_html('message', $message), 'error_html' => app_header_status_html('error', $error), )); } function app_header_status_html($class, $message) { if ($message === '') { return ''; } return RacketSandboxTemplate::renderFile('partials/message.html', array( 'class' => $class, 'message' => $message, )); } function app_header_nav_html($navItems) { $html = ''; foreach ($navItems as $item) { if (!empty($item['separator_before'])) { $html .= RacketSandboxTemplate::renderFile('partials/header-separator.html', array()) . "\n"; } if (!empty($item['active'])) { $html .= RacketSandboxTemplate::renderFile('partials/header-nav-active.html', array( 'label' => $item['label'] ?? '', )) . "\n"; continue; } $html .= RacketSandboxTemplate::renderFile('partials/header-nav-link.html', array( 'url' => $item['url'] ?? '#', 'label' => $item['label'] ?? '', )) . "\n"; } return $html; } function app_header_logout_html($logoutAction, $logoutLabel) { if ($logoutAction === '' || $logoutLabel === '') { return ''; } return RacketSandboxTemplate::renderFile('partials/header-logout.html', array( 'logout_action' => $logoutAction, 'logout_label' => $logoutLabel, )) . "\n"; } function app_header_user_html($user, $userPrefix, $adminLabel) { if ($user === null) { return ''; } $adminHtml = ''; if ($user->isAdmin()) { $adminHtml = RacketSandboxTemplate::renderFile('partials/header-admin-badge.html', array( 'admin_label' => $adminLabel, )); } return RacketSandboxTemplate::renderFile('partials/header-user.html', array( 'user_prefix' => $userPrefix, 'display_name' => $user->displayName(), 'admin_html' => $adminHtml, )) . "\n"; } function app_header_language_html($languageLabel, $language, $languages, $languageAction, $languageHidden) { $hiddenInputsHtml = ''; foreach ($languageHidden as $name => $value) { $hiddenInputsHtml .= RacketSandboxTemplate::renderFile('partials/header-hidden-input.html', array( 'name' => $name, 'value' => $value, )) . "\n"; } $languageOptionsHtml = ''; foreach ($languages as $lang => $label) { $selected = $lang === $language ? ' selected' : ''; $languageOptionsHtml .= RacketSandboxTemplate::renderFile('partials/select-option.html', array( 'value' => $lang, 'selected' => $selected, 'label' => $label, )) . "\n"; } return RacketSandboxTemplate::renderFile('partials/header-language.html', array( 'language_action' => $languageAction, 'hidden_inputs_html' => $hiddenInputsHtml, 'language_label' => $languageLabel, 'language_options_html' => $languageOptionsHtml, )) . "\n"; }