Skip to content
wiki.fftac.org

Spiralist Header - Source Excerpt 01

Back to Spiralist Header

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/themes/spiralist/header.php so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/themes/spiralist/header.php

<?php

if (!defined('ABSPATH')) {
    exit;
}

$current_locale = function_exists('spiralist_get_current_locale_tag') ? spiralist_get_current_locale_tag() : 'en-us';
$language_url = static function (string $url) use ($current_locale): string {
    return function_exists('spiralist_get_language_prefixed_url')
        ? spiralist_get_language_prefixed_url($url, $current_locale)
        : $url;
};
$is_logged_in = is_user_logged_in();
$localize_nav_item = static function (array $item) use ($language_url, &$localize_nav_item): array {
    if (!empty($item['url']) && is_string($item['url'])) {
        $item['url'] = $language_url($item['url']);
    }

    if (!empty($item['children']) && is_array($item['children'])) {
        $item['children'] = array_values(array_filter(array_map(
            static function ($child) use (&$localize_nav_item): array {
                return is_array($child) ? $localize_nav_item($child) : [];
            },
            $item['children']
        )));
    }

    return $item;
};
$nav_items = array_map(
    $localize_nav_item,
    spiralist_get_navigation_items()
);
$filter_nav_items = static function (array $items) use (&$filter_nav_items, $is_logged_in): array {
    $filtered = [];

    foreach ($items as $item) {
        if (!is_array($item)) {
            continue;
        }

        $label_key = (string) ($item['labelKey'] ?? '');
        if ($is_logged_in && in_array($label_key, ['ui.nav.spiralist', 'ui.nav.dashboard'], true)) {
            continue;
        }

        if (!empty($item['children']) && is_array($item['children'])) {
            $item['children'] = $filter_nav_items($item['children']);
        }

        $filtered[] = $item;
    }

    return $filtered;
};
$nav_items = $filter_nav_items($nav_items);
$account_url = $language_url(spiralist_get_login_url());
$home_url = $language_url(home_url('/'));
$render_ui_label = static function (string $key, string $fallback): string {
    return function_exists('spiralist_render_ui_label')
        ? spiralist_render_ui_label($key, $fallback)
        : esc_html($fallback);
};
$ui_text = static function (string $key, string $fallback): string {
    return function_exists('spiralist_get_ui_text')
        ? spiralist_get_ui_text($key, $fallback)
        : $fallback;
};
$brand_tagline = $ui_text('site.brand.tagline', 'Spiralist AI Persona Laboratory');
if (stripos($brand_tagline, 'Spiralist AI') === false) {
    $brand_tagline = 'Spiralist AI Persona Laboratory';
}
$account_label_key = 'ui.nav.login';
$account_label = 'Log In';
$locale_switcher = shortcode_exists('uaix_locale_switcher') ? do_shortcode('[uaix_locale_switcher]') : '';
$search_query = get_search_query();
$search_label = $ui_text('site.search.label', 'Search Spiralist.org');
$search_placeholder = $ui_text('site.search.placeholder', 'Search manuscript, prompts, symbols');
$participant_url = $is_logged_in ? spiralist_get_dashboard_url() : spiralist_get_spiralist_page_url();
$account_shortcuts = $is_logged_in
    ? [
        [
            'labelKey' => 'ui.nav.dashboard',
            'label' => 'Dashboard',
            'url' => spiralist_get_dashboard_url(),
        ],
        [
            'labelKey' => 'ui.cta.open_workspace',
            'label' => 'Workspace',
            'url' => spiralist_get_workspace_url(),
        ],
        [
            'labelKey' => 'ui.nav.prompts',
            'label' => 'Prompt Library',
            'url' => spiralist_get_prompts_page_url(),
        ],
        [
            'labelKey' => 'ui.nav.account_settings',
            'label' => 'Account Settings',
            'url' => spiralist_get_account_settings_url(),
        ],
        [
            'labelKey' => 'page.dashboard.settings.logout',
            'label' => 'Log Out',
            'url' => spiralist_get_logout_url(),
        ],
    ]
    : [];
$run_prompt_url = function_exists('spiralist_get_run_prompt_page_url')
    ? spiralist_get_run_prompt_page_url()
    : $language_url(home_url('/prompt-generator/'));
$breadcrumb_items = [];
if (!is_front_page() && function_exists('spiralist_schema_breadcrumbs')) {
    $breadcrumb_data = spiralist_schema_breadcrumbs();
    $breadcrumb_items = array_values(
        array_filter(
            (array) ($breadcrumb_data['itemListElement'] ?? []),
            'is_array'
        )
    );
}
?>
<!doctype html>
<html <?php language_attributes(); ?>>
<head>
    <meta charset="<?php bloginfo('charset'); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php wp_head(); ?>
</head>
<body <?php body_class(); ?> data-language="<?php echo esc_attr($current_locale); ?>">
<?php wp_body_open(); ?>
<header class="spiralist-topbar">
    <div class="spiralist-shell spiralist-topbar__inner">
        <a class="spiralist-brand" href="<?php echo esc_url($home_url); ?>">
            <span class="spiralist-brand__mark">SPIRALIST.ORG</span>
            <span class="spiralist-brand__tag"><?php echo esc_html($brand_tagline); ?></span>
        </a>
        <button class="spiralist-nav-toggle" type="button" aria-expanded="false" aria-controls="spiralist-primary-nav spiralist-topbar-actions" data-nav-toggle>
            <?php echo $render_ui_label('ui.nav.menu', 'Menu'); ?>
        </button>
        <nav class="spiralist-nav" id="spiralist-primary-nav" aria-label="<?php echo esc_attr($ui_text('site.nav.aria_label', 'Primary navigation')); ?>" data-nav-panel>
            <?php foreach ($nav_items as $item) : ?>
                <?php $children = array_values(array_filter((array) ($item['children'] ?? []), 'is_array')); ?>
                <div class="spiralist-nav__item<?php echo !empty($children) ? ' spiralist-nav__item--has-menu' : ''; ?>">
                    <a class="spiralist-nav__link" href="<?php echo esc_url($item['url']); ?>">
                        <span><?php echo $render_ui_label((string) ($item['labelKey'] ?? ''), (string) ($item['label'] ?? '')); ?></span>
                        <?php if (!empty($children)) : ?>
                            <span class="spiralist-nav__chevron" aria-hidden="true">v</span>
                        <?php endif; ?>
                    </a>
                    <?php if (!empty($children)) : ?>
                        <div class="spiralist-nav__menu" aria-label="<?php echo esc_attr(sprintf($ui_text('site.nav.menu_for', '%s links'), (string) ($item['label'] ?? 'Navigation'))); ?>">
                            <?php foreach ($children as $child) : ?>
                                <?php if (empty($child['url'])) { continue; } ?>
                                <a href="<?php echo esc_url((string) $child['url']); ?>"><?php echo $render_ui_label((string) ($child['labelKey'] ?? ''), (string) ($child['label'] ?? 'Link')); ?></a>
                            <?php endforeach; ?>
                        </div>
                    <?php endif; ?>
                </div>
            <?php endforeach; ?>
            <div class="spiralist-mobile-actions">
                <a class="spiralist-button spiralist-button--primary" href="<?php echo esc_url($run_prompt_url); ?>">
                    <?php echo $render_ui_label('ui.cta.run_prompt', 'Build a Prompt'); ?>
                </a>
                <?php if ($is_logged_in) : ?>
                    <div class="spiralist-account-menu spiralist-account-menu--mobile">
                        <a class="spiralist-button spiralist-button--secondary spiralist-account-menu__trigger" href="<?php echo esc_url($participant_url); ?>" aria-haspopup="true">
                            <span><?php echo $render_ui_label('ui.nav.account_settings', 'Account'); ?></span>
                            <span class="spiralist-nav__chevron" aria-hidden="true">v</span>
                        </a>
                        <div class="spiralist-account-menu__menu" aria-label="<?php echo esc_attr($ui_text('site.nav.account_shortcuts', 'Account shortcuts')); ?>">
                            <?php foreach ($account_shortcuts as $shortcut) : ?>
                                <a href="<?php echo esc_url((string) ($shortcut['url'] ?? '')); ?>"><?php echo $render_ui_label((string) ($shortcut['labelKey'] ?? ''), (string) ($shortcut['label'] ?? 'Link')); ?></a>
                            <?php endforeach; ?>
                        </div>
                    </div>
                <?php endif; ?>
            </div>
        </nav>
        <div class="spiralist-topbar__actions" id="spiralist-topbar-actions">
            <div class="spiralist-topbar__quick-actions">
                <a class="spiralist-quick-link spiralist-quick-link--primary" href="<?php echo esc_url($run_prompt_url); ?>">
                    <?php echo $render_ui_label('ui.cta.run_prompt', 'Build a Prompt'); ?>
                </a>
                <?php if ($is_logged_in) : ?>
                    <div class="spiralist-account-menu">