@raketa-cloud/admin 0.0.29 → 0.0.31

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 (164) hide show
  1. package/package.json +1 -1
  2. package/src/cloud/ArticleRevisions.js +30 -1
  3. package/src/cloud/Articles.js +22 -9
  4. package/src/cloud/EventRevisions.js +40 -1
  5. package/src/cloud/Events.js +32 -11
  6. package/src/cloud/PageRevisions.js +20 -1
  7. package/src/cloud/Pages.js +13 -7
  8. package/src/cloud/RaketaClient.js +76 -0
  9. package/src/handlers/article_revisions/CodeHandler.js +18 -34
  10. package/src/handlers/article_revisions/GeneralHandler.js +19 -38
  11. package/src/handlers/article_revisions/LocksHandler.js +11 -6
  12. package/src/handlers/article_revisions/MetaHandler.js +18 -34
  13. package/src/handlers/article_revisions/TagHandler.js +23 -29
  14. package/src/handlers/article_revisions/UnlocksHandler.js +1 -1
  15. package/src/handlers/article_revisions/VisualHandler.js +18 -28
  16. package/src/handlers/articles/ArticlesHandler.js +11 -25
  17. package/src/handlers/articles/DeletesHandler.js +4 -4
  18. package/src/handlers/articles/TranslationsHandler.js +30 -56
  19. package/src/handlers/articles/URLsHandler.js +7 -7
  20. package/src/handlers/event_revisions/CodeHandler.js +22 -36
  21. package/src/handlers/event_revisions/GeneralHandler.js +22 -42
  22. package/src/handlers/event_revisions/LocksHandler.js +7 -6
  23. package/src/handlers/event_revisions/MetaHandler.js +22 -36
  24. package/src/handlers/event_revisions/TagHandler.js +25 -29
  25. package/src/handlers/event_revisions/VisualHandler.js +22 -30
  26. package/src/handlers/events/DeletesHandler.js +4 -4
  27. package/src/handlers/events/EventsHandler.js +13 -27
  28. package/src/handlers/events/TranslationsHandler.js +35 -58
  29. package/src/handlers/events/URLsHandler.js +7 -7
  30. package/src/handlers/page_revisions/CodeHandler.js +8 -34
  31. package/src/handlers/page_revisions/GeneralHandler.js +10 -37
  32. package/src/handlers/page_revisions/LocksHandler.js +11 -6
  33. package/src/handlers/page_revisions/MetaHandler.js +8 -34
  34. package/src/handlers/page_revisions/TagHandler.js +16 -27
  35. package/src/handlers/page_revisions/VisualHandler.js +8 -28
  36. package/src/handlers/pages/DeletesHandler.js +4 -4
  37. package/src/handlers/pages/PagesHandler.js +7 -24
  38. package/src/handlers/pages/TranslationsHandler.js +23 -45
  39. package/src/handlers/pages/URLsHandler.js +7 -7
  40. package/src/helpers/FormBuilder.js +1 -2
  41. package/src/tests/handlers/RedirectsHandler.test/create.test.js +1 -1
  42. package/src/tests/handlers/RedirectsHandler.test/create_form.test.js +1 -1
  43. package/src/tests/handlers/RedirectsHandler.test/destroy.test.js +1 -1
  44. package/src/tests/handlers/RedirectsHandler.test/edit_form.test.js +1 -1
  45. package/src/tests/handlers/RedirectsHandler.test/index.test.js +1 -1
  46. package/src/tests/handlers/RedirectsHandler.test/show.test.js +1 -1
  47. package/src/tests/handlers/RedirectsHandler.test/update.test.js +1 -1
  48. package/src/tests/handlers/article_revisions/ArticleRevisionsHandler.test/create.test.js +1 -1
  49. package/src/tests/handlers/article_revisions/ArticleRevisionsHandler.test/destroy.test.js +1 -1
  50. package/src/tests/handlers/article_revisions/CodesHandler.test/edit_form.test.js +7 -7
  51. package/src/tests/handlers/article_revisions/CodesHandler.test/update.test.js +37 -19
  52. package/src/tests/handlers/article_revisions/GeneralHandler.test/edit_form.test.js +5 -11
  53. package/src/tests/handlers/article_revisions/GeneralHandler.test/update.test.js +36 -28
  54. package/src/tests/handlers/article_revisions/MetaHandler.test/edit_form.test.js +7 -8
  55. package/src/tests/handlers/article_revisions/MetaHandler.test/update.test.js +41 -25
  56. package/src/tests/handlers/article_revisions/PublishesHandler.test/create.test.js +2 -2
  57. package/src/tests/handlers/article_revisions/PublishesHandler.test/create_form.test.js +2 -2
  58. package/src/tests/handlers/article_revisions/RevertsHandler.test/create.test.js +1 -1
  59. package/src/tests/handlers/article_revisions/TagHandler.test/edit_form.test.js +10 -7
  60. package/src/tests/handlers/article_revisions/TagHandler.test/update.test.js +20 -14
  61. package/src/tests/handlers/article_revisions/VisualHandler.test.test/edit_form.test.js +7 -6
  62. package/src/tests/handlers/article_revisions/VisualHandler.test.test/update.test.js +30 -19
  63. package/src/tests/handlers/article_revisions/WidgetHandler.test/show.test.js +2 -2
  64. package/src/tests/handlers/article_revisions/WidgetHandler.test/update.test.js +2 -2
  65. package/src/tests/handlers/articles/ArticlesHandler.test/create.test.js +53 -29
  66. package/src/tests/handlers/articles/ArticlesHandler.test/create_form.test.js +3 -3
  67. package/src/tests/handlers/articles/ArticlesHandler.test/index.test.js +2 -2
  68. package/src/tests/handlers/articles/ArticlesHandler.test/show.test.js +3 -3
  69. package/src/tests/handlers/articles/ClonesHandler.test/create.test.js +1 -1
  70. package/src/tests/handlers/articles/DeletesHandler.test/create.test.js +4 -4
  71. package/src/tests/handlers/articles/DeletesHandler.test/create_form.test.js +2 -2
  72. package/src/tests/handlers/articles/URLsHandler.test/create.test.js +6 -6
  73. package/src/tests/handlers/articles/URLsHandler.test/create_form.test.js +2 -2
  74. package/src/tests/handlers/event_revisions/CodesHandler.test/edit_form.test.js +11 -7
  75. package/src/tests/handlers/event_revisions/CodesHandler.test/update.test.js +43 -19
  76. package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/create.test.js +1 -1
  77. package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/destroy.test.js +1 -1
  78. package/src/tests/handlers/event_revisions/GeneralHandler.test/edit_form.test.js +7 -13
  79. package/src/tests/handlers/event_revisions/GeneralHandler.test/update.test.js +42 -32
  80. package/src/tests/handlers/event_revisions/MetaHandler.test/edit_form.test.js +11 -8
  81. package/src/tests/handlers/event_revisions/MetaHandler.test/update.test.js +47 -25
  82. package/src/tests/handlers/event_revisions/PublishesHandler.test/create.test.js +2 -2
  83. package/src/tests/handlers/event_revisions/PublishesHandler.test/create_form.test.js +2 -2
  84. package/src/tests/handlers/event_revisions/RevertsHandler.test/create.test.js +1 -1
  85. package/src/tests/handlers/event_revisions/TagHandler.test/edit_form.test.js +14 -7
  86. package/src/tests/handlers/event_revisions/TagHandler.test/update.test.js +26 -14
  87. package/src/tests/handlers/event_revisions/VisualHandler.test.test/edit_form.test.js +11 -6
  88. package/src/tests/handlers/event_revisions/VisualHandler.test.test/update.test.js +36 -19
  89. package/src/tests/handlers/event_revisions/WidgetHandler.test/show.test.js +2 -2
  90. package/src/tests/handlers/event_revisions/WidgetHandler.test/update.test.js +2 -2
  91. package/src/tests/handlers/events/ClonesHandler.test/create.test.js +1 -1
  92. package/src/tests/handlers/events/DeletesHandler.test/create.test.js +4 -4
  93. package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +2 -2
  94. package/src/tests/handlers/events/EventsHandler.test/create.test.js +53 -37
  95. package/src/tests/handlers/events/EventsHandler.test/create_form.test.js +3 -3
  96. package/src/tests/handlers/events/EventsHandler.test/index.test.js +2 -2
  97. package/src/tests/handlers/events/EventsHandler.test/show.test.js +3 -3
  98. package/src/tests/handlers/events/URLsHandler.test/create.test.js +6 -6
  99. package/src/tests/handlers/events/URLsHandler.test/create_form.test.js +2 -2
  100. package/src/tests/handlers/page_revisions/CodesHandler.test/edit_form.test.js +10 -8
  101. package/src/tests/handlers/page_revisions/CodesHandler.test/update.test.js +30 -17
  102. package/src/tests/handlers/page_revisions/GeneralHandler.test/edit_form.test.js +3 -11
  103. package/src/tests/handlers/page_revisions/GeneralHandler.test/update.test.js +38 -22
  104. package/src/tests/handlers/page_revisions/MetaHandler.test/edit_form.test.js +2 -8
  105. package/src/tests/handlers/page_revisions/MetaHandler.test/update.test.js +37 -23
  106. package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/create.test.js +1 -1
  107. package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/destroy.test.js +1 -1
  108. package/src/tests/handlers/page_revisions/PublishesHandler.test/create.test.js +2 -2
  109. package/src/tests/handlers/page_revisions/PublishesHandler.test/create_form.test.js +2 -2
  110. package/src/tests/handlers/page_revisions/RevertsHandler.test/create.test.js +1 -1
  111. package/src/tests/handlers/page_revisions/TagHandler.test/edit_form.test.js +3 -7
  112. package/src/tests/handlers/page_revisions/TagHandler.test/update.test.js +11 -12
  113. package/src/tests/handlers/page_revisions/VisualHandler.test.test/edit_form.test.js +10 -7
  114. package/src/tests/handlers/page_revisions/VisualHandler.test.test/update.test.js +23 -17
  115. package/src/tests/handlers/page_revisions/WidgetHandler.test/show.test.js +2 -2
  116. package/src/tests/handlers/page_revisions/WidgetHandler.test/update.test.js +2 -2
  117. package/src/tests/handlers/pages/ConesHandler.test/create.test.js +1 -1
  118. package/src/tests/handlers/pages/DeletesHandler.test/create.test.js +4 -4
  119. package/src/tests/handlers/pages/DeletesHandler.test/create_form.test.js +2 -2
  120. package/src/tests/handlers/pages/PagesHandler.test/create.test.js +50 -27
  121. package/src/tests/handlers/pages/PagesHandler.test/create_form.test.js +3 -3
  122. package/src/tests/handlers/pages/PagesHandler.test/index.test.js +2 -2
  123. package/src/tests/handlers/pages/PagesHandler.test/show.test.js +3 -3
  124. package/src/tests/handlers/pages/URLsHandler.test/create.test.js +6 -6
  125. package/src/tests/handlers/pages/URLsHandler.test/create_form.test.js +2 -2
  126. package/src/tests/support/factory.js +5 -2
  127. package/src/utils.js +12 -0
  128. package/src/views/_shared/_credentials_input.ejs +31 -0
  129. package/src/views/_shared/_layout_input.ejs +5 -0
  130. package/src/views/article_revisions/_nav.ejs +5 -5
  131. package/src/views/article_revisions/codes/edit_form.ejs +17 -6
  132. package/src/views/article_revisions/general/edit_form.ejs +10 -36
  133. package/src/views/article_revisions/locks/create_form.ejs +4 -4
  134. package/src/views/article_revisions/meta/edit_form.ejs +7 -7
  135. package/src/views/article_revisions/tags/edit_form.ejs +5 -5
  136. package/src/views/article_revisions/visuals/edit_form.ejs +5 -9
  137. package/src/views/articles/_form.ejs +6 -37
  138. package/src/views/articles/deletes/create_form.ejs +9 -9
  139. package/src/views/articles/translations/_form.ejs +14 -46
  140. package/src/views/articles/urls/create_form.ejs +5 -5
  141. package/src/views/event_revisions/_nav.ejs +5 -5
  142. package/src/views/event_revisions/codes/edit_form.ejs +17 -6
  143. package/src/views/event_revisions/general/edit_form.ejs +12 -38
  144. package/src/views/event_revisions/locks/create_form.ejs +4 -4
  145. package/src/views/event_revisions/meta/edit_form.ejs +7 -7
  146. package/src/views/event_revisions/tags/edit_form.ejs +5 -5
  147. package/src/views/event_revisions/visuals/edit_form.ejs +5 -9
  148. package/src/views/events/_form.ejs +8 -39
  149. package/src/views/events/deletes/create_form.ejs +9 -9
  150. package/src/views/events/translations/_form.ejs +16 -47
  151. package/src/views/events/urls/create_form.ejs +5 -5
  152. package/src/views/layouts/application.ejs +57 -35
  153. package/src/views/page_revisions/_nav.ejs +5 -5
  154. package/src/views/page_revisions/codes/edit_form.ejs +17 -6
  155. package/src/views/page_revisions/general/edit_form.ejs +8 -35
  156. package/src/views/page_revisions/locks/create_form.ejs +4 -4
  157. package/src/views/page_revisions/meta/edit_form.ejs +7 -7
  158. package/src/views/page_revisions/publishes/_form.ejs +9 -9
  159. package/src/views/page_revisions/tags/edit_form.ejs +5 -5
  160. package/src/views/page_revisions/visuals/edit_form.ejs +5 -9
  161. package/src/views/pages/_form.ejs +5 -36
  162. package/src/views/pages/deletes/create_form.ejs +9 -9
  163. package/src/views/pages/translations/_form.ejs +13 -45
  164. package/src/views/pages/urls/create_form.ejs +5 -5
@@ -1,24 +1,15 @@
1
1
  const edit_form = async (ctx) => {
2
2
  const { parent_id } = ctx.params;
3
3
 
4
- const revision = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
4
+ const resource = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
5
5
 
6
- if (!revision) {
6
+ if (!resource) {
7
7
  throw new Error(`Missing revision #${parent_id}`);
8
8
  }
9
9
 
10
- const code_settings = {
11
- id: revision.id,
12
- originalId: revision.originalId,
13
- scripts: JSON.stringify(revision.settings.codes?.scripts || []),
14
- structured_data: JSON.stringify(
15
- revision.settings.codes?.structured_data || {}
16
- ),
17
- };
18
-
19
10
  return {
20
11
  assigns: {
21
- code_settings,
12
+ resource,
22
13
  errors: {},
23
14
  _translations: [],
24
15
  },
@@ -34,38 +25,21 @@ const update = async (ctx) => {
34
25
  throw new Error(`Missing revision #${parent_id}`);
35
26
  }
36
27
 
37
- const params = ctx.resourceParams.code_settings;
28
+ const params = ctx.resourceParams.resource;
29
+ const resource = ctx.client.pageRevisions.deepMerge(revision, params);
38
30
 
39
31
  const { errors } = await ctx.client.pageRevisions.update(
40
32
  revision.id,
41
33
  ctx.locale,
42
- {
43
- slug: revision.slug,
44
- title: revision.title,
45
- visibility: revision.visibility,
46
- widgets: JSON.stringify(revision.widgets),
47
- tags: revision.tags.map((t) => t.id),
48
- categories: revision.categories.map((c) => c.id),
49
- settings: JSON.stringify({
50
- ...revision.settings,
51
- codes: {
52
- scripts: JSON.parse(params.scripts),
53
- structured_data: JSON.parse(params.structured_data),
54
- },
55
- }),
56
- }
34
+ ctx.client.pageRevisions.selectUpdateParams(resource)
57
35
  );
58
36
 
59
37
  if (errors) {
60
38
  return {
61
39
  assigns: {
62
- code_settings: {
63
- ...params,
64
- id: revision.id,
65
- originalId: revision.originalId,
66
- },
40
+ resource,
67
41
  errors: {
68
- code_settings: ctx.client.pageRevisions.formatErrors(errors),
42
+ resource: ctx.client.pageRevisions.formatErrors(errors),
69
43
  },
70
44
  _translations: [],
71
45
  },
@@ -1,27 +1,17 @@
1
1
  const edit_form = async (ctx) => {
2
2
  const { parent_id } = ctx.params;
3
3
 
4
- const revision = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
4
+ const resource = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
5
5
 
6
- if (!revision) {
6
+ if (!resource) {
7
7
  throw new Error(`Missing revision #${parent_id}`);
8
8
  }
9
9
 
10
- const general_settings = {
11
- id: revision.id,
12
- originalId: revision.originalId,
13
- title: revision.title,
14
- slug: revision.slug,
15
- visibility: revision.visibility,
16
- username: revision.settings?.credentials?.user || "",
17
- password: revision.settings?.credentials?.password || "",
18
- };
19
-
20
10
  return {
21
11
  assigns: {
22
- general_settings,
23
- errors: {},
12
+ resource,
24
13
  visibilityOptions: ctx.client.pages.visibilityOptions(),
14
+ errors: {},
25
15
  _translations: [],
26
16
  },
27
17
  };
@@ -36,40 +26,23 @@ const update = async (ctx) => {
36
26
  throw new Error(`Missing revision #${parent_id}`);
37
27
  }
38
28
 
39
- const params = ctx.resourceParams.general_settings;
29
+ const params = ctx.resourceParams.resource;
30
+ const resource = ctx.client.pageRevisions.deepMerge(revision, params);
40
31
 
41
32
  const { errors } = await ctx.client.pageRevisions.update(
42
33
  revision.id,
43
34
  ctx.locale,
44
- {
45
- slug: params.slug,
46
- title: params.title,
47
- visibility: params.visibility,
48
- widgets: JSON.stringify(revision.widgets),
49
- tags: revision.tags.map((t) => t.id),
50
- categories: revision.categories.map((c) => c.id),
51
- settings: JSON.stringify({
52
- ...revision.settings,
53
- credentials: {
54
- user: params.username,
55
- password: params.password,
56
- },
57
- }),
58
- }
35
+ ctx.client.pageRevisions.selectUpdateParams(resource)
59
36
  );
60
37
 
61
38
  if (errors) {
62
39
  return {
63
40
  assigns: {
64
- general_settings: {
65
- ...params,
66
- id: revision.id,
67
- originalId: revision.originalId,
68
- },
41
+ resource,
42
+ visibilityOptions: ctx.client.pages.visibilityOptions(),
69
43
  errors: {
70
- general_settings: ctx.client.pageRevisions.formatErrors(errors),
44
+ resource: ctx.client.pageRevisions.formatErrors(errors),
71
45
  },
72
- visibilityOptions: ctx.client.pages.visibilityOptions(),
73
46
  _translations: [],
74
47
  },
75
48
  };
@@ -3,14 +3,15 @@ const create_form = async (ctx) => {
3
3
 
4
4
  const revision = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
5
5
 
6
- const lock_settings = {
7
- revision,
6
+ const resource = {
7
+ id: revision.id,
8
+ originalId: revision.originalId,
8
9
  message: "",
9
10
  };
10
11
 
11
12
  return {
12
13
  assigns: {
13
- lock_settings,
14
+ resource,
14
15
  errors: {},
15
16
  _translations: [],
16
17
  },
@@ -19,7 +20,7 @@ const create_form = async (ctx) => {
19
20
 
20
21
  const create = async (ctx) => {
21
22
  const { parent_id } = ctx.params;
22
- const { message } = ctx.resourceParams.lock_settings;
23
+ const { message } = ctx.resourceParams.resource;
23
24
 
24
25
  const { revision, errors, pageErrors } = await ctx.client.pageRevisions.lock(
25
26
  parent_id,
@@ -30,9 +31,13 @@ const create = async (ctx) => {
30
31
  if (errors) {
31
32
  return {
32
33
  assigns: {
33
- lock_settings: { revision, message },
34
+ resource: {
35
+ id: revision.id,
36
+ originalId: revision.originalId,
37
+ message,
38
+ },
34
39
  errors: {
35
- lock_settings: ctx.client.pages.formatErrors(errors, "message"),
40
+ resource: ctx.client.pages.formatErrors(errors, "message"),
36
41
  },
37
42
  _translations: [],
38
43
  },
@@ -1,23 +1,15 @@
1
1
  const edit_form = async (ctx) => {
2
2
  const { parent_id } = ctx.params;
3
3
 
4
- const revision = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
4
+ const resource = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
5
5
 
6
- if (!revision) {
6
+ if (!resource) {
7
7
  throw new Error(`Missing revision #${parent_id}`);
8
8
  }
9
9
 
10
- const meta_settings = {
11
- id: revision.id,
12
- originalId: revision.originalId,
13
- title: revision.settings.meta?.title || "",
14
- description: revision.settings.meta?.description || "",
15
- image: revision.settings.meta?.image || {},
16
- };
17
-
18
10
  return {
19
11
  assigns: {
20
- meta_settings,
12
+ resource,
21
13
  errors: {},
22
14
  _translations: [],
23
15
  },
@@ -33,39 +25,21 @@ const update = async (ctx) => {
33
25
  throw new Error(`Missing revision #${parent_id}`);
34
26
  }
35
27
 
36
- const params = ctx.resourceParams.meta_settings;
28
+ const params = ctx.resourceParams.resource;
29
+ const resource = ctx.client.pageRevisions.deepMerge(revision, params);
37
30
 
38
31
  const { errors } = await ctx.client.pageRevisions.update(
39
32
  revision.id,
40
33
  ctx.locale,
41
- {
42
- slug: revision.slug,
43
- title: revision.title,
44
- visibility: revision.visibility,
45
- widgets: JSON.stringify(revision.widgets),
46
- tags: revision.tags.map((t) => t.id),
47
- categories: revision.categories.map((c) => c.id),
48
- settings: JSON.stringify({
49
- ...revision.settings,
50
- meta: {
51
- title: params.title,
52
- description: params.description,
53
- image: JSON.parse(params.image),
54
- },
55
- }),
56
- }
34
+ ctx.client.pageRevisions.selectUpdateParams(resource)
57
35
  );
58
36
 
59
37
  if (errors) {
60
38
  return {
61
39
  assigns: {
62
- meta_settings: {
63
- ...params,
64
- id: revision.id,
65
- originalId: revision.originalId,
66
- },
40
+ resource,
67
41
  errors: {
68
- meta_settings: ctx.client.pageRevisions.formatErrors(errors),
42
+ resource: ctx.client.pageRevisions.formatErrors(errors),
69
43
  },
70
44
  _translations: [],
71
45
  },
@@ -1,25 +1,23 @@
1
+ import { checkboxesToArray } from "../../utils";
2
+
1
3
  const edit_form = async (ctx) => {
2
4
  const { parent_id } = ctx.params;
3
5
 
4
- const revision = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
6
+ const resource = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
5
7
 
6
- if (!revision) {
8
+ if (!resource) {
7
9
  throw new Error(`Missing revision #${parent_id}`);
8
10
  }
9
11
 
10
12
  const tags = await ctx.client.tags.all(ctx.locale);
11
13
 
12
- const tag_settings = {
13
- id: revision.id,
14
- originalId: revision.originalId,
15
- tags: revision.tags.map((t) => t.id),
16
- };
14
+ resource.tags = resource.tags.map((t) => t.id);
17
15
 
18
16
  return {
19
17
  assigns: {
20
- tag_settings,
21
- errors: {},
18
+ resource,
22
19
  tags: tags.list,
20
+ errors: {},
23
21
  _translations: [],
24
22
  },
25
23
  };
@@ -34,22 +32,15 @@ const update = async (ctx) => {
34
32
  throw new Error(`Missing revision #${parent_id}`);
35
33
  }
36
34
 
37
- const params = ctx.resourceParams.tag_settings;
35
+ const params = ctx.resourceParams.resource ? ctx.resourceParams.resource : {};
36
+ params.tags = checkboxesToArray(params.tags);
37
+
38
+ const resource = ctx.client.pageRevisions.deepMerge(revision, params);
38
39
 
39
40
  const { errors } = await ctx.client.pageRevisions.update(
40
41
  revision.id,
41
42
  ctx.locale,
42
- {
43
- slug: revision.slug,
44
- title: revision.title,
45
- visibility: revision.visibility,
46
- widgets: JSON.stringify(revision.widgets),
47
- tags: params.tags,
48
- categories: revision.categories.map((c) => c.id),
49
- settings: JSON.stringify({
50
- ...revision.settings,
51
- }),
52
- }
43
+ ctx.client.pageRevisions.selectUpdateParams(resource)
53
44
  );
54
45
 
55
46
  if (errors) {
@@ -57,13 +48,11 @@ const update = async (ctx) => {
57
48
 
58
49
  return {
59
50
  assigns: {
60
- tag_settings: {
61
- ...params,
62
- id: revision.id,
63
- originalId: revision.originalId,
64
- },
65
- errors: { tag_settings: ctx.client.pageRevisions.formatErrors(errors) },
51
+ resource,
66
52
  tags: tags.list,
53
+ errors: {
54
+ resource: ctx.client.pageRevisions.formatErrors(errors),
55
+ },
67
56
  _translations: [],
68
57
  },
69
58
  };
@@ -1,21 +1,15 @@
1
1
  const edit_form = async (ctx) => {
2
2
  const { parent_id } = ctx.params;
3
3
 
4
- const revision = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
4
+ const resource = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
5
5
 
6
- if (!revision) {
6
+ if (!resource) {
7
7
  throw new Error(`Missing revision #${parent_id}`);
8
8
  }
9
9
 
10
- const visual_settings = {
11
- id: revision.id,
12
- originalId: revision.originalId,
13
- layout: revision.settings.layout,
14
- };
15
-
16
10
  return {
17
11
  assigns: {
18
- visual_settings,
12
+ resource,
19
13
  errors: {},
20
14
  _translations: [],
21
15
  },
@@ -31,35 +25,21 @@ const update = async (ctx) => {
31
25
  throw new Error(`Missing revision #${parent_id}`);
32
26
  }
33
27
 
34
- const params = ctx.resourceParams.visual_settings;
28
+ const params = ctx.resourceParams.resource;
29
+ const resource = ctx.client.pageRevisions.deepMerge(revision, params);
35
30
 
36
31
  const { errors } = await ctx.client.pageRevisions.update(
37
32
  revision.id,
38
33
  ctx.locale,
39
- {
40
- slug: revision.slug,
41
- title: revision.title,
42
- visibility: revision.visibility,
43
- widgets: JSON.stringify(revision.widgets),
44
- tags: revision.tags.map((t) => t.id),
45
- categories: revision.categories.map((c) => c.id),
46
- settings: JSON.stringify({
47
- ...revision.settings,
48
- layout: params.layout,
49
- }),
50
- }
34
+ ctx.client.pageRevisions.selectUpdateParams(resource)
51
35
  );
52
36
 
53
37
  if (errors) {
54
38
  return {
55
39
  assigns: {
56
- visual_settings: {
57
- ...params,
58
- id: revision.id,
59
- originalId: revision.originalId,
60
- },
40
+ resource,
61
41
  errors: {
62
- visual_settings: ctx.client.pageRevisions.formatErrors(errors),
42
+ resource: ctx.client.pageRevisions.formatErrors(errors),
63
43
  },
64
44
  _translations: [],
65
45
  },
@@ -8,7 +8,7 @@ const create_form = async (ctx) => {
8
8
 
9
9
  return {
10
10
  assigns: {
11
- deleteAction: {
11
+ resource: {
12
12
  id: page.id,
13
13
  redirect: "",
14
14
  },
@@ -20,7 +20,7 @@ const create_form = async (ctx) => {
20
20
 
21
21
  const create = async (ctx) => {
22
22
  const { parent_id } = ctx.params;
23
- const params = ctx.resourceParams.deleteAction;
23
+ const params = ctx.resourceParams.resource;
24
24
  const page = await ctx.client.pages.find(parent_id, ctx.locale);
25
25
 
26
26
  if (!page) {
@@ -47,9 +47,9 @@ const create = async (ctx) => {
47
47
  if (errors) {
48
48
  return {
49
49
  assigns: {
50
- deleteAction: { ...params, id: page.id },
50
+ resource: { ...params, id: page.id },
51
51
  errors: {
52
- deleteAction: ctx.client.pages.formatErrors(errors, "redirect"),
52
+ resource: ctx.client.pages.formatErrors(errors, "redirect"),
53
53
  },
54
54
  _translations: [],
55
55
  },
@@ -55,7 +55,7 @@ const create_form = async (ctx) => {
55
55
 
56
56
  return {
57
57
  assigns: {
58
- resource: { ...ctx.client.pages.defaults(), meta_image: {} },
58
+ resource: { ...ctx.client.pages.defaults() },
59
59
  tags: tags.list,
60
60
  errors: {},
61
61
  visibilityOptions: ctx.client.pages.visibilityOptions(),
@@ -66,30 +66,13 @@ const create_form = async (ctx) => {
66
66
 
67
67
  const create = async (ctx) => {
68
68
  const params = { ...ctx.resourceParams.resource };
69
-
70
- params.meta_image = JSON.parse(params.meta_image || "{}");
69
+ const resource = ctx.client.pages.deepMerge(
70
+ ctx.client.pages.defaults(),
71
+ params
72
+ );
71
73
 
72
74
  const { errors } = await ctx.client.pages.create(
73
- {
74
- title: params.title,
75
- slug: params.slug,
76
- visibility: params.visibility,
77
- settings: {
78
- layout: params.layout,
79
- meta: {
80
- title: params.meta_title,
81
- description: params.meta_description,
82
- image: params.meta_image,
83
- },
84
- credentials: {
85
- user: params.username || "",
86
- password: params.password || "",
87
- },
88
- },
89
- widgets: [],
90
- tags: params.tags || [],
91
- categories: params.categories || [],
92
- },
75
+ resource,
93
76
  ctx.locale,
94
77
  ctx.resourceConfig.pageType
95
78
  );
@@ -99,7 +82,7 @@ const create = async (ctx) => {
99
82
 
100
83
  return {
101
84
  assigns: {
102
- resource: params,
85
+ resource,
103
86
  tags: tags.list,
104
87
  errors: { resource: ctx.client.pages.formatErrors(errors) },
105
88
  visibilityOptions: ctx.client.pages.visibilityOptions(),
@@ -3,29 +3,17 @@ const create_form = async (ctx) => {
3
3
  const target_locate_tags = await ctx.client.tags.all(target_locale);
4
4
 
5
5
  const { parent_id } = ctx.params;
6
- const blueprint_resource = await ctx.client.pages.find(parent_id, ctx.locale);
6
+ const blueprint = await ctx.client.pages.find(parent_id, ctx.locale);
7
7
 
8
- const translation = {
9
- title: blueprint_resource.title,
10
- slug: blueprint_resource.slug,
11
- visibility: blueprint_resource.visibility,
12
- layout: blueprint_resource.settings.layout,
13
- meta_title: blueprint_resource.settings.meta.title,
14
- meta_description: blueprint_resource.settings.meta.description,
15
- meta_image: blueprint_resource.settings.meta?.image || {},
16
- username: blueprint_resource.settings.credentials?.user || "",
17
- password: blueprint_resource.settings.credentials?.password || "",
18
- tags: [],
19
- // categories: blueprint_resource.categories, # TODO: this will be added later?
20
- };
8
+ const resource = structuredClone(blueprint);
9
+ resource.tags = [];
21
10
 
22
11
  return {
23
12
  assigns: {
24
- resource: blueprint_resource,
25
- translation: translation,
13
+ resource,
14
+ blueprint,
26
15
  targetLocale: target_locale,
27
16
  tags: target_locate_tags.list,
28
- blueprint_tags: blueprint_resource.tags,
29
17
  errors: {},
30
18
  visibilityOptions: ctx.client.pages.visibilityOptions(),
31
19
  _translations: [],
@@ -35,37 +23,27 @@ const create_form = async (ctx) => {
35
23
 
36
24
  const create = async (ctx) => {
37
25
  const { parent_id } = ctx.params;
38
- const blueprint_resource = await ctx.client.pages.find(parent_id, ctx.locale);
26
+ const blueprint = await ctx.client.pages.find(parent_id, ctx.locale);
39
27
 
40
28
  const { target_locale } = ctx.resourceParams;
41
- const translation = { ...ctx.resourceParams.translation };
29
+ const params = { ...ctx.resourceParams.resource };
42
30
 
43
- translation.meta_image = JSON.parse(translation.meta_image || "{}");
31
+ const resource = ctx.client.pages.deepMerge(
32
+ {
33
+ settings: {
34
+ ...blueprint.settings,
35
+ },
36
+ widgets: blueprint.widgets,
37
+ categories: blueprint.categories.map((category) => category.id),
38
+ tags: [],
39
+ },
40
+ params
41
+ );
44
42
 
45
43
  const { errors } = await ctx.client.pages.translate(
46
44
  parent_id,
47
45
  target_locale,
48
- {
49
- title: translation.title,
50
- slug: translation.slug,
51
- visibility: translation.visibility,
52
- settings: {
53
- ...blueprint_resource.settings,
54
- layout: translation.layout,
55
- meta: {
56
- title: translation.meta_title,
57
- description: translation.meta_description,
58
- image: translation.meta_image,
59
- },
60
- credentials: {
61
- user: translation.username || "",
62
- password: translation.password || "",
63
- },
64
- },
65
- widgets: blueprint_resource.widgets,
66
- tags: translation.tags || [],
67
- categories: blueprint_resource.categories.map((category) => category.id),
68
- }
46
+ resource
69
47
  );
70
48
 
71
49
  if (errors) {
@@ -73,11 +51,11 @@ const create = async (ctx) => {
73
51
 
74
52
  return {
75
53
  assigns: {
76
- resource: blueprint_resource,
77
- translation: translation,
78
- targetLocale: translation.target_locate,
54
+ resource,
55
+ blueprint,
56
+ targetLocale: target_locale,
79
57
  tags: tags.list,
80
- errors: {},
58
+ errors: { resource: ctx.client.pages.formatErrors(errors) },
81
59
  visibilityOptions: ctx.client.pages.visibilityOptions(),
82
60
  _translations: [],
83
61
  },
@@ -10,7 +10,7 @@ const create_form = async (ctx) => {
10
10
 
11
11
  return {
12
12
  assigns: {
13
- change: {
13
+ resource: {
14
14
  id: page.id,
15
15
  slug: page.slug,
16
16
  redirect: null,
@@ -23,7 +23,7 @@ const create_form = async (ctx) => {
23
23
 
24
24
  const create = async (ctx) => {
25
25
  const { parent_id } = ctx.params;
26
- const change = ctx.resourceParams.change;
26
+ const resource = ctx.resourceParams.resource;
27
27
 
28
28
  const page = await ctx.client.pages.find(parent_id, ctx.locale);
29
29
 
@@ -35,10 +35,10 @@ const create = async (ctx) => {
35
35
 
36
36
  let redirectParams = null;
37
37
 
38
- if (change.redirect) {
38
+ if (resource.redirect) {
39
39
  redirectParams = {
40
40
  url: ctx.remoteConfig.resourcePath(page, page.pageType.slug, ctx.locale),
41
- destination: change.slug,
41
+ destination: resource.slug,
42
42
  httpResponseCode: 301,
43
43
  note: `Created with changed URL for a ${ctx.resourceConfig.pageType}`,
44
44
  };
@@ -46,7 +46,7 @@ const create = async (ctx) => {
46
46
 
47
47
  const { errors } = await ctx.client.pages.updateSlug(
48
48
  parent_id,
49
- change.slug,
49
+ resource.slug,
50
50
  ctx.locale,
51
51
  redirectParams
52
52
  );
@@ -54,8 +54,8 @@ const create = async (ctx) => {
54
54
  if (errors) {
55
55
  return {
56
56
  assigns: {
57
- change: { ...change, id: page.id },
58
- errors: { change: ctx.client.pages.formatErrors(errors, "redirect") },
57
+ resource: { ...resource, id: page.id },
58
+ errors: { resource: ctx.client.pages.formatErrors(errors, "redirect") },
59
59
  _translations: [],
60
60
  },
61
61
  };
@@ -109,8 +109,7 @@ export default class FormBuilder extends HTMLBuilder {
109
109
  }
110
110
 
111
111
  __getID(name) {
112
- const field = this.__getFieldName(name);
113
- return `f_${field}`;
112
+ return `f_${name.replaceAll(".", "_")}`;
114
113
  }
115
114
 
116
115
  __getDefaultLabel(name) {
@@ -6,7 +6,7 @@ import Factory from "../../support/factory";
6
6
  function buildCtx(redirect) {
7
7
  return {
8
8
  client: {
9
- redirects: new Redirects({}, "token"),
9
+ redirects: new Redirects(() => ({}), "token"),
10
10
  },
11
11
  resourceParams: {
12
12
  redirect: {
@@ -4,7 +4,7 @@ import Redirects from "../../../cloud/Redirects";
4
4
  function buildCtx() {
5
5
  return {
6
6
  client: {
7
- redirects: new Redirects({}, "token"),
7
+ redirects: new Redirects(() => ({}), "token"),
8
8
  },
9
9
  params: { id: 1 },
10
10
  };
@@ -6,7 +6,7 @@ import Factory from "../../support/factory";
6
6
  function buildCtx() {
7
7
  return {
8
8
  client: {
9
- redirects: new Redirects({}, "token"),
9
+ redirects: new Redirects(() => ({}), "token"),
10
10
  },
11
11
  params: { id: 1 },
12
12
  locale: "en",