- sessionKey.ts: one 32-byte base64url key per form mount, sent only in headers - api/files.ts: FileRoutes over the record and child file routes, XHR upload with progress, 401 refresh and retry - FileuploadField and FileCaptionModal per UI-SPEC section 3: dropzone, image grid, rows, per-item states, client pre-checks, reorder, protected previews - FormView provides FORM_SESSION, counts pending changes as dirty and sends X-Session-Key on create and update - fileupload lang keys in en and pl, admin-spa docs note, deferred smoke test, rebuilt dist
69 lines
1.3 KiB
JSON
69 lines
1.3 KiB
JSON
{
|
|
"data": {
|
|
"name": "Gadget",
|
|
"fields": [
|
|
{
|
|
"name": "name",
|
|
"label": "Name",
|
|
"type": "text",
|
|
"required": true
|
|
},
|
|
{
|
|
"name": "photos",
|
|
"label": "Photos",
|
|
"type": "fileupload",
|
|
"mode": "image",
|
|
"multiple": true,
|
|
"maxFiles": 3,
|
|
"fileTypes": [
|
|
"jpg",
|
|
"png"
|
|
],
|
|
"maxFilesize": 2,
|
|
"thumbOptions": {
|
|
"mode": "crop"
|
|
},
|
|
"useCaption": true
|
|
}
|
|
],
|
|
"messages": {
|
|
"create": {
|
|
"other": "New gadget"
|
|
},
|
|
"update": {
|
|
"other": "Editing gadget"
|
|
},
|
|
"saved": {
|
|
"other": "Gadget „:name” saved"
|
|
},
|
|
"deleteConfirm": {
|
|
"other": "Delete this gadget?"
|
|
},
|
|
"deleted": {
|
|
"other": "Gadget deleted"
|
|
}
|
|
},
|
|
"meta": {
|
|
"locale": "en"
|
|
},
|
|
"assets": {
|
|
"scripts": [],
|
|
"styles": []
|
|
},
|
|
"redirects": {
|
|
"create": {
|
|
"redirect": "acme/demo/gadgets/update/:id",
|
|
"redirectClose": "acme/demo/gadgets"
|
|
},
|
|
"update": {
|
|
"redirect": "acme/demo/gadgets",
|
|
"redirectClose": "acme/demo/gadgets"
|
|
},
|
|
"default": "acme/demo/gadgets"
|
|
}
|
|
},
|
|
"meta": {
|
|
"locale": "en"
|
|
}
|
|
}
|