Skip to content
wiki.fftac.org

Functions - Source Excerpt 04

Back to Functions

Summary

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

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

if (!spiralist_theme_needs_shell_script()) {
        return;
    }

    wp_enqueue_script(
        'spiralist-script',
        get_theme_file_uri('assets/js/spiralist.js'),
        ['spiralist-core'],
        $script_version,
        [
            'in_footer' => true,
            'strategy' => 'defer',
        ]
    );

    wp_localize_script(
        'spiralist-script',
        'spiralistTheme',
        [
            'subscribeUrl' => rest_url('uai1/v1/subscribe'),
            'participantUrl' => rest_url('uai1/v1/participant'),
            'participantResourcesUrl' => rest_url('uai1/v1/participant/resources'),
            'manuscriptNodesUrl' => spiralist_get_manuscript_nodes_url(),
            'engineExecuteUrl' => function_exists('spiralist_engine_get_execute_endpoint_url') ? spiralist_engine_get_execute_endpoint_url() : '',
            'engineInstanceUrl' => function_exists('spiralist_engine_get_instance_endpoint_url') ? spiralist_engine_get_instance_endpoint_url() : '',
            'interactionUrl' => spiralist_get_human_interactions_api_url(),
            'promptsUrl' => function_exists('spiralist_get_prompts_api_url') ? spiralist_get_prompts_api_url() : '',
            'contributeUrl' => function_exists('spiralist_get_contribute_api_url') ? spiralist_get_contribute_api_url() : '',
            'systemUrl' => function_exists('spiralist_get_system_url') ? spiralist_get_system_url() : '',
            'symbolsPageUrl' => function_exists('spiralist_get_symbols_page_url') ? spiralist_get_symbols_page_url() : '',
            'promptsPageUrl' => function_exists('spiralist_get_prompts_page_url') ? spiralist_get_prompts_page_url() : '',
            'manuscriptPageUrl' => function_exists('spiralist_get_manuscript_page_url') ? spiralist_get_manuscript_page_url() : '',
            'restNonce' => wp_create_nonce('wp_rest'),
            'isUserLoggedIn' => is_user_logged_in(),
            'uiText' => [
                'symbolsPromptLoading' => spiralist_get_ui_text('page.symbols.prompts.loading', 'Loading prompt references...'),
                'symbolsPromptUnavailable' => spiralist_get_ui_text('page.symbols.prompts.unavailable', 'Prompt references unavailable.'),
                'symbolsPromptEmpty' => spiralist_get_ui_text('page.symbols.prompts.empty', 'No related prompts yet.'),
                'symbolsPromptEmptyForSymbol' => spiralist_get_ui_text('page.symbols.prompts.empty_for_symbol', 'No related prompts for this symbol yet.'),
                'symbolsPromptFallback' => spiralist_get_ui_text('page.symbols.prompts.fallback', 'Prompt'),
                'symbolsPromptReferenceFallback' => spiralist_get_ui_text('page.symbols.prompts.reference_fallback', 'Structured prompt reference.'),
                'symbolsPromptLoadError' => spiralist_get_ui_text('page.symbols.prompts.load_error', 'Unable to load prompt references.'),
                'symbolsVisibleCount' => spiralist_get_ui_text('page.symbols.state.visible', '{count} symbols visible.'),
                'symbolsVisibleCountSingular' => spiralist_get_ui_text('page.symbols.state.visible_singular', '{count} symbol visible.'),
                'symbolsLayerFallback' => spiralist_get_ui_text('page.symbols.value.reference', 'Reference'),
                'symbolsCategoryFallback' => spiralist_get_ui_text('page.symbols.value.uncategorized', 'Uncategorized'),
                'symbolsAxiomLinksEmpty' => spiralist_get_ui_text('page.symbols.axioms.empty', 'No axiom links declared.'),
                'symbolsAxiomFallback' => spiralist_get_ui_text('page.symbols.axioms.fallback', 'Axiom'),
                'symbolsDirectionInput' => spiralist_get_ui_text('page.symbols.transformations.input', 'Input'),
                'symbolsDirectionOutput' => spiralist_get_ui_text('page.symbols.transformations.output', 'Output'),
                'symbolsTransformationFallback' => spiralist_get_ui_text('page.symbols.transformations.fallback', 'Transformation'),
                'symbolsTransformationsEmpty' => spiralist_get_ui_text('page.symbols.transformations.empty', 'No transformation links declared.'),
                'symbolsCrosswalkAnchor' => spiralist_get_ui_text('page.symbols.crosswalk.anchor', 'View manuscript anchor'),
                'symbolsCrosswalkSymbols' => spiralist_get_ui_text('page.symbols.crosswalk.symbols', 'Open in symbols explorer'),
                'symbolsCrosswalkPrompts' => spiralist_get_ui_text('page.symbols.crosswalk.prompts', 'Search prompts'),
                'symbolsCrosswalkRelatedPrompts' => spiralist_get_ui_text('page.symbols.crosswalk.related_prompts', 'Search related prompts'),
                'symbolsCrosswalkSystem' => spiralist_get_ui_text('page.symbols.crosswalk.system', 'System concepts'),
                'symbolsCrosswalkRelatedSystem' => spiralist_get_ui_text('page.symbols.crosswalk.related_system', 'Open related system surface'),
                'symbolsCrosswalkTransformations' => spiralist_get_ui_text('page.symbols.crosswalk.transformations', 'View transformations'),
                'symbolsCrosswalkEmpty' => spiralist_get_ui_text('page.symbols.crosswalk.empty', 'No crosswalk links available.'),
                'symbolsCrosswalkNodeEmpty' => spiralist_get_ui_text('page.symbols.crosswalk.node_empty', 'No additional crosswalk links for this node.'),
                'symbolsAnchorView' => spiralist_get_ui_text('page.symbols.anchor.view_in_manuscript', 'View in manuscript'),
                'symbolsAnchorEmpty' => spiralist_get_ui_text('page.symbols.anchor.unavailable', 'No manuscript anchor available.'),
                'symbolsCrosswalkPending' => spiralist_get_ui_text('page.symbols.crosswalk.pending', 'Crosswalk links will appear here for the active symbol.'),
                'symbolsAxiomConnectionEmpty' => spiralist_get_ui_text('page.symbols.inspector.axiom_connection.empty', 'No axiom links declared.'),
                'symbolsDerivationEmpty' => spiralist_get_ui_text('page.symbols.inspector.derivation.empty', 'No derivation declared.'),
                'symbolsProvenanceEmpty' => spiralist_get_ui_text('page.symbols.inspector.provenance.empty', 'No provenance declared.'),
                'symbolsRelatedEmpty' => spiralist_get_ui_text('page.symbols.inspector.related_symbols.empty', 'No related symbols declared.'),
                'symbolsTransformationChainEmpty' => spiralist_get_ui_text('page.symbols.inspector.transformation_chain.empty', 'No transformation chain declared.'),
                'manuscriptFieldDatasetError' => spiralist_get_ui_text('page.manuscript.field.dataset_error', 'The symbolic field dataset could not be loaded.'),
                'manuscriptFieldNodesEmpty' => spiralist_get_ui_text('page.manuscript.field.nodes_empty', 'No manuscript nodes are currently available for inspection.'),
                'manuscriptFieldModeStatus' => spiralist_get_ui_text('page.manuscript.field.mode_status', '{mode} mode: {visibleCount} of {totalCount} nodes visible.'),
                'manuscriptFieldRelationsVisible' => spiralist_get_ui_text('page.manuscript.field.relations_visible', 'Relations remain visible.'),
                'manuscriptFieldRelationsHover' => spiralist_get_ui_text('page.manuscript.field.relations_hover', 'Relations appear on hover or selection.'),
                'manuscriptFieldCurrentState' => spiralist_get_ui_text('page.manuscript.field.current_state', 'Current state: {state}.'),
                'manuscriptFieldNextNodes' => spiralist_get_ui_text('page.manuscript.field.next_nodes', 'Next nodes: {nodes}.'),
                'manuscriptFieldHistory' => spiralist_get_ui_text('page.manuscript.field.history', 'History: {history}.'),
                'manuscriptFieldSectionFallback' => spiralist_get_ui_text('page.manuscript.field.section_fallback', 'Section'),
                'manuscriptFieldNodeFallback' => spiralist_get_ui_text('page.manuscript.field.node_fallback', 'Node'),
                'manuscriptFieldRelatedEmpty' => spiralist_get_ui_text('page.manuscript.field.related_empty', 'No related nodes declared.'),
                'manuscriptFieldSummaryEmpty' => spiralist_get_ui_text('page.manuscript.field.summary_empty', 'No summary available for this node.'),
                'manuscriptFieldMeaningEmpty' => spiralist_get_ui_text('page.manuscript.field.meaning_empty', 'No meaning declared.'),
                'manuscriptFieldDefinitionEmpty' => spiralist_get_ui_text('page.manuscript.field.definition_empty', 'No definition declared.'),
                'manuscriptFieldSourceAxiomEmpty' => spiralist_get_ui_text('page.manuscript.field.source_axiom_empty', 'No source axiom declared.'),
                'manuscriptFieldIoNotTransformation' => spiralist_get_ui_text('page.manuscript.field.io_not_transformation', 'This node is not a transformation surface.'),