WIP: CMS rebuild
This commit is contained in:
54
static/admin/config/collections/abiturienten.js
Normal file
54
static/admin/config/collections/abiturienten.js
Normal file
@ -0,0 +1,54 @@
|
||||
import { MarkdownProps } from "../props.js";
|
||||
import { DraftBoolean, Title } from "./widgets.js";
|
||||
|
||||
const AbiturientenCollection = {
|
||||
name: "abiturienten",
|
||||
label: "Abiturienten",
|
||||
label_singular: "Abiturjahrgang",
|
||||
description: "Hier kann die Übersicht der Abiturjahrgänge bearbeitet werden. Dieser Bereich wird von der Schulchronik verwaltet.",
|
||||
icon: "graduation-cap",
|
||||
folder: "content/german/abiturienten",
|
||||
filter: {
|
||||
field: "type",
|
||||
value: "abiturienten"
|
||||
},
|
||||
create: true,
|
||||
editor: {
|
||||
preview: true,
|
||||
frame: true
|
||||
},
|
||||
summary_fields: ["title", "draft"],
|
||||
sortable_fields: {
|
||||
fields: ["title"],
|
||||
default: {
|
||||
field: "title",
|
||||
direction: "Descending"
|
||||
}
|
||||
},
|
||||
fields: [
|
||||
Title(false),
|
||||
DraftBoolean,
|
||||
{
|
||||
name: "image",
|
||||
label: "Bild",
|
||||
widget: "image",
|
||||
default: "/media/image.webp",
|
||||
required: false
|
||||
},
|
||||
{
|
||||
name: "type",
|
||||
label: "Typ",
|
||||
widget: "hidden",
|
||||
default: "abiturienten"
|
||||
},
|
||||
{
|
||||
name: "body",
|
||||
label: "Text",
|
||||
widget: "markdown",
|
||||
required: false,
|
||||
...MarkdownProps
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
export default AbiturientenCollection;
|
71
static/admin/config/collections/cantorfora.js
Normal file
71
static/admin/config/collections/cantorfora.js
Normal file
@ -0,0 +1,71 @@
|
||||
import { MarkdownProps } from "../props.js";
|
||||
import { DescriptionText, DraftBoolean, Title } from "./widgets.js";
|
||||
|
||||
const CantorforaCollection = {
|
||||
name: "cantorfora",
|
||||
label: "Cantorfora",
|
||||
label_singular: "Cantorforum",
|
||||
description: "Hier kann die Übersicht der Cantorfora bearbeitet werden. Dieser Bereich wird von der Schulchronik verwaltet.",
|
||||
icon: "presentation",
|
||||
folder: "content/german/cantorfora",
|
||||
filter: {
|
||||
field: "type",
|
||||
value: "cantorfora"
|
||||
},
|
||||
create: true,
|
||||
editor: {
|
||||
preview: true,
|
||||
frame: true
|
||||
},
|
||||
view_groups: [
|
||||
{
|
||||
label: "Entwürfe",
|
||||
field: "draft"
|
||||
}
|
||||
],
|
||||
summary_fields: ["title", "draft", "description"],
|
||||
sortable_fields: {
|
||||
fields: ['index', 'title'],
|
||||
default: {
|
||||
field: "index",
|
||||
direction: "Descending"
|
||||
}
|
||||
},
|
||||
fields: [
|
||||
Title(false),
|
||||
{
|
||||
name: "index",
|
||||
label: "Laufindex",
|
||||
hint: "Nummer des Cantorforums",
|
||||
widget: "number",
|
||||
value_type: "int",
|
||||
min: 1,
|
||||
step: 1,
|
||||
required: true
|
||||
},
|
||||
DraftBoolean,
|
||||
DescriptionText,
|
||||
{
|
||||
name: "image",
|
||||
label: "Titelbild",
|
||||
widget: "image",
|
||||
default: "/media/image.webp",
|
||||
required: true
|
||||
},
|
||||
{
|
||||
name: "type",
|
||||
label: "Typ",
|
||||
widget: "hidden",
|
||||
default: "cantorfora"
|
||||
},
|
||||
{
|
||||
name: "body",
|
||||
label: "Text",
|
||||
widget: "markdown",
|
||||
required: true,
|
||||
...MarkdownProps
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
export default CantorforaCollection;
|
66
static/admin/config/collections/cantorpreis.js
Normal file
66
static/admin/config/collections/cantorpreis.js
Normal file
@ -0,0 +1,66 @@
|
||||
import { MarkdownProps } from "../props.js";
|
||||
import { DescriptionText, DraftBoolean } from "./widgets.js";
|
||||
|
||||
const CantorpreisCollection = {
|
||||
name: "cantorpreis",
|
||||
label: "Cantorpreisträger",
|
||||
description: "Hier sind alle Cantorpreisträger aufgelistet. Dieser Bereich wird von der Schulchronik verwaltet.",
|
||||
icon: "award",
|
||||
folder: "content/german/cantorpreis",
|
||||
filter: {
|
||||
field: "type",
|
||||
value: "cantorpreis"
|
||||
},
|
||||
sortable_fields: {
|
||||
fields: ['title', 'name'],
|
||||
default: {
|
||||
field: "title",
|
||||
direction: "Descending"
|
||||
}
|
||||
},
|
||||
summary: "{{title}} - {{name}}",
|
||||
create: true,
|
||||
editor: {
|
||||
preview: true,
|
||||
frame: true
|
||||
},
|
||||
summary_fields: ["title", "name", "draft", "body"],
|
||||
fields: [
|
||||
{
|
||||
name: "title",
|
||||
label: "Jahr",
|
||||
widget: "string",
|
||||
required: true
|
||||
},
|
||||
{
|
||||
name: "name",
|
||||
label: "Name",
|
||||
widget: "string",
|
||||
required: true
|
||||
},
|
||||
DraftBoolean,
|
||||
DescriptionText,
|
||||
{
|
||||
name: "image",
|
||||
label: "Bild",
|
||||
widget: "image",
|
||||
default: "/media/image.webp",
|
||||
required: false
|
||||
},
|
||||
{
|
||||
name: "type",
|
||||
label: "Typ",
|
||||
widget: "hidden",
|
||||
default: "cantorpreis"
|
||||
},
|
||||
{
|
||||
name: "body",
|
||||
label: "Text",
|
||||
widget: "markdown",
|
||||
required: false,
|
||||
...MarkdownProps
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
export default CantorpreisCollection;
|
111
static/admin/config/collections/chronikjahre.js
Normal file
111
static/admin/config/collections/chronikjahre.js
Normal file
@ -0,0 +1,111 @@
|
||||
import { MarkdownProps } from "../props.js";
|
||||
import { DraftBoolean, EnableBoolean } from "./widgets.js";
|
||||
|
||||
const ChronikjahreCollection = {
|
||||
name: "chronikjahre",
|
||||
description: "Hier können die Chronikjahre bearbeitet werden. Dieser Bereich wird von der Schulchronik verwaltet.",
|
||||
icon: "schulchronik",
|
||||
label: "Chronikjahre",
|
||||
label_singular: "Chronikjahr",
|
||||
folder: "content/german/schulchronik",
|
||||
filter: {
|
||||
field: "type",
|
||||
value: "schulchronik"
|
||||
},
|
||||
create: true,
|
||||
editor: {
|
||||
preview: false
|
||||
},
|
||||
summary_fields: ["title", "draft", "cantorpreisträger", "topics"],
|
||||
sortable_fields: {
|
||||
fields: ['title'],
|
||||
default: {
|
||||
field: "title",
|
||||
direction: "Descending"
|
||||
}
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
name: "title",
|
||||
label: "Jahr",
|
||||
widget: "string"
|
||||
},
|
||||
DraftBoolean,
|
||||
{
|
||||
name: "type",
|
||||
label: "Typ",
|
||||
widget: "hidden",
|
||||
default: "schulchronik"
|
||||
},
|
||||
{
|
||||
name: "pretext",
|
||||
label: "Einleitung",
|
||||
hint: "Text für die Jahreszahl",
|
||||
widget: "markdown",
|
||||
required: false,
|
||||
...MarkdownProps
|
||||
},
|
||||
{
|
||||
name: "topics",
|
||||
label: "Kreative Haufen",
|
||||
label_singular: "Haufen",
|
||||
widget: "list",
|
||||
required: false,
|
||||
collapsed: true,
|
||||
fields: [
|
||||
{
|
||||
name: "title",
|
||||
label: "Titel",
|
||||
widget: "string",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "content",
|
||||
label: "Inhalt",
|
||||
widget: "markdown",
|
||||
required: false,
|
||||
...MarkdownProps
|
||||
},
|
||||
{
|
||||
name: "superhaufen",
|
||||
label: "Superhaufen",
|
||||
widget: "object",
|
||||
required: false,
|
||||
fields: [
|
||||
EnableBoolean,
|
||||
{
|
||||
name: "link",
|
||||
label: "Superhaufen",
|
||||
widget: "relation",
|
||||
collection: "superhaufen",
|
||||
search_fields: ["title"],
|
||||
value_field: "title",
|
||||
required: false,
|
||||
collapsed: true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "cantorpreisträger",
|
||||
label: "Cantorpreisträger",
|
||||
widget: "relation",
|
||||
collection: "cantorpreis",
|
||||
search_fields: ["jahr", "name"],
|
||||
value_field: "name",
|
||||
required: false
|
||||
},
|
||||
{
|
||||
name: "body",
|
||||
label: "Text",
|
||||
hint: "Erscheint zusätzlich zu den Kreativen Haufen",
|
||||
widget: "markdown",
|
||||
required: false,
|
||||
...MarkdownProps
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
|
||||
export default ChronikjahreCollection;
|
8
static/admin/config/collections/index.js
Normal file
8
static/admin/config/collections/index.js
Normal file
@ -0,0 +1,8 @@
|
||||
import SettingsCollection from "./settings-collection.js";
|
||||
import ChronikjahreCollection from "./chronikjahre.js";
|
||||
import SuperhaufenCollection from "./superhaufen.js";
|
||||
import CantorpreisCollection from "./cantorpreis.js";
|
||||
import AbiturientenCollection from "./abiturienten.js";
|
||||
import CantorforaCollection from "./cantorfora.js";
|
||||
|
||||
export { SettingsCollection, ChronikjahreCollection, SuperhaufenCollection, CantorpreisCollection, AbiturientenCollection, CantorforaCollection };
|
135
static/admin/config/collections/settings-collection.js
Normal file
135
static/admin/config/collections/settings-collection.js
Normal file
@ -0,0 +1,135 @@
|
||||
import { DateFormat, MarkdownProps } from "../props.js";
|
||||
import { EnableBoolean, Title } from "./widgets.js";
|
||||
|
||||
const SettingsCollection = {
|
||||
name: "settings",
|
||||
label: "Einstellungen",
|
||||
icon: "settings",
|
||||
description: "Hier können die Basiseinstellungen der Website geändert werden. Die meisten Bereiche müssen nur in Ausnahmefällen angepasst werden.",
|
||||
editor: {
|
||||
preview: false
|
||||
},
|
||||
files: [
|
||||
{
|
||||
name: "data-homepage",
|
||||
label: "Startseiteneinstellungen",
|
||||
file: "data/de/homepage.yml",
|
||||
fields: [
|
||||
{
|
||||
name: "top_banner",
|
||||
label: "Banner",
|
||||
widget: "object",
|
||||
collapsed: true,
|
||||
summary: "{{fields.enable | ternary('aktiv', 'inaktiv')}}",
|
||||
fields: [
|
||||
EnableBoolean,
|
||||
{
|
||||
name: "text",
|
||||
label: "Text",
|
||||
widget: "markdown",
|
||||
required: false,
|
||||
...MarkdownProps
|
||||
},
|
||||
{
|
||||
name: "color",
|
||||
label: "Farbe",
|
||||
widget: "color",
|
||||
required: false
|
||||
},
|
||||
{
|
||||
name: "font_color",
|
||||
label: "Schriftfarbe",
|
||||
widget: "color",
|
||||
required: false
|
||||
},
|
||||
{
|
||||
name: "icon",
|
||||
label: "Symbol",
|
||||
widget: "string",
|
||||
required: false,
|
||||
hint: "Liste unter https://assets.cantorgymnasium.de/fonts/mdi/v7/preview.html"
|
||||
},
|
||||
{
|
||||
name: "temporarily",
|
||||
label: "Zeitschaltung",
|
||||
widget: "object",
|
||||
fields: [
|
||||
EnableBoolean,
|
||||
{
|
||||
name: "start_date",
|
||||
label: "Startdatum",
|
||||
widget: "datetime",
|
||||
...DateFormat,
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
name: "end_date",
|
||||
label: "Enddatum",
|
||||
widget: "datetime",
|
||||
...DateFormat,
|
||||
required: false,
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "slider",
|
||||
label: "Karusell",
|
||||
widget: "object",
|
||||
collapsed: true,
|
||||
summary: "{{fields.enable | ternary('aktiv', 'inaktiv')}}",
|
||||
fields: [
|
||||
EnableBoolean,
|
||||
{
|
||||
name: "bg_image",
|
||||
label: "Hintergrundbild",
|
||||
widget: "image",
|
||||
required: false,
|
||||
},
|
||||
Title(true),
|
||||
{
|
||||
name: "slider_item",
|
||||
label: "Elemente",
|
||||
label_singular: "Element",
|
||||
widget: "list",
|
||||
collapsed: true,
|
||||
fields: [
|
||||
{
|
||||
name: "content",
|
||||
label: "Text",
|
||||
widget: "string",
|
||||
required: false
|
||||
},
|
||||
{
|
||||
name: "button",
|
||||
label: "Button",
|
||||
widget: "object",
|
||||
required: false,
|
||||
collapsed: true,
|
||||
fields: [
|
||||
EnableBoolean,
|
||||
{
|
||||
name: "label",
|
||||
label: "Aufschrift",
|
||||
widget: "string",
|
||||
required: false
|
||||
},
|
||||
{
|
||||
name: "link",
|
||||
label: "Link",
|
||||
widget: "string",
|
||||
required: false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
export default SettingsCollection;
|
101
static/admin/config/collections/superhaufen.js
Normal file
101
static/admin/config/collections/superhaufen.js
Normal file
@ -0,0 +1,101 @@
|
||||
import { MarkdownProps } from "../props.js";
|
||||
import { DraftBoolean, EnableBoolean, Title } from "./widgets.js";
|
||||
|
||||
const SuperhaufenCollection = {
|
||||
name: "superhaufen",
|
||||
label: "Superhaufen",
|
||||
description: "\"Superhaufen\" sind ein besonderer Bereich der Schulchronik, um besonders ausführliche Ereignisse darzustellen. Dieser Bereich wird von der Schulchronik verwaltet.",
|
||||
icon: "superhaufen",
|
||||
folder: "content/german/superhaufen",
|
||||
filter: {
|
||||
field: "type",
|
||||
value: "superhaufen"
|
||||
},
|
||||
create: true,
|
||||
editor: {
|
||||
preview: true,
|
||||
frame: true,
|
||||
},
|
||||
summary_fields: ["title", "draft", "tiles"],
|
||||
fields: [
|
||||
Title(false),
|
||||
DraftBoolean,
|
||||
{
|
||||
name: "type",
|
||||
label: "Typ",
|
||||
widget: "hidden",
|
||||
default: "superhaufen"
|
||||
},
|
||||
{
|
||||
name: "previous",
|
||||
label: "Rückverlinkung",
|
||||
widget: "object",
|
||||
collapsed: true,
|
||||
fields: [
|
||||
EnableBoolean,
|
||||
Title(false),
|
||||
{
|
||||
name: "link",
|
||||
label: "Link",
|
||||
widget: "string",
|
||||
required: true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "tiles",
|
||||
label: "Kacheln",
|
||||
hint: "Die Vorschau zeigt nur die generierten Symbolkarten, NICHT die Inhalte.",
|
||||
widget: "list",
|
||||
required: false,
|
||||
collapsed: true,
|
||||
fields: [
|
||||
Title(false),
|
||||
{
|
||||
name: "bg_color",
|
||||
label: "Hintergrundfarbe",
|
||||
widget: "color",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "icon",
|
||||
label: "Symbol",
|
||||
widget: "string",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "font_color",
|
||||
label: "Symbolfarbe",
|
||||
widget: "color",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "content",
|
||||
label: "Inhalt",
|
||||
widget: "markdown",
|
||||
required: true,
|
||||
...MarkdownProps
|
||||
},
|
||||
{
|
||||
name: "unterhaufen",
|
||||
label: "Unterhaufen",
|
||||
widget: "list",
|
||||
required: false,
|
||||
collapsed: true,
|
||||
fields: [
|
||||
Title(false),
|
||||
{
|
||||
name: "content",
|
||||
label: "Inhalt",
|
||||
widget: "markdown",
|
||||
required: true,
|
||||
...MarkdownProps
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export default SuperhaufenCollection;
|
30
static/admin/config/collections/widgets.js
Normal file
30
static/admin/config/collections/widgets.js
Normal file
@ -0,0 +1,30 @@
|
||||
const EnableBoolean = {
|
||||
name: "enable",
|
||||
label: "Aktivieren",
|
||||
widget: "boolean",
|
||||
required: false
|
||||
};
|
||||
|
||||
const DraftBoolean = {
|
||||
name: "draft",
|
||||
label: "Entwurf",
|
||||
widget: "boolean",
|
||||
default: false,
|
||||
required: false
|
||||
}
|
||||
|
||||
const Title = (optional = false) => ({
|
||||
name: "title",
|
||||
label: "Titel",
|
||||
widget: "string",
|
||||
required: !optional
|
||||
});
|
||||
|
||||
const DescriptionText = {
|
||||
name: "description",
|
||||
label: "Beschreibung",
|
||||
widget: "text",
|
||||
required: false
|
||||
};
|
||||
|
||||
export { EnableBoolean, DraftBoolean, Title, DescriptionText };
|
Reference in New Issue
Block a user