Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into 1029-empty-map-auto-s…
Browse files Browse the repository at this point in the history
…creenshot

# Conflicts:
#	frontend/lib/widgets/app_bars.dart
  • Loading branch information
f1sh1918 committed Nov 9, 2023
2 parents 4d627cd + ec106a9 commit 2ac5551
Show file tree
Hide file tree
Showing 90 changed files with 1,619 additions and 746 deletions.
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
### Removed

# [3.2.1] 2023-10-05

### Added
* 1102: Add hint when application deleted by @f1sh1918 in https://github.com/digitalfabrik/entitlementcard/pull/1107
* 1067 Implement sentry by @f1sh1918 in https://github.com/digitalfabrik/entitlementcard/pull/1111
* 1114: Sort applications by status by @f1sh1918 in https://github.com/digitalfabrik/entitlementcard/pull/1117
* 975: Show more user information by @f1sh1918 in https://github.com/digitalfabrik/entitlementcard/pull/1120
* 1123: Add oberallgaeu by @f1sh1918 in https://github.com/digitalfabrik/entitlementcard/pull/1124
* 1075: Create card from application by @sarahsporck in https://github.com/digitalfabrik/entitlementcard/pull/1091

### Fixed
* 1108: Prevent auto install entitlementcard by @f1sh1918 in https://github.com/digitalfabrik/entitlementcard/pull/1109
* 998: Improve color api switch by @f1sh1918 in https://github.com/digitalfabrik/entitlementcard/pull/1110
* [fix]: add partial index for admin email by @sarahsporck in https://github.com/digitalfabrik/entitlementcard/pull/1116
* 1115: Trim search text by @f1sh1918 in https://github.com/digitalfabrik/entitlementcard/pull/1118

### Changed
* 1100: Use single quotes by @steffenkleinle in https://github.com/digitalfabrik/entitlementcard/pull/1101
* build(deps): bump activesupport from 6.1.7.3 to 6.1.7.6 in /frontend/ios by @dependabot in https://github.com/digitalfabrik/entitlementcard/pull/1099
* Extract linting rules into separate file by @sarahsporck in https://github.com/digitalfabrik/entitlementcard/pull/1104
* Upgrade backend dependencies by @michael-markl in https://github.com/digitalfabrik/entitlementcard/pull/1112
* 1044: Only digital card default checked by @f1sh1918 in https://github.com/digitalfabrik/entitlementcard/pull/1119
* build(deps): bump graphql from 16.7.1 to 16.8.1 in /administration by @dependabot in https://github.com/digitalfabrik/entitlementcard/pull/1125

# [3.2.0] 2023-08-23

### Added
Expand Down
2 changes: 1 addition & 1 deletion administration/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "administration",
"version": "3.2.0",
"version": "3.2.1",
"private": true,
"dependenciesComments": {
"typescript": "Keeping on 5.0.x because of current incompatibility of 5.1.x with @typescript-eslint"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ const ApplicationCard = ({
<SectionCard>
{withdrawalDate && (
<WithdrawAlert intent='warning'>
Der Antrag wurde vom Antragssteller am {formatDateWithTimezone(withdrawalDate, config.timezone)}{' '}
Der Antrag wurde vom Antragsteller am {formatDateWithTimezone(withdrawalDate, config.timezone)}{' '}
zurückgezogen. <br />
Bitte löschen Sie den Antrag zeitnah.
</WithdrawAlert>
Expand Down
2 changes: 1 addition & 1 deletion administration/src/bp-modules/cards/ImportCardsInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ const ImportCardsInput = ({ setCardBlueprints, lineToBlueprint, headers }: Impor
description={<ImportCardsRequirementsText header={headers} />}
action={
<CardImportInputContainer>
<input data-testid='file-upload' ref={fileInput} accept='.csv' type='file' onInput={onInputChange} />
<input data-testid='file-upload' ref={fileInput} accept='.csv, text/csv' type='file' onInput={onInputChange} />
</CardImportInputContainer>
}
/>
Expand Down
7 changes: 7 additions & 0 deletions administration/src/cards/pdf/PdfQrCodeElement.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { PDFPage } from 'pdf-lib'

import { QrCode } from '../../generated/card_pb'
import { uint8ArrayToBase64 } from '../../util/base64'
import { isDevMode } from '../../util/helper'
import { drawQRCode } from '../../util/qrcode'
import { Coordinates, PdfElement, mmToPt } from './PdfElements'

Expand All @@ -27,6 +29,11 @@ const pdfQrCodeElement: PdfElement<PdfQrCodeElementProps, PdfQrCodeElementRender
qrCode: qrCode,
}).toBinary()

// Log base64 activationCode for development purposes
if (qrCode.case === 'dynamicActivationCode' && isDevMode()) {
console.log(uint8ArrayToBase64(qrCodeContent))
}

drawQRCode(qrCodeContent, qrCodeXPdf, qrCodeYPdf, qrCodeSizePdf, page, false)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ const ApplicationVerification = ({ applicationVerificationAccessKey }: Applicati
if (application.withdrawalDate)
return (
<CenteredMessage
title={`Der Antrag wurde vom Antragssteller am ${formatDateWithTimezone(
title={`Der Antrag wurde vom Antragsteller am ${formatDateWithTimezone(
application.withdrawalDate,
config.timezone
)} zurückgezogen.`}
Expand All @@ -110,8 +110,8 @@ const ApplicationVerification = ({ applicationVerificationAccessKey }: Applicati
Guten Tag {verification.contactName},
<br />
<br />
Sie wurden gebeten, die Angaben eines Antrags auf Ehrenamtskarte zu bestätigen. Die Antragsstellerin oder der
Antragssteller hat Sie als Kontaktperson der Organisation {verification.organizationName} angegeben. Im
Sie wurden gebeten, die Angaben eines Antrags auf Ehrenamtskarte zu bestätigen. Die Antragstellerin oder der
Antragsteller hat Sie als Kontaktperson der Organisation {verification.organizationName} angegeben. Im
Folgenden können Sie den zugehörigen Antrag einsehen. Wir bitten Sie, die enthaltenen Angaben, welche die
Organisation {verification.organizationName} betreffen, zu bestätigen. Falls Sie denken, die Angaben wurden
fälschlicherweise gemacht, bitten wir Sie, den Angaben zu widersprechen.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,7 @@ const WorkAtOrganizationForm: Form<State, Options, ValidatedInput, AdditionalPro
Component: ({ state, setState, onDelete }) => (
<>
<ActivityDivider onDelete={onDelete} />
<SubForms.organization.Component
state={state.organization}
setState={useUpdateStateCallback(setState, 'organization')}
/>
<h4>Angaben zur Tätigkeit</h4>
<h4>Angaben zu Ihrer ehrenamtlichen Tätigkeit</h4>
<SubForms.responsibility.Component
state={state.responsibility}
setState={useUpdateStateCallback(setState, 'responsibility')}
Expand All @@ -96,6 +92,10 @@ const WorkAtOrganizationForm: Form<State, Options, ValidatedInput, AdditionalPro
/>
</div>
</div>
<SubForms.organization.Component
state={state.organization}
setState={useUpdateStateCallback(setState, 'organization')}
/>
<SubForms.payment.Component
state={state.payment}
setState={useUpdateStateCallback(setState, 'payment')}
Expand Down
1 change: 1 addition & 0 deletions administration/src/util/helper.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const isDevMode = (): boolean => window.location.hostname === 'localhost'
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ object Mailer {
.from(fromName, smtpConfig.username)
.withSubject(subject)
.withPlainText(message)
.withHeader("Content-Type", "text/plain; charset=utf8")
.withHeader("Content-Type", "text/plain; charset=UTF-8")
.buildEmail()
).join()
} catch (exception: MailException) {
Expand Down Expand Up @@ -134,8 +134,8 @@ object Mailer {
val message = """
Guten Tag ${applicationVerification.contactName},
Sie wurden gebeten, die Angaben eines Antrags auf eine Ehrenamtskarte zu bestätigen. Die Antragsstellerin oder der
Antragssteller hat Sie als Kontaktperson der Organisation ${applicationVerification.organizationName} angegeben.
Sie wurden gebeten, die Angaben eines Antrags auf eine Ehrenamtskarte zu bestätigen. Die Antragstellerin oder der
Antragsteller hat Sie als Kontaktperson der Organisation ${applicationVerification.organizationName} angegeben.
Sie können den Antrag unter folgendem Link einsehen und die Angaben bestätigen oder ihnen widersprechen:
${projectConfig.administrationBaseUrl}/antrag-verifizieren/${URLEncoder.encode(applicationVerification.accessKey, StandardCharsets.UTF_8)}
Expand Down
4 changes: 2 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ services:
- MARIADB_AUTO_UPGRADE=1
- MARIADB_DISABLE_UPGRADE_BACKUP=1
env_file:
- ./matomo.env
- ./docker/matomo.env
networks:
- network
matomo:
Expand All @@ -57,7 +57,7 @@ services:
volumes:
- matomo:/var/www/html:z
env_file:
- ./matomo.env
- ./docker/matomo.env
ports:
- 5003:80
networks:
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion docs/artefacts/beantragung_zusammenfassung.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Auswahl aus
#### Bestätigung der Organisation

- Ort, Datum, Unterschrift/Stempel der Organistation
- AntragsstellerIn (Organisation/AntragsstellerIn)
- AntragstellerIn (Organisation/AntragstellerIn)
- Organisation wird gefördert durch (Freitext, optional)

### 2. Juleica Inhaber (Jugendleiterkarte)
Expand Down
2 changes: 1 addition & 1 deletion docs/artefacts/beantragungsprozess_entwurf.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions frontend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@ lib/graphql/graphql_api.graphql.dart
lib/graphql/graphql_api.graphql.g.dart

lib/proto
/lib/l10n/translations.g.dart
4 changes: 2 additions & 2 deletions frontend/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,13 @@ ext.setupApplication = { ApplicationProductFlavor flavor, buildConfigName ->

ext.setupVariant = { variant, buildConfigName ->
var buildConfig = createBuildConfig(buildConfigName)
if (buildConfig.featureFlags.excludeX86) {
if (buildConfig.buildFeatures.excludeX86) {
// Verify this using:
// unzip -l frontend/build/app/outputs/apk/Bayern/debug/app-Bayern-debug.apk | grep x86
// unzip -l frontend/build/app/outputs/apk/Nuernberg/debug/app-Nuernberg-debug.apk | grep x86
variant.packaging.jniLibs.excludes.add('**/lib/x86**')
}
if (buildConfig.excludeLocationPlayServices) {
if (buildConfig.buildFeatures.excludeLocationPlayServices) {
// Verify this by opening the APKs in Android Studio/IntelliJ. Then select all the .dex files.
// Then see if there are files located at com.android.gms (Cursive files are not present, only referenced)
variant.compileConfiguration.exclude group: 'com.google.android.gms', module: 'play-services-location'
Expand Down
177 changes: 177 additions & 0 deletions frontend/assets/l10n/app_de.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
{
"about": {
"dependencies": "Software-Bibliotheken",
"developmentOptions": "Entwickleroptionen",
"disclaimer": "Haftung, Haftungsausschluss und Impressum",
"infoTitle": "Info",
"languageChange": "Sprache wechseln",
"languageChangeSuccessful": "Ihre Sprache wurde erfolgreich geändert!",
"licenses": {
"one": "Lizenz",
"other": "Lizenzen"
},
"moreInformation": "Mehr Informationen",
"numberLicenses": {
"one": "1 Lizenz",
"other": "$n Lizenzen",
"zero": "Keine Lizenzen"
},
"privacyDeclaration": "Datenschutzerklärung",
"publisher": "Herausgeber",
"settingsTitle": "Einstellungen",
"sourceCode": "Quellcode der App",
"title": "Über"
},
"category": {
"clothing": "Kleidung",
"clothingLong": "Kleidung/Gebrauchtes",
"culture": "Kultur",
"cultureLong": "Bildung/Kultur/Unterhaltung",
"cultureLongNuernberg": "Kultur/Museen/Freizeit",
"digitalParticipation": "Digitale Teilhabe",
"education": "Bildung",
"fashion": "Mode",
"fashionLong": "Mode/Beauty",
"food": "Gastronomie",
"foodLong": "Essen/Trinken/Gastronomie",
"health": "Gesundheit",
"healthLong": "Gesundheit/Sport/Wellness",
"leisure": "Freizeit",
"leisureLong": "Freizeit/Reise/Unterkünfte",
"living": "Einrichtung",
"livingLong": "Wohnen/Haus/Garten",
"lunchTables": "Mittagstische",
"media": "Multimedia",
"mobility": "Mobilität",
"mobilityLong": "Auto/Zweirad",
"movies": "Schauspiel",
"moviesLong": "Kinos/Theater/Konzerte",
"other": "Anderes",
"pharmacies": "Apotheken",
"pharmaciesLong": "Apotheken/Gesundheit",
"services": "Dienstleistung",
"servicesLong": "Dienstleistungen/Finanzen",
"sports": "Sport",
"sportsLong": "Sport/Bewegung/Tanz"
},
"common": {
"cancel": "Abbrechen",
"checkConnection": "Bitte Internetverbindung prüfen.",
"connectionFailed": "Keine Verbindung möglich",
"done": "Fertig",
"moreActions": "Weitere Aktionen",
"next": "Weiter",
"ok": "OK",
"openSettings": "Einstellungen öffnen",
"previous": "Zurück",
"settings": "Einstellungen",
"tryAgain": "Erneut versuchen"
},
"identification": {
"activate": "Aktivieren",
"activateCurrentDeviceDescription": "Ihre Karte ist bereits auf einem anderen Gerät aktiviert. Wenn Sie Ihre Karte auf diesem Gerät aktivieren, wird sie auf Ihrem anderen Gerät automatisch deaktiviert.",
"activateCurrentDeviceTitle": "Karte auf diesem Gerät aktivieren?",
"activateDescription": "Sie haben die Ehrenamtskarte bereits beantragt und den Aktivierungscode Ihrer digitalen Ehrenamtskarte erhalten? Scannen Sie den Code hier ein.",
"activateTitle": "Karte aktivieren",
"applyDescription": "Sie sind ehrenamtlich engagiert, haben aber noch keine Ehrenamtskarte? Hier können Sie Ihre Ehrenamtskarte beantragen.",
"applyTitle": "Beantragen",
"authenticationPossible": "Mit diesem QR-Code können Sie sich bei Akzeptanzstellen ausweisen:",
"cameraAccessRequired": "Zugriff auf Kamera erforderlich",
"cameraAccessRequiredSettings": "Um einen QR-Code einzuscannen, benötigt die App Zugriff auf die Kamera. In den Einstellungen können Sie der App den Zugriff auf die Kamera erlauben.",
"cardAlreadyActivated": "Der eingescannte QRCode wurde bereits aktiviert.",
"cardExpired": "Ihre Karte ist abgelaufen. Unter \"Weitere Aktionen\" können Sie einen Antrag auf Verlängerung stellen.",
"cardInvalid": "Ihre Karte ist ungültig. Sie wurde entweder widerrufen oder auf einem anderen Gerät aktiviert.",
"cardNotYetValid": "Der Gültigkeitszeitraum Ihrer Karte hat noch nicht begonnen.",
"checkFailed": "Ihre Karte konnte nicht auf ihre Gültigkeit geprüft werden. Bitte stellen Sie sicher, dass eine Internetverbindung besteht und prüfen Sie erneut.",
"checkRequired": "Prüfung nötig",
"checkingCode": "Der QR-Code wird durch eine Server-Anfrage geprüft.",
"codeExpired": "Der eingescannte Code ist bereits am {{expirationDate}} abgelaufen.",
"codeInvalid": "Der Inhalt des eingescannten Codes kann nicht verstanden werden. Vermutlich handelt es sich um einen QR-Code, der nicht für diese App generiert wurde.",
"codeInvalidMissing": "Der Inhalt des eingescannten Codes ist unvollständig. (Fehlercode: {{missing}}Missing)",
"codeSavingFailed": "Der eingescannte Code kann nicht in der App gespeichert werden.",
"codeUnknownError": "Beim Scannen des QR-Codes ist ein unbekannter Fehler aufgetreten.",
"codeVerificationFailed": "Der eingescannte Code konnte vom Server nicht verifiziert werden.",
"codeActivationFailedConnection": "Der eingescannte Code konnte nicht aktiviert werden. Bitte stellen Sie sicher, dass eine Internetverbindung besteht und prüfen Sie erneut.",
"codeVerificationFailedConnection": "Der eingescannte Code konnte nicht verifiziert werden. Bitte stellen Sie sicher, dass eine Internetverbindung besteht und prüfen Sie erneut.",
"compareWithID": "Gleichen Sie die angezeigten Daten mit einem amtlichen Lichtbildausweis ab.",
"comparedWithID": "Ich habe die Daten mit einem amtlichen Lichtbildausweis abgeglichen.",
"flashOff": "Blitz aus",
"flashOn": "Blitz an",
"internetRequired": "Eine Internetverbindung wird benötigt.",
"moreActionsActivateDescription": "Ihre hinterlegte Ehrenamtskarte bleibt erhalten. Sie können diese manuell entfernen.",
"moreActionsActivateLimitDescription": "Um eine weitere Ehrenamtskarte hinzuzufügen, müssen Sie zuerst eine vorhandene Ehrenamtskarte löschen.",
"moreActionsActivateTitle": "Weitere Ehrenamtskarte hinzufügen",
"moreActionsApplyDescription": "Ihre hinterlegte Karte bleibt erhalten.",
"moreActionsApplyTitle": "Ehrenamtskarte beantragen oder verlängern",
"moreActionsRemoveDescription": "Nach der Auswahl wird diese Ehrenamtskarte vom Gerät gelöscht.",
"moreActionsRemoveTitle": "Diese Ehrenamtskarte löschen",
"moreActionsVerifyDescription": "Prüfen Sie die Gültigkeit einer digitalen Ehrenamtskarte.",
"moreActionsVerifyTitle": "Eine digitale Ehrenamtskarte prüfen",
"notVerified": "Nicht verifiziert",
"removeDescription": "Wenn diese Karte gelöscht wird, muss diese für eine erneute Verwendung neu hinzugefügt werden.",
"removeTitle": "Diese Karte löschen?",
"scanCode": "Scannen Sie den QR-Code, der auf dem \"Ausweisen\"-Tab Ihres Gegenübers angezeigt wird.",
"scanQRCode": "Halten Sie die Kamera auf den QR Code.",
"scanningFailed": "Fehler beim Lesen des Codes",
"selfieCamera": "Frontkamera",
"standardCamera": "Standard-Kamera",
"stopShowing": "Nicht mehr anzeigen",
"timeIncorrect": "Die Uhrzeit Ihres Geräts scheint nicht zu stimmen. Bitte synchronisieren Sie die Uhrzeit in den Systemeinstellungen.",
"title": "Ausweisen",
"unlimited": "unbegrenzt",
"validFromUntil": "Gültig: {{startDate}} bis {{expirationDate}}",
"validUntil": "Gültig bis: {{expirationDate}}",
"verificationSuccessful": "Karte ist gültig",
"verifyDescription": "Sie möchten die Gültigkeit einer digitalen Ehrenamtskarte prüfen? Scannen Sie den Code hier ein.",
"verifyInfoTitle": "So prüfen Sie die Gültigkeit einer Ehrenamtskarte",
"verifyTitle": "Gültigkeit prüfen"
},
"intro": {
"applyDescription": "Im Formular geben Sie Informationen über sich und Ihre ehrenamtliche Tätigkeit an. Anschließend wird der Antrag weitergeleitet und von der zuständigen Stelle bearbeitet.",
"applyTitle": "Wie kann ich die Ehrenamtskarte beantragen?",
"locationDescription": "Wir können Ihren Standort auf der Karte anzeigen und Akzeptanzstellen in Ihrer Umgebung anzeigen. Wenn Sie diese Hilfen nutzen möchten, benötigen wir Ihre Zustimmung. Ihr Standort wird nicht gespeichert.",
"locationTitle": "Finden Sie Akzeptanzstellen in Ihrer Umgebung!",
"usageDescription": "Auf der Karte von Bayern können Sie alle Akzeptanzstellen finden. Tippen Sie auf einen Standort, um mehr Informationen sehen zu können.",
"usageTitle": "Wo kann ich meine Ehrenamtskarte nutzen?",
"welcomeDescription": "Vielen Dank, dass Sie sich die App zur Bayerischen Ehrenamtskarte heruntergeladen haben!",
"welcomeTitle": "Willkommen!"
},
"location": {
"activateLocationAccess": "Standortermittlung aktivieren",
"activateLocationAccessRationale": "Erlauben Sie der App Ihren Standort zu benutzen, um Akzeptanzstellen in Ihrer Umgebung anzuzeigen.",
"activateLocationAccessSettings": "Aktivieren Sie die Standortermittlung in den Einstellungen.",
"askPermissionsAgain": "Soll nocheinmal nach der Berechtigung gefragt werden?",
"grantLocation": "Ich möchte meinen Standort freigeben.",
"grantPermission": "Berechtigung erteilen",
"locationAccessDeactivated": "Die Standortfreigabe ist deaktiviert.",
"locationGranted": "Standort ist freigegeben.",
"locationPermission": "Standortberechtigung",
"checkSettings": "Prüfe Einstellungen..."
},
"map": {
"mapData": "Kartendaten",
"osmContributors": "OpenStreetMap Mitwirkende",
"showMapCopyright": "Zeige Infos über das Urheberrecht der Kartendaten",
"title": "Karte"
},
"search": {
"filterByCategories": "Nach Kategorien filtern",
"findCloseBy": "In meiner Nähe suchen",
"noAcceptingStoresFound": "Auf diese Suche trifft keine Akzeptanzstelle zu.",
"searchHint": "Tippen, um zu suchen …",
"searchResults": "Suchresultate",
"title": "Suche"
},
"store": {
"acceptingStore": "Akzeptanzstelle",
"acceptingStoreNotFound": "Akzeptanzstelle nicht gefunden.",
"address": "Adresse",
"email": "E-Mail",
"loadingDataFailed": "Fehler beim Laden der Daten.",
"noDescriptionAvailable": "Keine Beschreibung verfügbar",
"phone": "Telefon",
"showOnMap": "Auf Karte zeigen",
"unknownCategory": "Unbekannte Kategorie",
"website": "Website"
}
}
Loading

0 comments on commit 2ac5551

Please sign in to comment.