@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.
Files changed (120) hide show
  1. package/dist/application.css +0 -4
  2. package/package.json +1 -1
  3. package/src/HonoAdapter.js +34 -33
  4. package/src/index.js +0 -3
  5. package/src/routeCategoriesModule.js +1 -1
  6. package/src/routeCollection.js +15 -8
  7. package/src/routeNestedCollection.js +1 -1
  8. package/src/routeNestedMember.js +1 -1
  9. package/src/routeResource.js +19 -21
  10. package/src/routeStandard.js +6 -6
  11. package/src/tests/HonoAdapter.coverage.test.js +15 -25
  12. package/src/tests/routeCategoriesModule.test.js +2 -2
  13. package/src/tests/routeResource.test.js +12 -37
  14. package/src/tests/routeStandard.test.js +13 -13
  15. package/src/views/_shared/_date_fields_input.ejs +13 -0
  16. package/src/views/{page_revisions → resource_revisions}/general/_form.ejs +1 -0
  17. package/src/views/{pages → resources}/_form.ejs +1 -0
  18. package/src/views/{pages → resources}/history/index.ejs +1 -1
  19. package/src/views/{articles → resources}/index.ejs +6 -0
  20. package/src/views/{pages → resources}/show.ejs +7 -7
  21. package/src/views/{articles → resources}/translations/create_form.ejs +2 -2
  22. package/src/routeArticlesModule.js +0 -15
  23. package/src/routeEventsModule.js +0 -15
  24. package/src/routePagesModule.js +0 -15
  25. package/src/tests/routeArticlesModule.test.js +0 -43
  26. package/src/tests/routeEventsModule.test.js +0 -43
  27. package/src/tests/routePagesModule.test.js +0 -43
  28. package/src/views/article_revisions/_nav.ejs +0 -53
  29. package/src/views/article_revisions/general/_form.ejs +0 -18
  30. package/src/views/article_revisions/tags/edit_form.ejs +0 -16
  31. package/src/views/articles/_form.ejs +0 -45
  32. package/src/views/articles/_shared/history_table.ejs +0 -74
  33. package/src/views/articles/deletes/create_form.ejs +0 -68
  34. package/src/views/articles/history/index.ejs +0 -80
  35. package/src/views/articles/show.ejs +0 -222
  36. package/src/views/articles/urls/create_form.ejs +0 -36
  37. package/src/views/event_revisions/codes/_form.ejs +0 -14
  38. package/src/views/event_revisions/codes/edit_form.ejs +0 -16
  39. package/src/views/event_revisions/general/_form.ejs +0 -20
  40. package/src/views/event_revisions/general/edit_form.ejs +0 -16
  41. package/src/views/event_revisions/locks/_form.ejs +0 -11
  42. package/src/views/event_revisions/locks/create_form.ejs +0 -27
  43. package/src/views/event_revisions/meta/_form.ejs +0 -16
  44. package/src/views/event_revisions/meta/edit_form.ejs +0 -16
  45. package/src/views/event_revisions/publishes/_form.ejs +0 -77
  46. package/src/views/event_revisions/publishes/create_form.ejs +0 -9
  47. package/src/views/event_revisions/tags/_form.ejs +0 -13
  48. package/src/views/event_revisions/tags/edit_form.ejs +0 -16
  49. package/src/views/event_revisions/visuals/_form.ejs +0 -13
  50. package/src/views/event_revisions/visuals/edit_form.ejs +0 -16
  51. package/src/views/events/_form.ejs +0 -47
  52. package/src/views/events/_shared/_addons.ejs +0 -0
  53. package/src/views/events/_shared/_export_button.ejs +0 -9
  54. package/src/views/events/_shared/_history_toolbar.ejs +0 -24
  55. package/src/views/events/_shared/_revision_operator.ejs +0 -8
  56. package/src/views/events/_shared/_revision_toolbar.ejs +0 -68
  57. package/src/views/events/_shared/_title.ejs +0 -14
  58. package/src/views/events/_shared/_toolbar.ejs +0 -45
  59. package/src/views/events/_shared/history_table.ejs +0 -74
  60. package/src/views/events/create_form.ejs +0 -9
  61. package/src/views/events/deletes/create_form.ejs +0 -68
  62. package/src/views/events/history/index.ejs +0 -80
  63. package/src/views/events/index.ejs +0 -190
  64. package/src/views/events/show.ejs +0 -222
  65. package/src/views/events/translations/_translation_toolbar.ejs +0 -18
  66. package/src/views/events/translations/create_form.ejs +0 -75
  67. package/src/views/events/translations/index.ejs +0 -39
  68. package/src/views/events/urls/create_form.ejs +0 -36
  69. package/src/views/page_revisions/_nav.ejs +0 -53
  70. package/src/views/page_revisions/codes/_form.ejs +0 -14
  71. package/src/views/page_revisions/codes/edit_form.ejs +0 -16
  72. package/src/views/page_revisions/general/edit_form.ejs +0 -16
  73. package/src/views/page_revisions/locks/_form.ejs +0 -11
  74. package/src/views/page_revisions/locks/create_form.ejs +0 -27
  75. package/src/views/page_revisions/meta/_form.ejs +0 -16
  76. package/src/views/page_revisions/meta/edit_form.ejs +0 -16
  77. package/src/views/page_revisions/publishes/_form.ejs +0 -76
  78. package/src/views/page_revisions/publishes/create_form.ejs +0 -9
  79. package/src/views/page_revisions/tags/_form.ejs +0 -13
  80. package/src/views/page_revisions/visuals/_form.ejs +0 -13
  81. package/src/views/page_revisions/visuals/edit_form.ejs +0 -16
  82. package/src/views/pages/_shared/_addons.ejs +0 -0
  83. package/src/views/pages/_shared/_export_button.ejs +0 -9
  84. package/src/views/pages/_shared/_history_toolbar.ejs +0 -24
  85. package/src/views/pages/_shared/_revision_operator.ejs +0 -8
  86. package/src/views/pages/_shared/_revision_toolbar.ejs +0 -68
  87. package/src/views/pages/_shared/_title.ejs +0 -14
  88. package/src/views/pages/_shared/_toolbar.ejs +0 -45
  89. package/src/views/pages/create_form.ejs +0 -9
  90. package/src/views/pages/index.ejs +0 -185
  91. package/src/views/pages/translations/_translation_toolbar.ejs +0 -18
  92. package/src/views/pages/translations/create_form.ejs +0 -75
  93. package/src/views/pages/translations/index.ejs +0 -39
  94. /package/src/views/{event_revisions → resource_revisions}/_nav.ejs +0 -0
  95. /package/src/views/{article_revisions → resource_revisions}/codes/_form.ejs +0 -0
  96. /package/src/views/{article_revisions → resource_revisions}/codes/edit_form.ejs +0 -0
  97. /package/src/views/{article_revisions → resource_revisions}/general/edit_form.ejs +0 -0
  98. /package/src/views/{article_revisions → resource_revisions}/locks/_form.ejs +0 -0
  99. /package/src/views/{article_revisions → resource_revisions}/locks/create_form.ejs +0 -0
  100. /package/src/views/{article_revisions → resource_revisions}/meta/_form.ejs +0 -0
  101. /package/src/views/{article_revisions → resource_revisions}/meta/edit_form.ejs +0 -0
  102. /package/src/views/{article_revisions → resource_revisions}/publishes/_form.ejs +0 -0
  103. /package/src/views/{article_revisions → resource_revisions}/publishes/create_form.ejs +0 -0
  104. /package/src/views/{article_revisions → resource_revisions}/tags/_form.ejs +0 -0
  105. /package/src/views/{page_revisions → resource_revisions}/tags/edit_form.ejs +0 -0
  106. /package/src/views/{article_revisions → resource_revisions}/visuals/_form.ejs +0 -0
  107. /package/src/views/{article_revisions → resource_revisions}/visuals/edit_form.ejs +0 -0
  108. /package/src/views/{articles → resources}/_shared/_addons.ejs +0 -0
  109. /package/src/views/{articles → resources}/_shared/_export_button.ejs +0 -0
  110. /package/src/views/{articles → resources}/_shared/_history_toolbar.ejs +0 -0
  111. /package/src/views/{articles → resources}/_shared/_revision_operator.ejs +0 -0
  112. /package/src/views/{articles → resources}/_shared/_revision_toolbar.ejs +0 -0
  113. /package/src/views/{articles → resources}/_shared/_title.ejs +0 -0
  114. /package/src/views/{articles → resources}/_shared/_toolbar.ejs +0 -0
  115. /package/src/views/{pages → resources}/_shared/history_table.ejs +0 -0
  116. /package/src/views/{articles → resources}/create_form.ejs +0 -0
  117. /package/src/views/{pages → resources}/deletes/create_form.ejs +0 -0
  118. /package/src/views/{articles → resources}/translations/_translation_toolbar.ejs +0 -0
  119. /package/src/views/{articles → resources}/translations/index.ejs +0 -0
  120. /package/src/views/{pages → resources}/urls/create_form.ejs +0 -0
@@ -1,14 +0,0 @@
1
- <% form_for({ resource }, errors, (f) => { %>
2
- <form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/codes` %>" method="POST" class="form">
3
- <%- render_partial('../../_shared/_scripts_input.ejs', { resource, f }) %>
4
- <%- render_partial('../../_shared/_structured_json_input.ejs', { resource, f }) %>
5
-
6
- <div class="form-actions">
7
- <div class="btn-toolbar">
8
- <%- f.submit('Save', { class: 'btn-primary' }) %>
9
- <%- f.submit('Save and publish', { class: 'btn-secondary', name: '_next', value: 'publish' }) %>
10
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.originalId}` %>" class="btn-text">Back</a>
11
- </div>
12
- </div>
13
- </form>
14
- <% }) %>
@@ -1,16 +0,0 @@
1
- <div class="page-wrapper">
2
- <div class="page-title">
3
- <h1 class="heading-1">
4
- <span class="opacity-50">Code customizations / </span>
5
- <%= resource.title %>
6
- </h1>
7
- </div>
8
-
9
- <%- render_partial('../_nav.ejs', { resource, active: 'codes' }) %>
10
-
11
- <div class="grid gap-4 md:grid-cols-3">
12
- <div>
13
- <%- render_partial('_form.ejs', { render_partial: render_partial }) %>
14
- </div>
15
- </div>
16
- </div>
@@ -1,16 +0,0 @@
1
- <div class="page-wrapper">
2
- <div class="page-title">
3
- <h1 class="heading-1">
4
- <span class="opacity-50">General / </span>
5
- <%= resource.title %>
6
- </h1>
7
- </div>
8
-
9
- <%- render_partial('../_nav.ejs', { resource, active: 'general' }) %>
10
-
11
- <div class="grid gap-4 md:grid-cols-3">
12
- <div>
13
- <%- render_partial('_form.ejs') %>
14
- </div>
15
- </div>
16
- </div>
@@ -1,11 +0,0 @@
1
- <% form_for({ resource }, errors, (f) => { %>
2
- <form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/locks` %>" method="POST" class="form">
3
- <%- f.field('resource.message', { as: 'textarea', label: 'Lock Message', required: true }) %>
4
- <div class="form-actions">
5
- <div class="btn-toolbar">
6
- <%- f.submit('Lock revision', { class: 'btn-primary' }) %>
7
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.originalId}` %>" class="btn-secondary">Cancel</a>
8
- </div>
9
- </div>
10
- </form>
11
- <% }) %>
@@ -1,27 +0,0 @@
1
- <div class="page-wrapper">
2
- <div class="page-title">
3
- <h1 class="heading-1">Lock revision</h1>
4
- </div>
5
-
6
- <div class="grid gap-4 md:grid-cols-3">
7
- <div>
8
- <%- render_partial('_form.ejs') %>
9
- </div>
10
-
11
- <div>
12
- <div class="help">
13
- <div class="mb-2 flex items-center gap-1">
14
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
15
- <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" />
16
- </svg>
17
-
18
- <h3 class="heading-3">How to lock a revision?</h3>
19
- </div>
20
-
21
- <div class="markdown">
22
- <p>You can lock a revision to prevent publishing or deletion by anyone, including yourself. When locking, provide a clear, informative message explaining the reason. Remember that while this feature is designed to facilitate collaboration, any user can still unlock the revision.</p>
23
- </div>
24
- </div>
25
- </div>
26
- </div>
27
- </div>
@@ -1,16 +0,0 @@
1
- <% form_for({ resource }, errors, (f) => { %>
2
- <form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/meta` %>" method="POST" class="form">
3
- <%- f.field('resource.settings.meta.title', { required: true, label: "Meta title", hint: "Used for both meta and OpenGraph" }) %>
4
- <%- f.field('resource.settings.meta.description', { as: "textarea", required: true, label: "Meta description", hint: "Used for both meta and OpenGraph" }) %>
5
-
6
- <raketa-image-picker name="resource[settings][meta][image]" value="<%= JSON.stringify(resource.settings?.meta?.image || {}) %>" label="OpenGraph image"></raketa-image-picker>
7
-
8
- <div class="form-actions">
9
- <div class="btn-toolbar">
10
- <%- f.submit('Save', { class: 'btn-primary' }) %>
11
- <%- f.submit('Save and publish', { class: 'btn-secondary', name: '_next', value: 'publish' }) %>
12
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.originalId}` %>" class="btn-text">Back</a>
13
- </div>
14
- </div>
15
- </form>
16
- <% }) %>
@@ -1,16 +0,0 @@
1
- <div class="page-wrapper">
2
- <div class="page-title">
3
- <h1 class="heading-1">
4
- <span class="opacity-50">OpenGraph & Meta tags / </span>
5
- <%= resource.title %>
6
- </h1>
7
- </div>
8
-
9
- <%- render_partial('../_nav.ejs', { resource, active: 'meta' }) %>
10
-
11
- <div class="grid gap-4 md:grid-cols-3">
12
- <div>
13
- <%- render_partial('_form.ejs') %>
14
- </div>
15
- </div>
16
- </div>
@@ -1,76 +0,0 @@
1
- <% form_for({ publishing }, errors, (f) => { %>
2
- <form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${publishing.id}/publishes` %>" method="post" class="form">
3
- <% if (errors.slug) { %>
4
- <div class="mb-4 text-red-500">A page with this URL already exists</div>
5
- <% } %>
6
-
7
- <%- f.field('publishing.type', { as: 'radio_group', label: "", options: [["now", "Publish now"], ["later", "Schedule for a date"]] }) %>
8
- <%- f.field('publishing.mergeAt', { type: 'datetime-local', label: 'Publish revision at (UTC)' }) %>
9
-
10
- <%- f.field('publishing.title', { required: true, hint: "Appears in the history of changes" }) %>
11
- <%- f.field('publishing.description', { as: "textarea", hint: "Provide optional details" }) %>
12
- <%- f.field('publishing.visibility', { as: 'select', required: true, options: visibilityOptions }) %>
13
- <%- f.field('publishing.username', { required: true }) %>
14
- <%- f.field('publishing.password', { required: true }) %>
15
-
16
- <div class="form-actions">
17
- <div class="btn-toolbar">
18
- <%- f.submit('Save record', { class: 'btn-primary' }) %>
19
-
20
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${publishing.originalId}` %>" class="btn-secondary">Back</a>
21
- </div>
22
- </div>
23
- </form>
24
- <% }) %>
25
-
26
- <script>
27
- // Takes care of the publishint time!
28
- const typeEl = document.getElementById("f_publishing_type")
29
- const mergeAtEl = document.getElementById("f_publishing_mergeAt")
30
-
31
- function radioGroupValue(radioGroup) {
32
- let val = "";
33
-
34
- radioGroup.querySelectorAll('input[type="radio"]').forEach(input => {
35
-
36
- if (input.checked) {
37
- val = input.value
38
- }
39
-
40
- })
41
-
42
- return val;
43
- }
44
-
45
- function handleTypeChange(value) {
46
- const shouldShowMergeAt = value === "later"
47
-
48
- if (shouldShowMergeAt) {
49
- mergeAtEl.parentNode.classList.remove('hidden')
50
- } else {
51
- mergeAtEl.parentNode.classList.add('hidden')
52
- }
53
- }
54
-
55
- typeEl.addEventListener("change", (e) => handleTypeChange(e.target.value))
56
- handleTypeChange(radioGroupValue(typeEl))
57
- </script>
58
-
59
- <script>
60
- const visibilityEl = document.getElementById("f_publishing_visibility");
61
- const usernameEl = document.getElementById("f_publishing_username").parentElement;
62
- const passwordEl = document.getElementById("f_publishing_password").parentElement;
63
-
64
- function handleVisibilityChange(value) {
65
- const isHidden = value !== "protected";
66
-
67
- usernameEl.classList.toggle('hidden', isHidden);
68
- passwordEl.classList.toggle('hidden', isHidden);
69
-
70
- usernameEl.querySelector('input').toggleAttribute('required', !isHidden);
71
- passwordEl.querySelector('input').toggleAttribute('required', !isHidden);
72
- }
73
-
74
- visibilityEl.addEventListener("change", (e) => handleVisibilityChange(e.target.value));
75
- handleVisibilityChange(visibilityEl.value);
76
- </script>
@@ -1,9 +0,0 @@
1
- <div class="page-wrapper">
2
- <div class="page-title">
3
- <h1 class="heading-1">Publish revision</h1>
4
- </div>
5
-
6
- <div class="grid gap-4 md:grid-cols-3">
7
- <%- render_partial('_form.ejs') %>
8
- </div>
9
- </div>
@@ -1,13 +0,0 @@
1
- <% form_for({ resource }, errors, (f) => { %>
2
- <form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/tags` %>" method="POST" class="form">
3
- <%- f.field('resource.tags', { as: 'checkbox_group', options: tags.map(tag => [tag.id, tag.name]) }) %>
4
-
5
- <div class="form-actions">
6
- <div class="btn-toolbar">
7
- <%- f.submit('Save', { class: 'btn-primary' }) %>
8
- <%- f.submit('Save and publish', { class: 'btn-secondary', name: '_next', value: 'publish' }) %>
9
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.originalId}` %>" class="btn-text">Back</a>
10
- </div>
11
- </div>
12
- </form>
13
- <% }) %>
@@ -1,13 +0,0 @@
1
- <% form_for({ resource }, errors, (f) => { %>
2
- <form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${resource.id}/visuals` %>" method="POST" class="form">
3
- <%- include('../../_shared/_layout_input.ejs', { f }) %>
4
-
5
- <div class="form-actions">
6
- <div class="btn-toolbar">
7
- <%- f.submit('Save', { class: 'btn-primary' }) %>
8
- <%- f.submit('Save and publish', { class: 'btn-secondary', name: '_next', value: 'publish' }) %>
9
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.originalId}` %>" class="btn-text">Back</a>
10
- </div>
11
- </div>
12
- </form>
13
- <% }) %>
@@ -1,16 +0,0 @@
1
- <div class="page-wrapper">
2
- <div class="page-title">
3
- <h1 class="heading-1">
4
- <span class="opacity-50">Visuals / </span>
5
- <%= resource.title %>
6
- </h1>
7
- </div>
8
-
9
- <%- render_partial('../_nav.ejs', { resource, active: 'visuals' }) %>
10
-
11
- <div class="grid gap-4 md:grid-cols-3">
12
- <div>
13
- <%- render_partial('_form.ejs') %>
14
- </div>
15
- </div>
16
- </div>
File without changes
@@ -1,9 +0,0 @@
1
- <% if (Object.keys(_context.query).some(k => k.startsWith('f:')) && items.list.length > 0) { %>
2
- <%
3
- const queryString = Object.entries(_context.query)
4
- .filter(([key, value]) => value !== undefined && value !== null && value !== '')
5
- .map(([key, value]) => Array.isArray(value) ? value.map(v => `${key}=${encodeURIComponent(v)}`).join('&') : `${key}=${encodeURIComponent(value)}`)
6
- .join('&');
7
- %>
8
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/exports${queryString ? '?' + queryString : ''}` %>" class="btn-secondary">Export</a>
9
- <% } %>
@@ -1,24 +0,0 @@
1
- <div class="actions-toolbar justify-end">
2
- <form method="POST" action="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}/${_context.resourceConfig.resourceType}_changes/reverts` %>" class="inline-block">
3
- <input type="hidden" name="version" value="<%= change.version %>">
4
-
5
- <% if (history.isChangeRevertable(change, maxVersion) && !(resource.revisionsCount >= _context.maxOpenRevisions)) { %>
6
- <button type="submit" class="btn-text">
7
- Revert
8
- </button>
9
- <% } else { %>
10
- <button type="submit" disabled class="btn-text opacity-50 cursor-not-allowed">
11
- Revert
12
- </button>
13
- <% } %>
14
- </form>
15
-
16
- <a href="/remote/login?redirect_to=/<%= _context.locale %>/admin/<%= _context.resourceConfig.resourceTypePlural %>/<%= resource.id %>/changes/<%= change.version %>" class="btn-text has-icon">
17
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
18
- <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" />
19
- <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
20
- </svg>
21
-
22
- Preview
23
- </a>
24
- </div>
@@ -1,8 +0,0 @@
1
- <div class="body-3 text-raketa-foreground/50">
2
- <div class="flex items-center gap-1" title="<%= revision.meta.operatorMeta.name %>">
3
- <% if (revision.meta.operatorMeta.avatar) { %>
4
- <img src="<%= revision.meta.operatorMeta.avatar %>" class="rounded-full size-4">
5
- <% } %>
6
- <%= revision.meta.operatorMeta.name %>
7
- </div>
8
- </div>
@@ -1,68 +0,0 @@
1
- <div class="actions-toolbar justify-end">
2
- <a href="/remote/login?redirect_to=/<%= _context.locale %>/admin/<%= _context.resourceConfig.resourceType %>-revisions/<%= revision.id %>/builder" class="btn-text has-icon <%= revision.meta && revision.meta.locked ? 'cursor-not-allowed text-gray-400 pointer-events-none' : '' %>">
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
- Edit content
7
- </a>
8
-
9
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${revision.id}/general/edit` %>" class="btn-text has-icon <%= revision.meta && revision.meta.locked ? 'cursor-not-allowed text-gray-400 pointer-events-none' : '' %>">
10
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
11
- <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" />
12
- <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
13
- </svg>
14
-
15
- Edit settings
16
- </a>
17
-
18
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${revision.id}/publishes/new` %>" class="btn-text has-icon <%= revision.meta && revision.meta.locked ? 'cursor-not-allowed text-gray-400 pointer-events-none' : '' %>">
19
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
20
- <path stroke-linecap="round" stroke-linejoin="round" d="M15.59 14.37a6 6 0 0 1-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 0 0 6.16-12.12A14.98 14.98 0 0 0 9.631 8.41m5.96 5.96a14.926 14.926 0 0 1-5.841 2.58m-.119-8.54a6 6 0 0 0-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 0 0-2.58 5.84m2.699 2.7c-.103.021-.207.041-.311.06a15.09 15.09 0 0 1-2.448-2.448 14.9 14.9 0 0 1 .06-.312m-2.24 2.39a4.493 4.493 0 0 0-1.757 4.306 4.493 4.493 0 0 0 4.306-1.758M16.5 9a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z" />
21
- </svg>
22
-
23
- Publish
24
- </a>
25
-
26
- <details class="unstyled-details">
27
- <summary class="cursor-pointer">
28
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
29
- <path stroke-linecap="round" stroke-linejoin="round" d="M12 6.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 12.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 18.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z" />
30
- </svg>
31
- </summary>
32
-
33
- <div class="absolute border bg-raketa-background p-4 right-4 z-20 mt-2 flex flex-col gap-4 shadow-md rounded dark:border-neutral-500">
34
- <a href="/remote/login?redirect_to=/<%= _context.locale %>/admin/<%= _context.resourceConfig.resourceType %>-revisions/<%= revision.id %>/preview" target="_blank" class="btn-text has-icon <%= revision.meta && revision.meta.locked ? 'cursor-not-allowed text-gray-400 pointer-events-none' : '' %>">
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
- <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" />
37
- <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
38
- </svg>
39
-
40
- Preview
41
- </a>
42
-
43
- <% if (revision.meta && revision.meta.locked) { %>
44
- <form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${revision.id}/unlocks` %>" method="post" class="inline-flex gap-2 items-center">
45
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
46
- <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 10.5V6.75a4.5 4.5 0 1 1 9 0v3.75M3.75 21.75h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H3.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z" />
47
- </svg>
48
- <%- f.submit('Unlock', { class: 'btn-text' }) %>
49
- </form>
50
- <% } else { %>
51
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${revision.id}/locks/new` %>" class="btn-text has-icon">
52
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
53
- <path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z" />
54
- </svg>
55
- Lock
56
- </a>
57
- <% } %>
58
-
59
- <button hx-delete="<%= `/${_context.locale}/${_context.resourceConfig.resourceType}_revisions/${revision.id}` %>" hx-confirm="Are you sure?" type="button" class="btn-danger has-icon <%= revision.meta && revision.meta.locked ? 'cursor-not-allowed text-gray-400 pointer-events-none' : '' %>">
60
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
61
- <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" />
62
- </svg>
63
-
64
- Delete
65
- </button>
66
- </div>
67
- </details>
68
- </div>
@@ -1,14 +0,0 @@
1
- <div class="flex flex-col pb-4">
2
- <h1 class="heading-1 flex items-center gap-2">
3
- <%= resource.title %>
4
-
5
- <% if (resource.visibility !== "private") { %>
6
- <a href="<%= _context.remoteConfig.resourceUrl(resource, _context.resourceConfig.resourceType, _context.locale) %>" target="_blank">
7
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6 text-raketa-primary">
8
- <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25" />
9
- </svg>
10
- </a>
11
- <% } %>
12
- </h1>
13
- <a href="<%= _context.remoteConfig.resourceUrl(resource, _context.resourceConfig.resourceType, _context.locale) %>" target="_blank" class="btn-text"><%= _context.remoteConfig.resourceUrl(resource, _context.resourceConfig.resourceType, _context.locale) %></a>
14
- </div>
@@ -1,45 +0,0 @@
1
- <div>
2
- <div class="actions-toolbar">
3
- <form method="POST" action="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}/${_context.resourceConfig.resourceType}_revisions` %>" class="inline-block">
4
- <% if (resource.revisionsCount >= _context?.maxOpenRevisions) { %>
5
- <button type="submit" class="btn-primary" disabled style="opacity: 50%;">
6
- Start revision
7
- </button>
8
- <% } else {%>
9
- <button type="submit" class="btn-primary">
10
- Start revision
11
- </button>
12
- <% } %>
13
- </form>
14
-
15
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}/urls/new` %>" class="btn-text has-icon">
16
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
17
- <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" />
18
- </svg>
19
-
20
- Change URL
21
- </a>
22
-
23
- <form action="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}/clones` %>" method="post" class="inline-block">
24
- <button type="submit" class="btn-text has-icon">
25
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
26
- <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" />
27
- </svg>
28
-
29
- Clone <%= Inflector.humanize(Inflector.downcase(_context.resourceConfig.resourceType)) %>
30
- </button>
31
- </form>
32
-
33
- <a href="<%= `/${_context.locale}/${_context.resourceConfig.resourceTypePlural}/${resource.id}/deletes/new` %>" class="btn-danger has-icon">
34
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4">
35
- <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" />
36
- </svg>
37
-
38
- Delete <%= Inflector.humanize(Inflector.downcase(_context.resourceConfig.resourceType)) %>
39
- </a>
40
- </div>
41
-
42
- <% if (_context.query?.revisions_count_error) { %>
43
- <div class="text-red-600">Cannot open a new revision. Current limit is <%= _context.maxOpenRevisions %>. </div>
44
- <% } %>
45
- </div>
@@ -1,9 +0,0 @@
1
- <div class="page-wrapper">
2
- <div class="page-title">
3
- <h1 class="heading-1">Create <%= Inflector.humanize(Inflector.downcase(_context.resourceConfig.resourceType)) %></h1>
4
- </div>
5
-
6
- <div class="grid gap-4 md:grid-cols-3">
7
- <%- render_partial('_form.ejs') %>
8
- </div>
9
- </div>