{data.post.childMdx.frontmatter.title}
+{t('Contents')}
+- {posts}
diff --git a/.github/ISSUE_TEMPLATE/learning-unit.md b/.github/ISSUE_TEMPLATE/learning-unit.md
new file mode 100644
index 000000000..d4629a206
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/learning-unit.md
@@ -0,0 +1,97 @@
+---
+name: Learning Unit
+about: Standard workflow for producing a new learning unit
+title: LU XX
+labels: e-learning, Learning Unit, content
+---
+
+- [ ] Autorenvertrag
+ - [ ] Vertrag an die Autor:innen schicken
+ - [ ] Unterschriebenen Vertrag erhalten
+ - [ ] An Ute Möntnich schicken, fuer Vorstand zum unterschreiben
+ - [ ] Unterschriebenen Vertrag zurück an die Autor:innen schicken
+- [ ] Bezahlung (1. Hälfte)
+ - [ ] Rechnung 1 erhalten
+ - [ ] Rechnung 1 bezahlt
+- [ ] Onboarding-Anruf mit Autor:innen
+- [ ] Onboarding-Email an Autor:innen (mit Dropbox-Links)
+- [ ] Email an Autor:innen: Schickt uns CV, Profilbild, Affiliation
+- [ ] 1. Draft von Autor:innen erhalten (Word oder Dropbox)
+- [ ] 1. Inhaltliches Review (Niklas + nn) (Kommentare im Dokument + Email)
+- [ ] 2. Draft von Autor:innen erhalten
+- [ ] 2. Inhaltiches Review (Niklas + nn)
+- [ ] 2. Draft erhalten, alle sind zufrieden
+- [ ] Draft an Language Editing schicken (mit Frist: TBD)
+- [ ] Final Draft kommt zurueck
+- [ ] Animated Podcasts vorbereiten
+ - [ ] Email an Autor:innen: Nehmt eure Audios auf (mit Frist: TBD)
+ - [ ] Audiofile Rohversion da
+ - [ ] Storyboards erstellen
+ - [ ] Storyboards abnehmen
+ - [ ] Icon-Auftrag erteilen (Icons, die in dem Storyboard gebraucht werden)
+ - [ ] Zusätzliche Assets sammeln (Bilder, Videos, etc; Rechte beachten)
+ - [ ] Zusätzliche Assets bearbeiten falls nötig / erlaubt
+ - [ ] Icons kommen zurueck
+- [ ] Animated Podcasts erstellen
+ - [ ] Dropbox-Order erstellen (Storyboard, Audio-Dateien, Icons, Assets, Autoren-Namen, Autoren-Bilder, Script fuer Kontext)
+ - [ ] Ordner an Form-Art schicken / Auftrag erteilen mit Frist
+ - [ ] Video + Cover-Bild kommt zurück (in editierbarem Format für weiter unten)
+ - [ ] Abnahme durch uns, wenn nicht: Monita
+ - [ ] Untertitel erstellen (Premiere)
+ - [ ] Finale Video-Dateien exportieren
+ - [ ] Video + Cover-Bild + Untertitel hochladen auf VideoStream Server
+- [ ] Assets im Text
+ - [ ] Fotos
+ - [ ] Nutzungs- und Bearbeitungsrechte klären
+ - [ ] Bild nachbearbeiten falls nötig && erlaubt
+ - [ ] Fertiges Bild in Dropbox Ablegen
+ - [ ] Korrekte Lizenzinformationen in die Permissions-Tabelle schreiben
+ - [ ] Unsere Grafiken (PRIF) (Landkarten, Diagramme)
+ - [ ] Datengrundlagen für Grafiken einholen
+ - [ ] Nutzungsrechte der Datengrundlage klären
+ - [ ] Externe Grafiken
+ - [ ] Skizzen prüfen
+ - [ ] Dropbox-Paket mit allen Skizzen/Notitzen vorberreiten
+ - [ ] Email an Agentur: Hier ist das Paket, macht Grafiken, Frist
+ - [ ] Grafiken kommen zurueck
+ - [ ] Email an Autoren: Gebt die Grafiken frei!
+ - [ ] Grafiken sind fertig und bereit
+ - [ ] Fertige Grafiken in Dropbox speichern fuer spaeter
+- MDX Create
+ - [ ] Branch: Feat/LuXX
+ - [ ] Neuer Order für LU
+ - [ ] `index.mdx`:
+ - [ ] Titel
+ - [ ] Autor:innen (Namen, Fotos, CV, Institution)
+ - [ ] Summary
+ - [ ] Learning Objectives
+ - [ ] Cover-Bild (+ credits)
+ - [ ] Kapitel-MDX
+ - [ ] Titel
+ - [ ] Intro
+ - [ ] Inhalte
+ - [ ] Assets einbauen: (Karten, Charts, Bilder, Interaktive Komponenten, Timelines, Zitate, Externe Grafiken)
+ - [ ] Videos einbauen
+ - [ ] ggf. Glossar-Begriffe einbetten und Definitionen hinterlegen (`terms.json`): ggf. Review durch Niklas
+ - Einheit fertig, branch deploy erzeugen
+ - Email an Autor: Hier ist dein Branch Deploy, bitte abnehmen (Frist)
+ - [ ] Freigabe liegt vor?
+- Certificate Section aktualisieren
+ - [ ] Neues Quiz anlegen (versteckt), mit neuen Fraugen fuer die neuen Inhalte
+ - [ ] Scores vom alten aufs neue Quiz übertragen
+ - [ ] Certifikat anpassen (auf das neue Quiz zeigen, aber alte Quizzes weiterhin gelten lassen)
+- [ ] Veröffentlichung
+ - [ ] Text an PrÖA für Twitter und Email: Wir gehen dann und dann live!
+ - Email an Autor:innen: Wir gehen dann und dann live!
+ - `git merge feat/luXX`
+ - [ ] Moodle-Upload
+ - [ ] Autorin Bild + Text einfügen
+ - [ ] Inhaltsverzeichnis in Lernbar aktualisieren (siehe Dokumentation, ist glaubt Max, eine HTML-Datei)
+ - [ ] Startseite: Anzahl Experts + Videos aktualisieren
+ - [ ] In Moodle: LU in "new" Kategorie einfuegen
+ - [ ] Beschreibungstext der LU
+ - [ ] Redirect in .htaccess aktualisieren
+- Post-Launch
+ - [ ] Email an Autor:in: Ist live, schick Rechnung 2!
+ - [ ] Rechnung 2 erhalten
+ - [ ] Rechnung 2 bezahlt
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index a7415ebc1..ca6bb4ff2 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -21,3 +21,6 @@ updates:
retext:
patterns:
- 'retext*'
+ testing-library:
+ patterns:
+ - '@testing-library*'
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 7f43993f1..db08478c4 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -2,9 +2,9 @@ name: "CodeQL"
on:
push:
- branches: [ "main" ]
+ branches: [ "main", "feature/*"]
pull_request:
- branches: [ "main" ]
+ branches: [ "main", "feature/*" ]
workflow_dispatch:
jobs:
diff --git a/.github/workflows/elearning-test.yml b/.github/workflows/elearning-test.yml
new file mode 100644
index 000000000..993b538b8
--- /dev/null
+++ b/.github/workflows/elearning-test.yml
@@ -0,0 +1,22 @@
+name: '[eLearning] Run tests'
+
+on:
+ pull_request:
+ paths:
+ - './e-learning/**'
+ workflow_dispatch:
+permissions:
+ contents: read
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ - name: Install dependencies
+ working-directory: ./e-learning/
+ run: npm install
+ - name: Run tests
+ working-directory: ./e-learning/
+ run: npm run test
diff --git a/.github/workflows/elearning-update-treaties.yml b/.github/workflows/elearning-update-treaties.yml
index 783cfd8ac..16da18192 100644
--- a/.github/workflows/elearning-update-treaties.yml
+++ b/.github/workflows/elearning-update-treaties.yml
@@ -14,20 +14,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- with:
- path: main
- - uses: actions/checkout@v3
- with:
- path: updates
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- cache-dependency-path: |
- main/package-lock.json
- updates/package-lock.json
- name: Run update script
- run: ${GITHUB_WORKSPACE}/main/scripts/updateTreaties.sh
+ run: ${GITHUB_WORKSPACE}/scripts/updateTreaties.sh
env:
BRANCH_NAME: update-treaty-participants
GITHUB_ACTOR: ${{ github.actor }}
diff --git a/.github/workflows/shared-test.yml b/.github/workflows/shared-test.yml
new file mode 100644
index 000000000..d81651bec
--- /dev/null
+++ b/.github/workflows/shared-test.yml
@@ -0,0 +1,20 @@
+name: '[shared] Run tests'
+
+on:
+ pull_request:
+ workflow_dispatch:
+permissions:
+ contents: read
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ - name: Install dependencies
+ working-directory: ./shared/
+ run: npm install
+ - name: Run tests
+ working-directory: ./shared/
+ run: npm run test
diff --git a/.gitignore b/.gitignore
index 197e8326a..3c74bacf2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
-node_modules
-.netlify
-tmp
+node_modules
+.netlify
+tmp
+.DS_Store
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 000000000..66eb93e0d
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+ "prisma-smart-formatter.typescript.defaultFormatter": "esbenp.prettier-vscode",
+ "prisma-smart-formatter.typescriptreact.defaultFormatter": "esbenp.prettier-vscode"
+}
diff --git a/README.md b/README.md
index 5bb4c1ff2..edf0f66cc 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,9 @@ This is a monorepo for all our React-based editorial products.
## Deployment Status
-| Site | URL | Status |
-| ----------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| eLearning | [eunpdc-elearning.netlify.app](https://eunpdc-elearning.netlify.app/) | [![Netlify Status](https://api.netlify.com/api/v1/badges/be127c78-15e4-457f-8880-078ca5f1128c/deploy-status)](https://app.netlify.com/sites/eunpdc-elearning/deploys) [![[eLearning] Build and Deploy](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-deploy.yml/badge.svg)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-deploy.yml) [![[eLearning] Update Treaties](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-update-treaties.yml/badge.svg)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-update-treaties.yml) [![[eLearning] Check Markdown Links](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-check-links.yml/badge.svg)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-check-links.yml) |
-| New Work | [leibniz-nw.netlify.app](https://leibniz-nw.netlify.app/) | [![Netlify Status](https://api.netlify.com/api/v1/badges/a9e50b5c-a39d-4bd7-9324-bf20958b2ecf/deploy-status)](https://app.netlify.com/sites/leibniz-nw/deploys) [![[New Work] Check Markdown Links](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/new-work-check-links.yml/badge.svg)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/new-work-check-links.yml) |
-| PRIF Review | [review.prif.org](https://review.prif.org) | [![Netlify Status](https://api.netlify.com/api/v1/badges/61f8dfa0-3e12-4cb2-95ee-128c928efd25/deploy-status)](https://app.netlify.com/sites/prif-review/deploys) [![[PRIF Review] Check Markdown Links](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/prif-review-check-links.yml/badge.svg?branch=main)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/prif-review-check-links.yml) |
-| CNTR | TBD | TBD |
+| Site | URL | Status |
+| ------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| eLearning | [eunpdc-elearning.netlify.app](https://eunpdc-elearning.netlify.app/) | [![Netlify Status](https://api.netlify.com/api/v1/badges/be127c78-15e4-457f-8880-078ca5f1128c/deploy-status)](https://app.netlify.com/sites/eunpdc-elearning/deploys) [![[eLearning] Build and Deploy](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-deploy.yml/badge.svg)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-deploy.yml) [![[eLearning] Update Treaties](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-update-treaties.yml/badge.svg)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-update-treaties.yml) [![[eLearning] Check Markdown Links](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-check-links.yml/badge.svg)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/elearning-check-links.yml) |
+| New Work | [leibniz-nw.netlify.app](https://leibniz-nw.netlify.app/) | [![Netlify Status](https://api.netlify.com/api/v1/badges/a9e50b5c-a39d-4bd7-9324-bf20958b2ecf/deploy-status)](https://app.netlify.com/sites/leibniz-nw/deploys) [![[New Work] Check Markdown Links](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/new-work-check-links.yml/badge.svg)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/new-work-check-links.yml) |
+| PRIF Review | [review.prif.org](https://review.prif.org) | [![Netlify Status](https://api.netlify.com/api/v1/badges/61f8dfa0-3e12-4cb2-95ee-128c928efd25/deploy-status)](https://app.netlify.com/sites/prif-review/deploys) [![[PRIF Review] Check Markdown Links](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/prif-review-check-links.yml/badge.svg?branch=main)](https://github.com/Peace-Research-Institute-Frankfurt/websites/actions/workflows/prif-review-check-links.yml) |
+| CNTR Monitor | [monitor.cntrarmscontrol.org](https://monitor.cntrarmscontrol.org/) | [![Netlify Status](https://api.netlify.com/api/v1/badges/e20bc7bc-3b8f-42e0-bcfc-d36721be2bf0/deploy-status)](https://app.netlify.com/sites/cntr-monitor/deploys) |
diff --git a/cntr-monitor/.gitignore b/cntr-monitor/.gitignore
new file mode 100644
index 000000000..6137cae05
--- /dev/null
+++ b/cntr-monitor/.gitignore
@@ -0,0 +1,6 @@
+.cache/
+public
+fonts/
+documentation/
+.env
+.netlify
diff --git a/cntr-monitor/content/de/issues/2024/authors/test-author.mdx b/cntr-monitor/content/de/issues/2024/authors/test-author.mdx
new file mode 100644
index 000000000..7090ac7af
--- /dev/null
+++ b/cntr-monitor/content/de/issues/2024/authors/test-author.mdx
@@ -0,0 +1,6 @@
+---
+name: Test Author
+author_id: test-author
+---
+
+This is the author's bio
diff --git a/cntr-monitor/content/de/issues/2024/index.mdx b/cntr-monitor/content/de/issues/2024/index.mdx
new file mode 100644
index 000000000..0519daa1b
--- /dev/null
+++ b/cntr-monitor/content/de/issues/2024/index.mdx
@@ -0,0 +1,8 @@
+---
+title: CNTR Monitor 2024
+year: 2024
+order: 0
+color: '#ef7d23'
+---
+
+Issue intro copy (DE)
diff --git a/cntr-monitor/content/de/issues/2024/posts/1_test.mdx b/cntr-monitor/content/de/issues/2024/posts/1_test.mdx
new file mode 100644
index 000000000..1a6a33c58
--- /dev/null
+++ b/cntr-monitor/content/de/issues/2024/posts/1_test.mdx
@@ -0,0 +1,7 @@
+---
+order: 1
+title: Test Post
+color: rgb(0, 131, 181)
+---
+
+This is the post copy (DE)
diff --git a/cntr-monitor/content/de/pages/accessibility.mdx b/cntr-monitor/content/de/pages/accessibility.mdx
new file mode 100644
index 000000000..0d72b4e9f
--- /dev/null
+++ b/cntr-monitor/content/de/pages/accessibility.mdx
@@ -0,0 +1,6 @@
+---
+title: Barrierefreiheit
+order: 2
+---
+
+TODO A11y statement
diff --git a/cntr-monitor/content/de/pages/legal.mdx b/cntr-monitor/content/de/pages/legal.mdx
new file mode 100644
index 000000000..56e60df3a
--- /dev/null
+++ b/cntr-monitor/content/de/pages/legal.mdx
@@ -0,0 +1,6 @@
+---
+order: 4
+title: Impressum
+---
+
+TODO Legal (DE)
diff --git a/cntr-monitor/content/de/pages/privacy.mdx b/cntr-monitor/content/de/pages/privacy.mdx
new file mode 100644
index 000000000..d1f470c68
--- /dev/null
+++ b/cntr-monitor/content/de/pages/privacy.mdx
@@ -0,0 +1,6 @@
+---
+order: 1
+title: Datenschutz
+---
+
+TODO Privacy
diff --git a/cntr-monitor/content/en/issues/2024/authors/test-author.mdx b/cntr-monitor/content/en/issues/2024/authors/test-author.mdx
new file mode 100644
index 000000000..7090ac7af
--- /dev/null
+++ b/cntr-monitor/content/en/issues/2024/authors/test-author.mdx
@@ -0,0 +1,6 @@
+---
+name: Test Author
+author_id: test-author
+---
+
+This is the author's bio
diff --git a/cntr-monitor/content/en/issues/2024/index.mdx b/cntr-monitor/content/en/issues/2024/index.mdx
new file mode 100644
index 000000000..dbfdb6115
--- /dev/null
+++ b/cntr-monitor/content/en/issues/2024/index.mdx
@@ -0,0 +1,7 @@
+---
+title: CNTR Monitor 2024
+year: 2024
+order: 0
+---
+
+Issue intro copy (EN)
diff --git a/cntr-monitor/content/en/issues/2024/posts/1_test.mdx b/cntr-monitor/content/en/issues/2024/posts/1_test.mdx
new file mode 100644
index 000000000..6d832ec74
--- /dev/null
+++ b/cntr-monitor/content/en/issues/2024/posts/1_test.mdx
@@ -0,0 +1,7 @@
+---
+order: 0
+title: Test Post
+color: rgb(0, 131, 181)
+---
+
+This is the post copy (EN)
diff --git a/cntr-monitor/content/en/pages/accessibility.mdx b/cntr-monitor/content/en/pages/accessibility.mdx
new file mode 100644
index 000000000..da1afea32
--- /dev/null
+++ b/cntr-monitor/content/en/pages/accessibility.mdx
@@ -0,0 +1,6 @@
+---
+title: Accessibility
+order: 2
+---
+
+TODO A11y Statement (DE)
diff --git a/cntr-monitor/content/en/pages/legal.mdx b/cntr-monitor/content/en/pages/legal.mdx
new file mode 100644
index 000000000..1f0807c4c
--- /dev/null
+++ b/cntr-monitor/content/en/pages/legal.mdx
@@ -0,0 +1,6 @@
+---
+order: 4
+title: Legal
+---
+
+TODO Legal (EN)
diff --git a/cntr-monitor/content/en/pages/privacy.mdx b/cntr-monitor/content/en/pages/privacy.mdx
new file mode 100644
index 000000000..2f6be45e2
--- /dev/null
+++ b/cntr-monitor/content/en/pages/privacy.mdx
@@ -0,0 +1,6 @@
+---
+order: 1
+title: Privacy
+---
+
+TODO Privacy (DE)
diff --git a/cntr-monitor/gatsby-browser.js b/cntr-monitor/gatsby-browser.js
new file mode 100644
index 000000000..cca874e58
--- /dev/null
+++ b/cntr-monitor/gatsby-browser.js
@@ -0,0 +1,6 @@
+import React from 'react'
+import { EmbedChoicesProvider } from './src/context/EmbedChoicesContext'
+
+export const wrapRootElement = ({ element }) => {
+ return