@raketa-cloud/admin 1.7.3 → 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.
- package/package.json +3 -3
- package/src/HonoAdapter.js +7 -3
- package/src/cloud/Articles.js +10 -3
- package/src/cloud/Events.js +9 -2
- package/src/cloud/Pages.js +11 -1
- package/src/cloud/documents/articlesDocuments.js +4 -2
- package/src/cloud/documents/eventsDocuments.js +4 -2
- package/src/cloud/documents/pagesDocuments.js +4 -2
- package/src/handlers/articles/ArticlesHandler.js +10 -4
- package/src/handlers/articles/ExportsHandler.js +35 -0
- package/src/handlers/events/EventsHandler.js +10 -4
- package/src/handlers/events/ExportsHandler.js +35 -0
- package/src/handlers/pages/ExportsHandler.js +35 -0
- package/src/handlers/pages/PagesHandler.js +10 -4
- package/src/helpers/CSVExportHelper.js +103 -0
- package/src/routeArticlesModule.js +13 -0
- package/src/routeEventsModule.js +13 -0
- package/src/routePagesModule.js +13 -0
- package/src/tests/handlers/articles/ArticlesHandler.test/index.test.js +18 -2
- package/src/tests/handlers/articles/ExportsHandler.test/index.test.js +217 -0
- package/src/tests/handlers/events/EventsHandler.test/index.test.js +17 -1
- package/src/tests/handlers/events/ExportsHandler.test/index.test.js +212 -0
- package/src/tests/handlers/pages/ExportsHandler.test/index.test.js +212 -0
- package/src/tests/handlers/pages/PagesHandler.test/index.test.js +17 -1
- package/src/tests/helpers/CSVExportHelper.test.js +364 -0
- package/src/views/articles/_shared/_export_button.ejs +9 -0
- package/src/views/articles/index.ejs +37 -1
- package/src/views/events/_shared/_export_button.ejs +9 -0
- package/src/views/events/index.ejs +37 -1
- package/src/views/layouts/application.ejs +2 -0
- package/src/views/pages/_shared/_export_button.ejs +9 -0
- package/src/views/pages/index.ejs +37 -1
- package/src/views/settings/meta/edit_form.ejs +2 -2
|
@@ -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
|
-
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<%- f.field('resource.meta.title', { label: "Meta title", hint: "Used for both meta and OpenGraph" }) %>
|
|
12
12
|
<%- f.field('resource.meta.description', { as: "textarea", label: "Meta description", hint: "Used for both meta and OpenGraph" }) %>
|
|
13
13
|
|
|
14
|
-
<raketa-image-picker name="resource[image]" value="<%= JSON.stringify(resource.meta?.image || {}) %>" label="OpenGraph image"></raketa-image-picker>
|
|
14
|
+
<raketa-image-picker name="resource[meta][image]" value="<%= JSON.stringify(resource.meta?.image || {}) %>" label="OpenGraph image"></raketa-image-picker>
|
|
15
15
|
|
|
16
16
|
<div class="form-actions">
|
|
17
17
|
<div class="btn-toolbar">
|
|
@@ -21,4 +21,4 @@
|
|
|
21
21
|
</form>
|
|
22
22
|
<% }) %>
|
|
23
23
|
</div>
|
|
24
|
-
</div>
|
|
24
|
+
</div>
|