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