@raketa-cloud/admin 1.8.7 → 1.8.9
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/dist/application.css +0 -4
- package/package.json +1 -1
- package/src/HonoAdapter.js +34 -33
- package/src/index.js +0 -3
- package/src/routeCategoriesModule.js +1 -1
- package/src/routeCollection.js +15 -8
- package/src/routeNestedCollection.js +1 -1
- package/src/routeNestedMember.js +1 -1
- package/src/routeResource.js +19 -21
- package/src/routeStandard.js +6 -6
- package/src/tests/HonoAdapter.coverage.test.js +15 -25
- package/src/tests/routeCategoriesModule.test.js +2 -2
- package/src/tests/routeResource.test.js +12 -37
- package/src/tests/routeStandard.test.js +13 -13
- package/src/views/_shared/_date_fields_input.ejs +13 -0
- package/src/views/{page_revisions → resource_revisions}/general/_form.ejs +1 -0
- package/src/views/{pages → resources}/_form.ejs +1 -0
- package/src/views/{pages → resources}/history/index.ejs +1 -1
- package/src/views/{articles → resources}/index.ejs +6 -0
- package/src/views/{pages → resources}/show.ejs +7 -7
- package/src/views/{articles → resources}/translations/create_form.ejs +2 -2
- package/src/routeArticlesModule.js +0 -15
- package/src/routeEventsModule.js +0 -15
- package/src/routePagesModule.js +0 -15
- package/src/tests/routeArticlesModule.test.js +0 -43
- package/src/tests/routeEventsModule.test.js +0 -43
- package/src/tests/routePagesModule.test.js +0 -43
- package/src/views/article_revisions/_nav.ejs +0 -53
- package/src/views/article_revisions/general/_form.ejs +0 -18
- package/src/views/article_revisions/tags/edit_form.ejs +0 -16
- package/src/views/articles/_form.ejs +0 -45
- package/src/views/articles/_shared/history_table.ejs +0 -74
- package/src/views/articles/deletes/create_form.ejs +0 -68
- package/src/views/articles/history/index.ejs +0 -80
- package/src/views/articles/show.ejs +0 -222
- package/src/views/articles/urls/create_form.ejs +0 -36
- package/src/views/event_revisions/codes/_form.ejs +0 -14
- package/src/views/event_revisions/codes/edit_form.ejs +0 -16
- package/src/views/event_revisions/general/_form.ejs +0 -20
- package/src/views/event_revisions/general/edit_form.ejs +0 -16
- package/src/views/event_revisions/locks/_form.ejs +0 -11
- package/src/views/event_revisions/locks/create_form.ejs +0 -27
- package/src/views/event_revisions/meta/_form.ejs +0 -16
- package/src/views/event_revisions/meta/edit_form.ejs +0 -16
- package/src/views/event_revisions/publishes/_form.ejs +0 -77
- package/src/views/event_revisions/publishes/create_form.ejs +0 -9
- package/src/views/event_revisions/tags/_form.ejs +0 -13
- package/src/views/event_revisions/tags/edit_form.ejs +0 -16
- package/src/views/event_revisions/visuals/_form.ejs +0 -13
- package/src/views/event_revisions/visuals/edit_form.ejs +0 -16
- package/src/views/events/_form.ejs +0 -47
- package/src/views/events/_shared/_addons.ejs +0 -0
- package/src/views/events/_shared/_export_button.ejs +0 -9
- package/src/views/events/_shared/_history_toolbar.ejs +0 -24
- package/src/views/events/_shared/_revision_operator.ejs +0 -8
- package/src/views/events/_shared/_revision_toolbar.ejs +0 -68
- package/src/views/events/_shared/_title.ejs +0 -14
- package/src/views/events/_shared/_toolbar.ejs +0 -45
- package/src/views/events/_shared/history_table.ejs +0 -74
- package/src/views/events/create_form.ejs +0 -9
- package/src/views/events/deletes/create_form.ejs +0 -68
- package/src/views/events/history/index.ejs +0 -80
- package/src/views/events/index.ejs +0 -190
- package/src/views/events/show.ejs +0 -222
- package/src/views/events/translations/_translation_toolbar.ejs +0 -18
- package/src/views/events/translations/create_form.ejs +0 -75
- package/src/views/events/translations/index.ejs +0 -39
- package/src/views/events/urls/create_form.ejs +0 -36
- package/src/views/page_revisions/_nav.ejs +0 -53
- package/src/views/page_revisions/codes/_form.ejs +0 -14
- package/src/views/page_revisions/codes/edit_form.ejs +0 -16
- package/src/views/page_revisions/general/edit_form.ejs +0 -16
- package/src/views/page_revisions/locks/_form.ejs +0 -11
- package/src/views/page_revisions/locks/create_form.ejs +0 -27
- package/src/views/page_revisions/meta/_form.ejs +0 -16
- package/src/views/page_revisions/meta/edit_form.ejs +0 -16
- package/src/views/page_revisions/publishes/_form.ejs +0 -76
- package/src/views/page_revisions/publishes/create_form.ejs +0 -9
- package/src/views/page_revisions/tags/_form.ejs +0 -13
- package/src/views/page_revisions/visuals/_form.ejs +0 -13
- package/src/views/page_revisions/visuals/edit_form.ejs +0 -16
- package/src/views/pages/_shared/_addons.ejs +0 -0
- package/src/views/pages/_shared/_export_button.ejs +0 -9
- package/src/views/pages/_shared/_history_toolbar.ejs +0 -24
- package/src/views/pages/_shared/_revision_operator.ejs +0 -8
- package/src/views/pages/_shared/_revision_toolbar.ejs +0 -68
- package/src/views/pages/_shared/_title.ejs +0 -14
- package/src/views/pages/_shared/_toolbar.ejs +0 -45
- package/src/views/pages/create_form.ejs +0 -9
- package/src/views/pages/index.ejs +0 -185
- package/src/views/pages/translations/_translation_toolbar.ejs +0 -18
- package/src/views/pages/translations/create_form.ejs +0 -75
- package/src/views/pages/translations/index.ejs +0 -39
- /package/src/views/{event_revisions → resource_revisions}/_nav.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/codes/_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/codes/edit_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/general/edit_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/locks/_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/locks/create_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/meta/_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/meta/edit_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/publishes/_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/publishes/create_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/tags/_form.ejs +0 -0
- /package/src/views/{page_revisions → resource_revisions}/tags/edit_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/visuals/_form.ejs +0 -0
- /package/src/views/{article_revisions → resource_revisions}/visuals/edit_form.ejs +0 -0
- /package/src/views/{articles → resources}/_shared/_addons.ejs +0 -0
- /package/src/views/{articles → resources}/_shared/_export_button.ejs +0 -0
- /package/src/views/{articles → resources}/_shared/_history_toolbar.ejs +0 -0
- /package/src/views/{articles → resources}/_shared/_revision_operator.ejs +0 -0
- /package/src/views/{articles → resources}/_shared/_revision_toolbar.ejs +0 -0
- /package/src/views/{articles → resources}/_shared/_title.ejs +0 -0
- /package/src/views/{articles → resources}/_shared/_toolbar.ejs +0 -0
- /package/src/views/{pages → resources}/_shared/history_table.ejs +0 -0
- /package/src/views/{articles → resources}/create_form.ejs +0 -0
- /package/src/views/{pages → resources}/deletes/create_form.ejs +0 -0
- /package/src/views/{articles → resources}/translations/_translation_toolbar.ejs +0 -0
- /package/src/views/{articles → resources}/translations/index.ejs +0 -0
- /package/src/views/{pages → resources}/urls/create_form.ejs +0 -0
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
<div class="page-wrapper">
|
|
2
|
-
<div class="page-title">
|
|
3
|
-
<h1 class="heading-1"><%= Inflector.humanize(Inflector.capitalize(_context.resourceConfig.resourceTypePlural)) %></h1>
|
|
4
|
-
|
|
5
|
-
<div class="actions-toolbar">
|
|
6
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/new` %>" class="btn-primary">
|
|
7
|
-
Create new
|
|
8
|
-
</a>
|
|
9
|
-
|
|
10
|
-
<button type="button" data-toggle-sidebar="1" class="p-2.5 rounded hover:bg-neutral-200 transition-all duration-300 ease-in-out dark:hover:bg-neutral-700">
|
|
11
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
12
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
|
|
13
|
-
</svg>
|
|
14
|
-
</button>
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<table class="data-grid">
|
|
19
|
-
<thead>
|
|
20
|
-
<tr>
|
|
21
|
-
<th><%- sort_button("Title", "title", _context) %></th>
|
|
22
|
-
<th>Visibility</th>
|
|
23
|
-
<th><%- sort_button(`${Inflector.capitalize(_context.resourceConfig.resourceType)} post date`, "publish_at", _context) %></th>
|
|
24
|
-
<th><%- sort_button("Last change", "updated_at", _context) %></th>
|
|
25
|
-
<th>Translations</th>
|
|
26
|
-
</tr>
|
|
27
|
-
</thead>
|
|
28
|
-
|
|
29
|
-
<tbody>
|
|
30
|
-
<% items.list.forEach((item, idx)=> { %>
|
|
31
|
-
<tr>
|
|
32
|
-
<td class="w-1/2">
|
|
33
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${item.id}` %>" class="btn-text mr-1">
|
|
34
|
-
<%= item.title %>
|
|
35
|
-
</a>
|
|
36
|
-
<% if (item.revisionsCount > 0) { %>
|
|
37
|
-
<span class="bg-orange-100 chip text-orange-700 dark:bg-orange-900/50 dark:text-orange-300"><%= item.revisionsCount !== 1 ? `${item.revisionsCount} open revisions` : 'Open revision' %></span>
|
|
38
|
-
<% } %>
|
|
39
|
-
|
|
40
|
-
<% if (item.visibility !== "private") { %>
|
|
41
|
-
<div class="mt-1">
|
|
42
|
-
<a href="<%= _context.remoteConfig.resourceUrl(item, _context.resourceConfig.resourceType, _context.locale) %>" class="body-3 text-raketa-foreground/50" target="_blank">
|
|
43
|
-
<%= _context.remoteConfig.resourcePath(item, _context.resourceConfig.resourceType, _context.locale) %>
|
|
44
|
-
</a>
|
|
45
|
-
</div>
|
|
46
|
-
<% } %>
|
|
47
|
-
</td>
|
|
48
|
-
|
|
49
|
-
<td>
|
|
50
|
-
<div class="flex items-center gap-1 whitespace-nowrap">
|
|
51
|
-
<span class="text-raketa-foreground/30" title="<%= visibilityOptions.find(opt => opt[0] === item.visibility)[1] %>">
|
|
52
|
-
<% if (item.visibility === 'public') { %>
|
|
53
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
54
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M12 21a9.004 9.004 0 0 0 8.716-6.747M12 21a9.004 9.004 0 0 1-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 0 1 7.843 4.582M12 3a8.997 8.997 0 0 0-7.843 4.582m15.686 0A11.953 11.953 0 0 1 12 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0 1 21 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0 1 12 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 0 1 3 12c0-1.605.42-3.113 1.157-4.418" />
|
|
55
|
-
</svg>
|
|
56
|
-
|
|
57
|
-
<% } %>
|
|
58
|
-
<% if (item.visibility === 'private') { %>
|
|
59
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" class="size-4">
|
|
60
|
-
<path d="M8.5 4.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM10.9 12.006c.11.542-.348.994-.9.994H2c-.553 0-1.01-.452-.902-.994a5.002 5.002 0 0 1 9.803 0ZM14.002 12h-1.59a2.556 2.556 0 0 0-.04-.29 6.476 6.476 0 0 0-1.167-2.603 3.002 3.002 0 0 1 3.633 1.911c.18.522-.283.982-.836.982ZM12 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z" />
|
|
61
|
-
</svg>
|
|
62
|
-
<% } %>
|
|
63
|
-
<% if (item.visibility === 'unlisted') { %>
|
|
64
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" class="size-4">
|
|
65
|
-
<path fill-rule="evenodd" d="M3.28 2.22a.75.75 0 0 0-1.06 1.06l10.5 10.5a.75.75 0 1 0 1.06-1.06l-1.322-1.323a7.012 7.012 0 0 0 2.16-3.11.87.87 0 0 0 0-.567A7.003 7.003 0 0 0 4.82 3.76l-1.54-1.54Zm3.196 3.195 1.135 1.136A1.502 1.502 0 0 1 9.45 8.389l1.136 1.135a3 3 0 0 0-4.109-4.109Z" clip-rule="evenodd" />
|
|
66
|
-
<path d="m7.812 10.994 1.816 1.816A7.003 7.003 0 0 1 1.38 8.28a.87.87 0 0 1 0-.566 6.985 6.985 0 0 1 1.113-2.039l2.513 2.513a3 3 0 0 0 2.806 2.806Z" />
|
|
67
|
-
</svg>
|
|
68
|
-
<% } %>
|
|
69
|
-
<% if (item.visibility === 'protected') { %>
|
|
70
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" class="size-4">
|
|
71
|
-
<path fill-rule="evenodd" d="M8 1a3.5 3.5 0 0 0-3.5 3.5V7A1.5 1.5 0 0 0 3 8.5v5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 11.5 7V4.5A3.5 3.5 0 0 0 8 1Zm2 6V4.5a2 2 0 1 0-4 0V7h4Z" clip-rule="evenodd" />
|
|
72
|
-
</svg>
|
|
73
|
-
<% } %>
|
|
74
|
-
</span>
|
|
75
|
-
|
|
76
|
-
<%= visibilityOptions.find(opt => opt[0] === item.visibility)[1] %>
|
|
77
|
-
</div>
|
|
78
|
-
</td>
|
|
79
|
-
|
|
80
|
-
<td>
|
|
81
|
-
<time data-pretty-date datetime="<%= item.settings.publish_at %>"><%= utils.formattedDate(item.settings.publish_at) %></time>
|
|
82
|
-
</td>
|
|
83
|
-
|
|
84
|
-
<td>
|
|
85
|
-
<div class="body-3 text-raketa-foreground/50">
|
|
86
|
-
<div class="flex items-center gap-1 mb-0.5">
|
|
87
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4 text-raketa-foreground">
|
|
88
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
|
|
89
|
-
</svg>
|
|
90
|
-
<time data-pretty-datetime datetime="<%= item.updatedAt %>"><%= utils.formattedDateTime(item.updatedAt) %></time>
|
|
91
|
-
</div>
|
|
92
|
-
|
|
93
|
-
<div class="flex items-center gap-1" title="<%= item.changes[0]?.operatorMeta?.name %>">
|
|
94
|
-
<% if (item.changes[0]?.operatorMeta?.avatar) { %>
|
|
95
|
-
<img src="<%= item.changes[0]?.operatorMeta?.avatar %>" class="size-4 rounded-full" alt="<%= item.changes[0]?.operatorMeta?.name %>">
|
|
96
|
-
<% } else { %>
|
|
97
|
-
<div class="size-4 rounded-full"></div>
|
|
98
|
-
<% } %>
|
|
99
|
-
<%= item.changes[0]?.operatorMeta?.name %>
|
|
100
|
-
</div>
|
|
101
|
-
</div>
|
|
102
|
-
</td>
|
|
103
|
-
|
|
104
|
-
<td>
|
|
105
|
-
<div class="flex flex-wrap items-center gap-1">
|
|
106
|
-
<% Object.keys(_context.locales).forEach(key => { %>
|
|
107
|
-
<% const { name, _code, flag} = _context.locales[key] %>
|
|
108
|
-
<% if (key === _context.locale) { %>
|
|
109
|
-
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="size-6 rounded-full border dark:border-neutral-700" />
|
|
110
|
-
<% } else if (item.translations[key]) { %>
|
|
111
|
-
<a href="<%= `/${key}/${_context.resourceConfig.resourceTypePlural}/${item.translations[key].id}` %>">
|
|
112
|
-
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="size-6 rounded-full border dark:border-neutral-700" />
|
|
113
|
-
</a>
|
|
114
|
-
<% } else { %>
|
|
115
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${item.id}/translations/new?target_locale=${key}` %>">
|
|
116
|
-
<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(" ") %>" />
|
|
117
|
-
</a>
|
|
118
|
-
<% } %>
|
|
119
|
-
<% }); %>
|
|
120
|
-
</div>
|
|
121
|
-
</td>
|
|
122
|
-
</tr>
|
|
123
|
-
<% }); %>
|
|
124
|
-
</tbody>
|
|
125
|
-
</table>
|
|
126
|
-
|
|
127
|
-
<%- pagination(items.pagination, _context) %>
|
|
128
|
-
</div>
|
|
129
|
-
|
|
130
|
-
<div data-sidebar="1" class="search-sidebar <%= Object.keys(_context.query).some(k => k.startsWith('f:')) ? '' : 'hidden' %>">
|
|
131
|
-
<span class="heading-2">Search by</span>
|
|
132
|
-
|
|
133
|
-
<form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}` %>" method="GET" class="form mt-4">
|
|
134
|
-
<input type="hidden" name="order_direction" value="<%= _context.query.order_direction %>" />
|
|
135
|
-
<input type="hidden" name="order_by" value="<%= _context.query.order_by %>" />
|
|
136
|
-
|
|
137
|
-
<div class="mb-4">
|
|
138
|
-
<label for="keyword" class="font-semibold hover:cursor-pointer body-3">Keyword</label>
|
|
139
|
-
<input type="text" name="f:keyword" value="<%= _context.query["f:keyword"] %>" />
|
|
140
|
-
</div>
|
|
141
|
-
|
|
142
|
-
<%- include('./../_shared/_visibility_search_input.ejs') %>
|
|
143
|
-
|
|
144
|
-
<div class="mb-4">
|
|
145
|
-
<label for="widget" class="font-semibold hover:cursor-pointer body-3">Widget</label>
|
|
146
|
-
<select name="f:widget" data-widget-filter data-current-value="<%= _context.query['f:widget'] || '' %>">
|
|
147
|
-
<option value="">All widgets</option>
|
|
148
|
-
</select>
|
|
149
|
-
</div>
|
|
150
|
-
|
|
151
|
-
<div class="mb-4">
|
|
152
|
-
<label for="widget_keyword" class="font-semibold hover:cursor-pointer body-3">Widget text keyword</label>
|
|
153
|
-
<input type="text" name="f:widget_keyword" value="<%= _context.query["f:widget_keyword"] %>" />
|
|
154
|
-
</div>
|
|
155
|
-
|
|
156
|
-
<div class="mb-4">
|
|
157
|
-
<label for="last_updated_from" class="font-semibold hover:cursor-pointer body-3">Last Updated from</label>
|
|
158
|
-
<input type="datetime-local" name="f:last_updated_from" value="<%= _context.query["f:last_updated_from"] %>" />
|
|
159
|
-
</div>
|
|
160
|
-
|
|
161
|
-
<div class="mb-4">
|
|
162
|
-
<label for="last_updated_to" class="font-semibold hover:cursor-pointer body-3">Last Updated to</label>
|
|
163
|
-
<input type="datetime-local" name="f:last_updated_to" value="<%= _context.query["f:last_updated_to"] %>" />
|
|
164
|
-
</div>
|
|
165
|
-
|
|
166
|
-
<%- include('./../_shared/_translations_search_input.ejs') %>
|
|
167
|
-
|
|
168
|
-
<div class="mb-4">
|
|
169
|
-
<label for="" class="font-semibold hover:cursor-pointer body-3">Tags</label>
|
|
170
|
-
<div class="checkbox-group mb-4">
|
|
171
|
-
<% tags.forEach((item,idx)=> { %>
|
|
172
|
-
<div class="flex items-center gap-1">
|
|
173
|
-
<% if (utils.includedInCollection(item.id, _context.query["f:tags"])) { %>
|
|
174
|
-
<input type="checkbox" name="f:tags" id='tag-<%= item.id %>' checked value="<%= item.id %>" class="hover:cursor-pointer">
|
|
175
|
-
<% } else { %>
|
|
176
|
-
<input type="checkbox" name="f:tags" id='tag-<%= item.id %>' value="<%= item.id %>" class="hover:cursor-pointer">
|
|
177
|
-
<% } %>
|
|
178
|
-
<label for='tag-<%= item.id %>' class="body-2 hover:cursor-pointer"><%= item.name %></label>
|
|
179
|
-
</div>
|
|
180
|
-
<% }); %>
|
|
181
|
-
</div>
|
|
182
|
-
</div>
|
|
183
|
-
|
|
184
|
-
<div class="btn-toolbar">
|
|
185
|
-
<button type="submit" class="btn-primary">Search</button>
|
|
186
|
-
<%- include('./_shared/_export_button.ejs') %>
|
|
187
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}` %>" class="btn-text">Clear search</a>
|
|
188
|
-
</div>
|
|
189
|
-
</form>
|
|
190
|
-
</div>
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
<div class="page-wrapper">
|
|
2
|
-
<div class="page-title">
|
|
3
|
-
<%- render_partial('./_shared/_title.ejs') %>
|
|
4
|
-
<%- render_partial('./_shared/_toolbar.ejs') %>
|
|
5
|
-
</div>
|
|
6
|
-
|
|
7
|
-
<div class="flex flex-wrap items-center gap-1 mb-6 -mt-4">
|
|
8
|
-
<%
|
|
9
|
-
const availableLocales = Object.keys(_context.locales);
|
|
10
|
-
const totalPossibleTranslations = availableLocales.length - 1;
|
|
11
|
-
const existingTranslationsCount = Object.keys(resource.translations).length;
|
|
12
|
-
const canBeTranslated = existingTranslationsCount < totalPossibleTranslations;
|
|
13
|
-
%>
|
|
14
|
-
|
|
15
|
-
<% Object.keys(_context.locales).forEach(key => { %>
|
|
16
|
-
<% const { name, _code, flag} = _context.locales[key] %>
|
|
17
|
-
<% if (key === _context.locale) { %>
|
|
18
|
-
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="size-6 rounded-full border dark:border-neutral-700" />
|
|
19
|
-
<% } else if (resource.translations[key]) { %>
|
|
20
|
-
<a href="<%= `/${key}/${_context.resourceConfig.resourceTypePlural}/${resource.translations[key].id}` %>">
|
|
21
|
-
<img title="<%= name %>" src="<%= flag %>" alt="<%= name %>" class="size-6 rounded-full border dark:border-neutral-700" />
|
|
22
|
-
</a>
|
|
23
|
-
<% } else { %>
|
|
24
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}/translations/new?target_locale=${key}` %>">
|
|
25
|
-
<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(" ") %>" />
|
|
26
|
-
</a>
|
|
27
|
-
<% } %>
|
|
28
|
-
<% }); %>
|
|
29
|
-
|
|
30
|
-
<% if (canBeTranslated) { %>
|
|
31
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}/translations/new` %>" class="btn-text ml-2">
|
|
32
|
-
Translate
|
|
33
|
-
</a>
|
|
34
|
-
<% } %>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<%
|
|
38
|
-
const openedRevisions = []
|
|
39
|
-
const scheduledRevisions = []
|
|
40
|
-
|
|
41
|
-
revisions.forEach(r => {
|
|
42
|
-
if (r.schedule) {
|
|
43
|
-
scheduledRevisions.push(r)
|
|
44
|
-
} else {
|
|
45
|
-
openedRevisions.push(r)
|
|
46
|
-
}
|
|
47
|
-
})
|
|
48
|
-
%>
|
|
49
|
-
|
|
50
|
-
<% if (openedRevisions.length) { %>
|
|
51
|
-
<div class="pb-8">
|
|
52
|
-
<h4 class="pb-4 heading-3 flex items-center gap-2">
|
|
53
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-4 text-raketa-primary">
|
|
54
|
-
<path fill-rule="evenodd" d="M5.625 1.5c-1.036 0-1.875.84-1.875 1.875v17.25c0 1.035.84 1.875 1.875 1.875h12.75c1.035 0 1.875-.84 1.875-1.875V12.75A3.75 3.75 0 0 0 16.5 9h-1.875a1.875 1.875 0 0 1-1.875-1.875V5.25A3.75 3.75 0 0 0 9 1.5H5.625ZM7.5 15a.75.75 0 0 1 .75-.75h7.5a.75.75 0 0 1 0 1.5h-7.5A.75.75 0 0 1 7.5 15Zm.75 2.25a.75.75 0 0 0 0 1.5H12a.75.75 0 0 0 0-1.5H8.25Z" clip-rule="evenodd" />
|
|
55
|
-
<path d="M12.971 1.816A5.23 5.23 0 0 1 14.25 5.25v1.875c0 .207.168.375.375.375H16.5a5.23 5.23 0 0 1 3.434 1.279 9.768 9.768 0 0 0-6.963-6.963Z" />
|
|
56
|
-
</svg>
|
|
57
|
-
|
|
58
|
-
Open revisions
|
|
59
|
-
</h4>
|
|
60
|
-
|
|
61
|
-
<table class="data-grid alt">
|
|
62
|
-
<thead>
|
|
63
|
-
<tr>
|
|
64
|
-
<th>Title</th>
|
|
65
|
-
<th>Created by</th>
|
|
66
|
-
<th>Last change</th>
|
|
67
|
-
<th> </th>
|
|
68
|
-
</tr>
|
|
69
|
-
</thead>
|
|
70
|
-
|
|
71
|
-
<tbody>
|
|
72
|
-
<% openedRevisions.forEach((revision, idx)=> { %>
|
|
73
|
-
<tr class="border-b border-mono-25">
|
|
74
|
-
<td class="py-4 pl-2 w-1/2">
|
|
75
|
-
<div class="flex gap-1 items-center">
|
|
76
|
-
<% if (revision.meta && revision.meta.locked) { %>
|
|
77
|
-
<div title="<%= revision.meta.lockMessage %>">
|
|
78
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-4">
|
|
79
|
-
<path fill-rule="evenodd" d="M10 1a4.5 4.5 0 0 0-4.5 4.5V9H5a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2h-.5V5.5A4.5 4.5 0 0 0 10 1Zm3 8V5.5a3 3 0 1 0-6 0V9h6Z" clip-rule="evenodd" />
|
|
80
|
-
</svg>
|
|
81
|
-
</div>
|
|
82
|
-
<% } %>
|
|
83
|
-
|
|
84
|
-
<%= revision.title %>
|
|
85
|
-
</div>
|
|
86
|
-
</td>
|
|
87
|
-
|
|
88
|
-
<td class="whitespace-nowrap">
|
|
89
|
-
<%- render_partial('./_shared/_revision_operator.ejs', { revision }) %>
|
|
90
|
-
</td>
|
|
91
|
-
|
|
92
|
-
<td class="whitespace-nowrap">
|
|
93
|
-
<div class="body-3 text-raketa-foreground/50">
|
|
94
|
-
<div class="flex items-center gap-1">
|
|
95
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4 text-raketa-foreground">
|
|
96
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
|
|
97
|
-
</svg>
|
|
98
|
-
|
|
99
|
-
<time data-pretty-datetime datetime="<%= revision.insertedAt %>"><%= utils.formattedDateTime(revision.insertedAt) %></time>
|
|
100
|
-
</div>
|
|
101
|
-
</div>
|
|
102
|
-
</td>
|
|
103
|
-
|
|
104
|
-
<td class="whitespace-nowrap">
|
|
105
|
-
<%- render_partial('./_shared/_revision_toolbar.ejs', { revision }) %>
|
|
106
|
-
</td>
|
|
107
|
-
</tr>
|
|
108
|
-
<% }); %>
|
|
109
|
-
</tbody>
|
|
110
|
-
</table>
|
|
111
|
-
</div>
|
|
112
|
-
<% } %>
|
|
113
|
-
|
|
114
|
-
<% if (scheduledRevisions.length) { %>
|
|
115
|
-
<div class="pb-8">
|
|
116
|
-
<h4 class="pb-4 heading-3 flex items-center gap-2">
|
|
117
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-4 text-raketa-primary">
|
|
118
|
-
<path fill-rule="evenodd" d="M5.625 1.5c-1.036 0-1.875.84-1.875 1.875v17.25c0 1.035.84 1.875 1.875 1.875h12.75c1.035 0 1.875-.84 1.875-1.875V12.75A3.75 3.75 0 0 0 16.5 9h-1.875a1.875 1.875 0 0 1-1.875-1.875V5.25A3.75 3.75 0 0 0 9 1.5H5.625ZM7.5 15a.75.75 0 0 1 .75-.75h7.5a.75.75 0 0 1 0 1.5h-7.5A.75.75 0 0 1 7.5 15Zm.75 2.25a.75.75 0 0 0 0 1.5H12a.75.75 0 0 0 0-1.5H8.25Z" clip-rule="evenodd" />
|
|
119
|
-
<path d="M12.971 1.816A5.23 5.23 0 0 1 14.25 5.25v1.875c0 .207.168.375.375.375H16.5a5.23 5.23 0 0 1 3.434 1.279 9.768 9.768 0 0 0-6.963-6.963Z" />
|
|
120
|
-
</svg>
|
|
121
|
-
|
|
122
|
-
Scheduled for publication
|
|
123
|
-
</h4>
|
|
124
|
-
|
|
125
|
-
<table class="data-grid alt">
|
|
126
|
-
<thead>
|
|
127
|
-
<tr>
|
|
128
|
-
<th>Title</th>
|
|
129
|
-
<th>Created by</th>
|
|
130
|
-
<th>Scheduled by</th>
|
|
131
|
-
<th>Publish on</th>
|
|
132
|
-
<th> </th>
|
|
133
|
-
</tr>
|
|
134
|
-
</thead>
|
|
135
|
-
|
|
136
|
-
<tbody>
|
|
137
|
-
<% scheduledRevisions.forEach((revision, idx)=> { %>
|
|
138
|
-
<tr class="border-b border-mono-25">
|
|
139
|
-
<td class="py-4 pl-2 w-1/2">
|
|
140
|
-
<div class="flex gap-1 items-center">
|
|
141
|
-
<%= revision.title %>
|
|
142
|
-
</div>
|
|
143
|
-
</td>
|
|
144
|
-
|
|
145
|
-
<td class="whitespace-nowrap">
|
|
146
|
-
<%- render_partial('./_shared/_revision_operator.ejs', { revision }) %>
|
|
147
|
-
</td>
|
|
148
|
-
|
|
149
|
-
<td class="whitespace-nowrap">
|
|
150
|
-
<div class="body-3 text-raketa-foreground/50">
|
|
151
|
-
<div class="flex items-center gap-1" title="<%= revision.schedule.operatorMeta.name %>">
|
|
152
|
-
<% if (revision.schedule.operatorMeta.avatar) { %>
|
|
153
|
-
<img src="<%= revision.schedule.operatorMeta.avatar %>" class="size-4 rounded-full">
|
|
154
|
-
<% } %>
|
|
155
|
-
<%= revision.schedule.operatorMeta.name %>
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
158
|
-
</td>
|
|
159
|
-
|
|
160
|
-
<td class="whitespace-nowrap">
|
|
161
|
-
<div class="body-3 text-raketa-foreground/50">
|
|
162
|
-
<div class="flex items-center gap-1">
|
|
163
|
-
<svg xmlns="http://www.w3.org/2000/svg" class="size-4 text-raketa-foreground" viewBox="0 0 512 512">
|
|
164
|
-
<path d="M112.91 128A191.85 191.85 0 0064 254c-1.18 106.35 85.65 193.8 192 194 106.2.2 192-85.83 192-192 0-104.54-83.55-189.61-187.5-192a4.36 4.36 0 00-4.5 4.37V152" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" />
|
|
165
|
-
<path d="M233.38 278.63l-79-113a8.13 8.13 0 0111.32-11.32l113 79a32.5 32.5 0 01-37.25 53.26 33.21 33.21 0 01-8.07-7.94z" />
|
|
166
|
-
</svg>
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
<time data-pretty-expiration-time datetime="<%= revision.schedule.mergeAt %>"><%= revision.schedule.mergeAt %></time>
|
|
170
|
-
</div>
|
|
171
|
-
</div>
|
|
172
|
-
</td>
|
|
173
|
-
|
|
174
|
-
<td class="whitespace-nowrap">
|
|
175
|
-
<div class="actions-toolbar justify-end">
|
|
176
|
-
<form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${revision.id}/cancel_schedules` %>" method="post" class="inline-flex gap-2 items-center">
|
|
177
|
-
<%- f.submit('Remove schedule', { class: 'btn-text' }) %>
|
|
178
|
-
</form>
|
|
179
|
-
|
|
180
|
-
<a href="/remote/login?redirect_to=/<%= _context.locale %>/admin/<%= _context.resourceConfig.resourceType %>-revisions/<%= revision.id %>/preview" target="_blank" class="btn-text has-icon">
|
|
181
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
182
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" />
|
|
183
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
|
|
184
|
-
</svg>
|
|
185
|
-
|
|
186
|
-
Preview
|
|
187
|
-
</a>
|
|
188
|
-
</div>
|
|
189
|
-
</td>
|
|
190
|
-
</tr>
|
|
191
|
-
<% }); %>
|
|
192
|
-
</tbody>
|
|
193
|
-
</table>
|
|
194
|
-
</div>
|
|
195
|
-
<% } %>
|
|
196
|
-
|
|
197
|
-
<%- render_partial('./_shared/_addons.ejs') %>
|
|
198
|
-
|
|
199
|
-
<div class="mb-4">
|
|
200
|
-
<h4 class="pb-4 heading-3 items-center gap-2 flex">
|
|
201
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-4 text-raketa-primary">
|
|
202
|
-
<path d="M3.375 3C2.339 3 1.5 3.84 1.5 4.875v.75c0 1.036.84 1.875 1.875 1.875h17.25c1.035 0 1.875-.84 1.875-1.875v-.75C22.5 3.839 21.66 3 20.625 3H3.375Z" />
|
|
203
|
-
<path fill-rule="evenodd" d="m3.087 9 .54 9.176A3 3 0 0 0 6.62 21h10.757a3 3 0 0 0 2.995-2.824L20.913 9H3.087Zm6.163 3.75A.75.75 0 0 1 10 12h4a.75.75 0 0 1 0 1.5h-4a.75.75 0 0 1-.75-.75Z" clip-rule="evenodd" />
|
|
204
|
-
</svg>
|
|
205
|
-
|
|
206
|
-
History of changes
|
|
207
|
-
</h4>
|
|
208
|
-
|
|
209
|
-
<%- render_partial('./_shared/history_table.ejs', {
|
|
210
|
-
changes,
|
|
211
|
-
resource,
|
|
212
|
-
_context,
|
|
213
|
-
render_partial,
|
|
214
|
-
skipPagination: true,
|
|
215
|
-
toolbarPath: './_shared/_history_toolbar.ejs'
|
|
216
|
-
}) %>
|
|
217
|
-
|
|
218
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}/history` %>" class="btn-text ml-2 my-8">
|
|
219
|
-
Full page history
|
|
220
|
-
</a>
|
|
221
|
-
</div>
|
|
222
|
-
</div>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<div class="actions-toolbar justify-end">
|
|
2
|
-
<a href="/remote/login?redirect_to=/<%= translation.translationLocale %>/admin/<%= _context.resourceConfig.resourceType %>-revisions/<%= translation.revisionId %>/builder" class="btn-text has-icon">
|
|
3
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
4
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" />
|
|
5
|
-
</svg>
|
|
6
|
-
|
|
7
|
-
Update Content
|
|
8
|
-
</a>
|
|
9
|
-
|
|
10
|
-
<a href="<%= `/${translation.translationLocale}/${_context.resourceConfig.resourceType}_revisions/${translation.revisionId}/general/edit` %>" class="btn-text has-icon">
|
|
11
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
12
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 0 1 1.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.559.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.894.149c-.424.07-.764.383-.929.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 0 1-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.398.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 0 1-.12-1.45l.527-.737c.25-.35.272-.806.108-1.204-.165-.397-.506-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.108-1.204l-.526-.738a1.125 1.125 0 0 1 .12-1.45l.773-.773a1.125 1.125 0 0 1 1.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894Z" />
|
|
13
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
|
|
14
|
-
</svg>
|
|
15
|
-
|
|
16
|
-
Update Settings
|
|
17
|
-
</a>
|
|
18
|
-
</div>
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
<div class="page-wrapper">
|
|
2
|
-
<div class="page-title flex flex-col items-start">
|
|
3
|
-
<h1 class="heading-1">
|
|
4
|
-
<span class="opacity-50">Translate from <%= _context.locales[_context.locale].name %> / </span>
|
|
5
|
-
<%= blueprint.title %>
|
|
6
|
-
</h1>
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<div class="grid gap-4 md:grid-cols-3">
|
|
10
|
-
<% form_for({ resource }, errors, (f) => { %>
|
|
11
|
-
<form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${blueprint.id}/translations` %>" method="post" class="form">
|
|
12
|
-
<h6>Available languages:</h6>
|
|
13
|
-
<% if (targetLocale) { %>
|
|
14
|
-
<input type="hidden" name="resource[languages][]" value="<%= targetLocale %>">
|
|
15
|
-
<% } %>
|
|
16
|
-
<div class="checkbox-group !max-h-fit mb-3">
|
|
17
|
-
<% Object.entries(_context.locales).forEach(([key, locale]) => {
|
|
18
|
-
const isExistingTranslation = resource.translations[key];
|
|
19
|
-
const isCurrentLocale = key === _context.locale;
|
|
20
|
-
const wasSelected = Array.isArray(resource.languages) && resource.languages.includes(key);
|
|
21
|
-
const isChecked = isExistingTranslation || isCurrentLocale || key === targetLocale || wasSelected;
|
|
22
|
-
const isDisabled = isExistingTranslation || isCurrentLocale || key === targetLocale;
|
|
23
|
-
%>
|
|
24
|
-
<% if(!isCurrentLocale) { %>
|
|
25
|
-
<label class="<%= isDisabled && key !== targetLocale ? 'opacity-50' : '' %>">
|
|
26
|
-
<input type="<%= isCurrentLocale ? 'hidden' : 'checkbox' %>" name="resource[languages][]" value="<%= key %>" <%= isChecked ? 'checked' : '' %> <%= isDisabled ? 'disabled' : '' %>>
|
|
27
|
-
<%= locale.name %>
|
|
28
|
-
</label>
|
|
29
|
-
<% } %>
|
|
30
|
-
<% }) %>
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
<% if (errors?.resource && targetLocale) { %>
|
|
34
|
-
<div>
|
|
35
|
-
<% if (targetLocale !== _context.locale) { %>
|
|
36
|
-
<p class="text-sm text-red-600 font-medium mb-1">
|
|
37
|
-
Failed to create <%= _context.locales[targetLocale].name %> translation.
|
|
38
|
-
</p>
|
|
39
|
-
<% } %>
|
|
40
|
-
<% Object.entries(errors.resource).forEach(([errorKey, error]) => { %>
|
|
41
|
-
<p class="text-sm text-red-600 font-medium mb-3"> Reason is <%= errorKey %>: <%= error %></p>
|
|
42
|
-
<% }) %>
|
|
43
|
-
</div>
|
|
44
|
-
<% } %>
|
|
45
|
-
|
|
46
|
-
<div class="form-actions">
|
|
47
|
-
<div class="btn-toolbar">
|
|
48
|
-
<%- f.submit('Initiate translations', { class: 'btn-primary' }) %>
|
|
49
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${blueprint.id}` %>" class="btn-secondary">Cancel</a>
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
</form>
|
|
53
|
-
<% }) %>
|
|
54
|
-
|
|
55
|
-
<div>
|
|
56
|
-
<div class="help">
|
|
57
|
-
<div class="flex items-center gap-1 mb-2">
|
|
58
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
59
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" />
|
|
60
|
-
</svg>
|
|
61
|
-
|
|
62
|
-
<h3 class="heading-3">Translating events</h3>
|
|
63
|
-
</div>
|
|
64
|
-
|
|
65
|
-
<div class="markdown">
|
|
66
|
-
<ol>
|
|
67
|
-
<li>Select multiple locales to initiate bulk translations.</li>
|
|
68
|
-
<li>A private copy of the event will be automatically created for each selected language, with a new revision opened to facilitate the translation process.</li>
|
|
69
|
-
<li>On the next screen you'll see a list with quick links to transalte settings and widgets</li>
|
|
70
|
-
</ol>
|
|
71
|
-
</div>
|
|
72
|
-
</div>
|
|
73
|
-
</div>
|
|
74
|
-
</div>
|
|
75
|
-
</div>
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
<div class="page-wrapper">
|
|
2
|
-
<div class="page-title">
|
|
3
|
-
<div>
|
|
4
|
-
<h1 class="heading-1">Translations initiated</h1>
|
|
5
|
-
<span class="body-2 opacity-50"><%= resourceTitle %></span>
|
|
6
|
-
</div>
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<% if (translations && translations.length > 0) { %>
|
|
10
|
-
<table class="data-grid alt">
|
|
11
|
-
<thead>
|
|
12
|
-
<tr>
|
|
13
|
-
<th>Locale</th>
|
|
14
|
-
<th> </th>
|
|
15
|
-
</tr>
|
|
16
|
-
</thead>
|
|
17
|
-
<tbody>
|
|
18
|
-
<% translations.forEach(translation => { %>
|
|
19
|
-
<tr class="border-b border-mono-25">
|
|
20
|
-
<td class="py-4 pl-2 w-full">
|
|
21
|
-
<div class="flex gap-1 items-center">
|
|
22
|
-
<a href="<%= `/${translation.translationLocale}/${_context.resourceConfig.resourceTypePlural}/${translation.id}` %>" class="btn-text">
|
|
23
|
-
<%= _context.locales[translation.translationLocale].name %>
|
|
24
|
-
</a>
|
|
25
|
-
</div>
|
|
26
|
-
</td>
|
|
27
|
-
|
|
28
|
-
<td class="whitespace-nowrap">
|
|
29
|
-
<%- render_partial('./_translation_toolbar.ejs', { translation }) %>
|
|
30
|
-
</td>
|
|
31
|
-
</tr>
|
|
32
|
-
<% }) %>
|
|
33
|
-
</tbody>
|
|
34
|
-
</table>
|
|
35
|
-
<% } %>
|
|
36
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${parent_id}` %>" class="btn-primary mt-8">
|
|
37
|
-
Go to original
|
|
38
|
-
</a>
|
|
39
|
-
</div>
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
<div class="page-wrapper">
|
|
2
|
-
<div class="page-title">
|
|
3
|
-
<h1 class="heading-1">
|
|
4
|
-
<span class="opacity-50">Change URL / </span>
|
|
5
|
-
<%= record.title %>
|
|
6
|
-
</h1>
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<div class="grid gap-4 md:grid-cols-3">
|
|
10
|
-
<% form_for({ resource }, errors, (f) => { %>
|
|
11
|
-
<form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}/urls` %>" method="post" class="form">
|
|
12
|
-
<%- f.field('resource.slug', { label: "URL", required: true, hint: "Only lowercase letters, numbers and dash allowed. Ex: celebrate/friday-13" }) %>
|
|
13
|
-
<%- f.field('resource.redirect', { as: "checkbox", value: "1", label: "Create 301 redirect for the old URL" }) %>
|
|
14
|
-
|
|
15
|
-
<%- f.submit('Save record', { class: 'btn-primary' }) %>
|
|
16
|
-
<a href="<%=`/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}`%>" class="btn-secondary">Back</a>
|
|
17
|
-
</form>
|
|
18
|
-
<% }) %>
|
|
19
|
-
|
|
20
|
-
<div>
|
|
21
|
-
<div class="help">
|
|
22
|
-
<div class="flex items-center gap-1 mb-2">
|
|
23
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
24
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" />
|
|
25
|
-
</svg>
|
|
26
|
-
|
|
27
|
-
<h3 class="heading-3">Changing URL</h3>
|
|
28
|
-
</div>
|
|
29
|
-
|
|
30
|
-
<div class="markdown">
|
|
31
|
-
<p>Caution: Changing a page's URL may create broken links from existing references. If needed, use the redirect checkbox to automatically forward traffic from the old address to the new one, preserving link integrity.</p>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
<% if (_context.query?.success) { %>
|
|
2
|
-
<div class="mb-6 text-emerald-600">Settings saved successfully.</div>
|
|
3
|
-
<% } %>
|
|
4
|
-
|
|
5
|
-
<%
|
|
6
|
-
const activeClass = "relative top-0.5 px-4 border-b-2 border-raketa-primary pb-4";
|
|
7
|
-
const inactiveClass = "relative top-0.5 px-4 border-b-2 border-transparent pb-4";
|
|
8
|
-
%>
|
|
9
|
-
|
|
10
|
-
<div class="flex gap-4 w-full pb-4">
|
|
11
|
-
<div class="flex items-center justify-between mb-4">
|
|
12
|
-
<div class="flex items-center border-b-2">
|
|
13
|
-
<div class=" <%= active === 'general' ? activeClass : inactiveClass %>">
|
|
14
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/general/edit` %>" class="text-raketa-primary font-semibold">
|
|
15
|
-
General
|
|
16
|
-
</a>
|
|
17
|
-
</div>
|
|
18
|
-
|
|
19
|
-
<div class="<%= active === 'visuals' ? activeClass : inactiveClass %>">
|
|
20
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/visuals/edit` %>" class="text-raketa-primary font-semibold">
|
|
21
|
-
Visuals
|
|
22
|
-
</a>
|
|
23
|
-
</div>
|
|
24
|
-
|
|
25
|
-
<div class="<%= active === 'codes' ? activeClass : inactiveClass %>">
|
|
26
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/codes/edit` %>" class="text-raketa-primary font-semibold">
|
|
27
|
-
Code customizations
|
|
28
|
-
</a>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
<div class="<%= active === 'meta' ? activeClass : inactiveClass %>">
|
|
32
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/meta/edit` %>" class="text-raketa-primary font-semibold">
|
|
33
|
-
OpenGraph & meta tags
|
|
34
|
-
</a>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<div class="<%= active === 'tags' ? activeClass : inactiveClass %>">
|
|
38
|
-
<a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/tags/edit` %>" class="text-raketa-primary font-semibold">
|
|
39
|
-
Content tags
|
|
40
|
-
</a>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
<div>
|
|
46
|
-
<a href="/remote/login?redirect_to=/<%= _context.locale %>/admin/<%= _context.resourceConfig.resourceType %>-revisions/<%= resource.id %>/builder" class="btn-secondary has-icon <%= resource.meta && resource.meta.locked ? 'cursor-not-allowed text-gray-400 pointer-events-none' : '' %>">
|
|
47
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
|
|
48
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" />
|
|
49
|
-
</svg>
|
|
50
|
-
Edit content
|
|
51
|
-
</a>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|