add CMS
All checks were successful
schuelerzeitung-main / test-build (push) Successful in 3m58s
schuelerzeitung-main / prod-build (push) Successful in 4m2s

This commit is contained in:
Denys Konovalov 2023-05-29 19:03:29 +02:00
parent 299051da24
commit ad6e7f7299
15 changed files with 488 additions and 1507 deletions

@ -17,8 +17,6 @@ jobs:
steps: steps:
- name: clone - name: clone
uses: actions/checkout@v3 uses: actions/checkout@v3
with:
submodules: true
- name: build - name: build
run: npm i && hugo --minify --gc --baseURL "https://schuelerzeitung-gcg.de/" run: npm i && hugo --minify --gc --baseURL "https://schuelerzeitung-gcg.de/"
@ -42,8 +40,6 @@ jobs:
steps: steps:
- name: clone - name: clone
uses: actions/checkout@v3 uses: actions/checkout@v3
with:
submodules: true
- name: build - name: build
run: npm i && hugo --minify --gc --baseURL "https://test.schuelerzeitung-gcg.de/" --buildDrafts --buildFuture -d test run: npm i && hugo --minify --gc --baseURL "https://test.schuelerzeitung-gcg.de/" --buildDrafts --buildFuture -d test

@ -1,6 +0,0 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

@ -0,0 +1,3 @@
---
title: Static CMS
---

@ -1,10 +1,14 @@
--- ---
author: ""
title: "Buchempfehlung: The inheritance Games" title: "Buchempfehlung: The inheritance Games"
draft: false
date: 2023-02-16 date: 2023-02-16
author: ""
description: "" description: ""
tags: ["buchempfehlung", "2023"] thumbnail: /buchempfehlung-2023-01.webp
thumbnail: /blog/buchempfehlung-2023-01.webp tags:
- buchempfehlung
- "2023"
type: blog
--- ---
> - **Titel:** The inheritance Games > - **Titel:** The inheritance Games

@ -1,45 +1,29 @@
--- ---
author: "" title: Horoskop (2023/1)
title: "Horoskop (2023/1)" draft: false
date: 2023-02-16 date: 2023-02-16
description: "Wassermann, Fische" author: ""
tags: ["umweltschutz", "klima", "2023"] description: Wassermann, Fische
thumbnail: /blog/preview.webp thumbnail: /preview.webp
tags:
- "2023"
- horoskop
type: blog
--- ---
### Wassermann ### Wassermann
Wo ein Wille ist, da ist
auch ein Weg: Ihre Wo ein Wille ist, da ist auch ein Weg: Ihre
selbstgesteckten Ziele selbstgesteckten Ziele werden in den nächsten Wochen in Reichweite liegen, seien Sie daher
werden in den nächsten wachsam und setzen Sie sich ruhig mit Ihrer Meinung durch. Besonders Ihre Kreativität kann
Wochen in Reichweite Ihnen dabei helfen! Doch werden Sie nicht ungeduldig, dies könnte Sie viel Kraft kosten. Auch in der Liebe sieht es gut für Sie aus, durch Ihre Hilfsbereitschaft finden Sie schnell neue Kontakte, besonders die Cafeteria ist ein guter Ort dafür. Doch lassen Sie sich dies nicht zu teuer kommen! Geben Sie Ihr Geld am besten sparsam aus, oder es wird schneller weg seien, als es Ihnen lieb ist.
liegen, seien Sie daher
wachsam und setzen Sie sich
ruhig mit Ihrer Meinung durch.
Besonders Ihre Kreativität kann
Ihnen dabei helfen! Doch werden Sie nicht ungeduldig,
dies könnte Sie viel Kraft kosten. Auch in der Liebe sieht
es gut für Sie aus, durch Ihre Hilfsbereitschaft finden Sie
schnell neue Kontakte, besonders die Cafeteria ist ein
guter Ort dafür. Doch lassen Sie sich dies nicht zu teuer
kommen! Geben Sie Ihr Geld am besten sparsam aus, oder es
wird schneller weg seien, als es Ihnen lieb ist.
### Fische ### Fische
Der frühe Vogel
fängt den Wurm: Der frühe Vogel fängt den Wurm:
Sowohl Ihre Sowohl Ihre schulischen als auch Ihre Ziele in der Liebe werden in weite Ferne rücken,
schulischen als wenn Sie jetzt nicht zeitig anfangen, diese hartnäckig zu verfolgen. Besonders schwierig
auch Ihre Ziele in wird es für Sie in den Fächern Biologie und Geschichte werden. Doch auch Deutsch und
der Liebe werden in Mathe sind nicht ohne Schwierigkeiten, die in den nächsten Wochen überwunden werden
weite Ferne rücken, müssen. Doch trotz allem sollten Sie sich nicht zu sehr fürchten: Frau Rudolph wird Ihr
wenn Sie jetzt nicht
zeitig anfangen, diese
hartnäckig zu verfolgen. Besonders schwierig
wird es für Sie in den Fächern Biologie und
Geschichte werden. Doch auch Deutsch und
Mathe sind nicht ohne Schwierigkeiten, die in
den nächsten Wochen überwunden werden
müssen. Doch trotz allem sollten Sie sich
nicht zu sehr fürchten: Frau Rudolph wird Ihr
Glücksengel sein, folgen Sie ihr ruhig! Glücksengel sein, folgen Sie ihr ruhig!

@ -1,14 +1,17 @@
--- ---
author: "" title: Modulkurs Chemie 2023
title: "Modulkurs Chemie 2023" draft: false
date: 2023-02-16 date: 2023-02-16
author: ""
description: "" description: ""
tags: ["modulkurs", "2023"] thumbnail: /preview.webp
thumbnail: /blog/preview.webp tags:
- modulkurs
- "2023"
- chemie
type: blog
--- ---
Der Chemieleistungskurs konnte in der Schule
Der Chemieleistungskurs
konnte in der Schule
einfach nicht genug von der einfach nicht genug von der
Chemie bekommen. Aus Chemie bekommen. Aus
diesem Grund fand in der diesem Grund fand in der

@ -1,12 +1,17 @@
--- ---
author: "" title: Umweltschutz 101 (2023/1)
title: "Umweltschutz 101 (2023/1)" draft: false
date: 2023-02-16 date: 2023-02-16
description: "Was? Umweltschutz? Nicht schon wieder!" author: ""
tags: ["umweltschutz", "klimanews", "klima", "2023"] description: Was? Umweltschutz? Nicht schon wieder!
thumbnail: /blog/preview.webp thumbnail: /preview.webp
tags:
- umweltschutz
- klimanews
- klima
- "2023"
type: blog
--- ---
Was? Umweltschutz? Nicht schon wieder! Was? Umweltschutz? Nicht schon wieder!
Du kennst die folgenden Dinge bestimmt auch: Dein Capri-Sonne Strobhalm ist aus Pappe, auf Du kennst die folgenden Dinge bestimmt auch: Dein Capri-Sonne Strobhalm ist aus Pappe, auf

@ -1,10 +1,12 @@
--- ---
author: Denys Konovalov
title: Über uns title: Über uns
draft: false
date: 2023-03-26 date: 2023-03-26
description: author: Denys Konovalov
keywords: ["über-uns", "team"] description: null
type: about keywords:
- über-uns
- team
--- ---

@ -57,6 +57,10 @@
 • {{ i18n "translationsLabel" }} {{ $linksOutput }}  • {{ i18n "translationsLabel" }} {{ $linksOutput }}
{{- end }} {{- end }}
{{ end }} {{ end }}
{{ with .Params.author }}
 • 
{{ . }}
{{ end }}
</h5> </h5>
{{ end }} {{ end }}

161
layouts/admin/list.html Normal file

@ -0,0 +1,161 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link
rel="stylesheet"
href="https://assets.cantorgymnasium.de/fonts/mdi/v7/css/materialdesignicons.min.css"
/>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@staticcms/app@^2.4.3/dist/main.css"
/>
<title>Static CMS</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/@staticcms/app@^2.4.3/dist/static-cms-app.js"></script>
<script type="module">
import Icons from "https://cantorgymnasium.de/admin/icons.js";
import config from "./config.js";
CMS.init({ config });
Icons.forEach((i) => CMS.registerIcon(i.name, i.icon));
CMS.registerFieldPreview("posts", "draft", ({ value }) =>
h(
"div",
{
style: {
backgroundColor:
value === true ? "rgb(37 99 235)" : "rgb(22 163 74)",
color: "white",
border: "none",
padding: "2px 6px",
textAlign: "center",
textDecoration: "none",
display: "inline-block",
cursor: "pointer",
borderRadius: "4px",
fontSize: "14px",
},
},
value ? "Entwurf" : "Veröffentlicht"
)
);
CMS.registerFieldPreview("pages", "draft", ({ value }) =>
h(
"div",
{
style: {
backgroundColor:
value === true ? "rgb(37 99 235)" : "rgb(22 163 74)",
color: "white",
border: "none",
padding: "2px 6px",
textAlign: "center",
textDecoration: "none",
display: "inline-block",
cursor: "pointer",
borderRadius: "4px",
fontSize: "14px",
},
},
value ? "Entwurf" : "Veröffentlicht"
)
);
CMS.registerPreviewTemplate(
"posts",
({ widgetFor, entry, fields, collection }) => {
const imageField = useMemo(() => {
return fields.find((field) => field.name === "thumbnail");
}, [fields]);
const imageUrl = useMediaAsset(
entry.data.thumbnail,
collection,
imageField,
entry
);
return h(
"div",
{},
h(
"div",
{ className: "relative max-w-5xl mx-auto px-4 pt-8" },
h("img", {
className: "rounded-lg shadow-sm w-full object-contain",
src: imageUrl,
})
),
h("article", {
className: "prose lg:prose-lg mx-auto my-8 dark:prose-dark px-4",
},
h("h1", { className: "text-2xl font-bold mb-2" }, entry.data.title),
h("h5", { className: "text-sm flex items-center flex-wrap"},
"Gepostet am " + (entry.data.date != "" ? new Intl.DateTimeFormat("de-DE", {dateStyle: "long"}).format(new Date(entry.data.date)) : ""),
" • " + entry.data.author
),
widgetFor('body')
)
);
}
);
CMS.registerPreviewTemplate(
"pages",
({ widgetFor, entry, fields, collection }) => {
const imageField = useMemo(() => {
return fields.find((field) => field.name === "thumbnail");
}, [fields]);
const imageUrl = useMediaAsset(
entry.data.thumbnail,
collection,
imageField,
entry
);
return h(
"div",
{},
h(
"div",
{ className: "relative max-w-5xl mx-auto px-4 pt-8" },
h("img", {
className: "rounded-lg shadow-sm w-full object-contain",
src: imageUrl,
})
),
h("article", {
className: "prose lg:prose-lg mx-auto my-8 dark:prose-dark px-4",
},
h("h1", { className: "text-2xl font-bold mb-2" }, entry.data.title),
h("h5", { className: "text-sm flex items-center flex-wrap"},
"Gepostet am " + (entry.data.date != "" ? new Intl.DateTimeFormat("de-DE", {dateStyle: "long"}).format(new Date(entry.data.date)) : ""),
" • " + entry.data.author
),
widgetFor('body')
)
);
}
);
</script>
{{- $styles := resources.Get "css/styles.css" | postCSS (dict "config"
"./assets/css/postcss.config.js") -}} {{- if .Site.IsServer }}
<script>
CMS.registerPreviewStyle("{{ $styles.RelPermalink }}");
</script>
{{ else }} {{- $styles := $styles| minify | fingerprint |
resources.PostProcess -}}
<script>
CMS.registerPreviewStyle("{{ $styles.Permalink }}");
</script>
{{ end -}}
</body>
</html>

1510
package-lock.json generated

File diff suppressed because it is too large Load Diff

149
static/admin/collections.js Normal file

@ -0,0 +1,149 @@
const PostCollection = {
name: "posts",
label: "Artikel",
description: "Hier könnt ihr die Artikel der Schülerzeitung bearbeiten.",
icon: "news",
folder: "content/de/blog",
create: true,
editor: {
preview: true,
frame: true,
size: "half",
},
filter: {
field: "type",
value: "blog",
// pattern: "^((?!_index.md).)*$"
},
summary_fields: ["title", "date", "draft", "author"],
fields: [
{
name: "title",
label: "Titel",
widget: "string",
required: true,
},
{
name: "draft",
label: "Entwurf",
widget: "boolean",
required: false,
},
{
name: "date",
label: "Datum",
widget: "datetime",
date_format: "dd.MM.yyyy",
time_format: false,
format: "yyyy-MM-dd",
required: true,
},
{
name: "author",
label: "Autor",
widget: "string",
required: false,
},
{
name: "description",
label: "Beschreibung",
widget: "text",
required: false,
},
{
name: "thumbnail",
label: "Titelbild",
widget: "image",
required: true,
},
{
name: "tags",
label: "Tags",
widget: "list",
delimiter: ",",
required: false,
},
{
name: "type",
widget: "hidden",
default: "blog",
},
{
name: "body",
label: "Inhalt",
widget: "markdown",
required: true,
},
],
};
const PagesCollection = {
name: "pages",
label: "Seiten",
description: "Hier könnt ihr die Zusatzseiten der Website bearbeiten.",
icon: "page",
folder: "content/de/page",
create: true,
editor: {
preview: true,
frame: true,
size: "half",
},
summary_fields: ["title", "date", "draft", "description"],
fields: [
{
name: "title",
label: "Titel",
widget: "string",
required: true,
},
{
name: "draft",
label: "Entwurf",
widget: "boolean",
required: false,
},
{
name: "date",
label: "Datum",
widget: "datetime",
date_format: "dd.MM.yyyy",
time_format: false,
format: "yyyy-MM-dd",
required: true,
},
{
name: "author",
label: "Autor",
widget: "string",
required: false,
},
{
name: "description",
label: "Beschreibung",
widget: "text",
required: false,
},
{
name: "thumbnail",
label: "Titelbild",
widget: "image",
required: false,
},
{
name: "keywords",
label: "Schlüsselwörter",
widget: "list",
delimiter: ",",
required: false,
},
{
name: "body",
label: "Inhalt",
widget: "markdown",
required: true,
},
],
};
export { PostCollection, PagesCollection };

38
static/admin/config.js Normal file

@ -0,0 +1,38 @@
import { PagesCollection, PostCollection } from "./collections.js";
const config = {
backend: {
name: "gitea",
repo: "gcg/schuelerzeitung",
branch: "main",
api_root: "https://git.cantorgymnasium.de/api/v1",
base_url: "https://oauth.cantorgymnasium.de",
commit_messages: {
create: "{{collection}} {{slug}} erstellt",
update: "{{collection}} {{slug}} aktualisiert",
delete: "{{collection}} {{slug}} gelöscht",
updateMedia: "{{path}} hochgeladen",
deleteMedia: "{{path}} gelöscht",
},
},
local_backend: true,
media_folder: "/static",
public_folder: "/",
media_library: {
max_file_size: 10240000,
folder_support: true,
},
site_url: "https://schuelerzeitung-gcg.de",
locale: "de",
slug: {
encoding: "ascii",
clean_accents: true,
sanitize_replacement: "-",
},
collections: [
PostCollection,
PagesCollection
],
};
export default config;

Before

Width:  |  Height:  |  Size: 867 KiB

After

Width:  |  Height:  |  Size: 867 KiB

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 107 KiB