@raketa-cloud/admin 0.0.59 → 0.0.64
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/Articles.js +3 -42
- package/src/cloud/Events.js +3 -29
- package/src/cloud/Pages.js +3 -29
- package/src/cloud/documents/articlesDocuments.js +11 -14
- package/src/cloud/documents/common.js +14 -0
- package/src/cloud/documents/eventsDocuments.js +13 -14
- package/src/cloud/documents/pagesDocuments.js +10 -14
- package/src/handlers/articles/DeletesHandler.js +1 -0
- package/src/handlers/articles/URLsHandler.js +1 -0
- package/src/handlers/events/DeletesHandler.js +1 -0
- package/src/handlers/events/URLsHandler.js +1 -0
- package/src/handlers/page_revisions/TagHandler.js +40 -0
- package/src/handlers/pages/DeletesHandler.js +1 -0
- package/src/handlers/pages/URLsHandler.js +1 -0
- package/src/helpers/FormBuilder.js +2 -2
- package/src/styles/application.css +4 -0
- package/src/tests/handlers/articles/DeletesHandler.test/create_form.test.js +2 -1
- package/src/tests/handlers/articles/URLsHandler.test/create_form.test.js +2 -1
- package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +2 -1
- package/src/tests/handlers/events/URLsHandler.test/create_form.test.js +2 -1
- package/src/tests/handlers/page_revisions/TagHandler.test/edit_form.test.js +38 -3
- package/src/tests/handlers/page_revisions/TagHandler.test/update.test.js +39 -3
- package/src/tests/handlers/pages/DeletesHandler.test/create.test.js +1 -1
- package/src/tests/handlers/pages/DeletesHandler.test/create_form.test.js +1 -0
- package/src/tests/handlers/pages/URLsHandler.test/create_form.test.js +1 -0
- package/src/views/article_revisions/codes/edit_form.ejs +5 -16
- package/src/views/article_revisions/general/_form.ejs +2 -2
- package/src/views/article_revisions/general/edit_form.ejs +5 -16
- package/src/views/article_revisions/locks/create_form.ejs +5 -3
- package/src/views/article_revisions/meta/edit_form.ejs +8 -19
- package/src/views/article_revisions/publishes/_form.ejs +19 -36
- package/src/views/article_revisions/tags/edit_form.ejs +5 -16
- package/src/views/article_revisions/visuals/edit_form.ejs +5 -16
- package/src/views/articles/_form.ejs +14 -19
- package/src/views/articles/deletes/create_form.ejs +18 -5
- package/src/views/articles/index.ejs +1 -19
- package/src/views/articles/show.ejs +1 -1
- package/src/views/articles/translations/_form.ejs +1 -15
- package/src/views/articles/urls/create_form.ejs +10 -5
- package/src/views/categories/_form.ejs +1 -15
- package/src/views/event_revisions/_nav.ejs +1 -1
- package/src/views/event_revisions/codes/edit_form.ejs +5 -16
- package/src/views/event_revisions/general/_form.ejs +2 -2
- package/src/views/event_revisions/general/edit_form.ejs +5 -16
- package/src/views/event_revisions/locks/create_form.ejs +5 -3
- package/src/views/event_revisions/meta/edit_form.ejs +8 -19
- package/src/views/event_revisions/publishes/_form.ejs +19 -36
- package/src/views/event_revisions/tags/edit_form.ejs +5 -16
- package/src/views/event_revisions/visuals/edit_form.ejs +5 -16
- package/src/views/events/_form.ejs +14 -19
- package/src/views/events/deletes/create_form.ejs +18 -5
- package/src/views/events/index.ejs +1 -19
- package/src/views/events/show.ejs +1 -1
- package/src/views/events/translations/_form.ejs +1 -15
- package/src/views/events/urls/create_form.ejs +10 -5
- package/src/views/page_revisions/_nav.ejs +1 -1
- package/src/views/page_revisions/codes/edit_form.ejs +4 -15
- package/src/views/page_revisions/general/_form.ejs +1 -1
- package/src/views/page_revisions/general/edit_form.ejs +4 -15
- package/src/views/page_revisions/locks/create_form.ejs +5 -3
- package/src/views/page_revisions/meta/edit_form.ejs +7 -18
- package/src/views/page_revisions/publishes/_form.ejs +19 -36
- package/src/views/page_revisions/tags/edit_form.ejs +9 -15
- package/src/views/page_revisions/visuals/edit_form.ejs +4 -15
- package/src/views/pages/_form.ejs +13 -18
- package/src/views/pages/deletes/create_form.ejs +17 -4
- package/src/views/pages/index.ejs +1 -19
- package/src/views/pages/show.ejs +3 -3
- package/src/views/pages/translations/create_form.ejs +13 -5
- package/src/views/pages/translations/index.ejs +6 -4
- package/src/views/pages/urls/create_form.ejs +9 -4
- package/src/views/redirects/_form.ejs +5 -19
- package/src/views/settings/meta/edit_form.ejs +4 -18
- package/src/views/tags/_form.ejs +2 -16
package/package.json
CHANGED
package/src/cloud/Articles.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
DeleteArticleDocument,
|
|
8
8
|
TranslateArticleDocument,
|
|
9
9
|
ChangeArticleSlugDocument,
|
|
10
|
-
|
|
10
|
+
MiniArticlesDocument,
|
|
11
11
|
} from "./documents/articlesDocuments";
|
|
12
12
|
import { toDateTimeInput, toUTCISO8601String } from "../utils";
|
|
13
13
|
|
|
@@ -42,19 +42,6 @@ export default class Articles extends RaketaClient {
|
|
|
42
42
|
];
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
async minimal(query, locale, articleTypeSlug) {
|
|
46
|
-
const vars = this.buildListInput(query, locale);
|
|
47
|
-
|
|
48
|
-
const { articles: items } = await this.query(MinimalArticlesDocument, {
|
|
49
|
-
input: {
|
|
50
|
-
...vars.input,
|
|
51
|
-
filters: { ...vars.input.filters, articleTypeSlug },
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
return items;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
45
|
async find(id, locale) {
|
|
59
46
|
const { article: item } = await this.query(ArticleByIdDocument, {
|
|
60
47
|
input: {
|
|
@@ -66,36 +53,10 @@ export default class Articles extends RaketaClient {
|
|
|
66
53
|
return item;
|
|
67
54
|
}
|
|
68
55
|
|
|
69
|
-
async
|
|
70
|
-
const vars = this.buildAllInput(query, locale);
|
|
71
|
-
|
|
72
|
-
const { articles: items } = await this.query(MinimalArticlesDocument, {
|
|
73
|
-
input: {
|
|
74
|
-
...vars.input,
|
|
75
|
-
filters: { ...vars.input.filters, articleTypeSlug },
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
return items;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
async minimalList(query, locale, articleTypeSlug) {
|
|
83
|
-
const vars = this.buildListInput(query, locale);
|
|
84
|
-
|
|
85
|
-
const { articles: items } = await this.query(MinimalArticlesDocument, {
|
|
86
|
-
input: {
|
|
87
|
-
...vars.input,
|
|
88
|
-
filters: { ...vars.input.filters, articleTypeSlug },
|
|
89
|
-
},
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
return items;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
async all(query, locale, articleTypeSlug) {
|
|
56
|
+
async listAll(query, locale, articleTypeSlug) {
|
|
96
57
|
const vars = this.buildAllInput(query, locale);
|
|
97
58
|
|
|
98
|
-
const {
|
|
59
|
+
const { miniArticles: items } = await this.query(MiniArticlesDocument, {
|
|
99
60
|
input: {
|
|
100
61
|
...vars.input,
|
|
101
62
|
filters: { ...vars.input.filters, articleTypeSlug },
|
package/src/cloud/Events.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
DeleteEventDocument,
|
|
8
8
|
TranslateEventDocument,
|
|
9
9
|
ChangeEventSlugDocument,
|
|
10
|
-
|
|
10
|
+
MiniEventsDocument,
|
|
11
11
|
} from "./documents/eventsDocuments";
|
|
12
12
|
import { toDateTimeInput, toUTCISO8601String } from "../utils";
|
|
13
13
|
|
|
@@ -63,36 +63,10 @@ export default class Events extends RaketaClient {
|
|
|
63
63
|
return item;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
async
|
|
66
|
+
async listAll(query, locale, eventTypeSlug) {
|
|
67
67
|
const vars = this.buildAllInput(query, locale);
|
|
68
68
|
|
|
69
|
-
const {
|
|
70
|
-
input: {
|
|
71
|
-
...vars.input,
|
|
72
|
-
filters: { ...vars.input.filters, eventTypeSlug },
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
return items;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
async minimalList(query, locale, eventTypeSlug) {
|
|
80
|
-
const vars = this.buildListInput(query, locale);
|
|
81
|
-
|
|
82
|
-
const { events: items } = await this.query(MinimalEventsDocument, {
|
|
83
|
-
input: {
|
|
84
|
-
...vars.input,
|
|
85
|
-
filters: { ...vars.input.filters, eventTypeSlug },
|
|
86
|
-
},
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
return items;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
async all(query, locale, eventTypeSlug) {
|
|
93
|
-
const vars = this.buildAllInput(query, locale);
|
|
94
|
-
|
|
95
|
-
const { events: items } = await this.query(EventsDocument, {
|
|
69
|
+
const { miniEvents: items } = await this.query(MiniEventsDocument, {
|
|
96
70
|
input: {
|
|
97
71
|
...vars.input,
|
|
98
72
|
filters: { ...vars.input.filters, eventTypeSlug },
|
package/src/cloud/Pages.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
DeletePageDocument,
|
|
8
8
|
TranslatePageDocument,
|
|
9
9
|
ChangePageSlugDocument,
|
|
10
|
-
|
|
10
|
+
MiniPagesDocument,
|
|
11
11
|
} from "./documents/pagesDocuments";
|
|
12
12
|
|
|
13
13
|
export default class Pages extends RaketaClient {
|
|
@@ -43,36 +43,10 @@ export default class Pages extends RaketaClient {
|
|
|
43
43
|
return item;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
async
|
|
46
|
+
async listAll(query, locale, pageTypeSlug) {
|
|
47
47
|
const vars = this.buildAllInput(query, locale);
|
|
48
48
|
|
|
49
|
-
const {
|
|
50
|
-
input: {
|
|
51
|
-
...vars.input,
|
|
52
|
-
filters: { ...vars.input.filters, pageTypeSlug },
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
return items;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
async minimalList(query, locale, pageTypeSlug) {
|
|
60
|
-
const vars = this.buildListInput(query, locale);
|
|
61
|
-
|
|
62
|
-
const { pages: items } = await this.query(MinimalPagesDocument, {
|
|
63
|
-
input: {
|
|
64
|
-
...vars.input,
|
|
65
|
-
filters: { ...vars.input.filters, pageTypeSlug },
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
return items;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
async all(query, locale, pageTypeSlug) {
|
|
73
|
-
const vars = this.buildAllInput(query, locale);
|
|
74
|
-
|
|
75
|
-
const { pages: items } = await this.query(PagesDocument, {
|
|
49
|
+
const { miniPages: items } = await this.query(MiniPagesDocument, {
|
|
76
50
|
input: {
|
|
77
51
|
...vars.input,
|
|
78
52
|
filters: { ...vars.input.filters, pageTypeSlug },
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
paginationFragment,
|
|
7
7
|
revisionMetaFragment,
|
|
8
8
|
tagFragment,
|
|
9
|
+
summaryChangeFragment,
|
|
9
10
|
} from "./common";
|
|
10
11
|
|
|
11
12
|
function minimalArticleFragment() {
|
|
@@ -14,6 +15,8 @@ function minimalArticleFragment() {
|
|
|
14
15
|
id
|
|
15
16
|
slug
|
|
16
17
|
title
|
|
18
|
+
visibility
|
|
19
|
+
publishAt
|
|
17
20
|
}
|
|
18
21
|
`;
|
|
19
22
|
}
|
|
@@ -31,6 +34,9 @@ function articleFragment() {
|
|
|
31
34
|
originalId
|
|
32
35
|
translations
|
|
33
36
|
revisionsCount
|
|
37
|
+
insertedAt
|
|
38
|
+
updatedAt
|
|
39
|
+
changes ${summaryChangeFragment()}
|
|
34
40
|
tags ${tagFragment()}
|
|
35
41
|
articleType ${articleTypeFragment()}
|
|
36
42
|
categories ${categoryFragment()}
|
|
@@ -67,24 +73,15 @@ const ArticleByIdDocument = gql`
|
|
|
67
73
|
const ArticleChangesDocument = gql`
|
|
68
74
|
query ArticleChanges($input: IdInput!) {
|
|
69
75
|
articleChanges(input: $input) {
|
|
70
|
-
list {
|
|
71
|
-
version
|
|
72
|
-
title
|
|
73
|
-
description
|
|
74
|
-
operator
|
|
75
|
-
operatorMeta
|
|
76
|
-
source
|
|
77
|
-
insertedAt
|
|
78
|
-
}
|
|
76
|
+
list ${summaryChangeFragment()}
|
|
79
77
|
}
|
|
80
78
|
}
|
|
81
79
|
`;
|
|
82
80
|
|
|
83
|
-
const
|
|
84
|
-
query
|
|
85
|
-
|
|
81
|
+
const MiniArticlesDocument = gql`
|
|
82
|
+
query MiniArticles($input: ArticlesInput!) {
|
|
83
|
+
miniArticles(input: $input) {
|
|
86
84
|
list ${minimalArticleFragment()}
|
|
87
|
-
pagination ${paginationFragment()}
|
|
88
85
|
}
|
|
89
86
|
}
|
|
90
87
|
`;
|
|
@@ -248,7 +245,7 @@ const UnlockArticleRevisionDocument = gql`
|
|
|
248
245
|
export {
|
|
249
246
|
ArticleByIdDocument,
|
|
250
247
|
ArticlesDocument,
|
|
251
|
-
|
|
248
|
+
MiniArticlesDocument,
|
|
252
249
|
CreateArticleDocument,
|
|
253
250
|
UpdateArticleDocument,
|
|
254
251
|
UpdateArticleWidgetsDocument,
|
|
@@ -102,3 +102,17 @@ export function categoryFragment() {
|
|
|
102
102
|
}
|
|
103
103
|
`;
|
|
104
104
|
}
|
|
105
|
+
|
|
106
|
+
export function summaryChangeFragment() {
|
|
107
|
+
return gql`
|
|
108
|
+
{
|
|
109
|
+
version
|
|
110
|
+
title
|
|
111
|
+
description
|
|
112
|
+
operator
|
|
113
|
+
operatorMeta
|
|
114
|
+
source
|
|
115
|
+
insertedAt
|
|
116
|
+
}
|
|
117
|
+
`;
|
|
118
|
+
}
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
paginationFragment,
|
|
7
7
|
revisionMetaFragment,
|
|
8
8
|
tagFragment,
|
|
9
|
+
summaryChangeFragment,
|
|
9
10
|
} from "./common";
|
|
10
11
|
|
|
11
12
|
function minimalEventFragment() {
|
|
@@ -14,6 +15,10 @@ function minimalEventFragment() {
|
|
|
14
15
|
id
|
|
15
16
|
slug
|
|
16
17
|
title
|
|
18
|
+
visibility
|
|
19
|
+
publishAt
|
|
20
|
+
startsAt
|
|
21
|
+
endsAt
|
|
17
22
|
}
|
|
18
23
|
`;
|
|
19
24
|
}
|
|
@@ -33,6 +38,9 @@ function eventFragment() {
|
|
|
33
38
|
originalId
|
|
34
39
|
translations
|
|
35
40
|
revisionsCount
|
|
41
|
+
insertedAt
|
|
42
|
+
updatedAt
|
|
43
|
+
changes ${summaryChangeFragment()}
|
|
36
44
|
tags ${tagFragment()}
|
|
37
45
|
eventType ${eventTypeFragment()}
|
|
38
46
|
categories ${categoryFragment()}
|
|
@@ -71,24 +79,15 @@ const EventByIdDocument = gql`
|
|
|
71
79
|
const EventChangesDocument = gql`
|
|
72
80
|
query EventChanges($input: IdInput!) {
|
|
73
81
|
eventChanges(input: $input) {
|
|
74
|
-
list {
|
|
75
|
-
version
|
|
76
|
-
title
|
|
77
|
-
description
|
|
78
|
-
operator
|
|
79
|
-
operatorMeta
|
|
80
|
-
source
|
|
81
|
-
insertedAt
|
|
82
|
-
}
|
|
82
|
+
list ${summaryChangeFragment()}
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
`;
|
|
86
86
|
|
|
87
|
-
const
|
|
88
|
-
query
|
|
89
|
-
|
|
87
|
+
const MiniEventsDocument = gql`
|
|
88
|
+
query MiniEvents($input: EventsInput!) {
|
|
89
|
+
miniEvents(input: $input) {
|
|
90
90
|
list ${minimalEventFragment()}
|
|
91
|
-
pagination ${paginationFragment()}
|
|
92
91
|
}
|
|
93
92
|
}
|
|
94
93
|
`;
|
|
@@ -254,7 +253,7 @@ const UnlockEventRevisionDocument = gql`
|
|
|
254
253
|
export {
|
|
255
254
|
EventByIdDocument,
|
|
256
255
|
EventsDocument,
|
|
257
|
-
|
|
256
|
+
MiniEventsDocument,
|
|
258
257
|
CreateEventDocument,
|
|
259
258
|
UpdateEventDocument,
|
|
260
259
|
UpdateEventWidgetsDocument,
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
paginationFragment,
|
|
7
7
|
revisionMetaFragment,
|
|
8
8
|
tagFragment,
|
|
9
|
+
summaryChangeFragment,
|
|
9
10
|
} from "./common";
|
|
10
11
|
|
|
11
12
|
function minimalPageFragment() {
|
|
@@ -14,6 +15,7 @@ function minimalPageFragment() {
|
|
|
14
15
|
id
|
|
15
16
|
slug
|
|
16
17
|
title
|
|
18
|
+
visibility
|
|
17
19
|
}
|
|
18
20
|
`;
|
|
19
21
|
}
|
|
@@ -30,9 +32,12 @@ function pageFragment() {
|
|
|
30
32
|
originalId
|
|
31
33
|
translations
|
|
32
34
|
revisionsCount
|
|
35
|
+
insertedAt
|
|
36
|
+
updatedAt
|
|
33
37
|
tags ${tagFragment()}
|
|
34
38
|
pageType ${pageTypeFragment()}
|
|
35
39
|
categories ${categoryFragment()}
|
|
40
|
+
changes ${summaryChangeFragment()}
|
|
36
41
|
}
|
|
37
42
|
`;
|
|
38
43
|
}
|
|
@@ -65,24 +70,15 @@ const PageByIdDocument = gql`
|
|
|
65
70
|
const PageChangesDocument = gql`
|
|
66
71
|
query PageChanges($input: IdInput!) {
|
|
67
72
|
pageChanges(input: $input) {
|
|
68
|
-
list {
|
|
69
|
-
version
|
|
70
|
-
title
|
|
71
|
-
description
|
|
72
|
-
operator
|
|
73
|
-
operatorMeta
|
|
74
|
-
source
|
|
75
|
-
insertedAt
|
|
76
|
-
}
|
|
73
|
+
list ${summaryChangeFragment()}
|
|
77
74
|
}
|
|
78
75
|
}
|
|
79
76
|
`;
|
|
80
77
|
|
|
81
|
-
const
|
|
82
|
-
query
|
|
83
|
-
|
|
78
|
+
const MiniPagesDocument = gql`
|
|
79
|
+
query MiniPages($input: PagesInput!) {
|
|
80
|
+
miniPages(input: $input) {
|
|
84
81
|
list ${minimalPageFragment()}
|
|
85
|
-
pagination ${paginationFragment()}
|
|
86
82
|
}
|
|
87
83
|
}
|
|
88
84
|
`;
|
|
@@ -245,7 +241,7 @@ const UnlockPageRevisionDocument = gql`
|
|
|
245
241
|
export {
|
|
246
242
|
PageByIdDocument,
|
|
247
243
|
PagesDocument,
|
|
248
|
-
|
|
244
|
+
MiniPagesDocument,
|
|
249
245
|
CreatePageDocument,
|
|
250
246
|
UpdatePageDocument,
|
|
251
247
|
UpdatePageWidgetsDocument,
|
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
import { checkboxesToArray } from "../../utils";
|
|
2
2
|
|
|
3
|
+
const fetchDefaultLocaleTags = async (ctx, resource) => {
|
|
4
|
+
if (ctx.locale === ctx.defaultLocale) {
|
|
5
|
+
return { defaultLocaleName: "", defaultLocaleTags: [] };
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const originalPage = await ctx.client.pages.find(
|
|
9
|
+
resource.originalId,
|
|
10
|
+
ctx.locale
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
if (
|
|
14
|
+
Object.keys(originalPage.translations).length === 0 ||
|
|
15
|
+
!originalPage.translations[ctx.defaultLocale]
|
|
16
|
+
) {
|
|
17
|
+
return { defaultLocaleName: "", defaultLocaleTags: [] };
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const defaultLocale = ctx.locales[ctx.defaultLocale];
|
|
21
|
+
const defaultLocalePage = await ctx.client.pages.find(
|
|
22
|
+
originalPage.translations[ctx.defaultLocale].id,
|
|
23
|
+
ctx.defaultLocale
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const defaultLocaleTags = defaultLocalePage?.tags || [];
|
|
27
|
+
|
|
28
|
+
return { defaultLocaleName: defaultLocale.name, defaultLocaleTags };
|
|
29
|
+
};
|
|
30
|
+
|
|
3
31
|
const edit_form = async (ctx) => {
|
|
4
32
|
const { parent_id } = ctx.params;
|
|
5
33
|
|
|
@@ -13,12 +41,19 @@ const edit_form = async (ctx) => {
|
|
|
13
41
|
|
|
14
42
|
resource.tags = resource.tags.map((t) => t.id);
|
|
15
43
|
|
|
44
|
+
const { defaultLocaleName, defaultLocaleTags } = await fetchDefaultLocaleTags(
|
|
45
|
+
ctx,
|
|
46
|
+
resource
|
|
47
|
+
);
|
|
48
|
+
|
|
16
49
|
return {
|
|
17
50
|
assigns: {
|
|
18
51
|
resource,
|
|
19
52
|
tags: tags.list,
|
|
20
53
|
errors: {},
|
|
21
54
|
_translations: [],
|
|
55
|
+
defaultLocaleTags,
|
|
56
|
+
defaultLocaleName,
|
|
22
57
|
},
|
|
23
58
|
};
|
|
24
59
|
};
|
|
@@ -46,6 +81,9 @@ const update = async (ctx) => {
|
|
|
46
81
|
if (errors) {
|
|
47
82
|
const tags = await ctx.client.tags.all(ctx.locale);
|
|
48
83
|
|
|
84
|
+
const { defaultLocaleName, defaultLocaleTags } =
|
|
85
|
+
await fetchDefaultLocaleTags(ctx, resource);
|
|
86
|
+
|
|
49
87
|
return {
|
|
50
88
|
assigns: {
|
|
51
89
|
resource,
|
|
@@ -54,6 +92,8 @@ const update = async (ctx) => {
|
|
|
54
92
|
resource: ctx.client.pageRevisions.formatErrors(errors),
|
|
55
93
|
},
|
|
56
94
|
_translations: [],
|
|
95
|
+
defaultLocaleTags,
|
|
96
|
+
defaultLocaleName,
|
|
57
97
|
},
|
|
58
98
|
};
|
|
59
99
|
}
|
|
@@ -234,8 +234,8 @@ export default class FormBuilder extends HTMLBuilder {
|
|
|
234
234
|
renderedOpts.length
|
|
235
235
|
? renderedOpts.join("")
|
|
236
236
|
: this.tag("div", "No items available.", {
|
|
237
|
-
|
|
238
|
-
|
|
237
|
+
class: "italic opacity-50",
|
|
238
|
+
}),
|
|
239
239
|
|
|
240
240
|
{
|
|
241
241
|
...rest,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import DeletesHandler from "../../../../handlers/articles/DeletesHandler";
|
|
2
1
|
import Articles from "../../../../cloud/Articles";
|
|
2
|
+
import DeletesHandler from "../../../../handlers/articles/DeletesHandler";
|
|
3
3
|
import Factory from "../../../support/factory";
|
|
4
4
|
import { remoteConfig } from "../../../support/handlersHelper";
|
|
5
5
|
|
|
@@ -33,6 +33,7 @@ describe("Article delete", () => {
|
|
|
33
33
|
|
|
34
34
|
expect(result).toEqual({
|
|
35
35
|
assigns: {
|
|
36
|
+
article,
|
|
36
37
|
resource: {
|
|
37
38
|
id: article.id,
|
|
38
39
|
redirect: "",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import URLsHandler from "../../../../handlers/articles/URLsHandler";
|
|
2
1
|
import Articles from "../../../../cloud/Articles";
|
|
2
|
+
import URLsHandler from "../../../../handlers/articles/URLsHandler";
|
|
3
3
|
import Factory from "../../../support/factory";
|
|
4
4
|
|
|
5
5
|
function buildCtx(article) {
|
|
@@ -31,6 +31,7 @@ describe("Article change url", () => {
|
|
|
31
31
|
|
|
32
32
|
expect(result).toEqual({
|
|
33
33
|
assigns: {
|
|
34
|
+
article,
|
|
34
35
|
resource: { slug: article.slug, id: article.id, redirect: null },
|
|
35
36
|
errors: {},
|
|
36
37
|
_translations: [],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import DeletesHandler from "../../../../handlers/events/DeletesHandler";
|
|
2
1
|
import Events from "../../../../cloud/Events";
|
|
2
|
+
import DeletesHandler from "../../../../handlers/events/DeletesHandler";
|
|
3
3
|
import Factory from "../../../support/factory";
|
|
4
4
|
import { remoteConfig } from "../../../support/handlersHelper";
|
|
5
5
|
|
|
@@ -33,6 +33,7 @@ describe("Event delete", () => {
|
|
|
33
33
|
|
|
34
34
|
expect(result).toEqual({
|
|
35
35
|
assigns: {
|
|
36
|
+
event,
|
|
36
37
|
resource: {
|
|
37
38
|
id: event.id,
|
|
38
39
|
redirect: "",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import URLsHandler from "../../../../handlers/events/URLsHandler";
|
|
2
1
|
import Events from "../../../../cloud/Events";
|
|
2
|
+
import URLsHandler from "../../../../handlers/events/URLsHandler";
|
|
3
3
|
import Factory from "../../../support/factory";
|
|
4
4
|
|
|
5
5
|
function buildCtx(event) {
|
|
@@ -31,6 +31,7 @@ describe("Event change url", () => {
|
|
|
31
31
|
|
|
32
32
|
expect(result).toEqual({
|
|
33
33
|
assigns: {
|
|
34
|
+
event,
|
|
34
35
|
resource: { slug: event.slug, id: event.id, redirect: null },
|
|
35
36
|
errors: {},
|
|
36
37
|
_translations: [],
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import TagHandler from "../../../../handlers/page_revisions/TagHandler";
|
|
2
1
|
import PageRevisions from "../../../../cloud/PageRevisions";
|
|
2
|
+
import Pages from "../../../../cloud/Pages";
|
|
3
3
|
import Tags from "../../../../cloud/Tags";
|
|
4
|
+
import TagHandler from "../../../../handlers/page_revisions/TagHandler";
|
|
4
5
|
|
|
5
6
|
import Factory from "../../../support/factory";
|
|
6
7
|
|
|
@@ -9,9 +10,17 @@ function buildCtx(revision) {
|
|
|
9
10
|
client: {
|
|
10
11
|
pageRevisions: new PageRevisions(() => ({}), "token"),
|
|
11
12
|
tags: new Tags(() => ({}), "token"),
|
|
13
|
+
pages: new Pages(() => ({}), "token"),
|
|
12
14
|
},
|
|
13
15
|
params: { parent_id: revision.id },
|
|
14
16
|
locale: "en",
|
|
17
|
+
defaultLocale: "es",
|
|
18
|
+
locales: {
|
|
19
|
+
es: {
|
|
20
|
+
name: "Spanish",
|
|
21
|
+
code: "es",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
15
24
|
};
|
|
16
25
|
}
|
|
17
26
|
|
|
@@ -21,23 +30,47 @@ describe("Page revision tags settings", () => {
|
|
|
21
30
|
Factory.build("tag", { id: 42 }),
|
|
22
31
|
Factory.build("tag", { id: 69 }),
|
|
23
32
|
];
|
|
33
|
+
const spanishTags = [Factory.build("tag", { id: 100 })];
|
|
24
34
|
const revision = Factory.build("page_revision", { tags: [tags[0]] });
|
|
35
|
+
const originalPage = Factory.build("page", {
|
|
36
|
+
id: "original-123",
|
|
37
|
+
translations: {
|
|
38
|
+
en: { id: "translated-123" },
|
|
39
|
+
es: { id: "es-translated-123" },
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
const spanishPage = Factory.build("page", {
|
|
43
|
+
id: "es-translated-123",
|
|
44
|
+
tags: spanishTags,
|
|
45
|
+
});
|
|
46
|
+
|
|
25
47
|
const ctx = buildCtx(revision);
|
|
26
48
|
|
|
27
49
|
const mockFind = jest
|
|
28
50
|
.spyOn(ctx.client.pageRevisions, "find")
|
|
29
51
|
.mockImplementation(() => revision);
|
|
30
52
|
|
|
53
|
+
const mockPageFind = jest
|
|
54
|
+
.spyOn(ctx.client.pages, "find")
|
|
55
|
+
.mockImplementation((id, locale) => {
|
|
56
|
+
if (locale === "es") {
|
|
57
|
+
return spanishPage;
|
|
58
|
+
}
|
|
59
|
+
return originalPage;
|
|
60
|
+
});
|
|
61
|
+
|
|
31
62
|
const mockTags = jest
|
|
32
63
|
.spyOn(ctx.client.tags, "all")
|
|
33
|
-
.mockImplementation(() => ({
|
|
34
|
-
list: tags,
|
|
64
|
+
.mockImplementation((locale) => ({
|
|
65
|
+
list: locale === "es" ? spanishTags : tags,
|
|
35
66
|
}));
|
|
36
67
|
|
|
37
68
|
const result = await TagHandler.edit_form(ctx);
|
|
38
69
|
|
|
39
70
|
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
40
71
|
expect(mockTags).toHaveBeenCalledWith("en");
|
|
72
|
+
expect(mockPageFind).toHaveBeenCalledWith(revision.originalId, "en");
|
|
73
|
+
expect(mockPageFind).toHaveBeenCalledWith("es-translated-123", "es");
|
|
41
74
|
|
|
42
75
|
expect(result).toEqual({
|
|
43
76
|
assigns: {
|
|
@@ -45,6 +78,8 @@ describe("Page revision tags settings", () => {
|
|
|
45
78
|
tags: tags,
|
|
46
79
|
errors: {},
|
|
47
80
|
_translations: [],
|
|
81
|
+
defaultLocaleTags: spanishTags,
|
|
82
|
+
defaultLocaleName: "Spanish",
|
|
48
83
|
},
|
|
49
84
|
});
|
|
50
85
|
});
|