Manuscript Workstation - Source Excerpt 08
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
<div class="spiralist-manuscript-workstation__surface" data-workstation-surface>
<div class="spiralist-manuscript-workstation__book-shell">
<span class="spiralist-manuscript-workstation__page-stack spiralist-manuscript-workstation__page-stack--left" aria-hidden="true"></span>
<span class="spiralist-manuscript-workstation__page-stack spiralist-manuscript-workstation__page-stack--right" aria-hidden="true"></span>
<span class="spiralist-manuscript-workstation__book-spine" aria-hidden="true"></span>
<div class="spiralist-manuscript-workstation__spread" data-workstation-content data-view-mode="<?php echo esc_attr($initial_view_mode); ?>" data-spread-count="<?php echo esc_attr((string) max(1, $spread_count)); ?>">
<?php foreach ($spread_folios as $folio) : ?>
<?php
$slot = (string) ($folio['slot'] ?? 'left');
$folio_slug = (string) ($folio['slug'] ?? '');
$folio_is_current = ($current_position === 'right' && $slot === 'right')
|| ($current_position !== 'right' && $slot === 'left');
$folio_crop = is_array($folio['crop'] ?? null) ? $folio['crop'] : [];
$folio_overlay = is_array($folio['overlay_data'] ?? null) ? $folio['overlay_data'] : [];
$folio_is_context_only = !empty($folio['is_context_only']);
$folio_alt = trim((string) ($folio['alt'] ?? ''));
?>
<figure
class="spiralist-manuscript-workstation__folio <?php echo $folio_is_current ? 'is-current' : ''; ?>"
data-workstation-folio
data-folio-slot="<?php echo esc_attr($slot); ?>"
data-folio-slug="<?php echo esc_attr($folio_slug); ?>"
data-folio-sequence="<?php echo esc_attr((string) ($folio['sequence'] ?? 0)); ?>"
data-folio-current="<?php echo $folio_is_current ? 'true' : 'false'; ?>"
data-folio-context="<?php echo $folio_is_context_only ? 'true' : 'false'; ?>"
data-folio-crop="<?php echo esc_attr(wp_json_encode($folio_crop)); ?>"
data-preview-src="<?php echo esc_url((string) ($folio['preview_url'] ?? (string) ($folio['thumbnail_url'] ?? (string) ($folio['image_url'] ?? '')))); ?>"
data-standard-src="<?php echo esc_url((string) ($folio['standard_url'] ?? (string) ($folio['image_url'] ?? ''))); ?>"
data-full-src="<?php echo esc_url((string) ($folio['full_resolution_url'] ?? (string) ($folio['image_url'] ?? ''))); ?>"
data-folio-title="<?php echo esc_attr((string) ($folio['title'] ?? '')); ?>"
data-folio-alt="<?php echo esc_attr($folio_alt); ?>"
data-workstation-overlay="<?php echo esc_attr(wp_json_encode($folio_overlay, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)); ?>"
>
<?php if ($workstation_is_detail_route) : ?>
<div class="spiralist-manuscript-workstation__folio-head">
<div>
<p class="spiralist-section-tag"><?php echo esc_html((string) ($folio['label'] ?? 'Page')); ?></p>
<h4><?php echo esc_html((string) ($folio['title'] ?? 'Manuscript folio')); ?></h4>
</div>
<div class="spiralist-manuscript-workstation__folio-actions">
<?php if ($workstation_can_edit) : ?>
<button class="spiralist-manuscript-workstation__folio-action" type="button" data-workstation-reset-crop="<?php echo esc_attr($folio_slug); ?>">Reset Crop</button>
<?php endif; ?>
<a class="spiralist-manuscript-workstation__folio-action" href="<?php echo esc_url((string) ($folio['full_resolution_url'] ?? (string) ($folio['image_url'] ?? ''))); ?>" target="_blank" rel="noopener noreferrer">Open Raw</a>
</div>
</div>
<?php endif; ?>
<div class="spiralist-manuscript-workstation__folio-frame" data-workstation-folio-frame>
<span class="spiralist-manuscript-workstation__folio-chip" aria-hidden="true"><?php echo esc_html((string) ($folio['label'] ?? 'Page')); ?></span>
<img
src="<?php echo esc_url((string) ($folio['preview_url'] ?? (string) ($folio['thumbnail_url'] ?? (string) ($folio['image_url'] ?? '')))); ?>"
alt="<?php echo esc_attr($folio_alt !== '' ? $folio_alt : (string) ($folio['title'] ?? 'Manuscript folio')); ?>"
loading="eager"
decoding="async"
draggable="false"
class="is-preview-source"
<?php if (!empty($folio['width'])) : ?>width="<?php echo esc_attr((string) $folio['width']); ?>"<?php endif; ?>
<?php if (!empty($folio['height'])) : ?>height="<?php echo esc_attr((string) $folio['height']); ?>"<?php endif; ?>
<?php if ($folio_is_current) : ?>fetchpriority="high"<?php endif; ?>
data-workstation-image
/>
<?php if ($workstation_can_edit) : ?>
<div class="spiralist-manuscript-workstation__crop-layer" data-workstation-crop-layer>
<button class="spiralist-manuscript-workstation__crop-region" type="button" data-workstation-crop-handle="move" aria-label="<?php echo esc_attr('Move crop region for ' . (string) ($folio['title'] ?? 'the current folio')); ?>"></button>
<?php foreach (['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'] as $handle) : ?>
<button
class="spiralist-manuscript-workstation__crop-handle spiralist-manuscript-workstation__crop-handle--<?php echo esc_attr($handle); ?>"
type="button"
data-workstation-crop-handle="<?php echo esc_attr($handle); ?>"
aria-label="<?php echo esc_attr('Adjust crop ' . strtoupper($handle) . ' handle for ' . (string) ($folio['title'] ?? 'the current folio')); ?>"
></button>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php if (!empty($folio_overlay)) : ?>
<div
class="spiralist-manuscript-workstation__study-layer"
data-workstation-study-layer
hidden
aria-hidden="true"
></div>
<?php endif; ?>
</div>
<?php if ($workstation_is_detail_route) : ?>
<figcaption class="spiralist-manuscript-stage-panel__caption spiralist-muted">
<?php echo esc_html((string) ($folio['caption'] ?? '')); ?>
</figcaption>