@raketa-cloud/admin 0.0.97 → 0.0.99

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 (44) hide show
  1. package/package.json +1 -1
  2. package/src/Adapter.js +5 -1
  3. package/src/cloud/ArticleChanges.js +24 -3
  4. package/src/cloud/EventChanges.js +24 -3
  5. package/src/cloud/PageChanges.js +24 -3
  6. package/src/cloud/Pages.js +1 -1
  7. package/src/cloud/documents/articlesDocuments.js +18 -5
  8. package/src/cloud/documents/common.js +2 -0
  9. package/src/cloud/documents/eventsDocuments.js +17 -4
  10. package/src/cloud/documents/pagesDocuments.js +17 -4
  11. package/src/handlers/articles/ArticlesHandler.js +2 -2
  12. package/src/handlers/articles/HistoryHandler.js +31 -0
  13. package/src/handlers/events/EventsHandler.js +2 -2
  14. package/src/handlers/events/HistoryHandler.js +31 -0
  15. package/src/handlers/pages/HistoryHandler.js +31 -0
  16. package/src/handlers/pages/PagesHandler.js +2 -2
  17. package/src/helpers/historyUtils.js +133 -0
  18. package/src/helpers/utils.js +21 -0
  19. package/src/routeArticlesModule.js +19 -13
  20. package/src/routeEventsModule.js +18 -12
  21. package/src/routePagesModule.js +7 -1
  22. package/src/tests/handlers/articles/ArticlesHandler.test/show.test.js +5 -5
  23. package/src/tests/handlers/articles/ArticlesHistoryHandler.test/index.test.js +87 -0
  24. package/src/tests/handlers/events/EventsHandler.test/show.test.js +5 -5
  25. package/src/tests/handlers/events/EventsHistoryHandler.test/index.test.js +87 -0
  26. package/src/tests/handlers/pages/PagesHandler.test/show.test.js +5 -5
  27. package/src/tests/handlers/pages/PagesHistoryHandler.test/index.test.js +87 -0
  28. package/src/tests/helpers/historyUtils.test.js +107 -0
  29. package/src/tests/helpers/utils.test.js +27 -0
  30. package/src/views/articles/_shared/_history_toolbar.ejs +9 -8
  31. package/src/views/articles/_shared/history_table.ejs +68 -0
  32. package/src/views/articles/history/index.ejs +87 -0
  33. package/src/views/articles/index.ejs +1 -1
  34. package/src/views/articles/show.ejs +12 -52
  35. package/src/views/events/_shared/_history_toolbar.ejs +9 -8
  36. package/src/views/events/_shared/history_table.ejs +68 -0
  37. package/src/views/events/history/index.ejs +87 -0
  38. package/src/views/events/index.ejs +1 -1
  39. package/src/views/events/show.ejs +12 -52
  40. package/src/views/pages/_shared/_history_toolbar.ejs +8 -7
  41. package/src/views/pages/_shared/history_table.ejs +68 -0
  42. package/src/views/pages/history/index.ejs +87 -0
  43. package/src/views/pages/index.ejs +1 -1
  44. package/src/views/pages/show.ejs +12 -52
@@ -0,0 +1,87 @@
1
+ <div class="page-wrapper">
2
+ <div class="page-title">
3
+ <div>
4
+ <h1 class="heading-1">Pages / History of changes</h1>
5
+ <span class="body-2 opacity-50"><%= %></span>
6
+ </div>
7
+
8
+ <div class="actions-toolbar">
9
+ <a href="<%= `/${_context.locale}/${_context.resourceConfig.pageTypePlural}/${resource.id}` %>" class="btn-text">Back</a>
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
+ <%- render_partial('../_shared/history_table.ejs', {
19
+ changes,
20
+ resource,
21
+ _context,
22
+ render_partial,
23
+ skipPagination: false,
24
+ toolbarPath: '../_shared/_history_toolbar.ejs'
25
+ }) %>
26
+
27
+ </div>
28
+
29
+ <div data-sidebar="1" class="search-sidebar <%= Object.keys(_context.query).some(k => k.startsWith('f:')) ? '' : 'hidden' %>">
30
+ <span class="heading-2">Search by</span>
31
+
32
+ <form action="<%= `/${_context.locale}/${_context.resourceConfig.pageTypePlural}/${resource.id}/history` %>" method="GET" class="form mt-4">
33
+ <input type="hidden" name="order_direction" value="<%= _context.query.order_direction %>" />
34
+ <input type="hidden" name="order_by" value="<%= _context.query.order_by %>" />
35
+
36
+ <div class="mb-4">
37
+ <label for="date_from" class="font-semibold hover:cursor-pointer body-3">From</label>
38
+ <input type="date" name="f:date_from" value="<%= _context.query["f:date_from"] %>" />
39
+ </div>
40
+
41
+ <div class="mb-4">
42
+ <label for="date_to" class="font-semibold hover:cursor-pointer body-3">To</label>
43
+ <input type="date" name="f:date_to" value="<%= _context.query["f:date_to"] %>" />
44
+ </div>
45
+
46
+ <div class="mb-4">
47
+ <%- f.field('f:operator', {
48
+ as: 'select',
49
+ options: editors.map(editor => [editor.id, editor.name]),
50
+ label: "Editor",
51
+ include_blank: 'All Editors',
52
+ value: _context.query["f:operator"]
53
+ }) %>
54
+ </div>
55
+
56
+ <div class="mb-4">
57
+ <label for="" class="font-semibold hover:cursor-pointer body-3">Changes</label>
58
+ <div class="checkbox-group mb-4">
59
+ <% Object.entries(history.changeTypes(_context.resourceConfig.pageType)).forEach(([key, {label}])=> { %>
60
+ <div class="flex items-center gap-1">
61
+ <% if (utils.includedInCollection(key, _context.query["f:change_type"])) { %>
62
+ <input type="checkbox" name="f:change_type" id='change-<%= key %>' checked value="<%= key %>" class="hover:cursor-pointer">
63
+ <% } else { %>
64
+ <input type="checkbox" name="f:change_type" id='change-<%= key %>' value="<%= key %>" class="hover:cursor-pointer">
65
+ <% } %>
66
+ <label for='change-<%= key %>' class="body-2 hover:cursor-pointer">
67
+ <%= label %>
68
+ </label>
69
+ </div>
70
+ <% }); %>
71
+ </div>
72
+ </div>
73
+
74
+ <div class="btn-toolbar">
75
+ <button type="submit" class="btn-primary">Search</button>
76
+ <a href="<%= `/${_context.locale}/${_context.resourceConfig.pageTypePlural}/${resource.id}/history` %>" class="btn-text">Clear search</a>
77
+ </div>
78
+ </form>
79
+ </div>
80
+
81
+ <script>
82
+ const sidebar = document.querySelector("[data-sidebar]");
83
+ const searchToggle = document.querySelector('[data-toggle-sidebar]');
84
+ searchToggle.addEventListener('click', () => {
85
+ sidebar.classList.toggle('hidden');
86
+ });
87
+ </script>
@@ -139,7 +139,7 @@
139
139
  <div class="checkbox-group mb-4">
140
140
  <% tags.forEach((item,idx)=> { %>
141
141
  <div class="flex items-center gap-1">
142
- <% if (Array.from(_context.query["f:tags"] || []).includes(item.id)) { %>
142
+ <% if (utils.includedInCollection(item.id, _context.query["f:tags"])) { %>
143
143
  <input type="checkbox" name="f:tags" id='tag-<%= item.id %>' checked value="<%= item.id %>" class="hover:cursor-pointer">
144
144
  <% } else { %>
145
145
  <input type="checkbox" name="f:tags" id='tag-<%= item.id %>' value="<%= item.id %>" class="hover:cursor-pointer">
@@ -219,57 +219,17 @@
219
219
  History of changes
220
220
  </h4>
221
221
 
222
- <table class="data-grid">
223
- <thead>
224
- <tr>
225
- <th>Title</th>
226
- <th>Date of change</th>
227
- <th>Published by</th>
228
- <th>&nbsp;</th>
229
- </tr>
230
- </thead>
231
-
232
- <tbody>
233
- <% const maxVersion = Math.max(...changes.map((ch) => ch.version)); %>
234
- <% changes.forEach((change, idx)=> { %>
235
- <tr class="border-b border-mono-25">
236
- <td class="py-4 pl-2">
237
- <div class="flex items-center gap-2">
238
- <%= [change.title, change.description].filter(Boolean).join(": ") %>
239
-
240
- <% if (change.source === "revert") { %>
241
- <img src="/static/_assets/revert.svg" alt="Revert version" class="size-4">
242
- <% } %>
243
- </div>
244
- </td>
245
-
246
- <td class="whitespace-nowrap">
247
- <div class="body-3 text-raketa-foreground/50">
248
- <div class="flex items-center gap-1">
249
- <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">
250
- <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" />
251
- </svg>
252
-
253
- <time data-pretty-datetime datetime="<%= change.insertedAt %>"><%= change.insertedAt %></time>
254
- </div>
255
- </div>
256
- </td>
257
-
258
- <td class="whitespace-nowrap">
259
- <div class="body-3 text-raketa-foreground/50">
260
- <div class="flex items-center gap-1" title="<%= change.operatorMeta.name %>">
261
- <img src="<%= change.operatorMeta.avatar %>" class="size-4 rounded-full">
262
- <%= change.operatorMeta.name %>
263
- </div>
264
- </div>
265
- </td>
266
-
267
- <td>
268
- <%- render_partial('./_shared/_history_toolbar.ejs', { maxVersion, change }) %>
269
- </td>
270
- </tr>
271
- <% }); %>
272
- </tbody>
273
- </table>
222
+ <%- render_partial('./_shared/history_table.ejs', {
223
+ changes,
224
+ resource,
225
+ _context,
226
+ render_partial,
227
+ skipPagination: true,
228
+ toolbarPath: './_shared/_history_toolbar.ejs'
229
+ }) %>
230
+
231
+ <a href="<%= `/${_context.locale}/${_context.resourceConfig.pageTypePlural}/${resource.id}/history` %>" class="btn-text ml-2 my-8">
232
+ Full page history
233
+ </a>
274
234
  </div>
275
235
  </div>