@saltcorn/server 0.9.1-beta.11 → 0.9.1-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -8
- package/public/saltcorn-common.js +5 -3
- package/routes/actions.js +6 -2
- package/routes/common_lists.js +47 -37
- package/routes/pageedit.js +3 -1
- package/routes/viewedit.js +7 -4
package/package.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saltcorn/server",
|
|
3
|
-
"version": "0.9.1-beta.
|
|
3
|
+
"version": "0.9.1-beta.13",
|
|
4
4
|
"description": "Server app for Saltcorn, open-source no-code platform",
|
|
5
5
|
"homepage": "https://saltcorn.com",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@aws-sdk/client-s3": "^3.451.0",
|
|
10
|
-
"@saltcorn/base-plugin": "0.9.1-beta.
|
|
11
|
-
"@saltcorn/builder": "0.9.1-beta.
|
|
12
|
-
"@saltcorn/data": "0.9.1-beta.
|
|
13
|
-
"@saltcorn/admin-models": "0.9.1-beta.
|
|
14
|
-
"@saltcorn/filemanager": "0.9.1-beta.
|
|
15
|
-
"@saltcorn/markup": "0.9.1-beta.
|
|
16
|
-
"@saltcorn/sbadmin2": "0.9.1-beta.
|
|
10
|
+
"@saltcorn/base-plugin": "0.9.1-beta.13",
|
|
11
|
+
"@saltcorn/builder": "0.9.1-beta.13",
|
|
12
|
+
"@saltcorn/data": "0.9.1-beta.13",
|
|
13
|
+
"@saltcorn/admin-models": "0.9.1-beta.13",
|
|
14
|
+
"@saltcorn/filemanager": "0.9.1-beta.13",
|
|
15
|
+
"@saltcorn/markup": "0.9.1-beta.13",
|
|
16
|
+
"@saltcorn/sbadmin2": "0.9.1-beta.13",
|
|
17
17
|
"@socket.io/cluster-adapter": "^0.2.1",
|
|
18
18
|
"@socket.io/sticky": "^1.0.1",
|
|
19
19
|
"adm-zip": "0.5.10",
|
|
@@ -1090,11 +1090,13 @@ function common_done(res, viewname, isWeb = true) {
|
|
|
1090
1090
|
handle(res.error, (text) => notifyAlert({ type: "danger", text: text }));
|
|
1091
1091
|
|
|
1092
1092
|
if (res.eval_js && res.row && res.field_names) {
|
|
1093
|
-
const f = new Function(`row, {${res.field_names}}`, res.eval_js);
|
|
1094
|
-
const evalres = f(res.row, res.row);
|
|
1093
|
+
const f = new Function(`viewname, row, {${res.field_names}}`, res.eval_js);
|
|
1094
|
+
const evalres = f(viewname, res.row, res.row);
|
|
1095
1095
|
if (evalres) common_done(evalres, viewname, isWeb);
|
|
1096
1096
|
} else if (res.eval_js) {
|
|
1097
|
-
|
|
1097
|
+
const f = new Function(`viewname`, res.eval_js);
|
|
1098
|
+
const evalres = f(viewname);
|
|
1099
|
+
if (evalres) common_done(evalres, viewname, isWeb);
|
|
1098
1100
|
}
|
|
1099
1101
|
|
|
1100
1102
|
if (res.reload_page) {
|
package/routes/actions.js
CHANGED
|
@@ -478,7 +478,9 @@ router.get(
|
|
|
478
478
|
res.redirect(`/actions/`);
|
|
479
479
|
} else {
|
|
480
480
|
// get configuration fields
|
|
481
|
-
const cfgFields = await getActionConfigFields(action, table
|
|
481
|
+
const cfgFields = await getActionConfigFields(action, table, {
|
|
482
|
+
mode: "trigger",
|
|
483
|
+
});
|
|
482
484
|
// create form
|
|
483
485
|
const form = new Form({
|
|
484
486
|
action: addOnDoneRedirect(`/actions/configure/${id}`, req),
|
|
@@ -523,7 +525,9 @@ router.post(
|
|
|
523
525
|
const table = trigger.table_id
|
|
524
526
|
? Table.findOne({ id: trigger.table_id })
|
|
525
527
|
: null;
|
|
526
|
-
const cfgFields = await getActionConfigFields(action, table
|
|
528
|
+
const cfgFields = await getActionConfigFields(action, table, {
|
|
529
|
+
mode: "trigger",
|
|
530
|
+
});
|
|
527
531
|
const form = new Form({
|
|
528
532
|
action: `/actions/configure/${id}`,
|
|
529
533
|
fields: cfgFields,
|
package/routes/common_lists.js
CHANGED
|
@@ -123,40 +123,46 @@ const view_dropdown = (view, req, on_done_redirect_str = "") =>
|
|
|
123
123
|
},
|
|
124
124
|
'<i class="fas fa-running"></i> ' + req.__("Run")
|
|
125
125
|
),
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
126
|
+
view.id &&
|
|
127
|
+
a(
|
|
128
|
+
{
|
|
129
|
+
class: "dropdown-item",
|
|
130
|
+
href: `/viewedit/edit/${encodeURIComponent(
|
|
131
|
+
view.name
|
|
132
|
+
)}${on_done_redirect_str}`,
|
|
133
|
+
},
|
|
134
|
+
'<i class="fas fa-edit"></i> ' + req.__("Edit")
|
|
135
|
+
),
|
|
135
136
|
post_dropdown_item(
|
|
136
|
-
`/viewedit/add-to-menu/${
|
|
137
|
+
`/viewedit/add-to-menu/${encodeURIComponent(
|
|
138
|
+
view.name
|
|
139
|
+
)}${on_done_redirect_str}`,
|
|
137
140
|
'<i class="fas fa-bars"></i> ' + req.__("Add to menu"),
|
|
138
141
|
req
|
|
139
142
|
),
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
143
|
+
view.id &&
|
|
144
|
+
post_dropdown_item(
|
|
145
|
+
`/viewedit/clone/${view.id}${on_done_redirect_str}`,
|
|
146
|
+
'<i class="far fa-copy"></i> ' + req.__("Duplicate"),
|
|
147
|
+
req
|
|
148
|
+
),
|
|
149
|
+
view.id &&
|
|
150
|
+
a(
|
|
151
|
+
{
|
|
152
|
+
class: "dropdown-item",
|
|
153
|
+
href: `javascript:ajax_modal('/admin/snapshot-restore/view/${view.name}')`,
|
|
154
|
+
},
|
|
155
|
+
'<i class="fas fa-undo-alt"></i> ' + req.__("Restore")
|
|
156
|
+
),
|
|
157
|
+
view.id && div({ class: "dropdown-divider" }),
|
|
158
|
+
view.id &&
|
|
159
|
+
post_dropdown_item(
|
|
160
|
+
`/viewedit/delete/${view.id}${on_done_redirect_str}`,
|
|
161
|
+
'<i class="far fa-trash-alt"></i> ' + req.__("Delete"),
|
|
162
|
+
req,
|
|
163
|
+
true,
|
|
164
|
+
view.name
|
|
165
|
+
),
|
|
160
166
|
]);
|
|
161
167
|
|
|
162
168
|
const setTableRefs = async (views) => {
|
|
@@ -222,17 +228,21 @@ const viewsList = async (
|
|
|
222
228
|
{
|
|
223
229
|
label: req.__("Role to access"),
|
|
224
230
|
key: (row) =>
|
|
225
|
-
|
|
231
|
+
row.id
|
|
232
|
+
? editViewRoleForm(row, roles, req, on_done_redirect_str)
|
|
233
|
+
: "admin",
|
|
226
234
|
},
|
|
227
235
|
{
|
|
228
236
|
label: "",
|
|
229
237
|
key: (r) =>
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
238
|
+
r.id && r.viewtemplateObj?.configuration_workflow
|
|
239
|
+
? link(
|
|
240
|
+
`/viewedit/config/${encodeURIComponent(
|
|
241
|
+
r.name
|
|
242
|
+
)}${on_done_redirect_str}`,
|
|
243
|
+
req.__("Configure")
|
|
244
|
+
)
|
|
245
|
+
: "",
|
|
236
246
|
},
|
|
237
247
|
!tagId
|
|
238
248
|
? {
|
package/routes/pageedit.js
CHANGED
|
@@ -167,7 +167,9 @@ const pageBuilderData = async (req, context) => {
|
|
|
167
167
|
for (const name of actions) {
|
|
168
168
|
const action = stateActions[name];
|
|
169
169
|
if (action && action.configFields) {
|
|
170
|
-
actionConfigForms[name] = await getActionConfigFields(action
|
|
170
|
+
actionConfigForms[name] = await getActionConfigFields(action, null, {
|
|
171
|
+
mode: "page",
|
|
172
|
+
});
|
|
171
173
|
}
|
|
172
174
|
}
|
|
173
175
|
const library = (await Library.find({})).filter((l) => l.suitableFor("page"));
|
package/routes/viewedit.js
CHANGED
|
@@ -118,6 +118,9 @@ const viewForm = async (req, tableOptions, roles, pages, values) => {
|
|
|
118
118
|
.filter(([k, v]) => !v.tableless)
|
|
119
119
|
.map(([k, v]) => k);
|
|
120
120
|
const slugOptions = await Table.allSlugOptions();
|
|
121
|
+
const viewpatternOptions = Object.values(getState().viewtemplates)
|
|
122
|
+
.filter((vt) => !vt.singleton)
|
|
123
|
+
.map((vt) => vt.name);
|
|
121
124
|
return new Form({
|
|
122
125
|
action: addOnDoneRedirect("/viewedit/save", req),
|
|
123
126
|
submitLabel: req.__("Configure") + " »",
|
|
@@ -151,7 +154,7 @@ const viewForm = async (req, tableOptions, roles, pages, values) => {
|
|
|
151
154
|
topic: "View patterns",
|
|
152
155
|
context: {},
|
|
153
156
|
},
|
|
154
|
-
options:
|
|
157
|
+
options: viewpatternOptions,
|
|
155
158
|
attributes: {
|
|
156
159
|
explainers: mapObjectValues(
|
|
157
160
|
getState().viewtemplates,
|
|
@@ -661,11 +664,11 @@ router.post(
|
|
|
661
664
|
* @function
|
|
662
665
|
*/
|
|
663
666
|
router.post(
|
|
664
|
-
"/add-to-menu/:
|
|
667
|
+
"/add-to-menu/:viewname",
|
|
665
668
|
isAdmin,
|
|
666
669
|
error_catcher(async (req, res) => {
|
|
667
|
-
const {
|
|
668
|
-
const view = await View.findOne({
|
|
670
|
+
const { viewname } = req.params;
|
|
671
|
+
const view = await View.findOne({ name: viewname });
|
|
669
672
|
await add_to_menu({
|
|
670
673
|
label: view.name,
|
|
671
674
|
type: "View",
|