@raketa-cloud/admin 1.7.4 → 1.7.5

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 (32) hide show
  1. package/package.json +1 -1
  2. package/src/HonoAdapter.js +7 -3
  3. package/src/cloud/Articles.js +10 -3
  4. package/src/cloud/Events.js +9 -2
  5. package/src/cloud/Pages.js +11 -1
  6. package/src/cloud/documents/articlesDocuments.js +4 -2
  7. package/src/cloud/documents/eventsDocuments.js +4 -2
  8. package/src/cloud/documents/pagesDocuments.js +4 -2
  9. package/src/handlers/articles/ArticlesHandler.js +10 -4
  10. package/src/handlers/articles/ExportsHandler.js +35 -0
  11. package/src/handlers/events/EventsHandler.js +10 -4
  12. package/src/handlers/events/ExportsHandler.js +35 -0
  13. package/src/handlers/pages/ExportsHandler.js +35 -0
  14. package/src/handlers/pages/PagesHandler.js +10 -4
  15. package/src/helpers/CSVExportHelper.js +103 -0
  16. package/src/routeArticlesModule.js +13 -0
  17. package/src/routeEventsModule.js +13 -0
  18. package/src/routePagesModule.js +13 -0
  19. package/src/tests/handlers/articles/ArticlesHandler.test/index.test.js +18 -2
  20. package/src/tests/handlers/articles/ExportsHandler.test/index.test.js +217 -0
  21. package/src/tests/handlers/events/EventsHandler.test/index.test.js +17 -1
  22. package/src/tests/handlers/events/ExportsHandler.test/index.test.js +212 -0
  23. package/src/tests/handlers/pages/ExportsHandler.test/index.test.js +212 -0
  24. package/src/tests/handlers/pages/PagesHandler.test/index.test.js +17 -1
  25. package/src/tests/helpers/CSVExportHelper.test.js +364 -0
  26. package/src/views/articles/_shared/_export_button.ejs +9 -0
  27. package/src/views/articles/index.ejs +37 -1
  28. package/src/views/events/_shared/_export_button.ejs +9 -0
  29. package/src/views/events/index.ejs +37 -1
  30. package/src/views/layouts/application.ejs +2 -0
  31. package/src/views/pages/_shared/_export_button.ejs +9 -0
  32. package/src/views/pages/index.ejs +37 -1
@@ -139,6 +139,42 @@
139
139
  <input type="text" name="f:keyword" value="<%= _context.query["f:keyword"] %>" />
140
140
  </div>
141
141
 
142
+ <div class="mb-4">
143
+ <label for="widget" class="font-semibold hover:cursor-pointer body-3">Widget</label>
144
+ <input type="text" name="f:widget" value="<%= _context.query["f:widget"] %>" />
145
+ </div>
146
+
147
+ <div class="mb-4">
148
+ <label for="widget_keyword" class="font-semibold hover:cursor-pointer body-3">Widget text keyword</label>
149
+ <input type="text" name="f:widget_keyword" value="<%= _context.query["f:widget_keyword"] %>" />
150
+ </div>
151
+
152
+ <div class="mb-4">
153
+ <label for="last_updated_from" class="font-semibold hover:cursor-pointer body-3">Last Updated from</label>
154
+ <input type="datetime-local" name="f:last_updated_from" value="<%= _context.query["f:last_updated_from"] %>" />
155
+ </div>
156
+
157
+ <div class="mb-4">
158
+ <label for="last_updated_to" class="font-semibold hover:cursor-pointer body-3">Last Updated to</label>
159
+ <input type="datetime-local" name="f:last_updated_to" value="<%= _context.query["f:last_updated_to"] %>" />
160
+ </div>
161
+
162
+ <div class="mb-4">
163
+ <label for="" class="font-semibold hover:cursor-pointer body-3">Translations</label>
164
+ <div class="checkbox-group mb-4">
165
+ <% translations.filter(item => item.code !== _context.locale).forEach((item,idx)=> { %>
166
+ <div class="flex items-center gap-1">
167
+ <% if (utils.includedInCollection(item.code, _context.query["f:translations"])) { %>
168
+ <input type="checkbox" name="f:translations" id='locale-<%= item.code %>' checked value="<%= item.code %>" class="hover:cursor-pointer">
169
+ <% } else { %>
170
+ <input type="checkbox" name="f:translations" id='locale-<%= item.code %>' value="<%= item.code %>" class="hover:cursor-pointer">
171
+ <% } %>
172
+ <label for='locale-<%= item.code %>' class="body-2 hover:cursor-pointer"><%= item.name %></label>
173
+ </div>
174
+ <% }); %>
175
+ </div>
176
+ </div>
177
+
142
178
  <div class="mb-4">
143
179
  <label for="" class="font-semibold hover:cursor-pointer body-3">Tags</label>
144
180
  <div class="checkbox-group mb-4">
@@ -157,8 +193,8 @@
157
193
 
158
194
  <div class="btn-toolbar">
159
195
  <button type="submit" class="btn-primary">Search</button>
196
+ <%- include('./_shared/_export_button.ejs') %>
160
197
  <a href="<%= `/${_context.locale}/${_context.resourceConfig.eventTypePlural}` %>" class="btn-text">Clear search</a>
161
198
  </div>
162
199
  </form>
163
200
  </div>
164
-
@@ -227,6 +227,8 @@
227
227
 
228
228
  // Setup datetime inputs
229
229
  document.querySelectorAll('input[type="datetime-local"]').forEach(input => {
230
+ if (input.dataset.noHints === 'true') return;
231
+
230
232
  enhanceDateTimeInputs(input);
231
233
 
232
234
  input.addEventListener("change", (event) => enhanceDateTimeInputs(event.target))
@@ -0,0 +1,9 @@
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.pageTypePlural}/exports${queryString ? '?' + queryString : ''}` %>" class="btn-secondary">Export</a>
9
+ <% } %>
@@ -134,6 +134,42 @@
134
134
  <input type="text" name="f:keyword" value="<%= _context.query["f:keyword"] %>" />
135
135
  </div>
136
136
 
137
+ <div class="mb-4">
138
+ <label for="widget" class="font-semibold hover:cursor-pointer body-3">Widget</label>
139
+ <input type="text" name="f:widget" value="<%= _context.query["f:widget"] %>" />
140
+ </div>
141
+
142
+ <div class="mb-4">
143
+ <label for="widget_keyword" class="font-semibold hover:cursor-pointer body-3">Widget text keyword</label>
144
+ <input type="text" name="f:widget_keyword" value="<%= _context.query["f:widget_keyword"] %>" />
145
+ </div>
146
+
147
+ <div class="mb-4">
148
+ <label for="last_updated_from" class="font-semibold hover:cursor-pointer body-3">Last Updated from</label>
149
+ <input type="datetime-local" name="f:last_updated_from" value="<%= _context.query["f:last_updated_from"] %>" />
150
+ </div>
151
+
152
+ <div class="mb-4">
153
+ <label for="last_updated_to" class="font-semibold hover:cursor-pointer body-3">Last Updated to</label>
154
+ <input type="datetime-local" name="f:last_updated_to" value="<%= _context.query["f:last_updated_to"] %>" />
155
+ </div>
156
+
157
+ <div class="mb-4">
158
+ <label for="" class="font-semibold hover:cursor-pointer body-3">Translations</label>
159
+ <div class="checkbox-group mb-4">
160
+ <% translations.filter(item => item.code !== _context.locale).forEach((item,idx)=> { %>
161
+ <div class="flex items-center gap-1">
162
+ <% if (utils.includedInCollection(item.code, _context.query["f:translations"])) { %>
163
+ <input type="checkbox" name="f:translations" id='locale-<%= item.code %>' checked value="<%= item.code %>" class="hover:cursor-pointer">
164
+ <% } else { %>
165
+ <input type="checkbox" name="f:translations" id='locale-<%= item.code %>' value="<%= item.code %>" class="hover:cursor-pointer">
166
+ <% } %>
167
+ <label for='locale-<%= item.code %>' class="body-2 hover:cursor-pointer"><%= item.name %></label>
168
+ </div>
169
+ <% }); %>
170
+ </div>
171
+ </div>
172
+
137
173
  <div class="mb-4">
138
174
  <label for="" class="font-semibold hover:cursor-pointer body-3">Tags</label>
139
175
  <div class="checkbox-group mb-4">
@@ -152,8 +188,8 @@
152
188
 
153
189
  <div class="btn-toolbar">
154
190
  <button type="submit" class="btn-primary">Search</button>
191
+ <%- include('./_shared/_export_button.ejs') %>
155
192
  <a href="<%= `/${_context.locale}/${_context.resourceConfig.pageTypePlural}` %>" class="btn-text">Clear search</a>
156
193
  </div>
157
194
  </form>
158
195
  </div>
159
-