Admin Data - Source Excerpt 02
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/ns12-manuscript/includes/admin-data.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/includes/admin-data.php
if ($section_slug === 'threshold') {
$extends[] = 'base-threshold-folio';
} elseif ($section_slug === 'operative-plates') {
$extends[] = 'base-operative-folio';
} elseif ($section_slug === 'concordance') {
$extends[] = 'base-concordance-folio';
} else {
$extends[] = 'base-appendix-folio';
}
return $extends;
}
function spiralist_book_pages_admin_import_section(string $filename, string $requested): string
{
$sections = spiralist_book_pages_admin_sections();
if ($requested === 'auto') {
return function_exists('spiralist_book_pages_get_auto_book_page_section_slug')
? spiralist_book_pages_get_auto_book_page_section_slug($filename)
: 'appendix';
}
return isset($sections[$requested]) ? $requested : 'appendix';
}
function spiralist_book_pages_admin_default_folio(string $filename, string $slug, string $section_slug, int $sequence, bool $create_prompt): array
{
$title = function_exists('spiralist_book_pages_get_auto_book_page_title')
? spiralist_book_pages_get_auto_book_page_title($filename)
: spiralist_book_pages_admin_humanize(pathinfo($filename, PATHINFO_FILENAME));
if ($title === '') {
$title = spiralist_book_pages_admin_humanize(pathinfo($filename, PATHINFO_FILENAME));
}
return [
'slug' => $slug,
'filename' => $filename,
'label' => 'Page ' . max(1, $sequence),
'title' => $title !== '' ? $title : ('Manuscript Folio ' . max(1, $sequence)),
'eyebrow' => function_exists('spiralist_book_pages_get_auto_book_page_eyebrow') ? spiralist_book_pages_get_auto_book_page_eyebrow($section_slug) : 'Manuscript Folio',
'summary' => function_exists('spiralist_book_pages_get_auto_book_page_summary') ? spiralist_book_pages_get_auto_book_page_summary($title, $section_slug) : '',
'caption' => function_exists('spiralist_book_pages_get_auto_book_page_caption') ? spiralist_book_pages_get_auto_book_page_caption($title, $section_slug) : '',
'section_slug' => $section_slug,
'is_study_surface' => false,
'is_prominent' => true,
'display_order' => max(10, $sequence * 10),
'creation_prompt_title' => 'Prompt Used',
'creation_prompt_status' => $create_prompt ? 'Canonical prompt' : 'Prompt pending',
'creation_prompt_summary' => $create_prompt ? 'This folio now ships with a file-backed canonical prompt created through the book admin.' : 'This folio has been imported into the manuscript queue and still needs a saved prompt package.',
'creation_prompt_source_slug' => $slug,
'related_workspace_prompt_slugs' => [$slug],
];
}
function spiralist_book_pages_admin_default_prompt(array $folio): array
{
$slug = sanitize_title((string) ($folio['slug'] ?? ''));
$title = trim((string) ($folio['title'] ?? spiralist_book_pages_admin_humanize($slug)));
$filename = sanitize_file_name((string) ($folio['filename'] ?? ''));
$section_slug = sanitize_title((string) ($folio['section_slug'] ?? 'appendix'));
$sections = spiralist_book_pages_admin_sections();
$section_label = (string) ($sections[$section_slug]['label'] ?? spiralist_book_pages_admin_humanize($section_slug));
$user = wp_get_current_user();
$author = trim((string) ($user->display_name ?? ''));
if ($author === '') {
$author = 'Admin';
}
return [
'meta' => [
'schema' => 'spiralist-book-prompt/v1',
'slug' => $slug,
'source_version' => '1.0.0',
'title' => $title !== '' ? $title : spiralist_book_pages_admin_humanize($slug),
'summary' => sprintf('Canonical manuscript prompt for %s, created through the Spiralist Manuscript admin for direct folio publication.', $filename !== '' ? $filename : ($title !== '' ? $title : $slug)),
'author_label' => $author,
'category' => 'Visual Design',
'subcategory' => $section_label !== '' ? $section_label . ' Folios' : 'Manuscript Folios',
'prompt_type' => 'image',
'language' => 'all',
'prompt_status' => 'published',
'moderation_status' => 'approved',
'tags' => array_values(array_filter(['Manuscript', 'Image Generation', 'Museum Grade', 'Book Admin', $section_label], 'strlen')),
'sample_output' => sprintf('Target artifact: %s as a museum-grade manuscript folio.', $filename !== '' ? $filename : ($title !== '' ? $title : $slug)),
'related_manuscripts' => [],
'featured' => false,
'extends' => spiralist_book_pages_admin_default_prompt_extends($section_slug),
'filename' => $filename,
'folio_slug' => $slug,
'section_slug' => $section_slug,
'placeholders' => ['TITLE' => $title, 'FILENAME' => $filename, 'SECTION' => $section_slug],
],
'body' => function_exists('spiralist_book_pages_get_auto_book_page_prompt_text') ? spiralist_book_pages_get_auto_book_page_prompt_text($title, $section_slug) : '',
];
}
function spiralist_book_pages_admin_save_folio(array $folio): bool
{
$content_root = function_exists('spiralist_book_pages_get_content_root')
? spiralist_book_pages_get_content_root()
: '';
$slug = sanitize_title((string) ($folio['slug'] ?? ''));
if ($content_root === '' || $slug === '') {
return false;
}
$payload = [
'slug' => $slug,
'filename' => sanitize_file_name((string) ($folio['filename'] ?? '')),
'label' => sanitize_text_field((string) ($folio['label'] ?? '')),
'title' => sanitize_text_field((string) ($folio['title'] ?? '')),
'eyebrow' => sanitize_text_field((string) ($folio['eyebrow'] ?? '')),
'summary' => sanitize_textarea_field((string) ($folio['summary'] ?? '')),
'caption' => sanitize_textarea_field((string) ($folio['caption'] ?? '')),
'section_slug' => sanitize_title((string) ($folio['section_slug'] ?? 'appendix')),
'is_study_surface' => !empty($folio['is_study_surface']),
'is_prominent' => !empty($folio['is_prominent']),
'display_order' => max(0, (int) ($folio['display_order'] ?? 0)),
'creation_prompt_title' => sanitize_text_field((string) ($folio['creation_prompt_title'] ?? 'Prompt Used')),
'creation_prompt_status' => sanitize_text_field((string) ($folio['creation_prompt_status'] ?? 'Prompt pending')),
'creation_prompt_summary' => sanitize_textarea_field((string) ($folio['creation_prompt_summary'] ?? '')),
'creation_prompt_source_slug' => sanitize_title((string) ($folio['creation_prompt_source_slug'] ?? '')),
'related_workspace_prompt_slugs' => spiralist_book_pages_admin_parse_slug_list($folio['related_workspace_prompt_slugs'] ?? []),
];
return function_exists('spiralist_book_pages_write_json_file')
&& spiralist_book_pages_write_json_file(rtrim($content_root, '/\\') . DIRECTORY_SEPARATOR . 'folios' . DIRECTORY_SEPARATOR . $slug . '.json', $payload);
}
function spiralist_book_pages_admin_prompt_meta(string $slug): array
{
$meta_map = function_exists('spiralist_book_pages_get_content_prompt_meta_map')
? (array) spiralist_book_pages_get_content_prompt_meta_map()
: [];
return is_array($meta_map[$slug] ?? null) ? $meta_map[$slug] : [];
}
function spiralist_book_pages_admin_prompt_body(string $slug): string
{
$content_root = function_exists('spiralist_book_pages_get_content_root')
? spiralist_book_pages_get_content_root()
: '';
$path = $content_root !== ''
? rtrim($content_root, '/\\') . DIRECTORY_SEPARATOR . 'prompts' . DIRECTORY_SEPARATOR . $slug . DIRECTORY_SEPARATOR . 'body.md'
: '';
return function_exists('spiralist_book_pages_read_text_file')
? spiralist_book_pages_read_text_file($path)
: '';
}
function spiralist_book_pages_admin_normalize_prompt_meta(array $source, string $slug, array $existing = []): array
{
$folios = spiralist_book_pages_admin_folios();
$filename = sanitize_file_name((string) ($source['filename'] ?? ($existing['filename'] ?? '')));
$folio_slug = sanitize_title((string) ($source['folio_slug'] ?? ($existing['folio_slug'] ?? '')));
$section_slug = sanitize_title((string) ($source['section_slug'] ?? ($existing['section_slug'] ?? 'appendix')));
if ($folio_slug !== '' && isset($folios[$folio_slug])) {
$filename = $filename !== '' ? $filename : sanitize_file_name((string) ($folios[$folio_slug]['filename'] ?? ''));
$section_slug = $section_slug !== '' ? $section_slug : sanitize_title((string) ($folios[$folio_slug]['section_slug'] ?? 'appendix'));
} elseif ($filename !== '') {