From cdaf1420e80d1f3b8a672b16cbcd2ef2640d07e4 Mon Sep 17 00:00:00 2001 From: Winnie Ros Date: Fri, 2 Apr 2021 16:59:09 +0200 Subject: [PATCH] refactor(messages): admin-folder --- messages/uniworx/misc/de-de-formal.msg | 86 +------------------ messages/uniworx/misc/en-eu.msg | 84 +----------------- .../uniworx_new/admin/de-de-formal.msg | 75 ++++++++++++++++ messages/uniworx/uniworx_new/admin/en-eu.msg | 75 ++++++++++++++++ src/Foundation/I18n.hs | 3 +- src/Handler/Admin/Crontab.hs | 2 +- src/Handler/Admin/StudyFeatures.hs | 4 +- src/Handler/Utils/Table/Columns.hs | 6 +- 8 files changed, 162 insertions(+), 173 deletions(-) create mode 100644 messages/uniworx/uniworx_new/admin/de-de-formal.msg create mode 100644 messages/uniworx/uniworx_new/admin/en-eu.msg diff --git a/messages/uniworx/misc/de-de-formal.msg b/messages/uniworx/misc/de-de-formal.msg index e7a07c567..7c8b5edf7 100644 --- a/messages/uniworx/misc/de-de-formal.msg +++ b/messages/uniworx/misc/de-de-formal.msg @@ -83,6 +83,8 @@ TableFileModified: Letzte Änderung TableCorState: Status TableCorProportion: Anteil TableCorrector: Korrektor +TableDegreeShort: Abschlusskürzel +TableDegreeName: Abschluss #headings HeadingLegal: Rechtliche Informationen @@ -91,8 +93,6 @@ ParticipantsList: Kursteilnehmerlisten ParticipantsIntersect: Überschneidung von Kursteilnehmer:innen HeadingProfileData: Persönliche Daten HeadingSchoolList: Institute -HeadingAdminCrontab: Crontab -HeadingAdminTokens: Tokens ausstellen HeadingCorrectionsAssign: Zuteilung der Korrekturen HeadingUserAdd: Benutzer:in anlegen CorrectorsChange: Korrektoren ändern @@ -115,10 +115,7 @@ RegisterFrom: Anmeldungen von RegisterTo: Anmeldungen bis TutorialDeRegUntil: Abmeldungen bis -GenericKey: Schlüssel GenericShort: Kürzel -GenericIsNew: Neu -GenericHasConflict: Konflikt GenericBack: Zurück GenericChange: Änderung GenericNumChange: +/- @@ -706,54 +703,13 @@ SubmissionUpdated: Abgabe erfolgreich ersetzt ColumnStudyFeatures: Studiendaten -AdminFeaturesHeading: Studiengänge - -StudyFeaturesDegrees: Abschlüsse -StudyFeaturesTerms: Studiengänge -StudyFeaturesNameCandidates: Namens-Kandidaten -StudyFeaturesParentCandidates: Kandidaten für Unterstudiengänge -StudyFeaturesStandaloneCandidates: Kandidaten für Einzelstudiengänge -StudyFeatureNameInference: Studiengangschlüssel-Inferenz -StudyFeatureParentInference: Unterstudiengang-Inferenz -StudyFeatureInferenceNoNameConflicts: Keine Konflikte beobachtet -StudyFeatureInferenceNameConflictsHeading: Studiengangseinträge mit beobachteten Konflikten - FieldPrimary: Hauptfach FieldSecondary: Nebenfach ShortFieldPrimary: HF ShortFieldSecondary: NF NoStudyField: Kein Studienfach -StudyTermsParentMissing: Elternteil wird benötigt - - - DegreeKey: Abschlussschlüssel -DegreeName: Abschluss -DegreeShort: Abschlusskürzel -StudyTermsKey: Studiengangschlüssel -StudyTermsName: Studiengang -StudyTermsShort: Studiengangkürzel -StudyTermsChangeSuccess: Zuordnung Studiengänge aktualisiert -StudyDegreeChangeSuccess: Zuordnung Abschlüsse aktualisiert -StudyCandidateIncidence: Synchronisation -AmbiguousNameCandidatesRemoved n@Int: #{show n} #{pluralDE n "uneindeutiger Kandidat" "uneindeutige Kandiaten"} entfernt -RedundantNameCandidatesRemoved n@Int: #{show n} bereits #{pluralDE n "bekannter Namenskandidat" "bekannte Namenskandiaten"} entfernt -RedundantParentCandidatesRemoved n@Int: #{show n} bereits #{pluralDE n "bekannter Elternkandidat" "bekannte Elternkandiaten"} entfernt -RedundantStandaloneCandidatesRemoved n@Int: #{show n} bereits #{pluralDE n "bekannter Einzelstudiengangskandidat" "bekannte Einzelstudiengangskandiaten"} entfernt -NameCandidatesInferred n@Int: #{show n} neue #{pluralDE n "Studiengangszuordnung" "Studiengangszuordnungen"} inferiert -NoNameCandidatesInferred: Keine neuen Studienganszuordnungen inferiert -ParentCandidatesInferred n@Int: #{show n} #{pluralDE n "neuer Unterstudiengang" "neue Unterstudiengänge"} inferiert -NoParentCandidatesInferred: Keine neuen Unterstudiengänge inferiert -AllNameIncidencesDeleted: Alle Namens-Beobachtungen wurden gelöscht. -AllParentIncidencesDeleted: Alle Unterstudiengang-Beobachtungen wurden gelöscht. -AllStandaloneIncidencesDeleted: Alle Einzelstudiengang-Beobachtungen wurden gelöscht. -IncidencesDeleted n@Int: #{show n} #{pluralDE n "Beobachtung" "Beobachtungen"} gelöscht -StudyTermIsNew: Neu -StudyFeatureConflict: Es wurden Konflikte in der Studiengang-Zuordnung gefunden - -MailTestFormEmail: E-Mail-Adresse -MailTestFormLanguages: Spracheinstellungen MailTestSubject: Uni2work Test-E-Mail MailTestContent: Dies ist eine Test-E-Mail versandt von Uni2work. Von Ihrer Seite ist keine Handlung notwendig. @@ -1011,7 +967,6 @@ ErrorResponseNotAuthenticated: Um Zugriff auf einige Teile des Systems zu erhalt ErrorResponseBadMethod requestMethodText@Text: Ihr Browser kann auf mehrere verschiedene Arten versuchen mit den vom System angebotenen Ressourcen zu interagieren. Die aktuell versuchte Methode (#{requestMethodText}) wird nicht unterstützt. ErrorResponseEncrypted: Um keine sensiblen Daten preiszugeben wurden nähere Details verschlüsselt. Wenn Sie eine Anfrage an den Support schicken fügen Sie bitte die unten aufgeführten verschlüsselten Daten mit an. -ErrMsgCiphertext: Verschlüsselte Fehlermeldung EncodedSecretBoxCiphertextTooShort: Verschlüsselte Daten zu kurz um valide zu sein EncodedSecretBoxInvalidBase64 base64Err@String: Verschlüsselte Daten nicht korrekt base64url-kodiert: #{base64Err} EncodedSecretBoxInvalidPadding: Verschlüsselte Daten sind nicht korrekt padded @@ -1550,15 +1505,6 @@ ShortSexMale: m ShortSexFemale: w ShortSexNotApplicable: k.A. - - -StudySubTermsChildKey: Kind -StudySubTermsChildName: Kindname -StudySubTermsParentKey: Elter -StudySubTermsParentName: Eltername -StudyTermsDefaultDegree: Default Abschluss -StudyTermsDefaultFieldType: Default Typ - MenuLanguage: Sprache LanguageChanged: Sprache erfolgreich geändert @@ -1658,27 +1604,6 @@ ExampleUser3DisplayName: Beispiel CourseOption tid@TermId ssh@SchoolId coursen@CourseName: #{tid} - #{ssh} - #{coursen} -BearerTokenUsageWarning: Mit diesem Interface können quesi beliebige Rechte als Tokens kodiert und somit ohne wesentliche weitere Beschränkung frei übertragen werden. Benutzen Sie dieses Interface nur, wenn Sie von einem erfahrenen Entwickler über die Auswirkungen des konkreten Tokens, dass sie ausstellen möchten, beraten wurden! -BearerTokenAuthorityGroups: Token-Authorität (Gruppen) -BearerTokenAuthorityGroupsTip: Die primären Benutzer aller angegebenen Gruppen müssen Zugriff auf eine Route haben, damit das Token den Zugriff auf diese Route erlaubt. -BearerTokenAuthorityGroupMissing: Gruppe wird benötigt -BearerTokenAuthorityUsers: Token-Authorität (Benutzer) -BearerTokenAuthorityUsersTip: Alle angegebenen Benutzer müssen Zugriff auf eine Route haben, damit das Token den Zugriff auf diese Route erlaubt. Der Aussteller muss, bei mit diesem Benutzerinterface erzeugten Tokens, auch Zugriff auf die Route haben (er wird automatisch der Menge von Token-Authoritäten hinzugefügt). -BearerTokenAuthorityUnknownUser email@UserEmail: Ein Nutzer mit E-Mail #{email} ist dem System nicht bekannt -BearerTokenRoutes: Erlaubte Routen -BearerTokenRoutesTip: Wenn die Token-Validität nach Routen eingeschränkt und keine Routen angegeben werden, ist das Token nirgends gültig. -BearerTokenRouteMissing: Route wird benötigt -BearerTokenRestrictions: Routen-spezifische Einschränkungen -BearerTokenRestrictRoutes: Token-Validität nach Routen einschränken -BearerTokenRestrictRoute: Route -BearerTokenRestrictValue: Einschränkung -BearerTokenAdditionalAuth: Zusätzliche Authorisierung -BearerTokenAdditionalAuthTip: Wird hier nichts angegeben, werden keine Einschränkungen daran gesetzt, wer das Token verwenden kann. Es reicht dann der Besitz. -BearerTokenOverrideExpiration: Ablaufzeitpunkt überschreiben -BearerTokenExpires: Ablaufzeitpunkt -BearerTokenExpiresTip: Wird der Ablaufzeitpunkt überschrieben und kein Ablaufzeitpunkt angegeben, ist das Token für immer gültig. -BearerTokenOverrideStart: Startzeitpunkt -BearerTokenOverrideStartTip: Wird kein Startzeitpunkt angegeben, wird bei Verwendung des Tokens nur der Ablaufzeitpunkt überprüft. FaqTitle: Häufig gestellte Fragen MultiActionUnknownAction: In einem von einem Eingabefeld abhängigen Formular wurde ein Wert gewählt, für den kein Formular verfügbar ist @@ -1688,9 +1613,6 @@ CourseParticipantActive: Teilnehmer CourseParticipantInactive: Abgemeldet CourseParticipantNoShow: Nicht erschienen -TestDownload: Download-Test -TestDownloadMaxSize: Maximale Dateigröße -TestDownloadMode: Modus TestDownloadDirect: Direkte Generierung TestDownloadInTransaction: Generierung während Datenbank-Transaktion TestDownloadFromDatabase: Generierung während Download aus Datenbank @@ -1719,10 +1641,6 @@ PersonalisedSheetFilesDownloadSurnames: Mit Nachnamen PersonalisedSheetFilesDownloadMatriculations: Mit Matrikelnummern PersonalisedSheetFilesDownloadGroups: Mit festen Abgabegruppen -AdminCrontabNotGenerated: (Noch) keine Crontab generiert -CronMatchAsap: ASAP -CronMatchNone: Nie - SystemExamOffice: Prüfungsverwaltung SystemFaculty: Fakultätsmitglied SystemStudent: Student diff --git a/messages/uniworx/misc/en-eu.msg b/messages/uniworx/misc/en-eu.msg index 535d04452..5259bf24d 100644 --- a/messages/uniworx/misc/en-eu.msg +++ b/messages/uniworx/misc/en-eu.msg @@ -82,6 +82,8 @@ TableFileModified: Last changed TableCorState: State TableCorProportion: Proportion TableCorrector: Corrector +TableDegreeShort: Degree shorthand +TableDegreeName: Degree #headings HeadingLegal: Legal @@ -90,8 +92,6 @@ ParticipantsList: Lists of course participants ParticipantsIntersect: Common course participants HeadingProfileData: Personal information HeadingSchoolList: Departments -HeadingAdminCrontab: Crontab -HeadingAdminTokens: Issue tokens HeadingCorrectionsAssign: Assign corrections HeadingUserAdd: Add user CorrectorsChange: Adjust correctors @@ -116,10 +116,7 @@ RegisterFrom: Enrolment starts RegisterTo: Enrolment ends TutorialDeRegUntil: Deregistration until -GenericKey: Key GenericShort: Shorthand -GenericIsNew: New -GenericHasConflict: Conflict GenericBack: Back GenericChange: Change GenericNumChange: +/- @@ -708,51 +705,13 @@ SubmissionUpdated: Successfully replaced submission ColumnStudyFeatures: Features of study -AdminFeaturesHeading: Features of study - -StudyFeaturesDegrees: Degrees -StudyFeaturesTerms: Terms of Study -StudyFeaturesNameCandidates: Name candidates -StudyFeaturesParentCandidates: Parent candidates -StudyFeaturesStandaloneCandidates: Standalone candidates -StudyFeatureNameInference: Infer field of study mapping -StudyFeatureParentInference: Infer field of study parent relation -StudyFeatureInferenceNoNameConflicts: No observed conflicts -StudyFeatureInferenceNameConflictsHeading: Fields of study with observed conflicts FieldPrimary: Major FieldSecondary: Minor ShortFieldPrimary: Mj ShortFieldSecondary: Mn NoStudyField: No field of study -StudyTermsParentMissing: Parent is required - DegreeKey: Degree key -DegreeName: Degree -DegreeShort: Degree shorthand -StudyTermsKey: Field key -StudyTermsName: Field of study -StudyTermsShort: Field shorthand -StudyTermsChangeSuccess: Successfully updated fields of study -StudyDegreeChangeSuccess: Successfully updated degrees -StudyCandidateIncidence: Synchronisation -AmbiguousNameCandidatesRemoved n: Successfully removed #{n} ambiguous #{pluralEN n "candidate" "candidates"} -RedundantNameCandidatesRemoved n: Successfully removed #{n} rendundant #{pluralEN n "name-candidate" "name-candidates"} -RedundantParentCandidatesRemoved n: Successfully removed #{n} rendundant #{pluralEN n "parent-candidate" "parent-candidates"} -RedundantStandaloneCandidatesRemoved n: Successfully removed #{n} rendundant #{pluralEN n "standalone-candidate" "standalone-candidates"} -NameCandidatesInferred n: Successfully inferred #{n} field #{pluralEN n "mapping" "mappings"} -NoNameCandidatesInferred: No new name-mappings inferred -AllNameIncidencesDeleted: Successfully deleted all name observations -AllParentIncidencesDeleted: Successfully deleted all parent-relation observations -AllStandaloneIncidencesDeleted: Successfully deleted all standalone observations -ParentCandidatesInferred n: Successfully inferred #{n} field #{pluralEN n "parent-relation" "parent-reliations"} -NoParentCandidatesInferred: No new parent-relations inferred -IncidencesDeleted n: Successfully deleted #{show n} #{pluralEN n "observation" "observations"} -StudyTermIsNew: New -StudyFeatureConflict: Observed conflicts in field mapping - -MailTestFormEmail: Email address -MailTestFormLanguages: Language settings MailTestSubject: Uni2work test email MailTestContent: This is a test email sent by Uni2work. No action on your part is required. @@ -1009,7 +968,6 @@ ErrorResponseNotAuthenticated: To be granted access to most parts of Uni2work yo ErrorResponseBadMethod requestMethodText: Your browser can interact in multiple ways with the resources offered by Uni2work. The requested method (#{requestMethodText}) is not supported here. ErrorResponseEncrypted: In order not to reveal sensitive information further details have been encrypted. If you send a support request, please include the encrypted data listed below. -ErrMsgCiphertext: Encrypted error message EncodedSecretBoxCiphertextTooShort: Encrypted data are too short to be valid EncodedSecretBoxInvalidBase64 base64Err: Encrypted data ar not correctly base64url-encoded: #{base64Err} EncodedSecretBoxInvalidPadding: Encrypted data are not padded correctly @@ -1543,15 +1501,6 @@ ShortSexMale: m ShortSexFemale: f ShortSexNotApplicable: N/A - - -StudySubTermsChildKey: Child -StudySubTermsChildName: Child-Name -StudySubTermsParentKey: Parent -StudySubTermsParentName: Parent-Name -StudyTermsDefaultDegree: Default degree -StudyTermsDefaultFieldType: Default type - MenuLanguage: Language LanguageChanged: Language changed successfully @@ -1651,28 +1600,6 @@ ExampleUser3DisplayName: Example CourseOption tid ssh coursen: #{tid} - #{ssh} - #{coursen} -BearerTokenUsageWarning: Using this interface you are able to encode essentially arbitrary permissions inte bearer tokens. This allows you to freely hand permissions off arbitrarily and without relevant restrictions. Only use this interface if you have discussed the consequences of the specific token, that you want to issue, with an experienced developer! -BearerTokenAuthorityGroups: Authority (groups) -BearerTokenAuthorityGroupsTip: All primary users of the groups listed here need to have the requisite permissions to access a route in order for the created token to grant permission to do so as well. -BearerTokenAuthorityGroupMissing: Group is required -BearerTokenAuthorityUsers: Authority (users -BearerTokenAuthorityUsersTip: All users listed here need to have the requisite permissions to access a route in order for the created token to grant permission to do so as well. The user issuing the token using this interface also needs to have permission to access that route (they are automatically added to the list of authorities). -BearerTokenAuthorityUnknownUser email: Could not find any user with email #{email} -BearerTokenRoutes: Permitted routes -BearerTokenRoutesTip: If the token is restricted to certain routes and no routes are listed, the token is valid nowhere. -BearerTokenRouteMissing: Route is required -BearerTokenRestrictions: Route-specific restrictions -BearerTokenRestrictRoutes: Restrict token to certain routes -BearerTokenRestrictRoute: Route -BearerTokenRestrictValue: Restriction -BearerTokenAdditionalAuth: Additional authorisation -BearerTokenAdditionalAuthTip: If nothing is entered, no additional authorisation will be performed when the token is used. Mere posession of the token will be sufficient. -BearerTokenOverrideExpiration: Override expiration time -BearerTokenExpires: Expiration time -BearerTokenExpiresTip: If no expiration time is given, the token will not expire. It will be valid forever. -BearerTokenOverrideStart: Start time -BearerTokenOverrideStartTip: If no start time is given, only the expiration time will be checked when the token is used. - FaqTitle: Frequently asked questions MultiActionUnknownAction: In a form dependent on the value of a field a value was given for which no form is available @@ -1682,9 +1609,6 @@ CourseParticipantActive: Participant CourseParticipantInactive: Deregistered CourseParticipantNoShow: No show -TestDownload: Download test -TestDownloadMaxSize: Maximum filesize -TestDownloadMode: Mode TestDownloadDirect: Direct generation TestDownloadInTransaction: Generate during database transaction TestDownloadFromDatabase: Generate while streaming from database @@ -1713,10 +1637,6 @@ PersonalisedSheetFilesDownloadSurnames: With surnames PersonalisedSheetFilesDownloadMatriculations: With matriculation numbers PersonalisedSheetFilesDownloadGroups: With registered submission groups -AdminCrontabNotGenerated: Crontab not (yet) generated -CronMatchAsap: ASAP -CronMatchNone: Never - SystemExamOffice: Exam office SystemFaculty: Faculty member SystemStudent: Student diff --git a/messages/uniworx/uniworx_new/admin/de-de-formal.msg b/messages/uniworx/uniworx_new/admin/de-de-formal.msg new file mode 100644 index 000000000..2640ec799 --- /dev/null +++ b/messages/uniworx/uniworx_new/admin/de-de-formal.msg @@ -0,0 +1,75 @@ +TestDownloadMaxSize: Maximale Dateigröße +TestDownloadMode: Modus +HeadingAdminCrontab: Crontab +AdminInstanceId: Instanz-Nummer:in +AdminCrontabNotGenerated: (Noch) keine Crontab generiert +CronMatchAsap: ASAP +CronMatchNone: Nie +ErrMsgCiphertext: Verschlüsselte Fehlermeldung +AmbiguousNameCandidatesRemoved n@Int: #{show n} #{pluralDE n "uneindeutiger Kandidat/uneindeutige Kandidatin" "uneindeutige Kandiat:innen"} entfernt +RedundantNameCandidatesRemoved n@Int: #{show n} bereits #{pluralDE n "bekannter Namenskandidat/bekannte NamensKandidatin" "bekannte Namenskandiat:innen"} entfernt +StudyFeatureConflict: Es wurden Konflikte in der Studiengang-Zuordnung gefunden +NameCandidatesInferred n@Int: #{show n} neue #{pluralDE n "Studiengangszuordnung" "Studiengangszuordnungen"} inferiert +NoNameCandidatesInferred: Keine neuen Studienganszuordnungen inferiert +AllNameIncidencesDeleted: Alle Namens-Beobachtungen wurden gelöscht. +AllParentIncidencesDeleted: Alle Unterstudiengang-Beobachtungen wurden gelöscht. +AllStandaloneIncidencesDeleted: Alle Einzelstudiengang-Beobachtungen wurden gelöscht. +IncidencesDeleted n@Int: #{show n} #{pluralDE n "Beobachtung" "Beobachtungen"} gelöscht +RedundantParentCandidatesRemoved n@Int: #{show n} bereits #{pluralDE n "bekannter Elternkandidat/bekannte Elternkandidatin" "bekannte Elternkandiat:innen"} entfernt +RedundantStandaloneCandidatesRemoved n@Int: #{show n} bereits #{pluralDE n "bekannter Einzelstudiengangskandidat/bekannte Einzelstudiengangskandidatin" "bekannte Einzelstudiengangskandiat:innen"} entfernt +ParentCandidatesInferred n@Int: #{show n} #{pluralDE n "neuer Unterstudiengang" "neue Unterstudiengänge"} inferiert +NoParentCandidatesInferred: Keine neuen Unterstudiengänge inferiert +StudyDegreeChangeSuccess: Zuordnung Abschlüsse aktualisiert +StudyTermsShort: Studiengangkürzel +StudyTermsChangeSuccess: Zuordnung Studiengänge aktualisiert +StudyCandidateIncidence: Synchronisation +StudyTermIsNew: Neu +AdminFeaturesHeading: Studiengänge +StudyTermsParentMissing: Elternteil wird benötigt +GenericKey: Schlüssel +StudySubTermsParentKey: Elter +StudySubTermsParentName: Eltername +GenericIsNew: Neu +GenericHasConflict: Konflikt +StudyTermsKey: Studiengangschlüssel +StudyTermsName: Studiengang +StudyTermsDefaultDegree: Default Abschluss +StudyTermsDefaultFieldType: Default Typ +StudySubTermsChildKey: Kind +StudySubTermsChildName: Kindname +MailTestFormEmail: E-Mail-Adresse +MailTestFormLanguages: Spracheinstellungen +TestDownload: Download-Test +BearerTokenUsageWarning: Mit diesem Interface können quesi beliebige Rechte als Tokens kodiert und somit ohne wesentliche weitere Beschränkung frei übertragen werden. Benutzen Sie dieses Interface nur, wenn Sie von einem erfahrenen Entwickler/einer erfahrenen Entwicklerin über die Auswirkungen des konkreten Tokens, dass sie ausstellen möchten, beraten wurden! +BearerTokenAuthorityGroups: Token-Authorität (Gruppen) +BearerTokenAuthorityGroupsTip: Die primären Benutzer:innen aller angegebenen Gruppen müssen Zugriff auf eine Route haben, damit das Token den Zugriff auf diese Route erlaubt. +BearerTokenAuthorityGroupMissing: Gruppe wird benötigt +BearerTokenAuthorityUsers: Token-Authorität (Benutzer:innen) +BearerTokenAuthorityUsersTip: Alle angegebenen Benutzer:innen müssen Zugriff auf eine Route haben, damit das Token den Zugriff auf diese Route erlaubt. Der Aussteller muss, bei mit diesem Benutzerinterface erzeugten Tokens, auch Zugriff auf die Route haben (er wird automatisch der Menge von Token-Authoritäten hinzugefügt). +BearerTokenAuthorityUnknownUser email@UserEmail: Nutzer:in mit E-Mail #{email} ist dem System nicht bekannt +BearerTokenRoutes: Erlaubte Routen +BearerTokenRoutesTip: Wenn die Token-Validität nach Routen eingeschränkt und keine Routen angegeben werden, ist das Token nirgends gültig. +BearerTokenRouteMissing: Route wird benötigt +BearerTokenRestrictions: Routen-spezifische Einschränkungen +BearerTokenRestrictRoutes: Token-Validität nach Routen einschränken +BearerTokenRestrictRoute: Route +BearerTokenRestrictValue: Einschränkung +BearerTokenAdditionalAuth: Zusätzliche Authorisierung +BearerTokenAdditionalAuthTip: Wird hier nichts angegeben, werden keine Einschränkungen daran gesetzt, wer das Token verwenden kann. Es reicht dann der Besitz. +BearerTokenOverrideExpiration: Ablaufzeitpunkt überschreiben +BearerTokenExpires: Ablaufzeitpunkt +BearerTokenExpiresTip: Wird der Ablaufzeitpunkt überschrieben und kein Ablaufzeitpunkt angegeben, ist das Token für immer gültig. +BearerTokenOverrideStart: Startzeitpunkt +BearerTokenOverrideStartTip: Wird kein Startzeitpunkt angegeben, wird bei Verwendung des Tokens nur der Ablaufzeitpunkt überprüft. +HeadingAdminTokens: Tokens ausstellen + +#templates adminFeautures +StudyFeaturesDegrees: Abschlüsse +StudyFeaturesTerms: Studiengänge +StudyFeaturesNameCandidates: Namens-Kandidat:innen +StudyFeaturesParentCandidates: Kandidat:innen für Unterstudiengänge +StudyFeaturesStandaloneCandidates: Kandidat:inen für Einzelstudiengänge +StudyFeatureNameInference: Studiengangschlüssel-Inferenz +StudyFeatureParentInference: Unterstudiengang-Inferenz +StudyFeatureInferenceNoNameConflicts: Keine Konflikte beobachtet +StudyFeatureInferenceNameConflictsHeading: Studiengangseinträge mit beobachteten Konflikten diff --git a/messages/uniworx/uniworx_new/admin/en-eu.msg b/messages/uniworx/uniworx_new/admin/en-eu.msg new file mode 100644 index 000000000..81f920df7 --- /dev/null +++ b/messages/uniworx/uniworx_new/admin/en-eu.msg @@ -0,0 +1,75 @@ +TestDownloadMaxSize: Maximum filesize +TestDownloadMode: Mode +HeadingAdminCrontab: Crontab +AdminInstanceId: Instance id +AdminCrontabNotGenerated: Crontab not (yet) generated +CronMatchAsap: ASAP +CronMatchNone: Never +ErrMsgCiphertext: Encrypted error message +AmbiguousNameCandidatesRemoved n: Successfully removed #{n} ambiguous #{pluralEN n "candidate" "candidates"} +RedundantNameCandidatesRemoved n: Successfully removed #{n} rendundant #{pluralEN n "name-candidate" "name-candidates"} +StudyFeatureConflict: Observed conflicts in field mapping +NameCandidatesInferred n: Successfully inferred #{n} field #{pluralEN n "mapping" "mappings"} +NoNameCandidatesInferred: No new name-mappings inferred +AllNameIncidencesDeleted: Successfully deleted all name observations +AllParentIncidencesDeleted: Successfully deleted all parent-relation observations +AllStandaloneIncidencesDeleted: Successfully deleted all standalone observations +IncidencesDeleted n: Successfully deleted #{show n} #{pluralEN n "observation" "observations"} +RedundantParentCandidatesRemoved n: Successfully removed #{n} rendundant #{pluralEN n "parent-candidate" "parent-candidates"} +RedundantStandaloneCandidatesRemoved n: Successfully removed #{n} rendundant #{pluralEN n "standalone-candidate" "standalone-candidates"} +ParentCandidatesInferred n: Successfully inferred #{n} field #{pluralEN n "parent-relation" "parent-reliations"} +NoParentCandidatesInferred: No new parent-relations inferred +StudyDegreeChangeSuccess: Successfully updated degrees +StudyTermsShort: Field shorthand +StudyTermsChangeSuccess: Successfully updated fields of study +StudyCandidateIncidence: Synchronisation +StudyTermIsNew: New +AdminFeaturesHeading: Features of study +StudyTermsParentMissing: Parent is required +GenericKey: Key +StudySubTermsParentKey: Parent +StudySubTermsParentName: Parent-Name +GenericIsNew: New +GenericHasConflict: Conflict +StudyTermsKey: Field key +StudyTermsName: Field of study +StudyTermsDefaultDegree: Default degree +StudyTermsDefaultFieldType: Default type +StudySubTermsChildKey: Child +StudySubTermsChildName: Child-Name +MailTestFormEmail: Email address +MailTestFormLanguages: Language settings +TestDownload: Download test +BearerTokenUsageWarning: Using this interface you are able to encode essentially arbitrary permissions inte bearer tokens. This allows you to freely hand permissions off arbitrarily and without relevant restrictions. Only use this interface if you have discussed the consequences of the specific token, that you want to issue, with an experienced developer! +BearerTokenAuthorityGroups: Authority (groups) +BearerTokenAuthorityGroupsTip: All primary users of the groups listed here need to have the requisite permissions to access a route in order for the created token to grant permission to do so as well. +BearerTokenAuthorityGroupMissing: Group is required +BearerTokenAuthorityUsers: Authority (users +BearerTokenAuthorityUsersTip: All users listed here need to have the requisite permissions to access a route in order for the created token to grant permission to do so as well. The user issuing the token using this interface also needs to have permission to access that route (they are automatically added to the list of authorities). +BearerTokenAuthorityUnknownUser email: Could not find any user with email #{email} +BearerTokenRoutes: Permitted routes +BearerTokenRoutesTip: If the token is restricted to certain routes and no routes are listed, the token is valid nowhere. +BearerTokenRouteMissing: Route is required +BearerTokenRestrictions: Route-specific restrictions +BearerTokenRestrictRoutes: Restrict token to certain routes +BearerTokenRestrictRoute: Route +BearerTokenRestrictValue: Restriction +BearerTokenAdditionalAuth: Additional authorisation +BearerTokenAdditionalAuthTip: If nothing is entered, no additional authorisation will be performed when the token is used. Mere posession of the token will be sufficient. +BearerTokenOverrideExpiration: Override expiration time +BearerTokenExpires: Expiration time +BearerTokenExpiresTip: If no expiration time is given, the token will not expire. It will be valid forever. +BearerTokenOverrideStart: Start time +BearerTokenOverrideStartTip: If no start time is given, only the expiration time will be checked when the token is used. +HeadingAdminTokens: Issue tokens + +#templates adminfeatures +StudyFeaturesDegrees: Degrees +StudyFeaturesTerms: Terms of Study +StudyFeaturesNameCandidates: Name candidates +StudyFeaturesParentCandidates: Parent candidates +StudyFeaturesStandaloneCandidates: Standalone candidates +StudyFeatureNameInference: Infer field of study mapping +StudyFeatureParentInference: Infer field of study parent relation +StudyFeatureInferenceNoNameConflicts: No observed conflicts +StudyFeatureInferenceNameConflictsHeading: Fields of study with observed conflicts diff --git a/src/Foundation/I18n.hs b/src/Foundation/I18n.hs index d3b017374..a3246f1ed 100644 --- a/src/Foundation/I18n.hs +++ b/src/Foundation/I18n.hs @@ -6,7 +6,7 @@ module Foundation.I18n , UniWorXMessage(..), UniWorXTestMessage(..), UniWorXSettingsMessage(..) , UniWorXHelpMessage(..), UniWorXNavigationMessage(..), UniWorXWorkflowMessage(..) , UniWorXCourseMessage(..), UniWorXAllocationMessage(..), UniWorXExamMessage(..) - , UniWorXSheetMessage(..) + , UniWorXSheetMessage(..), UniWorXAdminMessage(..) , ShortTermIdentifier(..) , MsgLanguage(..) , ShortSex(..) @@ -144,6 +144,7 @@ mkMessageAddition ''UniWorX "Course" "messages/uniworx/uniworx_new/courses" "de- mkMessageAddition ''UniWorX "Allocation" "messages/uniworx/uniworx_new/allocation" "de-de-formal" mkMessageAddition ''UniWorX "Exam" "messages/uniworx/uniworx_new/exam" "de-de-formal" mkMessageAddition ''UniWorX "Sheet" "messages/uniworx/uniworx_new/sheet" "de-de-formal" +mkMessageAddition ''UniWorX "Admin" "messages/uniworx/uniworx_new/admin" "de-de-formal" mkMessageVariant ''UniWorX ''CampusMessage "messages/auth/campus" "de" mkMessageVariant ''UniWorX ''DummyMessage "messages/auth/dummy" "de" mkMessageVariant ''UniWorX ''PWHashMessage "messages/auth/pw-hash" "de" diff --git a/src/Handler/Admin/Crontab.hs b/src/Handler/Admin/Crontab.hs index 2f83e2eaf..45ee1ab61 100644 --- a/src/Handler/Admin/Crontab.hs +++ b/src/Handler/Admin/Crontab.hs @@ -56,7 +56,7 @@ getAdminCrontabR = do #{toPathPiece t}
-
_{MsgInstanceId} +
_{MsgAdminInstanceId}
#{UUID.toText instanceId}
$maybe (genTime, crontab) <- mCrontab diff --git a/src/Handler/Admin/StudyFeatures.hs b/src/Handler/Admin/StudyFeatures.hs index 9241198d7..798109d07 100644 --- a/src/Handler/Admin/StudyFeatures.hs +++ b/src/Handler/Admin/StudyFeatures.hs @@ -329,8 +329,8 @@ postAdminFeaturesR = do dbtProj = return dbtColonnade = formColonnade $ mconcat [ sortable (Just "key") (i18nCell MsgGenericKey) (numCell . view (_dbrOutput . _entityVal . _studyDegreeKey)) - , sortable (Just "name") (i18nCell MsgDegreeName) (textInputCell _1 (_dbrOutput . _entityVal . _studyDegreeName) (_dbrOutput . _entityKey)) - , sortable (Just "short") (i18nCell MsgDegreeShort) (textInputCell _2 (_dbrOutput . _entityVal . _studyDegreeShorthand) (_dbrOutput . _entityKey)) + , sortable (Just "name") (i18nCell MsgTableDegreeName) (textInputCell _1 (_dbrOutput . _entityVal . _studyDegreeName) (_dbrOutput . _entityKey)) + , sortable (Just "short") (i18nCell MsgTableDegreeShort) (textInputCell _2 (_dbrOutput . _entityVal . _studyDegreeShorthand) (_dbrOutput . _entityKey)) ] dbtSorting = Map.fromList [ ("key" , SortColumn (E.^. StudyDegreeKey)) diff --git a/src/Handler/Utils/Table/Columns.hs b/src/Handler/Utils/Table/Columns.hs index 82f72d2ed..7ef1c215e 100644 --- a/src/Handler/Utils/Table/Columns.hs +++ b/src/Handler/Utils/Table/Columns.hs @@ -757,7 +757,7 @@ fltrFieldUI mPrev = colDegreeShort :: (IsDBTable m c, HasStudyDegree x) => Getting (Leftmost x) a x -> Colonnade Sortable a (DBCell m c) -colDegreeShort terms = sortable (Just "degree-short") (i18nCell MsgDegreeShort) $ maybe mempty cellHasDegreeShort . firstOf terms +colDegreeShort terms = sortable (Just "degree-short") (i18nCell MsgTableDegreeShort) $ maybe mempty cellHasDegreeShort . firstOf terms sortDegreeShort :: IsString d => (t -> E.SqlExpr (Maybe (Entity StudyDegree))) -> (d, SortColumn t r') sortDegreeShort queryTerms = ("degree-short", SortColumn $ queryTerms >>> (E.?. StudyDegreeShorthand)) @@ -777,7 +777,7 @@ fltrDegree queryFeatures = ( "degree" fltrDegreeUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) fltrDegreeUI mPrev = - prismAForm (singletonFilter "degree") mPrev $ aopt textField (fslI MsgDegreeName) + prismAForm (singletonFilter "degree") mPrev $ aopt textField (fslI MsgTableDegreeName) colStudyFeatures :: OpticColonnade UserTableStudyFeatures @@ -821,7 +821,7 @@ fltrRelevantStudyFeaturesDegree queryTermUser = singletonMap "features-degree" . fltrRelevantStudyFeaturesDegreeUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) fltrRelevantStudyFeaturesDegreeUI mPrev = - prismAForm (singletonFilter "features-degree") mPrev $ aopt textField (fslI MsgDegreeName) + prismAForm (singletonFilter "features-degree") mPrev $ aopt textField (fslI MsgTableDegreeName) fltrRelevantStudyFeaturesSemester :: OpticFilterColumn' t (Set Text) (E.SqlExpr (E.Value TermId), E.SqlExpr (E.Value UserId)) fltrRelevantStudyFeaturesSemester queryTermUser = singletonMap "features-semester" . FilterColumn $ \t criterias ->