@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
package/dist/application.css
CHANGED
package/package.json
CHANGED
package/src/HonoAdapter.js
CHANGED
|
@@ -65,13 +65,19 @@ function putIn(result, key, value) {
|
|
|
65
65
|
const sanitizePath = (filePath) =>
|
|
66
66
|
path.normalize(path.join("/", ...filePath.split("/")));
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
function packageFallbackPaths(views, suffix) {
|
|
69
|
+
const rest = views.split("/").slice(1);
|
|
70
|
+
return ["resources", "resource_revisions"].map((base) =>
|
|
71
|
+
sanitizePath(`${currentPath}/views/${[base, ...rest].join("/")}/${suffix}`),
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Find template path, preferring an app override over the package template
|
|
76
|
+
function getPartialPath(partialPath, views) {
|
|
70
77
|
const paths = [
|
|
71
78
|
sanitizePath(`${process.cwd()}/src/views/${views}/${partialPath}`),
|
|
72
79
|
sanitizePath(`${currentPath}/views/${views}/${partialPath}`),
|
|
73
|
-
|
|
74
|
-
sanitizePath(`${currentPath}/views/${viewsFallback}/${partialPath}`),
|
|
80
|
+
...packageFallbackPaths(views, partialPath),
|
|
75
81
|
].filter(Boolean);
|
|
76
82
|
|
|
77
83
|
// Return first existing path
|
|
@@ -80,7 +86,7 @@ function getPartialPath(partialPath, views, viewsFallback) {
|
|
|
80
86
|
if (existingPath) return existingPath;
|
|
81
87
|
|
|
82
88
|
throw new Error(
|
|
83
|
-
`Template not found: "${partialPath}"\nSearched in:\n${paths.join("\n")}
|
|
89
|
+
`Template not found: "${partialPath}"\nSearched in:\n${paths.join("\n")}`,
|
|
84
90
|
);
|
|
85
91
|
}
|
|
86
92
|
|
|
@@ -137,14 +143,17 @@ export default class HonoAdapter {
|
|
|
137
143
|
this.globalAfterFilters.push({ pattern, filter });
|
|
138
144
|
}
|
|
139
145
|
|
|
140
|
-
getActionPath(views,
|
|
141
|
-
const packagePath = viewsFallback
|
|
142
|
-
? `${currentPath}/views/${viewsFallback}/${action}.ejs`
|
|
143
|
-
: `${currentPath}/views/${views}/${action}.ejs`;
|
|
144
|
-
|
|
146
|
+
getActionPath(views, action) {
|
|
145
147
|
const appPath = `${process.cwd()}/src/views/${views}/${action}.ejs`;
|
|
148
|
+
if (existsSync(appPath)) return appPath;
|
|
146
149
|
|
|
147
|
-
|
|
150
|
+
const packagePath = `${currentPath}/views/${views}/${action}.ejs`;
|
|
151
|
+
if (existsSync(packagePath)) return packagePath;
|
|
152
|
+
|
|
153
|
+
const fallback = packageFallbackPaths(views, `${action}.ejs`).find(
|
|
154
|
+
existsSync,
|
|
155
|
+
);
|
|
156
|
+
return fallback ?? packagePath;
|
|
148
157
|
}
|
|
149
158
|
|
|
150
159
|
getHelpers(viewHelpersConfig) {
|
|
@@ -172,9 +181,9 @@ export default class HonoAdapter {
|
|
|
172
181
|
});
|
|
173
182
|
}
|
|
174
183
|
|
|
175
|
-
renderPartial(assigns, views
|
|
184
|
+
renderPartial(assigns, views) {
|
|
176
185
|
return function render(relativePath, localAssigns) {
|
|
177
|
-
const partialPath = getPartialPath(relativePath, views
|
|
186
|
+
const partialPath = getPartialPath(relativePath, views);
|
|
178
187
|
|
|
179
188
|
try {
|
|
180
189
|
// Synchronously read the partial file as ejs does not support async/await
|
|
@@ -185,7 +194,7 @@ export default class HonoAdapter {
|
|
|
185
194
|
...assigns,
|
|
186
195
|
...localAssigns,
|
|
187
196
|
},
|
|
188
|
-
{ filename: partialPath }
|
|
197
|
+
{ filename: partialPath },
|
|
189
198
|
);
|
|
190
199
|
|
|
191
200
|
return rendered;
|
|
@@ -198,18 +207,11 @@ export default class HonoAdapter {
|
|
|
198
207
|
};
|
|
199
208
|
}
|
|
200
209
|
|
|
201
|
-
async renderAction(
|
|
202
|
-
{ views, viewsFallback, action, assigns },
|
|
203
|
-
viewHelpersConfig = {}
|
|
204
|
-
) {
|
|
210
|
+
async renderAction({ views, action, assigns }, viewHelpersConfig = {}) {
|
|
205
211
|
// Pick the parent here in the views so we can reuse stuff...
|
|
206
|
-
const fullTemplatePath = this.getActionPath(views,
|
|
212
|
+
const fullTemplatePath = this.getActionPath(views, action);
|
|
207
213
|
const renderAssigns = { ...this.getHelpers(viewHelpersConfig), ...assigns };
|
|
208
|
-
const renderPartialHelper = this.renderPartial(
|
|
209
|
-
renderAssigns,
|
|
210
|
-
views,
|
|
211
|
-
viewsFallback
|
|
212
|
-
);
|
|
214
|
+
const renderPartialHelper = this.renderPartial(renderAssigns, views);
|
|
213
215
|
|
|
214
216
|
try {
|
|
215
217
|
// Synchronously read the full template file
|
|
@@ -222,7 +224,7 @@ export default class HonoAdapter {
|
|
|
222
224
|
...renderAssigns,
|
|
223
225
|
render_partial: renderPartialHelper,
|
|
224
226
|
},
|
|
225
|
-
{ filename: fullTemplatePath }
|
|
227
|
+
{ filename: fullTemplatePath },
|
|
226
228
|
);
|
|
227
229
|
|
|
228
230
|
const fullPage = this.renderLayout(renderAssigns, rendered);
|
|
@@ -288,7 +290,7 @@ export default class HonoAdapter {
|
|
|
288
290
|
|
|
289
291
|
async createAction(
|
|
290
292
|
[verb, path, resource, views, action, handler],
|
|
291
|
-
resourceConfig
|
|
293
|
+
resourceConfig,
|
|
292
294
|
) {
|
|
293
295
|
const { i18n } = this.globalConfig;
|
|
294
296
|
|
|
@@ -302,7 +304,7 @@ export default class HonoAdapter {
|
|
|
302
304
|
next,
|
|
303
305
|
verb,
|
|
304
306
|
resource,
|
|
305
|
-
action
|
|
307
|
+
action,
|
|
306
308
|
);
|
|
307
309
|
|
|
308
310
|
// Set context properties
|
|
@@ -336,7 +338,7 @@ export default class HonoAdapter {
|
|
|
336
338
|
};
|
|
337
339
|
|
|
338
340
|
ctx.logger.info(
|
|
339
|
-
`${ctx.method} "${ctx.rawPath}" -> ${resource}/${action} | ${JSON.stringify(ctx.params)}
|
|
341
|
+
`${ctx.method} "${ctx.rawPath}" -> ${resource}/${action} | ${JSON.stringify(ctx.params)}`,
|
|
340
342
|
);
|
|
341
343
|
|
|
342
344
|
const assigns = {
|
|
@@ -381,7 +383,7 @@ export default class HonoAdapter {
|
|
|
381
383
|
|
|
382
384
|
Object.assign(
|
|
383
385
|
assigns.afterFilterAssigns,
|
|
384
|
-
afterResult.assigns || {}
|
|
386
|
+
afterResult.assigns || {},
|
|
385
387
|
);
|
|
386
388
|
}
|
|
387
389
|
}
|
|
@@ -399,11 +401,10 @@ export default class HonoAdapter {
|
|
|
399
401
|
const rendered = this.renderAction(
|
|
400
402
|
{
|
|
401
403
|
views,
|
|
402
|
-
viewsFallback: resourceConfig.viewsFallback,
|
|
403
404
|
action,
|
|
404
405
|
assigns: fullAssigns,
|
|
405
406
|
},
|
|
406
|
-
this.globalConfig?.helpers || {}
|
|
407
|
+
this.globalConfig?.helpers || {},
|
|
407
408
|
);
|
|
408
409
|
|
|
409
410
|
return routerCtx.html(rendered);
|
|
@@ -414,7 +415,7 @@ export default class HonoAdapter {
|
|
|
414
415
|
// Single method to handle all route types
|
|
415
416
|
routeCollection(mapping, resourceConfig) {
|
|
416
417
|
mapping.forEach((handlerMap) =>
|
|
417
|
-
this.createAction(handlerMap, resourceConfig)
|
|
418
|
+
this.createAction(handlerMap, resourceConfig),
|
|
418
419
|
);
|
|
419
420
|
}
|
|
420
421
|
|
|
@@ -436,7 +437,7 @@ export default class HonoAdapter {
|
|
|
436
437
|
applyHeaders(headers, router) {
|
|
437
438
|
if (!headers) return;
|
|
438
439
|
Object.entries(headers).forEach(([key, value]) =>
|
|
439
|
-
router.header(key, value)
|
|
440
|
+
router.header(key, value),
|
|
440
441
|
);
|
|
441
442
|
}
|
|
442
443
|
|
package/src/index.js
CHANGED
|
@@ -5,9 +5,6 @@ export { default as routeMember } from "./routeMember";
|
|
|
5
5
|
export { default as routeNestedMember } from "./routeNestedMember";
|
|
6
6
|
export { default as setGlobalContext } from "./setGlobalContext";
|
|
7
7
|
export { default as routeResource } from "./routeResource";
|
|
8
|
-
export { default as routePagesModule } from "./routePagesModule";
|
|
9
|
-
export { default as routeArticlesModule } from "./routeArticlesModule";
|
|
10
|
-
export { default as routeEventsModule } from "./routeEventsModule";
|
|
11
8
|
export { default as routeSettings } from "./routeSettings";
|
|
12
9
|
export { default as setupCloud } from "./setupCloud";
|
|
13
10
|
export { default as routeStandard } from "./routeStandard";
|
package/src/routeCollection.js
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
const routeCollection = (adapter, resource, handler, resourceConfig = {}) => {
|
|
2
|
+
const views = resourceConfig.views ?? resource;
|
|
3
|
+
|
|
2
4
|
// Create route definitions
|
|
3
5
|
const routes = [
|
|
4
|
-
["GET",
|
|
5
|
-
["GET",
|
|
6
|
-
["GET",
|
|
7
|
-
["GET",
|
|
8
|
-
["POST",
|
|
9
|
-
["POST",
|
|
10
|
-
["DELETE", `/${resource}/:id`,
|
|
6
|
+
["GET", `/${resource}`, "index", handler.index],
|
|
7
|
+
["GET", `/${resource}/new`, "create_form", handler.create_form],
|
|
8
|
+
["GET", `/${resource}/:id`, "show", handler.show],
|
|
9
|
+
["GET", `/${resource}/:id/edit`, "edit_form", handler.edit_form],
|
|
10
|
+
["POST", `/${resource}`, "create_form", handler.create],
|
|
11
|
+
["POST", `/${resource}/:id`, "edit_form", handler.update],
|
|
12
|
+
["DELETE", `/${resource}/:id`, "destroy", handler.destroy],
|
|
11
13
|
];
|
|
12
14
|
|
|
13
15
|
// Map routes to full configuration
|
|
14
16
|
const mapping = routes.map(([verb, path, action, fn]) => [
|
|
15
|
-
verb,
|
|
17
|
+
verb,
|
|
18
|
+
path,
|
|
19
|
+
resource,
|
|
20
|
+
views,
|
|
21
|
+
action,
|
|
22
|
+
fn,
|
|
16
23
|
]);
|
|
17
24
|
|
|
18
25
|
adapter.routeCollection(mapping, resourceConfig);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const routeNestedCollection = (adapter, parent, resource, handler, resourceConfig = {}) => {
|
|
2
|
-
const views = `${parent}/${resource}`;
|
|
2
|
+
const views = resourceConfig.views ?? `${parent}/${resource}`;
|
|
3
3
|
|
|
4
4
|
// Define routes exactly as they were in the original implementation
|
|
5
5
|
// to maintain compatibility with the tests
|
package/src/routeNestedMember.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const routeNestedMember = (adapter, parent, resource, handler, resourceConfig = {}) => {
|
|
2
|
-
const views = `${parent}/${resource}`;
|
|
2
|
+
const views = resourceConfig.views ?? `${parent}/${resource}`;
|
|
3
3
|
const basePath = `/${parent}/:parent_id/${resource}`;
|
|
4
4
|
|
|
5
5
|
// Create route definitions
|
package/src/routeResource.js
CHANGED
|
@@ -27,13 +27,11 @@ function routeResource(
|
|
|
27
27
|
adapter,
|
|
28
28
|
resourceType,
|
|
29
29
|
resourceTypePlural,
|
|
30
|
-
{ dateFields = []
|
|
30
|
+
{ dateFields = [] } = {},
|
|
31
31
|
) {
|
|
32
32
|
const baseResource = resourceTypePlural;
|
|
33
33
|
const revisionsBaseResource = `${resourceType}_revisions`;
|
|
34
34
|
const changesBaseResource = `${resourceType}_changes`;
|
|
35
|
-
const viewsRevisions = `${viewsType}_revisions`;
|
|
36
|
-
const viewsChanges = `${viewsType}_changes`;
|
|
37
35
|
|
|
38
36
|
const resourceConfig = {
|
|
39
37
|
resourceType,
|
|
@@ -46,7 +44,7 @@ function routeResource(
|
|
|
46
44
|
"GET",
|
|
47
45
|
`/${baseResource}/exports`,
|
|
48
46
|
"exports",
|
|
49
|
-
|
|
47
|
+
"resources/exports",
|
|
50
48
|
"index",
|
|
51
49
|
ExportsHandler.index,
|
|
52
50
|
],
|
|
@@ -55,7 +53,7 @@ function routeResource(
|
|
|
55
53
|
|
|
56
54
|
routeCollection(adapter, baseResource, ResourcesHandler, {
|
|
57
55
|
...resourceConfig,
|
|
58
|
-
|
|
56
|
+
views: "resources",
|
|
59
57
|
});
|
|
60
58
|
|
|
61
59
|
routeNestedCollection(
|
|
@@ -63,12 +61,12 @@ function routeResource(
|
|
|
63
61
|
baseResource,
|
|
64
62
|
"translations",
|
|
65
63
|
TranslationsHandler,
|
|
66
|
-
{ ...resourceConfig,
|
|
64
|
+
{ ...resourceConfig, views: "resources/translations" },
|
|
67
65
|
);
|
|
68
66
|
|
|
69
67
|
routeNestedCollection(adapter, baseResource, "history", HistoryHandler, {
|
|
70
68
|
...resourceConfig,
|
|
71
|
-
|
|
69
|
+
views: "resources/history",
|
|
72
70
|
});
|
|
73
71
|
|
|
74
72
|
routeNestedCollection(
|
|
@@ -78,38 +76,38 @@ function routeResource(
|
|
|
78
76
|
ResourceRevisionsHandler,
|
|
79
77
|
{
|
|
80
78
|
...resourceConfig,
|
|
81
|
-
|
|
79
|
+
views: "resource_revisions",
|
|
82
80
|
},
|
|
83
81
|
);
|
|
84
82
|
|
|
85
83
|
routeNestedMember(adapter, revisionsBaseResource, "general", GeneralHandler, {
|
|
86
84
|
...resourceConfig,
|
|
87
|
-
|
|
85
|
+
views: "resource_revisions/general",
|
|
88
86
|
});
|
|
89
87
|
|
|
90
88
|
routeNestedMember(adapter, revisionsBaseResource, "visuals", VisualHandler, {
|
|
91
89
|
...resourceConfig,
|
|
92
|
-
|
|
90
|
+
views: "resource_revisions/visuals",
|
|
93
91
|
});
|
|
94
92
|
|
|
95
93
|
routeNestedMember(adapter, revisionsBaseResource, "codes", CodeHandler, {
|
|
96
94
|
...resourceConfig,
|
|
97
|
-
|
|
95
|
+
views: "resource_revisions/codes",
|
|
98
96
|
});
|
|
99
97
|
|
|
100
98
|
routeNestedMember(adapter, revisionsBaseResource, "meta", MetaHandler, {
|
|
101
99
|
...resourceConfig,
|
|
102
|
-
|
|
100
|
+
views: "resource_revisions/meta",
|
|
103
101
|
});
|
|
104
102
|
|
|
105
103
|
routeNestedMember(adapter, revisionsBaseResource, "tags", TagHandler, {
|
|
106
104
|
...resourceConfig,
|
|
107
|
-
|
|
105
|
+
views: "resource_revisions/tags",
|
|
108
106
|
});
|
|
109
107
|
|
|
110
108
|
routeNestedCollection(adapter, revisionsBaseResource, "locks", LocksHandler, {
|
|
111
109
|
...resourceConfig,
|
|
112
|
-
|
|
110
|
+
views: "resource_revisions/locks",
|
|
113
111
|
});
|
|
114
112
|
|
|
115
113
|
routeNestedCollection(
|
|
@@ -119,23 +117,23 @@ function routeResource(
|
|
|
119
117
|
UnlocksHandler,
|
|
120
118
|
{
|
|
121
119
|
...resourceConfig,
|
|
122
|
-
|
|
120
|
+
views: "resource_revisions/unlocks",
|
|
123
121
|
},
|
|
124
122
|
);
|
|
125
123
|
|
|
126
124
|
routeNestedCollection(adapter, baseResource, "clones", ClonesHandler, {
|
|
127
125
|
...resourceConfig,
|
|
128
|
-
|
|
126
|
+
views: "resources/clones",
|
|
129
127
|
});
|
|
130
128
|
|
|
131
129
|
routeNestedCollection(adapter, baseResource, "urls", URLsHandler, {
|
|
132
130
|
...resourceConfig,
|
|
133
|
-
|
|
131
|
+
views: "resources/urls",
|
|
134
132
|
});
|
|
135
133
|
|
|
136
134
|
routeNestedCollection(adapter, baseResource, "deletes", DeletesHandler, {
|
|
137
135
|
...resourceConfig,
|
|
138
|
-
|
|
136
|
+
views: "resources/deletes",
|
|
139
137
|
});
|
|
140
138
|
|
|
141
139
|
routeNestedCollection(
|
|
@@ -145,7 +143,7 @@ function routeResource(
|
|
|
145
143
|
RevertsHandler,
|
|
146
144
|
{
|
|
147
145
|
...resourceConfig,
|
|
148
|
-
|
|
146
|
+
views: "resource_changes/reverts",
|
|
149
147
|
},
|
|
150
148
|
);
|
|
151
149
|
|
|
@@ -156,7 +154,7 @@ function routeResource(
|
|
|
156
154
|
PublishesHandler,
|
|
157
155
|
{
|
|
158
156
|
...resourceConfig,
|
|
159
|
-
|
|
157
|
+
views: "resource_revisions/publishes",
|
|
160
158
|
},
|
|
161
159
|
);
|
|
162
160
|
|
|
@@ -167,7 +165,7 @@ function routeResource(
|
|
|
167
165
|
CancelSchedulesHandler,
|
|
168
166
|
{
|
|
169
167
|
...resourceConfig,
|
|
170
|
-
|
|
168
|
+
views: "resource_revisions/cancel_schedules",
|
|
171
169
|
},
|
|
172
170
|
);
|
|
173
171
|
|
package/src/routeStandard.js
CHANGED
|
@@ -2,10 +2,8 @@ import DashboardsHandler from "./handlers/DashboardsHandler";
|
|
|
2
2
|
import RedirectsHandler from "./handlers/RedirectsHandler";
|
|
3
3
|
import TagsAPIHandler from "./handlers/TagsAPIHandler";
|
|
4
4
|
import TagsHandler from "./handlers/TagsHandler";
|
|
5
|
-
import routeArticlesModule from "./routeArticlesModule";
|
|
6
5
|
import routeCollection from "./routeCollection";
|
|
7
|
-
import
|
|
8
|
-
import routePagesModule from "./routePagesModule";
|
|
6
|
+
import routeResource from "./routeResource";
|
|
9
7
|
import routeSettings from "./routeSettings";
|
|
10
8
|
|
|
11
9
|
function routeStandard(adapter) {
|
|
@@ -29,9 +27,11 @@ function routeStandard(adapter) {
|
|
|
29
27
|
routeCollection(adapter, "tags", TagsHandler);
|
|
30
28
|
routeCollection(adapter, "api/tags", TagsAPIHandler);
|
|
31
29
|
routeSettings(adapter);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
routeResource(adapter, "page", "pages", { dateFields: [] });
|
|
31
|
+
routeResource(adapter, "article", "articles", { dateFields: ["publish_at"] });
|
|
32
|
+
routeResource(adapter, "event", "events", {
|
|
33
|
+
dateFields: ["publish_at", "starts_at", "ends_at"],
|
|
34
|
+
});
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export default routeStandard;
|
|
@@ -86,25 +86,17 @@ describe("HonoAdapter.getActionPath", () => {
|
|
|
86
86
|
test("returns app path when it exists", () => {
|
|
87
87
|
existsSync.mockReturnValue(true);
|
|
88
88
|
|
|
89
|
-
const result = adapter.getActionPath("
|
|
89
|
+
const result = adapter.getActionPath("resources", "index");
|
|
90
90
|
|
|
91
|
-
expect(result).toBe(`${process.cwd()}/src/views/
|
|
91
|
+
expect(result).toBe(`${process.cwd()}/src/views/resources/index.ejs`);
|
|
92
92
|
});
|
|
93
93
|
|
|
94
|
-
test("returns package path
|
|
94
|
+
test("returns package path when app missing", () => {
|
|
95
95
|
existsSync.mockReturnValue(false);
|
|
96
96
|
|
|
97
|
-
const result = adapter.getActionPath("
|
|
97
|
+
const result = adapter.getActionPath("resources", "index");
|
|
98
98
|
|
|
99
|
-
expect(result).toContain("/views/
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
test("returns package path with views when no fallback", () => {
|
|
103
|
-
existsSync.mockReturnValue(false);
|
|
104
|
-
|
|
105
|
-
const result = adapter.getActionPath("pages", null, "index");
|
|
106
|
-
|
|
107
|
-
expect(result).toContain("/views/pages/index.ejs");
|
|
99
|
+
expect(result).toContain("/views/resources/index.ejs");
|
|
108
100
|
});
|
|
109
101
|
});
|
|
110
102
|
|
|
@@ -140,7 +132,7 @@ describe("HonoAdapter.renderPartial", () => {
|
|
|
140
132
|
readFileSync.mockReturnValue("<%= foo %>");
|
|
141
133
|
ejs.render.mockReturnValue("rendered");
|
|
142
134
|
|
|
143
|
-
const render = adapter.renderPartial({ foo: "bar" }, "
|
|
135
|
+
const render = adapter.renderPartial({ foo: "bar" }, "resources");
|
|
144
136
|
const result = render("_partial.ejs", { extra: 1 });
|
|
145
137
|
|
|
146
138
|
expect(result).toBe("rendered");
|
|
@@ -159,7 +151,7 @@ describe("HonoAdapter.renderPartial", () => {
|
|
|
159
151
|
throw err;
|
|
160
152
|
});
|
|
161
153
|
|
|
162
|
-
const render = adapter.renderPartial({}, "
|
|
154
|
+
const render = adapter.renderPartial({}, "resources");
|
|
163
155
|
const result = render("_partial.ejs", {});
|
|
164
156
|
|
|
165
157
|
expect(result).toContain("Error rendering");
|
|
@@ -170,7 +162,7 @@ describe("HonoAdapter.renderPartial", () => {
|
|
|
170
162
|
test("throws when partial cannot be located", () => {
|
|
171
163
|
existsSync.mockReturnValue(false);
|
|
172
164
|
|
|
173
|
-
const render = adapter.renderPartial({}, "
|
|
165
|
+
const render = adapter.renderPartial({}, "resources");
|
|
174
166
|
|
|
175
167
|
expect(() => render("_missing.ejs", {})).toThrow(/Template not found/);
|
|
176
168
|
});
|
|
@@ -195,8 +187,7 @@ describe("HonoAdapter.renderAction", () => {
|
|
|
195
187
|
ejs.renderFile.mockResolvedValue("<html>...</html>");
|
|
196
188
|
|
|
197
189
|
const result = await adapter.renderAction({
|
|
198
|
-
views: "
|
|
199
|
-
viewsFallback: null,
|
|
190
|
+
views: "resources",
|
|
200
191
|
action: "index",
|
|
201
192
|
assigns: { title: "Hi" },
|
|
202
193
|
});
|
|
@@ -215,8 +206,7 @@ describe("HonoAdapter.renderAction", () => {
|
|
|
215
206
|
});
|
|
216
207
|
|
|
217
208
|
const result = await adapter.renderAction({
|
|
218
|
-
views: "
|
|
219
|
-
viewsFallback: null,
|
|
209
|
+
views: "resources",
|
|
220
210
|
action: "index",
|
|
221
211
|
assigns: {},
|
|
222
212
|
});
|
|
@@ -395,8 +385,8 @@ describe("HonoAdapter.createAction", () => {
|
|
|
395
385
|
const handler = jest.fn().mockResolvedValue({ assigns: { title: "Hi" } });
|
|
396
386
|
|
|
397
387
|
await adapter.createAction(
|
|
398
|
-
["GET", "/pages", "pages", "
|
|
399
|
-
{
|
|
388
|
+
["GET", "/pages", "pages", "resources", "index", handler],
|
|
389
|
+
{}
|
|
400
390
|
);
|
|
401
391
|
|
|
402
392
|
const registered = getRegisteredHandler(adapter, "/en/pages");
|
|
@@ -631,10 +621,10 @@ describe("HonoAdapter.routeCollection (instance)", () => {
|
|
|
631
621
|
["POST", "/a", "a", "a", "create", handler],
|
|
632
622
|
];
|
|
633
623
|
|
|
634
|
-
adapter.routeCollection(mapping, {
|
|
624
|
+
adapter.routeCollection(mapping, { views: "a" });
|
|
635
625
|
|
|
636
626
|
expect(createSpy).toHaveBeenCalledTimes(2);
|
|
637
|
-
expect(createSpy).toHaveBeenCalledWith(mapping[0], {
|
|
638
|
-
expect(createSpy).toHaveBeenCalledWith(mapping[1], {
|
|
627
|
+
expect(createSpy).toHaveBeenCalledWith(mapping[0], { views: "a" });
|
|
628
|
+
expect(createSpy).toHaveBeenCalledWith(mapping[1], { views: "a" });
|
|
639
629
|
});
|
|
640
630
|
});
|
|
@@ -9,7 +9,7 @@ describe("routeCategoriesModule", () => {
|
|
|
9
9
|
routeCollection.mockClear();
|
|
10
10
|
});
|
|
11
11
|
|
|
12
|
-
test("registers categories collection with categoryType + plural +
|
|
12
|
+
test("registers categories collection with categoryType + plural + views", () => {
|
|
13
13
|
const adapter = {};
|
|
14
14
|
|
|
15
15
|
routeCategoriesModule(adapter, "tag", "tags");
|
|
@@ -17,7 +17,7 @@ describe("routeCategoriesModule", () => {
|
|
|
17
17
|
expect(routeCollection).toHaveBeenCalledWith(adapter, "tags", CategoriesHandler, {
|
|
18
18
|
categoryType: "tag",
|
|
19
19
|
categoryTypePlural: "tags",
|
|
20
|
-
|
|
20
|
+
views: "categories",
|
|
21
21
|
});
|
|
22
22
|
});
|
|
23
23
|
});
|