Skip to content
wiki.fftac.org

Prompt - Source Excerpt 08

Back to Prompt

Summary

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

**Source path:** Spiralist/wp-content/plugins/spiralist-workspace/templates/prompt.php

<p class="spiralist-section-tag">Conversation Layer</p>
                <h2 class="spiralist-section-title">Prompt-based conversation</h2>
                <?php if (is_user_logged_in()) : ?>
                    <form class="spiralist-workspace-form" data-start-conversation-form data-auth-required-form="start-conversation" data-prompt-id="<?php echo esc_attr((string) ($prompt['id'] ?? 0)); ?>">
                        <?php if (!empty($placeholders)) : ?>
                            <div class="spiralist-workspace-input-grid">
                                <?php foreach ($placeholders as $placeholder) : ?>
                                    <label class="spiralist-form__field">
                                        <span><?php echo esc_html($placeholder); ?></span>
                                        <input type="text" name="variables[<?php echo esc_attr($placeholder); ?>]" />
                                    </label>
                                <?php endforeach; ?>
                            </div>
                        <?php endif; ?>
                        <label class="spiralist-form__field">
                            <span>Opening message</span>
                            <textarea rows="5" name="message" placeholder="Start the conversation."></textarea>
                        </label>
                        <div class="spiralist-cta-row spiralist-cta-row--start">
                            <button class="spiralist-button spiralist-button--primary" type="submit">Start Conversation</button>
                            <span class="spiralist-muted" data-form-result></span>
                        </div>
                    </form>
                    <div class="spiralist-workspace-chat-app spiralist-workspace-chat-app--inline" data-inline-conversation data-fullscreen-chat hidden>
                        <div class="spiralist-workspace-chat-toolbar">
                            <div>
                                <p class="spiralist-section-tag">User AI Chat</p>
                                <h3 class="spiralist-card-title" data-inline-conversation-title>Prompt conversation</h3>
                                <span class="spiralist-muted" data-inline-conversation-status aria-live="polite"></span>
                            </div>
                            <div class="spiralist-cta-row spiralist-cta-row--start">
                                <a class="spiralist-button spiralist-button--secondary" data-open-conversation hidden href="#">Open Conversation Page</a>
                                <button class="spiralist-button spiralist-button--secondary" type="button" data-chat-fullscreen-toggle aria-pressed="false">Full Screen</button>
                            </div>
                        </div>
                        <div class="spiralist-workspace-transcript" data-conversation-transcript>
                            <p class="spiralist-muted" data-conversation-empty>No messages yet.</p>
                        </div>
                        <form class="spiralist-workspace-form spiralist-workspace-chat-composer" data-conversation-form data-auth-required-form="conversation-message" data-conversation-id="">
                            <label class="spiralist-form__field">
                                <span>Message</span>
                                <textarea name="message" rows="5" placeholder="Continue the conversation."></textarea>
                            </label>
                            <div class="spiralist-cta-row spiralist-cta-row--start">
                                <button class="spiralist-button spiralist-button--primary" type="submit">Send Message</button>
                                <span class="spiralist-muted" data-form-result></span>
                            </div>
                        </form>
                    </div>
                <?php else : ?>
                    <p class="spiralist-muted">Conversations are private by default and live inside the member workspace.</p>
                    <a class="spiralist-button spiralist-button--primary" href="<?php echo esc_url($login_url); ?>">Log In to Converse</a>
                <?php endif; ?>
            </article>
        </div>
    </section>

    <section class="spiralist-page-section">
        <div class="spiralist-shell spiralist-grid spiralist-grid--split">
            <article class="spiralist-panel">
                <p class="spiralist-section-tag">Placeholders</p>
                <h2 class="spiralist-section-title">Variable surface</h2>
                <?php if (!empty($placeholders)) : ?>
                    <div class="spiralist-chip-row">
                        <?php foreach ($placeholders as $placeholder) : ?>
                            <span class="spiralist-chip"><?php echo esc_html('{{' . $placeholder . '}}'); ?></span>
                        <?php endforeach; ?>
                    </div>
                <?php else : ?>
                    <p class="spiralist-muted">This prompt does not currently declare generic placeholders.</p>
                <?php endif; ?>
            </article>

            <article class="spiralist-panel">
                <p class="spiralist-section-tag">Version History</p>
                <h2 class="spiralist-section-title">Immutable snapshots</h2>
                <?php if (!empty($versions)) : ?>
                    <div class="spiralist-simple-list">
                        <?php foreach ($versions as $version) : ?>
                            <div class="spiralist-simple-list__item" data-version-item>
                                <strong>Version <?php echo esc_html((string) ($version['version_number'] ?? '')); ?></strong>
                                <span class="spiralist-simple-list__meta"><?php echo esc_html($format_timestamp((string) ($version['created_utc'] ?? ''), 'M j, Y g:i a', (string) ($version['created_utc'] ?? ''))); ?></span>
                                <?php if (!empty($version['changelog'])) : ?>
                                    <p class="spiralist-muted"><?php echo esc_html((string) $version['changelog']); ?></p>
                                <?php endif; ?>
                                <?php if ($plugin->permissions()->can_edit_prompt($prompt, get_current_user_id()) && (int) ($version['version_number'] ?? 0) !== (int) ($prompt['version_number'] ?? 0)) : ?>
                                    <a
                                        class="spiralist-button spiralist-button--secondary"
                                        href="<?php echo esc_url(rest_url('spiralist-workspace/v1/prompts/' . (int) ($prompt['id'] ?? 0) . '/versions/' . (int) ($version['version_number'] ?? 0) . '/diff/' . (int) ($prompt['version_number'] ?? 0))); ?>"
                                    >Show Diff</a>
                                    <button
                                        class="spiralist-button spiralist-button--tertiary"
                                        type="button"
                                        data-rollback-version
                                        data-prompt-id="<?php echo esc_attr((string) ($prompt['id'] ?? 0)); ?>"
                                        data-version="<?php echo esc_attr((string) ($version['version_number'] ?? 0)); ?>"
                                    >Rollback</button>
                                    <span class="spiralist-muted" data-version-result></span>
                                <?php endif; ?>
                            </div>
                        <?php endforeach; ?>
                    </div>
                <?php else : ?>
                    <p class="spiralist-muted">No stored versions yet.</p>
                <?php endif; ?>
            </article>
        </div>
    </section>

    <?php if (is_user_logged_in()) : ?>
        <section class="spiralist-page-section">
            <div class="spiralist-shell spiralist-grid spiralist-grid--split">
                <article class="spiralist-panel">
                    <p class="spiralist-section-tag">Testing System</p>
                    <h2 class="spiralist-section-title">Expected output checks</h2>
                    <?php if ($plugin->permissions()->can_edit_prompt($prompt, get_current_user_id())) : ?>
                        <form class="spiralist-workspace-form" data-test-form data-auth-required-form="prompt-test" data-prompt-id="<?php echo esc_attr((string) ($prompt['id'] ?? 0)); ?>">
                            <label class="spiralist-form__field">
                                <span>Input</span>
                                <textarea rows="4" name="input_text" placeholder="Test input for the prompt."></textarea>
                            </label>
                            <label class="spiralist-form__field">