@raketa-cloud/admin 0.0.96 → 0.0.98
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 +3 -1
- package/src/cloud/ArticleChanges.js +24 -3
- package/src/cloud/EventChanges.js +24 -3
- package/src/cloud/PageChanges.js +24 -3
- package/src/cloud/Pages.js +1 -1
- package/src/cloud/documents/articlesDocuments.js +18 -5
- package/src/cloud/documents/common.js +2 -0
- package/src/cloud/documents/eventsDocuments.js +17 -4
- package/src/cloud/documents/pagesDocuments.js +17 -4
- package/src/handlers/articles/ArticlesHandler.js +2 -2
- package/src/handlers/articles/HistoryHandler.js +31 -0
- package/src/handlers/events/EventsHandler.js +2 -2
- package/src/handlers/events/HistoryHandler.js +31 -0
- package/src/handlers/pages/HistoryHandler.js +31 -0
- package/src/handlers/pages/PagesHandler.js +2 -2
- package/src/helpers/historyUtils.js +133 -0
- package/src/routeArticlesModule.js +19 -13
- package/src/routeEventsModule.js +18 -12
- package/src/routePagesModule.js +7 -1
- package/src/tests/handlers/articles/ArticlesHandler.test/show.test.js +5 -5
- package/src/tests/handlers/articles/ArticlesHistoryHandler.test/index.test.js +87 -0
- package/src/tests/handlers/events/EventsHandler.test/show.test.js +5 -5
- package/src/tests/handlers/events/EventsHistoryHandler.test/index.test.js +87 -0
- package/src/tests/handlers/pages/PagesHandler.test/show.test.js +5 -5
- package/src/tests/handlers/pages/PagesHistoryHandler.test/index.test.js +87 -0
- package/src/tests/helpers/historyUtils.test.js +107 -0
- package/src/views/article_revisions/codes/_form.ejs +13 -0
- package/src/views/article_revisions/codes/edit_form.ejs +1 -13
- package/src/views/article_revisions/locks/_form.ejs +11 -0
- package/src/views/article_revisions/locks/create_form.ejs +2 -12
- package/src/views/article_revisions/meta/_form.ejs +15 -0
- package/src/views/article_revisions/meta/edit_form.ejs +2 -16
- package/src/views/article_revisions/tags/_form.ejs +12 -0
- package/src/views/article_revisions/tags/edit_form.ejs +2 -13
- package/src/views/article_revisions/visuals/_form.ejs +12 -0
- package/src/views/article_revisions/visuals/edit_form.ejs +2 -13
- package/src/views/articles/_shared/_history_toolbar.ejs +9 -8
- package/src/views/articles/_shared/history_table.ejs +68 -0
- package/src/views/articles/history/index.ejs +87 -0
- package/src/views/articles/show.ejs +12 -52
- package/src/views/event_revisions/codes/_form.ejs +13 -0
- package/src/views/event_revisions/codes/edit_form.ejs +1 -13
- package/src/views/event_revisions/locks/_form.ejs +11 -0
- package/src/views/event_revisions/locks/create_form.ejs +2 -12
- package/src/views/event_revisions/meta/_form.ejs +15 -0
- package/src/views/event_revisions/meta/edit_form.ejs +2 -16
- package/src/views/event_revisions/tags/_form.ejs +12 -0
- package/src/views/event_revisions/tags/edit_form.ejs +2 -13
- package/src/views/event_revisions/visuals/_form.ejs +12 -0
- package/src/views/event_revisions/visuals/edit_form.ejs +2 -13
- package/src/views/events/_shared/_history_toolbar.ejs +9 -8
- package/src/views/events/_shared/history_table.ejs +68 -0
- package/src/views/events/history/index.ejs +87 -0
- package/src/views/events/show.ejs +12 -52
- package/src/views/page_revisions/codes/_form.ejs +13 -0
- package/src/views/page_revisions/codes/edit_form.ejs +1 -13
- package/src/views/page_revisions/locks/_form.ejs +11 -0
- package/src/views/page_revisions/locks/create_form.ejs +2 -12
- package/src/views/page_revisions/meta/_form.ejs +15 -0
- package/src/views/page_revisions/meta/edit_form.ejs +1 -15
- package/src/views/page_revisions/tags/_form.ejs +12 -0
- package/src/views/page_revisions/tags/edit_form.ejs +3 -14
- package/src/views/page_revisions/visuals/_form.ejs +12 -0
- package/src/views/page_revisions/visuals/edit_form.ejs +1 -12
- package/src/views/pages/_shared/_history_toolbar.ejs +8 -7
- package/src/views/pages/_shared/history_table.ejs +68 -0
- package/src/views/pages/history/index.ejs +87 -0
- package/src/views/pages/show.ejs +12 -52
package/package.json
CHANGED
package/src/Adapter.js
CHANGED
|
@@ -5,10 +5,11 @@ import Logger from "./Logger";
|
|
|
5
5
|
import currentPath from "./currentPath.cjs";
|
|
6
6
|
import FormBuilder from "./helpers/FormBuilder";
|
|
7
7
|
import HTMLBuilder from "./helpers/HTMLBuilder";
|
|
8
|
+
import Inflector from "./helpers/Inflector";
|
|
8
9
|
import form_for from "./helpers/form_for";
|
|
10
|
+
import history from "./helpers/historyUtils";
|
|
9
11
|
import pagination from "./helpers/pagination_helper";
|
|
10
12
|
import sort_button from "./helpers/sort_button";
|
|
11
|
-
import Inflector from "./helpers/Inflector";
|
|
12
13
|
|
|
13
14
|
function escapeHtml(string) {
|
|
14
15
|
var matchHtmlRegExp = /["'&<>]/;
|
|
@@ -170,6 +171,7 @@ export default class Adapter {
|
|
|
170
171
|
t,
|
|
171
172
|
f,
|
|
172
173
|
form_for: form_for(viewHelpersConfig),
|
|
174
|
+
history,
|
|
173
175
|
sort_button,
|
|
174
176
|
pagination,
|
|
175
177
|
Inflector,
|
|
@@ -1,15 +1,36 @@
|
|
|
1
1
|
import RaketaClient from "./RaketaClient";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
ArticleHistoryDocument,
|
|
5
|
+
ArticleEditorsDocument,
|
|
6
|
+
} from "./documents/articlesDocuments";
|
|
3
7
|
|
|
4
8
|
export default class ArticleChanges extends RaketaClient {
|
|
5
|
-
async
|
|
6
|
-
const
|
|
9
|
+
async list(query, articleId, locale) {
|
|
10
|
+
const vars = this.buildListInput(query, locale);
|
|
11
|
+
|
|
12
|
+
const { articleHistory: items } = await this.query(ArticleHistoryDocument, {
|
|
7
13
|
input: {
|
|
14
|
+
...vars.input,
|
|
8
15
|
id: articleId,
|
|
9
16
|
locale,
|
|
17
|
+
pagination: {
|
|
18
|
+
...(vars.input.pagination || {}),
|
|
19
|
+
},
|
|
10
20
|
},
|
|
11
21
|
});
|
|
12
22
|
|
|
13
23
|
return items;
|
|
14
24
|
}
|
|
25
|
+
|
|
26
|
+
async all_editors(articleId, locale) {
|
|
27
|
+
const { articleEditors } = await this.query(ArticleEditorsDocument, {
|
|
28
|
+
input: {
|
|
29
|
+
id: articleId,
|
|
30
|
+
locale,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
return articleEditors?.list;
|
|
35
|
+
}
|
|
15
36
|
}
|
|
@@ -1,15 +1,36 @@
|
|
|
1
1
|
import RaketaClient from "./RaketaClient";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
EventHistoryDocument,
|
|
4
|
+
EventEditorsDocument,
|
|
5
|
+
} from "./documents/eventsDocuments";
|
|
3
6
|
|
|
4
7
|
export default class EventChanges extends RaketaClient {
|
|
5
|
-
async
|
|
6
|
-
const
|
|
8
|
+
async list(query, eventId, locale) {
|
|
9
|
+
const vars = this.buildListInput(query, locale);
|
|
10
|
+
|
|
11
|
+
const { eventHistory: items } = await this.query(EventHistoryDocument, {
|
|
7
12
|
input: {
|
|
13
|
+
...vars.input,
|
|
8
14
|
id: eventId,
|
|
9
15
|
locale,
|
|
16
|
+
pagination: {
|
|
17
|
+
...(vars.input.pagination || {}),
|
|
18
|
+
page_size: 50,
|
|
19
|
+
},
|
|
10
20
|
},
|
|
11
21
|
});
|
|
12
22
|
|
|
13
23
|
return items;
|
|
14
24
|
}
|
|
25
|
+
|
|
26
|
+
async all_editors(eventId, locale) {
|
|
27
|
+
const { eventEditors } = await this.query(EventEditorsDocument, {
|
|
28
|
+
input: {
|
|
29
|
+
id: eventId,
|
|
30
|
+
locale,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
return eventEditors?.list;
|
|
35
|
+
}
|
|
15
36
|
}
|
package/src/cloud/PageChanges.js
CHANGED
|
@@ -1,15 +1,36 @@
|
|
|
1
1
|
import RaketaClient from "./RaketaClient";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
PageHistoryDocument,
|
|
4
|
+
PageEditorsDocument,
|
|
5
|
+
} from "./documents/pagesDocuments";
|
|
3
6
|
|
|
4
7
|
export default class PageChanges extends RaketaClient {
|
|
5
|
-
async
|
|
6
|
-
const
|
|
8
|
+
async list(query, pageId, locale) {
|
|
9
|
+
const vars = this.buildListInput(query, locale);
|
|
10
|
+
|
|
11
|
+
const { pageHistory: items } = await this.query(PageHistoryDocument, {
|
|
7
12
|
input: {
|
|
13
|
+
...vars.input,
|
|
8
14
|
id: pageId,
|
|
9
15
|
locale,
|
|
16
|
+
pagination: {
|
|
17
|
+
...(vars.input.pagination || {}),
|
|
18
|
+
page_size: 50,
|
|
19
|
+
},
|
|
10
20
|
},
|
|
11
21
|
});
|
|
12
22
|
|
|
13
23
|
return items;
|
|
14
24
|
}
|
|
25
|
+
|
|
26
|
+
async all_editors(pageId, locale) {
|
|
27
|
+
const { pageEditors } = await this.query(PageEditorsDocument, {
|
|
28
|
+
input: {
|
|
29
|
+
id: pageId,
|
|
30
|
+
locale,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
return pageEditors?.list;
|
|
35
|
+
}
|
|
15
36
|
}
|
package/src/cloud/Pages.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import RaketaClient from "./RaketaClient";
|
|
2
2
|
import {
|
|
3
|
-
buildBatchTranslatePageDocument,
|
|
4
3
|
ChangePageSlugDocument,
|
|
5
4
|
ClonePageDocument,
|
|
6
5
|
CreatePageDocument,
|
|
@@ -9,6 +8,7 @@ import {
|
|
|
9
8
|
PageByIdDocument,
|
|
10
9
|
PagesDocument,
|
|
11
10
|
TranslatePageDocument,
|
|
11
|
+
buildBatchTranslatePageDocument,
|
|
12
12
|
} from "./documents/pagesDocuments";
|
|
13
13
|
|
|
14
14
|
export default class Pages extends RaketaClient {
|
|
@@ -72,10 +72,22 @@ const ArticleByIdDocument = gql`
|
|
|
72
72
|
}
|
|
73
73
|
`;
|
|
74
74
|
|
|
75
|
-
const
|
|
76
|
-
query
|
|
77
|
-
|
|
75
|
+
const ArticleHistoryDocument = gql`
|
|
76
|
+
query ArticleHistory($input: HistoryInput!) {
|
|
77
|
+
articleHistory(input: $input) {
|
|
78
78
|
list ${summaryChangeFragment()}
|
|
79
|
+
pagination ${paginationFragment()}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
`;
|
|
83
|
+
|
|
84
|
+
const ArticleEditorsDocument = gql`
|
|
85
|
+
query ArticleEditors($input: EditorsInput!) {
|
|
86
|
+
articleEditors(input: $input) {
|
|
87
|
+
list {
|
|
88
|
+
id
|
|
89
|
+
name
|
|
90
|
+
}
|
|
79
91
|
}
|
|
80
92
|
}
|
|
81
93
|
`;
|
|
@@ -278,7 +290,7 @@ const ReopenArticleChangeDocument = gql`
|
|
|
278
290
|
reopenArticleChange(input: $input) {
|
|
279
291
|
revision ${articleRevisionFragment()}
|
|
280
292
|
errors ${errorsFragment()}
|
|
281
|
-
|
|
293
|
+
articleErrors ${errorsFragment()}
|
|
282
294
|
}
|
|
283
295
|
}
|
|
284
296
|
`;
|
|
@@ -320,11 +332,12 @@ export {
|
|
|
320
332
|
MergeArticleRevisionDocument,
|
|
321
333
|
ScheduleArticleRevisionDocument,
|
|
322
334
|
CancelArticleRevisionScheduleDocument,
|
|
323
|
-
ArticleChangesDocument,
|
|
324
335
|
ChangeArticleSlugDocument,
|
|
325
336
|
ReopenArticleChangeDocument,
|
|
326
337
|
LockArticleRevisionDocument,
|
|
327
338
|
UnlockArticleRevisionDocument,
|
|
339
|
+
ArticleHistoryDocument,
|
|
328
340
|
buildBatchTranslateArticleDocument,
|
|
329
341
|
buildBatchStartArticleRevisionDocument,
|
|
342
|
+
ArticleEditorsDocument,
|
|
330
343
|
};
|
|
@@ -78,10 +78,22 @@ const EventByIdDocument = gql`
|
|
|
78
78
|
}
|
|
79
79
|
`;
|
|
80
80
|
|
|
81
|
-
const
|
|
82
|
-
query
|
|
83
|
-
|
|
81
|
+
const EventHistoryDocument = gql`
|
|
82
|
+
query EventHistory($input: HistoryInput!) {
|
|
83
|
+
eventHistory(input: $input) {
|
|
84
84
|
list ${summaryChangeFragment()}
|
|
85
|
+
pagination ${paginationFragment()}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
`;
|
|
89
|
+
|
|
90
|
+
const EventEditorsDocument = gql`
|
|
91
|
+
query EventEditors($input: EditorsInput!) {
|
|
92
|
+
eventEditors(input: $input) {
|
|
93
|
+
list {
|
|
94
|
+
id
|
|
95
|
+
name
|
|
96
|
+
}
|
|
85
97
|
}
|
|
86
98
|
}
|
|
87
99
|
`;
|
|
@@ -328,11 +340,12 @@ export {
|
|
|
328
340
|
MergeEventRevisionDocument,
|
|
329
341
|
ScheduleEventRevisionDocument,
|
|
330
342
|
CancelEventRevisionScheduleDocument,
|
|
331
|
-
EventChangesDocument,
|
|
332
343
|
ChangeEventSlugDocument,
|
|
333
344
|
ReopenEventChangeDocument,
|
|
334
345
|
LockEventRevisionDocument,
|
|
335
346
|
UnlockEventRevisionDocument,
|
|
336
347
|
buildBatchStartEventRevisionDocument,
|
|
337
348
|
buildBatchTranslateEventDocument,
|
|
349
|
+
EventHistoryDocument,
|
|
350
|
+
EventEditorsDocument,
|
|
338
351
|
};
|
|
@@ -69,10 +69,22 @@ const PageByIdDocument = gql`
|
|
|
69
69
|
}
|
|
70
70
|
`;
|
|
71
71
|
|
|
72
|
-
const
|
|
73
|
-
query
|
|
74
|
-
|
|
72
|
+
const PageHistoryDocument = gql`
|
|
73
|
+
query PageHistory($input: HistoryInput!) {
|
|
74
|
+
pageHistory(input: $input) {
|
|
75
75
|
list ${summaryChangeFragment()}
|
|
76
|
+
pagination ${paginationFragment()}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
`;
|
|
80
|
+
|
|
81
|
+
const PageEditorsDocument = gql`
|
|
82
|
+
query PageEditors($input: EditorsInput!) {
|
|
83
|
+
pageEditors(input: $input) {
|
|
84
|
+
list {
|
|
85
|
+
id
|
|
86
|
+
name
|
|
87
|
+
}
|
|
76
88
|
}
|
|
77
89
|
}
|
|
78
90
|
`;
|
|
@@ -316,11 +328,12 @@ export {
|
|
|
316
328
|
MergePageRevisionDocument,
|
|
317
329
|
SchedulePageRevisionDocument,
|
|
318
330
|
CancelPageRevisionScheduleDocument,
|
|
319
|
-
PageChangesDocument,
|
|
320
331
|
ChangePageSlugDocument,
|
|
321
332
|
ReopenPageChangeDocument,
|
|
322
333
|
LockPageRevisionDocument,
|
|
323
334
|
UnlockPageRevisionDocument,
|
|
324
335
|
buildBatchTranslatePageDocument,
|
|
336
|
+
PageHistoryDocument,
|
|
325
337
|
buildBatchStartPageRevisionDocument,
|
|
338
|
+
PageEditorsDocument,
|
|
326
339
|
};
|
|
@@ -26,13 +26,13 @@ const show = async (ctx) => {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
const revisions = await ctx.client.articleRevisions.all(id, ctx.locale);
|
|
29
|
-
const changes = await ctx.client.articleChanges.
|
|
29
|
+
const changes = await ctx.client.articleChanges.list({}, id, ctx.locale);
|
|
30
30
|
|
|
31
31
|
return {
|
|
32
32
|
assigns: {
|
|
33
33
|
resource,
|
|
34
34
|
revisions: revisions.list,
|
|
35
|
-
changes: changes
|
|
35
|
+
changes: changes,
|
|
36
36
|
_translations: Object.keys(ctx.locales)
|
|
37
37
|
.map((locale) => {
|
|
38
38
|
const translation = resource.translations[locale];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const index = async (ctx) => {
|
|
2
|
+
const { parent_id } = ctx.params;
|
|
3
|
+
const resource = await ctx.client.articles.find(parent_id, ctx.locale);
|
|
4
|
+
|
|
5
|
+
if (!resource) {
|
|
6
|
+
throw new Error(`Missing ${ctx.resourceConfig.articleType} #${parent_id}`);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const changes = await ctx.client.articleChanges.list(
|
|
10
|
+
ctx.query,
|
|
11
|
+
parent_id,
|
|
12
|
+
ctx.locale
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
const editors = await ctx.client.articleChanges.all_editors(
|
|
16
|
+
parent_id,
|
|
17
|
+
ctx.locale
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
assigns: {
|
|
22
|
+
resource,
|
|
23
|
+
changes: changes,
|
|
24
|
+
editors,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export default {
|
|
30
|
+
index,
|
|
31
|
+
};
|
|
@@ -26,13 +26,13 @@ const show = async (ctx) => {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
const revisions = await ctx.client.eventRevisions.all(id, ctx.locale);
|
|
29
|
-
const changes = await ctx.client.eventChanges.
|
|
29
|
+
const changes = await ctx.client.eventChanges.list({}, id, ctx.locale);
|
|
30
30
|
|
|
31
31
|
return {
|
|
32
32
|
assigns: {
|
|
33
33
|
resource,
|
|
34
34
|
revisions: revisions.list,
|
|
35
|
-
changes: changes
|
|
35
|
+
changes: changes,
|
|
36
36
|
_translations: Object.keys(ctx.locales)
|
|
37
37
|
.map((locale) => {
|
|
38
38
|
const translation = resource.translations[locale];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const index = async (ctx) => {
|
|
2
|
+
const { parent_id } = ctx.params;
|
|
3
|
+
const resource = await ctx.client.events.find(parent_id, ctx.locale);
|
|
4
|
+
|
|
5
|
+
if (!resource) {
|
|
6
|
+
throw new Error(`Missing ${ctx.resourceConfig.eventType} #${parent_id}`);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const changes = await ctx.client.eventChanges.list(
|
|
10
|
+
ctx.query,
|
|
11
|
+
parent_id,
|
|
12
|
+
ctx.locale
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
const editors = await ctx.client.eventChanges.all_editors(
|
|
16
|
+
parent_id,
|
|
17
|
+
ctx.locale
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
assigns: {
|
|
22
|
+
resource,
|
|
23
|
+
changes: changes,
|
|
24
|
+
editors,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export default {
|
|
30
|
+
index,
|
|
31
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const index = async (ctx) => {
|
|
2
|
+
const { parent_id } = ctx.params;
|
|
3
|
+
const resource = await ctx.client.pages.find(parent_id, ctx.locale);
|
|
4
|
+
|
|
5
|
+
if (!resource) {
|
|
6
|
+
throw new Error(`Missing ${ctx.resourceConfig.pageType} #${parent_id}`);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const changes = await ctx.client.pageChanges.list(
|
|
10
|
+
ctx.query,
|
|
11
|
+
parent_id,
|
|
12
|
+
ctx.locale
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
const editors = await ctx.client.pageChanges.all_editors(
|
|
16
|
+
parent_id,
|
|
17
|
+
ctx.locale
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
assigns: {
|
|
22
|
+
resource,
|
|
23
|
+
changes: changes,
|
|
24
|
+
editors,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export default {
|
|
30
|
+
index,
|
|
31
|
+
};
|
|
@@ -25,13 +25,13 @@ const show = async (ctx) => {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
const revisions = await ctx.client.pageRevisions.all(id, ctx.locale);
|
|
28
|
-
const changes = await ctx.client.pageChanges.
|
|
28
|
+
const changes = await ctx.client.pageChanges.list({}, id, ctx.locale);
|
|
29
29
|
|
|
30
30
|
return {
|
|
31
31
|
assigns: {
|
|
32
32
|
resource,
|
|
33
33
|
revisions: revisions.list,
|
|
34
|
-
changes: changes
|
|
34
|
+
changes: changes,
|
|
35
35
|
_translations: Object.keys(ctx.locales)
|
|
36
36
|
.map((locale) => {
|
|
37
37
|
const translation = resource.translations[locale];
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import Inflector from "./Inflector";
|
|
2
|
+
|
|
3
|
+
const CHANGE_TYEPS = {
|
|
4
|
+
revision_publish: {
|
|
5
|
+
label: "Revision published",
|
|
6
|
+
displayAction: "#RESOURCE_TYPE# updated by revision #{rev}",
|
|
7
|
+
canRevert: true,
|
|
8
|
+
canRevertAsLast: false,
|
|
9
|
+
requiresReason: true,
|
|
10
|
+
},
|
|
11
|
+
revision_create: {
|
|
12
|
+
label: "Revision created",
|
|
13
|
+
displayAction: "Revision #{rev} created",
|
|
14
|
+
canRevert: false,
|
|
15
|
+
canRevertAsLast: false,
|
|
16
|
+
requiresReason: false,
|
|
17
|
+
},
|
|
18
|
+
create: {
|
|
19
|
+
label: "#RESOURCE_TYPE# created",
|
|
20
|
+
displayAction: "#RESOURCE_TYPE# created",
|
|
21
|
+
canRevert: true,
|
|
22
|
+
canRevertAsLast: false,
|
|
23
|
+
requiresReason: false,
|
|
24
|
+
},
|
|
25
|
+
revision_lock: {
|
|
26
|
+
label: "Revision locked",
|
|
27
|
+
displayAction: "Revision #{rev} locked",
|
|
28
|
+
canRevert: false,
|
|
29
|
+
canRevertAsLast: false,
|
|
30
|
+
requiresReason: true,
|
|
31
|
+
},
|
|
32
|
+
revision_unlock: {
|
|
33
|
+
label: "Revision unlocked",
|
|
34
|
+
displayAction: "Revision #{rev} unlocked",
|
|
35
|
+
canRevert: false,
|
|
36
|
+
canRevertAsLast: false,
|
|
37
|
+
requiresReason: false,
|
|
38
|
+
},
|
|
39
|
+
revision_delete: {
|
|
40
|
+
label: "Revision deleted",
|
|
41
|
+
displayAction: "Revision #{rev} deleted",
|
|
42
|
+
canRevert: true,
|
|
43
|
+
canRevertAsLast: true,
|
|
44
|
+
requiresReason: false,
|
|
45
|
+
},
|
|
46
|
+
update: {
|
|
47
|
+
label: "Updated by script",
|
|
48
|
+
displayAction: "#RESOURCE_TYPE# updated",
|
|
49
|
+
canRevert: true,
|
|
50
|
+
canRevertAsLast: false,
|
|
51
|
+
requiresReason: true,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
function changeTypes(resourceType = "page") {
|
|
56
|
+
return Object.entries(CHANGE_TYEPS).reduce((acc, [key, value]) => {
|
|
57
|
+
acc[key] = {
|
|
58
|
+
...value,
|
|
59
|
+
label: value.label.replace(
|
|
60
|
+
"#RESOURCE_TYPE#",
|
|
61
|
+
Inflector.capitalize(resourceType)
|
|
62
|
+
),
|
|
63
|
+
displayAction: value.displayAction.replace(
|
|
64
|
+
"#RESOURCE_TYPE#",
|
|
65
|
+
Inflector.capitalize(resourceType)
|
|
66
|
+
),
|
|
67
|
+
};
|
|
68
|
+
return acc;
|
|
69
|
+
}, {});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function changeAction(change, resourceType) {
|
|
73
|
+
const changeType = CHANGE_TYEPS[change.changeType];
|
|
74
|
+
|
|
75
|
+
const displayAction = changeType?.displayAction;
|
|
76
|
+
|
|
77
|
+
if (!displayAction) {
|
|
78
|
+
return change.changeType;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const formattedAction = displayAction
|
|
82
|
+
.replace("#RESOURCE_TYPE#", Inflector.capitalize(resourceType))
|
|
83
|
+
.replace(
|
|
84
|
+
"#{rev}",
|
|
85
|
+
(function () {
|
|
86
|
+
if (change.revisionId) {
|
|
87
|
+
return `#${change.revisionId}`;
|
|
88
|
+
} else {
|
|
89
|
+
return "";
|
|
90
|
+
}
|
|
91
|
+
})()
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
return change.source === "revert"
|
|
95
|
+
? `${formattedAction} by revert`
|
|
96
|
+
: formattedAction;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Since we are not deleting anything from the history and the version numbers are
|
|
100
|
+
// a sequence with increments of 1 this means that the max version is the number of history entries
|
|
101
|
+
function getMaxVersion(changes) {
|
|
102
|
+
const { pagination } = changes;
|
|
103
|
+
|
|
104
|
+
return pagination.entriesCount;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function changeReason(change) {
|
|
108
|
+
const changeType = CHANGE_TYEPS[change.changeType];
|
|
109
|
+
|
|
110
|
+
if (changeType.requiresReason) {
|
|
111
|
+
return change.title;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return "";
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function isChangeRevertable(change, maxVersion) {
|
|
118
|
+
const changeType = CHANGE_TYEPS[change.changeType];
|
|
119
|
+
|
|
120
|
+
return (
|
|
121
|
+
changeType.canRevert &&
|
|
122
|
+
((changeType.canRevertAsLast && maxVersion === change.version) ||
|
|
123
|
+
maxVersion !== change.version)
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export default {
|
|
128
|
+
changeTypes,
|
|
129
|
+
getMaxVersion,
|
|
130
|
+
changeAction,
|
|
131
|
+
isChangeRevertable,
|
|
132
|
+
changeReason,
|
|
133
|
+
};
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import routeCollection from "./routeCollection";
|
|
2
|
-
import routeNestedCollection from "./routeNestedCollection";
|
|
3
|
-
import routeNestedMember from "./routeNestedMember";
|
|
4
|
-
import TranslationsHandler from "./handlers/articles/TranslationsHandler";
|
|
5
1
|
import ArticleRevisionsHandler from "./handlers/article_revisions/ArticleRevisionsHandler";
|
|
6
|
-
import
|
|
7
|
-
import VisualHandler from "./handlers/article_revisions/VisualHandler";
|
|
2
|
+
import CancelSchedulesHandler from "./handlers/article_revisions/CancelSchedulesHandler";
|
|
8
3
|
import CodeHandler from "./handlers/article_revisions/CodeHandler";
|
|
4
|
+
import GeneralHandler from "./handlers/article_revisions/GeneralHandler";
|
|
5
|
+
import LocksHandler from "./handlers/article_revisions/LocksHandler";
|
|
9
6
|
import MetaHandler from "./handlers/article_revisions/MetaHandler";
|
|
7
|
+
import PublishesHandler from "./handlers/article_revisions/PublishesHandler";
|
|
8
|
+
import RevertsHandler from "./handlers/article_revisions/RevertsHandler";
|
|
10
9
|
import TagHandler from "./handlers/article_revisions/TagHandler";
|
|
11
|
-
import LocksHandler from "./handlers/article_revisions/LocksHandler";
|
|
12
10
|
import UnlocksHandler from "./handlers/article_revisions/UnlocksHandler";
|
|
13
|
-
import
|
|
14
|
-
import URLsHandler from "./handlers/articles/URLsHandler";
|
|
15
|
-
import DeletesHandler from "./handlers/articles/DeletesHandler";
|
|
16
|
-
import RevertsHandler from "./handlers/article_revisions/RevertsHandler";
|
|
17
|
-
import PublishesHandler from "./handlers/article_revisions/PublishesHandler";
|
|
11
|
+
import VisualHandler from "./handlers/article_revisions/VisualHandler";
|
|
18
12
|
import WidgetHandler from "./handlers/article_revisions/WidgetHandler";
|
|
19
13
|
import ArticlesHandler from "./handlers/articles/ArticlesHandler";
|
|
20
|
-
import
|
|
14
|
+
import ClonesHandler from "./handlers/articles/ClonesHandler";
|
|
15
|
+
import DeletesHandler from "./handlers/articles/DeletesHandler";
|
|
16
|
+
import HistoryHandler from "./handlers/articles/HistoryHandler";
|
|
17
|
+
import TranslationsHandler from "./handlers/articles/TranslationsHandler";
|
|
18
|
+
import URLsHandler from "./handlers/articles/URLsHandler";
|
|
19
|
+
import routeCollection from "./routeCollection";
|
|
20
|
+
import routeNestedCollection from "./routeNestedCollection";
|
|
21
|
+
import routeNestedMember from "./routeNestedMember";
|
|
21
22
|
|
|
22
23
|
function routeArticlesModule(
|
|
23
24
|
adapter,
|
|
@@ -45,6 +46,11 @@ function routeArticlesModule(
|
|
|
45
46
|
{ ...resourceConfig, viewsFallback: "articles/translations" }
|
|
46
47
|
);
|
|
47
48
|
|
|
49
|
+
routeNestedCollection(adapter, baseResource, "history", HistoryHandler, {
|
|
50
|
+
...resourceConfig,
|
|
51
|
+
viewsFallback: "articles/history",
|
|
52
|
+
});
|
|
53
|
+
|
|
48
54
|
routeNestedCollection(
|
|
49
55
|
adapter,
|
|
50
56
|
baseResource,
|
package/src/routeEventsModule.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import routeNestedMember from "./routeNestedMember";
|
|
4
|
-
import TranslationsHandler from "./handlers/events/TranslationsHandler";
|
|
1
|
+
import CancelSchedulesHandler from "./handlers/event_revisions/CancelSchedulesHandler";
|
|
2
|
+
import CodeHandler from "./handlers/event_revisions/CodeHandler";
|
|
5
3
|
import EventRevisionsHandler from "./handlers/event_revisions/EventRevisionsHandler";
|
|
6
4
|
import GeneralHandler from "./handlers/event_revisions/GeneralHandler";
|
|
7
|
-
import
|
|
8
|
-
import CodeHandler from "./handlers/event_revisions/CodeHandler";
|
|
5
|
+
import LocksHandler from "./handlers/event_revisions/LocksHandler";
|
|
9
6
|
import MetaHandler from "./handlers/event_revisions/MetaHandler";
|
|
7
|
+
import PublishesHandler from "./handlers/event_revisions/PublishesHandler";
|
|
8
|
+
import RevertsHandler from "./handlers/event_revisions/RevertsHandler";
|
|
10
9
|
import TagHandler from "./handlers/event_revisions/TagHandler";
|
|
11
|
-
import LocksHandler from "./handlers/event_revisions/LocksHandler";
|
|
12
10
|
import UnlocksHandler from "./handlers/event_revisions/UnlocksHandler";
|
|
11
|
+
import VisualHandler from "./handlers/event_revisions/VisualHandler";
|
|
12
|
+
import WidgetHandler from "./handlers/event_revisions/WidgetHandler";
|
|
13
13
|
import ClonesHandler from "./handlers/events/ClonesHandler";
|
|
14
|
-
import URLsHandler from "./handlers/events/URLsHandler";
|
|
15
14
|
import DeletesHandler from "./handlers/events/DeletesHandler";
|
|
16
|
-
import RevertsHandler from "./handlers/event_revisions/RevertsHandler";
|
|
17
|
-
import PublishesHandler from "./handlers/event_revisions/PublishesHandler";
|
|
18
|
-
import WidgetHandler from "./handlers/event_revisions/WidgetHandler";
|
|
19
15
|
import EventsHandler from "./handlers/events/EventsHandler";
|
|
20
|
-
import
|
|
16
|
+
import HistoryHandler from "./handlers/events/HistoryHandler";
|
|
17
|
+
import TranslationsHandler from "./handlers/events/TranslationsHandler";
|
|
18
|
+
import URLsHandler from "./handlers/events/URLsHandler";
|
|
19
|
+
import routeCollection from "./routeCollection";
|
|
20
|
+
import routeNestedCollection from "./routeNestedCollection";
|
|
21
|
+
import routeNestedMember from "./routeNestedMember";
|
|
21
22
|
|
|
22
23
|
function routeEventsModule(
|
|
23
24
|
adapter,
|
|
@@ -48,6 +49,11 @@ function routeEventsModule(
|
|
|
48
49
|
}
|
|
49
50
|
);
|
|
50
51
|
|
|
52
|
+
routeNestedCollection(adapter, baseResource, "history", HistoryHandler, {
|
|
53
|
+
...resourceConfig,
|
|
54
|
+
viewsFallback: "events/history",
|
|
55
|
+
});
|
|
56
|
+
|
|
51
57
|
routeNestedCollection(
|
|
52
58
|
adapter,
|
|
53
59
|
baseResource,
|