add CMS
This commit is contained in:
parent
299051da24
commit
ad6e7f7299
@ -17,8 +17,6 @@ jobs:
|
||||
steps:
|
||||
- name: clone
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: build
|
||||
run: npm i && hugo --minify --gc --baseURL "https://schuelerzeitung-gcg.de/"
|
||||
@ -42,8 +40,6 @@ jobs:
|
||||
steps:
|
||||
- name: clone
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: build
|
||||
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
|
||||
---
|
||||
|
3
content/de/admin/_index.md
Normal file
3
content/de/admin/_index.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Static CMS
|
||||
---
|
@ -1,10 +1,14 @@
|
||||
---
|
||||
author: ""
|
||||
title: "Buchempfehlung: The inheritance Games"
|
||||
draft: false
|
||||
date: 2023-02-16
|
||||
author: ""
|
||||
description: ""
|
||||
tags: ["buchempfehlung", "2023"]
|
||||
thumbnail: /blog/buchempfehlung-2023-01.webp
|
||||
thumbnail: /buchempfehlung-2023-01.webp
|
||||
tags:
|
||||
- buchempfehlung
|
||||
- "2023"
|
||||
type: blog
|
||||
---
|
||||
|
||||
> - **Titel:** The inheritance Games
|
||||
@ -39,4 +43,4 @@ ohne unerwartete Wendung? Der einzige Makel für uns ist nur, dass der
|
||||
Anfang sich ein wenig zieht, weil es nicht direkt mit der Action losgeht.
|
||||
Aber der Rest der Handlung macht die anfängliche Langeweile auf jeden Fall
|
||||
weg. Deshalb empfehlen wir diese Trilogie wärmstens. Es sind sogar bereits alle drei
|
||||
Bände im Handel, also keine Angst vor Cliffhangern (die es definitiv gibt).
|
||||
Bände im Handel, also keine Angst vor Cliffhangern (die es definitiv gibt).
|
||||
|
@ -1,45 +1,29 @@
|
||||
---
|
||||
author: ""
|
||||
title: "Horoskop (2023/1)"
|
||||
title: Horoskop (2023/1)
|
||||
draft: false
|
||||
date: 2023-02-16
|
||||
description: "Wassermann, Fische"
|
||||
tags: ["umweltschutz", "klima", "2023"]
|
||||
thumbnail: /blog/preview.webp
|
||||
author: ""
|
||||
description: Wassermann, Fische
|
||||
thumbnail: /preview.webp
|
||||
tags:
|
||||
- "2023"
|
||||
- horoskop
|
||||
type: blog
|
||||
---
|
||||
|
||||
### Wassermann
|
||||
Wo ein Wille ist, da ist
|
||||
auch ein Weg: Ihre
|
||||
selbstgesteckten Ziele
|
||||
werden in den nächsten
|
||||
Wochen in Reichweite
|
||||
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.
|
||||
|
||||
Wo ein Wille ist, da ist auch ein Weg: Ihre
|
||||
selbstgesteckten Ziele werden in den nächsten Wochen in Reichweite 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
|
||||
Der frühe Vogel
|
||||
fängt den Wurm:
|
||||
Sowohl Ihre
|
||||
schulischen als
|
||||
auch Ihre Ziele in
|
||||
der Liebe werden in
|
||||
weite Ferne rücken,
|
||||
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!
|
||||
|
||||
Der frühe Vogel fängt den Wurm:
|
||||
Sowohl Ihre schulischen als auch Ihre Ziele in der Liebe werden in weite Ferne rücken,
|
||||
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!
|
||||
|
@ -1,14 +1,17 @@
|
||||
---
|
||||
author: ""
|
||||
title: "Modulkurs Chemie 2023"
|
||||
title: Modulkurs Chemie 2023
|
||||
draft: false
|
||||
date: 2023-02-16
|
||||
author: ""
|
||||
description: ""
|
||||
tags: ["modulkurs", "2023"]
|
||||
thumbnail: /blog/preview.webp
|
||||
thumbnail: /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
|
||||
Chemie bekommen. Aus
|
||||
diesem Grund fand in der
|
||||
@ -127,4 +130,4 @@ unsere Protokolle
|
||||
korrigiert und diese
|
||||
Erfahrung überhaupt
|
||||
erst möglich gemacht
|
||||
hat.
|
||||
hat.
|
||||
|
@ -1,12 +1,17 @@
|
||||
---
|
||||
author: ""
|
||||
title: "Umweltschutz 101 (2023/1)"
|
||||
title: Umweltschutz 101 (2023/1)
|
||||
draft: false
|
||||
date: 2023-02-16
|
||||
description: "Was? Umweltschutz? Nicht schon wieder!"
|
||||
tags: ["umweltschutz", "klimanews", "klima", "2023"]
|
||||
thumbnail: /blog/preview.webp
|
||||
author: ""
|
||||
description: Was? Umweltschutz? Nicht schon wieder!
|
||||
thumbnail: /preview.webp
|
||||
tags:
|
||||
- umweltschutz
|
||||
- klimanews
|
||||
- klima
|
||||
- "2023"
|
||||
type: blog
|
||||
---
|
||||
|
||||
Was? Umweltschutz? Nicht schon wieder!
|
||||
|
||||
Du kennst die folgenden Dinge bestimmt auch: Dein Capri-Sonne Strobhalm ist aus Pappe, auf
|
||||
@ -33,4 +38,4 @@ Umweltschutz erhalten, LOS GEHT'S!!!
|
||||
> ### Negative Klimanews:
|
||||
> Deutschland will idealerweise bis 2030 den Kohleaustieg schaffen. Kohlekraft soll künftig mit erneuerbaren Energie, somit unter anderem Windkraft, ersetzt werden. Für dieses Vorhaben muss jedes Bundeland 2% seiner Fläche für Windkraftanlagen bereitstellen, was nicht überall auf Zustimmung trifft.
|
||||
> In Bayern ist der Bau von Windkraftanlagen seit 2014 durch strenge Abstandsregelungen zu Wohnsiedlungen und Naturschutzgebieten fast zum Stillstand gekommen.
|
||||
> Bundeswirtschaftsminister Robert Habeck (Grüne) hat nun ganz schön zu kämpfen, Bayern zu einem Kompromiss zu bewegen. Es ist bis jetzt keine Einigung in Aussicht.
|
||||
> Bundeswirtschaftsminister Robert Habeck (Grüne) hat nun ganz schön zu kämpfen, Bayern zu einem Kompromiss zu bewegen. Es ist bis jetzt keine Einigung in Aussicht.
|
||||
|
@ -1,10 +1,12 @@
|
||||
---
|
||||
author: Denys Konovalov
|
||||
title: Über uns
|
||||
draft: false
|
||||
date: 2023-03-26
|
||||
description:
|
||||
keywords: ["über-uns", "team"]
|
||||
type: about
|
||||
author: Denys Konovalov
|
||||
description: null
|
||||
keywords:
|
||||
- über-uns
|
||||
- team
|
||||
---
|
||||
|
||||
|
||||
|
@ -57,6 +57,10 @@
|
||||
• {{ i18n "translationsLabel" }} {{ $linksOutput }}
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
{{ with .Params.author }}
|
||||
•
|
||||
{{ . }}
|
||||
{{ end }}
|
||||
</h5>
|
||||
{{ end }}
|
||||
|
||||
|
161
layouts/admin/list.html
Normal file
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
1510
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
149
static/admin/collections.js
Normal file
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
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 |
Loading…
x
Reference in New Issue
Block a user