Frontend - Source Excerpt 02
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/ns12-manuscript/includes/frontend.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/includes/frontend.php
return spiralist_book_pages_is_surface_page('manuscript');
}
function spiralist_book_pages_is_symbols_surface(): bool
{
return spiralist_book_pages_is_surface_page('symbols');
}
function spiralist_book_pages_is_prompts_surface(): bool
{
return spiralist_book_pages_should_manage_prompt_surfaces()
&& spiralist_book_pages_is_surface_page('prompts');
}
function spiralist_book_pages_is_prompt_record_surface(): bool
{
return spiralist_book_pages_should_manage_prompt_surfaces()
&& sanitize_title((string) get_query_var('spiralist_book_pages_prompt_slug', '')) !== '';
}
function spiralist_book_pages_is_book_shell_surface(): bool
{
return spiralist_book_pages_is_manuscript_surface()
|| spiralist_book_pages_is_symbols_surface()
|| spiralist_book_pages_is_prompts_surface()
|| spiralist_book_pages_is_prompt_record_surface();
}
function spiralist_book_pages_get_shell_ui_text(): array
{
$ui_text = static function (string $key, string $fallback): string {
return function_exists('spiralist_get_ui_text')
? spiralist_get_ui_text($key, $fallback)
: $fallback;
};
return [
'symbolsPromptLoading' => $ui_text('page.symbols.prompts.loading', 'Loading prompt references...'),
'symbolsPromptUnavailable' => $ui_text('page.symbols.prompts.unavailable', 'Prompt references unavailable.'),
'symbolsPromptEmpty' => $ui_text('page.symbols.prompts.empty', 'No related prompts yet.'),
'symbolsPromptEmptyForSymbol' => $ui_text('page.symbols.prompts.empty_for_symbol', 'No related prompts for this symbol yet.'),
'symbolsPromptFallback' => $ui_text('page.symbols.prompts.fallback', 'Prompt'),
'symbolsPromptReferenceFallback' => $ui_text('page.symbols.prompts.reference_fallback', 'Structured prompt reference.'),
'symbolsPromptLoadError' => $ui_text('page.symbols.prompts.load_error', 'Unable to load prompt references.'),
'symbolsVisibleCount' => $ui_text('page.symbols.state.visible', '{count} symbols visible.'),
'symbolsVisibleCountSingular' => $ui_text('page.symbols.state.visible_singular', '{count} symbol visible.'),
'symbolsLayerFallback' => $ui_text('page.symbols.value.reference', 'Reference'),
'symbolsCategoryFallback' => $ui_text('page.symbols.value.uncategorized', 'Uncategorized'),
'symbolsAxiomLinksEmpty' => $ui_text('page.symbols.axioms.empty', 'No axiom links declared.'),
'symbolsAxiomFallback' => $ui_text('page.symbols.axioms.fallback', 'Axiom'),
'symbolsDirectionInput' => $ui_text('page.symbols.transformations.input', 'Input'),
'symbolsDirectionOutput' => $ui_text('page.symbols.transformations.output', 'Output'),
'symbolsTransformationFallback' => $ui_text('page.symbols.transformations.fallback', 'Transformation'),
'symbolsTransformationsEmpty' => $ui_text('page.symbols.transformations.empty', 'No transformation links declared.'),
'symbolsCrosswalkAnchor' => $ui_text('page.symbols.crosswalk.anchor', 'View manuscript anchor'),
'symbolsCrosswalkSymbols' => $ui_text('page.symbols.crosswalk.symbols', 'Open in symbols explorer'),
'symbolsCrosswalkPrompts' => $ui_text('page.symbols.crosswalk.prompts', 'Search prompts'),
'symbolsCrosswalkRelatedPrompts' => $ui_text('page.symbols.crosswalk.related_prompts', 'Search related prompts'),
'symbolsCrosswalkSystem' => $ui_text('page.symbols.crosswalk.system', 'System concepts'),
'symbolsCrosswalkRelatedSystem' => $ui_text('page.symbols.crosswalk.related_system', 'Open related system surface'),
'symbolsCrosswalkTransformations' => $ui_text('page.symbols.crosswalk.transformations', 'View transformations'),
'symbolsCrosswalkEmpty' => $ui_text('page.symbols.crosswalk.empty', 'No crosswalk links available.'),
'symbolsCrosswalkNodeEmpty' => $ui_text('page.symbols.crosswalk.node_empty', 'No additional crosswalk links for this node.'),
'symbolsAnchorView' => $ui_text('page.symbols.anchor.view_in_manuscript', 'View in manuscript'),
'symbolsAnchorEmpty' => $ui_text('page.symbols.anchor.unavailable', 'No manuscript anchor available.'),
'symbolsAxiomConnectionEmpty' => $ui_text('page.symbols.inspector.axiom_connection.empty', 'No axiom links declared.'),
'symbolsDerivationEmpty' => $ui_text('page.symbols.inspector.derivation.empty', 'No derivation declared.'),
'symbolsProvenanceEmpty' => $ui_text('page.symbols.inspector.provenance.empty', 'No provenance declared.'),
'symbolsRelatedEmpty' => $ui_text('page.symbols.inspector.related_symbols.empty', 'No related symbols declared.'),
'symbolsTransformationChainEmpty' => $ui_text('page.symbols.inspector.transformation_chain.empty', 'No transformation chain declared.'),
'manuscriptFieldDatasetError' => $ui_text('page.manuscript.field.dataset_error', 'The symbolic field dataset could not be loaded.'),
'manuscriptFieldNodesEmpty' => $ui_text('page.manuscript.field.nodes_empty', 'No manuscript nodes are currently available for inspection.'),
'manuscriptFieldModeStatus' => $ui_text('page.manuscript.field.mode_status', '{mode} mode: {visibleCount} of {totalCount} nodes visible.'),
'manuscriptFieldRelationsVisible' => $ui_text('page.manuscript.field.relations_visible', 'Relations remain visible.'),
'manuscriptFieldRelationsHover' => $ui_text('page.manuscript.field.relations_hover', 'Relations appear on hover or selection.'),
'manuscriptFieldCurrentState' => $ui_text('page.manuscript.field.current_state', 'Current state: {state}.'),
'manuscriptFieldNextNodes' => $ui_text('page.manuscript.field.next_nodes', 'Next nodes: {nodes}.'),
'manuscriptFieldHistory' => $ui_text('page.manuscript.field.history', 'History: {history}.'),
'manuscriptFieldSectionFallback' => $ui_text('page.manuscript.field.section_fallback', 'Section'),
'manuscriptFieldNodeFallback' => $ui_text('page.manuscript.field.node_fallback', 'Node'),
'manuscriptFieldRelatedEmpty' => $ui_text('page.manuscript.field.related_empty', 'No related nodes declared.'),
'manuscriptFieldSummaryEmpty' => $ui_text('page.manuscript.field.summary_empty', 'No summary available for this node.'),
'manuscriptFieldMeaningEmpty' => $ui_text('page.manuscript.field.meaning_empty', 'No meaning declared.'),
'manuscriptFieldDefinitionEmpty' => $ui_text('page.manuscript.field.definition_empty', 'No definition declared.'),
'manuscriptFieldSourceAxiomEmpty' => $ui_text('page.manuscript.field.source_axiom_empty', 'No source axiom declared.'),
'manuscriptFieldIoNotTransformation' => $ui_text('page.manuscript.field.io_not_transformation', 'This node is not a transformation surface.'),
'manuscriptFieldPromptsEmpty' => $ui_text('page.manuscript.field.prompts_empty', 'No related prompts for this node yet.'),
'manuscriptFieldExecutionUnavailable' => $ui_text('page.manuscript.field.execution_unavailable', 'Inspection remains available, but this node is not part of the executable runtime graph.'),
'manuscriptFieldExecutionFailedStatus' => $ui_text('page.manuscript.field.execution_failed_status', 'Execution failed with {status}.'),
'manuscriptFieldExecutionFailed' => $ui_text('page.manuscript.field.execution_failed', 'Execution failed.'),
'manuscriptZoomPanInstructions' => $ui_text('page.manuscript.zoom.pan_instructions', 'Drag or pinch to pan across the page. Use the arrow keys to nudge the view and press 0 to reset.'),
'copySuccess' => $ui_text('ui.cta.copied', 'Copied'),
'copyFailed' => $ui_text('ui.cta.copy_failed', 'Copy failed'),
'uiCopyFallback' => $ui_text('ui.cta.copy', 'Copy'),
'uiSubmitFallback' => $ui_text('ui.cta.submit', 'Submit'),
'contributeTypePrompt' => $ui_text('page.contribute.form.type.copy.prompt', 'Prompts are public library records. Symbols and transformations enter the proposal queue first.'),
'contributeTypeSymbol' => $ui_text('page.contribute.form.type.copy.symbol', 'Symbol proposals stay review-only until they are accepted into the registry.'),
'contributeTypeTransformation' => $ui_text('page.contribute.form.type.copy.transformation', 'Transformation definitions describe input, output, and chain behavior before publication.'),
'contributeCanonicalPrompt' => $ui_text('page.contribute.form.canonical.copy.prompt', 'Prompt IDs usually follow `spiralist.prompt.role.title`.'),
'contributeCanonicalSymbol' => $ui_text('page.contribute.form.canonical.copy.symbol', 'Symbol IDs usually follow `spiral.symbol.title`.'),