Move rendering into private templates
Add an explicit template renderer with HTML views and partials for the app, bootstrap, package, and catalog pages. Move shared reporting setup into config/reporting.php and relocate stylesheet assets under css/.
This commit is contained in:
@@ -0,0 +1,229 @@
|
||||
<!doctype html>
|
||||
<html lang="{{language}}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{{title}}</title>
|
||||
<link rel="stylesheet" href="/css/styles.css?v={{style_version}}">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="page">
|
||||
|
||||
{{{header_html}}}
|
||||
|
||||
<main class="page-main dashboard-main">
|
||||
|
||||
<section class="panel">
|
||||
<h2>{{download_settings_label}}</h2>
|
||||
|
||||
<form method="post" action="/admin-config?lang={{language_url}}" class="admin-form-grid">
|
||||
<input type="hidden" name="action" value="update_config">
|
||||
<label>
|
||||
{{racket_zip_chunk_label}}<br>
|
||||
<input type="number" name="racket_zip_max_base64_kb" min="1" step="1" value="{{racket_zip_max_base64_kb}}" required>
|
||||
</label>
|
||||
<label>
|
||||
{{package_zip_chunk_label}}<br>
|
||||
<input type="number" name="package_zip_max_base64_kb" min="1" step="1" value="{{package_zip_max_base64_kb}}" required>
|
||||
</label>
|
||||
<button type="submit">{{save_configuration_label}}</button>
|
||||
</form>
|
||||
|
||||
<p class="small">{{chunk_size_hint}}</p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{racket_zip_chunk_label}}</th>
|
||||
<td>{{{racket_zip_base64_chunk_size}}}</td>
|
||||
<td>{{{racket_zip_effective_binary_chunk}}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{package_zip_chunk_label}}</th>
|
||||
<td>{{{package_zip_base64_chunk_size}}}</td>
|
||||
<td>{{{package_zip_effective_binary_chunk}}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{racket_zip_source_label}}</th>
|
||||
<td><code>config/racket.zip</code></td>
|
||||
<td>{{{racket_zip_file_size}}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{racket_parts_label}}</th>
|
||||
<td><code>{{racket_part_count}}</code></td>
|
||||
<td>{{racket_parts_status}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section class="panel">
|
||||
<h2>{{maintenance_label}}</h2>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{next_tokens_label}}</legend>
|
||||
|
||||
<form method="post" action="/admin-config?lang={{language_url}}">
|
||||
<input type="hidden" name="action" value="cleanup_tokens">
|
||||
<button type="submit">{{remove_expired_tokens_label}}</button>
|
||||
</form>
|
||||
|
||||
<p class="small">{{cleanup_help}}</p>
|
||||
|
||||
<h3>{{current_next_tokens_label}}</h3>
|
||||
|
||||
{{{current_tokens_html}}}
|
||||
</fieldset>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
===
|
||||
{
|
||||
"translations": {
|
||||
"app.title": {
|
||||
"en": "Racket sandbox",
|
||||
"nl": "Racket sandbox"
|
||||
},
|
||||
"app.manage_prompts": {
|
||||
"en": "Manage prompts",
|
||||
"nl": "Prompts beheren"
|
||||
},
|
||||
"app.user_management": {
|
||||
"en": "User management",
|
||||
"nl": "Gebruikersbeheer"
|
||||
},
|
||||
"app.configuration": {
|
||||
"en": "Configuration",
|
||||
"nl": "Configuratie"
|
||||
},
|
||||
"app.logout": {
|
||||
"en": "Logout",
|
||||
"nl": "Uitloggen"
|
||||
},
|
||||
"app.language": {
|
||||
"en": "Language",
|
||||
"nl": "Taal"
|
||||
},
|
||||
"app.logged_in_as": {
|
||||
"en": "Logged in as:",
|
||||
"nl": "Ingelogd als:"
|
||||
},
|
||||
"app.admin": {
|
||||
"en": "Admin",
|
||||
"nl": "Admin"
|
||||
},
|
||||
"app.back_to_sandbox": {
|
||||
"en": "Back to Racket sandbox",
|
||||
"nl": "Terug naar Racket sandbox"
|
||||
},
|
||||
"app.download_settings": {
|
||||
"en": "Download settings",
|
||||
"nl": "Downloadinstellingen"
|
||||
},
|
||||
"app.maintenance": {
|
||||
"en": "Maintenance",
|
||||
"nl": "Onderhoud"
|
||||
},
|
||||
"app.next_tokens": {
|
||||
"en": "Next tokens",
|
||||
"nl": "Next-tokens"
|
||||
},
|
||||
"app.current_next_tokens": {
|
||||
"en": "Next tokens",
|
||||
"nl": "Next-tokens"
|
||||
},
|
||||
"app.token": {
|
||||
"en": "Token",
|
||||
"nl": "Token"
|
||||
},
|
||||
"app.created_at": {
|
||||
"en": "Created at",
|
||||
"nl": "Aangemaakt op"
|
||||
},
|
||||
"app.expires_at": {
|
||||
"en": "Expires at",
|
||||
"nl": "Verloopt op"
|
||||
},
|
||||
"app.no_current_next_tokens": {
|
||||
"en": "No next tokens.",
|
||||
"nl": "Geen next-tokens."
|
||||
},
|
||||
"app.remove_expired_tokens": {
|
||||
"en": "Remove expired next tokens",
|
||||
"nl": "Verlopen next-tokens verwijderen"
|
||||
},
|
||||
"app.racket_zip_chunk_kb": {
|
||||
"en": "Racket installation max base64 chunk size (KiB)",
|
||||
"nl": "Maximale base64-chunkgrootte Racket-installatie (KiB)"
|
||||
},
|
||||
"app.package_zip_chunk_kb": {
|
||||
"en": "Package/module max base64 chunk size (KiB)",
|
||||
"nl": "Maximale base64-chunkgrootte packages/modules (KiB)"
|
||||
},
|
||||
"app.save_configuration": {
|
||||
"en": "Save configuration",
|
||||
"nl": "Configuratie opslaan"
|
||||
},
|
||||
"app.configuration_saved": {
|
||||
"en": "Configuration saved.",
|
||||
"nl": "Configuratie opgeslagen."
|
||||
},
|
||||
"app.configuration_saved_with_parts": {
|
||||
"en": "Configuration saved. Racket installation parts regenerated: {{count}}",
|
||||
"nl": "Configuratie opgeslagen. Racket-installatie parts opnieuw gemaakt: {{count}}"
|
||||
},
|
||||
"app.racket_parts_regenerated": {
|
||||
"en": "Racket installation parts regenerated: {{count}}",
|
||||
"nl": "Racket-installatie parts opnieuw gemaakt: {{count}}"
|
||||
},
|
||||
"app.chunk_size_hint_v2": {
|
||||
"en": "Values are maximum base64 payload sizes in KiB. A {{chunk_size}} KiB binary chunk becomes {{base64_chunk_size}} KiB base64. Racket installation parts are regenerated when this configuration is saved.",
|
||||
"nl": "Waarden zijn maximale base64-payloadgroottes in KiB. Een binaire chunk van {{chunk_size}} KiB wordt {{base64_chunk_size}} KiB base64. Racket-installatie parts worden opnieuw gemaakt wanneer deze configuratie wordt opgeslagen."
|
||||
},
|
||||
"app.effective_binary_chunk": {
|
||||
"en": "Effective binary chunk",
|
||||
"nl": "Effectieve binaire chunk"
|
||||
},
|
||||
"app.effective_binary_chunk_bytes": {
|
||||
"en": "Effective binary chunk: {{bytes}} bytes",
|
||||
"nl": "Effectieve binaire chunk: {{bytes}} bytes"
|
||||
},
|
||||
"app.base64_chunk_size_kib": {
|
||||
"en": "{{size}} KiB",
|
||||
"nl": "{{size}} KiB"
|
||||
},
|
||||
"app.file_size_bytes": {
|
||||
"en": "{{bytes}} bytes",
|
||||
"nl": "{{bytes}} bytes"
|
||||
},
|
||||
"app.racket_zip_source": {
|
||||
"en": "Racket installation source",
|
||||
"nl": "Bronbestand Racket-installatie"
|
||||
},
|
||||
"app.racket_parts": {
|
||||
"en": "Racket installation parts",
|
||||
"nl": "Racket-installatie parts"
|
||||
},
|
||||
"app.racket_parts_current": {
|
||||
"en": "current",
|
||||
"nl": "actueel"
|
||||
},
|
||||
"app.racket_parts_current_with_date": {
|
||||
"en": "current, {{created_at}}",
|
||||
"nl": "actueel, {{created_at}}"
|
||||
},
|
||||
"app.racket_parts_missing": {
|
||||
"en": "missing or outdated; save configuration to regenerate",
|
||||
"nl": "ontbreken of verouderd; sla configuratie op om opnieuw te maken"
|
||||
},
|
||||
"app.expired_tokens_removed": {
|
||||
"en": "Expired next tokens removed: {{count}}",
|
||||
"nl": "Verlopen next-tokens verwijderd: {{count}}"
|
||||
},
|
||||
"app.cleanup_help": {
|
||||
"en": "Expired links should return an outdated information message to the AI agent. Cleanup only removes old token rows from SQLite.",
|
||||
"nl": "Verlopen links moeten een melding over verouderde informatie aan de AI-agent teruggeven. Opruimen verwijdert alleen oude tokenrijen uit SQLite."
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user