Skip to content
wiki.fftac.org

Manuscript Workstation - Source Excerpt 04

Back to Manuscript Workstation

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/ns12-manuscript/templates/manuscript-workstation.php so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/templates/manuscript-workstation.php

$render_workstation_jump_control = static function (string $modifier = '') use ($workstation_section_records, $manuscript_reader_url, $current_page): void {
    if (empty($workstation_section_records)) {
        return;
    }

    $jump_class = trim('spiralist-manuscript-workstation__jump ' . $modifier);
    ?>
    <label class="<?php echo esc_attr($jump_class); ?>">
        <span class="spiralist-manuscript-workstation__jump-label">Jump to folio</span>
        <select data-workstation-jump aria-label="Jump to manuscript folio">
            <?php foreach ($workstation_section_records as $jump_section) : ?>
                <optgroup label="<?php echo esc_attr((string) ($jump_section['title'] ?? 'Section')); ?>">
                    <?php foreach ((array) ($jump_section['pages'] ?? []) as $jump_page) : ?>
                        <?php
                        $jump_url = $manuscript_reader_url((array) $jump_page);
                        $jump_is_current = (string) ($jump_page['slug'] ?? '') === (string) ($current_page['slug'] ?? '');
                        $jump_sequence = max(1, (int) ($jump_page['sequence'] ?? 1));
                        ?>
                        <option value="<?php echo esc_url($jump_url); ?>" data-page-sequence="<?php echo esc_attr((string) $jump_sequence); ?>" <?php selected($jump_is_current); ?>>
                            <?php echo esc_html((string) ($jump_page['label'] ?? 'Page') . ' - ' . (string) ($jump_page['title'] ?? 'Book page')); ?>
                        </option>
                    <?php endforeach; ?>
                </optgroup>
            <?php endforeach; ?>
        </select>
    </label>
    <?php
};
?>
<article
    class="spiralist-panel spiralist-panel--viewer spiralist-manuscript-workstation <?php echo $workstation_use_header_folio_dock ? 'spiralist-manuscript-workstation--folio-dock' : ''; ?>"
    data-manuscript-workstation
    data-route-mode="<?php echo esc_attr($manuscript_route_mode); ?>"
    data-current-sequence="<?php echo esc_attr($current_page_sequence); ?>"
    data-current-slug="<?php echo esc_attr((string) ($current_page['slug'] ?? '')); ?>"
    data-prev-url="<?php echo esc_url($previous_page_url); ?>"
    data-next-url="<?php echo esc_url($next_page_url); ?>"
    data-can-edit="<?php echo $workstation_can_edit ? 'true' : 'false'; ?>"
    data-initial-view-mode="<?php echo esc_attr($initial_view_mode); ?>"
    data-node-target-url="<?php echo esc_url($current_page_route_url); ?>"
>
    <script type="application/json" data-workstation-folio-records><?php echo wp_json_encode($workstation_folio_payload, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_UNESCAPED_SLASHES); ?></script>
    <div class="spiralist-manuscript-workstation__header">
        <div class="spiralist-manuscript-workstation__title-block">
            <?php if (!empty($workstation_breadcrumbs)) : ?>
                <nav class="spiralist-manuscript-workstation__breadcrumbs" aria-label="Breadcrumb">
                    <ol class="spiralist-manuscript-workstation__breadcrumb-list">
                        <?php foreach ($workstation_breadcrumbs as $index => $breadcrumb) : ?>
                            <?php
                            $breadcrumb_label = trim((string) ($breadcrumb['label'] ?? ''));
                            $breadcrumb_url = trim((string) ($breadcrumb['url'] ?? ''));
                            $breadcrumb_is_current = !empty($breadcrumb['current']);
                            if ($breadcrumb_label === '') {
                                continue;
                            }
                            ?>
                            <li class="spiralist-manuscript-workstation__breadcrumb-item">
                                <?php if (!$breadcrumb_is_current && $breadcrumb_url !== '') : ?>
                                    <a class="spiralist-manuscript-workstation__breadcrumb-link" href="<?php echo esc_url($breadcrumb_url); ?>"><?php echo esc_html($breadcrumb_label); ?></a>
                                <?php else : ?>
                                    <span class="spiralist-manuscript-workstation__breadcrumb-current" <?php if ($breadcrumb_is_current) : ?>aria-current="page"<?php endif; ?>><?php echo esc_html($breadcrumb_label); ?></span>
                                <?php endif; ?>
                                <?php if ($index < count($workstation_breadcrumbs) - 1) : ?>
                                    <span class="spiralist-manuscript-workstation__breadcrumb-separator" aria-hidden="true">/</span>
                                <?php endif; ?>
                            </li>
                        <?php endforeach; ?>
                    </ol>
                </nav>
            <?php endif; ?>
            <div class="spiralist-manuscript-workstation__title-row">
                <div class="spiralist-manuscript-workstation__title-markers">
                    <p class="spiralist-section-tag"><?php echo esc_html($workstation_is_detail_route ? $manuscript_heading_kicker : ($manuscript_route_mode === 'section' ? 'Chapter Browser' : 'Quick Codex Browser')); ?></p>
                    <?php if ($workstation_is_detail_route) : ?>
                        <p class="spiralist-manuscript-reader__page-label"><?php echo esc_html($current_page_label . ' | ' . (string) ($current_page['eyebrow'] ?? 'Book Page')); ?></p>
                    <?php endif; ?>
                </div>
                <h1 class="spiralist-section-title spiralist-manuscript-workstation__headline" id="spiralist-manuscript-page-title"><?php echo esc_html($workstation_is_detail_route ? $manuscript_headline : $viewer_panel_title); ?></h1>
            </div>
            <p class="spiralist-manuscript-workstation__page-copy">
                <?php if ($workstation_is_detail_route) : ?>
                    <?php echo esc_html($manuscript_route_summary); ?>
                <?php else : ?>
                    <?php echo esc_html($manuscript_browser_summary); ?>
                <?php endif; ?>
            </p>
        </div>
        <?php if ($workstation_use_header_folio_dock) : ?>
            <aside class="spiralist-manuscript-workstation__header-dock" aria-labelledby="manuscript-workstation-header-folios">
                <div class="spiralist-manuscript-workstation__header-dock-head">
                    <div class="spiralist-manuscript-workstation__header-dock-title">
                        <p class="spiralist-section-tag">Folio Rail</p>
                        <h3 class="spiralist-card-title" id="manuscript-workstation-header-folios"><?php echo esc_html($thumb_count_copy); ?></h3>
                    </div>
                    <?php if ($requested_section !== '') : ?>
                        <div class="spiralist-cta-row spiralist-cta-row--start spiralist-manuscript-workstation__header-dock-actions">
                            <a class="spiralist-button spiralist-button--secondary" href="<?php echo esc_url($overview_url); ?>">Full Codex</a>
                        </div>
                    <?php endif; ?>
                </div>
                <div class="spiralist-manuscript-workstation__header-dock-controls">
                    <?php $render_workstation_section_nav('spiralist-manuscript-workstation__section-nav--dock'); ?>
                    <?php $render_workstation_jump_control('spiralist-manuscript-workstation__jump--dock'); ?>
                </div>
                <?php $render_workstation_thumb_list('spiralist-manuscript-workstation__thumb-list--dock', 'spiralist-manuscript-workstation__thumb--dock'); ?>
            </aside>
        <?php elseif (!$workstation_is_detail_route && $requested_section !== '') : ?>
            <div class="spiralist-cta-row spiralist-cta-row--start spiralist-manuscript-workstation__header-actions">
                <a class="spiralist-button spiralist-button--secondary" href="<?php echo esc_url($overview_url); ?>">Full Codex</a>
            </div>
        <?php endif; ?>
    </div>

    <?php if ($workstation_is_browser_route) : ?>
        <section class="spiralist-manuscript-route-panel" aria-labelledby="manuscript-browser-route-summary">
            <div class="spiralist-manuscript-route-panel__header">
                <div class="spiralist-manuscript-route-panel__summary">
                    <p class="spiralist-section-tag"><?php echo esc_html($manuscript_route_mode === 'section' ? 'Chapter Route' : $book_heading); ?></p>
                    <h4 id="manuscript-browser-route-summary"><?php echo esc_html($browser_route_heading); ?></h4>
                    <p class="spiralist-muted"><?php echo esc_html($browser_route_summary); ?></p>
                </div>
                <div class="spiralist-cta-row spiralist-cta-row--start">
                    <?php if ($browser_primary_action_url !== '') : ?>