@saltcorn/server 1.0.0-rc.1 → 1.0.0-rc.2

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/auth/routes.js CHANGED
@@ -1133,7 +1133,10 @@ router.post(
1133
1133
  }
1134
1134
  if (getState().get2FApolicy(req.user) === "Mandatory") {
1135
1135
  res.redirect("/auth/twofa/setup/totp");
1136
- } else if (req.body.dest && is_relative_url(req.body.dest)) {
1136
+ } else if (
1137
+ req.body.dest &&
1138
+ is_relative_url(decodeURIComponent(req.body.dest))
1139
+ ) {
1137
1140
  res.redirect(decodeURIComponent(req.body.dest));
1138
1141
  } else res.redirect("/");
1139
1142
  })
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@saltcorn/server",
3
- "version": "1.0.0-rc.1",
3
+ "version": "1.0.0-rc.2",
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": "1.0.0-rc.1",
11
- "@saltcorn/builder": "1.0.0-rc.1",
12
- "@saltcorn/data": "1.0.0-rc.1",
13
- "@saltcorn/admin-models": "1.0.0-rc.1",
14
- "@saltcorn/filemanager": "1.0.0-rc.1",
15
- "@saltcorn/markup": "1.0.0-rc.1",
16
- "@saltcorn/plugins-loader": "1.0.0-rc.1",
17
- "@saltcorn/sbadmin2": "1.0.0-rc.1",
10
+ "@saltcorn/base-plugin": "1.0.0-rc.2",
11
+ "@saltcorn/builder": "1.0.0-rc.2",
12
+ "@saltcorn/data": "1.0.0-rc.2",
13
+ "@saltcorn/admin-models": "1.0.0-rc.2",
14
+ "@saltcorn/filemanager": "1.0.0-rc.2",
15
+ "@saltcorn/markup": "1.0.0-rc.2",
16
+ "@saltcorn/plugins-loader": "1.0.0-rc.2",
17
+ "@saltcorn/sbadmin2": "1.0.0-rc.2",
18
18
  "@socket.io/cluster-adapter": "^0.2.1",
19
19
  "@socket.io/sticky": "^1.0.1",
20
20
  "adm-zip": "0.5.10",
@@ -87,7 +87,9 @@ function isoDateFormatter(cell, formatterParams, onRendered) {
87
87
  if (formatterParams && formatterParams.format)
88
88
  return dayjs(val).format(formatterParams.format);
89
89
 
90
- return new Date(val).toLocaleDateString(window.detected_locale || "en");
90
+ return new Date(val).toLocaleDateString(window.detected_locale || "en", {
91
+ timeZone: "UTC",
92
+ });
91
93
  }
92
94
  function colorFormatter(cell, formatterParams, onRendered) {
93
95
  const val = cell.getValue();
@@ -525,10 +525,3 @@ div.componets-and-library-accordion {
525
525
  .toolbox-card:nth-child(2) {
526
526
  margin-bottom: 0px;
527
527
  }
528
- #builder-main-canvas {
529
- height: calc(100dvh - 50px) !important;
530
- min-height: 600px;
531
- }
532
- #builder-main-canvas.h-100 {
533
- height: 100% !important;
534
- }
@@ -350,16 +350,18 @@ function expand_thumbnail(img_id, filename) {
350
350
  }
351
351
 
352
352
  function ajax_modal(url, opts = {}) {
353
- ensure_modal_exists_and_closed();
354
- $("#scmodal").removeClass("no-submit-reload");
355
- $("#scmodal").attr("data-on-close-reload-view", opts.reload_view || null);
356
-
357
- if (opts.submitReload === false) $("#scmodal").addClass("no-submit-reload");
358
353
  $.ajax(url, {
359
354
  headers: {
360
355
  SaltcornModalRequest: "true",
361
356
  },
362
357
  success: function (res, textStatus, request) {
358
+ ensure_modal_exists_and_closed();
359
+ $("#scmodal").removeClass("no-submit-reload");
360
+ $("#scmodal").attr("data-on-close-reload-view", opts.reload_view || null);
361
+
362
+ if (opts.submitReload === false)
363
+ $("#scmodal").addClass("no-submit-reload");
364
+
363
365
  var title = request.getResponseHeader("Page-Title");
364
366
  var width = request.getResponseHeader("SaltcornModalWidth");
365
367
  var minwidth = request.getResponseHeader("SaltcornModalMinWidth");
package/routes/actions.js CHANGED
@@ -755,7 +755,7 @@ router.post(
755
755
  req.flash("success", req.__("Action configuration saved"));
756
756
  res.redirect(
757
757
  req.query.on_done_redirect &&
758
- is_relative_url(req.query.on_done_redirect)
758
+ is_relative_url("/" + req.query.on_done_redirect)
759
759
  ? `/${req.query.on_done_redirect}`
760
760
  : "/actions/"
761
761
  );
package/routes/delete.js CHANGED
@@ -38,7 +38,10 @@ router.post(
38
38
  try {
39
39
  if (role <= table.min_role_write)
40
40
  await table.deleteRows({ id }, req.user || { role_id: 100 });
41
- else if (table.ownership_field_id && req.user) {
41
+ else if (
42
+ (table.ownership_field_id || table.ownership_formula) &&
43
+ req.user
44
+ ) {
42
45
  const row = await table.getRow(
43
46
  { id },
44
47
  { forUser: req.user, forPublic: !req.user }
package/routes/files.js CHANGED
@@ -594,6 +594,9 @@ router.get(
594
594
  isAdmin,
595
595
  error_catcher(async (req, res) => {
596
596
  const form = await storage_form(req);
597
+ form.blurb = [
598
+ `<div class="alert alert-warning">S3 storage options may not work for this release. Enabling S3 storage is not recommended</div>`,
599
+ ];
597
600
  send_files_page({
598
601
  res,
599
602
  req,
package/routes/list.js CHANGED
@@ -411,7 +411,7 @@ router.get(
411
411
  ajax_indicator(false);
412
412
  //if (item._versions) item._versions = +item._versions + 1;
413
413
  //data.resolve(fixKeys(item));
414
- if(resp.success &&typeof resp.success ==="number" && !row.id) {
414
+ if(resp.success &&(typeof resp.success ==="number" || typeof resp.success ==="string") && !row.id) {
415
415
  window.tabulator_table.updateRow(cell.getRow(), {id: resp.success});
416
416
  }
417
417
 
@@ -648,7 +648,8 @@ router.post(
648
648
  const { pagename } = req.params;
649
649
 
650
650
  let redirectTarget =
651
- req.query.on_done_redirect && is_relative_url(req.query.on_done_redirect)
651
+ req.query.on_done_redirect &&
652
+ is_relative_url("/" + req.query.on_done_redirect)
652
653
  ? `/${req.query.on_done_redirect}`
653
654
  : "/pageedit";
654
655
  const page = await Page.findOne({ name: pagename });
@@ -766,7 +766,8 @@ router.post(
766
766
  )
767
767
  );
768
768
  let redirectTarget =
769
- req.query.on_done_redirect && is_relative_url(req.query.on_done_redirect)
769
+ req.query.on_done_redirect &&
770
+ is_relative_url("/" + req.query.on_done_redirect)
770
771
  ? `/${req.query.on_done_redirect}`
771
772
  : "/viewedit";
772
773
  res.redirect(redirectTarget);
@@ -791,7 +792,8 @@ router.post(
791
792
  req.__("View %s duplicated as %s", view.name, newview.name)
792
793
  );
793
794
  let redirectTarget =
794
- req.query.on_done_redirect && is_relative_url(req.query.on_done_redirect)
795
+ req.query.on_done_redirect &&
796
+ is_relative_url("/" + req.query.on_done_redirect)
795
797
  ? `/${req.query.on_done_redirect}`
796
798
  : "/viewedit";
797
799
  res.redirect(redirectTarget);
@@ -812,7 +814,8 @@ router.post(
812
814
  await View.delete({ id });
813
815
  req.flash("success", req.__("View deleted"));
814
816
  let redirectTarget =
815
- req.query.on_done_redirect && is_relative_url(req.query.on_done_redirect)
817
+ req.query.on_done_redirect &&
818
+ is_relative_url("/" + req.query.on_done_redirect)
816
819
  ? `/${req.query.on_done_redirect}`
817
820
  : "/viewedit";
818
821
  res.redirect(redirectTarget);
@@ -910,7 +913,7 @@ router.post(
910
913
  req.flash("success", message);
911
914
  let redirectTarget =
912
915
  req.query.on_done_redirect &&
913
- is_relative_url(req.query.on_done_redirect)
916
+ is_relative_url("/" + req.query.on_done_redirect)
914
917
  ? `/${req.query.on_done_redirect}`
915
918
  : "/viewedit";
916
919
  res.redirect(redirectTarget);