@saltcorn/server 0.9.1-beta.12 → 0.9.1-beta.14

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/locales/en.json CHANGED
@@ -1283,5 +1283,6 @@
1283
1283
  "Theme for role": "Theme for role",
1284
1284
  "Set theme for each user role »": "Set theme for each user role »",
1285
1285
  "Available themes": "Available themes",
1286
- "Install more themes »": "Install more themes »"
1286
+ "Install more themes »": "Install more themes »",
1287
+ "Configure action": "Configure action"
1287
1288
  }
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@saltcorn/server",
3
- "version": "0.9.1-beta.12",
3
+ "version": "0.9.1-beta.14",
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.12",
11
- "@saltcorn/builder": "0.9.1-beta.12",
12
- "@saltcorn/data": "0.9.1-beta.12",
13
- "@saltcorn/admin-models": "0.9.1-beta.12",
14
- "@saltcorn/filemanager": "0.9.1-beta.12",
15
- "@saltcorn/markup": "0.9.1-beta.12",
16
- "@saltcorn/sbadmin2": "0.9.1-beta.12",
10
+ "@saltcorn/base-plugin": "0.9.1-beta.14",
11
+ "@saltcorn/builder": "0.9.1-beta.14",
12
+ "@saltcorn/data": "0.9.1-beta.14",
13
+ "@saltcorn/admin-models": "0.9.1-beta.14",
14
+ "@saltcorn/filemanager": "0.9.1-beta.14",
15
+ "@saltcorn/markup": "0.9.1-beta.14",
16
+ "@saltcorn/sbadmin2": "0.9.1-beta.14",
17
17
  "@socket.io/cluster-adapter": "^0.2.1",
18
18
  "@socket.io/sticky": "^1.0.1",
19
19
  "adm-zip": "0.5.10",
package/routes/actions.js CHANGED
@@ -400,7 +400,7 @@ router.get(
400
400
  { class: "ms-3" },
401
401
  trigger.action,
402
402
  table ? ` on ` + a({ href: `/table/${table.name}` }, table.name) : ""
403
- );
403
+ ) + a({href: `/actions/testrun/${id}`, class: "ms-2" }, req.__("Test run")+" »");
404
404
  if (!action) {
405
405
  req.flash("warning", req.__("Action not found"));
406
406
  res.redirect(`/actions/`);
@@ -618,7 +618,7 @@ router.get(
618
618
  let table, row;
619
619
  if (trigger.table_id) {
620
620
  table = Table.findOne({ id: trigger.table_id });
621
- row = await table.getRow({});
621
+ row = await table.getRow({}, {orderBy: "RANDOM()"});
622
622
  }
623
623
  let runres;
624
624
 
@@ -665,6 +665,10 @@ router.get(
665
665
  { href: `/actions`, class: "mt-4 btn btn-primary me-1" },
666
666
  "« " + req.__("back to actions")
667
667
  ),
668
+ a(
669
+ { href: `/actions/configure/${trigger.id}`, class: "mt-4 btn btn-primary me-1" },
670
+ req.__("Configure action")
671
+ ),
668
672
  a(
669
673
  {
670
674
  href: `/actions/testrun/${id}`,
@@ -123,40 +123,46 @@ const view_dropdown = (view, req, on_done_redirect_str = "") =>
123
123
  },
124
124
  '<i class="fas fa-running"></i>&nbsp;' + req.__("Run")
125
125
  ),
126
- a(
127
- {
128
- class: "dropdown-item",
129
- href: `/viewedit/edit/${encodeURIComponent(
130
- view.name
131
- )}${on_done_redirect_str}`,
132
- },
133
- '<i class="fas fa-edit"></i>&nbsp;' + req.__("Edit")
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>&nbsp;' + req.__("Edit")
135
+ ),
135
136
  post_dropdown_item(
136
- `/viewedit/add-to-menu/${view.id}${on_done_redirect_str}`,
137
+ `/viewedit/add-to-menu/${encodeURIComponent(
138
+ view.name
139
+ )}${on_done_redirect_str}`,
137
140
  '<i class="fas fa-bars"></i>&nbsp;' + req.__("Add to menu"),
138
141
  req
139
142
  ),
140
- post_dropdown_item(
141
- `/viewedit/clone/${view.id}${on_done_redirect_str}`,
142
- '<i class="far fa-copy"></i>&nbsp;' + req.__("Duplicate"),
143
- req
144
- ),
145
- a(
146
- {
147
- class: "dropdown-item",
148
- href: `javascript:ajax_modal('/admin/snapshot-restore/view/${view.name}')`,
149
- },
150
- '<i class="fas fa-undo-alt"></i>&nbsp;' + req.__("Restore")
151
- ),
152
- div({ class: "dropdown-divider" }),
153
- post_dropdown_item(
154
- `/viewedit/delete/${view.id}${on_done_redirect_str}`,
155
- '<i class="far fa-trash-alt"></i>&nbsp;' + req.__("Delete"),
156
- req,
157
- true,
158
- view.name
159
- ),
143
+ view.id &&
144
+ post_dropdown_item(
145
+ `/viewedit/clone/${view.id}${on_done_redirect_str}`,
146
+ '<i class="far fa-copy"></i>&nbsp;' + 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>&nbsp;' + 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>&nbsp;' + 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
- editViewRoleForm(row, roles, req, on_done_redirect_str),
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
- link(
231
- `/viewedit/config/${encodeURIComponent(
232
- r.name
233
- )}${on_done_redirect_str}`,
234
- req.__("Configure")
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
  ? {
@@ -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") + " &raquo;",
@@ -151,7 +154,7 @@ const viewForm = async (req, tableOptions, roles, pages, values) => {
151
154
  topic: "View patterns",
152
155
  context: {},
153
156
  },
154
- options: Object.keys(getState().viewtemplates),
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/:id",
667
+ "/add-to-menu/:viewname",
665
668
  isAdmin,
666
669
  error_catcher(async (req, res) => {
667
- const { id } = req.params;
668
- const view = await View.findOne({ id });
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",