gcg-website/static/admin/config/collections/blog.js

111 lines
2.4 KiB
JavaScript

import { EditorProps, DateFormat, MarkdownProps, ImageProps } from "../props.js";
import {
AuthorRelation,
DescriptionText,
DraftBoolean,
Title,
} from "./widgets.js";
const BlogCollection = {
name: "blog",
label: "Aktuelles",
label_singular: "Artikel",
description:
'Diese Artikel werden im Bereich "Aktuelles" auf der Schulhomepage angezeigt. Sie können sowohl direkt veröffentlicht, als auch als Entwurf gespeichert werden.',
icon: "news",
folder: "content/blog",
...EditorProps,
filter: {
field: "type",
value: "post",
},
view_groups: {
default: "draft",
groups: [
{
name: "draft",
label: "Entwurf",
field: "draft",
},
],
},
sortable_fields: {
fields: ["date", "title"],
default: {
field: "date",
direction: "Descending",
},
},
summary_fields: ["date", "title", "draft", "author", "body"],
fields: [
Title(false),
{
name: "date",
label: "Datum",
widget: "datetime",
required: true,
...DateFormat,
},
DraftBoolean,
DescriptionText,
{
name: "image",
label: "Titelbild",
hint: "16:9 Seitenverhältnis beachten",
default: "/media/image.webp",
...ImageProps,
required: true,
},
AuthorRelation,
{
name: "categories",
label: "Kategorien",
hint: "Verwaltet in den Einstellungen",
widget: "relation",
collection: "settings",
file: "data-categories",
value_field: "blog.*",
search_fields: ["blog.*"],
display_fields: ["blog.*"],
multiple: true,
required: true,
options_length: 10000,
},
{
name: "subjects",
label: "Fächer",
hint: "Verwaltet in den Einstellungen",
widget: "relation",
collection: "settings",
file: "data-categories",
value_field: "subjects.*",
search_fields: ["subjects.*"],
display_fields: ["subjects.*"],
multiple: true,
required: false,
options_length: 10000,
},
{
name: "tags",
label: "Tags",
widget: "list",
delimiter: ",",
required: false,
},
{
name: "type",
label: "Typ",
widget: "hidden",
default: "post",
},
{
name: "body",
label: "Inhalt",
required: true,
...MarkdownProps,
},
],
};
export default BlogCollection;