88 lines
3.2 KiB
Plaintext
88 lines
3.2 KiB
Plaintext
-- allium: 1
|
|
-- bDS Template Editor View
|
|
-- Scope: UI content area — template editing surface
|
|
-- Distilled from: TemplateEditor.tsx
|
|
|
|
-- Describes the layout and behaviour of the template editor.
|
|
-- See template.allium for entity model and Liquid subset.
|
|
|
|
use "./template.allium" as template
|
|
use "./i18n.allium" as i18n
|
|
|
|
-- ─── Template editor view ─────────────────────────────────────
|
|
|
|
value TemplateEditorView {
|
|
template_id: String
|
|
title: String -- editable text input
|
|
slug: String -- editable text input, auto-generated from title
|
|
kind: String -- select: post | list | not_found | partial
|
|
enabled: Boolean -- checkbox
|
|
content: String -- code editor content
|
|
created_at: String -- locale-formatted date
|
|
updated_at: String -- locale-formatted date
|
|
}
|
|
|
|
surface TemplateEditorSurface {
|
|
context editor: TemplateEditorView
|
|
|
|
exposes:
|
|
editor.title
|
|
editor.slug
|
|
editor.kind
|
|
editor.enabled
|
|
editor.created_at
|
|
editor.updated_at
|
|
|
|
provides:
|
|
TemplateSaveRequested(editor.template_id)
|
|
TemplateValidateRequested(editor.template_id)
|
|
TemplateDeleteRequested(editor.template_id)
|
|
|
|
@guarantee HeaderLayout
|
|
-- Header bar with template title tab.
|
|
-- Actions (right side): Save button, Validate button,
|
|
-- Delete button (danger style).
|
|
|
|
@guarantee MetadataRow
|
|
-- Two rows of metadata fields above the editor.
|
|
-- Row 1: Title (text input), Slug (text input, auto-generated from title).
|
|
-- Row 2: Kind (select: post/list/not-found/partial), Enabled (checkbox).
|
|
|
|
@guarantee EditorBody
|
|
-- Code editor with HTML/Liquid syntax highlighting.
|
|
-- Toolbar: "Content" label.
|
|
-- Syntax errors shown inline in editor on validation.
|
|
|
|
@guarantee FooterLayout
|
|
-- Created date and Updated date, locale-formatted.
|
|
}
|
|
|
|
-- ─── Template editor actions ────────────────────────────────
|
|
|
|
rule TemplateSave {
|
|
when: TemplateSaveRequested(template_id)
|
|
-- Liquid validation first (parse check for syntax errors)
|
|
-- If invalid: blocks save, shows error inline in editor
|
|
-- If valid: bumps version, saves to DB + rewrites .liquid file
|
|
-- See engine_side_effects.allium UpdateTemplateSideEffects
|
|
}
|
|
|
|
rule TemplateValidate {
|
|
when: TemplateValidateRequested(template_id)
|
|
-- Validates Liquid syntax without saving
|
|
-- Shows errors inline in editor
|
|
-- Success shown as toast or status indicator
|
|
}
|
|
|
|
rule TemplateDelete {
|
|
when: TemplateDeleteRequested(template_id)
|
|
-- Checks for references: posts using this template, tags with postTemplateSlug
|
|
-- If references exist: system confirm dialog
|
|
-- "This template is used by N posts and M tags. Force delete?"
|
|
-- Force delete: nulls templateSlug on referencing posts,
|
|
-- nulls postTemplateSlug on referencing tags
|
|
-- If no references: deletes without confirmation
|
|
-- Deletes DB record + .liquid file on disk
|
|
-- Closes template tab, sidebar removes item
|
|
}
|