@saltcorn/server 0.9.4-beta.9 → 0.9.5-beta.0

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.
Files changed (183) hide show
  1. package/app.js +16 -1
  2. package/auth/admin.js +19 -3
  3. package/auth/routes.js +16 -4
  4. package/auth/testhelp.js +17 -1
  5. package/load_plugins.js +8 -2
  6. package/locales/en.json +24 -2
  7. package/markup/admin.js +22 -18
  8. package/package.json +10 -9
  9. package/public/dayjslocales/af.js +1 -0
  10. package/public/dayjslocales/am.js +1 -0
  11. package/public/dayjslocales/ar-dz.js +1 -0
  12. package/public/dayjslocales/ar-iq.js +1 -0
  13. package/public/dayjslocales/ar-kw.js +1 -0
  14. package/public/dayjslocales/ar-ly.js +1 -0
  15. package/public/dayjslocales/ar-ma.js +1 -0
  16. package/public/dayjslocales/ar-sa.js +1 -0
  17. package/public/dayjslocales/ar-tn.js +1 -0
  18. package/public/dayjslocales/ar.js +1 -0
  19. package/public/dayjslocales/az.js +1 -0
  20. package/public/dayjslocales/be.js +1 -0
  21. package/public/dayjslocales/bg.js +1 -0
  22. package/public/dayjslocales/bi.js +1 -0
  23. package/public/dayjslocales/bm.js +1 -0
  24. package/public/dayjslocales/bn-bd.js +1 -0
  25. package/public/dayjslocales/bn.js +1 -0
  26. package/public/dayjslocales/bo.js +1 -0
  27. package/public/dayjslocales/br.js +1 -0
  28. package/public/dayjslocales/bs.js +1 -0
  29. package/public/dayjslocales/ca.js +1 -0
  30. package/public/dayjslocales/cs.js +1 -0
  31. package/public/dayjslocales/cv.js +1 -0
  32. package/public/dayjslocales/cy.js +1 -0
  33. package/public/dayjslocales/da.js +1 -0
  34. package/public/dayjslocales/de-at.js +1 -0
  35. package/public/dayjslocales/de-ch.js +1 -0
  36. package/public/dayjslocales/de.js +1 -0
  37. package/public/dayjslocales/dv.js +1 -0
  38. package/public/dayjslocales/el.js +1 -0
  39. package/public/dayjslocales/en-au.js +1 -0
  40. package/public/dayjslocales/en-ca.js +1 -0
  41. package/public/dayjslocales/en-gb.js +1 -0
  42. package/public/dayjslocales/en-ie.js +1 -0
  43. package/public/dayjslocales/en-il.js +1 -0
  44. package/public/dayjslocales/en-in.js +1 -0
  45. package/public/dayjslocales/en-nz.js +1 -0
  46. package/public/dayjslocales/en-sg.js +1 -0
  47. package/public/dayjslocales/en-tt.js +1 -0
  48. package/public/dayjslocales/en.js +1 -0
  49. package/public/dayjslocales/eo.js +1 -0
  50. package/public/dayjslocales/es-do.js +1 -0
  51. package/public/dayjslocales/es-mx.js +1 -0
  52. package/public/dayjslocales/es-pr.js +1 -0
  53. package/public/dayjslocales/es-us.js +1 -0
  54. package/public/dayjslocales/es.js +1 -0
  55. package/public/dayjslocales/et.js +1 -0
  56. package/public/dayjslocales/eu.js +1 -0
  57. package/public/dayjslocales/fa.js +1 -0
  58. package/public/dayjslocales/fi.js +1 -0
  59. package/public/dayjslocales/fo.js +1 -0
  60. package/public/dayjslocales/fr-ca.js +1 -0
  61. package/public/dayjslocales/fr-ch.js +1 -0
  62. package/public/dayjslocales/fr.js +1 -0
  63. package/public/dayjslocales/fy.js +1 -0
  64. package/public/dayjslocales/ga.js +1 -0
  65. package/public/dayjslocales/gd.js +1 -0
  66. package/public/dayjslocales/gl.js +1 -0
  67. package/public/dayjslocales/gom-latn.js +1 -0
  68. package/public/dayjslocales/gu.js +1 -0
  69. package/public/dayjslocales/he.js +1 -0
  70. package/public/dayjslocales/hi.js +1 -0
  71. package/public/dayjslocales/hr.js +1 -0
  72. package/public/dayjslocales/ht.js +1 -0
  73. package/public/dayjslocales/hu.js +1 -0
  74. package/public/dayjslocales/hy-am.js +1 -0
  75. package/public/dayjslocales/id.js +1 -0
  76. package/public/dayjslocales/is.js +1 -0
  77. package/public/dayjslocales/it-ch.js +1 -0
  78. package/public/dayjslocales/it.js +1 -0
  79. package/public/dayjslocales/ja.js +1 -0
  80. package/public/dayjslocales/jv.js +1 -0
  81. package/public/dayjslocales/ka.js +1 -0
  82. package/public/dayjslocales/kk.js +1 -0
  83. package/public/dayjslocales/km.js +1 -0
  84. package/public/dayjslocales/kn.js +1 -0
  85. package/public/dayjslocales/ko.js +1 -0
  86. package/public/dayjslocales/ku.js +1 -0
  87. package/public/dayjslocales/ky.js +1 -0
  88. package/public/dayjslocales/lb.js +1 -0
  89. package/public/dayjslocales/lo.js +1 -0
  90. package/public/dayjslocales/lt.js +1 -0
  91. package/public/dayjslocales/lv.js +1 -0
  92. package/public/dayjslocales/me.js +1 -0
  93. package/public/dayjslocales/mi.js +1 -0
  94. package/public/dayjslocales/mk.js +1 -0
  95. package/public/dayjslocales/ml.js +1 -0
  96. package/public/dayjslocales/mn.js +1 -0
  97. package/public/dayjslocales/mr.js +1 -0
  98. package/public/dayjslocales/ms-my.js +1 -0
  99. package/public/dayjslocales/ms.js +1 -0
  100. package/public/dayjslocales/mt.js +1 -0
  101. package/public/dayjslocales/my.js +1 -0
  102. package/public/dayjslocales/nb.js +1 -0
  103. package/public/dayjslocales/ne.js +1 -0
  104. package/public/dayjslocales/nl-be.js +1 -0
  105. package/public/dayjslocales/nl.js +1 -0
  106. package/public/dayjslocales/nn.js +1 -0
  107. package/public/dayjslocales/oc-lnc.js +1 -0
  108. package/public/dayjslocales/pa-in.js +1 -0
  109. package/public/dayjslocales/pl.js +1 -0
  110. package/public/dayjslocales/pt-br.js +1 -0
  111. package/public/dayjslocales/pt.js +1 -0
  112. package/public/dayjslocales/rn.js +1 -0
  113. package/public/dayjslocales/ro.js +1 -0
  114. package/public/dayjslocales/ru.js +1 -0
  115. package/public/dayjslocales/rw.js +1 -0
  116. package/public/dayjslocales/sd.js +1 -0
  117. package/public/dayjslocales/se.js +1 -0
  118. package/public/dayjslocales/si.js +1 -0
  119. package/public/dayjslocales/sk.js +1 -0
  120. package/public/dayjslocales/sl.js +1 -0
  121. package/public/dayjslocales/sq.js +1 -0
  122. package/public/dayjslocales/sr-cyrl.js +1 -0
  123. package/public/dayjslocales/sr.js +1 -0
  124. package/public/dayjslocales/ss.js +1 -0
  125. package/public/dayjslocales/sv-fi.js +1 -0
  126. package/public/dayjslocales/sv.js +1 -0
  127. package/public/dayjslocales/sw.js +1 -0
  128. package/public/dayjslocales/ta.js +1 -0
  129. package/public/dayjslocales/te.js +1 -0
  130. package/public/dayjslocales/tet.js +1 -0
  131. package/public/dayjslocales/tg.js +1 -0
  132. package/public/dayjslocales/th.js +1 -0
  133. package/public/dayjslocales/tk.js +1 -0
  134. package/public/dayjslocales/tl-ph.js +1 -0
  135. package/public/dayjslocales/tlh.js +1 -0
  136. package/public/dayjslocales/tr.js +1 -0
  137. package/public/dayjslocales/tzl.js +1 -0
  138. package/public/dayjslocales/tzm-latn.js +1 -0
  139. package/public/dayjslocales/tzm.js +1 -0
  140. package/public/dayjslocales/ug-cn.js +1 -0
  141. package/public/dayjslocales/uk.js +1 -0
  142. package/public/dayjslocales/ur.js +1 -0
  143. package/public/dayjslocales/uz-latn.js +1 -0
  144. package/public/dayjslocales/uz.js +1 -0
  145. package/public/dayjslocales/vi.js +1 -0
  146. package/public/dayjslocales/x-pseudo.js +1 -0
  147. package/public/dayjslocales/yo.js +1 -0
  148. package/public/dayjslocales/zh-cn.js +1 -0
  149. package/public/dayjslocales/zh-hk.js +1 -0
  150. package/public/dayjslocales/zh-tw.js +1 -0
  151. package/public/dayjslocales/zh.js +1 -0
  152. package/public/gridedit.js +2 -2
  153. package/public/log_viewer_utils.js +156 -0
  154. package/public/saltcorn-builder.css +43 -2
  155. package/public/saltcorn-common.js +39 -29
  156. package/public/saltcorn.js +27 -17
  157. package/public/tabulator_bootstrap5.min.css +1 -0
  158. package/restart_watcher.js +1 -0
  159. package/routes/actions.js +158 -16
  160. package/routes/admin.js +83 -9
  161. package/routes/common_lists.js +40 -17
  162. package/routes/fields.js +18 -3
  163. package/routes/homepage.js +2 -1
  164. package/routes/page.js +30 -13
  165. package/routes/page_groupedit.js +104 -83
  166. package/routes/pageedit.js +4 -3
  167. package/routes/tables.js +34 -0
  168. package/routes/tag_entries.js +6 -1
  169. package/routes/tags.js +4 -0
  170. package/routes/utils.js +23 -2
  171. package/routes/view.js +5 -1
  172. package/routes/viewedit.js +9 -0
  173. package/serve.js +177 -10
  174. package/tests/admin.test.js +17 -11
  175. package/tests/api.test.js +27 -0
  176. package/tests/fields.test.js +132 -5
  177. package/tests/help.test.js +37 -0
  178. package/tests/page_group.test.js +1 -0
  179. package/tests/plugins.test.js +0 -12
  180. package/tests/table.test.js +1 -5
  181. package/tests/view.test.js +12 -0
  182. package/tests/viewedit.test.js +52 -8
  183. package/wrapper.js +9 -1
@@ -78,6 +78,37 @@ describe("viewedit edit endpoint", () => {
78
78
  });
79
79
 
80
80
  describe("viewedit new List", () => {
81
+ const columns = [
82
+ { type: "Field", field_name: "author" },
83
+ { type: "Field", field_name: "pages" },
84
+ ];
85
+ const layout = {
86
+ besides: [
87
+ {
88
+ contents: {
89
+ type: "field",
90
+ fieldview: "as_text",
91
+ field_name: "author",
92
+ configuration: {},
93
+ },
94
+ alignment: "Default",
95
+ header_label: "Author",
96
+ col_width_units: "px",
97
+ },
98
+ {
99
+ contents: {
100
+ type: "field",
101
+ fieldview: "show",
102
+ field_name: "pages",
103
+ configuration: {},
104
+ },
105
+ alignment: "Default",
106
+ header_label: "Pages",
107
+ col_width_units: "px",
108
+ },
109
+ ],
110
+ list_columns: true,
111
+ };
81
112
  itShouldRedirectUnauthToLogin("/viewedit/new");
82
113
 
83
114
  it("show new view", async () => {
@@ -117,11 +148,8 @@ describe("viewedit new List", () => {
117
148
  .post("/viewedit/config/mybooklist")
118
149
  .send("contextEnc=" + ctx)
119
150
  .send("stepName=Columns")
120
- .send("type_0=Field")
121
- .send("field_name_0=author")
122
- .send("type_1=Field")
123
- .send("field_name_1=pages")
124
- .send("create_view_display=Link")
151
+ .send("columns=" + encodeURIComponent(JSON.stringify(columns)))
152
+ .send("layout=" + encodeURIComponent(JSON.stringify(layout)))
125
153
  .set("Cookie", loginCookie)
126
154
  .expect(toInclude("Default state"));
127
155
  });
@@ -205,6 +233,23 @@ describe("viewedit new List", () => {
205
233
  });
206
234
 
207
235
  describe("viewedit new List with one field", () => {
236
+ const columns = [{ type: "Field", field_name: "author", state_field: "on" }];
237
+ const layout = {
238
+ besides: [
239
+ {
240
+ contents: {
241
+ type: "field",
242
+ fieldview: "as_text",
243
+ field_name: "author",
244
+ configuration: {},
245
+ },
246
+ alignment: "Default",
247
+ header_label: "Author",
248
+ col_width_units: "px",
249
+ },
250
+ ],
251
+ list_columns: true,
252
+ };
208
253
  it("submit new view", async () => {
209
254
  const loginCookie = await getAdminLoginCookie();
210
255
 
@@ -234,9 +279,8 @@ describe("viewedit new List with one field", () => {
234
279
  .post("/viewedit/config/mybooklist1")
235
280
  .send("contextEnc=" + ctx)
236
281
  .send("stepName=Columns")
237
- .send("type_0=Field")
238
- .send("field_name_0=author")
239
- .send("create_view_display=Link")
282
+ .send("columns=" + encodeURIComponent(JSON.stringify(columns)))
283
+ .send("layout=" + encodeURIComponent(JSON.stringify(layout)))
240
284
  .set("Cookie", loginCookie)
241
285
  .expect(toInclude("Default state"));
242
286
  });
package/wrapper.js CHANGED
@@ -185,17 +185,25 @@ const get_headers = (req, version_tag, description, extras = []) => {
185
185
  },
186
186
  ]
187
187
  : [];
188
+ const locale = req.getLocale();
188
189
  const stdHeaders = [
189
190
  {
190
191
  headerTag: `<script>var _sc_loglevel = ${
191
192
  state.logLevel
192
- }, _sc_globalCsrf = "${req.csrfToken()}", _sc_version_tag = "${version_tag}";</script>`,
193
+ }, _sc_globalCsrf = "${req.csrfToken()}", _sc_version_tag = "${version_tag}"${
194
+ locale ? `, _sc_locale = "${locale}"` : ""
195
+ };</script>`,
193
196
  },
194
197
  { css: `/static_assets/${version_tag}/saltcorn.css` },
195
198
  { script: `/static_assets/${version_tag}/saltcorn-common.js` },
196
199
  { script: `/static_assets/${version_tag}/saltcorn.js` },
197
200
  { script: `/static_assets/${version_tag}/dayjs.min.js` },
198
201
  ];
202
+ if (locale !== "en") {
203
+ stdHeaders.push({
204
+ script: `/static_assets/${version_tag}/dayjslocales/${locale}.js`,
205
+ });
206
+ }
199
207
  let from_cfg = [];
200
208
  if (state.getConfig("page_custom_css", ""))
201
209
  from_cfg.push({ style: state.getConfig("page_custom_css", "") });