@raketa-cloud/admin 0.0.79 → 0.0.81
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/cloud/ArticleRevisions.js +30 -0
- package/src/cloud/EventRevisions.js +30 -0
- package/src/cloud/PageRevisions.js +30 -0
- package/src/cloud/documents/articlesDocuments.js +24 -0
- package/src/cloud/documents/common.js +13 -0
- package/src/cloud/documents/eventsDocuments.js +24 -0
- package/src/cloud/documents/pagesDocuments.js +24 -0
- package/src/handlers/article_revisions/CancelSchedulesHandler.js +26 -0
- package/src/handlers/article_revisions/PublishesHandler.js +39 -10
- package/src/handlers/article_revisions/UnlocksHandler.js +1 -1
- package/src/handlers/event_revisions/CancelSchedulesHandler.js +26 -0
- package/src/handlers/event_revisions/PublishesHandler.js +34 -7
- package/src/handlers/event_revisions/UnlocksHandler.js +3 -1
- package/src/handlers/page_revisions/CancelSchedulesHandler.js +26 -0
- package/src/handlers/page_revisions/PublishesHandler.js +34 -7
- package/src/handlers/page_revisions/UnlocksHandler.js +1 -1
- package/src/routeArticlesModule.js +12 -0
- package/src/routeEventsModule.js +12 -0
- package/src/routePagesModule.js +12 -0
- package/src/styles/application.css +1 -2
- package/src/tests/handlers/article_revisions/CancelScheduledHandler.test/create.test.js +90 -0
- package/src/tests/handlers/article_revisions/PublishesHandler.test/create.test.js +187 -2
- package/src/tests/handlers/article_revisions/UnlocksHandler.test/create.test.js +2 -2
- package/src/tests/handlers/event_revisions/CancelScheduledHandler.test/create.test.js +90 -0
- package/src/tests/handlers/event_revisions/PublishesHandler.test/create.test.js +187 -2
- package/src/tests/handlers/event_revisions/UnlocksHandler.test/create.test.js +2 -2
- package/src/tests/handlers/page_revisions/CancelScheduledHandler.test/create.test.js +86 -0
- package/src/tests/handlers/page_revisions/PublishesHandler.test/create.test.js +187 -2
- package/src/tests/handlers/page_revisions/UnlocksHandler.test/create.test.js +2 -2
- package/src/tests/support/factory.js +16 -0
- package/src/views/article_revisions/publishes/_form.ejs +4 -1
- package/src/views/articles/show.ejs +113 -4
- package/src/views/event_revisions/publishes/_form.ejs +4 -1
- package/src/views/events/show.ejs +113 -4
- package/src/views/layouts/application.ejs +15 -0
- package/src/views/page_revisions/publishes/_form.ejs +4 -1
- package/src/views/pages/show.ejs +113 -4
package/package.json
CHANGED
|
@@ -3,6 +3,8 @@ import {
|
|
|
3
3
|
DeleteArticleDocument,
|
|
4
4
|
LockArticleRevisionDocument,
|
|
5
5
|
MergeArticleRevisionDocument,
|
|
6
|
+
ScheduleArticleRevisionDocument,
|
|
7
|
+
CancelArticleRevisionScheduleDocument,
|
|
6
8
|
ArticleRevisionDocument,
|
|
7
9
|
ArticleRevisionsDocument,
|
|
8
10
|
StartArticleRevisionDocument,
|
|
@@ -77,6 +79,34 @@ export default class ArticleRevisions extends RaketaClient {
|
|
|
77
79
|
return { article, errors };
|
|
78
80
|
}
|
|
79
81
|
|
|
82
|
+
async schedule(id, locale, params, articleParams) {
|
|
83
|
+
const {
|
|
84
|
+
scheduleArticleRevision: { revision, errors, articleErrors },
|
|
85
|
+
} = await this.query(ScheduleArticleRevisionDocument, {
|
|
86
|
+
input: {
|
|
87
|
+
id,
|
|
88
|
+
locale,
|
|
89
|
+
...params,
|
|
90
|
+
article: { ...articleParams },
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
return { revision, errors, articleErrors };
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async cancelSchedule(id, locale) {
|
|
98
|
+
const {
|
|
99
|
+
cancelArticleRevisionSchedule: { revision, errors, articleErrors },
|
|
100
|
+
} = await this.query(CancelArticleRevisionScheduleDocument, {
|
|
101
|
+
input: {
|
|
102
|
+
revisionId: id,
|
|
103
|
+
locale: locale,
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
return { revision, errors, articleErrors };
|
|
108
|
+
}
|
|
109
|
+
|
|
80
110
|
async create(articleId, locale) {
|
|
81
111
|
const {
|
|
82
112
|
startArticleRevision: { revision, errors, articleErrors },
|
|
@@ -3,6 +3,8 @@ import {
|
|
|
3
3
|
DeleteEventDocument,
|
|
4
4
|
LockEventRevisionDocument,
|
|
5
5
|
MergeEventRevisionDocument,
|
|
6
|
+
ScheduleEventRevisionDocument,
|
|
7
|
+
CancelEventRevisionScheduleDocument,
|
|
6
8
|
EventRevisionDocument,
|
|
7
9
|
EventRevisionsDocument,
|
|
8
10
|
StartEventRevisionDocument,
|
|
@@ -84,6 +86,34 @@ export default class EventRevisions extends RaketaClient {
|
|
|
84
86
|
return { event, errors };
|
|
85
87
|
}
|
|
86
88
|
|
|
89
|
+
async schedule(id, locale, params, eventParams) {
|
|
90
|
+
const {
|
|
91
|
+
scheduleEventRevision: { revision, errors, eventErrors },
|
|
92
|
+
} = await this.query(ScheduleEventRevisionDocument, {
|
|
93
|
+
input: {
|
|
94
|
+
id,
|
|
95
|
+
locale,
|
|
96
|
+
...params,
|
|
97
|
+
event: { ...eventParams },
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
return { revision, errors, eventErrors };
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async cancelSchedule(id, locale) {
|
|
105
|
+
const {
|
|
106
|
+
cancelEventRevisionSchedule: { revision, errors, eventErrors },
|
|
107
|
+
} = await this.query(CancelEventRevisionScheduleDocument, {
|
|
108
|
+
input: {
|
|
109
|
+
revisionId: id,
|
|
110
|
+
locale: locale,
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
return { revision, errors, eventErrors };
|
|
115
|
+
}
|
|
116
|
+
|
|
87
117
|
async create(eventId, locale) {
|
|
88
118
|
const {
|
|
89
119
|
startEventRevision: { revision, errors, eventErrors },
|
|
@@ -3,6 +3,8 @@ import {
|
|
|
3
3
|
DeletePageDocument,
|
|
4
4
|
LockPageRevisionDocument,
|
|
5
5
|
MergePageRevisionDocument,
|
|
6
|
+
SchedulePageRevisionDocument,
|
|
7
|
+
CancelPageRevisionScheduleDocument,
|
|
6
8
|
PageRevisionDocument,
|
|
7
9
|
PageRevisionsDocument,
|
|
8
10
|
StartPageRevisionDocument,
|
|
@@ -64,6 +66,34 @@ export default class PageRevisions extends RaketaClient {
|
|
|
64
66
|
return { page, errors };
|
|
65
67
|
}
|
|
66
68
|
|
|
69
|
+
async schedule(id, locale, params, pageParams) {
|
|
70
|
+
const {
|
|
71
|
+
schedulePageRevision: { revision, errors, pageErrors },
|
|
72
|
+
} = await this.query(SchedulePageRevisionDocument, {
|
|
73
|
+
input: {
|
|
74
|
+
id,
|
|
75
|
+
locale,
|
|
76
|
+
...params,
|
|
77
|
+
page: { ...pageParams },
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
return { revision, errors, pageErrors };
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
async cancelSchedule(id, locale) {
|
|
85
|
+
const {
|
|
86
|
+
cancelPageRevisionSchedule: { revision, errors, pageErrors },
|
|
87
|
+
} = await this.query(CancelPageRevisionScheduleDocument, {
|
|
88
|
+
input: {
|
|
89
|
+
revisionId: id,
|
|
90
|
+
locale: locale,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
return { revision, errors, pageErrors };
|
|
95
|
+
}
|
|
96
|
+
|
|
67
97
|
async create(pageId, locale) {
|
|
68
98
|
const {
|
|
69
99
|
startPageRevision: { revision, errors, pageErrors },
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
revisionMetaFragment,
|
|
8
8
|
tagFragment,
|
|
9
9
|
summaryChangeFragment,
|
|
10
|
+
revisionScheduleFragment,
|
|
10
11
|
} from "./common";
|
|
11
12
|
|
|
12
13
|
function minimalArticleFragment() {
|
|
@@ -59,6 +60,7 @@ function articleRevisionFragment() {
|
|
|
59
60
|
tags ${tagFragment()}
|
|
60
61
|
articleType ${articleTypeFragment()}
|
|
61
62
|
meta ${revisionMetaFragment()}
|
|
63
|
+
schedule ${revisionScheduleFragment()}
|
|
62
64
|
categories ${categoryFragment()}
|
|
63
65
|
}
|
|
64
66
|
`;
|
|
@@ -202,6 +204,26 @@ const MergeArticleRevisionDocument = gql`
|
|
|
202
204
|
}
|
|
203
205
|
`;
|
|
204
206
|
|
|
207
|
+
const ScheduleArticleRevisionDocument = gql`
|
|
208
|
+
mutation($input: ScheduleArticleRevisionInput!) {
|
|
209
|
+
scheduleArticleRevision(input: $input) {
|
|
210
|
+
revision ${articleRevisionFragment()}
|
|
211
|
+
errors ${errorsFragment()}
|
|
212
|
+
articleErrors ${errorsFragment()}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
`;
|
|
216
|
+
|
|
217
|
+
const CancelArticleRevisionScheduleDocument = gql`
|
|
218
|
+
mutation($input: CancelArticleRevisionScheduleInput!) {
|
|
219
|
+
cancelArticleRevisionSchedule(input: $input) {
|
|
220
|
+
revision ${articleRevisionFragment()}
|
|
221
|
+
errors ${errorsFragment()}
|
|
222
|
+
articleErrors ${errorsFragment()}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
`;
|
|
226
|
+
|
|
205
227
|
const ChangeArticleSlugDocument = gql`
|
|
206
228
|
mutation ($input: ChangeArticleSlugInput!) {
|
|
207
229
|
changeArticleSlug(input: $input) {
|
|
@@ -257,6 +279,8 @@ export {
|
|
|
257
279
|
ArticleRevisionsDocument,
|
|
258
280
|
StartArticleRevisionDocument,
|
|
259
281
|
MergeArticleRevisionDocument,
|
|
282
|
+
ScheduleArticleRevisionDocument,
|
|
283
|
+
CancelArticleRevisionScheduleDocument,
|
|
260
284
|
ArticleChangesDocument,
|
|
261
285
|
ChangeArticleSlugDocument,
|
|
262
286
|
ReopenArticleChangeDocument,
|
|
@@ -78,6 +78,19 @@ export function revisionMetaFragment() {
|
|
|
78
78
|
`;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
export function revisionScheduleFragment() {
|
|
82
|
+
return gql`
|
|
83
|
+
{
|
|
84
|
+
id
|
|
85
|
+
mergeAt
|
|
86
|
+
title
|
|
87
|
+
description
|
|
88
|
+
operator
|
|
89
|
+
operatorMeta
|
|
90
|
+
}
|
|
91
|
+
`;
|
|
92
|
+
}
|
|
93
|
+
|
|
81
94
|
export function revisionFragment() {
|
|
82
95
|
return gql`
|
|
83
96
|
{
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
revisionMetaFragment,
|
|
8
8
|
tagFragment,
|
|
9
9
|
summaryChangeFragment,
|
|
10
|
+
revisionScheduleFragment,
|
|
10
11
|
} from "./common";
|
|
11
12
|
|
|
12
13
|
function minimalEventFragment() {
|
|
@@ -65,6 +66,7 @@ function eventRevisionFragment() {
|
|
|
65
66
|
tags ${tagFragment()}
|
|
66
67
|
eventType ${eventTypeFragment()}
|
|
67
68
|
meta ${revisionMetaFragment()}
|
|
69
|
+
schedule ${revisionScheduleFragment()}
|
|
68
70
|
categories ${categoryFragment()}
|
|
69
71
|
}
|
|
70
72
|
`;
|
|
@@ -210,6 +212,26 @@ const MergeEventRevisionDocument = gql`
|
|
|
210
212
|
}
|
|
211
213
|
`;
|
|
212
214
|
|
|
215
|
+
const ScheduleEventRevisionDocument = gql`
|
|
216
|
+
mutation($input: ScheduleEventRevisionInput!) {
|
|
217
|
+
scheduleEventRevision(input: $input) {
|
|
218
|
+
revision ${eventRevisionFragment()}
|
|
219
|
+
errors ${errorsFragment()}
|
|
220
|
+
eventErrors ${errorsFragment()}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
`;
|
|
224
|
+
|
|
225
|
+
const CancelEventRevisionScheduleDocument = gql`
|
|
226
|
+
mutation($input: CancelEventRevisionScheduleInput!) {
|
|
227
|
+
cancelEventRevisionSchedule(input: $input) {
|
|
228
|
+
revision ${eventRevisionFragment()}
|
|
229
|
+
errors ${errorsFragment()}
|
|
230
|
+
eventErrors ${errorsFragment()}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
`;
|
|
234
|
+
|
|
213
235
|
const ChangeEventSlugDocument = gql`
|
|
214
236
|
mutation ($input: ChangeEventSlugInput!) {
|
|
215
237
|
changeEventSlug(input: $input) {
|
|
@@ -265,6 +287,8 @@ export {
|
|
|
265
287
|
EventRevisionsDocument,
|
|
266
288
|
StartEventRevisionDocument,
|
|
267
289
|
MergeEventRevisionDocument,
|
|
290
|
+
ScheduleEventRevisionDocument,
|
|
291
|
+
CancelEventRevisionScheduleDocument,
|
|
268
292
|
EventChangesDocument,
|
|
269
293
|
ChangeEventSlugDocument,
|
|
270
294
|
ReopenEventChangeDocument,
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
revisionMetaFragment,
|
|
8
8
|
tagFragment,
|
|
9
9
|
summaryChangeFragment,
|
|
10
|
+
revisionScheduleFragment,
|
|
10
11
|
} from "./common";
|
|
11
12
|
|
|
12
13
|
function minimalPageFragment() {
|
|
@@ -56,6 +57,7 @@ function pageRevisionFragment() {
|
|
|
56
57
|
tags ${tagFragment()}
|
|
57
58
|
pageType ${pageTypeFragment()}
|
|
58
59
|
meta ${revisionMetaFragment()}
|
|
60
|
+
schedule ${revisionScheduleFragment()}
|
|
59
61
|
categories ${categoryFragment()}
|
|
60
62
|
}
|
|
61
63
|
`;
|
|
@@ -198,6 +200,26 @@ const MergePageRevisionDocument = gql`
|
|
|
198
200
|
}
|
|
199
201
|
`;
|
|
200
202
|
|
|
203
|
+
const SchedulePageRevisionDocument = gql`
|
|
204
|
+
mutation($input: SchedulePageRevisionInput!) {
|
|
205
|
+
schedulePageRevision(input: $input) {
|
|
206
|
+
revision ${pageRevisionFragment()}
|
|
207
|
+
errors ${errorsFragment()}
|
|
208
|
+
pageErrors ${errorsFragment()}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
`;
|
|
212
|
+
|
|
213
|
+
const CancelPageRevisionScheduleDocument = gql`
|
|
214
|
+
mutation($input: CancelPageRevisionScheduleInput!) {
|
|
215
|
+
cancelPageRevisionSchedule(input: $input) {
|
|
216
|
+
revision ${pageRevisionFragment()}
|
|
217
|
+
errors ${errorsFragment()}
|
|
218
|
+
pageErrors ${errorsFragment()}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
`;
|
|
222
|
+
|
|
201
223
|
const ChangePageSlugDocument = gql`
|
|
202
224
|
mutation ($input: ChangePageSlugInput!) {
|
|
203
225
|
changePageSlug(input: $input) {
|
|
@@ -253,6 +275,8 @@ export {
|
|
|
253
275
|
PageRevisionsDocument,
|
|
254
276
|
StartPageRevisionDocument,
|
|
255
277
|
MergePageRevisionDocument,
|
|
278
|
+
SchedulePageRevisionDocument,
|
|
279
|
+
CancelPageRevisionScheduleDocument,
|
|
256
280
|
PageChangesDocument,
|
|
257
281
|
ChangePageSlugDocument,
|
|
258
282
|
ReopenPageChangeDocument,
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const create = async (ctx) => {
|
|
2
|
+
const { parent_id } = ctx.params;
|
|
3
|
+
|
|
4
|
+
const { revision, errors, articleErrors } =
|
|
5
|
+
await ctx.client.articleRevisions.cancelSchedule(parent_id, ctx.locale);
|
|
6
|
+
|
|
7
|
+
if (errors) {
|
|
8
|
+
throw new Error(
|
|
9
|
+
`Failed to cancel schedule for revision: ${JSON.stringify(errors)}`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (articleErrors) {
|
|
14
|
+
throw new Error(
|
|
15
|
+
`Failed to cancel schedule for revision: ${JSON.stringify(articleErrors)}`
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
redirect: `/${ctx.locale}/${ctx.resourceConfig.articleTypePlural}/${revision.originalId}`,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default {
|
|
25
|
+
create,
|
|
26
|
+
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toUTCISO8601String } from "../../utils";
|
|
2
|
+
|
|
1
3
|
const create_form = async (ctx) => {
|
|
2
4
|
const { parent_id } = ctx.params;
|
|
3
5
|
|
|
@@ -46,15 +48,21 @@ function publishArticleParams(
|
|
|
46
48
|
return { visibility };
|
|
47
49
|
}
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
async function publishRevision(ctx, revision, publishing) {
|
|
52
|
+
if (publishing.mergeAt) {
|
|
53
|
+
return await ctx.client.articleRevisions.schedule(
|
|
54
|
+
revision.id,
|
|
55
|
+
ctx.locale,
|
|
56
|
+
{
|
|
57
|
+
title: publishing.title || "",
|
|
58
|
+
description: publishing.description || "",
|
|
59
|
+
mergeAt: toUTCISO8601String(publishing.mergeAt),
|
|
60
|
+
},
|
|
61
|
+
publishArticleParams(publishing, revision.settings)
|
|
62
|
+
);
|
|
63
|
+
}
|
|
52
64
|
|
|
53
|
-
|
|
54
|
-
parent_id,
|
|
55
|
-
ctx.locale
|
|
56
|
-
);
|
|
57
|
-
const { errors } = await ctx.client.articleRevisions.publish(
|
|
65
|
+
return await ctx.client.articleRevisions.publish(
|
|
58
66
|
revision.id,
|
|
59
67
|
ctx.locale,
|
|
60
68
|
{
|
|
@@ -63,8 +71,24 @@ const create = async (ctx) => {
|
|
|
63
71
|
},
|
|
64
72
|
publishArticleParams(publishing, revision.settings)
|
|
65
73
|
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const create = async (ctx) => {
|
|
77
|
+
const { parent_id } = ctx.params;
|
|
78
|
+
const publishing = ctx.resourceParams.publishing;
|
|
79
|
+
|
|
80
|
+
const revision = await ctx.client.articleRevisions.find(
|
|
81
|
+
parent_id,
|
|
82
|
+
ctx.locale
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
const { errors, articleErrors } = await publishRevision(
|
|
86
|
+
ctx,
|
|
87
|
+
revision,
|
|
88
|
+
publishing
|
|
89
|
+
);
|
|
66
90
|
|
|
67
|
-
if (errors) {
|
|
91
|
+
if (errors || articleErrors) {
|
|
68
92
|
return {
|
|
69
93
|
assigns: {
|
|
70
94
|
publishing: {
|
|
@@ -73,7 +97,12 @@ const create = async (ctx) => {
|
|
|
73
97
|
originalId: revision.originalId,
|
|
74
98
|
},
|
|
75
99
|
visibilityOptions: ctx.client.articles.visibilityOptions(),
|
|
76
|
-
errors:
|
|
100
|
+
errors: errors
|
|
101
|
+
? ctx.client.articleRevisions.formatErrors(errors)
|
|
102
|
+
: null,
|
|
103
|
+
articleErrors: articleErrors
|
|
104
|
+
? ctx.client.articleRevisions.formatErrors(articleErrors)
|
|
105
|
+
: null,
|
|
77
106
|
_translations: [],
|
|
78
107
|
},
|
|
79
108
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const create = async (ctx) => {
|
|
2
|
+
const { parent_id } = ctx.params;
|
|
3
|
+
|
|
4
|
+
const { revision, errors, eventErrors } =
|
|
5
|
+
await ctx.client.eventRevisions.cancelSchedule(parent_id, ctx.locale);
|
|
6
|
+
|
|
7
|
+
if (errors) {
|
|
8
|
+
throw new Error(
|
|
9
|
+
`Failed to cancel schedule for revision: ${JSON.stringify(errors)}`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (eventErrors) {
|
|
14
|
+
throw new Error(
|
|
15
|
+
`Failed to cancel schedule for revision: ${JSON.stringify(eventErrors)}`
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
redirect: `/${ctx.locale}/${ctx.resourceConfig.eventTypePlural}/${revision.originalId}`,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default {
|
|
25
|
+
create,
|
|
26
|
+
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toUTCISO8601String } from "../../utils";
|
|
2
|
+
|
|
1
3
|
const create_form = async (ctx) => {
|
|
2
4
|
const { parent_id } = ctx.params;
|
|
3
5
|
|
|
@@ -43,12 +45,21 @@ function publishEventParams(
|
|
|
43
45
|
return { visibility };
|
|
44
46
|
}
|
|
45
47
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
async function publishRevision(ctx, revision, publishing) {
|
|
49
|
+
if (publishing.mergeAt) {
|
|
50
|
+
return await ctx.client.eventRevisions.schedule(
|
|
51
|
+
revision.id,
|
|
52
|
+
ctx.locale,
|
|
53
|
+
{
|
|
54
|
+
title: publishing.title || "",
|
|
55
|
+
description: publishing.description || "",
|
|
56
|
+
mergeAt: toUTCISO8601String(publishing.mergeAt),
|
|
57
|
+
},
|
|
58
|
+
publishEventParams(publishing, revision.settings)
|
|
59
|
+
);
|
|
60
|
+
}
|
|
49
61
|
|
|
50
|
-
|
|
51
|
-
const { errors } = await ctx.client.eventRevisions.publish(
|
|
62
|
+
return await ctx.client.eventRevisions.publish(
|
|
52
63
|
revision.id,
|
|
53
64
|
ctx.locale,
|
|
54
65
|
{
|
|
@@ -57,8 +68,21 @@ const create = async (ctx) => {
|
|
|
57
68
|
},
|
|
58
69
|
publishEventParams(publishing, revision.settings)
|
|
59
70
|
);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const create = async (ctx) => {
|
|
74
|
+
const { parent_id } = ctx.params;
|
|
75
|
+
const publishing = ctx.resourceParams.publishing;
|
|
76
|
+
|
|
77
|
+
const revision = await ctx.client.eventRevisions.find(parent_id, ctx.locale);
|
|
78
|
+
|
|
79
|
+
const { errors, eventErrors } = await publishRevision(
|
|
80
|
+
ctx,
|
|
81
|
+
revision,
|
|
82
|
+
publishing
|
|
83
|
+
);
|
|
60
84
|
|
|
61
|
-
if (errors) {
|
|
85
|
+
if (errors || eventErrors) {
|
|
62
86
|
return {
|
|
63
87
|
assigns: {
|
|
64
88
|
publishing: {
|
|
@@ -67,7 +91,10 @@ const create = async (ctx) => {
|
|
|
67
91
|
originalId: revision.originalId,
|
|
68
92
|
},
|
|
69
93
|
visibilityOptions: ctx.client.events.visibilityOptions(),
|
|
70
|
-
errors: ctx.client.eventRevisions.formatErrors(errors),
|
|
94
|
+
errors: errors ? ctx.client.eventRevisions.formatErrors(errors) : null,
|
|
95
|
+
eventErrors: eventErrors
|
|
96
|
+
? ctx.client.eventRevisions.formatErrors(eventErrors)
|
|
97
|
+
: null,
|
|
71
98
|
_translations: [],
|
|
72
99
|
},
|
|
73
100
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const create = async (ctx) => {
|
|
2
|
+
const { parent_id } = ctx.params;
|
|
3
|
+
|
|
4
|
+
const { revision, errors, pageErrors } =
|
|
5
|
+
await ctx.client.pageRevisions.cancelSchedule(parent_id, ctx.locale);
|
|
6
|
+
|
|
7
|
+
if (errors) {
|
|
8
|
+
throw new Error(
|
|
9
|
+
`Failed to cancel schedule for revision: ${JSON.stringify(errors)}`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (pageErrors) {
|
|
14
|
+
throw new Error(
|
|
15
|
+
`Failed to cancel schedule for revision: ${JSON.stringify(pageErrors)}`
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
redirect: `/${ctx.locale}/${ctx.resourceConfig.pageTypePlural}/${revision.originalId}`,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default {
|
|
25
|
+
create,
|
|
26
|
+
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toUTCISO8601String } from "../../utils";
|
|
2
|
+
|
|
1
3
|
const create_form = async (ctx) => {
|
|
2
4
|
const { parent_id } = ctx.params;
|
|
3
5
|
|
|
@@ -43,12 +45,21 @@ function publishPageParams(
|
|
|
43
45
|
return { visibility };
|
|
44
46
|
}
|
|
45
47
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
async function publishRevision(ctx, revision, publishing) {
|
|
49
|
+
if (publishing.mergeAt) {
|
|
50
|
+
return await ctx.client.pageRevisions.schedule(
|
|
51
|
+
revision.id,
|
|
52
|
+
ctx.locale,
|
|
53
|
+
{
|
|
54
|
+
title: publishing.title || "",
|
|
55
|
+
description: publishing.description || "",
|
|
56
|
+
mergeAt: toUTCISO8601String(publishing.mergeAt),
|
|
57
|
+
},
|
|
58
|
+
publishPageParams(publishing, revision.settings)
|
|
59
|
+
);
|
|
60
|
+
}
|
|
49
61
|
|
|
50
|
-
|
|
51
|
-
const { errors } = await ctx.client.pageRevisions.publish(
|
|
62
|
+
return await ctx.client.pageRevisions.publish(
|
|
52
63
|
revision.id,
|
|
53
64
|
ctx.locale,
|
|
54
65
|
{
|
|
@@ -57,8 +68,21 @@ const create = async (ctx) => {
|
|
|
57
68
|
},
|
|
58
69
|
publishPageParams(publishing, revision.settings)
|
|
59
70
|
);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const create = async (ctx) => {
|
|
74
|
+
const { parent_id } = ctx.params;
|
|
75
|
+
const publishing = ctx.resourceParams.publishing;
|
|
76
|
+
|
|
77
|
+
const revision = await ctx.client.pageRevisions.find(parent_id, ctx.locale);
|
|
78
|
+
|
|
79
|
+
const { errors, pageErrors } = await publishRevision(
|
|
80
|
+
ctx,
|
|
81
|
+
revision,
|
|
82
|
+
publishing
|
|
83
|
+
);
|
|
60
84
|
|
|
61
|
-
if (errors) {
|
|
85
|
+
if (errors || pageErrors) {
|
|
62
86
|
return {
|
|
63
87
|
assigns: {
|
|
64
88
|
publishing: {
|
|
@@ -67,7 +91,10 @@ const create = async (ctx) => {
|
|
|
67
91
|
originalId: revision.originalId,
|
|
68
92
|
},
|
|
69
93
|
visibilityOptions: ctx.client.pages.visibilityOptions(),
|
|
70
|
-
errors: ctx.client.pageRevisions.formatErrors(errors),
|
|
94
|
+
errors: errors ? ctx.client.pageRevisions.formatErrors(errors) : null,
|
|
95
|
+
pageErrors: pageErrors
|
|
96
|
+
? ctx.client.pageRevisions.formatErrors(pageErrors)
|
|
97
|
+
: null,
|
|
71
98
|
_translations: [],
|
|
72
99
|
},
|
|
73
100
|
};
|
|
@@ -17,6 +17,7 @@ import RevertsHandler from "./handlers/article_revisions/RevertsHandler";
|
|
|
17
17
|
import PublishesHandler from "./handlers/article_revisions/PublishesHandler";
|
|
18
18
|
import WidgetHandler from "./handlers/article_revisions/WidgetHandler";
|
|
19
19
|
import ArticlesHandler from "./handlers/articles/ArticlesHandler";
|
|
20
|
+
import CancelSchedulesHandler from "./handlers/article_revisions/CancelSchedulesHandler";
|
|
20
21
|
|
|
21
22
|
function routeArticlesModule(
|
|
22
23
|
adapter,
|
|
@@ -121,6 +122,17 @@ function routeArticlesModule(
|
|
|
121
122
|
{ ...resourceConfig, viewsFallback: "article_revisions/publishes" }
|
|
122
123
|
);
|
|
123
124
|
|
|
125
|
+
routeNestedCollection(
|
|
126
|
+
adapter,
|
|
127
|
+
revisionsBaseResource,
|
|
128
|
+
"cancel_schedules",
|
|
129
|
+
CancelSchedulesHandler,
|
|
130
|
+
{
|
|
131
|
+
...resourceConfig,
|
|
132
|
+
viewsFallback: "article_revisions/cancel_schedules",
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
|
|
124
136
|
routeNestedMember(
|
|
125
137
|
adapter,
|
|
126
138
|
`api/${revisionsBaseResource}`,
|
package/src/routeEventsModule.js
CHANGED
|
@@ -17,6 +17,7 @@ import RevertsHandler from "./handlers/event_revisions/RevertsHandler";
|
|
|
17
17
|
import PublishesHandler from "./handlers/event_revisions/PublishesHandler";
|
|
18
18
|
import WidgetHandler from "./handlers/event_revisions/WidgetHandler";
|
|
19
19
|
import EventsHandler from "./handlers/events/EventsHandler";
|
|
20
|
+
import CancelSchedulesHandler from "./handlers/event_revisions/CancelSchedulesHandler";
|
|
20
21
|
|
|
21
22
|
function routeEventsModule(
|
|
22
23
|
adapter,
|
|
@@ -136,6 +137,17 @@ function routeEventsModule(
|
|
|
136
137
|
}
|
|
137
138
|
);
|
|
138
139
|
|
|
140
|
+
routeNestedCollection(
|
|
141
|
+
adapter,
|
|
142
|
+
revisionsBaseResource,
|
|
143
|
+
"cancel_schedules",
|
|
144
|
+
CancelSchedulesHandler,
|
|
145
|
+
{
|
|
146
|
+
...resourceConfig,
|
|
147
|
+
viewsFallback: "event_revisions/cancel_schedules",
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
|
|
139
151
|
routeNestedMember(
|
|
140
152
|
adapter,
|
|
141
153
|
`api/${revisionsBaseResource}`,
|