Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adds dynamic forms loading for the website for different languages. #71

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ package

# secrets
.env
.env*
!.env.example
googleTranslateApiKey.json
4 changes: 1 addition & 3 deletions src/routes/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,7 @@
<span>{$microcopy?.indexPage?.boxes?.scholarshipNumber}</span>
<strong>
<UserGraduate {style} />
<a style="color: white;" sveltekit:prefetch href="/stipendium">
{$microcopy?.indexPage?.boxes?.scholarshipName}
</a>
{@html $microcopy?.indexPage?.boxes?.scholarshipName}
</strong>
</div>
</section>
Expand Down
23 changes: 20 additions & 3 deletions src/routes/signup-pupil/+page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,30 @@ import { fetchChapters, parseFormData } from '$lib/fetch'
import type { PageLoad } from '@sveltejs/kit'
// to make the signup form i18n-compatible,
// these 3 files need to be imported adaptively (same in the student form)
import messages from '../../signup-form/de/messages.yml'
import options from '../../signup-form/de/options.yml'
import raw_form from '../../signup-form/de/pupil.yml'
import { microcopy } from '$lib/stores'
import { get } from 'svelte/store'

var country = get(microcopy).country

// import messages from '../../signup-form/de/messages.yml'
// import options from '../../signup-form/de/options.yml'
// import raw_form from '../../signup-form/de/pupil.yml'
import type { _ } from '$env/static/private'

export const load: PageLoad = async () => {
// this does not work yet, when the url is directly called
// The problem is that microcopy is undefined when the page is loaded directly
const messages = (await import(`../../signup-form/${country}/messages.yml`))
.default
const options = (await import(`../../signup-form/${country}/options.yml`))
.default
const raw_form = (await import(`../../signup-form/${country}/pupil.yml`))
.default

console.log('files loaded1:', raw_form, messages)
let chapters = await fetchChapters()
chapters = chapters.filter((chap) => chap.acceptsSignups)
console.log('files loaded:', raw_form, messages)

const form = parseFormData({ ...raw_form, ...messages })

Expand Down
18 changes: 15 additions & 3 deletions src/routes/signup-student/+page.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
import { dev } from '$app/env'
import { fetchChapters, parseFormData } from '$lib/fetch'
import type { PageLoad } from '@sveltejs/kit'
import messages from '../../signup-form/de/messages.yml'
import options from '../../signup-form/de/options.yml'
import raw_form from '../../signup-form/de/student.yml'
import { microcopy } from '$lib/stores'
import { get } from 'svelte/store'
// import messages from '../../signup-form/de/messages.yml'
// import options from '../../signup-form/de/options.yml'
// import raw_form from '../../signup-form/de/student.yml'

export const load: PageLoad = async () => {
// this does not work yet, when the url is directly called
// The problem is that microcopy is undefined when the page is loaded directly
var country = get(microcopy).country
console.log('country', country)
const messages = (await import(`../../signup-form/${country}/messages.yml`))
.default
const options = (await import(`../../signup-form/${country}/options.yml`))
.default
const raw_form = (await import(`../../signup-form/${country}/student.yml`))
.default
let chapters = await fetchChapters()
chapters = chapters.filter((chap) => chap.acceptsSignups)

Expand Down
14 changes: 14 additions & 0 deletions src/signup-form/au/messages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
submitSuccess:
title: 🎉 ⭐ 🎉
note: Deine Anmeldung wurde erfolgreich an uns versandt. Du solltest innerhalb einer Minute eine Bestätigungsmail erhalten.

submitError:
title: 😢
note: Ein Fehler ist aufgetreten. Deine Anmeldung konnte nicht erfolgreich übermittelt werden. Bitte klicke erneut auf Absenden oder wende dich mit folgendem Fehlercode an [[email protected]](mailto:[email protected]?subject=Problem%20mit%20Anmeldeformular).

submit:
title: Anmeldung abschicken
note: Du bekommst innerhalb einer Minute eine Bestätigungs-Email von uns. Wenn nicht, war vielleicht etwas mit deiner Mailadresse nicht in Ordnung. In dem Fall schicke uns bitte eine kurze Mail an <[email protected]> und wir korrigieren deine Anmeldung.

errMsg:
required: Dieses Feld ist erforderlich
65 changes: 65 additions & 0 deletions src/signup-form/au/options.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
types:
- Student
- Schüler
locales:
- Deutsch
- English
online:
- Keine Angabe
- Ja
- Nein
gender:
- Männlich
- Weiblich
- Divers
discovery:
- Internetrecherche
- Freunde
- Fachschaft
- Email
- Instagram
- Facebook
- Twitter/Xing/LinkedIn/YouTube/...
- Aushang/Abrisszettel
- Werbung in Vorlesung
- Flyer
- Infostand/Vereinspräsentation
- Bericht in Zeitung/Internet
- Auflistung in Ehrenamtsregister
- Kooperationsparter
- Coronaschool
- MitVergnügen
- Organisation Tatendrang
- Jodel
- Andere Maßnahme
schoolTypes:
- Grundschule
- Mittelschule
- Berufsschule
- Gymnasium
- Ausbildung
- Hauptschule
- Realschule
- Flüchtlingsschule
- Andere
subjects:
- Alle Unterstufenfächer
- Mathe
- Deutsch
- Englisch
- Gesellschaftskunde/Politik
- Erdkunde/Geographie
- Wirtschaft
- Chemie
- Biologie
- Physik
- Geschichte
- Informatik
- Französisch
- Spanisch
- Latein
- Sport
- Musik
- Philosophie
- Religion/Ethik
- Deutsch als Fremdsprache
147 changes: 147 additions & 0 deletions src/signup-form/au/pupil.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
header:
title: Anmeldung Schüler:innen
note: |
<p align="center">
Du möchtest Nachhilfe geben? Hier geht's zur <a class="btn small green" href="/signup-student" sveltekit:prefetch>Anmeldung für Studierende</a>
</p>

## Formular für Eltern und soziale Einrichtungen

Wir freuen uns über dein Interesse! So geht's zur Nachhilfe:

1. Bitte fülle alle mit rotem Stern markierten Felder aus und klicke anschließend auf "Anmeldung abschicken".
2. Unsere Standortleitung bearbeitet deine Anfrage und matched dich mit einem unserer Nachhilfelehrkräfte.
3. Wir organisieren das erste Treffen zwischen euch beiden.
4. Die wöchentliche Nachhilfe von 1-2 Stunden arrangiert ihr anschließend unter euch.

Bitte hab Verständnis, dass die Vermittlung Wochen dauern kann. Wir bemühen uns an allen Standorten ständig neue Nachhilfelehrkräfte zu rekrutieren, um dich so schnell wie möglich zu vermitteln.

Die Daten, die du hier eingibst, werden in [Airtable](https://airtable.com) gespeichert. Informationen zur Datenverarbeitung findest du in unserer [Datenschutzerklärung](/datenschutz).

fields:
- id: chapter
title: Standort
note: Wähle einen unserer Nachhilfestandorte.
required: true
type: select
maxSelect: 1

- id: gender
title: Geschlecht Schüler:in
required: true
type: select
maxSelect: 1

- id: firstName
title: Vorname Schüler:in
note: |
Aus Datenschutzgründen bitte nicht den Nachnamen nennen. Bei mehreren Anmeldungen jeweils ein Formular ausfüllen. Wenn mehrere Schüler:innen mit gleichen Vornamen von einer Kontaktperson angemeldet werden, bitte den ersten Buchstaben vom Nachnamen hinzufügen.
required: true

- id: subjects
title: Fächer
note: |
In welchem Fach möchtest du Nachhilfe erhalten? Für nicht aufgeführte Fächer oder sonstige Hinweise, bitte das Fach "Anderes" wählen und im Kommentarfeld unten beschreiben.
type: select
required: true

- id: schoolTypes
title: Schulform
note: |
Auf welche Schule gehst du?

Für nicht aufgeführte Schultypen oder sonstige Hinweise, bitte "Anderes" wählen und im Kommentarfeld unten beschreiben.
type: select
required: true
maxSelect: 1

- id: level
title: Klassenstufe
required: true
type: singleRange
min: 1
max: 13

- id: places
title: Wo in der Stadt?
note: |
Bitte gib eine oder mehrere Adressen an, in deren Nähe die Nachhilfe stattfinden kann.

Beispiele: Meinestraße 4, Uniplatz 1, Stadtbibliothek.
required: true
placeholder: Ort der Nachhilfe
type: placeSelect

- id: birthYear
title: Geburtsjahr Schüler:in
required: true
note: |
z.B. 2006, falls nicht bekannt, einfach ein ungefähres Geburtsjahr eingeben.
type: number
min: 1960
max: 2025

- id: online
title: Ist Online-Nachhilfe in Ordnung?
note: |
Aufgrund der Pandemie muss die Nachhilfe vielerorts zur Zeit online stattfinden ohne persönliche Treffen zwischen Schülern und Studierenden.

Hat das Kind Zugang zu einem Laptop, Tablet o.ä. und ist technisch in der Lage, Online-Nachhilfe zu erhalten? Wenn nicht, [können wir auch da helfen](/blog/spende-laptops).
type: toggle
maxSelect: 1

- id: remarks
title: Bemerkungen
note: |
Hast du weitere Infos für uns?

Hier können genauere Informationen zu Klassenstufe, Schulfächern, Förderschwerpunkte und Schultyp gegeben werden, die deine oben gewählten Antworten näher beschreiben.

- id: nameContact
title: Name Kontaktperson
note: Wie lautet der Vor- und Nachname deiner Kontaktperson (z.B. Eltern oder Sozialarbeiter:in)?
required: true

- id: phoneContact
title: Telefon Kontaktperson
note: Wie lautet die Telefonnummer für mögliche Rückfragen an die Kontaktperson?
required: true
type: tel

- id: emailContact
title: E-Mail Kontaktperson
note: |
Wir schicken innerhalb von einer Minute eine Bestätigungs-Email an diese Adresse.
required: true
type: email

- id: orgContact
title: Organisation Kontaktperson
note: |
Gehört die Kontaktperson einer Organisation an (z.B. Diakonie, Caritas, Jugendzentrum)? Bei Privatanmeldungen (z.B. durch Eltern) bitte den Namen der Schule angeben.
required: true

- id: need
title: Finanzielle Benachteiligung
note: Unser Angebot richtet sich speziell an Kinder und Jugendliche, für die aufgrund ihrer finanziellen Situation reguläre, kostenpflichtige Nachhilfe keine Option ist. Wir bitten um Bestätigung, dass dies auf deine Anfrage zutrifft.
required: true
type: toggle

- id: discovery
title: Werbemaßnahme
note: Hilf uns, unsere Werbung effektiver zu gestalten, indem du uns verrätst, wie du uns gefunden hast.

- id: dataProtection
title: Einwilligung in die Datenverarbeitung
note: |
Informationen zur Verarbeitung deiner personenbezogenen Daten findest du unter [Vereinbarungen](/vereinbarungen#verarbeitung-personenbezogener-daten). Durch Klicken des Reglers versichere ich, dass ich diese Infos zur Kenntnis genommen habe und meine Einwilligung gebe. Mir ist bewusst, dass diese Einwilligung freiwillig erfolgt und von mir jederzeit widerrufen werden kann.

#### Minderjährige

Sofern der Schüler das 16. Lebensjahr nicht vollendet hat, muss zusätzlich zum Schüler auch der Sorgeberechtigte die Einwilligung erteilen.

#### Sorgeberechtigung

Sofern mehrere Personen sorgeberechtigt sind, versichere ich, dass auch die anderen Sorgeberechtigten mit der Verarbeitung der Daten nach dieser Datenschutzerklärung einverstanden sind.
required: true
type: toggle
89 changes: 89 additions & 0 deletions src/signup-form/au/smallTexts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
comment: This yaml is both on github and on contentful for versioning and checking of correctness. Only the version on contentful is actually used!

country: at

indexPage:
title: Studenten bilden Schüler
theme: Kostenlose Nachhilfe von ehrenamtlichen Studierenden für finanziell benachteiligte Kinder
chooseLocation: 'Wähle deinen <a sveltekit:prefetch href="/standorte"><strong>Standort</strong></a> auf der Karte!'

register:
'Oder melde dich direkt <a sveltekit:prefetch href="/signup-student">
<strong>bei uns an.</strong>
</a>'
boxes:
locationsName: Standorte
studentsName: Studierende
studentsNumber: 2872
pupilsName: Schüler:innen
pupilsNumber: 3186
scholarshipName: '<a style="color: white;" sveltekit:prefetch href="/stipendium">Gründung</a>'
scholarshipNumber: 2022

footer:
name: 'Studenten bilden Schüler e.V.'
siteInfos: 'Diese Seite ist
<a href="https://github.com/sbsev/svelte-site">
<OpenSource
height="2.5ex"
style="vertical-align: bottom; padding-right: 3pt;"
/>open source
</a>
und verwendet keine
<a href="https://de.wikipedia.org/wiki/HTTP-Cookie">
use
<Cookie height="2.2ex" style="vertical-align: middle;" />
cookies.
</a>'
site: 'Diese Seite ist'
uses: 'und verwendet keine'

map:
location:
lng: 13.55
lat: 47.71
zoom: 6.00
minZoom: 4
maxZoom: 10
text:
active: 'aktiver Standort'
inSetup: 'in Gründung'

chapterList:
locations: 'Unsere Standorte'
inSetup: 'Standorte in Gründung'

location:
register: 'Anmeldungen'
joinStudent: 'Willst du bei uns mitmachen?'
registerStudent: 'Als Student:in anmelden'
linkStudentInfo: '/mitmachen/nachhilfelehrer'
infoStudentButton: 'Infos für Studierende'
joinPupil: 'Suchst du Nachhilfe?'
registerPupil: 'Als Schüler:in anmelden'
linkPupilInfo: '/mitmachen/schueler'
infoPupilButton: 'Infos für Schüler:innen'
locationManagement: 'Interesse an Standortleitung?'
mailTo: 'mailto:info.{slug}@studenten-bilden-schueler.de?subject=Interesse an Standortleitung in {page.title}'
writeMailButton: 'Schreib uns'
linkLeadingInfo: '/mitmachen/standortleiter'
infoLeadingButton: 'Infos für Standortleitende'
contact: 'Kontakt'
questions: 'Noch Fragen? Schreib uns eine Mail!'
url: 'studenten-bilden-schueler.de'
student: 'studenten'
forStudents: 'für Studierende'
pupil: 'schueler'
info: 'info'
forPartner: 'für Soziale Einrichtungen und Nachhilfeanfragen'
generalRequests: 'für Allgemeine Anfragen'

basepage:
last: 'Zuletzt bearbeitet:'
feedback: 'Feedback zu dieser Seite?'
email: '[email protected]?subject=Feedback zu Seite:'

meta:
name: 'Studenten bilden Schüler e.V.'
description: 'Ehrenamtliche Nachhilfe von Studierenden für Schüler:innen in deutschlandweit über 50 Unistädten.'
url: studenten-bilden-schueler.de
Loading