@raketa-cloud/admin 0.0.15 → 0.0.17

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 (170) hide show
  1. package/package.json +1 -1
  2. package/src/Adapter.js +4 -4
  3. package/src/HonoAdapter.js +13 -19
  4. package/src/cloud/Articles.js +9 -5
  5. package/src/cloud/EventChanges.js +15 -0
  6. package/src/cloud/EventRevisions.js +149 -0
  7. package/src/cloud/Events.js +139 -0
  8. package/src/cloud/Pages.js +9 -5
  9. package/src/cloud/documents/common.js +10 -0
  10. package/src/cloud/documents/eventsDocuments.js +254 -0
  11. package/src/handlers/article_revisions/ArticleRevisionsHandler.js +4 -4
  12. package/src/handlers/article_revisions/CodeHandler.js +2 -2
  13. package/src/handlers/article_revisions/GeneralHandler.js +2 -2
  14. package/src/handlers/article_revisions/LocksHandler.js +2 -2
  15. package/src/handlers/article_revisions/MetaHandler.js +2 -2
  16. package/src/handlers/article_revisions/PublishesHandler.js +2 -2
  17. package/src/handlers/article_revisions/RevertsHandler.js +2 -2
  18. package/src/handlers/article_revisions/TagHandler.js +2 -2
  19. package/src/handlers/article_revisions/UnlocksHandler.js +2 -2
  20. package/src/handlers/article_revisions/VisualHandler.js +2 -2
  21. package/src/handlers/articles/ArticlesHandler.js +20 -16
  22. package/src/handlers/articles/ClonesHandler.js +5 -3
  23. package/src/handlers/articles/DeletesHandler.js +5 -5
  24. package/src/handlers/articles/TranslationsHandler.js +25 -22
  25. package/src/handlers/articles/URLsHandler.js +6 -6
  26. package/src/handlers/event_revisions/CodeHandler.js +86 -0
  27. package/src/handlers/event_revisions/EventRevisionsHandler.js +47 -0
  28. package/src/handlers/event_revisions/GeneralHandler.js +94 -0
  29. package/src/handlers/event_revisions/LocksHandler.js +51 -0
  30. package/src/handlers/event_revisions/MetaHandler.js +86 -0
  31. package/src/handlers/event_revisions/PublishesHandler.js +84 -0
  32. package/src/handlers/event_revisions/RevertsHandler.js +26 -0
  33. package/src/handlers/event_revisions/TagHandler.js +85 -0
  34. package/src/handlers/event_revisions/UnlocksHandler.js +22 -0
  35. package/src/handlers/event_revisions/VisualHandler.js +80 -0
  36. package/src/handlers/event_revisions/WidgetHandler.js +41 -0
  37. package/src/handlers/events/ClonesHandler.js +19 -0
  38. package/src/handlers/events/DeletesHandler.js +68 -0
  39. package/src/handlers/events/EventsHandler.js +125 -0
  40. package/src/handlers/events/TranslationsHandler.js +107 -0
  41. package/src/handlers/events/URLsHandler.js +71 -0
  42. package/src/handlers/page_revisions/CodeHandler.js +2 -2
  43. package/src/handlers/page_revisions/GeneralHandler.js +2 -2
  44. package/src/handlers/page_revisions/LocksHandler.js +2 -2
  45. package/src/handlers/page_revisions/MetaHandler.js +2 -2
  46. package/src/handlers/page_revisions/PageRevisionsHandler.js +4 -4
  47. package/src/handlers/page_revisions/PublishesHandler.js +2 -2
  48. package/src/handlers/page_revisions/RevertsHandler.js +2 -2
  49. package/src/handlers/page_revisions/TagHandler.js +2 -2
  50. package/src/handlers/page_revisions/UnlocksHandler.js +2 -2
  51. package/src/handlers/page_revisions/VisualHandler.js +2 -2
  52. package/src/handlers/pages/ClonesHandler.js +5 -3
  53. package/src/handlers/pages/DeletesHandler.js +5 -5
  54. package/src/handlers/pages/PagesHandler.js +21 -16
  55. package/src/handlers/pages/TranslationsHandler.js +24 -22
  56. package/src/handlers/pages/URLsHandler.js +6 -6
  57. package/src/index.js +24 -2
  58. package/src/routeArticlesModule.js +142 -0
  59. package/src/routeCollection.js +2 -2
  60. package/src/routeEventsModule.js +142 -0
  61. package/src/routeMember.js +2 -2
  62. package/src/routeNestedCollection.js +8 -2
  63. package/src/routeNestedMember.js +8 -2
  64. package/src/routePagesModule.js +155 -0
  65. package/src/routeStandard.js +6 -4
  66. package/src/setupCloud.js +12 -0
  67. package/src/tests/handlers/article_revisions/ArticleRevisionsHandler.test/create.test.js +84 -0
  68. package/src/tests/handlers/article_revisions/ArticleRevisionsHandler.test/destroy.test.js +59 -0
  69. package/src/tests/handlers/article_revisions/CodesHandler.test/edit_form.test.js +56 -0
  70. package/src/tests/handlers/article_revisions/CodesHandler.test/update.test.js +148 -0
  71. package/src/tests/handlers/article_revisions/GeneralHandler.test/edit_form.test.js +65 -0
  72. package/src/tests/handlers/article_revisions/GeneralHandler.test/update.test.js +159 -0
  73. package/src/tests/handlers/article_revisions/MetaHandler.test/edit_form.test.js +57 -0
  74. package/src/tests/handlers/article_revisions/MetaHandler.test/update.test.js +152 -0
  75. package/src/tests/handlers/article_revisions/PublishesHandler.test/create.test.js +142 -0
  76. package/src/tests/handlers/article_revisions/PublishesHandler.test/create_form.test.js +47 -0
  77. package/src/tests/handlers/article_revisions/RevertsHandler.test/create.test.js +89 -0
  78. package/src/tests/handlers/article_revisions/TagHandler.test/edit_form.test.js +69 -0
  79. package/src/tests/handlers/article_revisions/TagHandler.test/update.test.js +152 -0
  80. package/src/tests/handlers/article_revisions/VisualHandler.test.test/edit_form.test.js +55 -0
  81. package/src/tests/handlers/article_revisions/VisualHandler.test.test/update.test.js +140 -0
  82. package/src/tests/handlers/article_revisions/WidgetHandler.test/show.test.js +46 -0
  83. package/src/tests/handlers/article_revisions/WidgetHandler.test/update.test.js +103 -0
  84. package/src/tests/handlers/articles/ArticlesHandler.test/create.test.js +11 -5
  85. package/src/tests/handlers/articles/ArticlesHandler.test/create_form.test.js +5 -2
  86. package/src/tests/handlers/articles/ArticlesHandler.test/index.test.js +9 -2
  87. package/src/tests/handlers/articles/ArticlesHandler.test/show.test.js +9 -3
  88. package/src/tests/handlers/articles/{ConesHandler.test → ClonesHandler.test}/create.test.js +8 -2
  89. package/src/tests/handlers/articles/DeletesHandler.test/create.test.js +12 -3
  90. package/src/tests/handlers/articles/DeletesHandler.test/create_form.test.js +8 -2
  91. package/src/tests/handlers/articles/URLsHandler.test/create.test.js +18 -6
  92. package/src/tests/handlers/articles/URLsHandler.test/create_form.test.js +8 -2
  93. package/src/tests/handlers/event_revisions/CodesHandler.test/edit_form.test.js +56 -0
  94. package/src/tests/handlers/event_revisions/CodesHandler.test/update.test.js +152 -0
  95. package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/create.test.js +84 -0
  96. package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/destroy.test.js +59 -0
  97. package/src/tests/handlers/event_revisions/GeneralHandler.test/edit_form.test.js +69 -0
  98. package/src/tests/handlers/event_revisions/GeneralHandler.test/update.test.js +167 -0
  99. package/src/tests/handlers/event_revisions/MetaHandler.test/edit_form.test.js +57 -0
  100. package/src/tests/handlers/event_revisions/MetaHandler.test/update.test.js +156 -0
  101. package/src/tests/handlers/event_revisions/PublishesHandler.test/create.test.js +142 -0
  102. package/src/tests/handlers/event_revisions/PublishesHandler.test/create_form.test.js +47 -0
  103. package/src/tests/handlers/event_revisions/RevertsHandler.test/create.test.js +89 -0
  104. package/src/tests/handlers/event_revisions/TagHandler.test/edit_form.test.js +69 -0
  105. package/src/tests/handlers/event_revisions/TagHandler.test/update.test.js +156 -0
  106. package/src/tests/handlers/event_revisions/VisualHandler.test.test/edit_form.test.js +55 -0
  107. package/src/tests/handlers/event_revisions/VisualHandler.test.test/update.test.js +144 -0
  108. package/src/tests/handlers/event_revisions/WidgetHandler.test/show.test.js +46 -0
  109. package/src/tests/handlers/event_revisions/WidgetHandler.test/update.test.js +103 -0
  110. package/src/tests/handlers/events/ClonesHandler.test/create.test.js +60 -0
  111. package/src/tests/handlers/events/DeletesHandler.test/create.test.js +119 -0
  112. package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +60 -0
  113. package/src/tests/handlers/events/EventsHandler.test/create.test.js +158 -0
  114. package/src/tests/handlers/events/EventsHandler.test/create_form.test.js +44 -0
  115. package/src/tests/handlers/events/EventsHandler.test/index.test.js +52 -0
  116. package/src/tests/handlers/events/EventsHandler.test/show.test.js +111 -0
  117. package/src/tests/handlers/events/URLsHandler.test/create.test.js +167 -0
  118. package/src/tests/handlers/events/URLsHandler.test/create_form.test.js +57 -0
  119. package/src/tests/handlers/page_revisions/CodesHandler.test/update.test.js +12 -3
  120. package/src/tests/handlers/page_revisions/GeneralHandler.test/update.test.js +12 -3
  121. package/src/tests/handlers/page_revisions/MetaHandler.test/update.test.js +12 -3
  122. package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/create.test.js +12 -3
  123. package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/destroy.test.js +8 -2
  124. package/src/tests/handlers/page_revisions/PublishesHandler.test/create.test.js +8 -2
  125. package/src/tests/handlers/page_revisions/RevertsHandler.test/create.test.js +12 -3
  126. package/src/tests/handlers/page_revisions/TagHandler.test/update.test.js +8 -2
  127. package/src/tests/handlers/page_revisions/VisualHandler.test.test/update.test.js +12 -3
  128. package/src/tests/handlers/pages/ConesHandler.test/create.test.js +8 -2
  129. package/src/tests/handlers/pages/DeletesHandler.test/create.test.js +12 -3
  130. package/src/tests/handlers/pages/DeletesHandler.test/create_form.test.js +8 -2
  131. package/src/tests/handlers/pages/PagesHandler.test/create.test.js +11 -5
  132. package/src/tests/handlers/pages/PagesHandler.test/create_form.test.js +1 -1
  133. package/src/tests/handlers/pages/PagesHandler.test/index.test.js +5 -2
  134. package/src/tests/handlers/pages/PagesHandler.test/show.test.js +9 -3
  135. package/src/tests/handlers/pages/URLsHandler.test/create.test.js +16 -4
  136. package/src/tests/handlers/pages/URLsHandler.test/create_form.test.js +8 -2
  137. package/src/tests/routeCollection.test.js +118 -105
  138. package/src/tests/routeMember.test.js +60 -54
  139. package/src/tests/routeNestedCollection.test.js +132 -126
  140. package/src/tests/routeNestedMember.test.js +60 -54
  141. package/src/views/articles/_form.ejs +17 -17
  142. package/src/views/articles/show.ejs +9 -9
  143. package/src/views/articles/translations/_form.ejs +3 -3
  144. package/src/views/articles/translations/create_form.ejs +7 -9
  145. package/src/views/event_revisions/_nav.ejs +40 -0
  146. package/src/views/event_revisions/codes/edit_form.ejs +39 -0
  147. package/src/views/event_revisions/general/edit_form.ejs +72 -0
  148. package/src/views/event_revisions/locks/create_form.ejs +35 -0
  149. package/src/views/event_revisions/meta/edit_form.ejs +41 -0
  150. package/src/views/event_revisions/publishes/_form.ejs +57 -0
  151. package/src/views/event_revisions/publishes/create_form.ejs +10 -0
  152. package/src/views/event_revisions/tags/edit_form.ejs +64 -0
  153. package/src/views/event_revisions/visuals/edit_form.ejs +42 -0
  154. package/src/views/events/_form.ejs +88 -0
  155. package/src/views/events/create_form.ejs +9 -0
  156. package/src/views/events/deletes/create_form.ejs +55 -0
  157. package/src/views/events/edit_form.ejs +3 -0
  158. package/src/views/events/index.ejs +161 -0
  159. package/src/views/events/show.ejs +281 -0
  160. package/src/views/events/translations/_form.ejs +79 -0
  161. package/src/views/events/translations/create_form.ejs +10 -0
  162. package/src/views/events/urls/create_form.ejs +31 -0
  163. package/src/views/pages/_form.ejs +16 -16
  164. package/src/views/pages/create_form.ejs +1 -1
  165. package/src/views/pages/show.ejs +9 -9
  166. package/src/views/pages/translations/_form.ejs +3 -3
  167. package/src/views/pages/translations/create_form.ejs +7 -9
  168. package/test/factory.js +42 -3
  169. package/src/routeArticles.js +0 -65
  170. package/src/routePages.js +0 -55
@@ -1,4 +1,4 @@
1
- const create = async (ctx) => {
1
+ const create = async (ctx, opts) => {
2
2
  const { parent_id } = ctx.params;
3
3
 
4
4
  const { errors, articleErrors } = await ctx.client.articleRevisions.create(
@@ -17,11 +17,11 @@ const create = async (ctx) => {
17
17
  }
18
18
 
19
19
  return {
20
- redirect: `/${ctx.locale}/articles/${parent_id}`,
20
+ redirect: `/${ctx.locale}/${opts.articleTypePlural}/${parent_id}`,
21
21
  };
22
22
  };
23
23
 
24
- const destroy = async (ctx) => {
24
+ const destroy = async (ctx, opts) => {
25
25
  const { id } = ctx.params;
26
26
 
27
27
  const { errors, revision } = await ctx.client.articleRevisions.delete(
@@ -37,7 +37,7 @@ const destroy = async (ctx) => {
37
37
 
38
38
  return {
39
39
  headers: {
40
- "HX-Redirect": `/${ctx.locale}/articles/${revision.originalId}`,
40
+ "HX-Redirect": `/${ctx.locale}/${opts.articleTypePlural}/${revision.originalId}`,
41
41
  },
42
42
  json: {},
43
43
  };
@@ -28,7 +28,7 @@ const edit_form = async (ctx) => {
28
28
  };
29
29
  };
30
30
 
31
- const update = async (ctx) => {
31
+ const update = async (ctx, opts) => {
32
32
  const { parent_id } = ctx.params;
33
33
 
34
34
  const revision = await ctx.client.articleRevisions.find(
@@ -80,7 +80,7 @@ const update = async (ctx) => {
80
80
  }
81
81
 
82
82
  return {
83
- redirect: `/${ctx.locale}/article_revisions/${revision.id}/codes/edit`,
83
+ redirect: `/${ctx.locale}/${opts.articleType}_revisions/${revision.id}/codes/edit`,
84
84
  };
85
85
  };
86
86
 
@@ -32,7 +32,7 @@ const edit_form = async (ctx) => {
32
32
  };
33
33
  };
34
34
 
35
- const update = async (ctx) => {
35
+ const update = async (ctx, opts) => {
36
36
  const { parent_id } = ctx.params;
37
37
 
38
38
  const revision = await ctx.client.articleRevisions.find(
@@ -85,7 +85,7 @@ const update = async (ctx) => {
85
85
  }
86
86
 
87
87
  return {
88
- redirect: `/${ctx.locale}/article_revisions/${revision.id}/general/edit`,
88
+ redirect: `/${ctx.locale}/${opts.articleType}_revisions/${revision.id}/general/edit`,
89
89
  };
90
90
  };
91
91
 
@@ -20,7 +20,7 @@ const create_form = async (ctx) => {
20
20
  };
21
21
  };
22
22
 
23
- const create = async (ctx) => {
23
+ const create = async (ctx, opts) => {
24
24
  const { parent_id } = ctx.params;
25
25
  const { message } = ctx.resourceParams.lock_settings;
26
26
 
@@ -44,7 +44,7 @@ const create = async (ctx) => {
44
44
  }
45
45
 
46
46
  return {
47
- redirect: `/${ctx.locale}/articles/${revision.originalId}`,
47
+ redirect: `/${ctx.locale}/${opts.articleTypePlural}/${revision.originalId}`,
48
48
  };
49
49
  };
50
50
 
@@ -27,7 +27,7 @@ const edit_form = async (ctx) => {
27
27
  };
28
28
  };
29
29
 
30
- const update = async (ctx) => {
30
+ const update = async (ctx, opts) => {
31
31
  const { parent_id } = ctx.params;
32
32
 
33
33
  const revision = await ctx.client.articleRevisions.find(
@@ -80,7 +80,7 @@ const update = async (ctx) => {
80
80
  }
81
81
 
82
82
  return {
83
- redirect: `/${ctx.locale}/article_revisions/${revision.id}/meta/edit`,
83
+ redirect: `/${ctx.locale}/${opts.articleType}_revisions/${revision.id}/meta/edit`,
84
84
  };
85
85
  };
86
86
 
@@ -46,7 +46,7 @@ function publishArticleParams(
46
46
  return { visibility };
47
47
  }
48
48
 
49
- const create = async (ctx) => {
49
+ const create = async (ctx, opts) => {
50
50
  const { parent_id } = ctx.params;
51
51
  const publishing = ctx.resourceParams.publishing;
52
52
 
@@ -80,7 +80,7 @@ const create = async (ctx) => {
80
80
  }
81
81
 
82
82
  return {
83
- redirect: `/${ctx.locale}/articles/${revision.originalId}`,
83
+ redirect: `/${ctx.locale}/${opts.articleTypePlural}/${revision.originalId}`,
84
84
  };
85
85
  };
86
86
 
@@ -1,4 +1,4 @@
1
- const create = async (ctx) => {
1
+ const create = async (ctx, opts) => {
2
2
  const { parent_id } = ctx.params;
3
3
  const { version } = ctx.resourceParams;
4
4
 
@@ -19,7 +19,7 @@ const create = async (ctx) => {
19
19
  }
20
20
 
21
21
  return {
22
- redirect: `/${ctx.locale}/articles/${parent_id}`,
22
+ redirect: `/${ctx.locale}/${opts.articleTypePlural}/${parent_id}`,
23
23
  };
24
24
  };
25
25
 
@@ -28,7 +28,7 @@ const edit_form = async (ctx) => {
28
28
  };
29
29
  };
30
30
 
31
- const update = async (ctx) => {
31
+ const update = async (ctx, opts) => {
32
32
  const { parent_id } = ctx.params;
33
33
 
34
34
  const revision = await ctx.client.articleRevisions.find(
@@ -79,7 +79,7 @@ const update = async (ctx) => {
79
79
  }
80
80
 
81
81
  return {
82
- redirect: `/${ctx.locale}/article_revisions/${revision.id}/tags/edit`,
82
+ redirect: `/${ctx.locale}/${opts.articleType}_revisions/${revision.id}/tags/edit`,
83
83
  };
84
84
  };
85
85
 
@@ -1,4 +1,4 @@
1
- const create = async (ctx) => {
1
+ const create = async (ctx, opts) => {
2
2
  const { parent_id } = ctx.params;
3
3
 
4
4
  const { revision, errors, articleErrors } =
@@ -13,7 +13,7 @@ const create = async (ctx) => {
13
13
  }
14
14
 
15
15
  return {
16
- redirect: `/${ctx.locale}/articles/${revision.originalId}`,
16
+ redirect: `/${ctx.locale}/${opts.articleType}/${revision.originalId}`,
17
17
  };
18
18
  };
19
19
 
@@ -25,7 +25,7 @@ const edit_form = async (ctx) => {
25
25
  };
26
26
  };
27
27
 
28
- const update = async (ctx) => {
28
+ const update = async (ctx, opts) => {
29
29
  const { parent_id } = ctx.params;
30
30
 
31
31
  const revision = await ctx.client.articleRevisions.find(
@@ -74,7 +74,7 @@ const update = async (ctx) => {
74
74
  }
75
75
 
76
76
  return {
77
- redirect: `/${ctx.locale}/article_revisions/${revision.id}/visuals/edit`,
77
+ redirect: `/${ctx.locale}/${opts.articleType}_revisions/${revision.id}/visuals/edit`,
78
78
  };
79
79
  };
80
80
 
@@ -1,7 +1,11 @@
1
1
  import { toUTCISO8601String } from "../../utils";
2
2
 
3
- const index = async (ctx) => {
4
- const items = await ctx.client.articles.list(ctx.query, ctx.locale);
3
+ const index = async (ctx, opts) => {
4
+ const items = await ctx.client.articles.list(
5
+ ctx.query,
6
+ ctx.locale,
7
+ opts.articleType
8
+ );
5
9
  const tags = await ctx.client.tags.all(ctx.locale);
6
10
 
7
11
  return {
@@ -13,12 +17,12 @@ const index = async (ctx) => {
13
17
  };
14
18
  };
15
19
 
16
- const show = async (ctx) => {
20
+ const show = async (ctx, opts) => {
17
21
  const { id } = ctx.params;
18
- const article = await ctx.client.articles.find(id, ctx.locale);
22
+ const resource = await ctx.client.articles.find(id, ctx.locale);
19
23
 
20
- if (!article) {
21
- throw new Error(`Missing article #${id}`);
24
+ if (!resource) {
25
+ throw new Error(`Missing ${opts.articleType} #${id}`);
22
26
  }
23
27
 
24
28
  const revisions = await ctx.client.articleRevisions.all(id, ctx.locale);
@@ -26,17 +30,17 @@ const show = async (ctx) => {
26
30
 
27
31
  return {
28
32
  assigns: {
29
- article,
33
+ resource,
30
34
  revisions: revisions.list,
31
35
  changes: changes.list,
32
36
  _translations: Object.keys(ctx.locales)
33
37
  .map((locale) => {
34
- const translation = article.translations[locale];
38
+ const translation = resource.translations[locale];
35
39
 
36
40
  if (translation) {
37
41
  return {
38
42
  locale,
39
- path: `/${locale}/articles/${translation.id}`,
43
+ path: `/${locale}/${opts.articleTypePlural}/${translation.id}`,
40
44
  };
41
45
  }
42
46
 
@@ -52,7 +56,7 @@ const create_form = async (ctx) => {
52
56
 
53
57
  return {
54
58
  assigns: {
55
- article: { ...ctx.client.articles.defaults(), meta_image: {} },
59
+ resource: { ...ctx.client.articles.defaults(), meta_image: {} },
56
60
  tags: tags.list,
57
61
  errors: {},
58
62
  visibilityOptions: ctx.client.articles.visibilityOptions(),
@@ -61,8 +65,8 @@ const create_form = async (ctx) => {
61
65
  };
62
66
  };
63
67
 
64
- const create = async (ctx) => {
65
- const params = { ...ctx.resourceParams.article };
68
+ const create = async (ctx, opts) => {
69
+ const params = { ...ctx.resourceParams.resource };
66
70
 
67
71
  params.meta_image = JSON.parse(params.meta_image || "{}");
68
72
 
@@ -89,7 +93,7 @@ const create = async (ctx) => {
89
93
  categories: params.categories || [],
90
94
  },
91
95
  ctx.locale,
92
- "article"
96
+ opts.articleType
93
97
  );
94
98
 
95
99
  if (errors) {
@@ -97,9 +101,9 @@ const create = async (ctx) => {
97
101
 
98
102
  return {
99
103
  assigns: {
100
- article: params,
104
+ resource: params,
101
105
  tags: tags.list,
102
- errors: { article: ctx.client.articles.formatErrors(errors) },
106
+ errors: { resource: ctx.client.articles.formatErrors(errors) },
103
107
  visibilityOptions: ctx.client.articles.visibilityOptions(),
104
108
  _translations: [],
105
109
  },
@@ -107,7 +111,7 @@ const create = async (ctx) => {
107
111
  }
108
112
 
109
113
  return {
110
- redirect: `/${ctx.locale}/articles`,
114
+ redirect: `/${ctx.locale}/${opts.articleTypePlural}`,
111
115
  };
112
116
  };
113
117
 
@@ -1,14 +1,16 @@
1
- const create = async (ctx) => {
1
+ const create = async (ctx, opts) => {
2
2
  const { parent_id } = ctx.params;
3
3
 
4
4
  const { errors } = await ctx.client.articles.clone(parent_id, ctx.locale);
5
5
 
6
6
  if (errors) {
7
- throw new Error(`Error cloning article: ${JSON.stringify(errors)}`);
7
+ throw new Error(
8
+ `Error cloning ${opts.articleType}: ${JSON.stringify(errors)}`
9
+ );
8
10
  }
9
11
 
10
12
  return {
11
- redirect: `/${ctx.locale}/articles`,
13
+ redirect: `/${ctx.locale}/${opts.articleTypePlural}`,
12
14
  };
13
15
  };
14
16
 
@@ -1,9 +1,9 @@
1
- const create_form = async (ctx) => {
1
+ const create_form = async (ctx, opts) => {
2
2
  const { parent_id } = ctx.params;
3
3
  const article = await ctx.client.articles.find(parent_id, ctx.locale);
4
4
 
5
5
  if (!article) {
6
- throw new Error(`Missing article #${parent_id}`);
6
+ throw new Error(`Missing ${opts.articleType} #${parent_id}`);
7
7
  }
8
8
 
9
9
  return {
@@ -18,13 +18,13 @@ const create_form = async (ctx) => {
18
18
  };
19
19
  };
20
20
 
21
- const create = async (ctx) => {
21
+ const create = async (ctx, opts) => {
22
22
  const { parent_id } = ctx.params;
23
23
  const params = ctx.resourceParams.deleteAction;
24
24
  const article = await ctx.client.articles.find(parent_id, ctx.locale);
25
25
 
26
26
  if (!article) {
27
- throw new Error(`Missing article #${parent_id}`);
27
+ throw new Error(`Missing ${opts.articleType} #${parent_id}`);
28
28
  }
29
29
 
30
30
  let redirect = null;
@@ -58,7 +58,7 @@ const create = async (ctx) => {
58
58
  }
59
59
 
60
60
  return {
61
- redirect: `/${ctx.locale}/articles`,
61
+ redirect: `/${ctx.locale}/${opts.articleTypePlural}`,
62
62
  };
63
63
  };
64
64
 
@@ -6,33 +6,33 @@ const create_form = async (ctx) => {
6
6
  const target_locate_tags = await ctx.client.tags.all(target_locale);
7
7
 
8
8
  const { parent_id } = ctx.params;
9
- const blueprint_article = await ctx.client.articles.find(
9
+ const blueprint_resource = await ctx.client.articles.find(
10
10
  parent_id,
11
11
  ctx.locale
12
12
  );
13
13
 
14
14
  const translation = {
15
- title: blueprint_article.title,
16
- slug: blueprint_article.slug,
17
- visibility: blueprint_article.visibility,
18
- publish_at: toDateTimeInput(blueprint_article.publishAt),
19
- layout: blueprint_article.settings.layout,
20
- meta_title: blueprint_article.settings.meta.title,
21
- meta_description: blueprint_article.settings.meta.description,
22
- meta_image: blueprint_article.settings.meta?.image || {},
23
- username: blueprint_article.settings.credentials?.user,
24
- password: blueprint_article.settings.credentials?.password,
15
+ title: blueprint_resource.title,
16
+ slug: blueprint_resource.slug,
17
+ visibility: blueprint_resource.visibility,
18
+ publish_at: toDateTimeInput(blueprint_resource.publishAt),
19
+ layout: blueprint_resource.settings.layout,
20
+ meta_title: blueprint_resource.settings.meta.title,
21
+ meta_description: blueprint_resource.settings.meta.description,
22
+ meta_image: blueprint_resource.settings.meta?.image || {},
23
+ username: blueprint_resource.settings.credentials?.user,
24
+ password: blueprint_resource.settings.credentials?.password,
25
25
  tags: [],
26
- // categories: blueprint_article.categories, # TODO: this will be added later?
26
+ // categories: blueprint_resource.categories, # TODO: this will be added later?
27
27
  };
28
28
 
29
29
  return {
30
30
  assigns: {
31
- article: blueprint_article,
31
+ resource: blueprint_resource,
32
32
  translation: translation,
33
33
  targetLocale: target_locale,
34
34
  tags: target_locate_tags.list,
35
- blueprint_tags: blueprint_article.tags,
35
+ blueprint_tags: blueprint_resource.tags,
36
36
  errors: {},
37
37
  visibilityOptions: ctx.client.articles.visibilityOptions(),
38
38
  _translations: [],
@@ -40,15 +40,15 @@ const create_form = async (ctx) => {
40
40
  };
41
41
  };
42
42
 
43
- const create = async (ctx) => {
43
+ const create = async (ctx, opts) => {
44
44
  const { parent_id } = ctx.params;
45
- const blueprint_article = await ctx.client.articles.find(
45
+ const blueprint_resource = await ctx.client.articles.find(
46
46
  parent_id,
47
47
  ctx.locale
48
48
  );
49
49
 
50
50
  const { target_locale } = ctx.resourceParams;
51
- const translation = { ...ctx.translation };
51
+ const translation = { ...ctx.resourceParams.translation };
52
52
 
53
53
  translation.meta_image = JSON.parse(translation.meta_image || "{}");
54
54
 
@@ -61,7 +61,7 @@ const create = async (ctx) => {
61
61
  visibility: translation.visibility,
62
62
  publishAt: toUTCISO8601String(translation.publish_at),
63
63
  settings: {
64
- ...blueprint_article.settings,
64
+ ...blueprint_resource.settings,
65
65
  layout: translation.layout,
66
66
  meta: {
67
67
  title: translation.meta_title,
@@ -73,16 +73,18 @@ const create = async (ctx) => {
73
73
  password: translation.password || "",
74
74
  },
75
75
  },
76
- widgets: blueprint_article.widgets,
76
+ widgets: blueprint_resource.widgets,
77
77
  tags: translation.tags || [],
78
- categories: blueprint_article.categories.map((category) => category.id),
78
+ categories: blueprint_resource.categories.map((category) => category.id),
79
79
  }
80
80
  );
81
+
81
82
  if (errors) {
82
83
  const tags = await ctx.client.tags.all(target_locale);
84
+
83
85
  return {
84
86
  assigns: {
85
- article: blueprint_article,
87
+ resource: blueprint_resource,
86
88
  translation: translation,
87
89
  targetLocale: translation.target_locate,
88
90
  tags: tags.list,
@@ -92,8 +94,9 @@ const create = async (ctx) => {
92
94
  },
93
95
  };
94
96
  }
97
+
95
98
  return {
96
- redirect: `/${ctx.locale}/articles/${parent_id}`,
99
+ redirect: `/${ctx.locale}/${opts.articleTypePlural}/${parent_id}`,
97
100
  };
98
101
  };
99
102
 
@@ -1,9 +1,9 @@
1
- const create_form = async (ctx) => {
1
+ const create_form = async (ctx, opts) => {
2
2
  const { parent_id } = ctx.params;
3
3
  const article = await ctx.client.articles.find(parent_id, ctx.locale);
4
4
 
5
5
  if (!article) {
6
- throw new Error(`Cannot find article with id ${parent_id}`);
6
+ throw new Error(`Cannot find ${opts.articleType} with id ${parent_id}`);
7
7
  }
8
8
 
9
9
  return {
@@ -19,14 +19,14 @@ const create_form = async (ctx) => {
19
19
  };
20
20
  };
21
21
 
22
- const create = async (ctx) => {
22
+ const create = async (ctx, opts) => {
23
23
  const { parent_id } = ctx.params;
24
24
  const change = ctx.resourceParams.change;
25
25
 
26
26
  const article = await ctx.client.articles.find(parent_id, ctx.locale);
27
27
 
28
28
  if (!article) {
29
- throw new Error(`Cannot find article with id ${parent_id}`);
29
+ throw new Error(`Cannot find ${opts.articleType} with id ${parent_id}`);
30
30
  }
31
31
 
32
32
  let redirectParams = null;
@@ -37,7 +37,7 @@ const create = async (ctx) => {
37
37
  url: `/${article.slug}`,
38
38
  destination: change.slug,
39
39
  httpResponseCode: 301,
40
- note: "Created with changed URL for a article",
40
+ note: `Created with changed URL for a resource of type ${opts.articleType}`,
41
41
  };
42
42
  }
43
43
 
@@ -61,7 +61,7 @@ const create = async (ctx) => {
61
61
  }
62
62
 
63
63
  return {
64
- redirect: `/${ctx.locale}/articles/${parent_id}`,
64
+ redirect: `/${ctx.locale}/${opts.articleTypePlural}/${parent_id}`,
65
65
  };
66
66
  };
67
67
 
@@ -0,0 +1,86 @@
1
+ const edit_form = async (ctx) => {
2
+ const { parent_id } = ctx.params;
3
+
4
+ const revision = await ctx.client.eventRevisions.find(parent_id, ctx.locale);
5
+
6
+ if (!revision) {
7
+ throw new Error(`Missing revision #${parent_id}`);
8
+ }
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
+ return {
20
+ assigns: {
21
+ code_settings,
22
+ errors: {},
23
+ _translations: [],
24
+ },
25
+ };
26
+ };
27
+
28
+ const update = async (ctx, opts) => {
29
+ const { parent_id } = ctx.params;
30
+
31
+ const revision = await ctx.client.eventRevisions.find(parent_id, ctx.locale);
32
+
33
+ if (!revision) {
34
+ throw new Error(`Missing revision #${parent_id}`);
35
+ }
36
+
37
+ const params = ctx.resourceParams.code_settings;
38
+
39
+ const { errors } = await ctx.client.eventRevisions.update(
40
+ revision.id,
41
+ ctx.locale,
42
+ {
43
+ slug: revision.slug,
44
+ title: revision.title,
45
+ visibility: revision.visibility,
46
+ publishAt: revision.publishAt,
47
+ startsAt: revision.startsAt,
48
+ endsAt: revision.endsAt,
49
+ widgets: JSON.stringify(revision.widgets),
50
+ tags: revision.tags.map((t) => t.id),
51
+ categories: revision.categories.map((c) => c.id),
52
+ settings: JSON.stringify({
53
+ ...revision.settings,
54
+ codes: {
55
+ scripts: JSON.parse(params.scripts),
56
+ structured_data: JSON.parse(params.structured_data),
57
+ },
58
+ }),
59
+ }
60
+ );
61
+
62
+ if (errors) {
63
+ return {
64
+ assigns: {
65
+ code_settings: {
66
+ ...params,
67
+ id: revision.id,
68
+ originalId: revision.originalId,
69
+ },
70
+ errors: {
71
+ code_settings: ctx.client.eventRevisions.formatErrors(errors),
72
+ },
73
+ _translations: [],
74
+ },
75
+ };
76
+ }
77
+
78
+ return {
79
+ redirect: `/${ctx.locale}/${opts.eventType}_revisions/${revision.id}/codes/edit`,
80
+ };
81
+ };
82
+
83
+ export default {
84
+ edit_form,
85
+ update,
86
+ };
@@ -0,0 +1,47 @@
1
+ const create = async (ctx, opts) => {
2
+ const { parent_id } = ctx.params;
3
+
4
+ const { errors, eventErrors } = await ctx.client.eventRevisions.create(
5
+ parent_id,
6
+ ctx.locale
7
+ );
8
+
9
+ if (errors) {
10
+ throw new Error(`Failed to start revision: ${JSON.stringify(errors)}`);
11
+ }
12
+
13
+ if (eventErrors) {
14
+ throw new Error(`Failed to start revision: ${JSON.stringify(eventErrors)}`);
15
+ }
16
+
17
+ return {
18
+ redirect: `/${ctx.locale}/${opts.eventTypePlural}/${parent_id}`,
19
+ };
20
+ };
21
+
22
+ const destroy = async (ctx, opts) => {
23
+ const { id } = ctx.params;
24
+
25
+ const { errors, revision } = await ctx.client.eventRevisions.delete(
26
+ id,
27
+ ctx.locale
28
+ );
29
+
30
+ if (errors) {
31
+ throw new Error(
32
+ `Failed to delete revision#${id}: ${JSON.stringify(errors)}`
33
+ );
34
+ }
35
+
36
+ return {
37
+ headers: {
38
+ "HX-Redirect": `/${ctx.locale}/${opts.eventTypePlural}/${revision.originalId}`,
39
+ },
40
+ json: {},
41
+ };
42
+ };
43
+
44
+ export default {
45
+ destroy,
46
+ create,
47
+ };