Page MenuHomeSealhub

create.form.ts
No OneTemporary

create.form.ts

import type { Context } from "koa";
import type { FormData } from "@sealcode/sealgen";
import { Form, Controls, fieldsToShape } from "@sealcode/sealgen";
import html from "../../../html.js";
import { PagesFormFields, PagesFormControls } from "./shared.js";
import { Pages } from "../../../collections/collections.js";
import { PagesCRUDListURL } from "../../urls.js";
import { tempstream } from "tempstream";
export const actionName = "PagesCRUDCreate";
const fields = {
...PagesFormFields,
};
export const PagesCRUDCreateShape = fieldsToShape(fields);
export default new (class PagesCRUDCreateForm extends Form<typeof fields, void> {
defaultSuccessMessage = "Formularz wypełniony poprawnie";
fields = fields;
controls = [new Controls.FormHeader("Create Pages"), ...PagesFormControls];
async onSubmit(ctx: Context) {
const data = await this.getParsedValues(ctx);
if (!data) {
throw new Error("Error when parsing the form values");
}
const preparedImageForMetadata =
data.imageForMetadata?.new || data.imageForMetadata?.old;
if (!preparedImageForMetadata) {
throw new Error("Missing field: imageForMetadata");
}
await ctx.$app.collections["pages"].create(ctx.$context, {
url: data["url"],
content: [],
domain: data["domain"] != null ? data["domain"] : "",
title: data["title"] != null ? data["title"] : "",
heading: data["heading"] != null ? data["heading"] : "",
description: data["description"] != null ? data["description"] : "",
imageForMetadata: preparedImageForMetadata,
hideNavigation: !!data.hideNavigation != null ? !!data.hideNavigation : false,
});
}
canAccess = async (ctx: Context) => {
const policy = Pages.getPolicy("create");
const response = await policy.check(ctx.$context);
return { canAccess: response?.allowed || false, message: response?.reason || "" };
};
async render(ctx: Context, data: FormData, show_field_errors: boolean) {
return html({
ctx,
title: "Create pages",
body: tempstream/* HTML */ ` <div class="sealgen-crud-form">
<a class="" href="${PagesCRUDListURL}">← Back to pages list</a>
${await super.render(ctx, data, show_field_errors)}
</div>`,
description: "",
});
}
})();

File Metadata

Mime Type
text/x-java
Expires
Tue, Jul 8, 07:49 (23 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
810420
Default Alt Text
create.form.ts (2 KB)

Event Timeline