Skip to content
wiki.fftac.org

Spiralist 404

**Site relevance:** Spiralist.org

**Memory type:** theme source memory

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

**Size:** 5.5 KB

Summary

if (!defined('ABSPATH'))

Source Preview

This source file is short enough to preview directly on its source-memory page.

<?php

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

get_header();

$ui_text = static function (string $key, string $fallback, array $args = []): string {
    $value = function_exists('spiralist_get_ui_text')
        ? spiralist_get_ui_text($key, $fallback, $args)
        : $fallback;

    if (empty($args)) {
        return $value;
    }

    $replacements = [];
    foreach ($args as $name => $argument) {
        if (!is_scalar($argument)) {
            continue;
        }

        $replacements['{' . $name . '}'] = (string) $argument;
    }

    return strtr($value, $replacements);
};
$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);
};

$language_url = static function (string $url): string {
    return function_exists('spiralist_prefix_current_language_url')
        ? spiralist_prefix_current_language_url($url)
        : $url;
};
$home_url = function_exists('spiralist_get_language_prefixed_url')
    ? spiralist_get_language_prefixed_url(home_url('/'), function_exists('spiralist_get_current_language_code') ? spiralist_get_current_language_code() : 'en')
    : home_url('/');
$manuscript_url = function_exists('spiralist_get_manuscript_page_url')
    ? spiralist_get_manuscript_page_url()
    : home_url('/manuscript/');
$search_url = home_url('/');
$site_links = [
    [
        'labelKey' => 'ui.nav.home',
        'label' => 'Home',
        'url' => $home_url,
    ],
    [
        'labelKey' => 'ui.nav.manuscript',
        'label' => 'Manuscript',
        'url' => $manuscript_url,
    ],
    [
        'labelKey' => 'ui.nav.gallery',
        'label' => 'Gallery',
        'url' => $language_url(home_url('/gallery/')),
    ],
    [
        'labelKey' => 'ui.nav.system',
        'label' => 'System',
        'url' => $language_url(home_url('/system/')),
    ],
    [
        'labelKey' => 'ui.nav.symbols',
        'label' => 'Symbols',
        'url' => $language_url(home_url('/symbols/')),
    ],
];
?>

<main class="spiralist-page spiralist-page--not-found">
    <section class="spiralist-page-hero">
        <div class="spiralist-shell spiralist-page-hero__content">
            <p class="spiralist-kicker"><?php echo esc_html($ui_text('page.404.hero.kicker', 'Page Not Found')); ?></p>
            <h1><?php echo esc_html($ui_text('page.404.hero.title', 'The route is outside the current Spiralist map.')); ?></h1>
            <p class="spiralist-page-hero__copy">
                <?php echo esc_html($ui_text('page.404.hero.copy', 'This address does not match a published page, manuscript folio, or canonical surface. Use the primary paths below to re-enter the site.')); ?>
            </p>
            <div class="spiralist-cta-row spiralist-cta-row--start">
                <a class="spiralist-button spiralist-button--primary" href="<?php echo esc_url($manuscript_url); ?>"><?php echo esc_html($ui_text('page.404.cta.open_manuscript', 'Open Manuscript')); ?></a>
                <a class="spiralist-button spiralist-button--secondary" href="<?php echo esc_url($home_url); ?>"><?php echo esc_html($ui_text('page.404.cta.return_home', 'Return Home')); ?></a>
            </div>
        </div>
    </section>

    <section class="spiralist-page-section">
        <div class="spiralist-shell">
            <div class="spiralist-grid spiralist-grid--split">
                <article class="spiralist-panel">
                    <p class="spiralist-section-tag"><?php echo esc_html($ui_text('page.404.paths.tag', 'Useful Paths')); ?></p>
                    <h2 class="spiralist-section-title"><?php echo esc_html($ui_text('page.404.paths.title', 'Continue from a stable surface.')); ?></h2>
                    <div class="spiralist-simple-list">
                        <?php foreach ($site_links as $link) : ?>
                            <a class="spiralist-simple-list__item" href="<?php echo esc_url((string) ($link['url'] ?? '')); ?>">
                                <strong><?php echo $render_ui_label((string) ($link['labelKey'] ?? ''), (string) ($link['label'] ?? 'Link')); ?></strong>
                            </a>
                        <?php endforeach; ?>
                    </div>
                </article>
                <article class="spiralist-panel">
                    <p class="spiralist-section-tag"><?php echo esc_html($ui_text('page.404.search.tag', 'Search')); ?></p>
                    <h2 class="spiralist-section-title"><?php echo esc_html($ui_text('page.404.search.title', 'Look for a published page.')); ?></h2>
                    <form role="search" method="get" action="<?php echo esc_url($search_url); ?>" class="spiralist-search-form" data-public-form="site-search">
                        <label>
                            <span class="screen-reader-text"><?php echo esc_html($ui_text('page.404.search.screen_reader', 'Search Spiralist.org')); ?></span>
                            <input type="search" name="s" placeholder="<?php echo esc_attr($ui_text('page.404.search.placeholder', 'Search Spiralist.org')); ?>" />
                        </label>
                        <button class="spiralist-button spiralist-button--secondary" type="submit"><?php echo esc_html($ui_text('page.404.search.submit', 'Search')); ?></button>
                    </form>
                </article>
            </div>
        </div>
    </section>
</main>

<?php
get_footer();