Implementierung Fachbereichsseiten #305

Merged
Denys Konovalov merged 95 commits from feat/fachbereiche into main 2024-11-22 09:01:21 +01:00
69 changed files with 1130 additions and 674 deletions
Showing only changes of commit a068fdb753 - Show all commits

@ -9,7 +9,7 @@ on:
defaults: defaults:
run: run:
working-directory: /opt/data/actions/gcg-website-master working-directory: /opt/runner/workdir/gcg-website-master
jobs: jobs:
prod-build: prod-build:

@ -262,7 +262,7 @@ textarea.form-control {
border-color: var(--gcg-color-primary); border-color: var(--gcg-color-primary);
} }
.content * { .content *:not(details, details > *, .shortcode *) {
margin-bottom: 20px; margin-bottom: 20px;
} }
@ -366,7 +366,7 @@ summary {
color: var(--gcg-color-secondary); color: var(--gcg-color-secondary);
} }
summary.hover { summary:hover {
color: var(--gcg-color-primary); color: var(--gcg-color-primary);
} }
@ -399,11 +399,6 @@ details[open] summary {
font-size: 96px; font-size: 96px;
} }
#wc-canvas {
width: 100%;
height: 600px;
}
.filter-controls li { .filter-controls li {
cursor: pointer; cursor: pointer;
transition: 0.1s ease; transition: 0.1s ease;
@ -994,3 +989,80 @@ link:focus,
.min-w-0 { .min-w-0 {
min-width: 0; min-width: 0;
} }
.carousel .carousel-control-next-icon, .carousel .carousel-control-prev-icon {
background-color: rgba(0,0,0, 0.2);
border-radius: 1rem;
box-shadow: rgb(0,0,0) 0px 0px 40px;
}
/* Kreative Haufen */
.kh-parent {
display: grid;
grid: repeat(3, 1fr) / repeat(4, 1fr);
justify-content: space-between;
align-content: space-between;
gap: .5rem;
}
.kh-parent > * {
justify-self: center;
text-align: center;
align-self: center;
}
.kh-parent > [onclick] {
cursor: pointer;
}
.kh-parent > [onclick]:hover {
transition: transform 0.3s ease-in-out;
transform: scale(1.1);
}
.kh-jahr {
grid-area: 2 / 2 / span 1 / span 2;
rotate: -25deg;
color: #ffbc3b;
margin: 0;
}
.kh-jahr[onclick]:hover {
text-shadow: rgba(255, 186, 59, 0.8) 0px 0px 170px;
}
.kh-jahr > * {
font-size: 3em;
}
.kh {
color: #1a1a37;
hyphens: manual;
}
.kh:hover {
text-shadow: rgba(26, 26, 55, 0.9) 0px 0px 70px;
}
.kh[data-id="0"] {
grid-area: 1 / 1 / span 1 / span 2;
}
.kh[data-id="1"] {
grid-area: 3 / 3 / span 1 / span 2;
}
.kh[data-id="2"] {
grid-area: 3 / 1 / span 1 / span 2;
}
.kh[data-id="3"] {
grid-area: 1 / 3 / span 1 / span 2;
}
@media (min-width: 1200px) {
.kh > * {
font-size: 1.5em;
}
}

@ -27,8 +27,7 @@ params:
- media/zeichnung.webp - media/zeichnung.webp
impressumURL: pages/impressum impressumURL: pages/impressum
dseURL: pages/datenschutz dseURL: pages/datenschutz
copyright: "Copyright © 2023 Georg-Cantor-Gymnasium Halle (Saale). Made copyright: "Georg-Cantor-Gymnasium Halle (Saale). Made with :heart: and [Hugo](https://gohugo.io)."
with :heart: and [Hugo](https://gohugo.io)."
plugins: plugins:
css: css:
- https://assets.cantorgymnasium.de/bootstrap/v5/css/bootstrap.min.css - https://assets.cantorgymnasium.de/bootstrap/v5/css/bootstrap.min.css
@ -42,7 +41,6 @@ params:
- https://assets.cantorgymnasium.de/slick/v1.8/slick.min.js - https://assets.cantorgymnasium.de/slick/v1.8/slick.min.js
- https://assets.cantorgymnasium.de/lazyload/v17/dist/lazyload.min.js - https://assets.cantorgymnasium.de/lazyload/v17/dist/lazyload.min.js
head_js: head_js:
- https://assets.cantorgymnasium.de/wordcloud/v2/wordcloud2.min.js
- https://assets.cantorgymnasium.de/echarts/v5/echarts.min.js - https://assets.cantorgymnasium.de/echarts/v5/echarts.min.js
- https://assets.cantorgymnasium.de/jquery/v3.6/jquery.min.js - https://assets.cantorgymnasium.de/jquery/v3.6/jquery.min.js
- https://assets.cantorgymnasium.de/venobox/v2/dist/venobox.min.js - https://assets.cantorgymnasium.de/venobox/v2/dist/venobox.min.js

@ -2,7 +2,9 @@
title: "1988" title: "1988"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Im Jahr 1988 beginnt die legendäre Ära des Georg-Cantor-Gymnasiums. Im Jahr 1988 beginnt die legendäre Ära des Georg-Cantor-Gymnasiums.
Im Herbst 1986 fasste der damalige Rat des Bezirkes Halle den Beschluss, in Im Herbst 1986 fasste der damalige Rat des Bezirkes Halle den Beschluss, in

@ -2,7 +2,9 @@
title: "1989" title: "1989"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Während des ersten Jahres des Bestehens unseres Gymnasiums fand einer Während des ersten Jahres des Bestehens unseres Gymnasiums fand einer
der bedeutendsten Meilensteine der deutschen Geschichte statt der Mauerfall. der bedeutendsten Meilensteine der deutschen Geschichte statt der Mauerfall.

@ -2,7 +2,9 @@
title: "1990" title: "1990"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Der Schulbetrieb nahm weiterhin Fahrt auf und indem das Cantorgymnasium Der Schulbetrieb nahm weiterhin Fahrt auf und indem das Cantorgymnasium
in diesem Jahr zusätzlich einen Jahrgang der 7. Klasse annahm, vergrößerte in diesem Jahr zusätzlich einen Jahrgang der 7. Klasse annahm, vergrößerte
sich außerdem noch die Schulgemeinschaft. sich außerdem noch die Schulgemeinschaft.

@ -2,7 +2,9 @@
title: "1991" title: "1991"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Im Jahr 1991 wurde die ehemalige „Spezialschule Im Jahr 1991 wurde die ehemalige „Spezialschule
mathematisch-naturwissenschaftlich-technische Richtung Ernst mathematisch-naturwissenschaftlich-technische Richtung Ernst

@ -2,7 +2,9 @@
title: "1992" title: "1992"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Das Jahr 1992 war ein ereignisreiches Jahr. Für das Schuljahr 1991/92 Das Jahr 1992 war ein ereignisreiches Jahr. Für das Schuljahr 1991/92
wurde der erste Abiturjahrgang mit Freude erwartet. Erstmals wurden an dem wurde der erste Abiturjahrgang mit Freude erwartet. Erstmals wurden an dem
Gymnasium 5. Klässler aufgenommen. Insgesamt kamen so 4 neue Klassen zum Gymnasium 5. Klässler aufgenommen. Insgesamt kamen so 4 neue Klassen zum
@ -13,6 +15,9 @@ pretext: >
gelegt werden sollte. Gemeinsam schrieben die Elternräte aus Halle und gelegt werden sollte. Gemeinsam schrieben die Elternräte aus Halle und
Magdeburg einen Brief an den Ministerpräsidenten Werner Münch. Magdeburg einen Brief an den Ministerpräsidenten Werner Münch.
topics: topics:
- title: Erster Abiturjahrgang
content: |
{{< card title="Abiturienten 1992" link="/abiturienten/1992" >}}
- title: Verlieren Mathe-Asse ihre Förderer? - title: Verlieren Mathe-Asse ihre Förderer?
content: | content: |
{{< gallery dir="/media/schulchronik/1992" >}} {{< gallery dir="/media/schulchronik/1992" >}}
@ -139,4 +144,3 @@ topics:
enable: false enable: false
--- ---
{{< card title="Erster Abiturjahrgang" link="/abiturienten/1992" >}}

@ -2,7 +2,9 @@
title: "1993" title: "1993"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Das Jahr 1993 war ein besonders ereignisreiches, aber aucherfolgreiches Das Jahr 1993 war ein besonders ereignisreiches, aber aucherfolgreiches
Jahr für das Cantor-Gymnasium. Jahr für das Cantor-Gymnasium.

@ -2,7 +2,9 @@
title: "1994" title: "1994"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Das Jahr 1994 war ein bedeutungsvolles, was die internationale Umgebung Das Jahr 1994 war ein bedeutungsvolles, was die internationale Umgebung
des GCGs anging und auch immer noch angeht, denn ohne, dass ein Schüler der des GCGs anging und auch immer noch angeht, denn ohne, dass ein Schüler der
10. Klasse ein Jahr in Chicago verbracht hätte, wäre wohl auch folgenden 10. Klasse ein Jahr in Chicago verbracht hätte, wäre wohl auch folgenden
@ -21,7 +23,7 @@ topics:
Rahmenrichtlinien. Dies beinhaltet eine modifizierte Stundentafel mit Rahmenrichtlinien. Dies beinhaltet eine modifizierte Stundentafel mit
vertiefendem Unterricht in den naturwissenschaftlichen Fächern in Bezug vertiefendem Unterricht in den naturwissenschaftlichen Fächern in Bezug
auf unser Ausbildungsprofil. auf unser Ausbildungsprofil.
- title: Einführung der Korrespondenzzirkel - title: Einführung der Korrespondenz&shy;zirkel
content: > content: >
Im Auftrag des Kultusministeriums des Landes Sachsen-Anhalt fördert das Im Auftrag des Kultusministeriums des Landes Sachsen-Anhalt fördert das
Georg-Cantor-Gymnasium interessierte und talentierte Schüler in Form einer Georg-Cantor-Gymnasium interessierte und talentierte Schüler in Form einer

@ -2,7 +2,9 @@
title: "1995" title: "1995"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Im Jahr 1995 feierte unser Gymnasium den 150. Geburtstags unseres Im Jahr 1995 feierte unser Gymnasium den 150. Geburtstags unseres
Namensgebers. Zu diesem Anlass fand eine Festveranstaltung statt. Untermalt Namensgebers. Zu diesem Anlass fand eine Festveranstaltung statt. Untermalt
mit reichlicher Musik wurde das Leben Cantors mittels einer Theaterszene und mit reichlicher Musik wurde das Leben Cantors mittels einer Theaterszene und

@ -3,7 +3,9 @@ title: "1996"
draft: false draft: false
cantorpreisträger: Robert Strich cantorpreisträger: Robert Strich
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
In diesem Jahr hat sich der Förderverein der Schule eine besondere In diesem Jahr hat sich der Förderverein der Schule eine besondere
Auszeichnung einfallen lassen: den Cantorpreis. Den ersten bekam Robert Auszeichnung einfallen lassen: den Cantorpreis. Den ersten bekam Robert
Strich, der im März dieses Jahres auch Sieger im Bundeswettbewerb Mathematik Strich, der im März dieses Jahres auch Sieger im Bundeswettbewerb Mathematik
@ -22,7 +24,7 @@ pretext: >
{{< image src="/media/schulchronik/1996/robertstrich.webp" >}} {{< image src="/media/schulchronik/1996/robertstrich.webp" >}}
topics: topics:
- title: Kooperationsvereinbarung mit der Martin-Luther-Universität - title: Kooperations&shy;vereinbarung mit der Martin-Luther-Universität
content: | content: |
{{< image src="/media/schulchronik/1996/mlu.webp" >}} {{< image src="/media/schulchronik/1996/mlu.webp" >}}
- title: Wettbewerbserfolge - title: Wettbewerbserfolge

@ -3,7 +3,9 @@ title: "1997"
draft: false draft: false
cantorpreisträger: Andreas Tannert cantorpreisträger: Andreas Tannert
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Diesen Sommer hatten unsere Schule und vor allem ihr Abschlussjahrgang Diesen Sommer hatten unsere Schule und vor allem ihr Abschlussjahrgang
einen besonderen Grund zur Freude: Der Abiturdurchschnitt war mit 1,7 der einen besonderen Grund zur Freude: Der Abiturdurchschnitt war mit 1,7 der
beste in ganz Sachsen-Anhalt. Ein herausragender Erfolg war außerdem der beste in ganz Sachsen-Anhalt. Ein herausragender Erfolg war außerdem der

@ -2,7 +2,9 @@
title: "1998" title: "1998"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Wenige Jahre nach der Festveranstaltung zum 150. Geburtstag Cantors, Wenige Jahre nach der Festveranstaltung zum 150. Geburtstag Cantors,
feierte das Gymnasium selbst Geburtstag, und zwar sein 10-jähriges Jubiläum. feierte das Gymnasium selbst Geburtstag, und zwar sein 10-jähriges Jubiläum.

@ -3,7 +3,9 @@ title: "1999"
draft: false draft: false
cantorpreisträger: Stephan Diestelhorst cantorpreisträger: Stephan Diestelhorst
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Seit diesem Jahr wird am Georg-Cantor-Gymnasium das Fach Informatik Seit diesem Jahr wird am Georg-Cantor-Gymnasium das Fach Informatik
schon ab der 7. Klasse unterrichtet, eine Besonderheit des schon ab der 7. Klasse unterrichtet, eine Besonderheit des
naturwissenschaftlichen Schwerpunkts der Schule. Doch auch außerhalb dieses naturwissenschaftlichen Schwerpunkts der Schule. Doch auch außerhalb dieses

@ -2,7 +2,9 @@
title: "2000" title: "2000"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Die Jahrtausendwende fiel direkt auf den 155. Geburtstag von Cantor. Zu Die Jahrtausendwende fiel direkt auf den 155. Geburtstag von Cantor. Zu
diesem Anlass wurden die beiden OB-Kandidaten Ingrid diesem Anlass wurden die beiden OB-Kandidaten Ingrid

@ -3,7 +3,9 @@ title: "2001"
draft: false draft: false
cantorpreisträger: Lars Kasper cantorpreisträger: Lars Kasper
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Die größte Sensation des Jahres 2001 fand am 19. Oktober statt. Mehrere Die größte Sensation des Jahres 2001 fand am 19. Oktober statt. Mehrere
Lehrer und Schüler nahmen im Schloss Bellevue in Berlin den Siemens Award für Lehrer und Schüler nahmen im Schloss Bellevue in Berlin den Siemens Award für
MINT-EC-Schulen aus den Händen von Bundespräsident Johannes Rau entgegen. Der MINT-EC-Schulen aus den Händen von Bundespräsident Johannes Rau entgegen. Der

@ -2,15 +2,13 @@
title: "2002" title: "2002"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: >+ pretext:
enable: true
content: >
Das Cantor-Gymnasium erhielt im Jahr 2002 besonderen Besuch und zwar Das Cantor-Gymnasium erhielt im Jahr 2002 besonderen Besuch und zwar
von Lehrern und Regierungsvertretern aus dem weit entfernten Japan. von Lehrern und Regierungsvertretern aus dem weit entfernten Japan.
Außerdem begann die lange und beständige Zusammenarbeit mit unserer Partnerfirma Dow-Chemical und die Vorbereitung der „Cantor-Oper“, die drei Jahre später uraufgeführt werden sollte. Außerdem begann die lange und beständige Zusammenarbeit mit unserer Partnerfirma Dow-Chemical und die Vorbereitung der „Cantor-Oper“, die drei Jahre später uraufgeführt werden sollte.
topics: topics:
- title: Kooperation mit DOW-Chemical - title: Kooperation mit DOW-Chemical
content: > content: >

@ -3,7 +3,9 @@ title: "2003"
draft: false draft: false
cantorpreisträger: Susanne Havranek cantorpreisträger: Susanne Havranek
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Wenn Schüler anfangen, selbst zu streiken, dann muss das schon was Wenn Schüler anfangen, selbst zu streiken, dann muss das schon was
heißen. Wenn sie neben Klassenarbeiten und Prüfungen für ihre Schule heißen. Wenn sie neben Klassenarbeiten und Prüfungen für ihre Schule
demonstrieren, sollte man darüber nachdenken, was hier wohl geschehen ist. demonstrieren, sollte man darüber nachdenken, was hier wohl geschehen ist.

@ -2,7 +2,9 @@
title: "2004" title: "2004"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Nach einem sehr außergewöhnlichen Jahr 2003 kehrte in diesem Jahr Nach einem sehr außergewöhnlichen Jahr 2003 kehrte in diesem Jahr
wieder ein wenig Ruhe in das Georg-Cantor-Gymnasium ein. Es war eher das Jahr wieder ein wenig Ruhe in das Georg-Cantor-Gymnasium ein. Es war eher das Jahr
von Chemie und Mathematik, mit einer Menge Preise in diesen Richtungen. So von Chemie und Mathematik, mit einer Menge Preise in diesen Richtungen. So
@ -13,7 +15,7 @@ pretext: >
Nur der Cantorpreis wurde hauptsächlich für andere Leistungen vergeben. Der Preisträger dieses Jahres ist sehr engagiert und initiierte im November 2003 als Schülersprecher den Schülerstreik. Marcus Syring hat diesen Preis auf jeden Fall verdient und schließt sich mit seiner außergewöhnlichen Arbeit für die Schule als neunter Preisträger in die Reihe großer Cantorianer an. Nur der Cantorpreis wurde hauptsächlich für andere Leistungen vergeben. Der Preisträger dieses Jahres ist sehr engagiert und initiierte im November 2003 als Schülersprecher den Schülerstreik. Marcus Syring hat diesen Preis auf jeden Fall verdient und schließt sich mit seiner außergewöhnlichen Arbeit für die Schule als neunter Preisträger in die Reihe großer Cantorianer an.
topics: topics:
- title: Franziska Flegel bei der internationalen Olympiade für - title: Franziska Flegel bei der internationalen Olympiade für
Nachwuchswissenschaftler Nachwuchs&shy;wissenschaftler
content: | content: |
{{< image src="/media/schulchronik/2004/franziska-flegel.webp" >}} {{< image src="/media/schulchronik/2004/franziska-flegel.webp" >}}
- title: Wettbewerbserfolge - title: Wettbewerbserfolge

@ -2,7 +2,9 @@
title: "2005" title: "2005"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Georg Cantor ist zweifellos ein großer Mathematiker und auf jeden Fall Georg Cantor ist zweifellos ein großer Mathematiker und auf jeden Fall
der Ehrung durch ein Theaterstück wert. Lediglich fehlte bisher wohl der der Ehrung durch ein Theaterstück wert. Lediglich fehlte bisher wohl der
Wagemut, sich dieser Aufgabe anzunehmen. Zumindest bis Ingomar Grünauer kam Wagemut, sich dieser Aufgabe anzunehmen. Zumindest bis Ingomar Grünauer kam

@ -3,7 +3,9 @@ title: "2006"
draft: false draft: false
cantorpreisträger: Udo Dorn cantorpreisträger: Udo Dorn
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Neben den unserem Profil entsprechenden Erfolgen gab es in diesem Jahr Neben den unserem Profil entsprechenden Erfolgen gab es in diesem Jahr
auch einige kulturelle Höhepunkte. auch einige kulturelle Höhepunkte.

@ -3,7 +3,9 @@ title: "2007"
draft: false draft: false
cantorpreisträger: Sebastian Koch/Henning Seidler cantorpreisträger: Sebastian Koch/Henning Seidler
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Das Wichtigste in diesem Jahr ist wohl der Umzug aus dem Gebäude in der Das Wichtigste in diesem Jahr ist wohl der Umzug aus dem Gebäude in der
Muldestraße in die Torstraße. Zwar konnten weder Aula noch die interne Muldestraße in die Torstraße. Zwar konnten weder Aula noch die interne
Turnhalle genutzt werden, da sie noch nicht fertig renoviert waren, doch Turnhalle genutzt werden, da sie noch nicht fertig renoviert waren, doch

@ -2,7 +2,9 @@
title: "2008" title: "2008"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Die 11. Biologie-Chemie-Olympiade brachte Paulin Wendler einen hervorragenden Die 11. Biologie-Chemie-Olympiade brachte Paulin Wendler einen hervorragenden
zweiten Platz ein, den sie sich mit einem Schüler vom Agricolagymnasium in zweiten Platz ein, den sie sich mit einem Schüler vom Agricolagymnasium in
Hohenmölsen teilte. Geehrt konnte sie in der restaurierten Aula werden, die Hohenmölsen teilte. Geehrt konnte sie in der restaurierten Aula werden, die

@ -3,7 +3,9 @@ title: "2009"
draft: false draft: false
cantorpreisträger: Bertram Arnold cantorpreisträger: Bertram Arnold
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Im Jahr 2009 nahm das Georg-Cantor-Gymnasium erfolgreich an der Im Jahr 2009 nahm das Georg-Cantor-Gymnasium erfolgreich an der
Landes-Deutsch-Olympiade und der Landes-Mathematik-Olympiade teil. Andere Landes-Deutsch-Olympiade und der Landes-Mathematik-Olympiade teil. Andere
Wettbewerbe, in denen Cantorianern erfolgreich waren, sind der Wettbewerbe, in denen Cantorianern erfolgreich waren, sind der

@ -2,7 +2,9 @@
title: "2010" title: "2010"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Das Jahr 2010 war ein erneut erfolgreiches Wettbewerbsjahr. Neben Das Jahr 2010 war ein erneut erfolgreiches Wettbewerbsjahr. Neben
zahlreichen Errungenschaften bei MINT-Wettbewerben, wie „Jugend Forscht“ oder zahlreichen Errungenschaften bei MINT-Wettbewerben, wie „Jugend Forscht“ oder
der Mathe-Olympiade, zeigte das GCG, dass es auch beispielsweise im eher der Mathe-Olympiade, zeigte das GCG, dass es auch beispielsweise im eher

@ -3,6 +3,8 @@ title: "2011"
draft: false draft: false
cantorpreisträger: Maximilian König cantorpreisträger: Maximilian König
type: schulchronik type: schulchronik
pretext:
enable: false
topics: topics:
- title: Schule ohne Rassismus Schule mit Courage - title: Schule ohne Rassismus Schule mit Courage
content: > content: >

@ -2,7 +2,8 @@
title: "2012" title: "2012"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: null pretext:
enable: false
topics: topics:
- title: „Tag der Kulturen“ - title: „Tag der Kulturen“
content: > content: >

@ -3,6 +3,8 @@ title: "2013"
draft: false draft: false
cantorpreisträger: Dorothee Henke cantorpreisträger: Dorothee Henke
type: schulchronik type: schulchronik
pretext:
enable: false
topics: topics:
- title: 25-jähriges Jubiläum - title: 25-jähriges Jubiläum
content: > content: >

@ -1,9 +1,9 @@
--- ---
title: "2014" title: "2014"
draft: false draft: false
cantorpreisträger: Paula Hähndel
type: schulchronik type: schulchronik
pretext: pretext:
enable: false
topics: topics:
- title: Junior-Ingenieur-Akademie - title: Junior-Ingenieur-Akademie
content: > content: >
@ -25,5 +25,345 @@ topics:
(WOU) laufen. Der Unterricht wird so geplant, dass etwa zu je einem (WOU) laufen. Der Unterricht wird so geplant, dass etwa zu je einem
Drittel Veranstaltungen an der Schule, der Hochschule und im Unternehmen Drittel Veranstaltungen an der Schule, der Hochschule und im Unternehmen
stattfinden. stattfinden.
superhaufen:
enable: false
- title: Verabschiedung Herr OStD Dr. Müller
content: >
### Programm
> Festveranstaltung
>
> anlässlich der feierlichen Verabschiedung des Schulleiters des Georg-Cantor-Gymnasiums
>
> Halle - 11. Juli 2014 - 14.00 Uhr - Aula
##### Programm
> Anna Imming (Klavier) und Lavinia Burkhardt (Blockflöte)
>
> Peter Tschaikowski
>
> „Marsch“ aus „Nussknacker-Suite“
##### Begrüßung
Herr Dieter Kammel
> Anna Imming (Klavier)
>
> Camille Saint-Saëns
>
> „Der Schwan“ aus „Karneval der Tiere“
##### Grußworte
- Herr Kogge, Vertreter des Oberbürgermeisters
- Herr Klieme, Leiter des Landesschulamtes
- Herr Prof. Dr. Sträter, Rektor der Martin-Luther-Universität
- weitere Redner
##### Offizielle Verabschiedung
Frau Grinda, Referentin Landesschulamt
##### Grußworte des Kollegiums
##### Übergabe der Präsente
Herr Brode und Frau Schmidt und die Fachbereiche
Musikstücke (Kammerchor)
##### Dankesworte
Herr OStD Dr. Ulrich Müller
> Carolina Cao (Klavier)
>
> Peter Tschaikowski
>
> „Juni“ aus „Die Jahreszeiten“ op. 37a
##### Empfang im Schulgebäude
### Danksagung
Das sagte Herr OStD. Dr. Müller am 12. Juli 2014:
{{< image src="/media/schulchronik/2014/danksagung.webp" >}}
### "Cheflied"
#### My Way (nach Harald Juhnke)
> Was ich im Leben tat,
>
> das war bestimmt
>
> nicht immer richtig.
>
> Ich nahm,
>
> was ich bekam
>
> und nahm manches
>
> nicht so wichtig.
>
> Wenn ich
>
> auch ganz gewiss
>
> mich nicht von Schuld
>
> und Schwächen frei seh.
>
> Verzeihn Sie,
>
> wenn ich sag,
>
> I Did It My Way.
>
> Ich kenn
>
> das Auf und Ab,
>
> den Jubel und
>
> die bittren Tränen.
>
> Ich stand
>
> auch oft am Rand,
>
> das brauch ich wohl
>
> nicht zu erwähnen.
>
> Es ist
>
> für mich ein Trost,
>
> dass ich trotz allem
>
> nicht entzwei geh.
>
> Verzeihn Sie,
>
> wenn ich sag,
>
> I Did It My Way.
>
> Und dennoch denk
>
> ich gern zurück.
>
> Ich hatte Glück,
>
> verdammt viel Glück.
>
> Ich kann zu vielen
>
> Freunden gehn,
>
> die sich sehr freun,
>
> wenn sie mich sehn
>
> und ohne Groll
>
> den Satz verstehn,
>
> I Did It My Way.
>
> Ich hab
>
> ein Kollegium
>
> und darauf kann
>
> ich mich verlassen.
>
> Sehr engagiert
>
> setzt es viel um.
>
> Ich kann das manchmal
>
> kaum noch fassen.
>
> Ich schau
>
> auf dieses Haus,
>
> ein Lebenswerk,
>
> es wird mir fehlen.
>
> Ich sag und das mit Stolz,
>
> I Did It My Way.
## Zeitungsartikel
{{< image src="/media/schulchronik/2014/zeitung.webp" >}}
## Fotos
{{< gallery dir="/media/schulchronik/2014/galerie" >}}
superhaufen:
enable: false
cantorpreisträger: Paula Hähndel
--- ---
{{< card title="Verabschiedung Herr OStD Dr. Müller" link="/chronikseiten/verabschiedung-herr-dr-mueller" >}}

@ -2,7 +2,9 @@
title: "2015" title: "2015"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Auch in diesem Jahr, konnten viele Wettbewerbserfolge vermerkt werden. Auch in diesem Jahr, konnten viele Wettbewerbserfolge vermerkt werden.
Ob bei der Mathe-Olympiade, dem Bundeswettbewerb Fremdsprachen oder „Jugend Ob bei der Mathe-Olympiade, dem Bundeswettbewerb Fremdsprachen oder „Jugend
musiziert“. musiziert“.

@ -2,7 +2,9 @@
title: "2016" title: "2016"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Auch im Jahr Jahr 2016 konnte das Georg-Cantor-Gymnasium viele Auch im Jahr Jahr 2016 konnte das Georg-Cantor-Gymnasium viele
Wettbewerbserfolge feiern. Dazu gehören Errungenschaften bei „Jugend Wettbewerbserfolge feiern. Dazu gehören Errungenschaften bei „Jugend
Forscht“, „Jugend musiziert“ , der Bundeswettbewerb Fremdsprachen und Forscht“, „Jugend musiziert“ , der Bundeswettbewerb Fremdsprachen und

@ -2,7 +2,9 @@
title: "2017" title: "2017"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Im Jahr 2017 wurde im Cantor-Gymnasium begonnen, die Festwoche des 100. Im Jahr 2017 wurde im Cantor-Gymnasium begonnen, die Festwoche des 100.
Todestag von Cantor vorzubereiten. Todestag von Cantor vorzubereiten.

@ -2,7 +2,9 @@
title: "2018" title: "2018"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
2018 war sowohl für das GCG als auch für Georg Cantor selbst ein ganz besonderes Jahr. Während der 100. Todestag von unserem Namensgeber gefeiert wurde, zelebrierte unser Gymnasium sein 30-jähriges Bestehen. 2018 war sowohl für das GCG als auch für Georg Cantor selbst ein ganz besonderes Jahr. Während der 100. Todestag von unserem Namensgeber gefeiert wurde, zelebrierte unser Gymnasium sein 30-jähriges Bestehen.
Im Rahmen dieser Festlichkeiten wurden vielfältige Aktionen geplant. Unter anderem wurde mit viel Mühe und Arbeit eine Rallye zum Thema Cantor zusammengestellt, ein Flashmob in Form eines Unendlichkeitszeichens organisiert und es fand ein fantastisches Schulfest statt, welches die damalige 10. Klasse zusammengestellt hat. Im Rahmen dieser Festlichkeiten wurden vielfältige Aktionen geplant. Unter anderem wurde mit viel Mühe und Arbeit eine Rallye zum Thema Cantor zusammengestellt, ein Flashmob in Form eines Unendlichkeitszeichens organisiert und es fand ein fantastisches Schulfest statt, welches die damalige 10. Klasse zusammengestellt hat.

@ -2,7 +2,9 @@
title: "2019" title: "2019"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: > pretext:
enable: true
content: >
Neben dem naturwissenschaftlichen Wettbewerbs-Marathon konnten sich in Neben dem naturwissenschaftlichen Wettbewerbs-Marathon konnten sich in
diesem Jahr die Cantorianer auch sportlich auspowern. Zusammen mit dem Neuen diesem Jahr die Cantorianer auch sportlich auspowern. Zusammen mit dem Neuen
Städtischen Gymnasium fand in der ehemaligen Eissporthalle dieses Jahr ein Städtischen Gymnasium fand in der ehemaligen Eissporthalle dieses Jahr ein

@ -1,6 +1,8 @@
--- ---
title: "2020" title: "2020"
draft: false draft: false
pretext:
enable: false
cantorpreisträger: Tom Erik Steinkopf cantorpreisträger: Tom Erik Steinkopf
type: schulchronik type: schulchronik
--- ---

@ -1,6 +1,8 @@
--- ---
title: "2021" title: "2021"
draft: false draft: false
pretext:
enable: false
cantorpreisträger: Oliver Zimmermann cantorpreisträger: Oliver Zimmermann
type: schulchronik type: schulchronik
--- ---

@ -2,7 +2,8 @@
title: "2022" title: "2022"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: "\n\n\n" pretext:
enable: false
cantorpreisträger: Sophia Jäger cantorpreisträger: Sophia Jäger
--- ---

@ -2,7 +2,8 @@
title: "2023" title: "2023"
draft: false draft: false
type: schulchronik type: schulchronik
pretext: "\n\n\n" pretext:
enable: false
topics: topics:
- superhaufen: - superhaufen:
enable: true enable: true

@ -1,5 +1,7 @@
--- ---
title: "2024" title: "2024"
draft: true draft: true
pretext:
enable: false
type: schulchronik type: schulchronik
--- ---

@ -1,8 +1,8 @@
{{ define "main" }} {{ define "main" }}
<link rel="stylesheet" href="https://unpkg.com/leaflet@^1.7.1/dist/leaflet.css" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.min.css" />
<script src="https://unpkg.com/leaflet@^1.7.1/dist/leaflet.js"></script> <script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.min.js"></script>
<main data-pagefind-body> <main data-pagefind-body>
<section class="section pb-0"> <section class="section pb-0">

@ -1,9 +1,9 @@
<div class="card border-primary rounded-2 hover-shadow mb-4"> <div class="shortcode card border-primary rounded-2 hover-shadow mb-4">
<div class="card-body mb-0"> <div class="card-body mb-0">
<details> <details>
<summary>{{ .title }}</summary> <summary>{{ .title }}</summary>
<div class="content text-justify"> <div class="content text-justify">
{{ .content | markdownify | emojify }} <div>{{ .content }}</div>
</div> </div>
</details> </details>
</div> </div>

@ -1,4 +1,4 @@
<div class="card border-primary rounded-0 hover-shadow mb-2"> <div class="shortcode card border-primary rounded-0 hover-shadow mb-2">
<div class="card-body mb-0"> <div class="card-body mb-0">
<h4 class="card-title"><a class="text-decoration-none" href='{{ .link }}'>{{ .title }}</a></h4> <h4 class="card-title"><a class="text-decoration-none" href='{{ .link }}'>{{ .title }}</a></h4>
<a href='{{ .link }}' class="text-decoration-none btn btn-primary btn-sm mb-0"><i class="mdi mdi-tray-arrow-down me-2"></i>Download</a> <a href='{{ .link }}' class="text-decoration-none btn btn-primary btn-sm mb-0"><i class="mdi mdi-tray-arrow-down me-2"></i>Download</a>

@ -49,7 +49,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-sm-7 text-sm-start text-center"> <div class="col-sm-7 text-sm-start text-center">
<p class="mb-0 text-white text-opacity-50">{{ .Site.Params.copyright | markdownify | emojify }}</p> <p class="mb-0 text-white text-opacity-50">Copyright &copy; {{ time.Format "2006" now }} {{ .Site.Params.copyright | markdownify | emojify }}</p>
</div> </div>
<div class="col-sm-5 text-sm-end text-center"> <div class="col-sm-5 text-sm-end text-center">
<ul class="list-inline"> <ul class="list-inline">

@ -17,11 +17,16 @@
<link rel="shortcut icon" href="{{ `media/favicon.png` | absURL }}" type="image/x-icon"> <link rel="shortcut icon" href="{{ `media/favicon.png` | absURL }}" type="image/x-icon">
<link rel="icon" href="{{ `media/favicon.png` | absURL }}" type="image/x-icon"> <link rel="icon" href="{{ `media/favicon.png` | absURL }}" type="image/x-icon">
{{ range .Site.Params.plugins.head_js }}
<script src="{{ . | absURL }}" type="text/javascript"></script>
{{ end }}
<link href="/pagefind/pagefind-ui.css" rel="stylesheet"> <link href="/pagefind/pagefind-ui.css" rel="stylesheet">
<script src="/pagefind/pagefind-ui.js" type="text/javascript"></script> <script src="/pagefind/pagefind-ui.js" type="text/javascript"></script>
<script> <script>
window.addEventListener('DOMContentLoaded', (event) => { ($ => {
$(window).on('DOMContentLoaded', () => {
new PagefindUI({ new PagefindUI({
element: "#search", element: "#search",
translations: { translations: {
@ -30,14 +35,14 @@
clear_search: "Löschen" clear_search: "Löschen"
} }
}); });
$('#pagefind-search').on('shown.bs.modal', () => {
$('.pagefind-ui__search-input').focus();
}); });
});
})(jQuery);
</script> </script>
{{ range .Site.Params.plugins.head_js }}
<script src="{{ . | absURL }}"></script>
{{ end }}
<script> <script>
var _paq = window._paq = window._paq || []; var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */ /* tracker methods like "setCustomDimension" should be called before "trackPageView" */

@ -1,5 +1,5 @@
<div id="{{ md5 .title }}" class="modal fade"> <div id="{{ md5 .title }}" class="modal fade">
<div class="modal-dialog modal-xl modal-dialog-scrollable modal-dialog-centered" role="document"> <div class="modal-dialog modal-lg modal-dialog-scrollable modal-dialog-centered" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h3 class="modal-title">{{ .title }}</h3> <h3 class="modal-title">{{ .title }}</h3>

@ -7,9 +7,9 @@
</div> </div>
<div class="col-md-9"> <div class="col-md-9">
<div class="card-body h-100 d-flex flex-column justify-content-around"> <div class="card-body h-100 d-flex flex-column justify-content-around">
<h4 class="card-title">{{ .title }}</h4> <h4 class="card-title mb-0">{{ .title }}</h4>
{{ with .location }} {{ with .location }}
<div class="card-text"> <div class="card-text d-flex align-items-center">
<i class="mdi mdi-map-marker-radius-outline icon-s text-primary me-2"></i>{{ . | markdownify }} <i class="mdi mdi-map-marker-radius-outline icon-s text-primary me-2"></i>{{ . | markdownify }}
</div> </div>
{{ end }} {{ end }}

@ -1,93 +1,64 @@
{{ define "main" }} {{ define "main" }}
{{ range .Params.topics }}
{{ partial "modal" . }}
{{ end }}
{{ if .Params.pretext.enable }}
{{ partial "modal" (dict "title" .Title "content" .Params.pretext.content) }}
{{ end }}
<section class="section" data-pagefind-body> <section class="section" data-pagefind-body>
<!-- TODO: everything -->
<div class="container"> <div class="container">
{{ if or .Params.cantorpreisträger (where (where .Site.RegularPages "Title" (print "Abiturienten " .Params.Title ) ) "Type" "=" "abiturienten") }} {{ if or .Params.cantorpreisträger (where .Site.RegularPages "Title" (print "Abiturienten " .Params.Title ) ) }}
<div class="card-group"> <div class="card-group">
{{ range where (where .Site.RegularPages "Title" .Params.Title ) "Type" "=" "cantorpreis" }} {{ range where (where .Site.RegularPages "Title" .Params.Title ) "Type" "=" "cantorpreis" }}
<div class="card d-flex flex-row flex-wrap"> <div class="card d-flex flex-row flex-wrap">
<div class="flex-shrink-0"> <a href="{{ .Permalink }}">
<a href="{{ .Permalink }}"><img src="{{ .Params.Image | relURL }}" class="rounded-circle m-3 object-cover" height="128px" width="128px"></a> <img src="{{ .Params.Image | relURL }}" class="rounded-circle object-cover m-3" width="128px" height="128px">
</div> </a>
<div class="flex-grow card-body min-w-0"> <div class="flex-grow card-body min-w-0">
<a href="/cantorpreis"><h3 class="card-title">Cantorpreisträger</h3></a> <a href="/cantorpreis"><h3 class="card-title">Cantorpreisträger</h3></a>
<a href="{{ .Permalink }}"><p class="h4 card-text">{{ .Params.name }}</p></a> <a href="{{ .Permalink }}" class="h4 card-text">{{ .Params.name }}</a>
</div> </div>
</div> </div>
{{ end }} {{ end }}
{{ range where (where .Site.RegularPages "Title" (print "Abiturienten " .Params.Title ) ) "Type" "=" "abiturienten" }} {{ range where .Site.RegularPages "Title" (print "Abiturienten " .Params.Title ) }}
<div class="card d-flex flex-row flex-wrap-reverse"> <div class="card d-flex flex-row flex-wrap-reverse">
<div class="flex-grow card-body min-w-0"> <div class="flex-grow card-body min-w-0">
<a href="{{ .Permalink }}"><h3 class="card-title">{{ .Title }}</h3></a> <a href="{{ .Permalink }}"><h3 class="card-title">{{ .Title }}</h3></a>
{{ $abiturdurchschnitte := getJSON "static/data/abiturdurchschnitte.json" }} {{ range (getJSON "static/data/abiturdurchschnitte.json").abiturdurchschnitte }}
{{ range $abiturdurchschnitte.abiturdurchschnitte }} {{ if eq (string .jahr) $.Title }}<a href="/chronikseiten/abiturdurchschnitte" class="h4 card-text">Abiturdurchschnitt: {{ .schnitt }}</a>{{ end }}
{{ if eq (string (index . "jahr")) $.Title }}<a href="/chronikseiten/abiturdurchschnitte"><p class="h4 card-text">Abiturdurchschnitt: {{ .schnitt }}</p></a>{{ end }}
{{ end }} {{ end }}
</div> </div>
<div class="">
<a href="{{ .Permalink }}"> <a href="{{ .Permalink }}">
<img src="{{ .Params.Image | relURL }}" class="rounded-circle object-cover m-3" width="128px" height="128px"> <img src="{{ .Params.Image | relURL }}" class="rounded-circle object-cover m-3" width="128px" height="128px">
</a> </a>
</div> </div>
{{ end }}
</div> </div>
{{ end }} {{ end }}
{{ end }} <div class="kh-parent">
{{ range .Params.topics }} <div class="kh-jahr h1"
{{ partial "modal" . }} {{ if .Params.pretext.enable }}
{{ end }} onclick="$('{{ print `#` (md5 .Title) }}').modal('show')"
{{ if and .Params.pretext (ne .Params.pretext "\n\n\n") }} {{ end }}>
{{ partial "modal" (dict "title" .Title "content" .Params.pretext) }} <span>{{ .Title }}</span>
{{ end }} </div>
<div id="wc-canvas"></div>
{{ $topics := slice }} {{ $topics := slice }}
{{ if .Params.pretext }}
{{ $topics = $topics | append (dict "Title" .Params.Title "Size" (int 200) "ID" (md5 .Title)) }}
{{ else }}
{{ $topics = $topics | append (dict "Title" .Params.Title "Size" (int 200)) }}
{{ end }}
{{ range .Params.topics }} {{ range .Params.topics }}
{{ if .superhaufen.enable }} {{ $topics = $topics | append (dict "titleLength" (len .title) "topic" .) }}
{{ $topics = $topics | append (dict "Title" .title "Size" 30 "ID" (.superhaufen.link | urlize) "Superhaufen" true ) }} {{ end }}
{{ range $id, $topic := sort $topics "titleLength" "desc" }}
<div class="kh h3" data-id="{{ $id }}"
{{ if not $topic.topic.superhaufen.enable }}
onclick="$('#{{ md5 $topic.topic.title }}').modal('show');"
{{ else }} {{ else }}
{{ $topics = $topics | append (dict "Title" .title "Size" 30 "ID" (md5 .title)) }} onclick="window.location = '{{ print (`/superhaufen/` | relURL ) ($topic.topic.superhaufen.link | urlize) }}';"
{{ end }}>
<span>{{ $topic.topic.title | safeHTML }}</span>
</div>
{{ end }} {{ end }}
{{ end }}
<script>
WordCloud(
document.getElementById('wc-canvas'),
{
click: function (item) {
if (item[2] != null) {
if (item[3]) {
window.location.href = "{{ `/superhaufen/` | relURL }}" + item[2];
} else {
$('#' + item[2]).modal('show');
}
}
},
color: function (word, weight) {
return (weight === 200) ? '#ffbc3b' : '#1a1a37';
},
/* hover: function(item, dimension, event) {
item && item[2] ? event.target.style.textDecorationLine = "underline" : null
},*/
fontFamily: 'Ubuntu, sans-serif',
fontWeight: 700,
list: JSON.parse("{{ $topics | jsonify }}").map(obj => {
return [obj.Title, obj.Size, obj.ID ? obj.ID : null, obj.Superhaufen ? true : false]
}),
shrinkToFit: true,
gridSize: 50,
rotateRatio: 0,
shuffle: false,
shape: "square",
ellipticity: 1,
clearCanvas: true
}
);
</script>
{{ .Content }}
</div> </div>
</div> </div>
</section> </section>

@ -1,3 +1,3 @@
<div class="card"> <div class="shortcode card">
<audio src='{{ .Get "src" }}' class="mb-0" controls></audio> <audio src='{{ .Get "src" }}' class="mb-0" controls></audio>
</div> </div>

@ -1,4 +1,4 @@
<div class="card border-primary rounded-0 hover-shadow mb-4"> <div class="shortcode card border-primary rounded-0 hover-shadow mb-4">
<div class="card-body mb-0"> <div class="card-body mb-0">
<h4 class="card-title"><a class="text-decoration-none" href='{{ .Get "link" }}'>{{ .Get "title" }}</a></h4> <h4 class="card-title"><a class="text-decoration-none" href='{{ .Get "link" }}'>{{ .Get "title" }}</a></h4>
<a href='{{ .Get "link" }}' class="mb-0 btn btn-primary btn-sm text-decoration-none">Mehr anzeigen</a> <a href='{{ .Get "link" }}' class="mb-0 btn btn-primary btn-sm text-decoration-none">Mehr anzeigen</a>

@ -1,4 +1,4 @@
<div class="row"> <div class="shortcode row">
{{ $dir := trim (.Get "dir") "/" }} {{ $dir := trim (.Get "dir") "/" }}
{{ with $dir }} {{ with $dir }}
{{ $files := readDir (print "/static/" .) }} {{ $files := readDir (print "/static/" .) }}

@ -1,3 +1,3 @@
<div class="col-lg-3 col-md-4 col-sm-6"> <div class="shortcode col-lg-3 col-md-4 col-sm-6">
<a class="vb-gallery" data-gall='{{ md5 (.Get "src") }}' href='{{ .Get "src" }}'><img class="lazy img-thumbnail w-100 h-100" style="object-fit: cover;" data-src='{{ .Get "src" }}'></a> <a class="vb-gallery" data-gall='{{ md5 (.Get "src") }}' href='{{ .Get "src" }}'><img class="lazy img-thumbnail w-100 h-100" style="object-fit: cover;" data-src='{{ .Get "src" }}'></a>
</div> </div>

@ -1,7 +1,7 @@
{{ $dir := (.Get "dir") }} {{ $dir := (.Get "dir") }}
{{ if $dir }} {{ if $dir }}
<div class="card border-primary rounded-3"> <div class="shortcode card border-primary rounded-3">
<div class="carousel carousel-dark slide mb-0" data-bs-ride="true" id='slider-{{ md5 $dir }}'> <div class="carousel slide mb-0" data-bs-ride="true" id='slider-{{ md5 $dir }}'>
{{ $images := slice }} {{ $images := slice }}
{{ range readDir (print "/static/" $dir) }} {{ range readDir (print "/static/" $dir) }}
{{ if (lower .Name | findRE "\\.(gif|jpg|jpeg|tiff|png|bmp|webp|avif|jxl)") }} {{ if (lower .Name | findRE "\\.(gif|jpg|jpeg|tiff|png|bmp|webp|avif|jxl)") }}

@ -1,10 +1,10 @@
{{- $pc := .Page.Site.Config.Privacy.YouTube -}} {{ $pc := .Page.Site.Config.Privacy.YouTube }}
{{- if not $pc.Disable -}} {{ if not $pc.Disable }}
{{- $ytHost := cond $pc.PrivacyEnhanced "piped.kavin.rocks" "www.youtube.com" -}} {{ $ytHost := cond $pc.PrivacyEnhanced "piped.kavin.rocks" "www.youtube.com" }}
{{- $id := .Get "id" | default (.Get 0) -}} {{ $id := .Get "id" | default (.Get 0) }}
{{- $class := .Get "class" | default (.Get 1) -}} {{ $class := .Get "class" | default (.Get 1) }}
{{- $title := .Get "title" | default "YouTube Video" }} {{ $title := .Get "title" | default "YouTube Video" }}
<div {{ with $class }}class="{{ . }}" {{ else }} style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"{{ end }}> <div {{ with $class }}class="shortcode {{ . }}" {{ else }} style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"{{ end }}>
<iframe src="https://{{ $ytHost }}/embed/{{ $id }}{{ with .Get "autoplay" }}{{ if eq . "true" }}?autoplay=1{{ end }}{{ end }}" {{ if not $class }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" {{ end }}allowfullscreen title="{{ $title }}"></iframe> <iframe src="https://{{ $ytHost }}/embed/{{ $id }}{{ with .Get "autoplay" }}{{ if eq . "true" }}?autoplay=1{{ end }}{{ end }}" {{ if not $class }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" {{ end }}allowfullscreen title="{{ $title }}"></iframe>
</div> </div>
{{ end -}} {{ end }}

@ -1,4 +1,4 @@
import { MarkdownProps } from "../props.js"; import { MarkdownProps, EditorProps } from "../props.js";
import { DraftBoolean, EnableBoolean } from "./widgets.js"; import { DraftBoolean, EnableBoolean } from "./widgets.js";
const ChronikjahreCollection = { const ChronikjahreCollection = {
@ -13,11 +13,7 @@ const ChronikjahreCollection = {
field: "type", field: "type",
value: "schulchronik", value: "schulchronik",
}, },
create: true, ...EditorProps,
editor: {
preview: false,
size: "half",
},
summary_fields: ["title", "draft", "cantorpreisträger", "topics"], summary_fields: ["title", "draft", "cantorpreisträger", "topics"],
sortable_fields: { sortable_fields: {
fields: ["title"], fields: ["title"],
@ -44,7 +40,20 @@ const ChronikjahreCollection = {
label: "Einleitung", label: "Einleitung",
hint: "Text für die Jahreszahl", hint: "Text für die Jahreszahl",
required: false, required: false,
widget: "object",
fields: [
EnableBoolean,
{
name: "content",
label: "Text",
condition: {
field: "pretext.enable",
value: true,
},
required: false,
...MarkdownProps, ...MarkdownProps,
}
]
}, },
{ {
name: "topics", name: "topics",
@ -53,6 +62,7 @@ const ChronikjahreCollection = {
widget: "list", widget: "list",
required: false, required: false,
collapsed: true, collapsed: true,
max: 4,
fields: [ fields: [
{ {
name: "title", name: "title",
@ -63,6 +73,10 @@ const ChronikjahreCollection = {
{ {
name: "content", name: "content",
label: "Inhalt", label: "Inhalt",
condition: {
field: "superhaufen.enable",
value: false,
},
required: false, required: false,
...MarkdownProps, ...MarkdownProps,
}, },
@ -80,6 +94,10 @@ const ChronikjahreCollection = {
collection: "superhaufen", collection: "superhaufen",
search_fields: ["title"], search_fields: ["title"],
value_field: "title", value_field: "title",
condition: {
field: "superhaufen.enable",
value: true,
},
required: false, required: false,
collapsed: true, collapsed: true,
}, },
@ -96,13 +114,6 @@ const ChronikjahreCollection = {
value_field: "name", value_field: "name",
required: false, required: false,
}, },
{
name: "body",
label: "Text",
hint: "Erscheint zusätzlich zu den Kreativen Haufen",
required: false,
...MarkdownProps,
},
], ],
}; };

@ -1,78 +1,79 @@
import { PageHeader } from "./components/index.js"; import { PageHeader } from "./components/index.js";
const ChronikPreview = ({ widgetFor, widgetsFor, entry, document, window }) => { const ChronikPreview = ({ widgetFor, widgetsFor, entry, document, window }) => {
/*return [PageHeader, return [
h('section', {className: "section"}, PageHeader(entry),
h('div', {className: "container"}, h(
h('div', {className: "row"}, "section",
h('div', {className: "col-12 mb-4 content"}, { className: "section" },
widgetsFor('topics').map(function(i, index) { h(
return h('div', {"id": i.data.id, className: "modal"}, "div",
h('div', {className: "modal-dialog modal-lg", "role": "document"}, { className: "container" },
h('div', {className: "modal-content"}, h(
h('div', {className: "modal-header"}, "div",
h('h5', {className: "modal-title"}, i.data.title), { className: "card-group" },
h('button', {className: "close", type: "button", "dataDismiss": "modal", "ariaLabel": "Close"}, h(
h('span', {"ariaHidden": "true"}, '\u{00d7}') "div",
) { className: "card d-flex flex-row flex-wrap" },
), h("img", {
h('div', {className: "modal-body"}, src: "https://cantorgymnasium.de/media/people/gcg.webp",
h('div', {className: "content"}, i.content) className: "rounded-circle object-cover m-3",
) width: "128px",
) height: "128px",
)
);
}), }),
entry.data.pretext != "" && entry.data.pretext != null ? h('div', {"id": "pretext", className: "modal"}, h(
h('div', {className: "modal-dialog modal-lg", "role": "document"}, "div",
h('div', {className: "modal-content"}, { className: "flex-grow card-body min-w-0" },
h('div', {className: "modal-header"}, h("h3", { className: "card-title" }, "Cantorpreisträger"),
h('h5', {className: "modal-title"}, entry.data.title), h(
h('button', {className: "close", type: "button", "dataDismiss": "modal", "ariaLabel": "Close"}, "p",
h('span', {"ariaHidden": "true"}, '\u{00d7}') { className: "h4 card-text" },
widgetFor("cantorpreisträger")
)
) )
), ),
h('div', {className: "modal-body"}, h(
h('div', {className: "content"}, widgetFor('pretext')) "div",
{ className: "card d-flex flex-row flex-wrap-reverse" },
h(
"div",
{ className: "flex-grow card-body min-w-0" },
h(
"h3",
{ className: "card-title" },
"Abiturienten " + entry.data.title
),
h("p", { className: "h4 card-text" }, "Abiturdurchschnitt: 0.00")
),
h("img", {
src: "https://cantorgymnasium.de/media/people/gcg.webp",
className: "rounded-circle object-cover m-3",
width: "128px",
height: "128px",
})
) )
) ),
) h(
) : null, "div",
h('div', {"id": "wc-canvas"}), { className: "kh-parent" },
() => { h(
var topics = [[entry.data.title, 100, "pretext"]]; "div",
widgetsFor('topics').map(function(i, index) { { className: "kh-jahr h1" },
topics.push([i.data.title, 40, i.data.id]); h("span", {}, entry.data.title)
}); ),
var script = document.createElement('script'); widgetsFor("topics")
var div = document.getElementById('sc-root'); .sort((a, b) => b.data.title.length - a.data.title.length)
div.appendChild(script); .map((topic, index) =>
WordCloud( h(
document.getElementById('wc-canvas'), "div",
{ { className: "kh h3", "data-id": `${index}` },
click: function (item) { h("span", {}, topic.data.title)
if (item[1] != 100 || (item[1] == 100 && item[2] == "pretext")) {
$('#' + item[2]).modal('show');
}
},
color: function (word, weight) {
return (weight === 100) ? '#ffbc3b' : '#1a1a37';
},
fontFamily: 'Fira Sans, serif',
fontWeight: 800,
list: topics,
shrinkToFit: true,
gridSize: 25,
rotateRatio: 0,
}
);
},
widgetFor('body')
) )
) )
) )
) )
];*/ ),
];
}; };
export default ChronikPreview; export default ChronikPreview;

@ -3,7 +3,7 @@ const PreviewStyles = [
"https://assets.cantorgymnasium.de/fonts/fira/fira.css", "https://assets.cantorgymnasium.de/fonts/fira/fira.css",
"https://assets.cantorgymnasium.de/fonts/ubuntu/ubuntu.css", "https://assets.cantorgymnasium.de/fonts/ubuntu/ubuntu.css",
"https://assets.cantorgymnasium.de/fonts/mdi/v7/css/materialdesignicons.min.css", "https://assets.cantorgymnasium.de/fonts/mdi/v7/css/materialdesignicons.min.css",
"https://cantorgymnasium.de/css/style.min.css", "/css/style.min.css",
]; ];
export default PreviewStyles; export default PreviewStyles;

@ -1,4 +1,4 @@
import { Card, TextField } from "./components/index.js"; import { Card, TextField, Label } from "./components.js";
const AudioShortcode = { const AudioShortcode = {
label: "Audiodatei", label: "Audiodatei",
@ -33,8 +33,11 @@ const AudioShortcode = {
); );
return Card([ return Card([
Label("Audiodatei"),
h(
"span",
{ className: "CMS_WidgetDateTime_inputs" },
TextField({ TextField({
label: "Audiodatei",
value: src, value: src,
onChange: (event) => { onChange: (event) => {
onChange({ src: event.target.value }); onChange({ src: event.target.value });
@ -42,7 +45,10 @@ const AudioShortcode = {
}), }),
h( h(
"span", "span",
{ key: "audio-button", className: "CMS_WidgetDateTime_NowButton_root" }, {
key: "audio-button",
className: "CMS_WidgetDateTime_NowButton_root",
},
h( h(
"button", "button",
{ {
@ -52,6 +58,7 @@ const AudioShortcode = {
}, },
"wählen" "wählen"
) )
)
), ),
]); ]);
}, },

@ -1,4 +1,4 @@
import { Card, TextField } from "./components/index.js"; import { Card, TextField, Label } from "./components.js";
const CardShortcode = { const CardShortcode = {
label: "Link-Karte", label: "Link-Karte",
@ -27,15 +27,15 @@ const CardShortcode = {
}, },
control: ({ title, link, onChange }) => { control: ({ title, link, onChange }) => {
return Card([ return Card([
Label("Titel"),
TextField({ TextField({
label: "Titel",
value: title, value: title,
onChange: (event) => { onChange: (event) => {
onChange({ title: event.target.value.trimStart(), link }); onChange({ title: event.target.value.trimStart(), link });
}, },
}), }),
Label("Link"),
TextField({ TextField({
label: "Link",
value: link, value: link,
onChange: (event) => { onChange: (event) => {
onChange({ title, link: event.target.value }); onChange({ title, link: event.target.value });

@ -0,0 +1,58 @@
const Card = (children, opts = { vertical: false }) =>
h(
"span",
{
className:
"CMS_Card_root CMS_Field_root CMS_WidgetString_root CMS_WidgetString_required CMS_Field_cursor-text CMS_WidgetMarkdown_Paragraph_root" +
(opts.vertical ? " flex-col" : ""),
},
h("span", { className: "CMS_Field_wrapper" }, children)
);
const Image = ({ assetSource, handleOpenMediaLibrary }) =>
h(
"span",
{ className: "CMS_WidgetFileImage_content" },
h(
"span",
{},
h("img", {
role: "presentation",
src: assetSource,
className: "CMS_Image_root",
})
),
h(
"span",
{ className: "CMS_WidgetFileImage_actions" },
h(
"button",
{
type: "button",
onClick: handleOpenMediaLibrary,
className: "CMS_Button_root CMS_Button_outlined-primary",
},
"Bild auswählen"
)
)
);
const TextField = ({ value, onChange }) =>
h("input", {
className:
"MuiInput-input CMS_TextField_input CMS_WidgetString_input CMS_TextField_borderless CMS_Label_cursor-text",
type: "text",
value,
onChange,
});
const Label = (label) =>
h(
"label",
{
className: "CMS_Label_root CMS_Label_cursor-pointer",
},
label
);
export { Card, Image, TextField, Label };

@ -1,12 +0,0 @@
const Card = (child, opts = { vertical: false }) =>
h(
"span",
{
className:
"CMS_Card_root CMS_Field_root CMS_WidgetString_root CMS_WidgetString_required CMS_Field_cursor-text CMS_WidgetMarkdown_Paragraph_root" +
(opts.vertical ? " flex-col" : ""),
},
child
);
export default Card;

@ -1,40 +0,0 @@
const Image = ({ label, assetSource, handleOpenMediaLibrary }) =>
h(
"span",
{ className: "CMS_Field_wrapper" },
h(
"label",
{
className: "CMS_Label_root CMS_Label_cursor-pointer",
},
label
),
h(
"span",
{ className: "CMS_WidgetFileImage_content" },
h(
"span",
{},
h("img", {
role: "presentation",
src: assetSource,
className: "CMS_Image_root",
})
),
h(
"span",
{ className: "CMS_WidgetFileImage_actions" },
h(
"button",
{
type: "button",
onClick: handleOpenMediaLibrary,
className: "CMS_Button_root CMS_Button_outlined-primary",
},
"Bild auswählen"
)
)
)
);
export default Image;

@ -1,5 +0,0 @@
import Card from "./card.js";
import TextField from "./text-field.js";
import Image from "./image.js";
export { Card, TextField, Image };

@ -1,21 +0,0 @@
const TextField = ({ label, value, onChange }) =>
h(
"span",
{ key: "text-" + label, className: "CMS_Field_wrapper" },
h(
"label",
{
className: "CMS_Label_root CMS_TextField_cursor-default",
},
label
),
h("input", {
className:
"MuiInput-input CMS_TextField_input CMS_WidgetString_input CMS_TextField_borderless CMS_Label_cursor-text",
type: "text",
value,
onChange,
})
);
export default TextField;

@ -1,4 +1,4 @@
import { Card, TextField } from "./components/index.js"; import { Card, TextField, Label } from "./components.js";
const DownloadShortcode = { const DownloadShortcode = {
label: "Download-Karte", label: "Download-Karte",
@ -39,24 +39,20 @@ const DownloadShortcode = {
); );
return Card([ return Card([
Label("Titel"),
TextField({ TextField({
label: "Titel",
value: title, value: title,
onChange: (event) => { onChange: (event) => {
onChange({ title: event.target.value.trimStart(), link }); onChange({ title: event.target.value.trimStart(), link });
}, },
}), }),
Label("Download-Link"),
h( h(
"span", "span",
{ {
style: { class: "CMS_WidgetDateTime_inputs"
display: "flex",
"flex-direction": "row",
"align-items": "end",
},
}, },
TextField({ TextField({
label: "Download-Link",
value: link, value: link,
onChange: (event) => { onChange: (event) => {
onChange({ title, link: event.target.value }); onChange({ title, link: event.target.value });

@ -1,4 +1,4 @@
import { Card, TextField } from "./components/index.js"; import { Card, TextField, Label } from "./components.js";
const GalleryShortcode = { const GalleryShortcode = {
label: "Bildergallerie", label: "Bildergallerie",
@ -34,8 +34,11 @@ const GalleryShortcode = {
); );
return Card([ return Card([
Label("Galerie-Ordner"),
h(
"span",
{ className: "CMS_WidgetDateTime_inputs" },
TextField({ TextField({
label: "Gallerie-Ordner",
value: dir, value: dir,
onChange: (event) => { onChange: (event) => {
onChange({ dir: event.target.value }); onChange({ dir: event.target.value });
@ -56,6 +59,7 @@ const GalleryShortcode = {
}, },
"wählen" "wählen"
) )
)
), ),
]); ]);
}, },

@ -1,4 +1,4 @@
import { Card, Image } from "./components/index.js"; import { Card, Image, Label } from "./components.js";
import { md5 } from "../previews/page-previews/components/index.js"; import { md5 } from "../previews/page-previews/components/index.js";
const ImageShortcode = { const ImageShortcode = {
@ -36,13 +36,13 @@ const ImageShortcode = {
); );
const assetSource = useMediaAsset(src, collection, field, entry); const assetSource = useMediaAsset(src, collection, field, entry);
return Card( return Card([
Label("Bild"),
Image({ Image({
label: "Bild",
assetSource, assetSource,
handleOpenMediaLibrary, handleOpenMediaLibrary,
}) }),
); ]);
}, },
preview: ({ src }) => { preview: ({ src }) => {
return h( return h(

@ -1,4 +1,4 @@
import { Card, TextField } from "./components/index.js"; import { Card, TextField, Label } from "./components.js";
const SliderShortcode = { const SliderShortcode = {
label: "Bilderkarussell", label: "Bilderkarussell",
@ -34,8 +34,11 @@ const SliderShortcode = {
); );
return Card([ return Card([
Label("Bilderkarussell"),
h(
"span",
{ className: "CMS_WidgetDateTime_inputs" },
TextField({ TextField({
label: "Bilderkarussell",
value: dir, value: dir,
onChange: (event) => { onChange: (event) => {
onChange({ dir: event.target.value }); onChange({ dir: event.target.value });
@ -56,6 +59,7 @@ const SliderShortcode = {
}, },
"wählen" "wählen"
) )
)
), ),
]); ]);
}, },

@ -1,4 +1,4 @@
import { Card, TextField } from "./components/index.js"; import { Card, TextField, Label } from "./components.js";
const YoutubeShortcode = { const YoutubeShortcode = {
label: "YouTube-Video", label: "YouTube-Video",
@ -18,8 +18,8 @@ const YoutubeShortcode = {
control: ({ src, onChange }) => { control: ({ src, onChange }) => {
return Card( return Card(
[ [
Label("YouTUbe-Video"),
TextField({ TextField({
label: "YouTube-Video-ID",
value: src, value: src,
onChange: (event) => { onChange: (event) => {
onChange({ src: event.target.value }); onChange({ src: event.target.value });