@raketa-cloud/admin 0.0.16 → 0.0.18
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 +14 -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 +10 -7
- package/src/handlers/articles/TranslationsHandler.js +25 -22
- package/src/handlers/articles/URLsHandler.js +11 -7
- 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 +10 -7
- package/src/handlers/events/EventsHandler.js +20 -16
- package/src/handlers/events/TranslationsHandler.js +31 -23
- package/src/handlers/events/URLsHandler.js +10 -7
- 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 +6 -7
- package/src/handlers/pages/PagesHandler.js +21 -16
- package/src/handlers/pages/TranslationsHandler.js +24 -22
- package/src/handlers/pages/URLsHandler.js +7 -8
- 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 +16 -6
- package/src/tests/handlers/articles/DeletesHandler.test/create_form.test.js +10 -3
- package/src/tests/handlers/articles/URLsHandler.test/create.test.js +20 -7
- 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 +16 -6
- package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +10 -3
- 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 +22 -9
- 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 +16 -6
- package/src/tests/handlers/pages/DeletesHandler.test/create_form.test.js +10 -3
- 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 +20 -7
- 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/test/factory.js +3 -3
- package/test/handlersHelper.js +23 -1
- package/src/routeArticles.js +0 -65
- package/src/routeEvents.js +0 -55
- package/src/routePages.js +0 -55
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
<div class="page-wrapper">
|
|
2
2
|
<div class="page-title">
|
|
3
3
|
<div class="flex items-center gap-4">
|
|
4
|
-
<h1 class="heading-1"><%=
|
|
4
|
+
<h1 class="heading-1"><%= resource.title %></h1>
|
|
5
5
|
<div class="flex flex-wrap items-center gap-1">
|
|
6
6
|
<% Object.keys(_context.locales).forEach(key => { %>
|
|
7
7
|
<% const { name, _code, flag} = _context.locales[key] %>
|
|
8
8
|
<% if (key === _context.locale) { %>
|
|
9
9
|
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="size-6 rounded-full border dark:border-neutral-700" />
|
|
10
|
-
<% } else if (
|
|
11
|
-
<a href="<%= `/${key}/events/${
|
|
10
|
+
<% } else if (resource.translations[key]) { %>
|
|
11
|
+
<a href="<%= `/${key}/events/${resource.translations[key].id}` %>">
|
|
12
12
|
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="size-6 rounded-full border dark:border-neutral-700" />
|
|
13
13
|
</a>
|
|
14
14
|
<% } else { %>
|
|
15
|
-
<a href="<%= `/${_context.locale}/events/${
|
|
15
|
+
<a href="<%= `/${_context.locale}/events/${resource.id}/translations/new?target_locale=${key}` %>">
|
|
16
16
|
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="<%= [" transition-all ease-in-out duration-300 size-6 rounded-full border hover:opacity-100 dark:border-neutral-700", key === _context.locale ? "opacity-100" : "opacity-10"].join(" ") %>" />
|
|
17
17
|
</a>
|
|
18
18
|
<% } %>
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
<div class="actions-toolbar">
|
|
24
|
-
<form method="POST" action="<%= `/${_context.locale}/events/${
|
|
24
|
+
<form method="POST" action="<%= `/${_context.locale}/events/${resource.id}/event_revisions` %>" class="inline-block">
|
|
25
25
|
<button type="submit" class="btn-primary">
|
|
26
26
|
Start revision
|
|
27
27
|
</button>
|
|
28
28
|
</form>
|
|
29
29
|
|
|
30
|
-
<a href="<%= `/${_context.locale}/events/${
|
|
30
|
+
<a href="<%= `/${_context.locale}/events/${resource.id}/urls/new` %>" class="btn-text has-icon">
|
|
31
31
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
32
32
|
<path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" />
|
|
33
33
|
</svg>
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
Change URL
|
|
36
36
|
</a>
|
|
37
37
|
|
|
38
|
-
<form action="<%= `/${_context.locale}/events/${
|
|
38
|
+
<form action="<%= `/${_context.locale}/events/${resource.id}/clones` %>" method="post" class="inline-block">
|
|
39
39
|
<button type="submit" class="btn-text has-icon">
|
|
40
40
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
41
41
|
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75" />
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
</button>
|
|
46
46
|
</form>
|
|
47
47
|
|
|
48
|
-
<a href="<%= `/${_context.locale}/events/${
|
|
48
|
+
<a href="<%= `/${_context.locale}/events/${resource.id}/deletes/new` %>" class="btn-danger has-icon">
|
|
49
49
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
50
50
|
<path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" />
|
|
51
51
|
</svg>
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
<td>
|
|
252
252
|
<div class="actions-toolbar justify-end">
|
|
253
253
|
<% if (maxVersion !== change.version) { %>
|
|
254
|
-
<form method="POST" action="<%= `/${_context.locale}/events/${
|
|
254
|
+
<form method="POST" action="<%= `/${_context.locale}/events/${resource.id}/event_changes/reverts` %>" class="inline-block">
|
|
255
255
|
<input type="hidden" name="version" value=<%= change.version %>>
|
|
256
256
|
<button type="submit" class="btn-text has-icon">
|
|
257
257
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<% form_for({ translation }, errors, (f) => { %>
|
|
2
|
-
<form action="<%= `/${_context.locale}/events/${
|
|
2
|
+
<form action="<%= `/${_context.locale}/events/${resource.id}/translations` %>" method="post" class="form">
|
|
3
3
|
<input type="hidden" name="target_locale" value="<%= targetLocale %>" />
|
|
4
4
|
|
|
5
5
|
<%- f.field('translation.title', { required: true }) %>
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<div class="btn-toolbar">
|
|
33
33
|
<%- f.submit('Save record', { class: 'btn-primary' }) %>
|
|
34
34
|
|
|
35
|
-
<a href="<%= `/${_context.locale}/events/${
|
|
35
|
+
<a href="<%= `/${_context.locale}/events/${resource.id}` %>" class="btn-secondary">Cancel</a>
|
|
36
36
|
</div>
|
|
37
37
|
</div>
|
|
38
38
|
</form>
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
|
|
72
72
|
onVisibilityChange({
|
|
73
73
|
target: {
|
|
74
|
-
value: '<%=
|
|
74
|
+
value: '<%= resource.visibility %>'
|
|
75
75
|
}
|
|
76
76
|
})
|
|
77
77
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
<div class="
|
|
2
|
-
<div class="
|
|
3
|
-
<
|
|
4
|
-
<h1 class="heading-1">Create event translation</h1>
|
|
5
|
-
</div>
|
|
1
|
+
<div class="page-wrapper">
|
|
2
|
+
<div class="page-title">
|
|
3
|
+
<h1 class="heading-1">Create event translation</h1>
|
|
6
4
|
</div>
|
|
7
|
-
</div>
|
|
8
5
|
|
|
9
|
-
<div class="grid gap-4 md:grid-cols-3">
|
|
10
|
-
|
|
6
|
+
<div class="grid gap-4 md:grid-cols-3">
|
|
7
|
+
<%- include('_form.ejs') %>
|
|
8
|
+
</div>
|
|
11
9
|
</div>
|
|
10
|
+
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
<% form_for({
|
|
2
|
-
<form action="<%=
|
|
3
|
-
<%- f.field('
|
|
4
|
-
<%- f.field('
|
|
5
|
-
<%- f.field('
|
|
1
|
+
<% form_for({ resource }, errors, (f) => { %>
|
|
2
|
+
<form action="<%= resource?.id ? `/${_context.locale}/pages/${resource.id}` : `/${_context.locale}/pages` %>" method="post" class="form">
|
|
3
|
+
<%- f.field('resource.title', { required: true }) %>
|
|
4
|
+
<%- f.field('resource.slug', { label: "URL", required: true }) %>
|
|
5
|
+
<%- f.field('resource.visibility', { as: 'select', required: true, options: visibilityOptions }) %>
|
|
6
6
|
|
|
7
|
-
<%- f.field('
|
|
8
|
-
<%- f.field('
|
|
7
|
+
<%- f.field('resource.username', { required: true }) %>
|
|
8
|
+
<%- f.field('resource.password', { required: true }) %>
|
|
9
9
|
|
|
10
|
-
<%- f.field('
|
|
10
|
+
<%- f.field('resource.layout', { as: 'select', required: true, options: [
|
|
11
11
|
["default", "Default"],
|
|
12
12
|
["landing", "Landing page"],
|
|
13
13
|
["headless", "Headless"],
|
|
14
14
|
] }) %>
|
|
15
15
|
|
|
16
|
-
<%- f.field('
|
|
17
|
-
<%- f.field('
|
|
16
|
+
<%- f.field('resource.meta_title', { required: true }) %>
|
|
17
|
+
<%- f.field('resource.meta_description', { as: "textarea", required: true }) %>
|
|
18
18
|
|
|
19
19
|
<raketa-image-picker
|
|
20
|
-
name="
|
|
21
|
-
value="<%= JSON.stringify(
|
|
20
|
+
name="resource[meta_image]"
|
|
21
|
+
value="<%= JSON.stringify(resource.meta_image) %>"
|
|
22
22
|
></raketa-image-picker>
|
|
23
23
|
|
|
24
|
-
<%- f.field('
|
|
24
|
+
<%- f.field('resource.tags', { as: 'checkbox_group', required: true, options: tags.map(tag => [tag.id, tag.name]) }) %>
|
|
25
25
|
|
|
26
26
|
<div class="form-actions">
|
|
27
27
|
<div class="btn-toolbar">
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
<a href="<%= `/${_context.locale}/pages` %>" class="btn-secondary">Back to list</a>
|
|
31
31
|
</div>
|
|
32
32
|
|
|
33
|
-
<% if (
|
|
34
|
-
<button hx-delete="<%= `/${_context.locale}/pages/${
|
|
33
|
+
<% if (resource?.id) {%>
|
|
34
|
+
<button hx-delete="<%= `/${_context.locale}/pages/${resource.id}` %>" hx-confirm="Are you sure?" class="btn-danger has-icon">
|
|
35
35
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
36
36
|
<path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" />
|
|
37
37
|
</svg>
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
|
|
77
77
|
onVisibilityChange({
|
|
78
78
|
target: {
|
|
79
|
-
value: '<%=
|
|
79
|
+
value: '<%= resource.visibility %>'
|
|
80
80
|
}
|
|
81
81
|
})
|
|
82
82
|
|
package/src/views/pages/show.ejs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
<div class="page-wrapper">
|
|
2
2
|
<div class="page-title">
|
|
3
3
|
<div class="flex items-center gap-4">
|
|
4
|
-
<h1 class="heading-1"><%=
|
|
4
|
+
<h1 class="heading-1"><%= resource.title %></h1>
|
|
5
5
|
<div class="flex flex-wrap items-center gap-1">
|
|
6
6
|
<% Object.keys(_context.locales).forEach(key => { %>
|
|
7
7
|
<% const { name, _code, flag} = _context.locales[key] %>
|
|
8
8
|
<% if (key === _context.locale) { %>
|
|
9
9
|
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="size-6 rounded-full border dark:border-neutral-700" />
|
|
10
|
-
<% } else if (
|
|
11
|
-
<a href="<%= `/${key}/pages/${
|
|
10
|
+
<% } else if (resource.translations[key]) { %>
|
|
11
|
+
<a href="<%= `/${key}/pages/${resource.translations[key].id}` %>">
|
|
12
12
|
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="size-6 rounded-full border dark:border-neutral-700" />
|
|
13
13
|
</a>
|
|
14
14
|
<% } else { %>
|
|
15
|
-
<a href="<%= `/${_context.locale}/pages/${
|
|
15
|
+
<a href="<%= `/${_context.locale}/pages/${resource.id}/translations/new?target_locale=${key}` %>">
|
|
16
16
|
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="<%= [" transition-all ease-in-out duration-300 size-6 rounded-full border hover:opacity-100 dark:border-neutral-700", key === _context.locale ? "opacity-100" : "opacity-10"].join(" ") %>" />
|
|
17
17
|
</a>
|
|
18
18
|
<% } %>
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
<div class="actions-toolbar">
|
|
24
|
-
<form method="POST" action="<%= `/${_context.locale}/pages/${
|
|
24
|
+
<form method="POST" action="<%= `/${_context.locale}/pages/${resource.id}/page_revisions` %>" class="inline-block">
|
|
25
25
|
<button type="submit" class="btn-primary">
|
|
26
26
|
Start revision
|
|
27
27
|
</button>
|
|
28
28
|
</form>
|
|
29
29
|
|
|
30
|
-
<a href="<%= `/${_context.locale}/pages/${
|
|
30
|
+
<a href="<%= `/${_context.locale}/pages/${resource.id}/urls/new` %>" class="btn-text has-icon">
|
|
31
31
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
32
32
|
<path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" />
|
|
33
33
|
</svg>
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
Change URL
|
|
36
36
|
</a>
|
|
37
37
|
|
|
38
|
-
<form action="<%= `/${_context.locale}/pages/${
|
|
38
|
+
<form action="<%= `/${_context.locale}/pages/${resource.id}/clones` %>" method="post" class="inline-block">
|
|
39
39
|
<button type="submit" class="btn-text has-icon">
|
|
40
40
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
41
41
|
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75" />
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
</button>
|
|
46
46
|
</form>
|
|
47
47
|
|
|
48
|
-
<a href="<%= `/${_context.locale}/pages/${
|
|
48
|
+
<a href="<%= `/${_context.locale}/pages/${resource.id}/deletes/new` %>" class="btn-danger has-icon">
|
|
49
49
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
50
50
|
<path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" />
|
|
51
51
|
</svg>
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
<td>
|
|
252
252
|
<div class="actions-toolbar justify-end">
|
|
253
253
|
<% if (maxVersion !== change.version) { %>
|
|
254
|
-
<form method="POST" action="<%= `/${_context.locale}/pages/${
|
|
254
|
+
<form method="POST" action="<%= `/${_context.locale}/pages/${resource.id}/page_changes/reverts` %>" class="inline-block">
|
|
255
255
|
<input type="hidden" name="version" value=<%= change.version %>>
|
|
256
256
|
<button type="submit" class="btn-text has-icon">
|
|
257
257
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<% form_for({ translation }, errors, (f) => { %>
|
|
2
|
-
<form action="<%= `/${_context.locale}/pages/${
|
|
2
|
+
<form action="<%= `/${_context.locale}/pages/${resource.id}/translations` %>" method="post" class="form">
|
|
3
3
|
<input type="hidden" name="target_locale" value="<%= targetLocale %>" />
|
|
4
4
|
|
|
5
5
|
<%- f.field('translation.title', { required: true }) %>
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
<div class="btn-toolbar">
|
|
30
30
|
<%- f.submit('Save record', { class: 'btn-primary' }) %>
|
|
31
31
|
|
|
32
|
-
<a href="<%= `/${_context.locale}/pages/${
|
|
32
|
+
<a href="<%= `/${_context.locale}/pages/${resource.id}` %>" class="btn-secondary">Cancel</a>
|
|
33
33
|
</div>
|
|
34
34
|
</div>
|
|
35
35
|
</form>
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
|
|
69
69
|
onVisibilityChange({
|
|
70
70
|
target: {
|
|
71
|
-
value: '<%=
|
|
71
|
+
value: '<%= resource.visibility %>'
|
|
72
72
|
}
|
|
73
73
|
})
|
|
74
74
|
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
<div class="
|
|
2
|
-
<div class="
|
|
3
|
-
<
|
|
4
|
-
<h1 class="heading-1">Create page translation</h1>
|
|
5
|
-
</div>
|
|
1
|
+
<div class="page-wrapper">
|
|
2
|
+
<div class="page-title">
|
|
3
|
+
<h1 class="heading-1">Create page translation</h1>
|
|
6
4
|
</div>
|
|
7
|
-
</div>
|
|
8
5
|
|
|
9
|
-
<div class="grid gap-4 md:grid-cols-3">
|
|
10
|
-
|
|
11
|
-
</div>
|
|
6
|
+
<div class="grid gap-4 md:grid-cols-3">
|
|
7
|
+
<%- include('_form.ejs') %>
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
package/test/factory.js
CHANGED
|
@@ -29,7 +29,7 @@ const PAGE = {
|
|
|
29
29
|
originalId: null,
|
|
30
30
|
insertedAt: "2024-08-30T19:05:00Z",
|
|
31
31
|
tags: [],
|
|
32
|
-
pageType: {},
|
|
32
|
+
pageType: { slug: "page" },
|
|
33
33
|
categories: [],
|
|
34
34
|
};
|
|
35
35
|
|
|
@@ -50,7 +50,7 @@ const ARTICLE = {
|
|
|
50
50
|
originalId: null,
|
|
51
51
|
insertedAt: "2024-08-30T19:05:00Z",
|
|
52
52
|
tags: [],
|
|
53
|
-
articleType: {},
|
|
53
|
+
articleType: { slug: "article" },
|
|
54
54
|
categories: [],
|
|
55
55
|
};
|
|
56
56
|
|
|
@@ -73,7 +73,7 @@ const EVENT = {
|
|
|
73
73
|
originalId: null,
|
|
74
74
|
insertedAt: "2024-08-30T19:05:00Z",
|
|
75
75
|
tags: [],
|
|
76
|
-
|
|
76
|
+
eventType: { slug: "event" },
|
|
77
77
|
categories: [],
|
|
78
78
|
};
|
|
79
79
|
|
package/test/handlersHelper.js
CHANGED
|
@@ -6,4 +6,26 @@ function testConfig() {
|
|
|
6
6
|
};
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
function remoteConfig() {
|
|
10
|
+
return {
|
|
11
|
+
resourcePath: (resource, resourceType, locale) => {
|
|
12
|
+
const PREFIX_MAP = {
|
|
13
|
+
page: "/",
|
|
14
|
+
article: "/blog",
|
|
15
|
+
event: "/events",
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const prefix = PREFIX_MAP[resourceType];
|
|
19
|
+
|
|
20
|
+
if (!prefix) {
|
|
21
|
+
throw new Error(`Unknown resource type: ${resourceType}`);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return [`/${locale}`, prefix, "/", resource.slug]
|
|
25
|
+
.join("")
|
|
26
|
+
.replace("//", "/");
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { testConfig, remoteConfig };
|
package/src/routeArticles.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import routeCollection from "./routeCollection";
|
|
2
|
-
import routeNestedCollection from "./routeNestedCollection";
|
|
3
|
-
import routeNestedMember from "./routeNestedMember";
|
|
4
|
-
import TranslationsHandler from "./handlers/articles/TranslationsHandler";
|
|
5
|
-
import ArticleRevisionsHandler from "./handlers/article_revisions/ArticleRevisionsHandler";
|
|
6
|
-
import GeneralHandler from "./handlers/article_revisions/GeneralHandler";
|
|
7
|
-
import VisualHandler from "./handlers/article_revisions/VisualHandler";
|
|
8
|
-
import CodeHandler from "./handlers/article_revisions/CodeHandler";
|
|
9
|
-
import MetaHandler from "./handlers/article_revisions/MetaHandler";
|
|
10
|
-
import TagHandler from "./handlers/article_revisions/TagHandler";
|
|
11
|
-
import LocksHandler from "./handlers/article_revisions/LocksHandler";
|
|
12
|
-
import UnlocksHandler from "./handlers/article_revisions/UnlocksHandler";
|
|
13
|
-
import ClonesHandler from "./handlers/articles/ClonesHandler";
|
|
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";
|
|
18
|
-
import WidgetHandler from "./handlers/article_revisions/WidgetHandler";
|
|
19
|
-
import ArticlesHandler from "./handlers/articles/ArticlesHandler";
|
|
20
|
-
|
|
21
|
-
function routeArticles(adapter) {
|
|
22
|
-
routeCollection(adapter, "articles", ArticlesHandler);
|
|
23
|
-
routeNestedCollection(
|
|
24
|
-
adapter,
|
|
25
|
-
"articles",
|
|
26
|
-
"translations",
|
|
27
|
-
TranslationsHandler
|
|
28
|
-
);
|
|
29
|
-
routeNestedCollection(
|
|
30
|
-
adapter,
|
|
31
|
-
"articles",
|
|
32
|
-
"article_revisions",
|
|
33
|
-
ArticleRevisionsHandler
|
|
34
|
-
);
|
|
35
|
-
routeNestedMember(adapter, "article_revisions", "general", GeneralHandler);
|
|
36
|
-
routeNestedMember(adapter, "article_revisions", "visuals", VisualHandler);
|
|
37
|
-
routeNestedMember(adapter, "article_revisions", "codes", CodeHandler);
|
|
38
|
-
routeNestedMember(adapter, "article_revisions", "meta", MetaHandler);
|
|
39
|
-
routeNestedMember(adapter, "article_revisions", "tags", TagHandler);
|
|
40
|
-
routeNestedCollection(adapter, "article_revisions", "locks", LocksHandler);
|
|
41
|
-
routeNestedCollection(
|
|
42
|
-
adapter,
|
|
43
|
-
"article_revisions",
|
|
44
|
-
"unlocks",
|
|
45
|
-
UnlocksHandler
|
|
46
|
-
);
|
|
47
|
-
routeNestedCollection(adapter, "articles", "clones", ClonesHandler);
|
|
48
|
-
routeNestedCollection(adapter, "articles", "urls", URLsHandler);
|
|
49
|
-
routeNestedCollection(adapter, "articles", "deletes", DeletesHandler);
|
|
50
|
-
routeNestedCollection(
|
|
51
|
-
adapter,
|
|
52
|
-
"articles",
|
|
53
|
-
"article_changes/reverts",
|
|
54
|
-
RevertsHandler
|
|
55
|
-
);
|
|
56
|
-
routeNestedCollection(
|
|
57
|
-
adapter,
|
|
58
|
-
"article_revisions",
|
|
59
|
-
"publishes",
|
|
60
|
-
PublishesHandler
|
|
61
|
-
);
|
|
62
|
-
routeNestedMember(adapter, "api/article_revisions", "widgets", WidgetHandler);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export default routeArticles;
|
package/src/routeEvents.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import routeCollection from "./routeCollection";
|
|
2
|
-
import routeNestedCollection from "./routeNestedCollection";
|
|
3
|
-
import routeNestedMember from "./routeNestedMember";
|
|
4
|
-
import TranslationsHandler from "./handlers/events/TranslationsHandler";
|
|
5
|
-
import EventRevisionsHandler from "./handlers/event_revisions/EventRevisionsHandler";
|
|
6
|
-
import GeneralHandler from "./handlers/event_revisions/GeneralHandler";
|
|
7
|
-
import VisualHandler from "./handlers/event_revisions/VisualHandler";
|
|
8
|
-
import CodeHandler from "./handlers/event_revisions/CodeHandler";
|
|
9
|
-
import MetaHandler from "./handlers/event_revisions/MetaHandler";
|
|
10
|
-
import TagHandler from "./handlers/event_revisions/TagHandler";
|
|
11
|
-
import LocksHandler from "./handlers/event_revisions/LocksHandler";
|
|
12
|
-
import UnlocksHandler from "./handlers/event_revisions/UnlocksHandler";
|
|
13
|
-
import ClonesHandler from "./handlers/events/ClonesHandler";
|
|
14
|
-
import URLsHandler from "./handlers/events/URLsHandler";
|
|
15
|
-
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
|
-
import EventsHandler from "./handlers/events/EventsHandler";
|
|
20
|
-
|
|
21
|
-
function routeEvents(adapter) {
|
|
22
|
-
routeCollection(adapter, "events", EventsHandler);
|
|
23
|
-
routeNestedCollection(adapter, "events", "translations", TranslationsHandler);
|
|
24
|
-
routeNestedCollection(
|
|
25
|
-
adapter,
|
|
26
|
-
"events",
|
|
27
|
-
"event_revisions",
|
|
28
|
-
EventRevisionsHandler
|
|
29
|
-
);
|
|
30
|
-
routeNestedMember(adapter, "event_revisions", "general", GeneralHandler);
|
|
31
|
-
routeNestedMember(adapter, "event_revisions", "visuals", VisualHandler);
|
|
32
|
-
routeNestedMember(adapter, "event_revisions", "codes", CodeHandler);
|
|
33
|
-
routeNestedMember(adapter, "event_revisions", "meta", MetaHandler);
|
|
34
|
-
routeNestedMember(adapter, "event_revisions", "tags", TagHandler);
|
|
35
|
-
routeNestedCollection(adapter, "event_revisions", "locks", LocksHandler);
|
|
36
|
-
routeNestedCollection(adapter, "event_revisions", "unlocks", UnlocksHandler);
|
|
37
|
-
routeNestedCollection(adapter, "events", "clones", ClonesHandler);
|
|
38
|
-
routeNestedCollection(adapter, "events", "urls", URLsHandler);
|
|
39
|
-
routeNestedCollection(adapter, "events", "deletes", DeletesHandler);
|
|
40
|
-
routeNestedCollection(
|
|
41
|
-
adapter,
|
|
42
|
-
"events",
|
|
43
|
-
"event_changes/reverts",
|
|
44
|
-
RevertsHandler
|
|
45
|
-
);
|
|
46
|
-
routeNestedCollection(
|
|
47
|
-
adapter,
|
|
48
|
-
"event_revisions",
|
|
49
|
-
"publishes",
|
|
50
|
-
PublishesHandler
|
|
51
|
-
);
|
|
52
|
-
routeNestedMember(adapter, "api/event_revisions", "widgets", WidgetHandler);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export default routeEvents;
|
package/src/routePages.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import routeCollection from "./routeCollection";
|
|
2
|
-
import routeNestedCollection from "./routeNestedCollection";
|
|
3
|
-
import routeNestedMember from "./routeNestedMember";
|
|
4
|
-
import TranslationsHandler from "./handlers/pages/TranslationsHandler";
|
|
5
|
-
import PageRevisionsHandler from "./handlers/page_revisions/PageRevisionsHandler";
|
|
6
|
-
import GeneralHandler from "./handlers/page_revisions/GeneralHandler";
|
|
7
|
-
import VisualHandler from "./handlers/page_revisions/VisualHandler";
|
|
8
|
-
import CodeHandler from "./handlers/page_revisions/CodeHandler";
|
|
9
|
-
import MetaHandler from "./handlers/page_revisions/MetaHandler";
|
|
10
|
-
import TagHandler from "./handlers/page_revisions/TagHandler";
|
|
11
|
-
import LocksHandler from "./handlers/page_revisions/LocksHandler";
|
|
12
|
-
import UnlocksHandler from "./handlers/page_revisions/UnlocksHandler";
|
|
13
|
-
import ClonesHandler from "./handlers/pages/ClonesHandler";
|
|
14
|
-
import URLsHandler from "./handlers/pages/URLsHandler";
|
|
15
|
-
import DeletesHandler from "./handlers/pages/DeletesHandler";
|
|
16
|
-
import RevertsHandler from "./handlers/page_revisions/RevertsHandler";
|
|
17
|
-
import PublishesHandler from "./handlers/page_revisions/PublishesHandler";
|
|
18
|
-
import WidgetHandler from "./handlers/page_revisions/WidgetHandler";
|
|
19
|
-
import PagesHandler from "./handlers/pages/PagesHandler";
|
|
20
|
-
|
|
21
|
-
function routePages(adapter) {
|
|
22
|
-
routeCollection(adapter, "pages", PagesHandler);
|
|
23
|
-
routeNestedCollection(adapter, "pages", "translations", TranslationsHandler);
|
|
24
|
-
routeNestedCollection(
|
|
25
|
-
adapter,
|
|
26
|
-
"pages",
|
|
27
|
-
"page_revisions",
|
|
28
|
-
PageRevisionsHandler
|
|
29
|
-
);
|
|
30
|
-
routeNestedMember(adapter, "page_revisions", "general", GeneralHandler);
|
|
31
|
-
routeNestedMember(adapter, "page_revisions", "visuals", VisualHandler);
|
|
32
|
-
routeNestedMember(adapter, "page_revisions", "codes", CodeHandler);
|
|
33
|
-
routeNestedMember(adapter, "page_revisions", "meta", MetaHandler);
|
|
34
|
-
routeNestedMember(adapter, "page_revisions", "tags", TagHandler);
|
|
35
|
-
routeNestedCollection(adapter, "page_revisions", "locks", LocksHandler);
|
|
36
|
-
routeNestedCollection(adapter, "page_revisions", "unlocks", UnlocksHandler);
|
|
37
|
-
routeNestedCollection(adapter, "pages", "clones", ClonesHandler);
|
|
38
|
-
routeNestedCollection(adapter, "pages", "urls", URLsHandler);
|
|
39
|
-
routeNestedCollection(adapter, "pages", "deletes", DeletesHandler);
|
|
40
|
-
routeNestedCollection(
|
|
41
|
-
adapter,
|
|
42
|
-
"pages",
|
|
43
|
-
"page_changes/reverts",
|
|
44
|
-
RevertsHandler
|
|
45
|
-
);
|
|
46
|
-
routeNestedCollection(
|
|
47
|
-
adapter,
|
|
48
|
-
"page_revisions",
|
|
49
|
-
"publishes",
|
|
50
|
-
PublishesHandler
|
|
51
|
-
);
|
|
52
|
-
routeNestedMember(adapter, "api/page_revisions", "widgets", WidgetHandler);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export default routePages;
|