Two kinds of pages
| Built-in page | Extension page | |
|---|---|---|
| Defined in | Database sys.page_def | Disk user-ext/{name}/ |
| URL | /page/run?param={page id} | /user-ext/{name}/index.html |
| SQL allowlist comes from | The page JSON | sql_ids in the matching index.json |
| Session key | page:{page id} | ext:{html path} |
| Menu points with | sys.menu.page_id | sys.menu.external_url |
Built-in pages
Each item in Body is one component. Type chooses the engine script. These types are available:
| Type | What it draws |
|---|---|
data_grid | Grid |
tree_grid | Tree |
simple_form | Form |
pivot_grid | Pivot, optionally with a chart |
file_manager | File manager |
sub_file_manager | Pick a business row, then manage the files under it |
role_treemenu_cfg | Roles and a menu tree |
The loader also lists select_box and button. This repository does not contain those scripts. New pages use the select box and buttons on a grid toolbar.
Extension pages
Use an extension page when a built-in component cannot express the screen. One directory, four files:
user-ext/{name}/
index.html
index.js
index.css
index.json title, sql_ids, notessql_ids is the list of sys.page_sql.id values this page may call. Leave one out and the call returns 403. After editing sql_ids, open the page again. The allowlist in the session does not hot-update.
The directory name starts with a lowercase letter and contains only a-z, 0-9, and _. user-ext/demo_scaffold/ is the template. A jar deploy keeps user-ext/ beside the jar. It is not inside the jar.