@raketa-cloud/admin 0.0.16 → 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/Events.js +9 -5
- package/src/cloud/Pages.js +9 -5
- 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 +2 -2
- package/src/handlers/event_revisions/EventRevisionsHandler.js +4 -4
- package/src/handlers/event_revisions/GeneralHandler.js +3 -2
- package/src/handlers/event_revisions/LocksHandler.js +2 -2
- package/src/handlers/event_revisions/MetaHandler.js +2 -2
- package/src/handlers/event_revisions/PublishesHandler.js +2 -2
- package/src/handlers/event_revisions/RevertsHandler.js +2 -2
- package/src/handlers/event_revisions/TagHandler.js +2 -2
- package/src/handlers/event_revisions/UnlocksHandler.js +2 -2
- package/src/handlers/event_revisions/VisualHandler.js +2 -2
- package/src/handlers/events/ClonesHandler.js +5 -3
- package/src/handlers/events/DeletesHandler.js +5 -5
- package/src/handlers/events/EventsHandler.js +20 -16
- package/src/handlers/events/TranslationsHandler.js +31 -23
- package/src/handlers/events/URLsHandler.js +5 -5
- 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 +3 -3
- 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 -6
- package/src/tests/handlers/article_revisions/{PageRevisionsHandler.test → ArticleRevisionsHandler.test}/create.test.js +12 -3
- package/src/tests/handlers/article_revisions/{PageRevisionsHandler.test → ArticleRevisionsHandler.test}/destroy.test.js +8 -2
- package/src/tests/handlers/article_revisions/CodesHandler.test/update.test.js +12 -3
- package/src/tests/handlers/article_revisions/GeneralHandler.test/update.test.js +12 -3
- package/src/tests/handlers/article_revisions/MetaHandler.test/update.test.js +12 -3
- package/src/tests/handlers/article_revisions/PublishesHandler.test/create.test.js +8 -2
- package/src/tests/handlers/article_revisions/RevertsHandler.test/create.test.js +12 -3
- package/src/tests/handlers/article_revisions/TagHandler.test/update.test.js +12 -3
- package/src/tests/handlers/article_revisions/VisualHandler.test.test/update.test.js +12 -3
- 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/update.test.js +12 -3
- package/src/tests/handlers/event_revisions/{PageRevisionsHandler.test → EventRevisionsHandler.test}/create.test.js +12 -3
- package/src/tests/handlers/event_revisions/{PageRevisionsHandler.test → EventRevisionsHandler.test}/destroy.test.js +8 -2
- package/src/tests/handlers/event_revisions/GeneralHandler.test/update.test.js +12 -3
- package/src/tests/handlers/event_revisions/MetaHandler.test/update.test.js +12 -3
- package/src/tests/handlers/event_revisions/PublishesHandler.test/create.test.js +8 -2
- package/src/tests/handlers/event_revisions/RevertsHandler.test/create.test.js +12 -3
- package/src/tests/handlers/event_revisions/TagHandler.test/update.test.js +12 -3
- package/src/tests/handlers/event_revisions/VisualHandler.test.test/update.test.js +12 -3
- package/src/tests/handlers/events/{ConesHandler.test → ClonesHandler.test}/create.test.js +8 -2
- package/src/tests/handlers/events/DeletesHandler.test/create.test.js +12 -3
- package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +8 -2
- package/src/tests/handlers/events/EventsHandler.test/create.test.js +11 -5
- package/src/tests/handlers/events/EventsHandler.test/create_form.test.js +5 -2
- package/src/tests/handlers/events/EventsHandler.test/index.test.js +5 -2
- package/src/tests/handlers/events/EventsHandler.test/show.test.js +9 -3
- package/src/tests/handlers/events/URLsHandler.test/create.test.js +18 -6
- package/src/tests/handlers/events/URLsHandler.test/create_form.test.js +8 -2
- 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 +6 -8
- package/src/views/events/_form.ejs +19 -19
- package/src/views/events/show.ejs +9 -9
- package/src/views/events/translations/_form.ejs +3 -3
- package/src/views/events/translations/create_form.ejs +7 -8
- 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/src/routeArticles.js +0 -65
- package/src/routeEvents.js +0 -55
- package/src/routePages.js +0 -55
package/package.json
CHANGED
package/src/Adapter.js
CHANGED
|
@@ -93,19 +93,19 @@ export default class Adapter {
|
|
|
93
93
|
this.router = router;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
routeCollection(_resource, _mapping) {
|
|
96
|
+
routeCollection(_resource, _mapping, _handlerOpts) {
|
|
97
97
|
throw new Error("Implement in an adapter");
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
routeNestedCollection(_resource, _mapping) {
|
|
100
|
+
routeNestedCollection(_resource, _mapping, _handlerOpts) {
|
|
101
101
|
throw new Error("Implement in an adapter");
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
routeMember(_resource, _mapping) {
|
|
104
|
+
routeMember(_resource, _mapping, _handlerOpts) {
|
|
105
105
|
throw new Error("Implement in an adapter");
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
routeNestedMember(_resource, _mapping) {
|
|
108
|
+
routeNestedMember(_resource, _mapping, _handlerOpts) {
|
|
109
109
|
throw new Error("Implement in an adapter");
|
|
110
110
|
}
|
|
111
111
|
|
package/src/HonoAdapter.js
CHANGED
|
@@ -72,16 +72,10 @@ export default class HonoAdapter extends Adapter {
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
async createAction(
|
|
76
|
-
verb,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
views,
|
|
80
|
-
action,
|
|
81
|
-
handler,
|
|
82
|
-
before_filter,
|
|
83
|
-
after_filter,
|
|
84
|
-
]) {
|
|
75
|
+
async createAction(
|
|
76
|
+
[verb, path, resource, views, action, handler, before_filter, after_filter],
|
|
77
|
+
handlerOpts
|
|
78
|
+
) {
|
|
85
79
|
const method = this.getMethod(verb);
|
|
86
80
|
|
|
87
81
|
Object.keys(this.globalConfig.i18n.locales).forEach((currentLocale) => {
|
|
@@ -153,7 +147,7 @@ export default class HonoAdapter extends Adapter {
|
|
|
153
147
|
redirect,
|
|
154
148
|
json,
|
|
155
149
|
assigns: actionAssigns = {},
|
|
156
|
-
} = (await handler(ctx)) || {};
|
|
150
|
+
} = (await handler(ctx, handlerOpts)) || {};
|
|
157
151
|
assigns.actionAssigns = actionAssigns;
|
|
158
152
|
|
|
159
153
|
this.applyHeaders(headers, routerCtx);
|
|
@@ -200,20 +194,20 @@ export default class HonoAdapter extends Adapter {
|
|
|
200
194
|
});
|
|
201
195
|
}
|
|
202
196
|
|
|
203
|
-
routeCollection(mapping) {
|
|
204
|
-
mapping.forEach((handlerMap) => this.createAction(handlerMap));
|
|
197
|
+
routeCollection(mapping, handlerOpts) {
|
|
198
|
+
mapping.forEach((handlerMap) => this.createAction(handlerMap, handlerOpts));
|
|
205
199
|
}
|
|
206
200
|
|
|
207
|
-
routeNestedCollection(mapping) {
|
|
208
|
-
mapping.forEach((handlerMap) => this.createAction(handlerMap));
|
|
201
|
+
routeNestedCollection(mapping, handlerOpts) {
|
|
202
|
+
mapping.forEach((handlerMap) => this.createAction(handlerMap, handlerOpts));
|
|
209
203
|
}
|
|
210
204
|
|
|
211
|
-
routeMember(mapping) {
|
|
212
|
-
mapping.forEach((handlerMap) => this.createAction(handlerMap));
|
|
205
|
+
routeMember(mapping, handlerOpts) {
|
|
206
|
+
mapping.forEach((handlerMap) => this.createAction(handlerMap, handlerOpts));
|
|
213
207
|
}
|
|
214
208
|
|
|
215
|
-
routeNestedMember(mapping) {
|
|
216
|
-
mapping.forEach((handlerMap) => this.createAction(handlerMap));
|
|
209
|
+
routeNestedMember(mapping, handlerOpts) {
|
|
210
|
+
mapping.forEach((handlerMap) => this.createAction(handlerMap, handlerOpts));
|
|
217
211
|
}
|
|
218
212
|
|
|
219
213
|
getMethod(verb) {
|
package/src/cloud/Articles.js
CHANGED
|
@@ -41,11 +41,15 @@ export default class Articles extends RaketaClient {
|
|
|
41
41
|
return item;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
async list(query, locale) {
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
async list(query, locale, articleTypeSlug) {
|
|
45
|
+
const vars = this.buildListInput(query, locale);
|
|
46
|
+
|
|
47
|
+
const { articles: items } = await this.query(ArticlesDocument, {
|
|
48
|
+
input: {
|
|
49
|
+
...vars.input,
|
|
50
|
+
filters: { ...vars.input.filters, articleTypeSlug },
|
|
51
|
+
},
|
|
52
|
+
});
|
|
49
53
|
|
|
50
54
|
return items;
|
|
51
55
|
}
|
package/src/cloud/Events.js
CHANGED
|
@@ -43,11 +43,15 @@ export default class Events extends RaketaClient {
|
|
|
43
43
|
return item;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
async list(query, locale) {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
async list(query, locale, eventTypeSlug) {
|
|
47
|
+
const vars = this.buildListInput(query, locale);
|
|
48
|
+
|
|
49
|
+
const { events: items } = await this.query(EventsDocument, {
|
|
50
|
+
input: {
|
|
51
|
+
...vars.input,
|
|
52
|
+
filters: { ...vars.input.filters, eventTypeSlug },
|
|
53
|
+
},
|
|
54
|
+
});
|
|
51
55
|
|
|
52
56
|
return items;
|
|
53
57
|
}
|
package/src/cloud/Pages.js
CHANGED
|
@@ -39,11 +39,15 @@ export default class Pages extends RaketaClient {
|
|
|
39
39
|
return item;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
async list(query, locale) {
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
async list(query, locale, pageTypeSlug) {
|
|
43
|
+
const vars = this.buildListInput(query, locale);
|
|
44
|
+
|
|
45
|
+
const { pages: items } = await this.query(PagesDocument, {
|
|
46
|
+
input: {
|
|
47
|
+
...vars.input,
|
|
48
|
+
filters: { ...vars.input.filters, pageTypeSlug },
|
|
49
|
+
},
|
|
50
|
+
});
|
|
47
51
|
|
|
48
52
|
return items;
|
|
49
53
|
}
|
|
@@ -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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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(
|
|
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
|
|
22
|
+
const resource = await ctx.client.articles.find(id, ctx.locale);
|
|
19
23
|
|
|
20
|
-
if (!
|
|
21
|
-
throw new Error(`Missing
|
|
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
|
-
|
|
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 =
|
|
38
|
+
const translation = resource.translations[locale];
|
|
35
39
|
|
|
36
40
|
if (translation) {
|
|
37
41
|
return {
|
|
38
42
|
locale,
|
|
39
|
-
path: `/${locale}
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
104
|
+
resource: params,
|
|
101
105
|
tags: tags.list,
|
|
102
|
-
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}
|
|
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(
|
|
7
|
+
throw new Error(
|
|
8
|
+
`Error cloning ${opts.articleType}: ${JSON.stringify(errors)}`
|
|
9
|
+
);
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
return {
|
|
11
|
-
redirect: `/${ctx.locale}
|
|
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
|
|
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
|
|
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}
|
|
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
|
|
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:
|
|
16
|
-
slug:
|
|
17
|
-
visibility:
|
|
18
|
-
publish_at: toDateTimeInput(
|
|
19
|
-
layout:
|
|
20
|
-
meta_title:
|
|
21
|
-
meta_description:
|
|
22
|
-
meta_image:
|
|
23
|
-
username:
|
|
24
|
-
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:
|
|
26
|
+
// categories: blueprint_resource.categories, # TODO: this will be added later?
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
return {
|
|
30
30
|
assigns: {
|
|
31
|
-
|
|
31
|
+
resource: blueprint_resource,
|
|
32
32
|
translation: translation,
|
|
33
33
|
targetLocale: target_locale,
|
|
34
34
|
tags: target_locate_tags.list,
|
|
35
|
-
blueprint_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
|
|
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
|
-
...
|
|
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:
|
|
76
|
+
widgets: blueprint_resource.widgets,
|
|
77
77
|
tags: translation.tags || [],
|
|
78
|
-
categories:
|
|
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
|
-
|
|
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}
|
|
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
|
|
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
|
|
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:
|
|
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}
|
|
64
|
+
redirect: `/${ctx.locale}/${opts.articleTypePlural}/${parent_id}`,
|
|
65
65
|
};
|
|
66
66
|
};
|
|
67
67
|
|