Merge branch 'master' into fradrive/lms-type-refactor
This commit is contained in:
commit
05b807a49a
3
.gitignore
vendored
3
.gitignore
vendored
@ -50,4 +50,5 @@ tunnel.log
|
||||
.develop.env
|
||||
**/result
|
||||
**/result-*
|
||||
.develop.cmd
|
||||
.develop.cmd
|
||||
/.vscode
|
||||
35
CHANGELOG.md
35
CHANGELOG.md
@ -2,6 +2,41 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||
|
||||
## [27.4.11](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.10...v27.4.11) (2023-06-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **course:** fix [#28](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/28) by allowing course deletion with inactive participants only ([9dfd91b](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/9dfd91b2f864424cf940259890afb8bf8cb0fdcf))
|
||||
* **letter:** renewal reminder and renewal idents switched ([064b984](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/064b984945288172c094485d8d3622d196333e0e))
|
||||
|
||||
## [27.4.10](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.9...v27.4.10) (2023-06-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **lint:** remove redundant parenthesis ([4956e6b](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/4956e6bf57458a5e76efc582f6127b84a055c4de))
|
||||
* **test:** resepct uniqueness for ldap primary keys ([d1badf1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/d1badf16fc9c45ee547ec1e3fe677e16645683f0))
|
||||
* **test:** resepect uniqueness for ldap, 2nd attempt ([d06448a](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/d06448a4a8c194368c077d5ca7bf8d0feca86d60))
|
||||
|
||||
## [27.4.9](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.8...v27.4.9) (2023-06-07)
|
||||
|
||||
## [27.4.8](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.7...v27.4.8) (2023-06-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **qualification:** prevent qualification mixups ([88d4356](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/88d43560ae8de1480502914d9c95d6376a3c68cc))
|
||||
* **tutorial:** template moving works now ([b982e59](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/b982e59b630fbdb3fe8f37c979de8e8726b78ea9))
|
||||
|
||||
## [27.4.7](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.6...v27.4.7) (2023-05-29)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **build:** linter complains ([ac57b1c](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/ac57b1cd32909c8314f3a3b15431d280911af643))
|
||||
* **qualifications:** fix [#78](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/78) block/unblock no longer deletes company association ([3cb66c6](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/3cb66c6211b9f15127d88f448557acb4a3a2dd5c))
|
||||
|
||||
## [27.4.6](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.5...v27.4.6) (2023-05-24)
|
||||
|
||||
## [27.4.5](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.4...v27.4.5) (2023-05-23)
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
FAQNoCampusAccount: Ich habe keine Fraport AG Kennung (Büko-Login); kann ich trotzdem Zugang zum System erhalten?
|
||||
FAQForgottenPassword: Ich habe mein Passwort vergessen
|
||||
FAQCampusCantLogin: Ich kann mich mit meiner Fraport AG Kennung (Büko-Login) nicht anmelden
|
||||
FAQCourseCorrectorsTutors: Wie kann ich Tutoren oder Korrektoren für meinen Kurs konfigurieren?
|
||||
FAQNotLecturerHowToCreateCourses: Wie kann ich einen neuen Kurs anlegen?
|
||||
FAQCourseCorrectorsTutors: Wie kann ich Ausbilder oder Korrektoren für meine Kursart konfigurieren?
|
||||
FAQNotLecturerHowToCreateCourses: Wie kann ich eine neue Kursart anlegen?
|
||||
FAQExamPoints: Warum kann ich bei meiner Klausur keine Punkte eintragen?
|
||||
FAQInvalidCredentialsAdAccountDisabled: Ich kann mich nicht anmelden und bekomme die Meldung „Benutzereintrag gesperrt“
|
||||
@ -5,7 +5,7 @@
|
||||
FAQNoCampusAccount: I don't have Fraport AG credentials (Büko login); can I still get access?
|
||||
FAQForgottenPassword: I have forgotten my password
|
||||
FAQCampusCantLogin: I can't log in using my Fraport AG credentials (Büko login)
|
||||
FAQCourseCorrectorsTutors: How can I add tutors or correctors to my course?
|
||||
FAQCourseCorrectorsTutors: How can I add instructors or correctors to my course?
|
||||
FAQNotLecturerHowToCreateCourses: How can I create new courses?
|
||||
FAQExamPoints: Why can't I enter achievements for my exam as points?
|
||||
FAQInvalidCredentialsAdAccountDisabled: I can't log in and am instead given the message “Account disabled”
|
||||
@ -3,8 +3,8 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
CorByProportionOnly proportion@Rational: #{rationalToFixed3 proportion} Anteile
|
||||
CorByProportionIncludingTutorial proportion@Rational: #{rationalToFixed3 proportion} Anteile - Tutorium
|
||||
CorByProportionExcludingTutorial proportion@Rational: #{rationalToFixed3 proportion} Anteile + Tutorium
|
||||
CorByProportionIncludingTutorial proportion@Rational: #{rationalToFixed3 proportion} Anteile - Kurs
|
||||
CorByProportionExcludingTutorial proportion@Rational: #{rationalToFixed3 proportion} Anteile + Kurs
|
||||
ExamPassed: Bestanden
|
||||
ExamNotPassed: Nicht bestanden
|
||||
I18nExamResultNoShow: Nicht erschienen
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
CorByProportionOnly proportion: #{rationalToFixed3 proportion} parts
|
||||
CorByProportionIncludingTutorial proportion: #{rationalToFixed3 proportion} parts - tutorials
|
||||
CorByProportionExcludingTutorial proportion: #{rationalToFixed3 proportion} parts + tutorials
|
||||
CorByProportionIncludingTutorial proportion: #{rationalToFixed3 proportion} parts - courses
|
||||
CorByProportionExcludingTutorial proportion: #{rationalToFixed3 proportion} parts + courses
|
||||
ExamPassed: Passed
|
||||
ExamNotPassed: Failed
|
||||
I18nExamResultNoShow: Not present
|
||||
|
||||
@ -21,16 +21,16 @@ UnauthorizedTokenInvalidImpersonation: Ihr Authorisierungs-Token enthält die An
|
||||
UnauthorizedToken404: Authorisierungs-Tokens können nicht auf Fehlerseiten ausgewertet werden.
|
||||
UnauthorizedSupervisor: Sie sind kein Ansprechpartner:in für diesen Benutzer:in.
|
||||
UnauthorizedSiteAdmin: Sie sind nicht System-weiter Administrator:in.
|
||||
UnauthorizedSchoolAdmin: Sie sind nicht als Administrator:in für dieses Institut eingetragen.
|
||||
UnauthorizedAdminEscalation: Sie sind nicht Administrator:in für alle Institute, für die dieser Nutzer/diese Nutzerin Administrator:in oder Veranstalter:in ist.
|
||||
UnauthorizedSchoolAdmin: Sie sind nicht als Administrator:in für diesen Bereich eingetragen.
|
||||
UnauthorizedAdminEscalation: Sie sind nicht Administrator:in für alle Bereiche, für die dieser Nutzer/diese Nutzerin Administrator:in oder Veranstalter:in ist.
|
||||
UnauthorizedExamOffice: Sie sind nicht mit Prüfungsverwaltung beauftragt.
|
||||
UnauthorizedExamExamOffice: Es existieren keine Prüfungsergebnisse für Nutzer:innen, für die Sie mit der Prüfungsverwaltung beauftragt sind.
|
||||
UnauthorizedSchoolExamOffice: Sie sind nicht mit Prüfungsverwaltung für dieses Institut beauftragt.
|
||||
UnauthorizedSchoolExamOffice: Sie sind nicht mit Prüfungsverwaltung für diesen Bereich beauftragt.
|
||||
UnauthorizedSystemExamOffice: Sie sind nicht mit systemweiter Prüfungsverwaltung beauftragt.
|
||||
UnauthorizedSystemPrinter: Sie sind nicht mit systemweitem Druck und Briefversand beauftragt.
|
||||
UnauthorizedExternalExamExamOffice: Es existieren keine Prüfungsergebnisse für Nutzer:innen, für die Sie mit der Prüfungsverwaltung beauftragt sind.
|
||||
UnauthorizedEvaluation: Sie sind nicht mit der Kursumfragenverwaltung beauftragt.
|
||||
UnauthorizedSchoolLecturer: Sie sind nicht als Veranstalter:in für dieses Institut eingetragen.
|
||||
UnauthorizedEvaluation: Sie sind nicht mit der Kursartumfragenverwaltung beauftragt.
|
||||
UnauthorizedSchoolLecturer: Sie sind nicht als Veranstalter:in für diesen Bereich eingetragen.
|
||||
UnauthorizedLecturer: Sie sind nicht als Veranstalter:in für diese Veranstaltung eingetragen.
|
||||
UnauthorizedCorrector: Sie sind nicht als Korrektor:in für diese Veranstaltung eingetragen.
|
||||
UnauthorizedSheetCorrector: Sie sind nicht als Korrektor:in für dieses Übungsblatt eingetragen.
|
||||
@ -44,11 +44,11 @@ UnauthorizedExamOccurrenceRegistration: Anmeldung zur Prüfung erfolgt nicht ink
|
||||
UnauthorizedExternalExamResult: Sie haben keine Ergebnisse in dieser Prüfung.
|
||||
UnauthorizedParticipant: Angegebener Benutzer/Angegebene Benutzerin ist nicht als Teilnehmer:in dieser Veranstaltung registriert.
|
||||
UnauthorizedParticipantSelf: Sie sind nicht Teilnehmer:in dieser Veranstaltung.
|
||||
UnauthorizedCourseTime: Dieser Kurs ist momentan nicht freigegeben.
|
||||
UnauthorizedCourseRegistrationTime: Dieser Kurs erlaubt momentan keine Anmeldungen.
|
||||
UnauthorizedCourseTime: Diese Kursart ist momentan nicht freigegeben.
|
||||
UnauthorizedCourseRegistrationTime: Diese Kursart erlaubt momentan keine Anmeldungen.
|
||||
UnauthorizedSheetTime: Dieses Übungsblatt ist momentan nicht freigegeben.
|
||||
UnauthorizedMaterialTime: Dieses Material ist momentan nicht freigegeben.
|
||||
UnauthorizedTutorialTime: Dieses Tutorium erlaubt momentan keine Anmeldungen.
|
||||
UnauthorizedTutorialTime: Dieser Kurs erlaubt momentan keine Anmeldungen.
|
||||
UnauthorizedCourseNewsTime: Diese Nachricht ist momentan nicht freigegeben.
|
||||
UnauthorizedExamTime: Diese Prüfung ist momentan nicht freigegeben.
|
||||
UnauthorizedSubmissionOwner: Sie sind an dieser Abgabe nicht beteiligt.
|
||||
@ -65,11 +65,11 @@ UnauthorizedSystemMessageTime: Diese Systemnachricht ist noch nicht oder nicht m
|
||||
UnauthorizedSystemMessageAuth: Diese Systemnachricht ist nur für angemeldete Benutzer:innen einsehbar.
|
||||
UnknownAuthPredicate tag@String: Authorisierungsprädikat "#{tag}" ist dem System nicht bekannt
|
||||
UnauthorizedSelf: Aktueller Nutzer/Aktuelle Nutzerin ist nicht angegebener Benutzer/angegebene Benutzerin.
|
||||
UnauthorizedTutorialTutor: Sie sind nicht Tutor:in für dieses Tutorium.
|
||||
UnauthorizedTutorialTutorControl: Tutor:innen dürfen dieses Tutorium nicht editieren.
|
||||
UnauthorizedCourseTutor: Sie sind nicht Tutor:in für diesen Kurs.
|
||||
UnauthorizedTutor: Sie sind nicht Tutor:in.
|
||||
UnauthorizedTutorialRegisterGroup: Sie sind bereits in einem Tutorium mit derselben Registrierungs-Gruppe.
|
||||
UnauthorizedTutorialTutor: Sie sind nicht Ausbilder:in für diesen Kurs.
|
||||
UnauthorizedTutorialTutorControl: Ausbilder:innen dürfen diesen Kurs nicht editieren.
|
||||
UnauthorizedCourseTutor: Sie sind nicht Ausbilder:in für diese Kursart.
|
||||
UnauthorizedTutor: Sie sind nicht Ausbilder:in.
|
||||
UnauthorizedTutorialRegisterGroup: Sie sind bereits in einem Kurs mit derselben Registrierungs-Gruppe eingetragen.
|
||||
UnauthorizedLDAP: Angegebener Nutzer/Angegebene Nutzerin meldet sich nicht mit Fraport Login an.
|
||||
UnauthorizedPWHash: Angegebener Nutzer/Angegebene Nutzerin meldet sich nicht mit FRADrive-Kennung an.
|
||||
UnauthorizedExternalExamListNotEmpty: Liste von externen Prüfungen ist nicht leer
|
||||
@ -91,10 +91,10 @@ WorkflowRoleUserMismatch: Sie sind nicht einer der vom Workflow geforderten Benu
|
||||
WorkflowRoleAlreadyInitiated: Dieser Workflow wurde bereits initiiert
|
||||
WorkflowRoleNoSuchWorkflowWorkflow: Der angegebene Workflow konnte nicht gefunden werden
|
||||
WorkflowRoleNoPayload: Dieser Workflow enthält keine Daten
|
||||
CourseNoCapacity: In diesem Kurs sind keine Plätze mehr frei.
|
||||
TutorialNoCapacity: In dieser Übung sind keine Plätze mehr frei.
|
||||
CourseNoCapacity: In dieser Kursart sind keine Plätze mehr frei.
|
||||
TutorialNoCapacity: In diesem Kurs sind keine Plätze mehr frei.
|
||||
ExamOccurrenceNoCapacity: Zu diesem Termin/Raum sind keine Plätze mehr frei.
|
||||
CourseNotEmpty: In diesem Kurs sind momentan Teilnehmer:innen angemeldet.
|
||||
CourseNotEmpty: In dieser Kursart sind momentan Teilnehmer:innen angemeldet.
|
||||
|
||||
LDAPLoginTitle: Fraport Login für interne und externe Nutzer
|
||||
PWHashLoginTitle: Spezieller Funktionsnutzer Login
|
||||
@ -108,7 +108,7 @@ CampusUserInvalidGivenName: Konnte anhand des Fraport Büko-Logins keinen Vornam
|
||||
CampusUserInvalidSurname: Konnte anhand des Fraport Büko-Logins keinen Nachname ermitteln
|
||||
CampusUserInvalidTitle: Konnte anhand des Fraport Büko-Logins keinen akademischen Titel ermitteln
|
||||
CampusUserInvalidFeaturesOfStudy parseErr@Text: Konnte anhand des Fraport Büko-Logins keine Studiengänge ermitteln
|
||||
CampusUserInvalidAssociatedSchools parseErr@Text: Konnte anhand des Fraport Büko-Logins keine Institute ermitteln
|
||||
CampusUserInvalidAssociatedSchools parseErr@Text: Konnte anhand des Fraport Büko-Logins keine Bereiche ermitteln
|
||||
InvalidCredentialsADNoSuchObject: Benutzereintrag existiert nicht
|
||||
InvalidCredentialsADLogonFailure: Ungültiges Passwort
|
||||
InvalidCredentialsADAccountRestriction: Beschränkungen des Fraport Accounts verhindern Login
|
||||
|
||||
@ -24,31 +24,31 @@ UnauthorizedSiteAdmin: You are no system-wide administrator.
|
||||
UnauthorizedSchoolAdmin: You are no administrator for this department.
|
||||
UnauthorizedAdminEscalation: You aren't an administrator for all departments for which this user is an administrator.
|
||||
UnauthorizedExamOffice: You are not part of an exam office.
|
||||
UnauthorizedEvaluation: You are not charged with course evaluation.
|
||||
UnauthorizedEvaluation: You are not charged with course type evaluation.
|
||||
UnauthorizedExamExamOffice: You are not part of the appropriate exam office for any of the participants of this exam.
|
||||
UnauthorizedSchoolExamOffice: You are not part of an exam office for this school.
|
||||
UnauthorizedSystemExamOffice: You are not charged with system wide exam administration.
|
||||
UnauthorizedSystemPrinter: You are not charged with system wide letter printing.
|
||||
UnauthorizedExternalExamExamOffice: You are not part of the appropriate exam office for any of the participants of this exam.
|
||||
UnauthorizedSchoolLecturer: You are no lecturer for this department.
|
||||
UnauthorizedLecturer: You are no administrator for this course.
|
||||
UnauthorizedCorrector: You are no sheet corrector for this course.
|
||||
UnauthorizedSchoolLecturer: You are no course administrator for this department.
|
||||
UnauthorizedLecturer: You are no administrator for this course type.
|
||||
UnauthorizedCorrector: You are no sheet corrector for this course type.
|
||||
UnauthorizedSheetCorrector: You are no corrector for this sheet.
|
||||
UnauthorizedExamCorrector: You are no corrector for this exam.
|
||||
UnauthorizedCorrectorAny: You are no corrector for any course.
|
||||
UnauthorizedRegistered: You are no participant in this course.
|
||||
UnauthorizedCorrectorAny: You are no corrector for any course type.
|
||||
UnauthorizedRegistered: You are no participant in this course type.
|
||||
UnauthorizedRegisteredExam: You are not registered for this exam.
|
||||
UnauthorizedRegisteredAnyExam: You are not registered for an exam.
|
||||
UnauthorizedExamResult: You have no results in this exam.
|
||||
UnauthorizedExamOccurrenceRegistration: Registration for exam is not done including occurrence/room.
|
||||
UnauthorizedExternalExamResult: You have no results in this exam.
|
||||
UnauthorizedParticipant: The specified user is no participant of this course.
|
||||
UnauthorizedParticipantSelf: You are no participant of this course.
|
||||
UnauthorizedCourseTime: This course is not currently available.
|
||||
UnauthorizedCourseRegistrationTime: This course does not currently allow enrollment.
|
||||
UnauthorizedParticipant: The specified user is no participant of this course type.
|
||||
UnauthorizedParticipantSelf: You are no participant of this course type.
|
||||
UnauthorizedCourseTime: This course type is not currently available.
|
||||
UnauthorizedCourseRegistrationTime: This course type does not currently allow enrollment.
|
||||
UnauthorizedSheetTime: This sheet is not currently available.
|
||||
UnauthorizedMaterialTime: This course material is not currently available.
|
||||
UnauthorizedTutorialTime: This tutorial does not currently allow registration.
|
||||
UnauthorizedMaterialTime: This course type material is not currently available.
|
||||
UnauthorizedTutorialTime: This course does not currently allow registration.
|
||||
UnauthorizedCourseNewsTime: This news item is not currently available.
|
||||
UnauthorizedExamTime: This exam is not currently available.
|
||||
UnauthorizedSubmissionOwner: You are no submittor for this submission.
|
||||
@ -59,17 +59,17 @@ UnauthorizedUserSubmission: Users may not directly submit for this exercise shee
|
||||
UnauthorizedCorrectorSubmission: Correctors may not create submissions for this exercise sheet.
|
||||
UnauthorizedCorrectionAnonymous: Correction is not anonymised.
|
||||
DeprecatedRoute: This view is deprecated and will be removed.
|
||||
UnfreeMaterials: Course material are not publicly accessable.
|
||||
UnfreeMaterials: Course type material are not publicly accessable.
|
||||
UnauthorizedWrite: You do not have the write permission necessary to perform this action
|
||||
UnauthorizedSystemMessageTime: This system-message is not currently available.
|
||||
UnauthorizedSystemMessageAuth: This system-message is only available to logged in users.
|
||||
UnknownAuthPredicate tag: Auth predicate “#{tag}” is unknown
|
||||
UnauthorizedSelf: You are not the specified user.
|
||||
UnauthorizedTutorialTutor: You are no tutor for this tutorial.
|
||||
UnauthorizedTutorialTutorControl: Tutors may not edit this tutorial.
|
||||
UnauthorizedCourseTutor: You are no tutor for this course.
|
||||
UnauthorizedTutor: You are no tutor.
|
||||
UnauthorizedTutorialRegisterGroup: You are already registered for a tutorial with the same registration group.
|
||||
UnauthorizedTutorialTutor: You are no instructor for this course.
|
||||
UnauthorizedTutorialTutorControl: Instructors may not edit this course.
|
||||
UnauthorizedCourseTutor: You are no instructor for this course.
|
||||
UnauthorizedTutor: You are no instructor.
|
||||
UnauthorizedTutorialRegisterGroup: You are already registered for a course with the same registration group.
|
||||
UnauthorizedLDAP: Specified user does not log in with their Fraport password.
|
||||
UnauthorizedPWHash: Specified user does not log in with an FRADrive-account.
|
||||
UnauthorizedExternalExamListNotEmpty: List of external exams is not empty
|
||||
@ -92,8 +92,8 @@ WorkflowRoleAlreadyInitiated: This workflow was already initiated
|
||||
WorkflowRoleNoSuchWorkflowWorkflow: The given workflow could not be found
|
||||
WorkflowRoleNoPayload: This workflow does not contain any data
|
||||
|
||||
CourseNoCapacity: Course has reached maximum capacity
|
||||
TutorialNoCapacity: Tutorial has reached maximum capacity
|
||||
CourseNoCapacity: Course type has reached maximum capacity
|
||||
TutorialNoCapacity: Course has reached maximum capacity
|
||||
ExamOccurrenceNoCapacity: Occurrence/Room has reached maximum capacity
|
||||
CourseNotEmpty: There are currently no participants enrolled for this course.
|
||||
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
FilterCourse: Kurs
|
||||
FilterCourse: Kursart
|
||||
FilterCourseShort: Kürzel
|
||||
FilterTerm !ident-ok: Semester
|
||||
FilterCourseSchoolShort: Institut
|
||||
FilterTerm !ident-ok: Jahr
|
||||
FilterCourseSchoolShort: Bereich
|
||||
FilterRegistered: Angemeldet
|
||||
FilterCourseSearch: Volltext-Suche
|
||||
FilterCourseSearchShorthand: Kürzel-Suche
|
||||
@ -15,7 +15,7 @@ FilterCourseRegisterOpen: Anmeldung möglich
|
||||
CourseRegistered: Angemeldet
|
||||
CourseRegistration: Anmeldung
|
||||
CourseDescription: Beschreibung
|
||||
CommCourseHeading: Kursmitteilung
|
||||
CommCourseHeading: Kursartmitteilung
|
||||
CourseLecturers: Kursverwalter:innen
|
||||
CourseLecturerEmail: E-Mail
|
||||
CourseLecturerAlreadyAdded: Diese:r Nutzer:in ist bereits als Kursverwalter:in eingetragen
|
||||
@ -23,29 +23,29 @@ CourseLecturerType: Rolle
|
||||
LecturerType: Rolle
|
||||
CourseLecturerRightsIdentical: Alle Sorten von Kursverwalter:innen haben identische Rechte.
|
||||
CourseAcceptSubstitutesUntil: Nachrücker:innen akzeptieren bis
|
||||
CourseAcceptSubstitutesUntilTip: Bis zu welchem Zeitpunkt sollen durch die Zentralanmeldung Nachrücker:innen diesem Kurs zugewiesen werden? Wird kein Datum angegeben werden nach der Initialen Verteilung nie Nachrücker:innen zugewiesen. Diese Frist sollte nicht willkürlich früh bzw. nicht gesetzt werden, um für die Studierenden keine unnötige Beschränkung darzustellen. Geeignet ist z.B. bei einem Seminar wenige Stunden vor dem ersten Treffen zum Verteilen der Themen.
|
||||
CourseAcceptSubstitutesUntilTip: Bis zu welchem Zeitpunkt sollen durch die Zentralanmeldung Nachrücker:innen dieser Kursart zugewiesen werden? Wird kein Datum angegeben werden nach der Initialen Verteilung nie Nachrücker:innen zugewiesen. Diese Frist sollte nicht willkürlich früh bzw. nicht gesetzt werden, um für die Studierenden keine unnötige Beschränkung darzustellen. Geeignet ist z.B. bei einem Seminar wenige Stunden vor dem ersten Treffen zum Verteilen der Themen.
|
||||
CourseDeregisterNoShow: „Nicht erschienen“ bei Abmeldung
|
||||
CourseDeregisterNoShowTip: Soll, wenn sich Teilnehmer:innen selbstständig abmelden, für alle Prüfungen dieses Kurses „nicht erschienen“ als Prüfungsleistung eingetragen werden? Dies geschieht einmalig bei der Abmeldung (sofern nicht bereits eine Prüfungsleistung existiert) und automatisch beim Anlegen von neuen Prüfungen.
|
||||
CourseSchool: Institut
|
||||
CourseSchoolMultipleTip: Es stehen für Sie mehrere Institute zur Auswahl. Stellen Sie bitte sicher, dass Sie das für den Kurs korrekte Institut wählen.
|
||||
CourseName: Kurstitel
|
||||
CourseDeregisterNoShowTip: Soll, wenn sich Teilnehmer:innen selbstständig abmelden, für alle Prüfungen dieser Kursart „nicht erschienen“ als Prüfungsleistung eingetragen werden? Dies geschieht einmalig bei der Abmeldung (sofern nicht bereits eine Prüfungsleistung existiert) und automatisch beim Anlegen von neuen Prüfungen.
|
||||
CourseSchool: Bereich
|
||||
CourseSchoolMultipleTip: Es stehen für Sie mehrere Bereiche zur Auswahl. Stellen Sie bitte sicher, dass Sie das für die Kursart korrekte Bereich wählen.
|
||||
CourseName: Kursarttitel
|
||||
CourseShorthand: Kürzel
|
||||
CourseShorthandUnique: Muss nur innerhalb Institut und Semester eindeutig sein. Wird verbatim in die Url der Kursseite übernommen.
|
||||
CourseSemester !ident-ok: Semester
|
||||
CourseShorthandUnique: Muss nur innerhalb Bereich und Jahr eindeutig sein. Wird verbatim in die Url der Kursartseite übernommen.
|
||||
CourseSemester !ident-ok: Jahr
|
||||
CourseDescriptionPlaceholder: Bitte mindestens die Modulbeschreibung angeben
|
||||
CourseHomepageExternal: Externe Homepage
|
||||
CourseSemesterMultipleTip: Es stehen für Sie aktuell mehrere Semester zur Auswahl. Stellen Sie bitte sicher, dass Sie das für den Kurs korrekte Semester wählen.
|
||||
CourseSemesterMultipleTip: Es stehen für Sie aktuell mehrere Jahre zur Auswahl. Stellen Sie bitte sicher, dass Sie das für die Kursart korrekte Jahr wählen.
|
||||
CourseHomepageExternalPlaceholder: Optionale externe URL
|
||||
CourseVisibleFrom: Sichtbar ab
|
||||
CourseVisibleTo: Sichtbar bis
|
||||
CourseVisibleFromTip: Ab diesem Zeitpunkt ist der Kurs für andere Nutzer:innen sichtbar. Ohne Datum ist der Kurs nie für andere Nutzer:innen sichtbar. Dozierende, Assistent:innen, Tutor:innen, Korrektor:innen, angemeldete Teilnehmer:innen sowie Bewerber:innen dieses Kurses sind nicht betroffen. Nimmt der Kurs an einer Zentralanmeldung teil wird die Kurssichtbarkeit während der Bewerbungsphase forciert.
|
||||
CourseVisibleToTip: Der Kurs ist ab "Sichtbar ab" bis zu diesem Zeitpunkt für andere Nutzer sichtbar. Ohne Datum bleibt ein sichtbarer Kurs unbegrenzt sichtbar.
|
||||
CourseMaterialFree: Das Kursmaterial ist ohne Anmeldung frei zugänglich
|
||||
CourseFormSectionRegistration: Anmeldung zum Kurs
|
||||
CourseVisibleFromTip: Ab diesem Zeitpunkt ist die Kursart für andere Nutzer:innen sichtbar. Ohne Datum ist die Kursart nie für andere Nutzer:innen sichtbar. Kursverwaltende, Assistent:innen, Ausbilder:innen, Korrektor:innen, angemeldete Teilnehmer:innen sowie Bewerber:innen dieser Kursart sind nicht betroffen. Nimmt die Kursart an einer Zentralanmeldung teil wird die Kursartsichtbarkeit während der Bewerbungsphase forciert.
|
||||
CourseVisibleToTip: Die Kursart ist ab "Sichtbar ab" bis zu diesem Zeitpunkt für andere Nutzer sichtbar. Ohne Datum bleibt ein sichtbare Kursart unbegrenzt sichtbar.
|
||||
CourseMaterialFree: Das Kursartmaterial ist ohne Anmeldung frei zugänglich
|
||||
CourseFormSectionRegistration: Anmeldung zur Kursart
|
||||
CourseFormSectionAdministration: Verwaltung
|
||||
CourseCapacity: Kapazität
|
||||
CourseCapacityTip: Anzahl erlaubter Kursanmeldungen, leer lassen für unbeschränkte Kurskapazität
|
||||
CourseSecretTip: Anmeldung zum Kurs erfordert Eingabe des Passworts, sofern gesetzt
|
||||
CourseCapacityTip: Anzahl erlaubter Kursanmeldungen, leer lassen für unbeschränkte Kursartkapazität
|
||||
CourseSecretTip: Anmeldung zur Kursart erfordert Eingabe des Passworts, sofern gesetzt
|
||||
CourseSecretFormat: beliebige Zeichenkette
|
||||
CourseSecretWrong: Falsches Passwort
|
||||
CourseSecret: Zugangspasswort
|
||||
@ -59,42 +59,43 @@ CourseVisibilityEndMustBeAfterStart: Ende des Sichtbarkeitszeitraums muss nach d
|
||||
CourseRegistrationEndMustBeAfterStart: Ende des Anmeldezeitraums muss nach dem Anfang liegen
|
||||
CourseDeregistrationEndMustBeAfterStart: Ende des Abmeldezeitraums muss nach dem Anfang des Anmeldezeitraums liegen
|
||||
CourseUserMustBeLecturer: Aktuelle:r Benutzer:in muss als Kursverwalter:in eingetragen sein
|
||||
CourseShorthandTooLong: Lange Kurskürzel können zu Problemen bei der Darstellung und der Kommunikation mit den Studierenden führen. Bitte wählen Sie ein weniger langes Kürzel, falls möglich.
|
||||
CourseNotAlwaysVisibleDuringRegistration: Um Studierenden über den gesamten Anmeldezeitraum hinweg die Anmeldung zum Kurs zu ermöglichen, sollte der Kurs auch über den gesamten Anmeldezeitraum hinweg sichtbar sein (dies ist aktuell nicht gegeben).
|
||||
NoSuchTerm tid@TermId: Semester #{tid} gibt es nicht.
|
||||
NoSuchSchool ssh@SchoolId: Institut #{ssh} gibt es nicht.
|
||||
NoSuchCourseShorthand csh@CourseShorthand: Kein Kurs mit Kürzel #{csh} bekannt.
|
||||
NoSuchCourse: Keinen passenden Kurs gefunden.
|
||||
CourseNewDupShort tid@TermId ssh@SchoolId csh@CourseShorthand: Kurs #{tid}-#{ssh}-#{csh} konnte nicht erstellt werden: Es gibt bereits einen anderen Kurs mit dem selben Kürzel oder Titel in diesem Semester und Institut.
|
||||
CourseShorthandTooLong: Lange Kursartkürzel können zu Problemen bei der Darstellung und der Kommunikation mit den Studierenden führen. Bitte wählen Sie ein weniger langes Kürzel, falls möglich.
|
||||
CourseNotAlwaysVisibleDuringRegistration: Um Studierenden über den gesamten Anmeldezeitraum hinweg die Anmeldung zur Kursart zu ermöglichen, sollte die Kursart auch über den gesamten Anmeldezeitraum hinweg sichtbar sein (dies ist aktuell nicht gegeben).
|
||||
NoSuchTerm tid@TermId: Jahr #{tid} gibt es nicht.
|
||||
NoSuchSchool ssh@SchoolId: Bereich #{ssh} gibt es nicht.
|
||||
NoSuchCourseShorthand csh@CourseShorthand: Keine Kursart mit Kürzel #{csh} bekannt.
|
||||
NoSuchCourse: Keine passende Kursart gefunden.
|
||||
CourseNewDupShort tid@TermId ssh@SchoolId csh@CourseShorthand: Kursart #{tid}-#{ssh}-#{csh} konnte nicht erstellt werden: Es gibt bereits einen andere Kursart mit dem selben Kürzel oder Titel in diesem Jahr und Bereich.
|
||||
CourseInvalidInput: Eingaben bitte korrigieren.
|
||||
CourseEditTitle: Kurs editieren/anlegen
|
||||
CourseEditOk tid@TermId ssh@SchoolId csh@CourseShorthand: Kurs #{tid}-#{ssh}-#{csh} wurde erfolgreich geändert.
|
||||
CourseEditDupShort tid@TermId ssh@SchoolId csh@CourseShorthand: Kurs #{tid}-#{ssh}-#{csh} konnte nicht geändert werden: Es gibt bereits einen anderen Kurs mit dem selben Kürzel oder Titel in diesem Semester und Institut.
|
||||
CourseLecturer: Dozent:in
|
||||
MailSubjectParticipantInvitation tid@TermId ssh@SchoolId csh@CourseShorthand: [#{tid}-#{ssh}-#{csh}] Einladung zur Kursteilnahme
|
||||
CourseParticipantInviteHeading courseName@Text: Einladung zum Kursteilnahmer für #{courseName}
|
||||
CourseParticipantInviteExplanation: Sie wurden eingeladen, an einem Kurs teilzunehmen.
|
||||
CourseEditTitle: Kursart editieren/anlegen
|
||||
CourseEditOk tid@TermId ssh@SchoolId csh@CourseShorthand: Kursart #{tid}-#{ssh}-#{csh} wurde erfolgreich geändert.
|
||||
CourseEditDupShort tid@TermId ssh@SchoolId csh@CourseShorthand: Kursart #{tid}-#{ssh}-#{csh} konnte nicht geändert werden: Es gibt bereits einen andere Kursart mit dem selben Kürzel oder Titel in diesem Jahr und Bereich.
|
||||
CourseLecturer: Kursverwalter:in
|
||||
MailSubjectParticipantInvitation tid@TermId ssh@SchoolId csh@CourseShorthand: [#{tid}-#{ssh}-#{csh}] Einladung zur Kursartteilnahme
|
||||
CourseParticipantInviteHeading courseName@Text: Einladung zum Kursartteilnahmer für #{courseName}
|
||||
CourseParticipantInviteExplanation: Sie wurden eingeladen, an einer Kursart teilzunehmen.
|
||||
CourseParticipantInviteField: Einzuladende E-Mail-Adressen
|
||||
CourseParticipantInvitationAccepted courseName@Text: Sie wurden als Teilnehmer:in für #{courseName} eingetragen
|
||||
CourseParticipantEnlistDirectly: Bekannte Nutzer:innen sofort als Teilnehmer:in eintragen
|
||||
CourseSubmissionGroup: Feste Abgabegruppe
|
||||
SubmissionGroupEmptyIsUnsetTip: Leer lassen um Benutzer:innen aus den jeweiligen Abgabegruppen ersatzlos zu entfernen
|
||||
CourseParticipantsRegisterHeading: Kursteilnehmer:innen hinzufügen
|
||||
CourseParticipantsRegisterActionAddParticipants: Personen zum Kurs anmelden
|
||||
CourseParticipantsRegisterActionAddTutorialMembers: Personen zu Kurs und Übungsgruppe anmelden
|
||||
CourseParticipantsRegisterUsersField: Zum Kurs anzumeldende Personen
|
||||
CourseParticipantsRegisterHeading: Kursartteilnehmer:innen hinzufügen
|
||||
CourseParticipantsRegisterActionAddParticipants: Personen zur Kursart anmelden
|
||||
CourseParticipantsRegisterActionAddTutorialMembers: Personen zur Kursart und Kursgruppe anmelden
|
||||
CourseParticipantsRegisterUsersField: Zur Kursart anzumeldende Personen
|
||||
CourseParticipantsRegisterUsersFieldTip: Bitte Ausweiskartennummer inklusive Punkt, Fraport Personalnummer oder Email angeben. Mehrere Personen bitte mit Komma oder Leerzeichen trennen.
|
||||
CourseParticipantsRegisterTutorialOption: Kursteilnehmer:innen zu Übungsgruppe anmelden?
|
||||
CourseParticipantsRegisterTutorialField: Übungsgruppe
|
||||
CourseParticipantsRegisterTutorialFieldTip: Ist aktuell keine Übungsgruppe mit diesem Namen vorhanden, wird eine neue erstellt. Ist bereits eine Übungsgruppe mit diesem Namen vorhanden, werden die Kursteilnehmenden dieser hinzugefügt.
|
||||
CourseParticipantsRegisterTutorialOption: Kursartteilnehmer:innen zu Kursgruppe anmelden?
|
||||
CourseParticipantsRegisterTutorialField: Kursgruppe
|
||||
CourseParticipantsRegisterTutorialFieldTip: Ist aktuell keine Kursgruppe mit diesem Namen vorhanden, wird eine neue erstellt. Ist bereits eine Kursgruppe mit diesem Namen vorhanden, werden die Kursartteilnehmenden dieser hinzugefügt.
|
||||
CourseParticipantsRegisterNoneGiven: Es wurden keine anzumeldenden Personen angegeben!
|
||||
CourseParticipantsRegisterNotFoundInAvs n@Int: Zu #{n} #{pluralDE n "Angabe konnte keine übereinstimmende Person" "Angaben konnten keine übereinstimmenden Personen"} im AVS gefunden werden
|
||||
CourseParticipantsRegisterTutorialFirstDayTip: Wenn ein neuer Kurs gemäß einer Vorlage erstellt wird, werden die Zeiten gemäß dem Starttag angepasst
|
||||
|
||||
CourseParticipantsInvited n@Int: #{n} #{pluralDE n "Einladung" "Einladungen"} per E-Mail verschickt
|
||||
CourseParticipantsAlreadyRegistered n@Int: #{n} #{pluralDE n "Teinehmer:in" "Teilnehmer:innen"} #{pluralDE n "ist" "sind"} bereits zum Kurs angemeldet
|
||||
CourseParticipantsAlreadyTutorialMember n@Int: #{n} #{pluralDE n "Teinehmer:in" "Teilnehmer:innen"} #{pluralDE n "ist" "sind"} bereits in dieser Übungsgruppe angemeldet
|
||||
CourseParticipantsRegistered n@Int: #{n} #{pluralDE n "Teinehmer:in" "Teilnehmer:innen"} erfolgreich zum Kurs angemeldet
|
||||
CourseParticipantsRegisteredTutorial n@Int: #{n} #{pluralDE n "Teinehmer:in" "Teilnehmer:innen"} erfolgreich zur Übungsgruppe angemeldet
|
||||
CourseParticipantsAlreadyRegistered n@Int: #{n} #{pluralDE n "Teinehmer:in" "Teilnehmer:innen"} #{pluralDE n "ist" "sind"} bereits zur Kursart angemeldet
|
||||
CourseParticipantsAlreadyTutorialMember n@Int: #{n} #{pluralDE n "Teinehmer:in" "Teilnehmer:innen"} #{pluralDE n "ist" "sind"} bereits in dieser Kursgruppe angemeldet
|
||||
CourseParticipantsRegistered n@Int: #{n} #{pluralDE n "Teinehmer:in" "Teilnehmer:innen"} erfolgreich zur Kursart angemeldet
|
||||
CourseParticipantsRegisteredTutorial n@Int: #{n} #{pluralDE n "Teinehmer:in" "Teilnehmer:innen"} erfolgreich zur Kursgruppe angemeldet
|
||||
CourseParticipantsRegisterConfirmationHeading: Teilnehmer:innen hinzufügen
|
||||
CourseParticipantsRegisterUnnecessary: Alle angeforderten Anmeldungen sind bereits vorhanden. Es wurden keine Änderungen vorgenommen.
|
||||
CourseParticipantsRegisterConfirmInvalid: Ungültiges Bestätigungsformular!
|
||||
@ -105,20 +106,20 @@ CourseRegistrationFiles: Datei(en) zur Anmeldung
|
||||
CourseRegistrationFilesNeedReupload: Dateien zur Anmeldung müssen neu hochgeladen werden, wann immer die Anmeldung angepasst wird
|
||||
CourseRegistrationFile: Datei zur Anmeldung
|
||||
CourseRegistrationArchive: Zip-Archiv der Datei(en) zur Anmeldung
|
||||
CourseDeregistrationNoShow: Wenn Sie sich vom Kurs abmelden, wird für alle Prüfungen des Kurses „nicht erschienen“ gemeldet. Wenn Sie gute Gründe vorzuweisen haben, warum Ihre Abmeldung nicht selbstverschuldet ist, kontaktieren Sie bitte eine:n Kursverwalter:in. Diese haben die Möglichkeit Sie ohne permanente Eintragung im System abzumelden.
|
||||
CourseDeregistrationFromInvisibleCourse: Dieser Kurs ist nur für angemeldete Teilnehmer:innen und Bewerber:innen sichtbar. Wenn Sie sich jetzt abmelden, können Sie danach nicht wieder auf den Kurs zugreifen!
|
||||
CourseDeregistrationNoReRegistration: Wenn Sie sich jetzt vom Kurs abmelden, können Sie sich nicht wieder selbstständig anmelden.
|
||||
CourseDeregistrationNoShow: Wenn Sie sich von der Kursart abmelden, wird für alle Prüfungen dieser Kursart „nicht erschienen“ gemeldet. Wenn Sie gute Gründe vorzuweisen haben, warum Ihre Abmeldung nicht selbstverschuldet ist, kontaktieren Sie bitte eine:n Kursverwalter:in. Diese haben die Möglichkeit Sie ohne permanente Eintragung im System abzumelden.
|
||||
CourseDeregistrationFromInvisibleCourse: Diese Kursart ist nur für angemeldete Teilnehmer:innen und Bewerber:innen sichtbar. Wenn Sie sich jetzt abmelden, können Sie danach nicht wieder auf die Kursart zugreifen!
|
||||
CourseDeregistrationNoReRegistration: Wenn Sie sich jetzt von der Kursart abmelden, können Sie sich nicht wieder selbstständig anmelden.
|
||||
LoginNecessary: Bitte melden Sie sich dazu vorher an!
|
||||
RegisterRetry: Sie wurden noch nicht angemeldet. Drücken Sie dazu den Knopf "Anmelden"
|
||||
CourseRegisterOk: Erfolgreich zum Kurs angemeldet
|
||||
CourseDeregisterOk: Erfolgreich vom Kurs abgemeldet
|
||||
CourseApplyOk: Erfolgreich zum Kurs beworben
|
||||
CourseRetractApplyOk: Bewerbung zum Kurs erfolgreich zurückgezogen
|
||||
CourseRegisterOk: Erfolgreich zur Kursart angemeldet
|
||||
CourseDeregisterOk: Erfolgreich von der Kursart abgemeldet
|
||||
CourseApplyOk: Erfolgreich zur Kursart beworben
|
||||
CourseRetractApplyOk: Bewerbung zur Kursart erfolgreich zurückgezogen
|
||||
CourseMemberOf: Teilnehmer:in von
|
||||
CourseAssociatedWith: assoziiert mit
|
||||
CourseLastEdit: Letzte Änderung
|
||||
CourseUserNote: Notiz
|
||||
CourseUserNoteTooltip: Nur für Verwalter dieses Kurses einsehbar
|
||||
CourseUserNoteTooltip: Nur für Verwalter dieser Kursart einsehbar
|
||||
CourseUserNoteSaved: Notizänderungen gespeichert
|
||||
CourseUserNoteDeleted: Teilnehmernotiz gelöscht
|
||||
CourseCourseMembers: Teilnehmer:innen
|
||||
@ -126,9 +127,9 @@ CourseUserExamsResultSet count@Int64: Ergebnis zu #{show count} #{pluralDE count
|
||||
CourseUserExamResultDoesNotMatchMode examn@ExamName: Gewähtes Ergebnis passt nicht zu Bewertungsmodus von Prüfung „#{examn}“.
|
||||
CourseUserExamsDeregistered count@Int64: Teilnehmer:in von #{show count} #{pluralDE count "Prüfung" "Prüfungen"} abgemeldet
|
||||
CourseUserNoExamsDeregistered: Teilnehmer:in ist zu keiner der gewählten Prüfungen angemeldet
|
||||
CourseUserTutorialsDeregistered count@Int64: Teilnehmer:in von #{show count} #{pluralDE count "Tutorium" "Tutorien"} abgemeldet
|
||||
CourseUserNoTutorialsDeregistered: Teilnehmer:in ist zu keinem der gewählten Tutorien angemeldet
|
||||
CourseUserTutorials: Angemeldete Tutorien
|
||||
CourseUserTutorialsDeregistered count@Int64: Teilnehmer:in von #{show count} #{pluralDE count "Kurs" "Kurse"} abgemeldet
|
||||
CourseUserNoTutorialsDeregistered: Teilnehmer:in ist zu keinem der gewählten Kurse angemeldet
|
||||
CourseUserTutorials: Angemeldete Kurse
|
||||
CourseUserExams: Angemeldete Prüfungen
|
||||
CourseUserSheets: Übungsblätter
|
||||
CsvColumnUserName: Voller Name des/der Teilnehmers/Teilnehmerin
|
||||
@ -137,76 +138,76 @@ CsvColumnUserSex: Geschlecht
|
||||
CsvColumnUserBirthday: Geburtstag
|
||||
CsvColumnUserEmail: E-Mail-Adresse des/der Teilnehmers/Teilnehmerin
|
||||
CsvColumnUserCourseStudyFeatures: Alle relevanten Studiendaten des/der Teilnehmers/Teilnehmerin als Semikolon (;) separierte Liste
|
||||
CsvColumnUserRegistration: Zeitpunkt der Anmeldung zum Kurs (ISO 8601)
|
||||
CsvColumnUserTutorial: Tutorien zu denen der/die Teilnehmer/Teilnehmerin angemeldet ist, als Semikolon (;) separierte Liste. Für Registrierungs-Gruppen unter den Tutorien gibt es jeweils eine weitere Spalte. Die Registrierungs-Gruppen-Spalten enthalten jeweils maximal ein Tutorium pro Teilnehmer:in. Sind alle Tutorien in Registrierungs-Gruppen, so gibt es keine Spalte "tutorial".
|
||||
CsvColumnUserRegistration: Zeitpunkt der Anmeldung zur Kursart (ISO 8601)
|
||||
CsvColumnUserTutorial: Kurse zu denen der/die Teilnehmer/Teilnehmerin angemeldet ist, als Semikolon (;) separierte Liste. Für Registrierungs-Gruppen unter den Kurse gibt es jeweils eine weitere Spalte. Die Registrierungs-Gruppen-Spalten enthalten jeweils maximal ein Kurs pro Teilnehmer:in. Sind alle Kurse in Registrierungs-Gruppen, so gibt es keine Spalte "Kurs".
|
||||
CsvColumnUserExam: Prüfungen zu denen der/die Teilnehmer/Teilnehmerin angemeldet ist, als Semikolon (;) separierte Liste.
|
||||
CsvColumnUserSubmissionGroup: Registrierte Abgabegruppe
|
||||
CsvColumnUserNote: Notizen zum/zur Teilnehmer/Teilnehmerin
|
||||
CsvColumnUserSurname: Nachname(n) des Teilnehmers/der Teilnehmerin
|
||||
CsvColumnUserFirstName: Vorname(n) des Teilnehmers/der Teilnehmerin
|
||||
CourseUserCsvName tid@TermId ssh@SchoolId csh@CourseShorthand: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-teilnehmer
|
||||
CourseUserTutorial: Angemeldetes Tutorium
|
||||
CourseUserTutorial: Angemeldeter Kurs
|
||||
CourseUserExam: Angemeldete Prüfung
|
||||
CourseUserCsvSheetName tid@TermId ssh@SchoolId csh@CourseShorthand: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh} Teilnehmer
|
||||
CourseUserCsvIncludeSheets: Übungsblätter
|
||||
CourseUserCsvIncludeSheetsTip: Soll die exportierte CSV-Datei zusätzlich eine Spalte pro Übungsblatt enthalten?
|
||||
RegisteredSince: Angemeldet seit
|
||||
CourseUserState: Zustand
|
||||
CourseTutorial: Tutorium
|
||||
CourseTutorial: Kurs
|
||||
CourseExam: Prüfung
|
||||
ExerciseSheet: Übungsblatt
|
||||
CourseUsersDeregistered count@Int64: #{show count} Teilnehmer:innen vom Kurs abgemeldet
|
||||
CourseUsersTutorialRegistered count@Int64: #{show count} Teilnehmer:innen zum Tutorium angemeldet
|
||||
CourseUsersDeregistered count@Int64: #{show count} Teilnehmer:innen von der Kursart abgemeldet
|
||||
CourseUsersTutorialRegistered count@Int64: #{show count} Teilnehmer:innen zum Kurs angemeldet
|
||||
CourseUsersExamRegistered count@Int64: #{show count} Teilnehmer:innen zur Prüfung angemeldet
|
||||
CourseUsersSubmissionGroupSetNew count@Int64: #{show count} Benutzer:innen der festen Abgabegruppe zugeordnet
|
||||
CourseUsersSubmissionGroupUnset count@Int64: #{show count} Benutzer:innen aus ihren jeweiligen festen Abgabegruppen entfernt
|
||||
CourseUsersStateSet count@Int64: Zustand von #{show count} #{pluralDE count "Benutzer:in" "Benutzer:innen"} angepasst
|
||||
|
||||
#templates/course.hamlet
|
||||
LecturerFor: Dozent:in
|
||||
LecturersFor: Dozierende
|
||||
LecturerFor: Kursverwalter:in
|
||||
LecturersFor: Kursvewaltende
|
||||
AssistantFor: Assistent:in
|
||||
AssistantsFor: Assistent:innen
|
||||
CourseAdminFor: Kursadministration
|
||||
TutorsFor n@Int: #{pluralDE n "Tutor:in" "Tutor:innen"}
|
||||
TutorsFor n@Int: #{pluralDE n "Ausbilder:in" "Ausbilder:innen"}
|
||||
CorrectorsFor n@Int: #{pluralDE n "Korrektor:in" "Korrektor:innen"}
|
||||
CourseParticipantsHeading: Kursteilnehmer:innen
|
||||
CourseParticipantsHeading: Kursartteilnehmer:innen
|
||||
CourseParticipantsCount n@Int !ident-ok: #{n}
|
||||
CourseParticipantsCountOf n@Int m@Int: #{n} von #{m}
|
||||
CourseVisibility: Sichtbarkeit
|
||||
CourseInvisible: Dieser Kurs ist momentan nur für Dozierende, Assistent:innen, Tutor:innen, Korrektor:innen, angemeldete Teilnehmer:innen und Bewerber:innen sichtbar.
|
||||
CourseInvisible: Diese Kursart ist momentan nur für Kursverwaltende, Assistent:innen, Ausbilder:innen, Korrektor:innen, angemeldete Teilnehmer:innen und Bewerber:innen sichtbar.
|
||||
CourseRegistrationInterval: Anmeldung
|
||||
CourseDirectRegistrationInterval: Direkte Anmeldung
|
||||
CourseDeregisterUntil time@Text: Abmeldung nur bis #{time}
|
||||
CourseMaterial !ident-ok: Material
|
||||
NotRegistered: Nicht zum Kurs angemeldet
|
||||
CourseMaterialNotFree: Das Kursmaterial ist nur für Mitglieder des Kurses einsehbar, also z.B. für Teilnehmer:innen, Tutor:innen, Korrektor:innen und Verwalter:innen.
|
||||
CourseMaterialsFoundHere: Material zum Kurs finden Sie hier
|
||||
CourseMaterialsNoneVisible: Aktuell gibt es zu diesem Kurs kein Material, oder nur Material auf das Sie keinen Zugriff haben (z.B. aufgrund von Fristen bzgl. der Sichtbarkeit).
|
||||
CourseSheetsFoundHere: Die Übungsblatter zum Kurs finden Sie hier
|
||||
CourseSheetsNoneVisible: Aktuell gibt es zu diesem Kurs keine Übungsblätter, oder nur Übungsblätter auf die Sie keinen Zugriff haben (z.B. aufgrund von Fristen bzgl. der Sichtbarkeit).
|
||||
NotRegistered: Nicht zur Kursart angemeldet
|
||||
CourseMaterialNotFree: Das Kursartmaterial ist nur für Mitglieder der Kursart einsehbar, also z.B. für Teilnehmer:innen, Ausbilder:innen, Korrektor:innen und Verwalter:innen.
|
||||
CourseMaterialsFoundHere: Material zur Kursart finden Sie hier
|
||||
CourseMaterialsNoneVisible: Aktuell gibt es zu dieser Kursart kein Material, oder nur Material auf das Sie keinen Zugriff haben (z.B. aufgrund von Fristen bzgl. der Sichtbarkeit).
|
||||
CourseSheetsFoundHere: Die Übungsblatter zur Kursart finden Sie hier
|
||||
CourseSheetsNoneVisible: Aktuell gibt es zu dieser Kursart keine Übungsblätter, oder nur Übungsblätter auf die Sie keinen Zugriff haben (z.B. aufgrund von Fristen bzgl. der Sichtbarkeit).
|
||||
SheetListCourse: Übungsblätter
|
||||
CourseExams: Prüfungen
|
||||
CourseTutorials: Tutorien
|
||||
CourseTutorials: Kurse
|
||||
|
||||
#templates course/user
|
||||
CourseUserCorrections: Abgaben
|
||||
CourseSubmissionGradingSummaryTitle intgr@Integer: #{intgr} #{pluralDE intgr "Abgabe" "Abgaben"}
|
||||
CourseSingleUserExams: Prüfungen
|
||||
CourseSingleUserTutorials: Tutorien
|
||||
CourseSingleUserTutorials: Kurse
|
||||
Surname: Nachname(n)
|
||||
FirstName: Vorname(n)
|
||||
Title: Titel
|
||||
NoMatrikelKnown: Keine Matrikelnummer
|
||||
CourseDeregisterLecturerTip: Wenn Sie den/die Teilnehmer/Teilnehmerin vom Kurs abmelden kann es sein, dass sie Zugriff auf diese Daten verlieren
|
||||
CourseDeregisterLecturerTip: Wenn Sie den/die Teilnehmer/Teilnehmerin von der Kursart abmelden kann es sein, dass sie Zugriff auf diese Daten verlieren
|
||||
StudyTerms: Studiengänge
|
||||
NoStudyTermsKnown: Keine Studiengänge bekannt
|
||||
CourseMembersCountOf n@Int mbNum@(Maybe Int): #{n} Kursanmeldungen #{maybeToMessage " von " mbNum " möglichen"}
|
||||
|
||||
CourseLoginToApply: Um sich zum Kurz zu bewerben müssen Sie sich zunächst in Uni2work anmelden
|
||||
CourseLoginToRegister: Um sich zum Kurs anzumelden müssen Sie zunächst in Uni2work anmelden
|
||||
CourseLoginToRegister: Um sich zur Kursart anzumelden müssen Sie zunächst in Uni2work anmelden
|
||||
CourseLecInviteHeading courseName@Text: Einladung zum/zur Kursverwalter/Kursverwalterin für #{courseName}
|
||||
CourseLecInviteExplanation: Sie wurden eingeladen, Verwalter:in für einen Kurs zu sein.
|
||||
CourseLecInviteExplanation: Sie wurden eingeladen, Verwalter:in für eine Kursart zu sein.
|
||||
CourseUserHasPersonalisedSheetFilesFilter: Teilnehmer:in hat personalisierte Übungsblatt-Dateien für
|
||||
HeadingCourseMembers: Teilnehmer:innen
|
||||
|
||||
@ -214,7 +215,7 @@ CourseAssistant: Assistent:in
|
||||
CourseParticipantStateIsInactive: Teilnehmer:in ist nicht aktiv
|
||||
CourseParticipantStateIsActive: Teilnehmer:in ist aktiv
|
||||
CourseUserSendMail: Nachricht an Teilnehmer:in senden
|
||||
CourseUserRegisterTutorial: Tutorium eintragen
|
||||
CourseUserRegisterTutorial: Kurs eintragen
|
||||
CourseUserRegisterExam: Prüfung eintragen
|
||||
CourseUserDownloadPersonalisedSheetFiles: Personalisierte Übungsblätter herunterladen
|
||||
CourseUserSetSubmissionGroup: Gruppenabgabe hinzufügen
|
||||
@ -227,8 +228,8 @@ TutorialRegistered: Angemeldet
|
||||
TutorialRegisterFrom: Anmeldungen ab
|
||||
TutorialRegisterTo: Anmeldungen bis
|
||||
|
||||
CourseDeleteQuestion: Wollen Sie den unten aufgeführten Kurs wirklich löschen?
|
||||
CourseDeleted: Kurs gelöscht
|
||||
CourseDeleteQuestion: Wollen Sie den unten aufgeführte Kursart wirklich löschen?
|
||||
CourseDeleted: Kursart gelöscht
|
||||
|
||||
UtilEditedBy name@Text time@Text: #{time} durch #{name}
|
||||
CourseDate: Datum
|
||||
@ -236,11 +237,12 @@ MailSubjectLecturerInvitation tid@TermId ssh@SchoolId csh@CourseShorthand: [#{ti
|
||||
LecturerInvitationAccepted lType@Text csh@CourseShorthand: Sie wurden als #{lType} für #{csh} eingetragen
|
||||
CourseExamRegistrationTime: Angemeldet seit
|
||||
CourseParticipantStateIsActiveFilter: Ansicht
|
||||
CourseApply: Zum Kurs bewerben
|
||||
CourseApply: Zur Kursart bewerben
|
||||
CourseAdministrator: Kursadministrator:in
|
||||
|
||||
CourseAvsRegisterTitle: Teilnehmer:innen anmelden
|
||||
CourseAvsRegisterParticipants: Teilnehmer:innen
|
||||
CourseAvsRegisterParticipantsTip: Mehrere Teilnehmer:innen mit Komma separieren
|
||||
|
||||
CourseQualifications n@Int: Assoziierte #{pluralDE n "Qualifikation" "Qualifikationen"}
|
||||
CourseQualifications n@Int: Assoziierte #{pluralDE n "Qualifikation" "Qualifikationen"}
|
||||
CourseCertificate course@Text: Teilnahmebescheinung #{course}
|
||||
@ -4,7 +4,7 @@
|
||||
|
||||
FilterCourse: Course
|
||||
FilterCourseShort: Shorthand
|
||||
FilterTerm: Semester
|
||||
FilterTerm: Year
|
||||
FilterCourseSchoolShort: Department
|
||||
FilterRegistered: Enrolled
|
||||
FilterCourseSearch: Text search
|
||||
@ -15,7 +15,7 @@ FilterCourseRegisterOpen: Enrolment is allowed
|
||||
CourseRegistered: Enrolled
|
||||
CourseRegistration: Enrolment
|
||||
CourseDescription: Description
|
||||
CommCourseHeading: Course message
|
||||
CommCourseHeading: Course type message
|
||||
CourseLecturers: Course administrators
|
||||
CourseLecturerEmail: Email
|
||||
CourseLecturerAlreadyAdded: This user is already configured as a course administrator
|
||||
@ -25,27 +25,27 @@ CourseLecturerRightsIdentical: All sorts of course administrators have the same
|
||||
CourseAcceptSubstitutesUntil: Accept substitute registrations until
|
||||
CourseAcceptSubstitutesUntilTip: Until which time should substitute registrations through the central allocation be accepted to fill free places in the course? If left empty no substitute registrations will be made. This deadline should not arbitrarily be set early or ommitted so as to not be an unneccesarily restrictive for students. For a seminar a valid choice might be a few hours before the first meeting in which topics will be assigned.
|
||||
CourseDeregisterNoShow: Record “no show” when deregistering
|
||||
CourseDeregisterNoShowTip: Should “no show” be recorded as the exam achievement for all exams associated with this course automatically whenever a course participant deregisters themselves? This would be done once upon deregistration (if no other achievement exists for the given exam) and automatically whenever a new exam is created.
|
||||
CourseDeregisterNoShowTip: Should “no show” be recorded as the exam achievement for all exams associated with this course type automatically whenever a course type participant deregisters themselves? This would be done once upon deregistration (if no other achievement exists for the given exam) and automatically whenever a new exam is created.
|
||||
CourseSchool: Department
|
||||
CourseSchoolMultipleTip: You may select from among multiple departments. Please ensure that you select the appropriate department for your course.
|
||||
CourseName: Title
|
||||
CourseShorthand: Shorthand
|
||||
CourseShorthandUnique: Needs to be unique within school and semester. Will be used verbatim within the url of the course page.
|
||||
CourseSemester: Semester
|
||||
CourseShorthandUnique: Needs to be unique within school and year. Will be used verbatim within the url of the course type page.
|
||||
CourseSemester: Year
|
||||
CourseDescriptionPlaceholder: Please include the module description
|
||||
CourseHomepageExternalPlaceholder: Optional external URL
|
||||
CourseHomepageExternal: External homepage
|
||||
CourseSemesterMultipleTip: You are currently allowed to select from among multiple semesters. Please ensure that you select the appropriate semester for your course.
|
||||
CourseSemesterMultipleTip: You are currently allowed to select from among multiple years. Please ensure that you select the appropriate year for your course.
|
||||
CourseVisibleFrom: Visible from
|
||||
CourseVisibleTo: Visible to
|
||||
CourseVisibleFromTip: The course will be visible to others from this date onward. When left empty the course will never be visible to other users. This does not affect lecturers, assistants, tutors, correctors, enrolled participants and applicants of/to this course. If the course participates in a central allocation, the course visibility will be forced during the application phase.
|
||||
CourseVisibleToTip: Other users will be able to see the course from "Visible From" up to this date. When left empty visible courses will remain visible indefinitely.
|
||||
CourseMaterialFree: Course material is publicly accessible
|
||||
CourseVisibleFromTip: The course type will be visible to others from this date onward. When left empty the course type will never be visible to other users. This does not affect course administrators, assistants, instructors, correctors, enrolled participants and applicants of/to this course. If the course type participates in a central allocation, the course type visibility will be forced during the application phase.
|
||||
CourseVisibleToTip: Other users will be able to see the course type from "Visible From" up to this date. When left empty visible courses will remain visible indefinitely.
|
||||
CourseMaterialFree: Course type material is publicly accessible
|
||||
CourseFormSectionRegistration: Registration
|
||||
CourseFormSectionAdministration: Administration
|
||||
CourseCapacity: Capacity
|
||||
CourseCapacityTip: Maximum permissable number of enrolments for this course; leave empty for unlimited capacity
|
||||
CourseSecretTip: Enrollment for this course will require the password, if set
|
||||
CourseSecretTip: Enrollment for this course type will require the password, if set
|
||||
CourseSecretFormat: Arbitrary string
|
||||
CourseSecretWrong: Wrong password
|
||||
CourseSecret: Access password
|
||||
@ -59,18 +59,18 @@ CourseVisibilityEndMustBeAfterStart: The end of the visibility period must be af
|
||||
CourseRegistrationEndMustBeAfterStart: The end of the registration period must be after its start
|
||||
CourseDeregistrationEndMustBeAfterStart: The end of the deregistration period must be after the start of the registration period
|
||||
CourseUserMustBeLecturer: The current user needs to be a course administrator
|
||||
CourseShorthandTooLong: Long course shorthands may lead to display issues and might complicate communication with students. Please choose a more concise shorthand if possible.
|
||||
CourseNotAlwaysVisibleDuringRegistration: To allow for students to register, the course should also be visible during the entire registration period (which is currently not the case).
|
||||
NoSuchTerm tid: Semester #{tid} does not exist.
|
||||
CourseShorthandTooLong: Long course type shorthands may lead to display issues and might complicate communication with students. Please choose a more concise shorthand if possible.
|
||||
CourseNotAlwaysVisibleDuringRegistration: To allow for students to register, the course type should also be visible during the entire registration period (which is currently not the case).
|
||||
NoSuchTerm tid: Year #{tid} does not exist.
|
||||
NoSuchSchool ssh: Department #{ssh} does not exist.
|
||||
NoSuchCourseShorthand csh: There is no course with shorthand #{csh}.
|
||||
NoSuchCourse: No such course found.
|
||||
CourseNewDupShort tid ssh csh: Could not create course #{tid}-#{ssh}-#{csh}. Another course with the same shorthand or title already exists for the given semester and school.
|
||||
NoSuchCourseShorthand csh: There is no course type with shorthand #{csh}.
|
||||
NoSuchCourse: No such course type found.
|
||||
CourseNewDupShort tid ssh csh: Could not create course type #{tid}-#{ssh}-#{csh}. Another course type with the same shorthand or title already exists for the given year and school.
|
||||
CourseInvalidInput: Invalid input
|
||||
CourseEditTitle: Edit/Create course
|
||||
CourseEditOk tid ssh csh: Successfully edited course #{tid}-#{ssh}-#{csh}
|
||||
CourseEditDupShort tid ssh csh: Could not edit course #{tid}-#{ssh}-#{csh}. Another course with the same shorthand or title already exists for the given semester and school.
|
||||
CourseLecturer: Lecturer
|
||||
CourseEditOk tid ssh csh: Successfully edited course type #{tid}-#{ssh}-#{csh}
|
||||
CourseEditDupShort tid ssh csh: Could not edit course type #{tid}-#{ssh}-#{csh}. Another course type with the same shorthand or title already exists for the given year and school.
|
||||
CourseLecturer: Course administrator
|
||||
MailSubjectParticipantInvitation tid@TermId ssh@SchoolId csh@CourseShorthand: [#{tid}-#{ssh}-#{csh}] Invitaion to join the course
|
||||
CourseParticipantInviteHeading courseName: Invitation to enrol for #{courseName}
|
||||
CourseParticipantInviteExplanation: You were invited to be a participant of a course.
|
||||
@ -79,23 +79,24 @@ CourseParticipantInvitationAccepted courseName: You were enrolled in #{courseNam
|
||||
CourseParticipantEnlistDirectly: Enrol known users directly
|
||||
CourseSubmissionGroup: Registered submission group
|
||||
SubmissionGroupEmptyIsUnsetTip: Leave empty to remove users from their respective submission groups
|
||||
CourseParticipantsRegisterHeading: Add course participants
|
||||
CourseParticipantsRegisterActionAddParticipants: Add course participants
|
||||
CourseParticipantsRegisterActionAddTutorialMembers: Add course and tutorial participants
|
||||
CourseParticipantsRegisterHeading: Add course type participants
|
||||
CourseParticipantsRegisterActionAddParticipants: Add course type participants
|
||||
CourseParticipantsRegisterActionAddTutorialMembers: Add course participants
|
||||
CourseParticipantsRegisterUsersField: Persons to register for course
|
||||
CourseParticipantsRegisterUsersFieldTip: Please enter id card no (including dot), Fraport personnel number or email. Please separate multiple entries with comma or space.
|
||||
CourseParticipantsRegisterTutorialOption: Register course participants for tutorial?
|
||||
CourseParticipantsRegisterTutorialField: Tutorial
|
||||
CourseParticipantsRegisterTutorialFieldTip: If there is no tutorial with this name, a new one will be created. If there is a tutorial with this name, the course participants will be registered for it.
|
||||
CourseParticipantsRegisterTutorialOption: Register course type participants for course?
|
||||
CourseParticipantsRegisterTutorialField: Course
|
||||
CourseParticipantsRegisterTutorialFieldTip: If there is no course with this name, a new one will be created. If there is a course with this name, the course type participants will be registered for it.
|
||||
CourseParticipantsRegisterNoneGiven: No persons given to register!
|
||||
CourseParticipantsRegisterNotFoundInAvs n: For #{n} #{pluralEN n "entry no corresponding person" "entries no corresponding persons"} could be found in AVS
|
||||
CourseParticipantsRegisterTutorialFirstDayTip: If a new course is created and a template exists, its dates are adjusted according to the start date
|
||||
CourseParticipantsRegisterUnnecessary: All requested registrations have already been saved. No actions have been performed.
|
||||
|
||||
CourseParticipantsInvited n: #{n} #{pluralEN n "invitation" "invitations"} sent via email
|
||||
CourseParticipantsAlreadyRegistered n: #{n} #{pluralEN n "participant is" "participants are"} already course #{pluralEN n "member" "members"}
|
||||
CourseParticipantsAlreadyTutorialMember n: #{n} #{pluralEN n "participant is" "participants are"} already registered for this tutorial
|
||||
CourseParticipantsAlreadyRegistered n: #{n} #{pluralEN n "participant is" "participants are"} already course type #{pluralEN n "member" "members"}
|
||||
CourseParticipantsAlreadyTutorialMember n: #{n} #{pluralEN n "participant is" "participants are"} already registered for this course
|
||||
CourseParticipantsRegistered n: Successfully registered #{n} #{pluralEN n "participant" "participants"} for course
|
||||
CourseParticipantsRegisteredTutorial n: Successfully registered #{n} #{pluralEN n "participant" "participants"} for tutorial
|
||||
CourseParticipantsRegisteredTutorial n: Successfully registered #{n} #{pluralEN n "participant" "participants"} for course
|
||||
CourseParticipantsRegisterConfirmationHeading: Register participants
|
||||
CourseParticipantsRegisterConfirmInvalid: Invalid confirmation form!
|
||||
|
||||
@ -105,9 +106,9 @@ CourseRegistrationFiles: Registration file(s)
|
||||
CourseRegistrationFilesNeedReupload: Registration files need to be reuploaded every time the registration is changed
|
||||
CourseRegistrationFile: Registration file
|
||||
CourseRegistrationArchive: Zip archive of registration files
|
||||
CourseDeregistrationNoShow: If you deregister from this course “no show” will be recorded as your exam achievement for all exams associated with this course. If you have good reasons why you shold not be held accountable for leaving the course, please contact a course administrator. Course administrators can deregister you without incurring a permanent record.
|
||||
CourseDeregistrationFromInvisibleCourse: This course is only visible to enrolled participants and applicants. If you deregister now, you will not be able to access the course again!
|
||||
CourseDeregistrationNoReRegistration: If you deregister from the course now, you will not be able to re-register yourself.
|
||||
CourseDeregistrationNoShow: If you deregister from this course type “no show” will be recorded as your exam achievement for all exams associated with this course. If you have good reasons why you shold not be held accountable for leaving the course, please contact a course administrator. Course administrators can deregister you without incurring a permanent record.
|
||||
CourseDeregistrationFromInvisibleCourse: This course type is only visible to enrolled participants and applicants. If you deregister now, you will not be able to access the course type again!
|
||||
CourseDeregistrationNoReRegistration: If you deregister from the course type now, you will not be able to re-register yourself.
|
||||
LoginNecessary: Please log in first!
|
||||
RegisterRetry: You haven't been enrolled. Press "Enrol for course" to enrol
|
||||
CourseRegisterOk: Successfully enrolled for course
|
||||
@ -126,9 +127,9 @@ CourseUserExamsResultSet count: Successfully adjusted the participant's result f
|
||||
CourseUserExamResultDoesNotMatchMode examn: The chosen result does not match the grading mode for exam “#{examn}”
|
||||
CourseUserExamsDeregistered count: Successfully deregistered participant from #{show count} #{pluralEN count "exam" "exams"}
|
||||
CourseUserNoExamsDeregistered: Participant is not registered for any of the selected exams
|
||||
CourseUserTutorialsDeregistered count: Sucessfully deregistered participant from #{show count} #{pluralEN count "tutorial" "tutorials"}
|
||||
CourseUserNoTutorialsDeregistered: Participant is not registered for any of the selected tutorials
|
||||
CourseUserTutorials: Registered tutorials
|
||||
CourseUserTutorialsDeregistered count: Sucessfully deregistered participant from #{show count} #{pluralEN count "course" "courses"}
|
||||
CourseUserNoTutorialsDeregistered: Participant is not registered for any of the selected courses
|
||||
CourseUserTutorials: Registered courses
|
||||
CourseUserExams: Registered exams
|
||||
CourseUserSheets: Exercise sheets
|
||||
CsvColumnUserName: Participant's full name
|
||||
@ -138,62 +139,62 @@ CsvColumnUserBirthday: Birthday
|
||||
CsvColumnUserEmail: Participant's email address
|
||||
CsvColumnUserCourseStudyFeatures: All relevant features of study for the participant, separated by semicolon (;)
|
||||
CsvColumnUserRegistration: Time of participant's enrollment (ISO 8601)
|
||||
CsvColumnUserTutorial: Tutorials which the user is registered for, separated by semicolon (;). For each registration group among the tutorials there is a separate column. The registration group columns contain at most one tutorial per participant. If every tutorial has a registration group there is no column "tutorial".
|
||||
CsvColumnUserTutorial: Courses which the user is registered for, separated by semicolon (;). For each registration group among the courses there is a separate column. The registration group columns contain at most one course per participant. If every course has a registration group there is no column "course".
|
||||
CsvColumnUserExam: Exams which the user is registered for, separated by semicolon (;).
|
||||
CsvColumnUserSubmissionGroup: Registered submission group
|
||||
CsvColumnUserSurname: Participant's surname
|
||||
CsvColumnUserFirstName: Participant's given name
|
||||
CsvColumnUserNote: Course notes for the participant
|
||||
CsvColumnUserNote: Course type notes for the participant
|
||||
CourseUserCsvName tid ssh csh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-participants
|
||||
CourseUserTutorial: Registered tutorial
|
||||
CourseUserTutorial: Registered course
|
||||
CourseUserExam: Registered exam
|
||||
CourseUserCsvIncludeSheets: Exercise sheets
|
||||
CourseUserCsvSheetName tid ssh csh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh} Participants
|
||||
CourseUserCsvIncludeSheetsTip: Should the exportet CSV-file additionally contain one column per exercise sheet?
|
||||
RegisteredSince: Enrolled since
|
||||
CourseUserState: State
|
||||
CourseTutorial: Tutorial
|
||||
CourseTutorial: Course
|
||||
CourseExam: Exam
|
||||
ExerciseSheet: Exercise sheet
|
||||
CourseUsersDeregistered count: Successfully deregistered #{show count} users from course
|
||||
CourseUsersTutorialRegistered count: Successfully registered #{show count} users for tutorial
|
||||
CourseUsersTutorialRegistered count: Successfully registered #{show count} users for course
|
||||
CourseUsersExamRegistered count: Successfully registered #{show count} users for exam
|
||||
CourseUsersSubmissionGroupSetNew count: Successfully added #{show count} #{pluralEN count "user" "users"} to submission group
|
||||
CourseUsersSubmissionGroupUnset count: Successfully removed #{show count} #{pluralEN count "user" "users"} from their #{pluralEN count "submission group" "respective submission groups"}
|
||||
CourseUsersStateSet count: Successfully changed state of #{show count} #{pluralEN count "user" "users"}
|
||||
|
||||
#templates/course.hamlet
|
||||
LecturerFor: Lecturer
|
||||
LecturersFor: Lecturers
|
||||
LecturerFor: Course administrator
|
||||
LecturersFor: Course administrators
|
||||
AssistantFor: Assistant
|
||||
AssistantsFor: Assistants
|
||||
CourseAdminFor: Course administration
|
||||
TutorsFor n: #{pluralEN n "Tutor" "Tutors"}
|
||||
TutorsFor n: #{pluralENs n "Instructor" }
|
||||
CorrectorsFor n: #{pluralEN n "Corrector" "Correctors"}
|
||||
CourseParticipantsHeading: Course participants
|
||||
CourseParticipantsHeading: Course type participants
|
||||
CourseParticipantsCount n: #{n}
|
||||
CourseParticipantsCountOf n m: #{n} of #{m}
|
||||
CourseVisibility: Visibility
|
||||
CourseInvisible: This course is currently only visible to lecturers, assistants, tutors, correctors, enrolled participants and applicants.
|
||||
CourseInvisible: This course type is currently only visible to course administrators, assistants, instructors, correctors, enrolled participants and applicants.
|
||||
CourseRegistrationInterval: Enrolment
|
||||
CourseDirectRegistrationInterval: Direct enrolment
|
||||
CourseDeregisterUntil time: Deregistration only until #{time}
|
||||
NotRegistered: Note enrolled for this course
|
||||
CourseMaterial: Material
|
||||
CourseMaterialNotFree: Course material is only accessible to members of the course, e.g. for participants, tutors, correctors or administratiors.
|
||||
CourseMaterialsFoundHere: Material for this course is available here
|
||||
CourseMaterialsNoneVisible: Currently there is no material for this course or only material to which you don't have access (e.g. because of visibility settings)
|
||||
CourseSheetsFoundHere: Exercise sheets for this course are available here
|
||||
CourseSheetsNoneVisible: Currently there are no exercise sheets for this course or only exercise sheets to which you don't have access (e.g. because of visibility settings)
|
||||
CourseMaterialNotFree: Course type material is only accessible to members of the course, e.g. for participants, instructors, correctors or administratiors.
|
||||
CourseMaterialsFoundHere: Material for this course type is available here
|
||||
CourseMaterialsNoneVisible: Currently there is no material for this course type or only material to which you don't have access (e.g. because of visibility settings)
|
||||
CourseSheetsFoundHere: Exercise sheets for this course type are available here
|
||||
CourseSheetsNoneVisible: Currently there are no exercise sheets for this course type or only exercise sheets to which you don't have access (e.g. because of visibility settings)
|
||||
SheetListCourse: Exercise sheets
|
||||
CourseExams: Exams
|
||||
CourseTutorials: Tutorials
|
||||
CourseTutorials: Courses
|
||||
|
||||
#templates course/user
|
||||
CourseUserCorrections: Submissions
|
||||
CourseSubmissionGradingSummaryTitle intgr: #{intgr} #{pluralEN intgr "submission" "submissions"}
|
||||
CourseSingleUserExams: Exams
|
||||
CourseSingleUserTutorials: Tutorials
|
||||
CourseSingleUserTutorials: Courses
|
||||
Surname: Surname(s)
|
||||
FirstName: Given name(s)
|
||||
Title: Title
|
||||
@ -213,7 +214,7 @@ CourseAssistant: Assistant
|
||||
CourseParticipantStateIsInactive: Participant is inactive
|
||||
CourseParticipantStateIsActive: Participant is active
|
||||
CourseUserSendMail: Send message to participant
|
||||
CourseUserRegisterTutorial: Register tutorial
|
||||
CourseUserRegisterTutorial: Register course
|
||||
CourseUserRegisterExam: Register exam
|
||||
CourseUserSetSubmissionGroup: Set group-submission
|
||||
CourseUserReRegister: Reregister participant
|
||||
@ -227,7 +228,7 @@ TutorialRegisterFrom: Register from
|
||||
TutorialRegisterTo: Register to
|
||||
|
||||
CourseDeleteQuestion: Are you sure you want to delete the below-mentioned course?
|
||||
CourseDeleted: Course deleted
|
||||
CourseDeleted: Course type deleted
|
||||
|
||||
UtilEditedBy name time: #{time} by #{name}
|
||||
CourseDate: Date
|
||||
@ -242,4 +243,5 @@ CourseAvsRegisterTitle: Register participants
|
||||
CourseAvsRegisterParticipants: Participants
|
||||
CourseAvsRegisterParticipantsTip: Separate multiple participants with comma
|
||||
|
||||
CourseQualifications n: Associated #{pluralENs n "Qualification"}
|
||||
CourseQualifications n: Associated #{pluralENs n "Qualification"}
|
||||
CourseCertificate course@Text: Certificate of attendance: #{course}
|
||||
@ -8,17 +8,17 @@ CourseEventTypePlaceholder: Vorlesung, Zentralübung, ...
|
||||
CourseEventTime: Zeit
|
||||
CourseEventRoom: Regulärer Raum
|
||||
CourseEventRoomHidden: Raum nur für Teilnehmer:innen
|
||||
CourseEventRoomHiddenTip: Soll der Raum nur angemeldeten Kursteilnehmer:innen angezeigt werden?
|
||||
CourseEventRoomHiddenTip: Soll der Raum nur angemeldeten Kursartteilnehmer:innen angezeigt werden?
|
||||
CourseEventRoomIsUnset !ident-ok: —
|
||||
CourseEventRoomIsHidden: Raum wird nur Kurs-assoziierten Personen (Teilnehmer:innen, Tutor:innen, Korrektor:innen, etc.) angezeigt
|
||||
CourseEventRoomIsHidden: Raum wird nur Kursart-assoziierten Personen (Teilnehmer:innen, Ausbilder:innen, Korrektor:innen, etc.) angezeigt
|
||||
CourseEventNote: Notiz
|
||||
CourseEventActions: Aktionen
|
||||
CourseEventsActionEdit: Bearbeiten
|
||||
CourseEventsActionDelete: Löschen
|
||||
CourseEventsActionCreate: Neuer Termin
|
||||
CourseEventCreated: Kurstermin erfolgreich angelegt
|
||||
CourseEventEdited: Kurstermin erfolgreich editiert
|
||||
CourseEventCreated: Kursarttermin erfolgreich angelegt
|
||||
CourseEventEdited: Kursarttermin erfolgreich editiert
|
||||
CourseEventDeleteQuestion: Wollen Sie den unten aufgeführten Termin wirklich löschen?
|
||||
CourseEventDeleted: Kurstermin erfolgreich gelöscht
|
||||
CourseEventNew: Neuer Kurstermin
|
||||
CourseEventEdit: Kurstermin bearbeiten
|
||||
CourseEventDeleted: Kursarttermin erfolgreich gelöscht
|
||||
CourseEventNew: Neuer Kursarttermin
|
||||
CourseEventEdit: Kursarttermin bearbeiten
|
||||
@ -8,17 +8,17 @@ CourseEventTypePlaceholder: Lecture, Exercise discussion, ...
|
||||
CourseEventTime: Time
|
||||
CourseEventRoom: Regular room
|
||||
CourseEventRoomHidden: Room only for participants
|
||||
CourseEventRoomHiddenTip: Should the room only be displayde to course participants?
|
||||
CourseEventRoomHiddenTip: Should the room only be displayde to course type participants?
|
||||
CourseEventRoomIsUnset: —
|
||||
CourseEventRoomIsHidden: Room is only displayed to course associated persons (participants, tutor, correctors, etc.)
|
||||
CourseEventRoomIsHidden: Room is only displayed to course type associated persons (participants, instructors, correctors, etc.)
|
||||
CourseEventNote: Note
|
||||
CourseEventActions: Actions
|
||||
CourseEventsActionEdit: Edit
|
||||
CourseEventsActionDelete: Delete
|
||||
CourseEventsActionCreate: New occurrence
|
||||
CourseEventCreated: Successfully created course occurrence
|
||||
CourseEventEdited: Successfully edited course occurrence
|
||||
CourseEventDeleteQuestion: Are you sure you want to delete the course occurrence mentioned below?
|
||||
CourseEventDeleted: Successfully deleted course occurrence
|
||||
CourseEventEdit: Edit course occurrence
|
||||
CourseEventNew: New course occurrence
|
||||
CourseEventCreated: Successfully created course type occurrence
|
||||
CourseEventEdited: Successfully edited course type occurrence
|
||||
CourseEventDeleteQuestion: Are you sure you want to delete the course type occurrence mentioned below?
|
||||
CourseEventDeleted: Successfully deleted course type occurrence
|
||||
CourseEventEdit: Edit course type occurrence
|
||||
CourseEventNew: New course type occurrence
|
||||
@ -13,13 +13,13 @@ CourseNewsVisibleFromEditWarning: Das Datum der Veröffentlichung liegt in der V
|
||||
CourseNewsVisibleFromTip: Ohne Datum nie sichtbar für Teilnehmer:innen; leer lassen ist nur sinnvoll für noch unfertige Nachrichten
|
||||
CourseNewsTitle: Titel
|
||||
CourseNewsSummary: Zusammenfassung
|
||||
CourseNewsSummaryTip: Wenn angegeben, wird auf der Kursübersichtsseite, platzsparend, nur die Zusammenfassung angezeigt und der Inhalt in ein Popup ausgelagert
|
||||
CourseNewsSummaryTip: Wenn angegeben, wird auf der Kursartübersichtsseite, platzsparend, nur die Zusammenfassung angezeigt und der Inhalt in ein Popup ausgelagert
|
||||
CourseNewsContent: Inhalt
|
||||
CourseNewsParticipantsOnly: Nur für Kursteilnehmer:innen
|
||||
CourseNewsParticipantsOnly: Nur für Kursartteilnehmer:innen
|
||||
CourseNewsVisibleFrom: Sichtbar ab
|
||||
CourseNewsCreated: Kursnachricht erfolgreich angelegt
|
||||
CourseNewsEdited: Kursnachricht erfolgreich editiert
|
||||
CourseNewsCreated: Kursartnachricht erfolgreich angelegt
|
||||
CourseNewsEdited: Kursartnachricht erfolgreich editiert
|
||||
CourseNewsDeleteQuestion: Wollen Sie die unten aufgeführte Nachricht wirklich löschen?
|
||||
CourseNewsDeleted: Kursnachricht erfolgreich gelöscht
|
||||
CourseNewsNew: Neue Kursnachricht
|
||||
CourseNewsEdit: Kursnachricht bearbeiten
|
||||
CourseNewsDeleted: Kursartnachricht erfolgreich gelöscht
|
||||
CourseNewsNew: Neue Kursartnachricht
|
||||
CourseNewsEdit: Kursartnachricht bearbeiten
|
||||
@ -9,17 +9,17 @@ CourseNewsLastEdited time: Last changed: #{time}
|
||||
CourseNewsActionEdit: Edit
|
||||
CourseNewsActionDelete: Delete
|
||||
CourseNewsActionCreate: Create new item
|
||||
CourseNewsVisibleFromEditWarning: This item of course news has already been published and should no longer be changed sind this might confuse participants.
|
||||
CourseNewsVisibleFromEditWarning: This item of course type news has already been published and should no longer be changed sind this might confuse participants.
|
||||
CourseNewsVisibleFromTip: If left empty this item is never visible. Leave empty for unfinished items
|
||||
CourseNewsTitle: Title
|
||||
CourseNewsSummary: Summary
|
||||
CourseNewsSummaryTip: If specified this only the summary will be shown on the course page, saving space. The content will be shown in a popup
|
||||
CourseNewsSummaryTip: If specified this only the summary will be shown on the course type page, saving space. The content will be shown in a popup
|
||||
CourseNewsContent: Content
|
||||
CourseNewsParticipantsOnly: Only for course participants
|
||||
CourseNewsParticipantsOnly: Only for course type participants
|
||||
CourseNewsVisibleFrom: Visible from
|
||||
CourseNewsCreated: Successfully created item of course news
|
||||
CourseNewsEdited: Successfully edited item of course news
|
||||
CourseNewsDeleteQuestion: Are you sure you want to delete the item of course news listed below?
|
||||
CourseNewsDeleted: Successfully deleted item of course news
|
||||
CourseNewsNew: Add course news
|
||||
CourseNewsEdit: Edit item of course news
|
||||
CourseNewsCreated: Successfully created item of course type news
|
||||
CourseNewsEdited: Successfully edited item of course type news
|
||||
CourseNewsDeleteQuestion: Are you sure you want to delete the item of course type news listed below?
|
||||
CourseNewsDeleted: Successfully deleted item of course type news
|
||||
CourseNewsNew: Add course type news
|
||||
CourseNewsEdit: Edit item of course type news
|
||||
|
||||
@ -5,13 +5,13 @@
|
||||
ExamRegistrationInviteDeadline: Einladung nur gültig bis
|
||||
ExamRegistrationEnlistDirectly: Bekannte Nutzer:innen sofort als Teilnehmer:innen eintragen
|
||||
ExamRegistrationEnlistDirectlyTip: Sollen, wenn manche der E-Mail-Adressen bereits in Uni2work mit Nutzer:innen assoziiert sind, jene Nutzer:innen direkt zur Prüfung hinzugefügt werden? Ansonsten werden Einladung an alle E-Mail-Adressen (nicht nur unbekannte) versandt, die die Nutzer:innen zunächst akzeptieren müssen um Prüfungsteilnehmer:in zu werden.
|
||||
ExamRegistrationRegisterCourse: Nutzer:in auch zum Kurs anmelden
|
||||
ExamRegistrationRegisterCourseTip: Nutzer:innen, die keine Kursteilnehmer:innen sind, werden sonst nicht zur Prüfung angemeldet.
|
||||
ExamRegistrationRegisterCourse: Nutzer:in auch zur Kursart anmelden
|
||||
ExamRegistrationRegisterCourseTip: Nutzer:innen, die keine Kursartteilnehmer:innen sind, werden sonst nicht zur Prüfung angemeldet.
|
||||
ExamRegistrationInviteField: Einzuladende E-Mail-Adressen
|
||||
ExamParticipantsRegisterHeading: Prüfungsteilnehmer:in hinzufügen
|
||||
ExamParticipantsInvited n@Int: #{n} #{pluralDE n "Einladung" "Einladungen"} per E-Mail verschickt
|
||||
ExamRegistrationAndCourseParticipantsRegistered n@Int: #{n} #{pluralDE n "Teilnehmer:in" "Teilnehmer:innen"} #{pluralDE n "wurde" "wurden"} sowohl zum Kurs, als auch zur Prüfung angemeldet
|
||||
ExamRegistrationNotRegisteredWithoutCourse n@Int: #{n} #{pluralDE n "Teilnehmer:in" "Teilnehmer:innen"} #{pluralDE n "wurde" "wurden"} nicht zur Prüfung angemeldet, da #{pluralDE n "er/sie" "sie"} nicht zum Kurs angemeldet #{pluralDE n "ist" "sind"}
|
||||
ExamRegistrationAndCourseParticipantsRegistered n@Int: #{n} #{pluralDE n "Teilnehmer:in" "Teilnehmer:innen"} #{pluralDE n "wurde" "wurden"} sowohl zur Kursart, als auch zur Prüfung angemeldet
|
||||
ExamRegistrationNotRegisteredWithoutCourse n@Int: #{n} #{pluralDE n "Teilnehmer:in" "Teilnehmer:innen"} #{pluralDE n "wurde" "wurden"} nicht zur Prüfung angemeldet, da #{pluralDE n "er/sie" "sie"} nicht zur Kursart angemeldet #{pluralDE n "ist" "sind"}
|
||||
ExamAutoOccurrenceMinimizeRooms: Verwendete Räume/Termine minimieren
|
||||
ExamAutoOccurrenceMinimizeRoomsTip: Soll, für die Aufteilung, die Liste an Räumen/Terminen zunächst reduziert werden, sodass nur so wenige Räume verwendet werden, wie nötig (größte zuerst)?
|
||||
ExamAutoOccurrenceOccurrencesChangedInFlight: Raumliste wurde verändert
|
||||
@ -48,7 +48,7 @@ ExamVisibleFrom: Sichtbar ab
|
||||
ExamVisibleFromTip: Ohne Datum nie sichtbar und keine Anmeldung möglich
|
||||
ExamRegisterFrom: Anmeldung ab
|
||||
ExamRegisterTo: Anmeldung bis
|
||||
ExamRegisterFromTip: Zeitpunkt ab dem sich Kursteilnehmer:innen selbständig zur Prüfung anmelden können; ohne Datum ist keine Anmeldung möglich
|
||||
ExamRegisterFromTip: Zeitpunkt ab dem sich Kursartteilnehmer:innen selbständig zur Prüfung anmelden können; ohne Datum ist keine Anmeldung möglich
|
||||
ExamDeregisterUntil: Abmeldung bis
|
||||
ExamPublishOccurrenceAssignments: Termin- bzw. Raumzuteilung den Teilnehmer:innen mitteilen um
|
||||
ExamPublishOccurrenceAssignmentsTip: Ab diesem Zeitpunkt können Teilnehmer:innen einsehen zu welcher Teilprüfung bzw. welchen Raum sie angemeldet sind
|
||||
@ -66,8 +66,8 @@ ExamGradingMode: Bewertungsmodus
|
||||
ExamGradingModeTip: In welcher Form werden Prüfungsleistungen für diese Prüfung eingetragen?
|
||||
ExamStaff: Prüfer:innen/Verantwortliche Hochschullehrer:innen
|
||||
ExamStaffTip: Geben Sie bitte in jedem Fall einen Namen an, der Prüfer:in/Veranstalter:in/Hochschullehrer:in eindeutig identifiziert! Sollte der Name des Prüfers/der Prüferin allein womöglich nicht eindeutig sein, so geben Sie bitte eindeutig identifizierende Zusatzinfos, wie beispielsweise den Lehrstuhl bzw. die LFE o.Ä., an.
|
||||
ExamExamOfficeSchools: Zusätzliche Institute
|
||||
ExamExamOfficeSchoolsTip: Prüfungsbeauftragte von Instituten, die Sie hier angeben, erhalten im System (zusätzlich zum primären Institut des zugehörigen Kurses) volle Einsicht in sämtliche für diese Prüfung hinterlegten Leistungen, unabhängig von den Studiendaten der Teilnehmer:innen.
|
||||
ExamExamOfficeSchools: Zusätzliche Bereiche
|
||||
ExamExamOfficeSchoolsTip: Prüfungsbeauftragte von Bereichen, die Sie hier angeben, erhalten im System (zusätzlich zum primären Bereich der zugehörigen Kursart) volle Einsicht in sämtliche für diese Prüfung hinterlegten Leistungen, unabhängig von den Studiendaten der Teilnehmer:innen.
|
||||
ExamCorrectorEmail: E-Mail
|
||||
ExamCorrectors: Korrektor:innen
|
||||
ExamCorrectorsTip: Hier eingetragene Korrektor:innen können zwischen Beginn der Prüfung und "Bewertung abgeschlossen ab" Ergebnisse für alle Teilprüfungen und alle Teilnehmer:innen im System hinterlegen.
|
||||
@ -126,10 +126,10 @@ ExamOccurrenceDuplicateName eoName@ExamOccurrenceName: Interne Terminbezeichnung
|
||||
ExamOccurrenceRoomIsUnset !ident-ok: —
|
||||
ExamOccurrenceRoomIsHidden: Raum wird nur Teilnehmer:innen angezeigt
|
||||
ExamOccurrenceCannotBeDeletedDueToRegistrations eoName@ExamOccurrenceName: Termin #{eoName} kann nicht gelöscht werden, da noch Teilnehmer:innen diesem Termin zugewiesen sind. Über die Liste von Prüfungsteilnehmern können Sie zunächst die entsprechenden Terminzuweisungen entfernen.
|
||||
ExamRegistrationMustFollowSchoolSeparationFromStart dayCount@Int: Nach Regeln des Instituts #{pluralDE dayCount "muss" "müssen"} zwischen "Anmeldung ab" und "Beginn" mindestens #{dayCount} #{pluralDE dayCount "Tag" "Tage"} liegen.
|
||||
ExamRegistrationMustFollowSchoolDuration dayCount@Int: Nach Regeln des Instituts #{pluralDE dayCount "muss" "müssen"} zwischen "Anmeldung ab" und "Anmeldung bis" mindestens #{dayCount} #{pluralDE dayCount "Tag" "Tage"} liegen.
|
||||
ExamModeRequiredForRegistration: Nach Regeln des Institus muss die "Ausgestaltung der Prüfung" vollständig angegeben sein, bevor "Anmeldung ab" festgelegt werden kann.
|
||||
ExamModeSchoolDiscouraged: Nach Regeln des Instituts wird von der angegebenen "Ausgestaltung der Prüfung" abgeraten
|
||||
ExamRegistrationMustFollowSchoolSeparationFromStart dayCount@Int: Nach Regeln des Bereichs #{pluralDE dayCount "muss" "müssen"} zwischen "Anmeldung ab" und "Beginn" mindestens #{dayCount} #{pluralDE dayCount "Tag" "Tage"} liegen.
|
||||
ExamRegistrationMustFollowSchoolDuration dayCount@Int: Nach Regeln des Bereichs #{pluralDE dayCount "muss" "müssen"} zwischen "Anmeldung ab" und "Anmeldung bis" mindestens #{dayCount} #{pluralDE dayCount "Tag" "Tage"} liegen.
|
||||
ExamModeRequiredForRegistration: Nach Regeln des Bereichs muss die "Ausgestaltung der Prüfung" vollständig angegeben sein, bevor "Anmeldung ab" festgelegt werden kann.
|
||||
ExamModeSchoolDiscouraged: Nach Regeln des Bereichs wird von der angegebenen "Ausgestaltung der Prüfung" abgeraten
|
||||
ExamStaffRequired: „Prüfer:innen/Verantwortilche Hochschullehrer:innen” muss angegeben werden
|
||||
ExamNotRegistered: Nicht zur Prüfung angemeldet
|
||||
ExamRegistered: Zur Prüfung angemeldet
|
||||
@ -144,7 +144,7 @@ ExamRegistrationInviteExplanation: Sie wurden eingeladen, Prüfungsteilnehmer:in
|
||||
ExamUnauthorizedParticipant: Angegebener Benutzer/angegebene Benutzerin ist nicht als Teilnehmer:in dieser Veranstaltung registriert.
|
||||
ExamRegistrationInvitationAccepted examn@ExamName: Sie wurden als Teilnehmer:in für #{examn} eingetragen
|
||||
ExamFinishedParticipant: Bewertung voraussichtlich abgeschlossen
|
||||
ExamLoginToRegister: Um sich zum Kurs anzumelden müssen Sie zunächst in Uni2work anmelden
|
||||
ExamLoginToRegister: Um sich zur Kursart anzumelden müssen Sie zunächst in Uni2work anmelden
|
||||
ExamRegisterForOccurrence: Anmeldung zur Prüfung erfolgt durch Anmeldung zu einem Termin/Raum
|
||||
ExamShowIdentificationRequired: Prüfungsteilnehmer:innen müssen sich ausweisen können. Halten Sie dafür einen amtlichen Lichtbildausweis (Personalausweis, Reisepass, Aufenthaltstitel) und Ihren Studierendenausweis bereit.
|
||||
CsvColumnExamUserSurname: Nachname(n) des Teilnehmers/der Teilnehmerin
|
||||
@ -271,7 +271,7 @@ ExamEditWouldBreakSheetTypeReference: Durch Ihre Änderungen würde ein Prüfung
|
||||
ExamEditExamNameTaken exam@ExamName: Es existiert bereits eine Prüfung mit Namen #{exam}
|
||||
|
||||
Date: Datum
|
||||
ExamRegistrationRegisteredWithoutField n@Int: #{n} #{pluralDE n "Teilnehmer:in wurde" "wurden"} sowohl zur Prüfung, als auch #{pluralDE n "Teilnehmer:innen ohne assoziiertes Studienfach" "ohne assoziierte Studienfächer"} zum Kurs angemeldet, da #{pluralDE n "kein eindeutiges Hauptfach bestimmt werden konnte" "keine eindeutigen Hauptfächer bestimmt werden konnten"}
|
||||
ExamRegistrationRegisteredWithoutField n@Int: #{n} #{pluralDE n "Teilnehmer:in wurde" "wurden"} sowohl zur Prüfung, als auch #{pluralDE n "Teilnehmer:innen ohne assoziiertes Studienfach" "ohne assoziierte Studienfächer"} zur Kursart angemeldet, da #{pluralDE n "kein eindeutiges Hauptfach bestimmt werden konnte" "keine eindeutigen Hauptfächer bestimmt werden konnten"}
|
||||
ExamRegistrationParticipantsRegistered n@Int: #{n} #{pluralDE n "Teilnehmer:in wurde" "Teilnehmer:innen wurden"} zur Prüfung angemeldet
|
||||
ExamOpenBook: Open Book
|
||||
ExamClosedBook: Closed Book
|
||||
@ -295,7 +295,7 @@ ExamUserSetPartResult: Teilergebnis setzen
|
||||
ExamUserSetBonus: Bonuspunkte setzen
|
||||
ExamUserSetResult: Prüfungsergebnis setzen
|
||||
ExamUserMarkSynchronised: Prüfungsleistung als synchronisiert markieren
|
||||
ExamUserCsvCourseRegister: Benutzer:in zum Kurs und zur Prüfung anmelden
|
||||
ExamUserCsvCourseRegister: Benutzer:in zur Kursart und zur Prüfung anmelden
|
||||
ExamUserCsvRegister: Kursteilnehmer:in zur Prüfung anmelden
|
||||
ExamUserCsvAssignOccurrence: Teilnehmer:innen einen anderen Termin/Raum zuweisen
|
||||
ExamUserCsvDeregister: Teilnehmer:in von der Prüfung abmelden
|
||||
@ -320,6 +320,6 @@ ExamFinished: Ergebnisse sichtbar ab
|
||||
ExamAuthorshipStatementSection: Eigenständigkeitserklärung
|
||||
ExamAuthorshipStatementRequired: Eigenständigkeitserklärung für prüfungszugehörige Übungsblattabgaben einfordern?
|
||||
ExamAuthorshipStatementRequiredTip: Sollen für alle zu dieser Prüfung zugehörige Übungsblätter die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden, eine Eigenständigkeitserklärung zu akzeptieren?
|
||||
ExamAuthorshipStatementRequiredForcedTip: Für dieses Institut ist vorgeschrieben, dass für alle zu diese Prüfung zugehörigen Übungsblätter die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden, eine Eigenständigkeitserklärung zu akzeptieren.
|
||||
ExamAuthorshipStatementRequiredForcedTip: Für diesen Bereich ist vorgeschrieben, dass für alle zu diese Prüfung zugehörigen Übungsblätter die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden, eine Eigenständigkeitserklärung zu akzeptieren.
|
||||
ExamAuthorshipStatementContent: Eigenständigkeitserklärung
|
||||
ExamAuthorshipStatementContentForcedTip: Für dieses Institut ist die institutsweit vorgegebene Eigenständigkeitserklärung für prüfungsrelevante Übungsblätter zu verwenden. Benutzerdefinierte Erklärungen sind nicht gestattet. Für alle zu diese Prüfung zugehörigen Übungsblätter werden die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert, diese Eigenständigkeitserklärung zu akzeptieren.
|
||||
ExamAuthorshipStatementContentForcedTip: Für diesen Bereich ist die bereichsweit vorgegebene Eigenständigkeitserklärung für prüfungsrelevante Übungsblätter zu verwenden. Benutzerdefinierte Erklärungen sind nicht gestattet. Für alle zu diese Prüfung zugehörigen Übungsblätter werden die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert, diese Eigenständigkeitserklärung zu akzeptieren.
|
||||
@ -5,7 +5,7 @@
|
||||
ExamRegistrationInviteDeadline: Invitation valid until
|
||||
ExamRegistrationEnlistDirectly: Register known users directly
|
||||
ExamRegistrationEnlistDirectlyTip: Should users whose email addresses are known to the system be registered for the exam directly? Otherwise invitations will be sent to alle users, which they will have to accept first in order to be registered. Unknown users always receive an invitation.
|
||||
ExamRegistrationRegisterCourse: Also enroll users in course
|
||||
ExamRegistrationRegisterCourse: Also enroll users in course type
|
||||
ExamRegistrationRegisterCourseTip: Users that aren't enrolled already won't be registered for the exam otherwise.
|
||||
ExamRegistrationInviteField: Email addresses
|
||||
ExamParticipantsRegisterHeading: Add exam participants
|
||||
@ -45,10 +45,10 @@ ExamStart: Start
|
||||
ExamEnd: End
|
||||
ExamTimeTip: Only for informational purposes. The actual times are set for each occurrence/room
|
||||
ExamVisibleFrom: Visible from
|
||||
ExamVisibleFromTip: If left empty the exam is never visible and course participants may not register.
|
||||
ExamVisibleFromTip: If left empty the exam is never visible and course type participants may not register.
|
||||
ExamRegisterFrom: Register from
|
||||
ExamRegisterTo: Register to
|
||||
ExamRegisterFromTip: Start of the period in which course participants may register themselves for the exam. If left empty participants are never allowed to register.
|
||||
ExamRegisterFromTip: Start of the period in which course type participants may register themselves for the exam. If left empty participants are never allowed to register.
|
||||
ExamDeregisterUntil: Deregister until
|
||||
ExamPublishOccurrenceAssignments: Publish occurrence/room-assignments
|
||||
ExamPublishOccurrenceAssignmentsTip: At this time participants can find out to which occurrence/room they are assigned
|
||||
@ -159,7 +159,7 @@ CsvColumnExamUserExercisePassesMax: Maximum number of exercise sheets the partic
|
||||
CsvColumnExamUserBonus: Exam bonus points
|
||||
CsvColumnExamUserParts: Number of points the participant achieved per exam part. One column per exam part if applicable.
|
||||
CsvColumnExamUserResult: Exam achievement; "passed", "failed", "no-show", "voided", or any number grade ("1.0", "1.3", "1.7", ..., "4.0", "5.0")
|
||||
CsvColumnExamUserCourseNote: Course notes for the participant
|
||||
CsvColumnExamUserCourseNote: Course type notes for the participant
|
||||
CsvColumnExamOfficeExamUserOccurrenceStart: Exam occurrence (ISO 8601)
|
||||
CsvColumnUserStudyFeatures: All relevant features of study for the participant, separated by semicolon (;)
|
||||
ExamUserCsvName tid ssh csh examn: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase examn}-participants
|
||||
@ -176,7 +176,7 @@ ExamAction: Action
|
||||
ExamUsersExamDataRequiresRegistration: If exam data (part-/result, occurrence/room, bonus) is to be modified/set, the relenvant participant needs to be registered for the exam.
|
||||
ExamNoOccurrence: No occurrence/room
|
||||
ExamBonusNone: No bonus points
|
||||
ExamUserCsvCourseNoteDeleted: Course note will be deleted
|
||||
ExamUserCsvCourseNoteDeleted: Course type note will be deleted
|
||||
ExamUsersDeregistered count: Successfully deregistered #{show count} #{pluralEN count "participant" "participants"}
|
||||
ExamUsersOccurrenceUpdated count: Successfully assigned occurrence/room for #{show count} #{pluralEN count "participant" "participants"}
|
||||
ExamUsersResultsAccepted count: Successfully accepted computed result for #{show count} #{pluralEN count "participant" "participants"}
|
||||
@ -302,9 +302,9 @@ ExamUserCsvOverrideResult: Override exam result in contradiction of computed val
|
||||
ExamUserCsvSetBonus: Set bonus points
|
||||
ExamUserCsvSetResult: Set exam result
|
||||
ExamUserCsvSetPartResult: Set result for exam part
|
||||
ExamUserCsvSetCourseNote: Modify course participant notes
|
||||
ExamUserCsvExceptionNoMatchingUser: Course participant could not be identified uniquely. All identifiers (given name(s), surname, display name, matriculation, ..) must match exactly. You can try to remove some of the identifiers for the given line (i.e. all but matriculation). Uni2work will then search for users using only the remaining identifiers. In this case special care should be taken that Uni2work correctly identifies the intended user.
|
||||
ExamUserCsvExceptionMultipleMatchingUsers: Course participant could not be identified uniquely. There are multiple users that match the given identifiers. You can try to add more identifiers for the given line to ensure that only the intended user can be identified with them.
|
||||
ExamUserCsvSetCourseNote: Modify course type participant notes
|
||||
ExamUserCsvExceptionNoMatchingUser: Course type participant could not be identified uniquely. All identifiers (given name(s), surname, display name, matriculation, ..) must match exactly. You can try to remove some of the identifiers for the given line (i.e. all but matriculation). Uni2work will then search for users using only the remaining identifiers. In this case special care should be taken that Uni2work correctly identifies the intended user.
|
||||
ExamUserCsvExceptionMultipleMatchingUsers: Course type participant could not be identified uniquely. There are multiple users that match the given identifiers. You can try to add more identifiers for the given line to ensure that only the intended user can be identified with them.
|
||||
ExamUserCsvExceptionNoMatchingStudyFeatures: The specified field did not match with any of the participant's fields of study. You can try to remove the field of study for the given line. Uni2work will then automatically choose a field of study.
|
||||
ExamUserCsvExceptionNoMatchingOccurrence: Occurrence/room could not be identified uniquely. Please ensure that the given line only contains internal room identifiers exactly as they have been configured for this exam.
|
||||
ExamUserCsvExceptionMismatchedGradingMode expectedGradingMode actualGradingMode: The imported data contained an exam achievement which does not match the grading mode for this exam. The expected grading mode can be changed at "Edit exam" ("Passed/Failed", "Numeric grades", or "Mixed").
|
||||
|
||||
@ -25,7 +25,7 @@ InvalidExamOfficeFieldMode parseErr@Text: Konnte „#{parseErr}“ nicht interpr
|
||||
TransactionExamOfficeFieldsUpdated nUpdates@Int: #{nUpdates} #{pluralDE nUpdates "Studienfach" "Studienfächer"} angepasst
|
||||
HeadingExamOfficeFields: Fächer
|
||||
HeadingExamOfficeUsers: Benutzer:innen
|
||||
ExamOfficeSubscribedFieldsExplanation: Sie können für alle Benutzer:innen, die mindestens eines der angegeben Studienfächer studieren, sämtliche Prüfungsergebnisse einsehen. Sie haben zusätzlich die Möglichkeit anzugeben, ob es den Benutzer:innen gestattet sein soll, dieser Einsicht im Einzelfall (pro Kurs) zu widersprechen.
|
||||
ExamOfficeSubscribedFieldsExplanation: Sie können für alle Benutzer:innen, die mindestens eines der angegeben Studienfächer studieren, sämtliche Prüfungsergebnisse einsehen. Sie haben zusätzlich die Möglichkeit anzugeben, ob es den Benutzer:innen gestattet sein soll, dieser Einsicht im Einzelfall (pro Kursart) zu widersprechen.
|
||||
MailSubjectExamOfficeUserInvitation displayName@Text: Berücksichtigung von Prüfungsleistungen in Uni2work
|
||||
ExamOfficeUserInviteHeading displayName@Text: Zugriff auf Ihre Prüfungsleistungen durch #{displayName}
|
||||
ExamOfficeUserInviteExplanation: Um Ihre Prüfungsleistungen ordnungsgemäß anrechnen zu können (z.B. im finalen Transcript of Records für Erasmus-Studierende) werden sie eingeladen der hierfür zuständigen Stelle Einsicht zu gewähren.
|
||||
@ -49,7 +49,7 @@ ExamFinishedSince time@Text: Prüfungsergebnisse sichtbar seit #{time}
|
||||
#templates exam-office/*
|
||||
ExamUserSyncOfficeName !ident-ok: Name
|
||||
ExamUserSyncTime: Zeitpunkt
|
||||
ExamUserSyncSchools: Institute
|
||||
ExamUserSyncSchools: Bereiche
|
||||
ExamUserSyncLastChange: Zuletzt geändert
|
||||
|
||||
ExamTimes: Termine
|
||||
|
||||
@ -15,13 +15,13 @@ ExternalExamCorrectErrorNeedleTooShort: Dieser Identifikator ist zu kurz.
|
||||
UnauthorizedExternalExamCorrectorGrade: Sie haben nicht die Berechtigung für diese Prüfung Gesamtergebnisse einzutragen.
|
||||
ExternalExamCorrectErrorMultipleMatchingUsers: Dem Identifikator konnten mehrere Studierende zugeordnet werden.
|
||||
ExternalExamCorrectErrorNoMatchingUsers: Dem Identifikator konnte kein Studierender zugeordnet werden.
|
||||
ExternalExamEdited coursen@CourseName examn@ExamName: Prüfung „#{examn}“ für Kurs „#{coursen}“ erfolgreich bearbeitet.
|
||||
ExternalExamExists coursen@CourseName examn@ExamName: Prüfung „#{examn}“ für Kurs „#{coursen}“ existiert bereits.
|
||||
ExternalExamEdited coursen@CourseName examn@ExamName: Prüfung „#{examn}“ für Kursart „#{coursen}“ erfolgreich bearbeitet.
|
||||
ExternalExamExists coursen@CourseName examn@ExamName: Prüfung „#{examn}“ für Kursart „#{coursen}“ existiert bereits.
|
||||
ExternalExamEdit coursen@CourseName examn@ExamName: Bearbeiten: #{coursen}, #{examn}
|
||||
ExternalExamSemester !ident-ok: Semester
|
||||
ExternalExamSchool: Institut
|
||||
ExternalExamSemester !ident-ok: Jahr
|
||||
ExternalExamSchool: Bereich
|
||||
ExternalExamCourseName: Veranstaltung
|
||||
ExternalExamCourseNameTip: Muss nur innerhalb von Semester und Institut eindeutig sein.
|
||||
ExternalExamCourseNameTip: Muss nur innerhalb von Jahr und Bereich eindeutig sein.
|
||||
ExternalExamCourseNamePlaceholder: Analysis I, Programmierung und Modellierung, ...
|
||||
ExternalExamExamName: Prüfung
|
||||
ExternalExamExamNameTip: Muss innerhalb der Veranstaltung eindeutig sein.
|
||||
@ -31,8 +31,8 @@ ExternalExamDefaultTimePlaceholder: Zeitpunkt
|
||||
ExternalExamDefaultTimeTip: Der Zeitpunkt zu dem die Prüfung abgelegt wurde, muss pro Teilnehmer:in festgelegt werden. Der hier angegebene Zeitpunkt wird als Standardwert für Teilnehmer:innen verwendet, bei denen später nicht ein abweichender Zeitpunkt angegeben wird.
|
||||
ExternalExamGradingMode: Bewertungsmodus
|
||||
ExternalExamGradingModeTip: In welcher Form werden Prüfungsleistungen für diese Prüfung eingetragen?
|
||||
ExternalExamExamOfficeSchools: Zusätzliche Institute
|
||||
ExternalExamExamOfficeSchoolsTip: Prüfungsbeauftragte von Instituten, die Sie hier angeben, erhalten im System (zusätzlich zum angegebenen primären Institut) volle Einsicht in sämtliche für diese Prüfung hinterlegten Leistungen, unabhängig von den Studiendaten der Teilnehmer:innen.
|
||||
ExternalExamExamOfficeSchools: Zusätzliche Bereiche
|
||||
ExternalExamExamOfficeSchoolsTip: Prüfungsbeauftragte von Bereichen, die Sie hier angeben, erhalten im System (zusätzlich zum angegebenen primären Bereich) volle Einsicht in sämtliche für diese Prüfung hinterlegten Leistungen, unabhängig von den Studiendaten der Teilnehmer:innen.
|
||||
ExternalExamStaffInviteHeading coursen@CourseName examn@ExamName: Einladung zum Prüfer/zur Prüferin für „#{examn}“ in „#{coursen}“
|
||||
ExternalExamStaffInviteExplanation: Sie wurden eingeladen als Prüfer:in für eine Uni2work-externe Prüfung zu wirken. Sie können dann u.A. Noten für die Prüfung hinterlegen.
|
||||
ExternalExamStaffInvitationAccepted coursen@CourseName examn@ExamName: Sie sind nun als Prüfer:in für „#{examn}“ in „#{coursen}“ eingetragen.
|
||||
@ -41,10 +41,10 @@ ExternalExamStaffTip: Assoziierte Personen werden den Prüfungsbeauftragten und
|
||||
ExternalExamStaffAlreadyAdded: Person wurde bereits der Prüfung hinzugefügt
|
||||
ExternalExamStaffEmail: E-Mail
|
||||
ExternalExamUserMustBeStaff: Sie selbst müssen stets assoziierte Person sein, für die externen Prüfungen, die Sie anlegen
|
||||
ExternalExamCourseExists: Der angegebene Kurs existiert im System. Prüfungen sollten daher direkt beim Kurs (statt extern) hinterlegt werden.
|
||||
ExternalExamCourseExists: Die angegebene Kursart existiert im System. Prüfungen sollten daher direkt bei der Kursart (statt extern) hinterlegt werden.
|
||||
HeadingExternalExamList: Externe Prüfungen
|
||||
HeadingExternalExamNew: Neue externe Prüfung
|
||||
ExternalExamCreated coursen@CourseName examn@ExamName: Prüfung „#{examn}“ für Kurs „#{coursen}“ erfolgreich angelegt.
|
||||
ExternalExamCreated coursen@CourseName examn@ExamName: Prüfung „#{examn}“ für Kursart „#{coursen}“ erfolgreich angelegt.
|
||||
MailSubjectExternalExamStaffInvitation coursen@CourseName examn@ExamName: Einladung zum Prüfer/zur Prüferin für „#{examn}“ in „#{coursen}“
|
||||
ExternalExamOccurrenceEdited count@Int64: #{count} #{pluralDE count "Termin" "Termine"} editiert
|
||||
ExternalExamResultEdited count@Int64: #{count} #{pluralDE count "Prüfungsergebnis" "Prüfungsergebnisse"} editiert
|
||||
|
||||
@ -15,13 +15,13 @@ ExternalExamCorrectErrorNeedleTooShort: This identifier is too short.
|
||||
UnauthorizedExternalExamCorrectorGrade: You may not enter overall exam achievements for this exam.
|
||||
ExternalExamCorrectErrorMultipleMatchingUsers: This identifier matches on multiple students.
|
||||
ExternalExamCorrectErrorNoMatchingUsers: This identifier does not match any student.
|
||||
ExternalExamEdited coursen@CourseName examn@ExamName: Succesfully edited exam “#{examn}” for course “#{coursen}”.
|
||||
ExternalExamExists coursen@CourseName examn@ExamName: Exam “#{examn}” already exists for course “#{coursen}”.
|
||||
ExternalExamEdited coursen@CourseName examn@ExamName: Succesfully edited exam “#{examn}” for course type “#{coursen}”.
|
||||
ExternalExamExists coursen@CourseName examn@ExamName: Exam “#{examn}” already exists for course type “#{coursen}”.
|
||||
ExternalExamEdit coursen examn: Edit: #{coursen}, #{examn}
|
||||
ExternalExamSemester: Semester
|
||||
ExternalExamSemester: Year
|
||||
ExternalExamSchool: Department
|
||||
ExternalExamCourseName: Course
|
||||
ExternalExamCourseNameTip: Needs only be unique among within semester and department.
|
||||
ExternalExamCourseNameTip: Needs only be unique among within year and department.
|
||||
ExternalExamCourseNamePlaceholder: Analysis I, Programming and Modelling, ...
|
||||
ExternalExamExamName: Exam title
|
||||
ExternalExamExamNameTip: Needs only be unique within the course.
|
||||
@ -34,17 +34,17 @@ ExternalExamGradingModeTip: In which format should grades for this exam be enter
|
||||
ExternalExamExamOfficeSchools: Additional departments
|
||||
ExternalExamExamOfficeSchoolsTip: Exam offices of departments you specify here will also have full access to all results for this exam disregarding the individual participants' features of study.
|
||||
ExternalExamStaffInviteHeading coursen examn: Invitation to act as examiner for “#{examn}” of “#{coursen}”
|
||||
ExternalExamStaffInviteExplanation: You have been invited to act as an examiner for a uni2work-external exam. After accepting you will be able to upload exam results.
|
||||
ExternalExamStaffInviteExplanation: You have been invited to act as an examiner for a FRADrive-external exam. After accepting you will be able to upload exam results.
|
||||
ExternalExamStaffInvitationAccepted coursen examn: You are now registered as an examiner for “#{examn}” of “#{coursen}”.
|
||||
ExternalExamStaff: Associated persons
|
||||
ExternalExamStaffTip: The list of ssociated persons is shown to exam offices and participants. Additionally associated persons may upload results for the exam.
|
||||
ExternalExamStaffAlreadyAdded: Person is already associated with the exam.
|
||||
ExternalExamStaffEmail: Email
|
||||
ExternalExamUserMustBeStaff: You yourself must always be an associated person for exams you create.
|
||||
ExternalExamCourseExists: This course already exists with uni2work. Exams for courses that exist within uni2work should be associated with the course directly instead of being created as an external exam.
|
||||
ExternalExamCourseExists: This course type already exists with FRADrive. Exams for courses that exist within FRADrive should be associated with the course type directly instead of being created as an external exam.
|
||||
HeadingExternalExamList: External exams
|
||||
HeadingExternalExamNew: New external exam
|
||||
ExternalExamCreated coursen@CourseName examn@ExamName: Succesfully created exam “#{examn}” for course “#{coursen}”.
|
||||
ExternalExamCreated coursen@CourseName examn@ExamName: Succesfully created exam “#{examn}” for course type “#{coursen}”.
|
||||
MailSubjectExternalExamStaffInvitation coursen examn: Invitation to act as examiner for “#{examn}” of “#{coursen}”
|
||||
ExternalExamOccurrenceEdited count: Successfully edited #{count} #{pluralEN count "occurrence" "occurrences"}
|
||||
ExternalExamResultEdited count: Successfully edited #{count} #{pluralEN count "exam result" "exam results"}
|
||||
|
||||
@ -21,8 +21,8 @@ MaterialNewHeading: Neues Material veröffentlichen
|
||||
MaterialNewTitle: Neues Material
|
||||
MaterialEditHeading materialName@MaterialName: Material "#{materialName}" editieren
|
||||
MaterialEditTitle materialName@MaterialName: Material "#{materialName}" editieren
|
||||
MaterialSaveOk tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: Material "#{materialName}" erfolgreich gespeichert in Kurs #{tid}-#{ssh}-#{csh}
|
||||
MaterialNameDup tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: Es gibt bereits Material mit Namen "#{materialName}" in diesem Kurs #{tid}-#{ssh}-#{csh}
|
||||
MaterialSaveOk tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: Material "#{materialName}" erfolgreich gespeichert in Kursart #{tid}-#{ssh}-#{csh}
|
||||
MaterialNameDup tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: Es gibt bereits Material mit Namen "#{materialName}" in dieser Kursart #{tid}-#{ssh}-#{csh}
|
||||
MaterialDeleteCaption: Wollen Sie das unten aufgeführte Material wirklich löschen?
|
||||
MaterialDelHasFiles count@Int64: inklusive #{count} #{pluralDE count "Datei" "Dateien"}
|
||||
MaterialIsVisible: Achtung, dieses Material wurde bereits veröffentlicht.
|
||||
@ -31,7 +31,7 @@ MaterialArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand materialName@Mat
|
||||
MaterialVideo materialName@MaterialName !ident-ok: #{materialName} - Video
|
||||
MaterialVideoUnsupported: Ihr Browser scheint keine eingebetten Videos zu unterstützen
|
||||
MaterialVideoDownload: Herunterladen
|
||||
MaterialFree: Kursmaterialien ohne Anmeldung zugänglich
|
||||
MaterialFree: Kursartmaterialien ohne Anmeldung zugänglich
|
||||
AccessibleSince: Verfügbar seit
|
||||
VisibleFrom: Veröffentlicht
|
||||
FilterMaterialNameSearch !ident-ok: Name
|
||||
|
||||
@ -11,27 +11,27 @@ MaterialTypeCode: Code
|
||||
MaterialTypeExample: Example
|
||||
MaterialDescription: Description
|
||||
MaterialVisibleFrom: Visible to participants from
|
||||
MaterialVisibleFromTip: Never visible to participants if left empty; leaving the date empty is only sensible for unfinished course material or when course material should be provided only to sheet correctors
|
||||
MaterialVisibleFromEditWarning: This course material has already been published and should not be edited. Doing so might confuse the participants.
|
||||
MaterialInvisible: This course material is currently invisible to participants!
|
||||
MaterialVisibleFromTip: Never visible to participants if left empty; leaving the date empty is only sensible for unfinished course type material or when course type material should be provided only to sheet correctors
|
||||
MaterialVisibleFromEditWarning: This course type material has already been published and should not be edited. Doing so might confuse the participants.
|
||||
MaterialInvisible: This course type material is currently invisible to participants!
|
||||
MaterialFiles: Files
|
||||
MaterialHeading materialName: #{materialName}
|
||||
MaterialListHeading: Course materials
|
||||
MaterialNewHeading: Publish new course material
|
||||
MaterialNewTitle: New course material
|
||||
MaterialEditHeading materialName: Edit course material “#{materialName}”
|
||||
MaterialEditTitle materialName: Edit course material “#{materialName}”
|
||||
MaterialSaveOk tid ssh csh materialName: Successfully saved “#{materialName}” for course #{tid}-#{ssh}-#{csh}
|
||||
MaterialNameDup tid ssh csh materialName: Course material with the name “#{materialName}” already exists for course #{tid}-#{ssh}-#{csh}
|
||||
MaterialDeleteCaption: Do you really want to delete the course material mentioned below?
|
||||
MaterialListHeading: Course type materials
|
||||
MaterialNewHeading: Publish new course type material
|
||||
MaterialNewTitle: New course type material
|
||||
MaterialEditHeading materialName: Edit course type material “#{materialName}”
|
||||
MaterialEditTitle materialName: Edit course type material “#{materialName}”
|
||||
MaterialSaveOk tid ssh csh materialName: Successfully saved “#{materialName}” for course type #{tid}-#{ssh}-#{csh}
|
||||
MaterialNameDup tid ssh csh materialName: Course type material with the name “#{materialName}” already exists for course type #{tid}-#{ssh}-#{csh}
|
||||
MaterialDeleteCaption: Do you really want to delete the course type material mentioned below?
|
||||
MaterialDelHasFiles count: including #{count} #{pluralEN count "file" "files"}
|
||||
MaterialIsVisible: Caution, this course material has already been published.
|
||||
MaterialDeleted materialName: Successfully deleted course material “#{materialName}”
|
||||
MaterialIsVisible: Caution, this course type material has already been published.
|
||||
MaterialDeleted materialName: Successfully deleted course type material “#{materialName}”
|
||||
MaterialArchiveName tid ssh csh materialName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase materialName}
|
||||
MaterialVideo materialName: #{materialName} - Video
|
||||
MaterialVideoUnsupported: Your browser does not seem to support embedded video
|
||||
MaterialVideoDownload: Download
|
||||
MaterialFree: Course material is publicly available.
|
||||
MaterialFree: Course type material is publicly available.
|
||||
AccessibleSince: Accessible since
|
||||
VisibleFrom: Published
|
||||
FilterMaterialNameSearch !ident-ok: Name
|
||||
|
||||
@ -2,14 +2,16 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
ParticipantsList: Kursteilnehmerlisten
|
||||
ParticipantsIntersect: Überschneidung von Kursteilnehmer:innen
|
||||
ParticipantsList: Kursartteilnehmerlisten
|
||||
ParticipantsIntersect: Überschneidung von Kursartteilnehmer:innen
|
||||
ParticipantsCsvName tid@TermId ssh@SchoolId: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-kursteilnehmer:innen
|
||||
ParticipantsIntersectCourseOption tid@TermId ssh@SchoolId coursen@CourseName !ident-ok: #{tid} - #{ssh} - #{coursen}
|
||||
ParticipantsIntersectCourses: Kurse
|
||||
ParticipantsIntersectCourses: Kursarten
|
||||
CourseParticipantsRegisteredWithoutField n@Int: #{n} #{pluralDE n "Teilnehmeri:in wurde ohne assoziiertes Studienfach" "Teilnehmer:innen wurden ohne assoziierte Studienfächer"} angemeldet, da #{pluralDE n "kein eindeutiges Hauptfach bestimmt werden konnte" "keine eindeutigen Hauptfächer bestimmt werden konnten"}
|
||||
ParticipantsCsvSheetName tid@TermId ssh@SchoolId: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)} Kursteilnehmer:innen
|
||||
CourseParticipants n@Int: Derzeit #{n} angemeldete Kursteilnehmer:innen
|
||||
ParticipantsCsvSheetName tid@TermId ssh@SchoolId: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)} Kursartteilnehmer:innen
|
||||
CourseParticipants n@Int: Derzeit #{n} angemeldete Kursartteilnehmer:innen
|
||||
ParticipantsIntersectNotOne: Schnitt
|
||||
AllUsersUnion: Vereinigung aller Teilnehmer:innen
|
||||
AllUsersIntersection: Schnitt aller Teilneher:innen
|
||||
AllUsersIntersection: Schnitt aller Teilneher:innen
|
||||
CourseDeleteActiveParticipants: Diese Kursart hat noch aktive Kursteilnehmer und kann deshalb nicht gelöscht werden. Bitte zuerst alle aktiven Kursteilnehmer entfernen.
|
||||
CourseDeleteExistExams: Diese Kursart kann nicht gelöscht werden, so lange Prüfungen damit assoziiert werden.
|
||||
@ -2,14 +2,16 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
ParticipantsList: Lists of course participants
|
||||
ParticipantsIntersect: Common course participants
|
||||
ParticipantsList: Lists of course type participants
|
||||
ParticipantsIntersect: Common course type participants
|
||||
ParticipantsCsvName tid ssh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-participants
|
||||
ParticipantsIntersectCourseOption tid@TermId ssh@SchoolId coursen@CourseName: #{tid} - #{ssh} - #{coursen}
|
||||
ParticipantsIntersectCourses: Courses
|
||||
CourseParticipantsRegisteredWithoutField n: #{n} #{pluralEN n "participant was" "participants were"} registered without #{pluralEN n "an associated field of study" "associated fields of study"}, because #{pluralEN n "it" "they"} could not be determined uniquely.
|
||||
ParticipantsCsvSheetName tid ssh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)} Participants
|
||||
CourseParticipants n: Currently #{n} course #{pluralEN n "participant" "participants"}
|
||||
CourseParticipants n: Currently #{n} course type #{pluralEN n "participant" "participants"}
|
||||
ParticipantsIntersectNotOne: Intersection
|
||||
AllUsersUnion: Union of all participants
|
||||
AllUsersIntersection: Intersection of all participants
|
||||
AllUsersIntersection: Intersection of all participants
|
||||
CourseDeleteActiveParticipants: This course type still has active participants. Remove all active participants first if you really want to delete this course.
|
||||
CourseDeleteExistExams: This course type cannot be deleted, for as long as associated exams exist.
|
||||
@ -13,8 +13,8 @@ SheetDeleteQuestion: Wollen Sie das unten aufgeführte Übungsblatt und alle zug
|
||||
SheetDeleted: Übungsblatt gelöscht
|
||||
SheetArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName !ident-ok: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}
|
||||
SheetTypeArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName renderedSft@Text !ident-ok: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-#{foldCase renderedSft}
|
||||
SheetEditOk tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: Übungsblatt #{sheetName} wurde gespeichert in Kurs #{tid}-#{ssh}-#{csh}
|
||||
SheetNameDup tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: Es gibt bereits ein Übungsblatt #{sheetName} in diesem Kurs #{tid}-#{ssh}-#{csh}
|
||||
SheetEditOk tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: Übungsblatt #{sheetName} wurde gespeichert in Kursart #{tid}-#{ssh}-#{csh}
|
||||
SheetNameDup tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: Es gibt bereits ein Übungsblatt #{sheetName} in dieser Kursart #{tid}-#{ssh}-#{csh}
|
||||
SheetVisibleFrom: Sichtbar für Teilnehmer:innen ab
|
||||
SheetVisibleFromTip: Ohne Datum nie sichtbar und keine Abgabe möglich; nur für unfertige Blätter leer lassen, deren Bewertung/Fristen sich noch ändern können
|
||||
SheetActiveFrom: Aktiv ab/Beginn Abgabezeitraum
|
||||
@ -24,7 +24,7 @@ SheetSolutionFromTip: Ohne Datum nie für Teilnehmer:innen sichtbar, Korrektor:i
|
||||
SheetName !ident-ok: Name
|
||||
SheetDescription: Hinweise für Teilnehmer:innen
|
||||
SheetRequireExam: Anmeldung zu einer Prüfung voraussetzen?
|
||||
SheetRequireExamTip: Wenn die Anmeldung zu einer Prüfung vorausgesetzt wird, können nur Kursteilnehmer:innen abgeben, die zum Zeitpunkt der Abgabe auch zur gewählten Prüfung angemeldet sind. Auch der Download von Übungsblatt-Dateien wird nur zur Prüfung angemeldeten Kursteilnehmer:innen erlaubt.
|
||||
SheetRequireExamTip: Wenn die Anmeldung zu einer Prüfung vorausgesetzt wird, können nur Kursartteilnehmer:innen abgeben, die zum Zeitpunkt der Abgabe auch zur gewählten Prüfung angemeldet sind. Auch der Download von Übungsblatt-Dateien wird nur zur Prüfung angemeldeten Kursartteilnehmer:innen erlaubt.
|
||||
SheetRequiredExam: Prüfung
|
||||
SheetFormType: Wertung & Abgabe
|
||||
SheetFormTimes: Zeiten
|
||||
@ -37,13 +37,13 @@ SheetMarkingFiles: Korrektur
|
||||
SheetMarkingTip: Hinweise zur Korrektur, sichtbar nur für Korrektor:innen
|
||||
SheetPersonalisedFilesDownload: Personalisierte Dateien herunterladen
|
||||
SheetPersonalisedFiles: Personalisierte Dateien
|
||||
SheetPersonalisedFilesTip: Sollen zusätzlich zu den oben angegebenen Dateien noch pro Kursteilnehmer:in personalisierte Dateien hinterlegt werden? Nur die jeweiligen Kursteilnehmer können ihre jeweiligen personalisierten Dateien einsehen.
|
||||
SheetPersonalisedFilesTip: Sollen zusätzlich zu den oben angegebenen Dateien noch pro Kursartteilnehmer:in personalisierte Dateien hinterlegt werden? Nur die jeweiligen Kursartteilnehmer können ihre jeweiligen personalisierten Dateien einsehen.
|
||||
SheetPersonalisedFilesUpload: Personalisierte Dateien
|
||||
SheetPersonalisedFilesUploadTip: Laden Sie das Vorlage-Archiv herunter, sortieren Sie darin die personalisierten Dateien in die jeweiligen Verzeichnisse der Kursteilnehmer:innen ein und laden sie das Archiv dann hier wieder hoch. Wenn es eine personalisierte und eine nicht-personalisierte Datei mit dem gleichen Namen gibt, so ersetzt die personalisierte Datei aus Sicht des jeweiligen Teilnehmers/der jeweiligen Teilnehmerin die nicht-personalisierte Datei.
|
||||
SheetPersonalisedFilesUploadTip: Laden Sie das Vorlage-Archiv herunter, sortieren Sie darin die personalisierten Dateien in die jeweiligen Verzeichnisse der Kursartteilnehmer:innen ein und laden sie das Archiv dann hier wieder hoch. Wenn es eine personalisierte und eine nicht-personalisierte Datei mit dem gleichen Namen gibt, so ersetzt die personalisierte Datei aus Sicht des jeweiligen Teilnehmers/der jeweiligen Teilnehmerin die nicht-personalisierte Datei.
|
||||
SheetPersonalisedFilesKeepExisting: Bestehende Dateien behalten
|
||||
SheetPersonalisedFilesKeepExistingTip: Sollen die hier neu hochgeladenen zu den bestehenden personalisierten Dateien (sofern vorhanden) hinzugefügt werden? Ansonsten ersetzt das neu hochgeladene Archiv vollständig die bestehenden Dateien.
|
||||
SheetPersonalisedFilesAllowNonPersonalisedSubmission: Nicht-personalisierte Abgabe erlauben
|
||||
SheetPersonalisedFilesAllowNonPersonalisedSubmissionTip: Sollen auch Kursteilnehmer:innen abgeben dürfen, für die keine personalisierten Dateien hinterlegt wurden?
|
||||
SheetPersonalisedFilesAllowNonPersonalisedSubmissionTip: Sollen auch Kursartteilnehmer:innen abgeben dürfen, für die keine personalisierten Dateien hinterlegt wurden?
|
||||
SheetPersonalisedFilesDownloadTemplateHere: Sie können hier ein Vorlage-Archiv für die vom System erwartete Verzeichnisstruktur für personalisierte Übungsblatt-Dateien herunterladen:
|
||||
SheetPersonalisedFilesUsersList: Liste von Teilnehmern mit personalisierten Übungsblatt-Dateien
|
||||
SheetPersonalisedFilesMetaYAMLSeedComment: Dieser String wird in einem kryptographischen Verfahren aus Daten generiert, die Benutzer:in und Übungsblatt eindeutig identifizieren. Er ist geeignet als Seed für einen Pseudozufallsgenerator verwendet zu werden um personalisierte Dateien (teil-)zufällig zu erzeugen.
|
||||
@ -63,12 +63,12 @@ SheetErrDeadlineEarly: "Aktiv bis/Ende Abgabezeitraum" muss nach "Aktiv ab/Begin
|
||||
SheetErrHintEarly: Hinweise dürfen erst nach Beginn des Abgabezeitraums herausgegeben werden
|
||||
SheetErrSolutionEarly: Lösungen dürfen erst nach Ende der Abgabezeitraums herausgegeben werden
|
||||
SheetErrVisibleWithoutActive: Wird "Sichtbar für Teilnehmer:in ab" angegeben, muss auch "Aktiv ab/Beginn Abgabezeitraum" angegeben werden
|
||||
SheetSubmissionModeNoneWithoutNotGraded: Es wurde "Keine Abgabe" eingestellt, jedoch nicht "Keine Bewertung". Kursteilnehmer:innen werden nicht abgeben können.
|
||||
SheetSubmissionModeNoneWithoutNotGraded: Es wurde "Keine Abgabe" eingestellt, jedoch nicht "Keine Bewertung". Kursartteilnehmer:innen werden nicht abgeben können.
|
||||
SheetWarnNoActiveTo: "Aktiv bis/Ende Abgabezeitraum" sollte stets angegeben werden
|
||||
CountTutProp: Tutorien zählen gegen Proportion
|
||||
CountTutPropTip: Wenn Abgaben nach Tutorium zugeteilt werden, zählen diese Zuteilungen in Bezug auf den jeweiligen Anteil?
|
||||
CountTutProp: Kurse zählen gegen Proportion
|
||||
CountTutPropTip: Wenn Abgaben nach Kurs zugeteilt werden, zählen diese Zuteilungen in Bezug auf den jeweiligen Anteil?
|
||||
ConsiderDeficits: Defizite ausgleichen
|
||||
ConsiderDeficitsTip: Wenn einem Korrektor/einer Korrektorin (nach aktuellem Datenstand) über alle Blätter des Kurses hinweg weniger Korrekturen zugeteilt wurden als nach den Anteilen vorgesehen, soll versucht werden diese Defizite mit diesem Übungsblatt auszugleichen?
|
||||
ConsiderDeficitsTip: Wenn einem Korrektor/einer Korrektorin (nach aktuellem Datenstand) über alle Blätter der Kursart hinweg weniger Korrekturen zugeteilt wurden als nach den Anteilen vorgesehen, soll versucht werden diese Defizite mit diesem Übungsblatt auszugleichen?
|
||||
SheetCorrector: Korrektor
|
||||
CorrectorExists: Nutzer:in ist bereits als Korrektor:in eingetragen
|
||||
SheetCorrectorState: Status
|
||||
@ -82,19 +82,19 @@ RatingPercent: Erreicht
|
||||
IsRated: Korrigiert
|
||||
SheetTypeIsExam: Anrechnung „als Prüfungsaufgabe“
|
||||
SheetGradingSummaryTitle intgr@Integer: #{intgr} #{pluralDE intgr "Blatt" "Blätter"}
|
||||
PersonalisedSheetFilesIgnored count@Int64: Es #{pluralDE count "wurde" "wurden"} #{count} hochgeladene #{pluralDE count "Datei" "Dateien"} ignoriert, da sie keinem Übungsblattdatei-Typ oder keinem Kursteilnehmer/keiner Kursteilnehmerin zugeordnet werden #{pluralDE count "konnte" "konnten"}.
|
||||
PersonalisedSheetFilesIgnored count@Int64: Es #{pluralDE count "wurde" "wurden"} #{count} hochgeladene #{pluralDE count "Datei" "Dateien"} ignoriert, da sie keinem Übungsblattdatei-Typ oder keinem Kursartteilnehmer/keiner Kursartteilnehmerin zugeordnet werden #{pluralDE count "konnte" "konnten"}.
|
||||
PersonalisedSheetFilesIgnoredIntro: Es wurden die folgenden Dateien ignoriert:
|
||||
PersonalisedSheetFilesDownloadRestrictByExamNone: Keine Einschränkung
|
||||
PersonalisedSheetFilesDownloadRestrictByExam: Nur Prüfungsteilnehmer:innen
|
||||
PersonalisedSheetFilesDownloadRestrictByExamTip: Sollen nur personalisierte Übungsblatt-Dateien exportiert werden, für jene Kursteilnehmer:innen, die auch Teilnehmer:innen einer bestimmten Prüfung sind?
|
||||
PersonalisedSheetFilesDownloadRestrictByExamTip: Sollen nur personalisierte Übungsblatt-Dateien exportiert werden, für jene Kursartteilnehmer:innen, die auch Teilnehmer:innen einer bestimmten Prüfung sind?
|
||||
PersonalisedSheetFilesDownloadAnonymousField: Anonymisierung
|
||||
PersonalisedSheetFilesDownloadAnonymousFieldTip: Sollen Verzeichnisnamen innerhalb des Archivs von personalisierten Dateien anonymisiert werden (sie enthalten dann keinerlei unmittelbar identifizierende Informationen zu den Kursteilnehmer:innen), oder sollen die Verzeichnisnamen mit einem Merkmal versehen werden und die Metainformations-Dateien zusätzlich persönliche Daten enthalten?
|
||||
PersonalisedSheetFilesDownloadAnonymousFieldTip: Sollen Verzeichnisnamen innerhalb des Archivs von personalisierten Dateien anonymisiert werden (sie enthalten dann keinerlei unmittelbar identifizierende Informationen zu den Kursartteilnehmer:innen), oder sollen die Verzeichnisnamen mit einem Merkmal versehen werden und die Metainformations-Dateien zusätzlich persönliche Daten enthalten?
|
||||
PersonalisedSheetFilesMetaFilename uid@CryptoFileNameUser: meta-informationen_#{toPathPiece uid}.yaml
|
||||
PersonalisedSheetFilesArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-personalisierte_dateien
|
||||
SheetGeneratePseudonym: Generieren
|
||||
SheetFileTypeHeader: Zugehörigkeit
|
||||
SheetCorrectorSubmissionsTip: Abgabe erfolgt über ein Uni2work-externes Verfahren (zumeist in Papierform durch Einwurf) unter Angabe eines persönlichen Pseudonyms. Korrektor:innen können mithilfe des Pseudonyms später Korrekturergebnisse in Uni2work eintragen, damit Sie sie einsehen können.
|
||||
CorByTut: Zuteilung nach Tutorium
|
||||
CorByTut: Zuteilung nach Kurs
|
||||
RatingAchievedOf achieved@Points possible@Points: #{achieved} von #{possible}
|
||||
RatingPassed: Bestanden
|
||||
RatingNotPassed: Nicht bestanden
|
||||
@ -159,9 +159,9 @@ SheetGradingPassAlways: Automatisch bestanden, sobald korrigiert
|
||||
SheetAuthorshipStatementSection: Eigenständigkeitserklärung
|
||||
SheetAuthorshipStatementRequired: Eigenständigkeitserklärung für Übungsblattabgaben einfordern?
|
||||
SheetAuthorshipStatementRequiredTip: Sollen die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden, eine Eigenständigkeitserklärung abzugeben?
|
||||
SheetAuthorshipStatementRequiredForcedTip: Für dieses Institut sind Eigenständigkeitserklärungen für nicht-prüfungszugehörige Übungsblätter vorgeschrieben.
|
||||
SheetAuthorshipStatementRequiredForcedTip: Für diesen Bereich sind Eigenständigkeitserklärungen für nicht-prüfungszugehörige Übungsblätter vorgeschrieben.
|
||||
SheetAuthorshipStatementContent: Eigenständigkeitserklärung
|
||||
SheetAuthorshipStatementContentForcedTip: Für dieses Institut ist die institutsweit vorgegebene Eigenständigkeitserklärung für nicht-prüfungszugehörige Übungsblätter zu verwenden. Benutzerdefinierte Erklärungen sind nicht gestattet.
|
||||
SheetAuthorshipStatementContentForcedTip: Für diesen Bereich ist die bereichsweit vorgegebene Eigenständigkeitserklärung für nicht-prüfungszugehörige Übungsblätter zu verwenden. Benutzerdefinierte Erklärungen sind nicht gestattet.
|
||||
SheetAuthorshipStatementContentOverridesExamTip: Gehört dieses Übungsblatt zu einer Prüfung mit einer prüfungsweit eingestellten Eigenständigkeitserklärung, so können Sie hier eine für dieses Übungsblatt abweichende Eigenständigkeitserklärung angeben.
|
||||
SheetAuthorshipStatementExamNone: Keine Prüfung
|
||||
SheetAuthorshipStatementExam: Zugeordnete Prüfung
|
||||
|
||||
@ -13,8 +13,8 @@ SheetDeleteQuestion: Do you really want to delete the below-mentioned exercise s
|
||||
SheetDeleted: Successfully deleted exercise sheet
|
||||
SheetArchiveName tid ssh csh shn: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}
|
||||
SheetTypeArchiveName tid ssh csh shn renderedSft: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-#{foldCase renderedSft}
|
||||
SheetEditOk tid ssh csh sheetName: Successfully saved exercise sheet #{sheetName} in course #{tid}-#{ssh}-#{csh}
|
||||
SheetNameDup tid ssh csh sheetName: There already is an exercise sheet #{sheetName} in course #{tid}-#{ssh}-#{csh}
|
||||
SheetEditOk tid ssh csh sheetName: Successfully saved exercise sheet #{sheetName} in course type #{tid}-#{ssh}-#{csh}
|
||||
SheetNameDup tid ssh csh sheetName: There already is an exercise sheet #{sheetName} in course type #{tid}-#{ssh}-#{csh}
|
||||
SheetVisibleFrom: Visible from (for participants)
|
||||
SheetVisibleFromTip: Always invisible for participants and no submission possible if left empty; only leave this field empty for temporary/unfinished sheets
|
||||
SheetActiveFrom: Active from/Submission period start
|
||||
@ -24,7 +24,7 @@ SheetSolutionFromTip: Always invisible for participants if left empty; corrector
|
||||
SheetName: Name
|
||||
SheetDescription: Description
|
||||
SheetRequireExam: Require registration for an exam?
|
||||
SheetRequireExamTip: If registration for an exam is required, only course participants that are registered for that exam at the time of submission will be allowed to create submission. Download of sheet files will also be restricted to course participants registered for the exam.
|
||||
SheetRequireExamTip: If registration for an exam is required, only course type participants that are registered for that exam at the time of submission will be allowed to create submission. Download of sheet files will also be restricted to course type participants registered for the exam.
|
||||
SheetRequiredExam: Exam
|
||||
SheetFormType: Valuation & submission
|
||||
SheetFormTimes: Times
|
||||
@ -37,15 +37,15 @@ SheetMarkingFiles: Correction
|
||||
SheetMarkingTip: Instructions for correction, visible only to correctors
|
||||
SheetPersonalisedFilesDownload: Download personalised sheet files
|
||||
SheetPersonalisedFiles: Personalised sheet files
|
||||
SheetPersonalisedFilesTip: Should course participants be assigned personalised sheet files in addition to the files configured above? Only the user to which a file has been assigned may view it.
|
||||
SheetPersonalisedFilesTip: Should course type participants be assigned personalised sheet files in addition to the files configured above? Only the user to which a file has been assigned may view it.
|
||||
SheetPersonalisedFilesUpload: Personalised sheet files
|
||||
SheetPersonalisedFilesUploadTip: Download the template for a ZIP-archive of personalised sheet files, move files into the directories corresponding to the desired users and upload the archive again. If the name of a personalised file matches the name of an unpersonalised file, the personalised file replaces the unpersonalised one from the respective participants' point of view.
|
||||
SheetPersonalisedFilesKeepExisting: Keep existing files
|
||||
SheetPersonalisedFilesKeepExistingTip: Should the personalised files you upload be added to the already existing ones, if applicable? Otherwise the files you upload will completely replace any existing files.
|
||||
SheetPersonalisedFilesAllowNonPersonalisedSubmission: Allow non-personalised submission
|
||||
SheetPersonalisedFilesAllowNonPersonalisedSubmissionTip: Should course participants with no assigned personalised files be allowed to submit anyway?
|
||||
SheetPersonalisedFilesAllowNonPersonalisedSubmissionTip: Should course type participants with no assigned personalised files be allowed to submit anyway?
|
||||
SheetPersonalisedFilesDownloadTemplateHere: You can download a template for a ZIP-archive of personalised sheet files with the structure that Uni2work expects here:
|
||||
SheetPersonalisedFilesUsersList: List of course participants who have personalised sheet files
|
||||
SheetPersonalisedFilesUsersList: List of course type participants who have personalised sheet files
|
||||
SheetPersonalisedFilesMetaYAMLSeedComment: This string was generated cryptographically from data uniquely identifying the user and exercise sheet. You can use it as a seed for a pseudorandom generator for generating (parts of) the personalised files.
|
||||
SheetPersonalisedFilesMetaYAMLNoSeedComment: There is not enough information available to generate a seed. You will have to create the exercise sheet in Uni2work first. Once seeds can be generated they will be generated cryptographically and you may use them to generate (parts of) the personalised files.
|
||||
SheetActiveFromTip: The exercise sheet's assignment will only be available for download and submission starting at this time. If left empty no submission or download of assignment is ever allowed
|
||||
@ -63,10 +63,10 @@ SheetErrDeadlineEarly: "Submission period end" must be after "Submission period
|
||||
SheetErrHintEarly: "Hint from" must be after "Submission period start"
|
||||
SheetErrSolutionEarly: "Solution from" must be after "Submission period end"
|
||||
SheetErrVisibleWithoutActive: If “Visible from (for participants)” is specified “Active from/Submission period start” must also be specified
|
||||
SheetSubmissionModeNoneWithoutNotGraded: The sheet was configured to be "No submission" but not "Not marked". Course participants will not be able to submit.
|
||||
SheetSubmissionModeNoneWithoutNotGraded: The sheet was configured to be "No submission" but not "Not marked". Course type participants will not be able to submit.
|
||||
SheetWarnNoActiveTo: “Active to/Submission period end” should always be specified
|
||||
CountTutProp: Tutorials count against proportion
|
||||
CountTutPropTip: If submissions are assigned by tutorial, do those assignments count with regard to the set proportion?
|
||||
CountTutProp: Courses count against proportion
|
||||
CountTutPropTip: If submissions are assigned by course, do those assignments count with regard to the set proportion?
|
||||
ConsiderDeficits: Compensate deficits
|
||||
ConsiderDeficitsTip: When a corrector (as per the current state) was assigned fewer or more corrections than would be expected according to their proportions, this is considered a deficit. Should Uni2work try to compensate for these deficits when assigning corrections for this sheet?
|
||||
SheetCorrector: Corrector
|
||||
@ -82,19 +82,19 @@ RatingPercent: Achieved
|
||||
IsRated: Marked
|
||||
SheetTypeIsExam: Rating „as an exam part“
|
||||
SheetGradingSummaryTitle intgr: #{intgr} #{pluralEN intgr "sheet" "sheets"}
|
||||
PersonalisedSheetFilesIgnored count: #{count} uploaded #{pluralEN count "file was" "files were"} ignored because #{pluralEN count "it" "they"} could not be associated with both a sheet file type and a course participant.
|
||||
PersonalisedSheetFilesIgnored count: #{count} uploaded #{pluralEN count "file was" "files were"} ignored because #{pluralEN count "it" "they"} could not be associated with both a sheet file type and a course type participant.
|
||||
PersonalisedSheetFilesIgnoredIntro: The following files were ignored:
|
||||
PersonalisedSheetFilesDownloadRestrictByExamNone: No restriction
|
||||
PersonalisedSheetFilesDownloadRestrictByExam: Restrict to exam participants
|
||||
PersonalisedSheetFilesDownloadRestrictByExamTip: Only download personalised sheet files for participants also registered to a certain exam?
|
||||
PersonalisedSheetFilesDownloadAnonymousField: Anonymisation
|
||||
PersonalisedSheetFilesDownloadAnonymousFieldTip: Should the ZIP-archive of personalised files be anonymised (it would then contain no immediately identifiable information regard the course participants) or should directory names be decorated with an identifiable feature of the user and the files of meta information contain additional personal data?
|
||||
PersonalisedSheetFilesDownloadAnonymousFieldTip: Should the ZIP-archive of personalised files be anonymised (it would then contain no immediately identifiable information regard the course type participants) or should directory names be decorated with an identifiable feature of the user and the files of meta information contain additional personal data?
|
||||
PersonalisedSheetFilesMetaFilename uid: meta-information_#{toPathPiece uid}.yaml
|
||||
PersonalisedSheetFilesArchiveName tid ssh csh shn: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-personalised_files
|
||||
SheetGeneratePseudonym: Generate
|
||||
SheetFileTypeHeader: Belongs to
|
||||
SheetCorrectorSubmissionsTip: Submissions are expected to be handed in through some Uni2work-external procedure (usually on paper) marked with your personal pseudonym. Correctors can, using the pseudonym, register the marking in Uni2work for you to review.
|
||||
CorByTut: Assign by tutorial
|
||||
CorByTut: Assign by course
|
||||
RatingAchievedOf achieved possible: #{achieved} of #{possible}
|
||||
RatingPassed: Passed
|
||||
RatingNotPassed: Failed
|
||||
|
||||
@ -49,10 +49,10 @@ SubmissionArchive: Zip-Archiv der Abgabedatei(en)
|
||||
SubmissionArchiveCorrected: Zip-Archiv der Abgabedatei(en) inkl. Korrekturen
|
||||
SubmissionFile: Datei zur Abgabe
|
||||
SubmissionFiles: Abgegebene Dateien
|
||||
EmailInvitationWarningPrevCoSubmittors: Diese Adresse konnte keinem Kursteilnehmer/keiner Kursteilnehmerin, mit dem Sie schon einmal für diesen Kurs abgegeben haben, zugeordnet werden. Es wird eine Einladung per E-Mail versandt.
|
||||
EmailInvitationWarningCourseParticipants: Diese Adresse konnte keinem Kursteilnehmer/keiner Kursteilnehmerin zugeordnet werden. Es wird eine Einladung per E-Mail versandt.
|
||||
MultiUserFieldExplanationPrevCoSubmittors: Dieses Eingabefeld sucht in den Adressen von Kursteilnehmer:innen, für die gesichert werden kann, dass Sie zusammen mit den dahinter stehenden Personen schon einmal für diesen Kurs abgegeben haben.
|
||||
MultiUserFieldExplanationCourseParticipants: Dieses Eingabefeld sucht in den Adressen von Kursteilnehmer:innen.
|
||||
EmailInvitationWarningPrevCoSubmittors: Diese Adresse konnte keinem Kursartteilnehmer/keiner Kursartteilnehmerin, mit dem Sie schon einmal für diese Kursart abgegeben haben, zugeordnet werden. Es wird eine Einladung per E-Mail versandt.
|
||||
EmailInvitationWarningCourseParticipants: Diese Adresse konnte keinem Kursartteilnehmer/keiner Kursartteilnehmerin zugeordnet werden. Es wird eine Einladung per E-Mail versandt.
|
||||
MultiUserFieldExplanationPrevCoSubmittors: Dieses Eingabefeld sucht in den Adressen von Kursartteilnehmer:innen, für die gesichert werden kann, dass Sie zusammen mit den dahinter stehenden Personen schon einmal für diese Kursart abgegeben haben.
|
||||
MultiUserFieldExplanationCourseParticipants: Dieses Eingabefeld sucht in den Adressen von Kursartteilnehmer:innen.
|
||||
SubmissionMembers: Abgebende
|
||||
SubmissionMember: Abgebende(r)
|
||||
SubmissionUsersEmpty: Es kann keine Abgabe ohne Abgebende erstellt werden
|
||||
@ -60,7 +60,7 @@ SubmissionUserAlreadyAdded: Nutzer:in ist bereits als Mitabgebende(r) eingetrage
|
||||
SubmissionWrongSheet: Abgabenummer gehört nicht zum angegebenen Übungsblatt.
|
||||
SubmissionAlreadyExists: Sie haben bereits eine Abgabe zu diesem Übungsblatt.
|
||||
SubmissionAlreadyExistsFor email@UserEmail: #{email} hat bereits eine Abgabe zu diesem Übungsblatt.
|
||||
NotAParticipant email@UserEmail tid@TermId csh@CourseShorthand: #{email} ist nicht im Kurs #{tid}-#{csh} angemeldet.
|
||||
NotAParticipant email@UserEmail tid@TermId csh@CourseShorthand: #{email} ist nicht in Kursart #{tid}-#{csh} angemeldet.
|
||||
TooManyParticipants: Es wurden zu viele Mitabgebende angegeben
|
||||
SubmissionCreated: Abgabe erfolgreich angelegt
|
||||
SubmissionUpdated: Abgabe erfolgreich ersetzt
|
||||
@ -74,7 +74,7 @@ SubmissionUsers: Studenten
|
||||
AssignedTime: Zuteilung
|
||||
SubmissionPseudonym !ident-ok: Pseudonym
|
||||
Pseudonyms: Pseudonyme
|
||||
CourseCorrectionsTitle: Korrekturen für diesen Kurs
|
||||
CourseCorrectionsTitle: Korrekturen für diese Kursart
|
||||
SubmissionArchiveName: abgaben
|
||||
SubmissionsAssignUnauthorized num@Int64: #{num} #{pluralDE num "Abgabe" "Abgaben"} können momentan keiner Korrktorin/keinem Korrektor zugeteilt werden (z.B. weil die Abgabe noch offen ist):
|
||||
UpdatedAssignedCorrectorSingle num@Int64: #{num} #{pluralDE num "Abgabe" "Abgaben"} wurden dem neuen Korrektor/der neuen Korrektorin zugeteilt.
|
||||
@ -155,7 +155,7 @@ SubmissionSomeUsersDuplicateWarning: Manche Abgebende sind auch an einer anderen
|
||||
|
||||
EMailUnknown email@UserEmail: E-Mail #{email} gehört zu keinem bekannten Benutzer.
|
||||
CorDeficitProportion: Defizit Anteile
|
||||
CosubmittorTip: Einladungen per E-Mail erhalten genau jene Adressen, für die nicht gesichert werden kann, dass sie mit der dahinter stehenden Person schon einmal für diesen Kurs abgegeben haben. Wenn eine angegebene Adresse einer Person zugeordnet werden kann, mit der Sie in diesem Kurs schon einmal zusammen abgegeben haben, wird der Name der Person angezeigt und die Abgabe erfolgt sofort auch im Namen jener Person.
|
||||
CosubmittorTip: Einladungen per E-Mail erhalten genau jene Adressen, für die nicht gesichert werden kann, dass sie mit der dahinter stehenden Person schon einmal für diese Kursart abgegeben haben. Wenn eine angegebene Adresse einer Person zugeordnet werden kann, mit der Sie in dieser Kursart schon einmal zusammen abgegeben haben, wird der Name der Person angezeigt und die Abgabe erfolgt sofort auch im Namen jener Person.
|
||||
CorrDownload: Herunterladen
|
||||
SubmissionDownloadAnonymous: Anonymisiert
|
||||
SubmissionDownloadSurnames: Mit Nachnamen
|
||||
@ -237,9 +237,9 @@ SubmissionFilterAuthorshipStatementCurrent: Aktueller Wortlaut
|
||||
|
||||
SubmissionNoUsers: Diese Abgabe hat keine assoziierten Benutzer!
|
||||
|
||||
CsvColumnCorrectionTerm: Semester des Kurses der Abgabe
|
||||
CsvColumnCorrectionSchool: Institut des Kurses der Abgabe
|
||||
CsvColumnCorrectionCourse: Kürzel des Kurses der Abgabe
|
||||
CsvColumnCorrectionTerm: Jahr der Kursart der Abgabe
|
||||
CsvColumnCorrectionSchool: Bereich der Kursart der Abgabe
|
||||
CsvColumnCorrectionCourse: Kürzel der Kursart der Abgabe
|
||||
CsvColumnCorrectionSheet: Name des Übungsblatts der Abgabe
|
||||
CsvColumnCorrectionSubmission: Nummer der Abgabe (uwa…)
|
||||
CsvColumnCorrectionSurname: Nachnamen der Abgebenden als Semikolon (;) separierte Liste
|
||||
|
||||
@ -49,10 +49,10 @@ SubmissionArchive: Zip-archive of submission files
|
||||
SubmissionArchiveCorrected: Zip-archive of submission files including corrections
|
||||
SubmissionFile: Submission file
|
||||
SubmissionFiles: Submitted files
|
||||
EmailInvitationWarningPrevCoSubmittors: This address could not be matched to any course participant with whom you have submitted for this course before. An Invitation will be sent via email.
|
||||
EmailInvitationWarningCourseParticipants: This address coulde not be matched to any course participant. An Invitation will be sent via email.
|
||||
MultiUserFieldExplanationPrevCoSubmittors: This input searches through the addresses of all course participants for whom it could be determined, that you have already submitted with that person for this course.
|
||||
MultiUserFieldExplanationCourseParticipants: This input searches through the addresses of all course participants.
|
||||
EmailInvitationWarningPrevCoSubmittors: This address could not be matched to any course type participant with whom you have submitted for this course type before. An Invitation will be sent via email.
|
||||
EmailInvitationWarningCourseParticipants: This address coulde not be matched to any course type participant. An Invitation will be sent via email.
|
||||
MultiUserFieldExplanationPrevCoSubmittors: This input searches through the addresses of all course type participants for whom it could be determined, that you have already submitted with that person for this course.
|
||||
MultiUserFieldExplanationCourseParticipants: This input searches through the addresses of all course type participants.
|
||||
SubmissionAlreadyExistsFor email: #{email} already has a submission for this sheet.
|
||||
SubmissionUsersEmpty: Submissions may not be created without submittors.
|
||||
SubmissionUserAlreadyAdded: This user is already configured as a submittor
|
||||
@ -155,7 +155,7 @@ SubmissionSomeUsersDuplicateWarning: Some submittors are also submittors for a d
|
||||
|
||||
EMailUnknown email: Email #{email} does not belong to any known user.
|
||||
CorDeficitProportion: Deficit (proportion)
|
||||
CosubmittorTip: Invitations are sent via email to exactly those addresses for which it cannot be determined, that you have already submitted for this course with the associated person, at least once. If one of the specified addresses can be matched to a person with whom you have submitted at least once for this course already, the name of that person will be shown and the submission will immediately be made in their name as well.
|
||||
CosubmittorTip: Invitations are sent via email to exactly those addresses for which it cannot be determined, that you have already submitted for this course type with the associated person, at least once. If one of the specified addresses can be matched to a person with whom you have submitted at least once for this course type already, the name of that person will be shown and the submission will immediately be made in their name as well.
|
||||
CorrDownload: Download
|
||||
SubmissionDownloadAnonymous: Anonymized
|
||||
SubmissionDownloadSurnames: With surnames
|
||||
@ -237,9 +237,9 @@ SubmissionFilterAuthorshipStatementCurrent: Current wording
|
||||
|
||||
SubmissionNoUsers: This submission has no associated users!
|
||||
|
||||
CsvColumnCorrectionTerm: Term of the course of the submission
|
||||
CsvColumnCorrectionSchool: School of the course of the submission
|
||||
CsvColumnCorrectionCourse: Shorthand of the course of the submission
|
||||
CsvColumnCorrectionTerm: Term of the course type of the submission
|
||||
CsvColumnCorrectionSchool: School of the course type of the submission
|
||||
CsvColumnCorrectionCourse: Shorthand of the course type of the submission
|
||||
CsvColumnCorrectionSheet: Name of the sheet of the submission
|
||||
CsvColumnCorrectionSubmission: Number of the submission (uwa…)
|
||||
CsvColumnCorrectionSurname: Submittor's surnames, separated by semicolon (;)
|
||||
|
||||
@ -2,27 +2,27 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
CommTutorialHeading: Tutorium-Mitteilung
|
||||
CommTutorialHeading: Kursmitteilung
|
||||
ParticipantsN n@Int: #{n} #{pluralDE n "Teilnehmer:in" "Teilnehmer:innen"}
|
||||
TutorialDeleteQuestion: Wollen Sie das unten aufgeführte Tutorium wirklich löschen?
|
||||
TutorialDeleted: Tutorium gelöscht
|
||||
TutorialNameTaken tutn@TutorialName: Es existiert bereits anderes Tutorium mit Namen #{tutn}
|
||||
TutorialCreated tutn@TutorialName: Tutorium #{tutn} erfolgreich angelegt
|
||||
TutorialEdited tutn@TutorialName: Tutiorium #{tutn} erfolgreich bearbeitet
|
||||
TutorialDeleteQuestion: Wollen Sie den unten aufgeführten Kurs wirklich löschen?
|
||||
TutorialDeleted: Kurs gelöscht
|
||||
TutorialNameTaken tutn@TutorialName: Es existiert bereits ein anderer Kurs mit Namen #{tutn}
|
||||
TutorialCreated tutn@TutorialName: Kurs #{tutn} erfolgreich angelegt
|
||||
TutorialEdited tutn@TutorialName: Kurs #{tutn} erfolgreich bearbeitet
|
||||
TutorialEditHeading tutn@TutorialName: #{tutn} bearbeiten
|
||||
TutorEmail: E-Mail
|
||||
TutorialTutorAlreadyAdded: Ein Tutor/Eine Tutorin mit dieser E-Mail ist bereits für dieses Tutorium eingetragen
|
||||
TutorialNameTip: Muss innerhalb des Kurses eindeutig sein
|
||||
TutorialTypePlaceholder: Tutorium, Zentralübung, ...
|
||||
TutorialTutorAlreadyAdded: Ein Ausblider/Eine Ausbilderin mit dieser E-Mail ist bereits für diesen Kurs eingetragen
|
||||
TutorialNameTip: Muss innerhalb der Kursart eindeutig sein
|
||||
TutorialTypePlaceholder: Schulung, Praxisfahrt, ...
|
||||
TutorialTypeTip: Dient nur der Information der Studierenden
|
||||
TutorialRegGroupTip: Studenten können sich in jeweils maximal einem Tutorium pro Registrierungs-Gruppe anmelden. Ist bei zwei oder mehr Tutorien keine Registrierungs-Gruppe gesetzt zählen diese als in verschiedenen Registrierungs-Gruppen
|
||||
TutorialRegGroupTip: Studenten können sich in jeweils maximal einem Kurs pro Registrierungs-Gruppe anmelden. Ist bei zwei oder mehr Kurse keine Registrierungs-Gruppe gesetzt zählen diese als in verschiedenen Registrierungs-Gruppen
|
||||
TutorialRegGroup: Registrierungs-Gruppe
|
||||
TutorialTutorControlled: Tutoren dürfen Tutorium editieren
|
||||
TutorialTutorControlledTip: Sollen Tutor:innen beliebige Aspekte dieses Tutoriums (Name, Registrierungs-Gruppe, Raum, Zeit, andere Tutor:innen, ...) beliebig editieren dürfen?
|
||||
TutorialTutorControlled: Ausbilder dürfen Kurs editieren
|
||||
TutorialTutorControlledTip: Sollen Ausbilder:innen beliebige Aspekte dieses Kurses (Name, Registrierungs-Gruppe, Raum, Zeit, andere Ausbilder:innen, ...) beliebig editieren dürfen?
|
||||
TutorialCapacity: Kapazität
|
||||
TutorialCapacityNonPositive: Kapazität muss größer oder gleich null sein
|
||||
TutorialCapacityTip: Beschränkt wieviele Studierende sich zu diesem Tutorium anmelden können
|
||||
TutorialRoomHiddenTip: Soll der Raum nur den Teilnehmer:innen des Tutoriums angezeigt werden?
|
||||
TutorialCapacityTip: Beschränkt wieviele Studierende sich zu diesem Kurs anmelden können
|
||||
TutorialRoomHiddenTip: Soll der Raum nur den Teilnehmer:innen des Kurses angezeigt werden?
|
||||
RegisterFrom: Anmeldungen von
|
||||
RegisterTo: Anmeldungen bis
|
||||
TutorialRegisterFromTip: Ohne Datum ist keine eigenständige Anmeldung von Studierenden erlaubt.
|
||||
@ -33,20 +33,20 @@ TutorialDate: Datum
|
||||
TutorialParticipants: Teilnehmer:innen
|
||||
TutorialEdit: Bearbeiten
|
||||
TutorialDelete: Löschen
|
||||
TutorialsHeading: Tutorien
|
||||
TutorialNew: Neues Tutorium
|
||||
TutorialRegisteredSuccess tutn@TutorialName: Erfolgreich zum Tutorium #{tutn} angemeldet
|
||||
TutorialDeregisteredSuccess tutn@TutorialName: Erfolgreich vom Tutorium #{tutn} abgemeldet
|
||||
MailSubjectTutorInvitation tid@TermId ssh@SchoolId csh@CourseShorthand tutn@TutorialName: [#{tid}-#{ssh}-#{csh}] Einladung zum Tutor für #{tutn}
|
||||
TutorInviteHeading tutn@TutorialName: Einladung zum Tutor/zur Tutorin für #{tutn}
|
||||
TutorInviteExplanation: Sie wurden eingeladen, Tutor:in zu sein.
|
||||
TutorialsHeading: Kurse
|
||||
TutorialNew: Neuer Kurs
|
||||
TutorialRegisteredSuccess tutn@TutorialName: Erfolgreich zum Kurs #{tutn} angemeldet
|
||||
TutorialDeregisteredSuccess tutn@TutorialName: Erfolgreich vom Kurs #{tutn} abgemeldet
|
||||
MailSubjectTutorInvitation tid@TermId ssh@SchoolId csh@CourseShorthand tutn@TutorialName: [#{tid}-#{ssh}-#{csh}] Einladung zum Ausbilder für #{tutn}
|
||||
TutorInviteHeading tutn@TutorialName: Einladung zum Ausbilder/zur Ausbilderin für #{tutn}
|
||||
TutorInviteExplanation: Sie wurden eingeladen, Ausbilder:in zu sein.
|
||||
TutorCorrectorInvitationAccepted shn@SheetName: Sie wurden als Korrektor:in für #{shn} eingetragen
|
||||
TutorialUsersDeregistered count@Int64: #{show count} #{pluralDE count "-Tutorium-Teilnehmer:in" "Tutorium-Teilnehmer:innen" } abgemeldet
|
||||
TutorialUserDeregister: Vom Tutorium Abmelden
|
||||
TutorialUsersDeregistered count@Int64: #{show count} #{pluralDE count "-Kursteilnehmer:in" "Kursteilnehmer:innen" } abgemeldet
|
||||
TutorialUserDeregister: Vom Kurs abmelden
|
||||
TutorialUserSendMail: Mitteilung verschicken
|
||||
TutorialUserPrintQualification: Zertifikat drucken
|
||||
TutorialUserGrantQualification: Qualifikation vergeben
|
||||
TutorialUserRenewQualification: Qualifikation regulär verlängern
|
||||
TutorialUserRenewedQualification n@Int: Qualifikation für #{tshow n} Tutoriums-#{pluralDE n "Teilnehmer:in" "Teilnehmer:innen"} regulär verlängert
|
||||
TutorialUserGrantedQualification n@Int: Qualifikation erfolgreich an #{tshow n} Tutoriums-#{pluralDE n "Teilnehmer:in" "Teilnehmer:innen"} vergeben
|
||||
CommTutorial: Tutorium-Mitteilung
|
||||
TutorialUserRenewedQualification n@Int: Qualifikation für #{tshow n} Kurs-#{pluralDE n "Teilnehmer:in" "Teilnehmer:innen"} regulär verlängert
|
||||
TutorialUserGrantedQualification n@Int: Qualifikation erfolgreich an #{tshow n} Kurs-#{pluralDE n "Teilnehmer:in" "Teilnehmer:innen"} vergeben
|
||||
CommTutorial: Kursmitteilung
|
||||
@ -2,27 +2,27 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
CommTutorialHeading: Tutorial message
|
||||
CommTutorialHeading: Course message
|
||||
ParticipantsN n: #{n} #{pluralEN n "participant" "participants"}
|
||||
TutorialDeleteQuestion: Do you really want to delete the tutorial listed below?
|
||||
TutorialDeleted: Tutorial deleted
|
||||
TutorialNameTaken tutn: A tutorial named #{tutn} already exists
|
||||
TutorialCreated tutn: Successfully created tutorial #{tutn}
|
||||
TutorialEdited tutn: Successfully edited tutorial #{tutn}
|
||||
TutorialDeleteQuestion: Do you really want to delete the course listed below?
|
||||
TutorialDeleted: Course deleted
|
||||
TutorialNameTaken tutn: A course named #{tutn} already exists
|
||||
TutorialCreated tutn: Successfully created course #{tutn}
|
||||
TutorialEdited tutn: Successfully edited course #{tutn}
|
||||
TutorialEditHeading tutn: Edit #{tutn}
|
||||
TutorEmail: Email
|
||||
TutorialTutorAlreadyAdded: An user with this email address is already registered as tutor
|
||||
TutorialNameTip: Needs to be unique within the course
|
||||
TutorialTypePlaceholder: Tutorial, Exercise discussion, ...
|
||||
TutorialTutorAlreadyAdded: An user with this email address is already registered as instructor
|
||||
TutorialNameTip: Needs to be unique within the course type
|
||||
TutorialTypePlaceholder: Tutorial, Driving lesson, ...
|
||||
TutorialTypeTip: Only for informational purposes
|
||||
TutorialRegGroupTip: Course participants may only register for a maximum of one tutorial per registration group. Tutorials that do not have a registration group are treated as being in different registration groups
|
||||
TutorialRegGroupTip: Course type participants may only register for a maximum of one course per registration group. Courses that do not have a registration group are treated as being in different registration groups
|
||||
TutorialRegGroup: Registration group
|
||||
TutorialTutorControlled: Tutors may edit tutorial
|
||||
TutorialTutorControlledTip: Should tutors be allowed to edit arbitrary aspects of this tutorial (name, registration group, room, time, other tutors, ...) at will?
|
||||
TutorialTutorControlled: Instructors may edit course
|
||||
TutorialTutorControlledTip: Should instructors be allowed to edit arbitrary aspects of this course (name, registration group, room, time, other instructors, ...) at will?
|
||||
TutorialCapacity: Capacity
|
||||
TutorialCapacityNonPositive: Capacity may not be negative
|
||||
TutorialCapacityTip: Limits how many course participants may register for this tutorial
|
||||
TutorialRoomHiddenTip: Should the room only be displayed to tutorial participants?
|
||||
TutorialCapacityTip: Limits how many course type participants may register for this course
|
||||
TutorialRoomHiddenTip: Should the room only be displayed to course participants?
|
||||
RegisterFrom: Enrolment starts
|
||||
RegisterTo: Enrolment ends
|
||||
TutorialRegisterFromTip: When left empty students will not be able to enrol themselves
|
||||
@ -33,21 +33,21 @@ TutorialDate: Date
|
||||
TutorialParticipants: Participants
|
||||
TutorialEdit: Edit
|
||||
TutorialDelete: Delete
|
||||
TutorialsHeading: Tutorials
|
||||
TutorialNew: New tutorial
|
||||
TutorialRegisteredSuccess tutn: Successfully registered for the tutorial #{tutn}
|
||||
TutorialDeregisteredSuccess tutn: Successfully de-registered for the tutorial #{tutn}
|
||||
MailSubjectTutorInvitation tid ssh csh tutn: [#{tid}-#{ssh}-#{csh}] Invitation to be a tutor for #{tutn}
|
||||
TutorInviteHeading tutn: Invitation to be tutor for #{tutn}
|
||||
TutorInviteExplanation: You were invited to be a tutor.
|
||||
TutorialsHeading: Courses
|
||||
TutorialNew: New course
|
||||
TutorialRegisteredSuccess tutn: Successfully registered for the course #{tutn}
|
||||
TutorialDeregisteredSuccess tutn: Successfully de-registered for the course #{tutn}
|
||||
MailSubjectTutorInvitation tid ssh csh tutn: [#{tid}-#{ssh}-#{csh}] Invitation to be a instructor for #{tutn}
|
||||
TutorInviteHeading tutn: Invitation to be instructor for #{tutn}
|
||||
TutorInviteExplanation: You were invited to be a instructor.
|
||||
TutorCorrectorInvitationAccepted shn: You are now a corrector for #{shn}
|
||||
TutorialUsersDeregistered count: Successfully deregistered #{show count} participants from tutorial
|
||||
TutorialUsersDeregistered count: Successfully deregistered #{show count} participants from course
|
||||
|
||||
TutorialUserDeregister: Deregister from tutorial
|
||||
TutorialUserDeregister: Deregister from course
|
||||
TutorialUserSendMail: Send mail
|
||||
TutorialUserPrintQualification: Print certificate
|
||||
TutorialUserGrantQualification: Grant qualification
|
||||
TutorialUserRenewQualification: Renew qualification
|
||||
TutorialUserRenewedQualification n@Int: Successfully renewed qualification #{tshow n} tutorial #{pluralEN n "user" "users"}
|
||||
TutorialUserGrantedQualification n: Successfully granted qualification #{tshow n} tutorial #{pluralEN n "user" "users"}
|
||||
CommTutorial: Tutorial message
|
||||
TutorialUserRenewedQualification n@Int: Successfully renewed qualification #{tshow n} course #{pluralEN n "user" "users"}
|
||||
TutorialUserGrantedQualification n: Successfully granted qualification #{tshow n} course #{pluralEN n "user" "users"}
|
||||
CommTutorial: Course message
|
||||
|
||||
@ -7,7 +7,7 @@ InfoSupervisorTitle: Hinweise für Ansprechpartner
|
||||
InfoLecturerTitle: Hinweise für Veranstalter:innen
|
||||
InfoLecturerCourses: Veranstaltungen
|
||||
InfoLecturerExercises: Übungsbetrieb
|
||||
InfoLecturerTutorials: Tutorien
|
||||
InfoLecturerTutorials: Kurse
|
||||
InfoLecturerExams: Prüfungen
|
||||
LecturerInfoTooltipNew: Neues Feature
|
||||
LecturerInfoTooltipProblem: Feature mit bekannten Problemen
|
||||
@ -20,8 +20,8 @@ KnownBugs: Bekannte Bugs
|
||||
ImplementationDetails: Implementierung
|
||||
Clone: Klonen
|
||||
Administrator: Administrator:in
|
||||
CommCourse: Kursmitteilung
|
||||
CommCourse: Kursartmitteilung
|
||||
Corrector: Korrektor:in
|
||||
DefinitionCourseEvents: Kurstermine
|
||||
DefinitionCourseNews: Kurs-Aktuelles
|
||||
DefinitionCourseEvents: Kursarttermine
|
||||
DefinitionCourseNews: Kursart-Aktuelles
|
||||
Invitations: Einladungen
|
||||
|
||||
@ -3,16 +3,16 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
HeadingLegal: Legal
|
||||
InfoSupervisorTitle: Information for Supervisors
|
||||
InfoLecturerTitle: Information for lecturers
|
||||
InfoSupervisorTitle: Information for supervisors
|
||||
InfoLecturerTitle: Information for course administrators
|
||||
InfoLecturerCourses: Courses
|
||||
InfoLecturerExercises: Course Exercises
|
||||
InfoLecturerTutorials: Tutorials
|
||||
InfoLecturerExercises: Course type exercises
|
||||
InfoLecturerTutorials: Courses
|
||||
InfoLecturerExams: Exams
|
||||
LecturerInfoTooltipNew: New feature
|
||||
LecturerInfoTooltipProblem: Feature with known issues
|
||||
LecturerInfoTooltipPlanned: Planned feature
|
||||
LecturerInfoTooltipNewU2W: Unlike UniWorX
|
||||
LecturerInfoTooltipNewU2W: Unlike FRADrive
|
||||
GlossaryTitle: Glossary
|
||||
FaqTitle: Frequently asked questions
|
||||
VersionHistory: Version history
|
||||
@ -20,8 +20,8 @@ KnownBugs: Known bugs
|
||||
ImplementationDetails: Implementation
|
||||
Clone: Cloning
|
||||
Administrator: Administrator
|
||||
CommCourse: Course message
|
||||
CommCourse: Course type message
|
||||
Corrector: Corrector
|
||||
DefinitionCourseEvents: Course occurrences
|
||||
DefinitionCourseNews: Course news
|
||||
DefinitionCourseEvents: Course type occurrences
|
||||
DefinitionCourseNews: Course type news
|
||||
Invitations: Invitations
|
||||
|
||||
@ -15,7 +15,7 @@ ResetPassword: FRADrive-Passwort ändern bzw. setzen
|
||||
MailSubjectChangeUserDisplayEmail: E-Mail-Adresse in FRADrive verwenden
|
||||
MailIntroChangeUserDisplayEmail displayEmail@UserEmail: Der oben genannte Benutzer/Die oben genannte Benutzerin möchte „#{displayEmail}“ als E-Mail-Adresse in FRADrive verwenden. Wenn Sie diese Aktion nicht selbst ausgelöst haben, ignorieren Sie diese Mitteilung bitte!
|
||||
MailTitleChangeUserDisplayEmail displayName@Text: #{displayName} möchte diese E-Mail-Adresse in FRADrive verwenden
|
||||
CommCourseSubject: Kursmitteilung
|
||||
CommCourseSubject: Kursartmitteilung
|
||||
InvitationAcceptDecline: Einladung annehmen/ablehnen
|
||||
InvitationFromTip displayName@Text: Sie erhalten diese Einladung, weil #{displayName} ihren Versand in FRADrive ausgelöst hat.
|
||||
InvitationFromTipAnonymous: Sie erhalten diese Einladung, weil ein nicht eingeloggter Benutzer/eine nichteingeloggte Benutzerin ihren Versand in FRADrive ausgelöst hat.
|
||||
|
||||
@ -15,7 +15,7 @@ ResetPassword: Reselt FRADrive password
|
||||
MailSubjectChangeUserDisplayEmail: Set email address in FRADrive
|
||||
MailIntroChangeUserDisplayEmail displayEmail: The user mentioned above wants to set “#{displayEmail}” as their own email address. If you have not caused this email to be sent, please ignore it!
|
||||
MailTitleChangeUserDisplayEmail displayName: #{displayName} wants to set this email address as their own in FRADrive
|
||||
CommCourseSubject: Course message
|
||||
CommCourseSubject: Course type message
|
||||
InvitationAcceptDecline: Accept/Decline invitation
|
||||
InvitationFromTip displayName: You are receiving this invitation because #{displayName} has caused it to be sent from within FRADrive.
|
||||
InvitationFromTipAnonymous: You are receiving this invitiation because an user who didn't log in has caused it to be send from within FRADrive.
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
PJActAcknowledge: Druck und Versand bestätigen
|
||||
PJActReprint: Erneut drucken über APC
|
||||
PrintJobName: Bezeichnung
|
||||
PrintJobFilename: Dateiname
|
||||
PrintJobId !ident-ok: Id
|
||||
@ -11,12 +12,13 @@ PrintJobApcAcknowledge: Bestätigungs ID
|
||||
PrintJobAcknowledged: Bestätigt
|
||||
PrintJobUnacknowledged: Noch nicht gedruckt
|
||||
PrintJobAcknowledge n@Int64: #{n} #{pluralDE n "Druckauftrag" "Druckaufräge"} als gedruckt und versendet bestätigt
|
||||
PrintJobReprint n@Int m@Int: #{n}/#{m} #{pluralDE n "Druckauftrag" "Druckaufräge"} wurden erneut zum Drucken ans APC gesendet; Bestätigungs-Idents wurden dabei nicht verändert und sind nun ggf. doppelt vorhanden.
|
||||
PrintJobAcknowledgeFailed: Keine Druckaufträge bestätigt aufgrund zwischenzeitlicher Änderungen. Bitte die Seite im Browser aktualisieren!
|
||||
PrintJobAcknowledgeQuestion n@Int d@Text: #{n} #{pluralDE n "Druckauftrag" "Druckaufräge"} vom #{d} als gedruckt und versendet bestätigen?
|
||||
PrintJobAcknowledgements: Versanddatum von Briefen an
|
||||
PrintRecipient: Empfänger
|
||||
PrintSender !ident-ok: Sender
|
||||
PrintCourse: Kurse
|
||||
PrintCourse: Kursarten
|
||||
PrintQualification: Qualifikation
|
||||
PrintPDF !ident-ok: PDF
|
||||
PrintManualRenewal: Vorfeldführerschein Renewal-Brief testweise versenden
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
PJActAcknowledge: Acknowledge printing and mailing
|
||||
PJActReprint: Print again via APC
|
||||
PrintJobName: Description
|
||||
PrintJobFilename: Filename
|
||||
PrintJobId: Id
|
||||
@ -11,12 +12,13 @@ PrintJobApcAcknowledge: Acknowledge ID
|
||||
PrintJobAcknowledged: Acknowledged
|
||||
PrintJobUnacknowledged: Not yet printed
|
||||
PrintJobAcknowledge n: #{n} #{pluralENs n "print-job"} marked as printed and mailed
|
||||
PrintJobReprint n m: #{n}/#{m} #{pluralENs n "print-job"} were sent for printing to the APC once more. Notice that the acknowledge idents remained unchanged and may thus be duplicated now.
|
||||
PrintJobAcknowledgeFailed: No print-jobs acknowledged, due to intermediate changes. Please reload this page!
|
||||
PrintJobAcknowledgeQuestion n d: Mark #{n} #{pluralENs n "print-job"} issued on #{d} as printed and mailed already?
|
||||
PrintJobAcknowledgements: Sent-dates for Letter to
|
||||
PrintRecipient: Recipient
|
||||
PrintSender: Sender
|
||||
PrintCourse: Course
|
||||
PrintCourse: Course type
|
||||
PrintQualification: Qualification
|
||||
PrintPDF: PDF
|
||||
PrintManualRenewal: Manual sending of an apron driver's licence renewal letter
|
||||
|
||||
@ -9,8 +9,12 @@ QualificationValidIndicator: Gültigkeit
|
||||
QualificationValidDuration: Gültigkeitsdauer
|
||||
QualificationAuditDuration: Aufbewahrung Audit Log
|
||||
QualificationRefreshWithin: Erneurerungszeitraum
|
||||
QualificationRefreshWithinTooltip: Zeitraum für Versand einer Benachrichtigung oder für automatischen Start des E‑Learning
|
||||
QualificationRefreshWithinTooltip: Optionaler Zeitraum vor Ablauf für automatischen Start des E‑Learnings und Versand einer Benachrichtigung per Brief oder Email
|
||||
QualificationRefreshReminder: 2. Erinnerung
|
||||
QualificationRefreshReminderTooltip: Optionaler Zeitraum vor Ablauf zur Versendung einer zweiten Erinnerung per Brief oder Email mit identischen Zugangsdaten, sofern in diesem Zeitraum vor Ablauf noch keine Ablaufbenachrichtigung versendet wurde
|
||||
QualificationElearningStart: Wird das E‑Learning automatisch gestartet?
|
||||
QualificationExpiryNotification: Ungültigkeitsbenachrichtigung?
|
||||
QualificationExpiryNotificationTooltip: Nutzer werden benachrichtigt, wenn die Qualifikation ungültig wird, sofern der jeweilige Nutzer in seinen Benutzereinstellungen diese Art Benachrichtigung aktiviert hat.
|
||||
TableQualificationCountActive: Aktive
|
||||
TableQualificationCountActiveTooltip: Anzahl Personen mit momentan gültiger Qualifikation
|
||||
TableQualificationCountTotal: Gesamt
|
||||
@ -40,7 +44,7 @@ QualificationExpired: Ungültig seit
|
||||
LmsUser: Inhaber
|
||||
LmsURL: Link E‑Learning
|
||||
TableLmsEmail: E‑Mail
|
||||
TableLmsIdent: E-Learnung Benutzer
|
||||
TableLmsIdent: E-Learning Benutzer
|
||||
TableLmsElearning: E‑Learning
|
||||
TableLmsPin: E‑Learning Passwort
|
||||
TableLmsResetPin: E-Learning Passwort zurücksetzen?
|
||||
@ -65,6 +69,7 @@ LmsStatusDelay: Hinweis: Statusänderung können in seltenen Fällen mehrere Stu
|
||||
FilterLmsValid: Aktuell gültig
|
||||
FilterLmsRenewal: Erneuerung anstehend
|
||||
FilterLmsNotified: Benachrichtigt
|
||||
FilterLmsNotificationDue: Benachrichtigung erforderlich
|
||||
CsvColumnLmsIdent: E‑Learning Identifikator, einzigartig pro Qualifikation und Teilnehmer
|
||||
CsvColumnLmsPin: Passwort E#{nonBreakableDash}Learning Zugang
|
||||
CsvColumnLmsResetPin: Wird das E-Learning Passwort bei der nächsten Synchronisation zurückgesetzt?
|
||||
@ -102,6 +107,7 @@ QualificationStatusUnblock l@QualificationShorthand n@Int m@Int: #{n}/#{m} #{l}
|
||||
LmsInactive: Aktuell kein E‑Learning aktiv
|
||||
LmsRenewalInstructions: Weitere Anweisungen zur Verlängerung finden Sie im angehängten PDF. Um Missbrauch zu verhindern wurde das PDF mit dem im FRADrive hinterlegten PDF-Passwort des Prüflings verschlüsselt. Falls kein PDF-Passwort manuell hinterlegt wurde, ist das PDF-Passwort die Flughafen Ausweisnummer, inklusive Punkt und der Ziffer danach.
|
||||
LmsNoRenewal: Leider kann diese Qualifikation nicht alleine durch E‑Learning verlängert werden.
|
||||
LmsRenewalReminder: Erinnerung
|
||||
LmsActNotify: Benachrichtigung E‑Learning erneut per Post oder E-Mail versenden
|
||||
LmsActRenewPin: Neues zufällige E‑Learning Passwort zuweisen
|
||||
LmsActRenewNotify: Neue zufällige E‑Learning Passwort zuweisen und Benachrichtigung per Post oder E-Mail versenden
|
||||
|
||||
@ -9,8 +9,12 @@ QualificationValidIndicator: Validity
|
||||
QualificationValidDuration: Validity period
|
||||
QualificationAuditDuration: Audit log keept
|
||||
QualificationRefreshWithin: Refresh within
|
||||
QualificationRefreshWithinTooltip: Period before expiry to send a notification or to start e‑learning
|
||||
QualificationRefreshWithinTooltip: Optional period before expiry to start e‑learning and send a notification by post or email
|
||||
QualificationRefreshReminder: 2. Reminder
|
||||
QualificationRefreshReminderTooltip: Optional period before expiry to send a second notification by post or email once more, provided that no renewal notification was sent in this period before expiry
|
||||
QualificationElearningStart: Is e‑learning automatically started?
|
||||
QualificationExpiryNotification: Invalidity notification?
|
||||
QualificationExpiryNotificationTooltip: Qualification holder are notfied upon invalidity, provided they have activated such notification in their user settings.
|
||||
TableQualificationCountActive: Active
|
||||
TableQualificationCountActiveTooltip: Number of currently valid qualification holders
|
||||
TableQualificationCountTotal: Total
|
||||
@ -38,19 +42,19 @@ QualificationBlockNotify: Send notification
|
||||
QualificationBlockRemoveSupervisor: Remove all supervisors
|
||||
QualificationExpired: Expired on
|
||||
LmsUser: Licensee
|
||||
LmsURL: Link E-learning
|
||||
LmsURL: Link E‑learning
|
||||
TableLmsEmail: Email
|
||||
TableLmsIdent: E-learning user
|
||||
TableLmsIdent: E‑learning user
|
||||
TableLmsPin: E‑learning password
|
||||
TableLmsElearning: E‑learning
|
||||
TableLmsResetPin: Reset E-learning password?
|
||||
TableLmsDatePin: E-learning password created
|
||||
TableLmsResetPin: Reset E‑learning password?
|
||||
TableLmsDatePin: E‑learning password created
|
||||
TableLmsDelete: Delete?
|
||||
TableLmsStaff: Staff?
|
||||
TableLmsStarted: Started
|
||||
TableLmsReceived: Last update
|
||||
TableLmsNotified: Notification sent
|
||||
TableLmsNotifiedTooltip: Notfications are not sent before the LMS acknowledges the opening of the e‑learning course for the user, which may take several hours!
|
||||
TableLmsNotifiedTooltip: Notfications are not sent before the LMS acknowledges the opening of the e‑learning course type for the user, which may take several hours!
|
||||
TableLmsEnded: Ended
|
||||
TableLmsStatus: Status e‑learning
|
||||
TableLmsStatusTooltip mbMonth: Shows #{maybeToMessage "for up to " (fmap (flip pluralENsN "month") mbMonth) " after closure"} the last e#{nonBreakableDash}learning status change:
|
||||
@ -65,10 +69,11 @@ LmsStatusDelay: Note that status changes may occassionaly require more than a ho
|
||||
FilterLmsValid: Currently valid
|
||||
FilterLmsRenewal: Renewal due
|
||||
FilterLmsNotified: Notified
|
||||
FilterLmsNotificationDue: Notification due
|
||||
CsvColumnLmsIdent: E#{nonBreakableDash}learning identifier, unique for each qualification and user
|
||||
CsvColumnLmsPin: Password e#{nonBreakableDash}learning access
|
||||
CsvColumnLmsResetPin: Will the e#{nonBreakableDash}learning password be reset upon next synchronisation?
|
||||
CsvColumnLmsDelete: Will the identifier be deleted from the E-learning platfrom upon next synchronisation?
|
||||
CsvColumnLmsDelete: Will the identifier be deleted from the E‑learning platfrom upon next synchronisation?
|
||||
CsvColumnLmsStaff: Is the user an internal staff member? (Legacy, currently ignored)
|
||||
CsvColumnLmsSuccess: Timestamp of successful completion (UTC)
|
||||
CsvColumnLmsFailed: Blockier durch LMS, üblicherweise wegen zu vieler Fehlversuche
|
||||
@ -79,7 +84,7 @@ LmsResultUpdate: Update of LMS result
|
||||
LmsResultCsvExceptionDuplicatedKey: CSV import with ambiguous key
|
||||
LmsUserlistCsvExceptionDuplicatedKey: CSV import with ambiguous key
|
||||
LmsDirectUpload: Direct upload for automated systems
|
||||
LmsErrorNoRefreshElearning: Error: E-learning will not be started automatically due to refresh-within time period not being set.
|
||||
LmsErrorNoRefreshElearning: Error: E‑learning will not be started automatically due to refresh-within time period not being set.
|
||||
MailSubjectQualificationRenewal qname: Qualification #{qname} must be renewed shortly
|
||||
MailSubjectQualificationExpiry qname: Qualification #{qname} expires soon
|
||||
MailSubjectQualificationExpired qname: Qualification #{qname} is no longer valid
|
||||
@ -101,7 +106,8 @@ QualificationStatusBlock l n m: #{n}/#{m} #{l} revoked
|
||||
QualificationStatusUnblock l n m: #{n}/#{m} #{l} reactivated
|
||||
LmsInactive: Currently no active e‑learning
|
||||
LmsRenewalInstructions: Instruction on how to accomplish the renewal are enclosed in the attached PDF. In order to avoid misuse, the PDF is encrypted with the FRADrive PDF-password of the examinee. If no PDF-password had been chosen yet, then the password is the Fraport id card number of the examinee, including the punctuation mark and the digit thereafter.
|
||||
LmsNoRenewal: Unfortunately, this particular qualification cannot be renewed through E-learning only.
|
||||
LmsNoRenewal: Unfortunately, this particular qualification cannot be renewed through e‑learning only.
|
||||
LmsRenewalReminder: Reminder
|
||||
LmsActNotify: Resend e‑learning notification by post or email
|
||||
LmsActRenewPin: Randomly replace e‑learning password
|
||||
LmsActRenewNotify: Randomly replace e‑learning password and re-send notification by post or email
|
||||
@ -110,11 +116,11 @@ LmsActRestartWarning: The existing e-learning will be erased immediately! For dr
|
||||
LmsActRestartExtend: Ensure validity for the next # days
|
||||
LmsActRestartUnblock: Undo any revocations
|
||||
LmsActRestartFeedback n@Int m@Int: #{n}/#{m} e-learnings were restarted.
|
||||
LmsStatusNotificationSent: E-learning password has been sent to examinee or supervisor by letter post or by email; e‑learning is currently open
|
||||
LmsNotificationSend n: E-learning notifications will be sent to #{n} #{pluralENs n "examinee"} by letter post or by email.
|
||||
LmsPinRenewal n: E-learning password replaced randomly for #{n} #{pluralENs n "examinee"}.
|
||||
LmsStatusNotificationSent: E‑learning password has been sent to examinee or supervisor by letter post or by email; e‑learning is currently open
|
||||
LmsNotificationSend n: E‑learning notifications will be sent to #{n} #{pluralENs n "examinee"} by letter post or by email.
|
||||
LmsPinRenewal n: E‑learning password replaced randomly for #{n} #{pluralENs n "examinee"}.
|
||||
LmsActionFailed n: No action for #{n} #{pluralENs n "person"}, since there was no ongoing examination.
|
||||
LmsStarted: E-learning open since
|
||||
LmsStarted: E‑learning open since
|
||||
LmsAutomaticQueuing n@Natural: The following functions are executed daily at #{show n} o'clock.
|
||||
LmsManualQueuing: The following functions should be executed daily.
|
||||
BtnLmsEnqueue: Enqueue users with expiring qualifications for e‑learning and notify them.
|
||||
|
||||
@ -2,30 +2,30 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
HeadingSchoolList: Institute
|
||||
HeadingSchoolList: Bereiche
|
||||
SchoolShort: Kürzel
|
||||
SchoolName !ident-ok: Name
|
||||
SchoolLdapOrganisations: Assoziierte LDAP-Fragmente
|
||||
SchoolLdapOrganisationsTip: Beim Login via LDAP werden dem Nutzer/der Nutzerin alle Institute zugeordnet deren assoziierte LDAP-Fragmente im Eintrag des Nutzer/der Nutzerin gefunden werden
|
||||
SchoolLdapOrganisationsTip: Beim Login via LDAP werden dem Nutzer/der Nutzerin alle Bereiche zugeordnet deren assoziierte LDAP-Fragmente im Eintrag des Nutzer/der Nutzerin gefunden werden
|
||||
SchoolLdapOrganisationMissing: LDAP-Fragment wird benötigt
|
||||
|
||||
SchoolExamSection: Prüfungen
|
||||
SchoolExamMinimumRegisterBeforeStart: Minimale Tage zwischen Anmeldebeginn und Termin für Prüfungen
|
||||
SchoolExamMinimumRegisterBeforeStartTip: Wenn angegeben werden Dozierende gezwungen Anmeldezeitraum und Prüfungstermin stets zusammen einzustellen.
|
||||
SchoolExamMinimumRegisterBeforeStartTip: Wenn angegeben werden Kursverwaltende gezwungen Anmeldezeitraum und Prüfungstermin stets zusammen einzustellen.
|
||||
SchoolExamMinimumRegisterDuration: Minimale Anmeldedauer für Prüfungen
|
||||
SchoolExamMinimumRegisterDurationTip: Wenn angegeben werden Dozierende daran gehindert Anmeldefristen von weniger als der minimalen Dauer für ihre Prüfungen einzustellen.
|
||||
SchoolExamMinimumRegisterDurationTip: Wenn angegeben werden Kursverwaltende daran gehindert Anmeldefristen von weniger als der minimalen Dauer für ihre Prüfungen einzustellen.
|
||||
SchoolExamRequireModeForRegistration: Prüfungsmodus erforderlich für Anmeldung
|
||||
SchoolExamRequireModeForRegistrationTip: Sollen Dozierende gezwungen werden Prüfungsmodus und Anmeldefrist stets zusammen einzustellen?
|
||||
SchoolExamRequireModeForRegistrationTip: Sollen Kursverwaltende gezwungen werden Prüfungsmodus und Anmeldefrist stets zusammen einzustellen?
|
||||
SchoolExamDiscouragedModes: Prüfungsmodi mit Warnung
|
||||
ExamCloseMode: Prüfungs-Abschluss
|
||||
|
||||
SchoolUpdated ssh@SchoolId: #{ssh} erfolgreich angepasst
|
||||
SchoolTitle ssh@SchoolId: Institut „#{ssh}“
|
||||
TitleSchoolNew: Neues Institut anlegen
|
||||
SchoolTitle ssh@SchoolId: Bereich „#{ssh}“
|
||||
TitleSchoolNew: Neues Bereich anlegen
|
||||
SchoolCreated ssh@SchoolId: #{ssh} erfolgreich angelegt
|
||||
SchoolExists ssh@SchoolId: Institut „#{ssh}“ existiert bereits
|
||||
SchoolLecturer: Dozent:in
|
||||
SchoolEvaluation: Kursumfragenverwaltung
|
||||
SchoolExists ssh@SchoolId: Bereich „#{ssh}“ existiert bereits
|
||||
SchoolLecturer: Kursverwalter:in
|
||||
SchoolEvaluation: Kursartumfragenverwaltung
|
||||
SchoolExamOffice: Prüfungsverwaltung
|
||||
SchoolAdmin !ident-ok: Admin
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ SchoolCreated ssh: Successfully created #{ssh}
|
||||
SchoolExists ssh: A department named „#{ssh}“ already exists
|
||||
SchoolAdmin: Admin
|
||||
SchoolLecturer: Lecturer
|
||||
SchoolEvaluation: Course evaluation
|
||||
SchoolEvaluation: Course type evaluation
|
||||
SchoolExamOffice: Exam office
|
||||
|
||||
SchoolAuthorshipStatementSection: Statements of Authorship
|
||||
|
||||
@ -4,71 +4,71 @@
|
||||
|
||||
#correctionsAssigned.hs + templates
|
||||
MailSubjectCorrectionsAssigned csh@CourseShorthand sheetName@SheetName: Ihnen wurden Korrekturen zu #{sheetName} in #{csh} zugeteilt
|
||||
MailCorrectionsAssignedIntro courseName@Text termDesc@Text sheetName@SheetName n@Int: #{n} #{pluralDE n "Abgabe wurde" "Abgaben wurden"} Ihnen zur Korrektur für #{sheetName} im Kurs #{courseName} (#{termDesc}) zugeteilt.
|
||||
MailCorrectionsAssignedIntro courseName@Text termDesc@Text sheetName@SheetName n@Int: #{n} #{pluralDE n "Abgabe wurde" "Abgaben wurden"} Ihnen zur Korrektur für #{sheetName} in Kursart #{courseName} (#{termDesc}) zugeteilt.
|
||||
MailCorrectionsTitle: Zugewiesene Korrekturen
|
||||
|
||||
#correctionsNotDistributed.hs + templates
|
||||
MailSubjectSubmissionsUnassigned csh@CourseShorthand sheetName@SheetName: Abgaben zu #{sheetName} in #{csh} konnten nicht verteilt werden
|
||||
MailSubmissionsUnassignedIntro n@Int courseName@Text termDesc@Text sheetName@SheetName: #{n} Abgaben zu #{sheetName} im Kurs #{courseName} (#{termDesc}) konnten nicht automatisiert verteilt werden.
|
||||
MailSubmissionsUnassignedIntro n@Int courseName@Text termDesc@Text sheetName@SheetName: #{n} Abgaben zu #{sheetName} in Kursart #{courseName} (#{termDesc}) konnten nicht automatisiert verteilt werden.
|
||||
|
||||
#courseRegistered.hs + templates
|
||||
MailSubjectCourseRegistered csh@CourseShorthand: Sie wurden zu #{csh} angemeldet
|
||||
MailSubjectCourseRegisteredOther displayName@Text csh@CourseShorthand: #{displayName} wurde zu #{csh} angemeldet
|
||||
MailCourseRegisteredIntro courseName@Text termDesc@Text: Sie wurden im Kurs #{courseName} (#{termDesc}) angemeldet.
|
||||
MailCourseRegisteredIntroOther displayName@Text courseName@Text termDesc@Text: #{displayName} wurde im Kurs #{courseName} (#{termDesc}) angemeldet.
|
||||
MailCourseRegisteredIntro courseName@Text termDesc@Text: Sie wurden in Kursart #{courseName} (#{termDesc}) angemeldet.
|
||||
MailCourseRegisteredIntroOther displayName@Text courseName@Text termDesc@Text: #{displayName} wurde in Kursart #{courseName} (#{termDesc}) angemeldet.
|
||||
|
||||
#ExamActive.hs + templates
|
||||
MailSubjectExamRegistrationActive csh@CourseShorthand examn@ExamName: Anmeldung für #{examn} in #{csh} ist möglich
|
||||
MailExamRegistrationActiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich nun für #{examn} im Kurs #{courseName} (#{termDesc}) anmelden.
|
||||
MailExamRegistrationActiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich nun für #{examn} in Kursart #{courseName} (#{termDesc}) anmelden.
|
||||
MailSubjectExamRegistrationSoonInactive csh@CourseShorthand examn@ExamName: Anmeldung für #{examn} in #{csh} ist nur noch kurze Zeit möglich
|
||||
MailExamRegistrationSoonInactiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich bald nicht mehr für #{examn} im Kurs #{courseName} (#{termDesc}) anmelden.
|
||||
MailExamRegistrationSoonInactiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich bald nicht mehr für #{examn} in Kursart #{courseName} (#{termDesc}) anmelden.
|
||||
MailSubjectExamDeregistrationSoonInactive csh@CourseShorthand examn@ExamName: Abmeldung für #{examn} in #{csh} ist nur noch kurze Zeit möglich
|
||||
MailExamDeregistrationSoonInactiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich bald nicht mehr von #{examn} im Kurs #{courseName} (#{termDesc}) abmelden.
|
||||
MailExamDeregistrationSoonInactiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich bald nicht mehr von #{examn} in Kursart #{courseName} (#{termDesc}) abmelden.
|
||||
|
||||
#examOffice.hs + templates
|
||||
MailSubjectExamOfficeExamResults coursen@CourseName examn@ExamName: Ergebnisse für #{examn} in #{coursen} sind fertiggestellt
|
||||
MailExamOfficeExamResultsIntro courseName@Text termDesc@Text examn@ExamName: Ein Kursverwalter/Eine Kursverwalterin hat die Prüfungsleistungen für #{examn} im Kurs #{courseName} (#{termDesc}) freigegeben.
|
||||
MailExamOfficeExamResultsIntro courseName@Text termDesc@Text examn@ExamName: Ein Kursverwalter/Eine Kursverwalterin hat die Prüfungsleistungen für #{examn} in Kursart #{courseName} (#{termDesc}) freigegeben.
|
||||
MailSubjectExamOfficeExamResultsChanged coursen@CourseName examn@ExamName: Ergebnisse für #{examn} in #{coursen} wurden verändert
|
||||
MailExamOfficeExamResultsChangedIntro courseName@Text termDesc@Text examn@ExamName: Ein Kursverwalter/Eine Kursverwalterin hat Prüfungsleistungen für #{examn} im Kurs #{courseName} (#{termDesc}) verändert.
|
||||
MailExamOfficeExamResultsChangedIntro courseName@Text termDesc@Text examn@ExamName: Ein Kursverwalter/Eine Kursverwalterin hat Prüfungsleistungen für #{examn} in Kursart #{courseName} (#{termDesc}) verändert.
|
||||
MailSubjectExamOfficeExternalExamResults coursen@CourseName examn@ExamName: Ergebnisse für #{examn} in #{coursen}
|
||||
MailExamOfficeExternalExamResultsIntro coursen@CourseName termDesc@Text examn@ExamName: Ein Kursverwalter/Eine Kursverwalterin hat Prüfungsleistungen für #{examn} im Kurs #{coursen} (#{termDesc}) erstellt oder angepasst.
|
||||
MailExamOfficeExternalExamResultsIntro coursen@CourseName termDesc@Text examn@ExamName: Ein Kursverwalter/Eine Kursverwalterin hat Prüfungsleistungen für #{examn} in Kursart #{coursen} (#{termDesc}) erstellt oder angepasst.
|
||||
|
||||
#examResult.hs + templates
|
||||
MailSubjectExamResult csh@CourseShorthand examn@ExamName: Ergebnisse für #{examn} in #{csh} wurden herausgegeben
|
||||
MailExamResultIntro courseName@Text termDesc@Text examn@ExamName: Sie können nun Ihr Ergebnis für #{examn} im Kurs #{courseName} (#{termDesc}) einsehen.
|
||||
MailExamResultIntro courseName@Text termDesc@Text examn@ExamName: Sie können nun Ihr Ergebnis für #{examn} in Kursart #{courseName} (#{termDesc}) einsehen.
|
||||
|
||||
#sheetActive.hs + templates
|
||||
MailSubjectSheetActive csh@CourseShorthand sheetName@SheetName: #{sheetName} in #{csh} wurde herausgegeben
|
||||
MailSheetActiveIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun #{sheetName} im Kurs #{courseName} (#{termDesc}) herunterladen.
|
||||
MailSheetActiveIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun #{sheetName} in Kursart #{courseName} (#{termDesc}) herunterladen.
|
||||
MailSubjectSheetHint csh@CourseShorthand sheetName@SheetName: Hinweise für #{sheetName} in #{csh} wurden herausgegeben
|
||||
MailSheetHintIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun die Hinweise für #{sheetName} im Kurs #{courseName} (#{termDesc}) herunterladen.
|
||||
MailSheetHintIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun die Hinweise für #{sheetName} in Kursart #{courseName} (#{termDesc}) herunterladen.
|
||||
MailSubjectSheetSolution csh@CourseShorthand sheetName@SheetName: Lösungen für #{sheetName} in #{csh} wurden herausgegeben
|
||||
MailSheetSolutionIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun die Lösungen für #{sheetName} im Kurs #{courseName} (#{termDesc}) herunterladen.
|
||||
MailSheetSolutionIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun die Lösungen für #{sheetName} in Kursart #{courseName} (#{termDesc}) herunterladen.
|
||||
|
||||
#sheetInactive.hs + templates
|
||||
MailSubjectSheetSoonInactive csh@CourseShorthand sheetName@SheetName: #{sheetName} in #{csh} kann nur noch kurze Zeit abgegeben werden
|
||||
MailSheetSoonInactiveIntro courseName@Text termDesc@Text sheetName@SheetName: Abgabefrist für #{sheetName} im Kurs #{courseName} (#{termDesc}) endet in Kürze.
|
||||
MailSheetSoonInactiveIntro courseName@Text termDesc@Text sheetName@SheetName: Abgabefrist für #{sheetName} in Kursart #{courseName} (#{termDesc}) endet in Kürze.
|
||||
MailSubjectSheetInactive csh@CourseShorthand sheetName@SheetName: Abgabezeitraum für #{sheetName} in #{csh} abgelaufen
|
||||
MailSheetInactiveIntro courseName@Text termDesc@Text sheetName@SheetName n@Int num@Int64: Die Abgabefrist für #{sheetName} im Kurs #{courseName} (#{termDesc}) ist beendet. Es gab #{noneOneMoreDE n "Keine Abgaben" "Nur eine Abgabe von " (toMessage n <> " Abgaben von ")}#{noneOneMoreDE num "" "einem Teilnehmer/einer Teilnehmerin" (toMessage num <> " Teilnehmer:innen")}.
|
||||
MailSheetInactiveIntroNoUserSubmission courseName@Text termDesc@Text sheetName@SheetName n@Int num@Int64: Die Abgabefrist für #{sheetName} im Kurs #{courseName} (#{termDesc}) ist beendet.#{noneOneMoreDE n "" "Es gab bereits eine Abgabe von " (("Es gab bereits " <> toMessage n) <> " Abgaben von ")}#{noneOneMoreDE num "" "einem Teilnehmer/einer Teilnehmerin" (toMessage num <> " Teilnehmer:innen")}.
|
||||
MailSheetInactiveIntro courseName@Text termDesc@Text sheetName@SheetName n@Int num@Int64: Die Abgabefrist für #{sheetName} in Kursart #{courseName} (#{termDesc}) ist beendet. Es gab #{noneOneMoreDE n "Keine Abgaben" "Nur eine Abgabe von " (toMessage n <> " Abgaben von ")}#{noneOneMoreDE num "" "einem Teilnehmer/einer Teilnehmerin" (toMessage num <> " Teilnehmer:innen")}.
|
||||
MailSheetInactiveIntroNoUserSubmission courseName@Text termDesc@Text sheetName@SheetName n@Int num@Int64: Die Abgabefrist für #{sheetName} in Kursart #{courseName} (#{termDesc}) ist beendet.#{noneOneMoreDE n "" "Es gab bereits eine Abgabe von " (("Es gab bereits " <> toMessage n) <> " Abgaben von ")}#{noneOneMoreDE num "" "einem Teilnehmer/einer Teilnehmerin" (toMessage num <> " Teilnehmer:innen")}.
|
||||
MailSheetInactivePseudonymsCount n@Int: Die Anzahl von Abgaben betrifft nur jene, die bereits direkt in FRADrive abgegeben haben. Es #{pluralDE n (("wurde " <> tshow n) <> " Pseudonym") (("wurden " <> tshow n) <> " Pseudonyme")} generiert.
|
||||
MailSheetInactiveParticipantsCount n@Int: Es #{pluralDE n "ist aktuell" "sind aktuell"} #{n} Teilnehmer zum Kurs angemeldet.
|
||||
MailSheetInactiveParticipantsCount n@Int: Es #{pluralDE n "ist aktuell" "sind aktuell"} #{n} Teilnehmer zur Kursart angemeldet.
|
||||
|
||||
#submissionEdited.hs +templates
|
||||
MailSubjectSubmissionEdited csh@CourseShorthand shn@SheetName: Ihre Abgabe für #{shn} im Kurs #{csh} wurde verändert
|
||||
MailSubmissionEditedIntro coursen@CourseName shn@SheetName termDesc@Text displayName@Text: #{displayName} hat Ihre Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) verändert.
|
||||
MailSubjectSubmissionUserCreated csh@CourseShorthand shn@SheetName: Sie wurden als Mitabgebende:r zu einer Abgabe für #{shn} im Kurs #{csh} hinzugefügt
|
||||
MailSubjectSubmissionUserCreatedOther displayName@Text csh@CourseShorthand shn@SheetName: Es wurde ein Mitabgebender/eine Mitabgebende zu einer Abgabe für #{shn} im Kurs #{csh} hinzugefügt
|
||||
MailSubmissionUserCreatedIntro coursen@CourseName shn@SheetName termDesc@Text: Sie wurden als Mitabgebende:r zu einer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) hinzugefügt.
|
||||
MailSubmissionUserCreatedOtherIntro displayName@UserDisplayName coursen@CourseName shn@SheetName termDesc@Text: #{displayName} wurde als Mitabgebender zu einer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) hinzugefügt.
|
||||
MailSubjectSubmissionUserDeleted csh@CourseShorthand shn@SheetName: Sie wurden als Mitabgebende:r von Ihrer Abgabe für #{shn} im Kurs #{csh} entfernt
|
||||
MailSubjectSubmissionUserDeletedOther displayName@Text csh@CourseShorthand shn@SheetName: Es wurde ein Mitabgebender/eine Mitabgebende von einer Abgabe für #{shn} im Kurs #{csh} entfernt
|
||||
MailSubmissionUserDeletedIntro coursen@CourseName shn@SheetName termDesc@Text: Sie wurden als Mitabgebende:r von Ihrer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) entfernt.
|
||||
MailSubmissionUserDeletedOtherIntro displayName@UserDisplayName coursen@CourseName shn@SheetName termDesc@Text: #{displayName} wurde als Mitabgebende:r von einer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) entfernt.
|
||||
MailSubjectSubmissionEdited csh@CourseShorthand shn@SheetName: Ihre Abgabe für #{shn} in Kursart #{csh} wurde verändert
|
||||
MailSubmissionEditedIntro coursen@CourseName shn@SheetName termDesc@Text displayName@Text: #{displayName} hat Ihre Abgabe für #{shn} in Kursart #{coursen} (#{termDesc}) verändert.
|
||||
MailSubjectSubmissionUserCreated csh@CourseShorthand shn@SheetName: Sie wurden als Mitabgebende:r zu einer Abgabe für #{shn} in Kursart #{csh} hinzugefügt
|
||||
MailSubjectSubmissionUserCreatedOther displayName@Text csh@CourseShorthand shn@SheetName: Es wurde ein Mitabgebender/eine Mitabgebende zu einer Abgabe für #{shn} in Kursart #{csh} hinzugefügt
|
||||
MailSubmissionUserCreatedIntro coursen@CourseName shn@SheetName termDesc@Text: Sie wurden als Mitabgebende:r zu einer Abgabe für #{shn} in Kursart #{coursen} (#{termDesc}) hinzugefügt.
|
||||
MailSubmissionUserCreatedOtherIntro displayName@UserDisplayName coursen@CourseName shn@SheetName termDesc@Text: #{displayName} wurde als Mitabgebender zu einer Abgabe für #{shn} in Kursart #{coursen} (#{termDesc}) hinzugefügt.
|
||||
MailSubjectSubmissionUserDeleted csh@CourseShorthand shn@SheetName: Sie wurden als Mitabgebende:r von Ihrer Abgabe für #{shn} in Kursart #{csh} entfernt
|
||||
MailSubjectSubmissionUserDeletedOther displayName@Text csh@CourseShorthand shn@SheetName: Es wurde ein Mitabgebender/eine Mitabgebende von einer Abgabe für #{shn} in Kursart #{csh} entfernt
|
||||
MailSubmissionUserDeletedIntro coursen@CourseName shn@SheetName termDesc@Text: Sie wurden als Mitabgebende:r von Ihrer Abgabe für #{shn} in Kursart #{coursen} (#{termDesc}) entfernt.
|
||||
MailSubmissionUserDeletedOtherIntro displayName@UserDisplayName coursen@CourseName shn@SheetName termDesc@Text: #{displayName} wurde als Mitabgebende:r von einer Abgabe für #{shn} in Kursart #{coursen} (#{termDesc}) entfernt.
|
||||
|
||||
#submissionRated.hs + templates
|
||||
MailSubjectSubmissionRated csh@CourseShorthand: Ihre #{csh}-Abgabe wurde korrigiert
|
||||
MailSubmissionRatedIntro courseName@Text termDesc@Text: Ihre Abgabe im Kurs #{courseName} (#{termDesc}) wurde korrigiert.
|
||||
MailSubmissionRatedIntro courseName@Text termDesc@Text: Ihre Abgabe in Kursart #{courseName} (#{termDesc}) wurde korrigiert.
|
||||
AchievedOf achieved@Points possible@Points: #{achieved} von #{possible}
|
||||
Passed: Bestanden
|
||||
NotPassed: Nicht bestanden
|
||||
@ -87,9 +87,9 @@ MailBodyFradrive: ist die Führerscheinverwaltungsapp der Fraport AG.
|
||||
MailSubjectUserRightsUpdate name@Text: Berechtigungen für #{name} aktualisiert
|
||||
MailSubjectUserSystemFunctionsUpdate name@Text: Berechtigungen für #{name} aktualisiert
|
||||
MailUserRightsIntro name@Text email@UserEmail: #{name} <#{email}> hat folgende FRADrive Berechtigungen:
|
||||
MailNoLecturerRights: Sie haben derzeit keine Dozent:innen-Rechte.
|
||||
MailLecturerRights n@Int: Als Dozent:in dürfen Sie Veranstaltungen innerhalb #{pluralDE n "Ihres Instituts" "Ihrer Institute"} anlegen.
|
||||
MailUserSystemFunctionsIntro name@Text email@UserEmail: #{name} <#{email}> hat folgende FRADrive nicht-institutsbezogene Berechtigungen:
|
||||
MailNoLecturerRights: Sie haben derzeit keine Kursverwalter:innen-Rechte.
|
||||
MailLecturerRights n@Int: Als Kursverwalter:in dürfen Sie Veranstaltungen innerhalb #{pluralDE n "Ihres Bereichs" "Ihrer Bereiche"} anlegen.
|
||||
MailUserSystemFunctionsIntro name@Text email@UserEmail: #{name} <#{email}> hat folgende FRADrive nicht-bereichsbezogene Berechtigungen:
|
||||
MailUserSystemFunctionsNoFunctions: Keine
|
||||
|
||||
#utils.hs + templates
|
||||
|
||||
@ -9,17 +9,17 @@ MailCorrectionsTitle: Assigned corrections
|
||||
|
||||
#correctionsNotDistributed.hs + templates
|
||||
MailSubjectSubmissionsUnassigned csh sheetName: Corrections for #{sheetName} of #{csh} could not be distributed
|
||||
MailSubmissionsUnassignedIntro n courseName termDesc sheetName: #{n} corrections for #{sheetName} of the course #{courseName} (#{termDesc}) could not be automatically distributed.
|
||||
MailSubmissionsUnassignedIntro n courseName termDesc sheetName: #{n} corrections for #{sheetName} of the course type #{courseName} (#{termDesc}) could not be automatically distributed.
|
||||
|
||||
#courseRegistered.hs + templates
|
||||
MailSubjectCourseRegistered csh: You were enrolled for #{csh}
|
||||
MailSubjectCourseRegisteredOther displayName csh: #{displayName} was enrolled for #{csh}
|
||||
MailCourseRegisteredIntro courseName termDesc: You were enrolled for the course “#{courseName}” (#{termDesc})
|
||||
MailCourseRegisteredIntroOther displayName courseName termDesc: #{displayName} was enrolled for the course “#{courseName}” (#{termDesc}).
|
||||
MailCourseRegisteredIntro courseName termDesc: You were enrolled for the course type “#{courseName}” (#{termDesc})
|
||||
MailCourseRegisteredIntroOther displayName courseName termDesc: #{displayName} was enrolled for the course type “#{courseName}” (#{termDesc}).
|
||||
|
||||
#examActive.hs + templates
|
||||
MailSubjectExamRegistrationActive csh examn: Registration is now allowed for #{examn} of #{csh}
|
||||
MailExamRegistrationActiveIntro courseName termDesc examn: You may now register for #{examn} of the course #{courseName} (#{termDesc}).
|
||||
MailExamRegistrationActiveIntro courseName termDesc examn: You may now register for #{examn} of the course type #{courseName} (#{termDesc}).
|
||||
MailSubjectExamRegistrationSoonInactive csh examn: The registration period for #{examn} of #{csh} ends shortly
|
||||
MailExamRegistrationSoonInactiveIntro courseName termDesc examn: Soon you will no longer be allowed to register for #{examn} of #{courseName} (#{termDesc}).
|
||||
MailSubjectExamDeregistrationSoonInactive csh examn: Deregistration for #{examn} in #{csh} ends shortly
|
||||
@ -27,15 +27,15 @@ MailExamDeregistrationSoonInactiveIntro courseName termDesc examn: Soon you will
|
||||
|
||||
#examOffice.hs + templates
|
||||
MailSubjectExamOfficeExamResults coursen examn: Results for #{examn} of #{coursen} are now available
|
||||
MailExamOfficeExamResultsIntro courseName termDesc examn: A course administrator has made the results for #{examn} of the course #{courseName} (#{termDesc}) available.
|
||||
MailExamOfficeExamResultsIntro courseName termDesc examn: A course administrator has made the results for #{examn} of the course type #{courseName} (#{termDesc}) available.
|
||||
MailSubjectExamOfficeExamResultsChanged coursen examn: Results for #{examn} of #{coursen} were changed
|
||||
MailExamOfficeExamResultsChangedIntro courseName termDesc examn: A course administrator has changed exam results for #{examn} of the course #{courseName} (#{termDesc}).
|
||||
MailExamOfficeExamResultsChangedIntro courseName termDesc examn: A course administrator has changed exam results for #{examn} of the course type #{courseName} (#{termDesc}).
|
||||
MailSubjectExamOfficeExternalExamResults coursen@CourseName examn@ExamName: Results for #{examn} in #{coursen}
|
||||
MailExamOfficeExternalExamResultsIntro coursen@CourseName termDesc@Text examn@ExamName: A course administrator has changed or initially made available the results for #{examn} of the course {coursen} (#{termDesc}).
|
||||
MailExamOfficeExternalExamResultsIntro coursen@CourseName termDesc@Text examn@ExamName: A course administrator has changed or initially made available the results for #{examn} of the course type {coursen} (#{termDesc}).
|
||||
|
||||
#examOffice.hs + templates
|
||||
MailSubjectExamResult csh examn: Results for #{examn} in #{csh} are now available
|
||||
MailExamResultIntro courseName termDesc examn: You may now view your result for #{examn} of the course #{courseName} (#{termDesc}).
|
||||
MailExamResultIntro courseName termDesc examn: You may now view your result for #{examn} of the course type #{courseName} (#{termDesc}).
|
||||
|
||||
#sheetActive.hs + templates
|
||||
MailSubjectSheetActive csh sheetName: #{sheetName} in #{csh} was released
|
||||
@ -47,10 +47,10 @@ MailSheetSolutionIntro courseName termDesc sheetName: You may now download the s
|
||||
|
||||
#sheetInactive.hs + templates
|
||||
MailSubjectSheetSoonInactive csh sheetName: The submission period for #{sheetName} of #{csh} ends shortly
|
||||
MailSheetSoonInactiveIntro courseName termDesc sheetName: Soon you will no longer be allowed to submit for #{sheetName} of the course #{courseName} (#{termDesc}).
|
||||
MailSheetSoonInactiveIntro courseName termDesc sheetName: Soon you will no longer be allowed to submit for #{sheetName} of the course type #{courseName} (#{termDesc}).
|
||||
MailSubjectSheetInactive csh sheetName: The submission period for #{sheetName} of #{csh} has ended
|
||||
MailSheetInactiveIntro courseName termDesc sheetName n num: The submission period for #{sheetName} of the course #{courseName} (#{termDesc}) has ended. #{noneOneMoreEN num "" "One participant" (toMessage num <> " participants")}#{noneOneMoreEN n "" "" (" made " <> toMessage num)}#{noneOneMoreEN n "There were no submissions" " made one submission" " submissions"}.
|
||||
MailSheetInactiveIntroNoUserSubmission courseName termDesc sheetName n num: The submission period for #{sheetName} of the course #{courseName} (#{termDesc}) has ended. #{noneOneMoreEN num "" "One participant already" (toMessage num <> " participants already")}#{noneOneMoreEN n "" "" (" made " <> toMessage num)}#{noneOneMoreEN n "" " made one submission" " submissions"}.
|
||||
MailSheetInactiveIntro courseName termDesc sheetName n num: The submission period for #{sheetName} of the course type #{courseName} (#{termDesc}) has ended. #{noneOneMoreEN num "" "One participant" (toMessage num <> " participants")}#{noneOneMoreEN n "" "" (" made " <> toMessage num)}#{noneOneMoreEN n "There were no submissions" " made one submission" " submissions"}.
|
||||
MailSheetInactiveIntroNoUserSubmission courseName termDesc sheetName n num: The submission period for #{sheetName} of the course type #{courseName} (#{termDesc}) has ended. #{noneOneMoreEN num "" "One participant already" (toMessage num <> " participants already")}#{noneOneMoreEN n "" "" (" made " <> toMessage num)}#{noneOneMoreEN n "" " made one submission" " submissions"}.
|
||||
MailSheetInactivePseudonymsCount n: The number of submissions above accounts only for the submissions already made directly in FRADrive. #{n} #{pluralEN n "pseudonym was" "pseudonyms were"} generated.
|
||||
MailSheetInactiveParticipantsCount n: There #{pluralEN n "is" "are"} currently #{n} #{pluralEN n "participant" "participants"} registered for the course.
|
||||
|
||||
@ -87,8 +87,8 @@ MailBodyFradrive: is the apron driver's licence management app of Fraport AG.
|
||||
MailSubjectUserRightsUpdate name: Permissions for #{name} changed
|
||||
MailSubjectUserSystemFunctionsUpdate name: Permissions for #{name} changed
|
||||
MailUserRightsIntro name email: #{name} <#{email}> now has the following permissions:
|
||||
MailNoLecturerRights: You don't currently have lecturer permissions for any department.
|
||||
MailLecturerRights n: As a lecturer you may create new courses within your #{pluralEN n "department" "departments"}.
|
||||
MailNoLecturerRights: You don't currently have course administrator permissions for any department.
|
||||
MailLecturerRights n: As a course administrator you may create new courses within your #{pluralEN n "department" "departments"}.
|
||||
MailUserSystemFunctionsIntro name email: #{name} <#{email}> now has the following, not school restricted, permissions:
|
||||
MailUserSystemFunctionsNoFunctions: None
|
||||
|
||||
|
||||
@ -16,32 +16,32 @@ AuthTagSystemExamOffice: Nutzer:in ist mit systemweiter Prüfungsverwaltung beau
|
||||
AuthTagSystemPrinter: Nutzer:in ist mit systemweiten Druck von Briefen beauftragt
|
||||
AuthTagEvaluation: Nutzer:in ist mit Kursumfragenverwaltung beauftragt
|
||||
AuthTagToken: Nutzer:in präsentiert Authorisierungs-Token
|
||||
AuthTagNoEscalation: Nutzer-Rechte werden nicht auf fremde Institute ausgeweitet
|
||||
AuthTagNoEscalation: Nutzer-Rechte werden nicht auf fremde Bereiche ausgeweitet
|
||||
AuthTagDeprecated: Seite ist nicht überholt
|
||||
AuthTagDevelopment: Seite ist nicht in Entwicklung
|
||||
AuthTagLecturer: Nutzer:in ist Dozent:in
|
||||
AuthTagLecturer: Nutzer:in ist Kursverwalter:in
|
||||
AuthTagCorrector: Nutzer:in ist Korrektor:in
|
||||
AuthTagExamCorrector: Nutzer:in ist Prüfungskorrektor:in
|
||||
AuthTagTutor: Nutzer:in ist Tutor:in
|
||||
AuthTagTutorControl: Tutorierende haben Kontrolle über ihre Tutorium
|
||||
AuthTagTutor: Nutzer:in ist Ausbilder:in
|
||||
AuthTagTutorControl: Ausbildende haben Kontrolle über ihren Kurs
|
||||
AuthTagTime: Zeitliche Einschränkungen sind erfüllt
|
||||
AuthTagStaffTime: Zeitliche Einschränkungen für Lehrbeteiligte sind erfüllt
|
||||
AuthTagCourseTime: Zeitliche Einschränkungen für Kurssichtbarkeit sind erfüllt
|
||||
AuthTagCourseRegistered: Nutzer:in ist Kursteilnehmer:in
|
||||
AuthTagTutorialRegistered: Nutzer:in ist Tutoriumsteilnehmer:in
|
||||
AuthTagCourseTime: Zeitliche Einschränkungen für Kursartsichtbarkeit sind erfüllt
|
||||
AuthTagCourseRegistered: Nutzer:in ist Kursartteilnehmer:in
|
||||
AuthTagTutorialRegistered: Nutzer:in ist Kursteilnehmer:in
|
||||
AuthTagExamRegistered: Nutzer:in ist Prüfungsteilnehmer:in
|
||||
AuthTagExamResult: Nutzer:in hat Prüfungsergebnisse
|
||||
AuthTagExamOccurrenceRegistered: Nutzer:in ist für Prüfungsraum/-termin angemeldet
|
||||
AuthTagExamOccurrenceRegistration: Anmeldung zur Prüfung erfolgt inkl. Raum/Termin
|
||||
AuthTagParticipant: Nutzer:in ist mit Kurs assoziiert
|
||||
AuthTagRegisterGroup: Nutzer:in ist nicht Mitglied eines anderen Tutoriums mit der selben Registrierungs-Gruppe
|
||||
AuthTagParticipant: Nutzer:in ist mit Kursart assoziiert
|
||||
AuthTagRegisterGroup: Nutzer:in ist nicht Mitglied eines anderen Kurses mit der selben Registrierungs-Gruppe
|
||||
AuthTagCapacity: Kapazität ist ausreichend
|
||||
AuthTagEmpty: Ressource ist „leer“
|
||||
AuthTagMaterials: Kursmaterialien sind freigegeben
|
||||
AuthTagMaterials: Kursartmaterialien sind freigegeben
|
||||
AuthTagOwner: Nutzer:in ist Besitzer:in
|
||||
AuthTagPersonalisedSheetFiles: Nutzer:in verfügt über personalisierte Übungsblatt-Dateien
|
||||
AuthTagRated: Korrektur ist bewertet
|
||||
AuthTagUserSubmissions: Abgaben erfolgen durch Kursteilnehmer:innen
|
||||
AuthTagUserSubmissions: Abgaben erfolgen durch Kursartteilnehmer:innen
|
||||
AuthTagCorrectorSubmissions: Abgaben erfolgen durch Korrektor:innen
|
||||
AuthTagCorrectionAnonymous: Korrektur ist anonymisiert
|
||||
AuthTagSelf: Nutzer:in greift nur auf eigene Daten zu
|
||||
|
||||
@ -14,34 +14,34 @@ AuthTagAdmin: User is administrator
|
||||
AuthTagExamOffice: User is part of an exam office
|
||||
AuthTagSystemExamOffice: User is charged with system wide exam administration
|
||||
AuthTagSystemPrinter: User is responsible for system wide letter printing
|
||||
AuthTagEvaluation: User is charged with course evaluation
|
||||
AuthTagEvaluation: User is charged with course type evaluation
|
||||
AuthTagToken: User is presenting an authorisation-token
|
||||
AuthTagNoEscalation: User permissions are not being expanded to other departments
|
||||
AuthTagDeprecated: Page is not deprecated
|
||||
AuthTagDevelopment: Page is not in development
|
||||
AuthTagLecturer: User is lecturer
|
||||
AuthTagLecturer: User is course administrator
|
||||
AuthTagCorrector: User is corrector
|
||||
AuthTagExamCorrector: User is exam corrector
|
||||
AuthTagTutor: User is tutor
|
||||
AuthTagTutorControl: Tutors have control over their tutorial
|
||||
AuthTagTutor: User is instructor
|
||||
AuthTagTutorControl: Instructors have control over their course
|
||||
AuthTagTime: Time restrictions are fulfilled
|
||||
AuthTagStaffTime: Time restrictions for teaching staff are fulfilled
|
||||
AuthTagCourseTime: Time restrictions for course visibility are fulfilled
|
||||
AuthTagCourseTime: Time restrictions for course type visibility are fulfilled
|
||||
AuthTagCourseRegistered: User is enrolled in course
|
||||
AuthTagTutorialRegistered: User is tutorial participant
|
||||
AuthTagTutorialRegistered: User is course participant
|
||||
AuthTagExamRegistered: User is exam participant
|
||||
AuthTagExamResult: User has an exam result
|
||||
AuthTagExamOccurrenceRegistered: User is registered for exam occurrence/room
|
||||
AuthTagExamOccurrenceRegistration: Registration for exam is done including occurrence/room
|
||||
AuthTagParticipant: User participates in course
|
||||
AuthTagRegisterGroup: User is not participant in any tutorial of the same registration group
|
||||
AuthTagRegisterGroup: User is not participant in any course of the same registration group
|
||||
AuthTagCapacity: Capacity is sufficient
|
||||
AuthTagEmpty: Resource is “empty”
|
||||
AuthTagMaterials: Course material is publicly accessable
|
||||
AuthTagMaterials: Course type material is publicly accessable
|
||||
AuthTagOwner: User is owner
|
||||
AuthTagPersonalisedSheetFiles: User has been assigned personalised sheet files
|
||||
AuthTagRated: Submission is marked
|
||||
AuthTagUserSubmissions: Submissions are made by course participants
|
||||
AuthTagUserSubmissions: Submissions are made by course type participants
|
||||
AuthTagCorrectorSubmissions: Submissions are registered by correctors
|
||||
AuthTagCorrectionAnonymous: Correction is anonymised
|
||||
AuthTagSelf: User is only accessing their only data
|
||||
|
||||
@ -19,7 +19,7 @@ FormCosmetics: Oberfläche
|
||||
Theme: Oberflächen Design
|
||||
Favourites: Anzahl gespeicherter Favoriten
|
||||
FavouritesTip: Betrifft nur automatisch angelegte Favoriten („Kürzlich besucht“)
|
||||
FavouriteSemesters: Maximale Anzahl an Semestern in Seitenleiste
|
||||
FavouriteSemesters: Maximale Anzahl an Jahren in Seitenleiste
|
||||
DateTimeFormat: Datums- und Uhrzeitformat
|
||||
DateFormat: Datumsformat
|
||||
TimeFormat: Uhrzeitformat
|
||||
@ -31,7 +31,7 @@ DownloadFilesTip: Wenn gesetzt werden Dateien automatisch als Download behandelt
|
||||
WarningDays: Fristen-Vorschau
|
||||
WarningDaysTip: Wie viele Tage im Voraus sollen Fristen von Prüfungen etc. auf Ihrer Startseite angezeigt werden?
|
||||
ShowSex: Geschlechter anderer Nutzer:innen anzeigen
|
||||
ShowSexTip: Sollen in Kursteilnehmer:innen-Tabellen u.Ä. die Geschlechter der Nutzer:innen angezeigt werden?
|
||||
ShowSexTip: Sollen in Kursartteilnehmer:innen-Tabellen u.Ä. die Geschlechter der Nutzer:innen angezeigt werden?
|
||||
|
||||
PDFPassword: Passwort zur Verschlüsselung von PDF Anhängen an Email Benachrichtigungens
|
||||
PDFPasswordTip: Achtung, dieses Passwort ist für FRADrive Administratoren einsehbar und wird unverschlüsselt gespeichert!
|
||||
@ -47,15 +47,15 @@ UserPostLastUpdate: Postadresse zuletzt geändert
|
||||
|
||||
FormNotifications: Benachrichtigungen
|
||||
|
||||
UserSchools: Relevante Institute
|
||||
UserSchoolsTip: Sie erhalten nur institutweite Benachrichtigungen für Institute, die hier ausgewählt sind.
|
||||
UserSchools: Relevante Bereiche
|
||||
UserSchoolsTip: Sie erhalten nur bereichsweite Benachrichtigungen für Bereiche, die hier ausgewählt sind.
|
||||
NotificationSettings: Erwünschte Benachrichtigungen
|
||||
|
||||
NotificationTriggerKindAll: Für alle Benutzer:innen
|
||||
NotificationTriggerKindCourseParticipant: Für Kursteilnehmer:innen
|
||||
NotificationTriggerKindCourseParticipant: Für Kursartteilnehmer:innen
|
||||
NotificationTriggerKindExamParticipant: Für Prüfungsteilnehmer:innen
|
||||
NotificationTriggerKindCorrector: Für Korrektor:innen
|
||||
NotificationTriggerKindLecturer: Für Dozierende
|
||||
NotificationTriggerKindLecturer: Für Kursverwaltende
|
||||
NotificationTriggerKindCourseLecturer: Für Kursverwalter:innen
|
||||
NotificationTriggerKindAdmin: Für Administrator:innen
|
||||
NotificationTriggerKindExamOffice: Für Prüfungsverwalter:innen
|
||||
@ -79,11 +79,12 @@ NotificationTriggerExamDeregistrationSoonInactive: Ich kann mich bald nicht mehr
|
||||
NotificationTriggerExamResult: Ich kann ein neues Prüfungsergebnis einsehen
|
||||
NotificationTriggerExamOfficeExamResults: Ich kann neue Prüfungsergebnisse einsehen
|
||||
NotificationTriggerExamOfficeExamResultsChanged: Prüfungsergebnisse wurden verändert
|
||||
NotificationTriggerCourseRegistered: Ein:e Kursverwalter:in hat mich zu einem Kurs angemeldet
|
||||
NotificationTriggerCourseRegistered: Ein:e Kursverwalter:in hat mich zu einer Kursart angemeldet
|
||||
NotificationTriggerSubmissionUserCreated: Ich wurde als Mitabgebender zu einer Übungsblatt-Abgabe hinzugefügt
|
||||
NotificationTriggerSubmissionEdited: Eine meiner Übungsblatt-Abgaben wurde verändert
|
||||
NotificationTriggerSubmissionUserDeleted: Ich wurde als Mitabgebender von einer Übungsblatt-Abgabe entfernt
|
||||
NotificationTriggerQualification: Eine meiner Qualifikationen läuft ab
|
||||
NotificationTriggerQualificationExpiry: Eine meiner Qualifikationen läuft ab
|
||||
NotificationTriggerQualificationReminder: Zweite Erinnerung bei Ablauf einer meiner Qualifikationen
|
||||
|
||||
UserDisplayNameRules: Vorgaben für den angezeigten Namen
|
||||
|
||||
@ -91,19 +92,21 @@ BtnResetTokens: Authorisierungs-Tokens invalidieren
|
||||
|
||||
TokensLastReset: Tokens zuletzt invalidiert
|
||||
ProfileNever: Nie
|
||||
ProfileLastLdapSynchronisation: Letzte LDAP-Synchronisation
|
||||
ProfileLdapPrimaryKey: LDAP-Primärschlüssel
|
||||
ProfileLastLdapSynchronisation: Letzte LDAP-Synchronisation
|
||||
ProfileLastAvsSynchronisation: Letzte AVS-Synchronisation
|
||||
ProfileLastAvsSynchError: Letzte AVS-Fehlermeldung
|
||||
|
||||
NotificationSettingsUpdate: Benachrichtigungs-Einstellungen erfolgreich gespeichert
|
||||
NotificationSettingsHeading displayName@Text: Benachrichtigungs-Einstellungen für #{displayName}
|
||||
FavouriteVisited: Kürzlich besucht
|
||||
FavouriteParticipant: Ihre Kurse
|
||||
FavouriteParticipant: Ihre Kursarten
|
||||
FavouriteManual: Favoriten
|
||||
FavouriteCurrent: Aktueller Kurs
|
||||
FavouriteCurrent: Aktuelle Kursart
|
||||
FavouritesPlaceholder: Anzahl Favoriten
|
||||
FavouritesNotNatural: Anzahl der Favoriten muss eine natürliche Zahl sein!
|
||||
FavouritesSemestersPlaceholder: Anzahl Semester
|
||||
FavouritesSemestersNotNatural: Anzahl der Favoriten-Semester muss eine natürliche Zahl sein!
|
||||
FavouritesSemestersPlaceholder: Anzahl Jahre
|
||||
FavouritesSemestersNotNatural: Anzahl der Favoriten-Jahre muss eine natürliche Zahl sein!
|
||||
SettingsUpdate: Einstellungen erfolgreich gespeichert
|
||||
TokensResetSuccess: Authorisierungs-Tokens invalidiert
|
||||
ProfileTitle: Benutzereinstellungen
|
||||
|
||||
@ -19,7 +19,7 @@ FormCosmetics: Interface
|
||||
Theme: Theme
|
||||
Favourites: Number of saved favourites
|
||||
FavouritesTip: Only relevant for automatically generated favourites (“visited recently”)
|
||||
FavouriteSemesters: Maximum number of semesters in favourites bar
|
||||
FavouriteSemesters: Maximum number of years in favourites bar
|
||||
DateTimeFormat: Date and time format
|
||||
DateFormat: Date format
|
||||
TimeFormat: Time format
|
||||
@ -31,7 +31,7 @@ DownloadFilesTip: When set, files are automatically treated as downloads. Otherw
|
||||
WarningDays: Deadline-preview
|
||||
WarningDaysTip: How many days ahead should deadlines regarding exams etc. be displayed on the homepage?
|
||||
ShowSex: Show sex of other users
|
||||
ShowSexTip: Should users' sex be displayed in (among others) lists of course participants?
|
||||
ShowSexTip: Should users' sex be displayed in (among others) lists of course type participants?
|
||||
|
||||
PDFPassword: Password to lock PDF email attachments
|
||||
PDFPasswordTip: Please note that this password is displayed to FRADrive admins and is saved unencrypted
|
||||
@ -52,14 +52,14 @@ UserSchoolsTip: You will only receive department-wide notifications for the sele
|
||||
NotificationSettings: Desired notifications
|
||||
|
||||
NotificationTriggerKindAll: For all users
|
||||
NotificationTriggerKindCourseParticipant: For course participants
|
||||
NotificationTriggerKindCourseParticipant: For course type participants
|
||||
NotificationTriggerKindExamParticipant: For exam participants
|
||||
NotificationTriggerKindCorrector: For correctors
|
||||
NotificationTriggerKindLecturer: For lecturers
|
||||
NotificationTriggerKindLecturer: For course administrators
|
||||
NotificationTriggerKindCourseLecturer: For course administrators
|
||||
NotificationTriggerKindAdmin: For administrators
|
||||
NotificationTriggerKindExamOffice: For the exam office
|
||||
NotificationTriggerKindEvaluation: For course evaluations
|
||||
NotificationTriggerKindEvaluation: For course type evaluations
|
||||
NotificationTriggerKindSubmissionUser: For participants in an exercise sheet submission
|
||||
|
||||
NotificationTriggerSubmissionRatedGraded: My submission for an exercise sheet was marked (not purely informational)
|
||||
@ -83,7 +83,8 @@ NotificationTriggerCourseRegistered: A course administrator has enrolled me in a
|
||||
NotificationTriggerSubmissionUserCreated: I was added to an exercise sheet submission
|
||||
NotificationTriggerSubmissionEdited: One of my exercise sheet submissions was changed
|
||||
NotificationTriggerSubmissionUserDeleted: I was removed from one of my exercise sheet submissions
|
||||
NotificationTriggerQualification: My Qualifications are about to expire
|
||||
NotificationTriggerQualificationExpiry: My qualifications are about to expire
|
||||
NotificationTriggerQualificationReminder: Send second reminder if one of my qualifications is about to expire
|
||||
|
||||
UserDisplayNameRules: Specification for display names
|
||||
|
||||
@ -91,8 +92,10 @@ BtnResetTokens: Invalidate tokens
|
||||
|
||||
TokensLastReset: Tokens last reset
|
||||
ProfileNever: Never
|
||||
ProfileLastLdapSynchronisation: Last LDAP synchronisation
|
||||
ProfileLdapPrimaryKey: LDAP primary key
|
||||
ProfileLastLdapSynchronisation: Last LDAP synchronisation
|
||||
ProfileLastAvsSynchronisation: Last AVS synchronisation
|
||||
ProfileLastAvsSynchError: Last AVS Error
|
||||
|
||||
NotificationSettingsUpdate: Successfully updated notification settings
|
||||
NotificationSettingsHeading displayName: Notification settings for #{displayName}
|
||||
@ -102,8 +105,8 @@ FavouriteManual: Favourites
|
||||
FavouriteCurrent: Current course
|
||||
FavouritesPlaceholder: Number of favourites
|
||||
FavouritesNotNatural: Number of favourites must be a natural number!
|
||||
FavouritesSemestersPlaceholder: Number of semesters
|
||||
FavouritesSemestersNotNatural: Maximum number of semesters in favourites bar must be a natural number!
|
||||
FavouritesSemestersPlaceholder: Number of years
|
||||
FavouritesSemestersNotNatural: Maximum number of years in favourites bar must be a natural number!
|
||||
SettingsUpdate: Successfully updated settings
|
||||
TokensResetSuccess: Successfully invalidated all authorisation tokens
|
||||
ProfileTitle: Settings
|
||||
|
||||
@ -10,18 +10,18 @@ LastLogin: Letzter Login
|
||||
|
||||
NeverSet: Nie
|
||||
ProfileCorrector: Korrektor:in
|
||||
ProfileCourses: Eigene Kurse
|
||||
ProfileCourses: Eigene Kursarten
|
||||
ProfileCourseParticipations: Kursanmeldungen
|
||||
ProfileCourseExamResults: Prüfungsleistungen
|
||||
ProfileTutorials: Eigene Tutorien
|
||||
ProfileTutorialParticipations: Tutorien
|
||||
ProfileTutorials: Eigene Kurse
|
||||
ProfileTutorialParticipations: Kurse
|
||||
ProfileSubmissionGroups: Abgabegruppen
|
||||
ProfileSubmissions: Abgaben
|
||||
ProfileRemark: Hinweis
|
||||
ProfileQualifications: Eigene Qualifikationen
|
||||
PersonalInfoExamAchievementsWip: Die Anzeige von Prüfungsergebnissen wird momentan an dieser Stelle leider noch nicht unterstützt.
|
||||
PersonalInfoOwnTutorialsWip: Die Anzeige von Tutorien, zu denen Sie als Tutor eingetragen sind wird momentan an dieser Stelle leider noch nicht unterstützt.
|
||||
PersonalInfoTutorialsWip: Die Anzeige von Tutorien, zu denen Sie angemeldet sind wird momentan an dieser Stelle leider noch nicht unterstützt.
|
||||
PersonalInfoOwnTutorialsWip: Die Anzeige von Kurse, zu denen Sie als Ausbilder eingetragen sind wird momentan an dieser Stelle leider noch nicht unterstützt.
|
||||
PersonalInfoTutorialsWip: Die Anzeige von Kurse, zu denen Sie angemeldet sind wird momentan an dieser Stelle leider noch nicht unterstützt.
|
||||
ProfileGroupSubmissionDates: Bei Gruppenabgaben wird kein Datum angezeigt, wenn Sie die Gruppenabgabe nie selbst hochgeladen haben.
|
||||
ProfileCorrectorRemark: Die oberhalb angezeigte Tabelle zeigt nur prinzipielle Einteilungen als Korrektor zu einem Übungsblatt. Auch ohne Einteilung können Korrekturen einzeln zugewiesen werden, welche hier dann nicht aufgeführt werden.
|
||||
ProfileCorrections: Auflistung aller zugewiesenen Korrekturen
|
||||
|
||||
@ -11,17 +11,17 @@ LastLogin: Last login
|
||||
NeverSet: Never
|
||||
ProfileCorrector: Corrector
|
||||
ProfileCourses: Own courses
|
||||
ProfileCourseParticipations: Course registrations
|
||||
ProfileCourseParticipations: Course type registrations
|
||||
ProfileCourseExamResults: Exam achievements
|
||||
ProfileTutorials: Own tutorials
|
||||
ProfileTutorialParticipations: Tutorials
|
||||
ProfileTutorials: Own courses
|
||||
ProfileTutorialParticipations: Courses
|
||||
ProfileSubmissionGroups: Submission groups
|
||||
ProfileSubmissions: Submissions
|
||||
ProfileRemark: Remarks
|
||||
ProfileQualifications: Owned Qualifications
|
||||
PersonalInfoExamAchievementsWip: The feature to display your exam achievements has not yet been implemented.
|
||||
PersonalInfoOwnTutorialsWip: The feature to display tutorials you have been assigned to as tutor has not yet been implemented.
|
||||
PersonalInfoTutorialsWip: The feature to display tutorials you have registered for has not yet been implemented.
|
||||
PersonalInfoOwnTutorialsWip: The feature to display courses you have been assigned to as instructor has not yet been implemented.
|
||||
PersonalInfoTutorialsWip: The feature to display courses you have registered for has not yet been implemented.
|
||||
ProfileGroupSubmissionDates: No date is shown for group submissions if you have never uploaded the submission yourself.
|
||||
ProfileCorrectorRemark: The table above only shows registration as a corrector in principle. Even without registration corrections can be assigned individually and are not listed.
|
||||
ProfileCorrections: List of all assigned corrections
|
||||
|
||||
@ -2,20 +2,20 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
TermStartMustMatchName: Jahreszahl im Namenskürzel stimmt nicht mit Semesterbeginn überein.
|
||||
TermEndMustBeAfterStart: Semester darf nicht enden, bevor es beginnt.
|
||||
TermStartMustMatchName: Jahreszahl im Namenskürzel stimmt nicht mit Beginn des gewählten Jahres überein.
|
||||
TermEndMustBeAfterStart: Jahr darf nicht enden, bevor es beginnt.
|
||||
TermLectureEndMustBeAfterStart: Vorlesungszeit muss vor ihrem Ende anfgangen.
|
||||
TermStartMustBeBeforeLectureStart: Semester muss vor der Vorlesungszeit beginnen.
|
||||
TermEndMustBeAfterLectureEnd: Vorlesungszeit muss vor dem Semester enden.
|
||||
TermStartMustBeBeforeLectureStart: Jahr muss vor der Vorlesungszeit beginnen.
|
||||
TermEndMustBeAfterLectureEnd: Vorlesungszeit muss vor dem Jahr enden.
|
||||
TermShort: Kürzel
|
||||
TermCourseCount: Kurse
|
||||
TermCourseCount: Kursarten
|
||||
TermStart: Anfang Kursperiode
|
||||
TermEnd: Ende Kursperiode
|
||||
LectureStart: Beginn Kurse
|
||||
TermEdited tid@TermId: Semester #{tid} erfolgreich editiert.
|
||||
TermNewTitle: Semester editieren/anlegen.
|
||||
LectureStart: Beginn Kursart
|
||||
TermEdited tid@TermId: Jahr #{tid} erfolgreich editiert.
|
||||
TermNewTitle: Jahr editieren/anlegen.
|
||||
InvalidInput: Ungültige Eingabe, bitte korrigieren.
|
||||
Term !ident-ok: Semester
|
||||
Term !ident-ok: Jahr
|
||||
TermPlaceholder: JJJJ
|
||||
TermStartDay: Erster Tag
|
||||
TermEndDay: Letzter Tag
|
||||
@ -27,16 +27,16 @@ TermLectureEnd: Ende Vorlesungen
|
||||
TermLectureStartTooltip: Muss am oder nach dem Beginn liegen
|
||||
TermLectureEndTooltip: Muss am oder vor dem Ende liegen
|
||||
TermActive: Aktiv
|
||||
TermActiveTooltip: Zeitraum in dem Lehrende Kurse anlegen dürfen; kann auf angegebene Lehrende eingeschränkt werden
|
||||
TermActiveTooltip: Zeitraum in dem Lehrende Kursarten anlegen dürfen; kann auf angegebene Lehrende eingeschränkt werden
|
||||
TermActiveForPlaceholder: E-Mail (optional)
|
||||
NumCourses num@Int64: #{num} #{pluralDE num "Kurs" "Kurse"}
|
||||
TermsHeading: Semesterübersicht
|
||||
TermEditHeading: Semester editieren/anlegen
|
||||
NumCourses num@Int64: #{num} #{pluralDE num "Kursart" "Kursarten"}
|
||||
TermsHeading: Jahresübersicht
|
||||
TermEditHeading: Jahr editieren/anlegen
|
||||
|
||||
TermFormHolidaysAlreadyAdded: Alle neuen Feiertage sind bereits eingetragen
|
||||
TermFormHolidaysFrom: Von
|
||||
TermFormHolidaysTo: Bis
|
||||
TermExists: Semester existiert bereits
|
||||
TermExists: Jahr existiert bereits
|
||||
|
||||
TermFormActiveFrom: Von
|
||||
TermFormActiveTo: Bis
|
||||
|
||||
@ -2,20 +2,20 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
TermStartMustMatchName: Shorthand number does not match semester start.
|
||||
TermEndMustBeAfterStart: Semester end may not be before semester start.
|
||||
TermStartMustMatchName: Shorthand number does not match start of year.
|
||||
TermEndMustBeAfterStart: Year end may not be before start of year.
|
||||
TermLectureEndMustBeAfterStart: Lecture start may not be after lecture end.
|
||||
TermStartMustBeBeforeLectureStart: Semester start must be before lecture start.
|
||||
TermEndMustBeAfterLectureEnd: Lecture end must be before semester end.
|
||||
TermStartMustBeBeforeLectureStart: Year start must be before lecture start.
|
||||
TermEndMustBeAfterLectureEnd: Lecture end must be before end of year.
|
||||
TermShort: Shorthand
|
||||
TermCourseCount: Courses
|
||||
TermStart: Start of teaching period
|
||||
TermEnd: End of teaching perios
|
||||
LectureStart: Courses start
|
||||
TermEdited tid: Successfully edited semester #{tid}
|
||||
TermNewTitle: Edit/create semester
|
||||
TermEdited tid: Successfully edited year #{tid}
|
||||
TermNewTitle: Edit/create year
|
||||
InvalidInput: Invalid input
|
||||
Term: Semester
|
||||
Term: Year
|
||||
TermPlaceholder: YYYY
|
||||
TermStartDay: Starting day
|
||||
TermEndDay: Last day
|
||||
@ -27,11 +27,11 @@ TermLectureEnd: Lectures end
|
||||
TermLectureStartTooltip: Must be on or after starting day
|
||||
TermLectureEndTooltip: Must be before or on ending day
|
||||
TermActive: Active
|
||||
TermActiveTooltip: Timeframe when lecturers may add courses; maybe restricted for specified lecturers
|
||||
TermActiveTooltip: Timeframe when course administrators may add courses; maybe restricted for specified course administrators
|
||||
TermActiveForPlaceholder: Email (optional)
|
||||
NumCourses num: #{num} #{pluralEN num "course" "courses"}
|
||||
TermsHeading: Semesters
|
||||
TermEditHeading: Edit semester
|
||||
TermsHeading: Years
|
||||
TermEditHeading: Edit year
|
||||
|
||||
TermFormHolidaysAlreadyAdded: All new holidays were already entered
|
||||
TermFormHolidaysFrom: From
|
||||
|
||||
@ -35,7 +35,7 @@ UserSystemFunctionsNotChanged: Es wurden keine systemweiten Rollen angepasst
|
||||
AuthPWHash pwHash@Text !ident-ok: FRADrive
|
||||
AuthPWHashAlreadyConfigured: Nutzer:in meldet sich bereits mit FRADrive spezifischer Kennung an
|
||||
AuthPWHashConfigured: Nutzer:in meldet sich nun mit FRADrive spezifischer Kennung an
|
||||
UsersCourseSchool: Institut
|
||||
UsersCourseSchool: Bereich
|
||||
ActionNoUsersSelected: Keine Benutzer:innen ausgewählt
|
||||
SynchroniseAvsUserQueued n@Int: AVS-Synchronisation von #{n} #{pluralDE n "Benutzer:in" "Benutzer:innen"} angestoßen
|
||||
SynchroniseLdapUserQueued n@Int: LDAP-Synchronisation von #{n} #{pluralDE n "Benutzer:in" "Benutzer:innen"} angestoßen
|
||||
@ -66,12 +66,12 @@ UserPasswordHeadingFor: Passwort ändern für
|
||||
PasswordChangedSuccess: Passwort erfolgreich geändert
|
||||
MailSubjectSchoolFunctionInvitation school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung für „#{school}“
|
||||
MailSchoolFunctionInviteHeading school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung für „#{school}“
|
||||
SchoolFunctionInviteExplanation renderedFunction@Text: Sie wurden eingeladen, als #{renderedFunction} für ein Institut zu wirken. Sie erhalten, nachdem Sie die Einladung annehmen, erweiterte Rechte innerhalb des Instituts.
|
||||
SchoolFunctionInvitationAccepted school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung als Dozent:in für „#{school}“ angenommen
|
||||
SchoolFunctionInviteExplanation renderedFunction@Text: Sie wurden eingeladen, als #{renderedFunction} für einen Bereich zu wirken. Sie erhalten, nachdem Sie die Einladung annehmen, erweiterte Rechte innerhalb des Bereichs.
|
||||
SchoolFunctionInvitationAccepted school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung als Kursverwalter:in für „#{school}“ angenommen
|
||||
FunctionaryInviteFunction: Funktion
|
||||
FunctionaryInviteSchool: Institut
|
||||
FunctionaryInviteSchool: Bereich
|
||||
FunctionaryInviteField: Einzuladende E-Mail-Adressen
|
||||
FunctionaryInviteHeading: Institut-Funktionäre hinzufügen
|
||||
FunctionaryInviteHeading: Bereich-Funktionäre hinzufügen
|
||||
FunctionariesInvited n@Int: #{n} #{pluralDE n "Funktionär:in" "Funktionäre"} per E-Mail eingeladen
|
||||
FunctionariesAdded n@Int: #{n} #{pluralDE n "Funktionär:in" "Funktionäre"} eingetragen
|
||||
AdminUserRightsHeading: Benutzerrechte
|
||||
@ -82,8 +82,8 @@ UserGroupSubmissionsKept n@Int: #{tshow n} Gruppenabgaben verbleiben in der Date
|
||||
UserSubmissionGroupsDeleted count@Int64: #{tshow count} benannte Abgabengruppen wurden gelöscht, da sie ohne den Nutzer/die Nutzerin leer wären.
|
||||
AuthMode: Authentifizierungsmodus
|
||||
Aborted: Abgebrochen
|
||||
CourseUserRegister: Zum Kurs anmelden
|
||||
CourseUserDeregister: Vom Kurs abmelden
|
||||
CourseUserRegister: Zur Kursart anmelden
|
||||
CourseUserDeregister: Von Kursart abmelden
|
||||
NewPasswordLinkTip: Das Passwort Ihrer Uni2work-internen Kennung können Sie auf der folgenden Seite setzen:
|
||||
NewPasswordLink: Neues Passwort setzen
|
||||
UserAccountDeleteWarning: Achtung, dies löscht den kompletten Benutzer/die komplette Benutzerin unwiderruflich und mit allen assoziierten Daten aus der Datenbank. Prüfungsdaten müssen jedoch langfristig gespeichert bleiben!
|
||||
|
||||
@ -7,8 +7,9 @@ BtnAbort: Abbrechen
|
||||
BtnDelete: Löschen
|
||||
BtnRegister: Anmelden
|
||||
BtnDeregister: Abmelden
|
||||
BtnCourseRegister: Zum Kurs anmelden
|
||||
BtnCourseDeregister: Vom Kurs abmelden
|
||||
MassRegister: Andere anmelden
|
||||
BtnCourseRegister: Zur Kursart anmelden
|
||||
BtnCourseDeregister: Von Kursart abmelden
|
||||
BtnExamRegister: Anmelden zur Prüfung
|
||||
BtnExamRegisterOccurrence: Anmelden zum Prüfungstermin/-raum
|
||||
BtnExamSwitchOccurrence: Zu Prüfungstermin/-raum wechseln
|
||||
|
||||
@ -7,6 +7,7 @@ BtnAbort: Abort
|
||||
BtnDelete: Delete
|
||||
BtnRegister: Register
|
||||
BtnDeregister: Deregister
|
||||
MassRegister: Register others
|
||||
BtnCourseRegister: Enrol for course
|
||||
BtnCourseDeregister: Leave course
|
||||
BtnExamRegister: Enrol for exam
|
||||
|
||||
@ -10,29 +10,29 @@ BreadcrumbCourseNotes: Kursnotizen
|
||||
BreadcrumbHiWis: Korrektor:innen
|
||||
BreadcrumbMaterial !ident-ok: Material
|
||||
BreadcrumbSheet: Übungsblatt
|
||||
BreadcrumbTutorial: Tutorium
|
||||
BreadcrumbTutorial: Kurs
|
||||
BreadcrumbExam: Prüfung
|
||||
BreadcrumbCourseRegister: Anmelden
|
||||
BreadcrumbCourseFavourite: Favorisieren
|
||||
BreadcrumbCourse: Kurs
|
||||
BreadcrumbTerm !ident-ok: Semester
|
||||
BreadcrumbSchool: Institut
|
||||
BreadcrumbCourse: Kursart
|
||||
BreadcrumbTerm !ident-ok: Jahr
|
||||
BreadcrumbSchool: Bereich
|
||||
BreadcrumbUser: Benutzer:in
|
||||
BreadcrumbStatic: Statische Resource
|
||||
BreadcrumbWellKnown: Benannte statische Resource
|
||||
BreadcrumbMetrics: Metriken
|
||||
BreadcrumbLecturerInvite: Einladung zum Kursverwalter
|
||||
BreadcrumbExamOfficeUserInvite: Einladung bzgl. Prüfungsleistungen
|
||||
BreadcrumbFunctionaryInvite: Einladung zum Instituts-Funktionär
|
||||
BreadcrumbFunctionaryInvite: Einladung zum Bereichs-Funktionär
|
||||
BreadcrumbUserDelete: Nutzer-Account löschen
|
||||
BreadcrumbUserHijack: Nutzer-Sitzung übernehmen
|
||||
BreadcrumbSystemMessage: Statusmeldung
|
||||
BreadcrumbSubmission: Abgabe
|
||||
BreadcrumbCourseNews: Kursnachricht
|
||||
BreadcrumbCourseNewsDelete: Kursnachricht löschen
|
||||
BreadcrumbCourseEventDelete: Kurstermin löschen
|
||||
BreadcrumbCourseEventDelete: Kursarttermin löschen
|
||||
BreadcrumbProfile: Einstellungen
|
||||
BreadcrumbCourseParticipantInvitation: Einladung als Kursteilnehmer:in
|
||||
BreadcrumbCourseParticipantInvitation: Einladung als Kursartteilnehmer:in
|
||||
BreadcrumbMaterialArchive: Archiv
|
||||
BreadcrumbMaterialFile: Datei
|
||||
BreadcrumbMaterialVideo !ident-ok: Video
|
||||
@ -42,7 +42,7 @@ BreadcrumbSheetPseudonym !ident-ok: Pseudonym
|
||||
BreadcrumbSheetCorrectorInvite: Einladung als Korrektor:in
|
||||
BreadcrumbSheetFile: Datei
|
||||
BreadcrumbTutorialRegister: Anmelden
|
||||
BreadcrumbTutorInvite: Einladung als Tutor:in
|
||||
BreadcrumbTutorInvite: Einladung als Ausbilder:in
|
||||
BreadcrumbExamCorrectorInvite: Einladung als Prüfungskorrektor:in
|
||||
BreadcrumbExamParticipantInvite: Einladung als Prüfungsteilnehmer:in
|
||||
BreadcrumbExamRegister: Anmelden
|
||||
@ -57,8 +57,8 @@ BreadcrumbExternalExamUsers: Teilnehmer:in
|
||||
BreadcrumbExternalExamGrades: Prüfungsleistungen
|
||||
BreadcrumbExternalExamStaffInvite: Einladung als Prüfer:in
|
||||
BreadcrumbExternalExamCorrect: Prüfungsleistungen eintragen
|
||||
BreadcrumbParticipantsList: Kursteilnehmerlisten
|
||||
BreadcrumbParticipants: Kursteilnehmerliste
|
||||
BreadcrumbParticipantsList: Kursartteilnehmerlisten
|
||||
BreadcrumbParticipants: Kursartteilnehmerliste
|
||||
BreadcrumbExamAutoOccurrence: Automatische Termin-/Raumverteilung
|
||||
BreadcrumbStorageKey: Lokalen Schlüssel generieren
|
||||
BreadcrumbMessageHide: Verstecken
|
||||
@ -76,8 +76,8 @@ BreadcrumbAdminFeaturesHeading: Studiengänge
|
||||
BreadcrumbAdminTest: Admin-Demo
|
||||
BreadcrumbAdminErrMsg: Fehlermeldung entschlüsseln
|
||||
BreadcrumbAdminTokens: Tokens ausstellen
|
||||
BreadcrumbSchoolList: Institute
|
||||
BreadcrumbSchoolNew: Neues Institut anlegen
|
||||
BreadcrumbSchoolList: Bereiche
|
||||
BreadcrumbSchoolNew: Neuen Bereich anlegen
|
||||
BreadcrumbExamOfficeExams: Prüfungen
|
||||
BreadcrumbExamOfficeFields: Fächer
|
||||
BreadcrumbExamOfficeUsers: Benutzer:innen
|
||||
@ -91,30 +91,30 @@ BreadcrumbInstance: Instanz-Identifikation
|
||||
BreadcrumbUserDisplayEmail: E‑Mail-Adresse
|
||||
BreadcrumbProfileData: Persönliche Daten
|
||||
BreadcrumbAuthPreds: Authorisierungseinstellungen
|
||||
BreadcrumbTermShow: Semester
|
||||
BreadcrumbTermCreate: Neues Semester anlegen
|
||||
BreadcrumbTermEdit: Semester editieren
|
||||
BreadcrumbTermCurrent: Aktuelles Semester
|
||||
BreadcrumbParticipantsIntersect: Überschneidung von Kursteilnehmer:innen
|
||||
BreadcrumbCourseList: Kurse
|
||||
BreadcrumbCourseNew: Neuen Kurs anlegen
|
||||
BreadcrumbCourseEdit: Kurs editieren
|
||||
BreadcrumbCourseMembers: Kursteilnehmer:innen
|
||||
BreadcrumbCourseAddMembers: Kursteilnehmer:innen hinzufügen
|
||||
BreadcrumbTermShow: Jahr
|
||||
BreadcrumbTermCreate: Neues Jahr anlegen
|
||||
BreadcrumbTermEdit: Jahr editieren
|
||||
BreadcrumbTermCurrent: Aktuelles Jahr
|
||||
BreadcrumbParticipantsIntersect: Überschneidung von Kursartteilnehmer:innen
|
||||
BreadcrumbCourseList: Kursarten
|
||||
BreadcrumbCourseNew: Neue Kursart anlegen
|
||||
BreadcrumbCourseEdit: Kursart editieren
|
||||
BreadcrumbCourseMembers: Kursartteilnehmer:innen
|
||||
BreadcrumbCourseAddMembers: Kursartteilnehmer:innen hinzufügen
|
||||
BreadcrumbCourseExamOffice: Prüfungsbeauftragte
|
||||
BreadcrumbCorrectionsAssign: Zuteilung der Korrekturen
|
||||
BreadcrumbSheetList: Übungsblätter
|
||||
BreadcrumbSheetNew: Neues Übungsblatt anlegen
|
||||
BreadcrumbSheetCurrent: Aktuelles Übungsblatt
|
||||
BreadcrumbSheetOldUnassigned: Abgaben ohne Korrektor:in
|
||||
BreadcrumbCourseCommunication: Kursmitteilung (E‑Mail)
|
||||
BreadcrumbTutorialList: Tutorien
|
||||
BreadcrumbTutorialNew: Neues Tutorium anlegen
|
||||
BreadcrumbCourseDelete: Kurs löschen
|
||||
BreadcrumbCourseNewsNew: Neue Kursnachricht
|
||||
BreadcrumbCourseNewsEdit: Kursnachricht bearbeiten
|
||||
BreadcrumbCourseEventNew: Neuer Kurstermin
|
||||
BreadcrumbCourseEventEdit: Kurstermin bearbeiten
|
||||
BreadcrumbCourseCommunication: Kursartmitteilung (E‑Mail)
|
||||
BreadcrumbTutorialList: Kurse
|
||||
BreadcrumbTutorialNew: Neuen Kurs anlegen
|
||||
BreadcrumbCourseDelete: Kursart löschen
|
||||
BreadcrumbCourseNewsNew: Neue Kursartnachricht
|
||||
BreadcrumbCourseNewsEdit: Kursartnachricht bearbeiten
|
||||
BreadcrumbCourseEventNew: Neuer Kursarttermin
|
||||
BreadcrumbCourseEventEdit: Kursarttermin bearbeiten
|
||||
BreadcrumbExamList: Prüfungen
|
||||
BreadcrumbExamNew: Neue Prüfung anlegen
|
||||
BreadcrumbExamEdit: Prüfung bearbeiten
|
||||
@ -122,8 +122,8 @@ BreadcrumbExamUsers: Teilnehmer:innen
|
||||
BreadcrumbExamGrades: Prüfungsleistungen
|
||||
BreadcrumbExamAddMembers: Prüfungsteilnehmer hinzufügen
|
||||
BreadcrumbExamCorrect: Prüfungsergebnisse eintragen
|
||||
BreadcrumbTutorialDelete: Tutorium löschen
|
||||
BreadcrumbTutorialEdit: Tutorium editieren
|
||||
BreadcrumbTutorialDelete: Kurs löschen
|
||||
BreadcrumbTutorialEdit: Kurs editieren
|
||||
BreadcrumbTutorialComm: Mitteilung an Teilnehmer:innen
|
||||
BreadcrumbSheetEdit: Übungsblatt editieren
|
||||
BreadcrumbSheetDelete: Übungsblatt löschen
|
||||
|
||||
@ -6,16 +6,16 @@ BreadcrumbCsvOptions: csv-options
|
||||
BreadcrumbSubmissionFile: File
|
||||
BreadcrumbSubmissionUserInvite: Invitation to participate in a submission
|
||||
BreadcrumbCryptoIDDispatch: CryptoID-redirect
|
||||
BreadcrumbCourseNotes: Course notes
|
||||
BreadcrumbCourseNotes: Course type notes
|
||||
BreadcrumbHiWis: Correctors
|
||||
BreadcrumbMaterial: Material
|
||||
BreadcrumbSheet: Exercise sheet
|
||||
BreadcrumbTutorial: Tutorial
|
||||
BreadcrumbTutorial: Course
|
||||
BreadcrumbExam: Exam
|
||||
BreadcrumbCourseRegister: Register
|
||||
BreadcrumbCourseFavourite: Favourite
|
||||
BreadcrumbCourse: Course
|
||||
BreadcrumbTerm: Semester
|
||||
BreadcrumbCourse: Course type
|
||||
BreadcrumbTerm: Year
|
||||
BreadcrumbSchool: Department
|
||||
BreadcrumbUser: User
|
||||
BreadcrumbStatic: Static resource
|
||||
@ -28,11 +28,11 @@ BreadcrumbUserDelete: Delete user account
|
||||
BreadcrumbUserHijack: Hijack user session
|
||||
BreadcrumbSystemMessage: System message
|
||||
BreadcrumbSubmission: Submission
|
||||
BreadcrumbCourseNews: Course news
|
||||
BreadcrumbCourseNewsDelete: Delete course news
|
||||
BreadcrumbCourseEventDelete: Delete course occurrence
|
||||
BreadcrumbCourseNews: Course type news
|
||||
BreadcrumbCourseNewsDelete: Delete course type news
|
||||
BreadcrumbCourseEventDelete: Delete course type occurrence
|
||||
BreadcrumbProfile: Settings
|
||||
BreadcrumbCourseParticipantInvitation: Invitation to be a course participant
|
||||
BreadcrumbCourseParticipantInvitation: Invitation to be a course type participant
|
||||
BreadcrumbMaterialArchive: Archive
|
||||
BreadcrumbMaterialFile: File
|
||||
BreadcrumbMaterialVideo: Video
|
||||
@ -42,7 +42,7 @@ BreadcrumbSheetPseudonym: Pseudonym
|
||||
BreadcrumbSheetCorrectorInvite: Invitation to be a corrector
|
||||
BreadcrumbSheetFile: File
|
||||
BreadcrumbTutorialRegister: Register
|
||||
BreadcrumbTutorInvite: Invitation to be a tutor
|
||||
BreadcrumbTutorInvite: Invitation to be a instructor
|
||||
BreadcrumbExamCorrectorInvite: Invitation to be an exam corrector
|
||||
BreadcrumbExamParticipantInvite: Invitation to be an exam participant
|
||||
BreadcrumbExamRegister: Register
|
||||
@ -57,8 +57,8 @@ BreadcrumbExternalExamUsers: Participants
|
||||
BreadcrumbExternalExamGrades: Exam results
|
||||
BreadcrumbExternalExamStaffInvite: Invitation
|
||||
BreadcrumbExternalExamCorrect: Enter exam results
|
||||
BreadcrumbParticipantsList: Lists of course participants
|
||||
BreadcrumbParticipants: Course participants
|
||||
BreadcrumbParticipantsList: Lists of course type participants
|
||||
BreadcrumbParticipants: Course type participants
|
||||
BreadcrumbExamAutoOccurrence: Automatic occurrence/room distribution
|
||||
BreadcrumbStorageKey: Generate storage key
|
||||
BreadcrumbMessageHide: Hide
|
||||
@ -82,7 +82,7 @@ BreadcrumbExamOfficeExams: Exams
|
||||
BreadcrumbExamOfficeFields: Fields of study
|
||||
BreadcrumbExamOfficeUsers: Users
|
||||
BreadcrumbInformation: Information
|
||||
BreadcrumbInfoLecturerTitle: Information for lecturers
|
||||
BreadcrumbInfoLecturerTitle: Information for course administrators
|
||||
BreadcrumbLegal: Legal
|
||||
BreadcrumbVersion: Version history
|
||||
BreadcrumbHelp: Support
|
||||
@ -91,11 +91,11 @@ BreadcrumbInstance: Instance identification
|
||||
BreadcrumbUserDisplayEmail: Email address
|
||||
BreadcrumbProfileData: Personal information
|
||||
BreadcrumbAuthPreds: Authorisation settings
|
||||
BreadcrumbTermShow: Semesters
|
||||
BreadcrumbTermCreate: Create new semester
|
||||
BreadcrumbTermEdit: Edit semester
|
||||
BreadcrumbTermCurrent: Current semester
|
||||
BreadcrumbParticipantsIntersect: Common course participants
|
||||
BreadcrumbTermShow: Years
|
||||
BreadcrumbTermCreate: Create new year
|
||||
BreadcrumbTermEdit: Edit year
|
||||
BreadcrumbTermCurrent: Current year
|
||||
BreadcrumbParticipantsIntersect: Common course type participants
|
||||
BreadcrumbCourseList: Courses
|
||||
BreadcrumbCourseNew: Create new course
|
||||
BreadcrumbCourseEdit: Edit course
|
||||
@ -104,14 +104,14 @@ BreadcrumbCourseAddMembers: Add participants
|
||||
BreadcrumbCourseExamOffice: Exam offices
|
||||
BreadcrumbCorrectionsAssign: Assign corrections
|
||||
BreadcrumbSheetList: Exercise sheets
|
||||
BreadcrumbCourseCommunication: Course message (email)
|
||||
BreadcrumbTutorialList: Tutorials
|
||||
BreadcrumbTutorialNew: Create new tutorial
|
||||
BreadcrumbCourseCommunication: Course type message (email)
|
||||
BreadcrumbTutorialList: Courses
|
||||
BreadcrumbTutorialNew: Create new course
|
||||
BreadcrumbCourseDelete: Delete course
|
||||
BreadcrumbCourseNewsNew: Add course news
|
||||
BreadcrumbCourseNewsEdit: Edit course news
|
||||
BreadcrumbCourseEventNew: New course occurrence
|
||||
BreadcrumbCourseEventEdit: Edit course occurrence
|
||||
BreadcrumbCourseNewsNew: Add course type news
|
||||
BreadcrumbCourseNewsEdit: Edit course type news
|
||||
BreadcrumbCourseEventNew: New course type occurrence
|
||||
BreadcrumbCourseEventEdit: Edit course type occurrence
|
||||
BreadcrumbExamList: Exams
|
||||
BreadcrumbExamNew: Create new exam
|
||||
BreadcrumbExamEdit: Edit exam
|
||||
@ -119,9 +119,9 @@ BreadcrumbExamUsers: Participants
|
||||
BreadcrumbExamGrades: Exam results
|
||||
BreadcrumbExamAddMembers: Add exam participants
|
||||
BreadcrumbExamCorrect: Grade exams
|
||||
BreadcrumbTutorialDelete: Delete tutorial
|
||||
BreadcrumbTutorialEdit: Edit tutorial
|
||||
BreadcrumbTutorialComm: Send course message
|
||||
BreadcrumbTutorialDelete: Delete course
|
||||
BreadcrumbTutorialEdit: Edit course
|
||||
BreadcrumbTutorialComm: Send course type message
|
||||
BreadcrumbSheetEdit: Edit exercise sheet
|
||||
BreadcrumbSheetDelete: Delete exercise sheet
|
||||
BreadcrumbSubmissions: Submissions
|
||||
|
||||
@ -7,7 +7,7 @@ MenuAdminFeaturesHeading: Studiengänge
|
||||
MenuInfoLecturerTitle: Hinweise für Veranstalter:innen
|
||||
MenuInfoLecturerCourses: Veranstaltungen
|
||||
MenuInfoLecturerExercises: Übungsbetrieb
|
||||
MenuInfoLecturerTutorials: Tutorien
|
||||
MenuInfoLecturerTutorials: Kurse
|
||||
MenuInfoLecturerExams: Prüfungen
|
||||
MenuCsvOptions: CSV-Optionen
|
||||
MenuCorrectorAssignTitle: Korrektor:in zuweisen
|
||||
@ -27,13 +27,14 @@ MenuHelp: Hilfe
|
||||
MenuProfile: Anpassen
|
||||
MenuLogin !ident-ok: Login
|
||||
MenuLogout !ident-ok: Logout
|
||||
MenuCourseList: Kurse
|
||||
MenuCourseMembers: Kursteilnehmer:innen
|
||||
MenuCourseAddMembers: Kursteilnehmer:innen hinzufügen
|
||||
MenuTutorialAddMembers: Tutorium Teilnehmer:innen hinzufügen
|
||||
MenuCourseCommunication: Kursmitteilung (E‑Mail)
|
||||
MenuCourseList: Kursarten
|
||||
MenuCourseIcon: Kurse
|
||||
MenuCourseMembers: Kursartteilnehmer:innen
|
||||
MenuCourseAddMembers: Kursartteilnehmer:innen hinzufügen
|
||||
MenuTutorialAddMembers: Kursteilnehmer:innen hinzufügen
|
||||
MenuCourseCommunication: Kursartmitteilung (E‑Mail)
|
||||
MenuCourseExamOffice: Prüfungsbeauftragte
|
||||
MenuTermShow: Semester
|
||||
MenuTermShow: Jahr
|
||||
MenuSubmissionDelete: Abgabe löschen
|
||||
MenuUsers: Benutzer:in
|
||||
MenuUserAdd: Benutzer:in anlegen
|
||||
@ -44,10 +45,10 @@ MenuMessageList: Systemnachrichten
|
||||
MenuAdminErrMsg: Fehlermeldung entschlüsseln
|
||||
MenuAdminTokens: Tokens ausstellen
|
||||
MenuProfileData: Persönliche Daten
|
||||
MenuTermCreate: Neues Semester anlegen
|
||||
MenuCourseNew: Neuen Kurs anlegen
|
||||
MenuTermEdit: Semester editieren
|
||||
MenuTermCurrent: Aktuelles Semester
|
||||
MenuTermCreate: Neues Jahr anlegen
|
||||
MenuCourseNew: Neue Kursart anlegen
|
||||
MenuTermEdit: Jahr editieren
|
||||
MenuTermCurrent: Aktuelles Jahr
|
||||
MenuCorrection: Korrektur
|
||||
MenuCorrections: Korrekturen
|
||||
MenuCorrectionsOwn: Meine Korrekturen
|
||||
@ -57,14 +58,14 @@ MenuMaterialList !ident-ok: Material
|
||||
MenuMaterialNew: Neues Material veröffentlichen
|
||||
MenuMaterialEdit: Material bearbeiten
|
||||
MenuMaterialDelete: Material löschen
|
||||
MenuTutorialList: Tutorien
|
||||
MenuTutorialNew: Neues Tutorium anlegen
|
||||
MenuTutorialList: Kurse
|
||||
MenuTutorialNew: Neuen Kurs anlegen
|
||||
MenuSheetNew: Neues Übungsblatt anlegen
|
||||
MenuSheetCurrent: Aktuelles Übungsblatt
|
||||
MenuSheetOldUnassigned: Abgaben ohne Korrektor:in
|
||||
MenuCourseEdit: Kurs editieren
|
||||
MenuCourseClone: Als neuen Kurs klonen
|
||||
MenuCourseDelete: Kurs löschen
|
||||
MenuCourseEdit: Kursart editieren
|
||||
MenuCourseClone: Als neue Kursart klonen
|
||||
MenuCourseDelete: Kursart löschen
|
||||
MenuSubmissionNew: Abgabe anlegen
|
||||
MenuSubmissionOwn: Abgabe
|
||||
MenuCorrectors: Korrektor:innen
|
||||
@ -78,8 +79,8 @@ MenuCorrectionsGrade: Korrekturen eintragen
|
||||
MenuCorrectionsAssign: Zuteilung der Korrekturen
|
||||
MenuCorrectionsAssignSheet name@Text: Zuteilung der Korrekturen von #{name}
|
||||
MenuAuthPreds: Authorisierungseinstellungen
|
||||
MenuTutorialDelete: Tutorium löschen
|
||||
MenuTutorialEdit: Tutorium editieren
|
||||
MenuTutorialDelete: Kurs löschen
|
||||
MenuTutorialEdit: Kurs editieren
|
||||
MenuTutorialComm: Mitteilung an Teilnehmer:innen
|
||||
MenuExamList: Prüfungen
|
||||
MenuExamNew: Neue Prüfung anlegen
|
||||
@ -92,26 +93,26 @@ MenuExamOfficeExams: Prüfungen
|
||||
MenuExamOfficeFields: Fächer
|
||||
MenuExamOfficeUsers: Benutzer:innen
|
||||
MenuLecturerInvite: Funktionäre hinzufügen
|
||||
MenuSchoolList: Institute
|
||||
MenuSchoolNew: Neues Institut anlegen
|
||||
MenuSchoolList: Bereiche
|
||||
MenuSchoolNew: Neuen Bereich anlegen
|
||||
MenuExternalExamGrades: Prüfungsleistungen
|
||||
MenuExternalExamUsers: Teilnehmer:innen
|
||||
MenuExternalExamEdit: Bearbeiten
|
||||
MenuExternalExamNew: Neue externe Prüfung
|
||||
MenuExternalExamList: Externe Prüfungen
|
||||
MenuExternalExamCorrect: Prüfungsleistungen eintragen
|
||||
MenuParticipantsList: Kursteilnehmerlisten
|
||||
MenuParticipantsIntersect: Überschneidung von Kursteilnehmer:innen
|
||||
MenuParticipantsList: Kursartteilnehmerlisten
|
||||
MenuParticipantsIntersect: Überschneidung von Kursartteilnehmer:innen
|
||||
MenuFaq !ident-ok: FAQ
|
||||
MenuSheetPersonalisedFiles: Personalisierte Dateien herunterladen
|
||||
MenuCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen
|
||||
MenuAdminCrontab !ident-ok: Crontab
|
||||
MenuGlossary: Begriffsverzeichnis
|
||||
MenuVersion: Versionsgeschichte
|
||||
MenuCourseNewsNew: Neue Kursnachricht
|
||||
MenuCourseNewsEdit: Kursnachricht bearbeiten
|
||||
MenuCourseEventNew: Neuer Kurstermin
|
||||
MenuCourseEventEdit: Kurstermin bearbeiten
|
||||
MenuCourseNewsNew: Neue Kursartnachricht
|
||||
MenuCourseNewsEdit: Kursartnachricht bearbeiten
|
||||
MenuCourseEventNew: Neuer Kursarttermin
|
||||
MenuCourseEventEdit: Kursarttermin bearbeiten
|
||||
MenuLanguage: Sprache
|
||||
|
||||
MenuQualifications: Qualifikationen
|
||||
|
||||
@ -4,10 +4,10 @@
|
||||
|
||||
MenuAdminHeading: Administration
|
||||
MenuAdminFeaturesHeading: Features of study
|
||||
MenuInfoLecturerTitle: Information for lecturers
|
||||
MenuInfoLecturerTitle: Information for course administrators
|
||||
MenuInfoLecturerCourses: Courses
|
||||
MenuInfoLecturerExercises: Course Exercises
|
||||
MenuInfoLecturerTutorials: Tutorials
|
||||
MenuInfoLecturerExercises: Course type Exercises
|
||||
MenuInfoLecturerTutorials: Courses
|
||||
MenuInfoLecturerExams: Exams
|
||||
MenuCsvOptions: CSV-options
|
||||
MenuCorrectorAssignTitle: Assign corrector
|
||||
@ -27,11 +27,12 @@ MenuHelp: Support
|
||||
MenuProfile: Settings
|
||||
MenuLogin: Login
|
||||
MenuLogout: Logout
|
||||
MenuCourseList: Courses
|
||||
MenuCourseList: Course types
|
||||
MenuCourseIcon: Courses
|
||||
MenuCourseMembers: Participants
|
||||
MenuCourseAddMembers: Add course participants
|
||||
MenuTutorialAddMembers: Add tutorium participants
|
||||
MenuCourseCommunication: Course message (email)
|
||||
MenuCourseAddMembers: Add course type participants
|
||||
MenuTutorialAddMembers: Add course participants
|
||||
MenuCourseCommunication: Course type message (email)
|
||||
MenuCourseExamOffice: Exam offices
|
||||
MenuTermShow: Semesters
|
||||
MenuSubmissionDelete: Delete submission
|
||||
@ -44,10 +45,10 @@ MenuMessageList: System messages
|
||||
MenuAdminErrMsg: Decrypt error message
|
||||
MenuAdminTokens: Issue tokens
|
||||
MenuProfileData: Personal information
|
||||
MenuTermCreate: Create new semester
|
||||
MenuCourseNew: Create new course
|
||||
MenuTermEdit: Edit semester
|
||||
MenuTermCurrent: Current semester
|
||||
MenuTermCreate: Create new year
|
||||
MenuCourseNew: Create new course type
|
||||
MenuTermEdit: Edit year
|
||||
MenuTermCurrent: Current year
|
||||
MenuCorrection: Correction
|
||||
MenuCorrections: Corrections
|
||||
MenuCorrectionsOwn: My corrections
|
||||
@ -57,8 +58,8 @@ MenuMaterialList: Material
|
||||
MenuMaterialNew: Publish new material
|
||||
MenuMaterialEdit: Edit material
|
||||
MenuMaterialDelete: Delete material
|
||||
MenuTutorialList: Tutorials
|
||||
MenuTutorialNew: Create new tutorial
|
||||
MenuTutorialList: Courses
|
||||
MenuTutorialNew: Create new course
|
||||
MenuSheetNew: Create new exercise sheet
|
||||
MenuSheetCurrent: Current exercise sheet
|
||||
MenuSheetOldUnassigned: Submissions without corrector
|
||||
@ -79,9 +80,9 @@ MenuCorrectionsGrade: Grade submissions
|
||||
MenuCorrectionsAssign: Assign corrections
|
||||
MenuCorrectionsAssignSheet name: Assign corrections for #{name}
|
||||
MenuAuthPreds: Authorisation settings
|
||||
MenuTutorialDelete: Delete tutorial
|
||||
MenuTutorialEdit: Edit tutorial
|
||||
MenuTutorialComm: Send course message
|
||||
MenuTutorialDelete: Delete course
|
||||
MenuTutorialEdit: Edit course
|
||||
MenuTutorialComm: Send course type message
|
||||
MenuExamList: Exams
|
||||
MenuExamNew: Create new exam
|
||||
MenuExamEdit: Edit exam
|
||||
@ -101,18 +102,18 @@ MenuExternalExamEdit: Edit
|
||||
MenuExternalExamNew: New external exam
|
||||
MenuExternalExamList: External exams
|
||||
MenuExternalExamCorrect: Enter exam results
|
||||
MenuParticipantsList: Lists of course participants
|
||||
MenuParticipantsIntersect: Common course participants
|
||||
MenuParticipantsList: Lists of course type participants
|
||||
MenuParticipantsIntersect: Common course type participants
|
||||
MenuFaq: FAQ
|
||||
MenuSheetPersonalisedFiles: Download personalised sheet files
|
||||
MenuCourseSheetPersonalisedFiles: Download template for personalised sheet files
|
||||
MenuAdminCrontab: Crontab
|
||||
MenuGlossary: Glossary
|
||||
MenuVersion: Version history
|
||||
MenuCourseNewsNew: Add course news
|
||||
MenuCourseNewsEdit: Edit course news
|
||||
MenuCourseEventNew: New course occurrence
|
||||
MenuCourseEventEdit: Edit course occurrence
|
||||
MenuCourseNewsNew: Add course type news
|
||||
MenuCourseNewsEdit: Edit course type news
|
||||
MenuCourseEventNew: New course type occurrence
|
||||
MenuCourseEventEdit: Edit course type occurrence
|
||||
MenuLanguage: Language
|
||||
|
||||
MenuQualifications: Qualifications
|
||||
|
||||
@ -22,23 +22,23 @@ HeadingDataProt: Datenschutzerklärung
|
||||
HeadingTermsUse: Nutzungsbedingungen
|
||||
HeadingCopyright: Urheberrecht
|
||||
HeadingImprint: Impressum
|
||||
HeadingTermsHeading: Semesterübersicht
|
||||
HeadingTermEditHeading: Semester editieren/anlegen
|
||||
HeadingTermCurrent: Aktuelles Semester
|
||||
HeadingTermEditTid tid@TermId: Semester #{tid} editieren
|
||||
TermCourseListHeading tid@TermId: Kursübersicht #{tid}
|
||||
TermSchoolCourseListHeading tid@TermId school@SchoolName: Kursübersicht #{tid} für #{school}
|
||||
CourseListTitle: Alle Kurse
|
||||
CourseNewHeading: Neuen Kurs anlegen
|
||||
CourseEditHeading tid@TermId ssh@SchoolId csh@CourseShorthand: Kurs #{tid}-#{ssh}-#{csh} editieren
|
||||
SubmissionsCourse tid@TermId ssh@SchoolId csh@CourseShorthand: Alle Abgaben Kurs #{tid}-#{ssh}-#{csh}
|
||||
HeadingTermsHeading: Jahresübersicht
|
||||
HeadingTermEditHeading: Jahr editieren/anlegen
|
||||
HeadingTermCurrent: Aktuelles Jahr
|
||||
HeadingTermEditTid tid@TermId: Jahr #{tid} editieren
|
||||
TermCourseListHeading tid@TermId: Kursartübersicht #{tid}
|
||||
TermSchoolCourseListHeading tid@TermId school@SchoolName: Kursartübersicht #{tid} für #{school}
|
||||
CourseListTitle: Alle Kursarten
|
||||
CourseNewHeading: Neue Kursart anlegen
|
||||
CourseEditHeading tid@TermId ssh@SchoolId csh@CourseShorthand: Kursart #{tid}-#{ssh}-#{csh} editieren
|
||||
SubmissionsCourse tid@TermId ssh@SchoolId csh@CourseShorthand: Alle Abgaben Kursart #{tid}-#{ssh}-#{csh}
|
||||
SubmissionsSheet sheetName@SheetName: Abgaben für #{sheetName}
|
||||
SheetList tid@TermId ssh@SchoolId csh@CourseShorthand: #{tid}-#{ssh}-#{csh} Übersicht Übungsblätter
|
||||
SheetNewHeading tid@TermId ssh@SchoolId csh@CourseShorthand: #{tid}-#{ssh}-#{csh} Neues Übungsblatt anlegen
|
||||
SheetTitle tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName !ident-ok: #{tid}-#{ssh}-#{csh} #{sheetName}
|
||||
SheetTitleNew tid@TermId ssh@SchoolId csh@CourseShorthand : #{tid}-#{ssh}-#{csh}: Neues Übungsblatt
|
||||
SheetEditHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh} #{sheetName} editieren
|
||||
SheetDelHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{sheetName} wirklich aus Kurs #{tid}-#{ssh}-#{csh} herauslöschen? Alle assoziierten Abgaben und Korrekturen gehen ebenfalls verloren!
|
||||
SheetDelHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{sheetName} wirklich aus Kursart #{tid}-#{ssh}-#{csh} herauslöschen? Alle assoziierten Abgaben und Korrekturen gehen ebenfalls verloren!
|
||||
SubmissionEditHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh} #{sheetName}: Abgabe editieren/anlegen
|
||||
CorrectionHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName cid@CryptoFileNameSubmission: #{tid}-#{ssh}-#{csh} #{sheetName}: Korrektur
|
||||
CorrectionsTitle: Zugewiesene Korrekturen
|
||||
@ -47,9 +47,9 @@ CorrCreate: Abgaben registrieren
|
||||
CorrGrade: Korrekturen eintragen
|
||||
TableHeadingCsvImport: CSV-Import
|
||||
TableHeadingCsvExport: CSV-Export
|
||||
FavouritesEmptyTip: Hier werden Ihre Kurse, sowie zuletzt besuchte Kurse angezeigt.
|
||||
FavouritesToggleTip: Der Anzeigemodus für den aktuellen Kurs kann über einen Klick auf das Stern-Symbol zwischen automatisch, permanent und nie gewechselt werden.
|
||||
FavouritesUnavailableTip: Das Schnellzugriffsmenü für diesen Kurs ist aktuell nicht verfügbar.
|
||||
FavouritesEmptyTip: Hier werden Ihre Kursarten, sowie zuletzt besuchte Kursarten angezeigt.
|
||||
FavouritesToggleTip: Der Anzeigemodus für die aktuelle Kursart kann über einen Klick auf das Stern-Symbol zwischen automatisch, permanent und nie gewechselt werden.
|
||||
FavouritesUnavailableTip: Das Schnellzugriffsmenü für diese Kursart ist aktuell nicht verfügbar.
|
||||
NavigationFavourites: Favoriten
|
||||
ErrorResponseTitleInternalError internalError@Text: Ein interner Fehler ist aufgetreten
|
||||
ErrorResponseTitleInvalidArgs invalidArgs@Texts: Anfrage-Nachricht enthielt ungültige Argumente
|
||||
|
||||
@ -22,15 +22,15 @@ HeadingDataProt: Data protection
|
||||
HeadingTermsUse: Terms of use
|
||||
HeadingCopyright: Copyright
|
||||
HeadingImprint: Imprint
|
||||
HeadingTermsHeading: Semesters
|
||||
HeadingTermEditHeading: Edit semester
|
||||
HeadingTermCurrent: Current semester
|
||||
HeadingTermEditTid tid: Edit semester #{tid}
|
||||
HeadingTermsHeading: Years
|
||||
HeadingTermEditHeading: Edit year
|
||||
HeadingTermCurrent: Current year
|
||||
HeadingTermEditTid tid: Edit year #{tid}
|
||||
TermCourseListHeading tid: Courses #{tid}
|
||||
TermSchoolCourseListHeading tid school: Courses #{tid}, #{school}
|
||||
CourseListTitle: All courses
|
||||
CourseNewHeading: Create new course
|
||||
CourseEditHeading tid ssh csh: Edit course #{tid}-#{ssh}-#{csh}
|
||||
CourseNewHeading: Create new course type
|
||||
CourseEditHeading tid ssh csh: Edit course type #{tid}-#{ssh}-#{csh}
|
||||
SubmissionsCourse tid ssh csh: All submissions for Course #{tid}-#{ssh}-#{csh}
|
||||
SubmissionsSheet sheetName: Submissions for #{sheetName}
|
||||
SheetList tid ssh csh : #{tid}-#{ssh}-#{csh} Sheet Overview
|
||||
@ -38,7 +38,7 @@ SheetNewHeading tid ssh csh : #{tid}-#{ssh}-#{csh} New Exercise Sheet
|
||||
SheetTitle tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh} #{sheetName}
|
||||
SheetTitleNew tid@TermId ssh@SchoolId csh@CourseShorthand : #{tid}-#{ssh}-#{csh}: New sheet
|
||||
SheetEditHead tid ssh csh sheetName: #{tid}-#{ssh}-#{csh} Edit #{sheetName}
|
||||
SheetDelHead tid ssh csh sheetName: Do you really want to delete sheet #{sheetName} from course #{tid}-#{ssh}-#{csh}? Any associated submissions and corrections will be lost!
|
||||
SheetDelHead tid ssh csh sheetName: Do you really want to delete sheet #{sheetName} from course type #{tid}-#{ssh}-#{csh}? Any associated submissions and corrections will be lost!
|
||||
SubmissionEditHead tid ssh csh sheetName: #{tid}-#{ssh}-#{csh} #{sheetName}: Edit/Create submission
|
||||
CorrectionHead tid ssh csh sheetName cid: #{tid}-#{ssh}-#{csh} #{sheetName}: Marking
|
||||
CorrectionsTitle: Assigned corrections
|
||||
@ -48,8 +48,8 @@ CorrGrade: Mark submissions
|
||||
TableHeadingCsvImport: CSV import
|
||||
TableHeadingCsvExport: CSV export
|
||||
FavouritesEmptyTip: Your courses and recently visited courses are shown here.
|
||||
FavouritesToggleTip: The display mode for the current course can be changed between automatic, permanent and never with a click on the star symbol.
|
||||
FavouritesUnavailableTip: Quick Actions for this course are currently not available.
|
||||
FavouritesToggleTip: The display mode for the current course type can be changed between automatic, permanent and never with a click on the star symbol.
|
||||
FavouritesUnavailableTip: Quick Actions for this course type are currently not available.
|
||||
NavigationFavourites: Favourites
|
||||
ErrorResponseTitleInternalError internalError: An internal error occurred
|
||||
ErrorResponseTitleInvalidArgs invalidArgs: Request contained invalid arguments
|
||||
|
||||
@ -12,15 +12,15 @@ TableStudyFeatureType !empty-ok:
|
||||
TableStudyFeatureValid: Aktiv
|
||||
TableStudyFeatureUpdate: Abgeglichen
|
||||
TableHeadingFilter !ident-ok: Filter
|
||||
TableTerm !ident-ok: Semester
|
||||
TableCourseSchool: Institut
|
||||
TableTerm !ident-ok: Jahr
|
||||
TableCourseSchool: Bereich
|
||||
TableSubmissionGroup: Feste Abgabegruppe
|
||||
TableNoSubmissionGroup: Keine feste Abgabegruppe
|
||||
TableMatrikelNr: AVS Nr
|
||||
TableSex: Geschlecht
|
||||
TableBirthday: Geburtsdatum
|
||||
TableSchool: Institut
|
||||
TableCourse: Kurs
|
||||
TableSchool: Bereich
|
||||
TableCourse: Kursart
|
||||
TableCourseMembers: Teilnehmer:innen
|
||||
TableExamOccurrence: Termin/Raum
|
||||
TableExamName !ident-ok: Name
|
||||
@ -45,7 +45,7 @@ TableHasCorrector: Korrektor zugeteilt
|
||||
TableAchievedOf achieved@Points possible@Points: #{achieved} von #{possible}
|
||||
TablePassed: Bestanden
|
||||
TableNotPassed: Nicht bestanden
|
||||
TableTutorialTutors: Tutoren
|
||||
TableTutorialTutors: Ausbilder
|
||||
TableTutorialName: Bezeichnung
|
||||
TableTutorialType: Art
|
||||
TableTutorialRoom: Regulärer Raum
|
||||
@ -54,6 +54,7 @@ TableTutorialRoomIsUnset !ident-ok: —
|
||||
TableTutorialRoomIsHidden: Raum wird nur Teilnehmern angezeigt
|
||||
TableTutorialTime: Zeit
|
||||
TableTutorialDeregisterUntil: Abmeldungen bis
|
||||
TableTutorialFirstDay: Starttag
|
||||
TableActionsHead: Aktionen
|
||||
TableNoFilter: Keine Einschränkung
|
||||
TableUserMatriculation: ASV Nummer
|
||||
|
||||
@ -8,11 +8,11 @@ TableEmail: Email
|
||||
TableStudyFeatureType:
|
||||
TableStudyFeatureValid: Valid
|
||||
TableStudyFeatureUpdate: Updated
|
||||
TableStudyFeatureAge: Semester
|
||||
TableStudyFeatureAge: Semesters
|
||||
TableStudyFeatureDegree: Degree
|
||||
TableStudyTerm: Field of study
|
||||
TableHeadingFilter: Filter
|
||||
TableTerm: Semester
|
||||
TableTerm: Year
|
||||
TableCourseSchool: Department
|
||||
TableSubmissionGroup: Registered submission group
|
||||
TableNoSubmissionGroup: No registered submission group
|
||||
@ -45,7 +45,7 @@ TableHasCorrector: Corrector assigned
|
||||
TableAchievedOf achieved possible: #{achieved} of #{possible}
|
||||
TablePassed: Passed
|
||||
TableNotPassed: Failed
|
||||
TableTutorialTutors: Tutors
|
||||
TableTutorialTutors: Instructors
|
||||
TableTutorialName: Name
|
||||
TableTutorialType: Type
|
||||
TableTutorialRoom: Regular room
|
||||
@ -53,6 +53,7 @@ TableTutorialRoomHidden: Room only for participants
|
||||
TableTutorialRoomIsUnset: —
|
||||
TableTutorialRoomIsHidden: Room is only displayed to participants
|
||||
TableTutorialDeregisterUntil: Deregister until
|
||||
TableTutorialFirstDay: Start date
|
||||
TableActionsHead: Actions
|
||||
TableTutorialTime: Time
|
||||
TableNoFilter: No restriction
|
||||
|
||||
@ -27,7 +27,7 @@ CsvColumnsExplanationsTip: Bedeutung und Format der in der CSV-Datei enthaltenen
|
||||
CsvExportExample: Beispiel-CSV exportieren
|
||||
CsvExampleData: Beispiel-Datei
|
||||
CourseSortingOnlyLoggedIn: Das Benutzerinterface zur Sortierung dieser Tabelle ist nur für eingeloggte Benutzer aktiv
|
||||
LecturersForN n@Int: #{pluralDE n "Dozent" "Dozenten"}
|
||||
LecturersForN n@Int: #{pluralDE n "Kursverwalter" "Kursverwaltende"}
|
||||
Registered: Angemeldet
|
||||
Registration: Anmeldung
|
||||
TableCourseDescription: Beschreibung
|
||||
|
||||
@ -27,7 +27,7 @@ CsvColumnsExplanationsTip: Meaning and format of the columns contained in import
|
||||
CsvExportExample: Export example CSV
|
||||
CsvExampleData: Example data
|
||||
CourseSortingOnlyLoggedIn: The user interface for sorting this table is only active for logged in users
|
||||
LecturersForN n: #{pluralEN n "Lecturer" "Lecturers"}
|
||||
LecturersForN n: #{pluralENs n "Course administrator"}
|
||||
Registered: Enrolled
|
||||
Registration: Enrolment
|
||||
TableCourseDescription: Description
|
||||
|
||||
@ -4,26 +4,26 @@
|
||||
|
||||
#communication.hs
|
||||
RecipientCustom: Weitere Empfänger:innen
|
||||
RGCourseParticipants: Kursteilnehmer:innen
|
||||
RGCourseParticipants: Kursartteilnehmer:innen
|
||||
RGCourseLecturers: Kursverwalter:innen
|
||||
RGCourseCorrectors: Korrektor:innen
|
||||
RGCourseTutors: Tutor:innen
|
||||
RGCourseParticipantsInTutorial: Kursteilnehmer:innen, die in mindestens einem Tutorium angemeldet sind
|
||||
RGCourseTutors: Ausbilder:innen
|
||||
RGCourseParticipantsInTutorial: Kursartteilnehmer:innen, die in mindestens einem Kurs angemeldet sind
|
||||
RGCourseUnacceptedApplicants: Nicht akzeptierte Bewerber:innen
|
||||
RecipientToggleAll: Alle/Keine
|
||||
CommCourseTestSubject customSubject@Text !ident-ok: [TEST] #{customSubject}
|
||||
UtilCommCourseSubject: Kursmitteilung
|
||||
UtilCommCourseSubject: Kursartmitteilung
|
||||
CommRecipients: Empfänger:innen
|
||||
CommRecipientsTip: Sie selbst erhalten immer eine Kopie der Nachricht
|
||||
CommRecipientsList: Die an Sie selbst verschickte Kopie der Nachricht wird, zu Archivierungszwecken, eine vollständige Liste aller Empfänger:innen enthalten. Die Empfängerliste wird im CSV-Format an die E-Mail angehängt. Andere Empfänger:innen erhalten die Liste nicht. Bitte entfernen Sie dementsprechend den Anhang bevor Sie die E-Mail weiterleiten oder anderweitig mit Dritten teilen.
|
||||
UtilEMail: E-Mail
|
||||
UtilMultiEmailFieldTip: Es sind mehrere, Komma-separierte, E-Mail-Adressen möglich
|
||||
RGTutorialParticipants tutn@TutorialName: Tutorium-Teilnehmer:innen (#{tutn})
|
||||
RGTutorialParticipants tutn@TutorialName: Kursteilnehmer:innen (#{tutn})
|
||||
RGExamRegistered examn@ExamName: Angemeldet zur Prüfung „#{examn}“
|
||||
RGSheetSubmittor shn@SheetName: Abgebende für das Übungsblatt „#{shn}“
|
||||
CommSubject: Betreff
|
||||
CommAttachments: Anhänge
|
||||
CommAttachmentsTip: Im Allgemeinen ist es vorzuziehen Dateien, die Sie mit den Empfängern teilen möchten, als Material hochzuladen (und ggf. in der Nachricht zu verlinken). So ist die Datei für die Empfänger dauerhaft abrufbar und auch Personen, die sich z.B. erst später zum Kurs anmelden, haben Zugriff auf die Datei.
|
||||
CommAttachmentsTip: Im Allgemeinen ist es vorzuziehen Dateien, die Sie mit den Empfängern teilen möchten, als Material hochzuladen (und ggf. in der Nachricht zu verlinken). So ist die Datei für die Empfänger dauerhaft abrufbar und auch Personen, die sich z.B. erst später zur Kursart anmelden, haben Zugriff auf die Datei.
|
||||
CommSuccess n@Int: Nachricht wurde an #{n} Empfänger versandt
|
||||
CommTestSuccess: Nachricht wurde zu Testzwecken nur an Sie selbst versandt
|
||||
|
||||
@ -117,7 +117,7 @@ SheetGradingPassing': Bestehen
|
||||
#utils.hs
|
||||
DayIsAHoliday tid@TermId name@Text date@Text: "#{name}" (#{date}) ist ein Feiertag
|
||||
DayIsOutOfLecture tid@TermId name@Text date@Text: "#{name}" (#{date}) ist außerhalb der Vorlesungszeit des #{tid}
|
||||
DayIsOutOfTerm tid@TermId name@Text date@Text: "#{name}" (#{date}) liegt nicht im Semester #{tid}
|
||||
DayIsOutOfTerm tid@TermId name@Text date@Text: "#{name}" (#{date}) liegt nicht im Jahr #{tid}
|
||||
UnauthorizedRedirect: Die angeforderte Seite existiert nicht oder Sie haben keine Berechtigung, die angeforderte Seite zu sehen.
|
||||
|
||||
EncodedSecretBoxCiphertextTooShort: Verschlüsselte Daten zu kurz um valide zu sein
|
||||
|
||||
@ -4,26 +4,26 @@
|
||||
|
||||
#communication.hs
|
||||
RecipientCustom: Custom recipients
|
||||
RGCourseParticipants: Course participants
|
||||
RGCourseParticipants: Course type participants
|
||||
RGCourseLecturers: Course administrators
|
||||
RGCourseCorrectors: Course correctors
|
||||
RGCourseTutors: Course tutors
|
||||
RGCourseParticipantsInTutorial: Course participants who are registered for at least one tutorial
|
||||
RGCourseCorrectors: Course type correctors
|
||||
RGCourseTutors: Course instructors
|
||||
RGCourseParticipantsInTutorial: Course type participants who are registered for at least one course
|
||||
RGCourseUnacceptedApplicants: Applicants not accepted
|
||||
RecipientToggleAll: All/None
|
||||
CommCourseTestSubject customSubject: [TEST] #{customSubject}
|
||||
UtilCommCourseSubject: Course message
|
||||
UtilCommCourseSubject: Course type message
|
||||
CommRecipients: Recipients
|
||||
CommRecipientsTip: You always receive a copy of the message
|
||||
CommRecipientsList: For archival purposes the copy of the message sent to you will contain a complete list of all recipients. The list of recipients will be attached to the email in CSV-format. Other recipients do not receive the list. Thus, please remove the attachment before you forward the email or otherwise share it with third parties.
|
||||
UtilEMail: Email
|
||||
UtilMultiEmailFieldTip: Multiple emails addresses may be specified (comma-separated)
|
||||
RGTutorialParticipants tutn: Tutorial participants (#{tutn})
|
||||
RGTutorialParticipants tutn: Course participants (#{tutn})
|
||||
RGExamRegistered examn: Registered for exam “#{examn}”
|
||||
RGSheetSubmittor shn: Submitted for exercise sheet “#{shn}”
|
||||
CommSubject: Subject
|
||||
CommAttachments: Attachments
|
||||
CommAttachmentsTip: In general it is preferable to upload files as course material instead of sending them as attachments. You can then link to the material from the message. The file is then permanently accessable to the recipients and to persons that, for example, register for the Course at a later date.
|
||||
CommAttachmentsTip: In general it is preferable to upload files as course type material instead of sending them as attachments. You can then link to the material from the message. The file is then permanently accessable to the recipients and to persons that, for example, register for the Course type at a later date.
|
||||
CommSuccess n: Message was sent to #{n} #{pluralEN n "recipient" "recipients"}
|
||||
CommTestSuccess: Message was sent only to yourself for testing purposes
|
||||
|
||||
|
||||
@ -18,6 +18,7 @@ UserAvs
|
||||
user UserId
|
||||
noPerson Int default=0 -- only needed for manual communication with personnel from Ausweisverwaltungsstelle
|
||||
lastSynch UTCTime default=now()
|
||||
lastSynchError Text Maybe
|
||||
UniqueUserAvsUser user
|
||||
UniqueUserAvsId personId
|
||||
deriving Generic Show
|
||||
@ -32,3 +33,10 @@ UserAvsCard
|
||||
lastSynch UTCTime
|
||||
-- UniqueAvsCard cardNo -- Note: cardNo is not unique; invalid cardNo may be reissued to different persons
|
||||
deriving Generic
|
||||
|
||||
AvsSync
|
||||
user UserId -- Note: we need to lookup UserAvs Entity anyway, so no benefit from storing AvsPersonId here
|
||||
creationTime UTCTime
|
||||
pause Day Maybe
|
||||
UniqueAvsSyncUser user
|
||||
deriving Generic
|
||||
@ -57,7 +57,7 @@ Lecturer -- course ownership
|
||||
UniqueLecturer user course -- note: multiple lecturers per course are allowed, but no duplicated rows in this table
|
||||
deriving Generic
|
||||
CourseParticipant -- course enrolement
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
user UserId
|
||||
registration UTCTime -- time of last enrolement for this course
|
||||
field StudyFeaturesId Maybe MigrationOnly
|
||||
@ -73,7 +73,7 @@ CourseParticipant -- course enrolement
|
||||
-- editor UserId -- who edited this note last
|
||||
-- UniqueCourseUserNote user course
|
||||
CourseUserNote -- lecturers of a specific course may share a text note on each enrolled student
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
user UserId
|
||||
note StoredMarkup -- arbitrary user-defined text; visible only to lecturer of this course
|
||||
UniqueCourseUserNote user course
|
||||
@ -85,14 +85,14 @@ CourseUserNoteEdit -- who edited a participants course note when
|
||||
deriving Generic
|
||||
|
||||
CourseUserExamOfficeOptOut
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
user UserId
|
||||
school SchoolId
|
||||
UniqueCourseUserExamOfficeOptOut course user school
|
||||
deriving Generic
|
||||
|
||||
CourseQualification
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
qualification QualificationId
|
||||
sortOrder Int default=0 --TODO: not yet used in Handler.Course.Users.makeCourseUserTable
|
||||
UniqueCourseQualification course qualification
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
-- SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
Exam
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
name ExamName
|
||||
gradingRule ExamGradingRule Maybe
|
||||
bonusRule ExamBonusRule Maybe
|
||||
|
||||
@ -11,10 +11,10 @@ Qualification
|
||||
validDuration Int Maybe -- > 0, qualification is valid indefinitely or for a specified number of months, use with addMonthsDay
|
||||
auditDuration Int Maybe -- > 0, number of months to keep audit log and LmsUserIdents; or indefinitely (dangerous, since LmsIdents may run out)
|
||||
refreshWithin CalendarDiffDays Maybe -- notify users about renewal within this number of month/days before expiry; to be used with addGregorianDurationClip
|
||||
refreshReminder CalendarDiffDays Maybe -- send a second notification about renewal within this number of month/days before expiry
|
||||
elearningStart Bool -- automatically schedule e-refresher
|
||||
-- elearningOnly Bool -- successful E-learing automatically increases validity. NO!
|
||||
-- refreshInvitation StoredMarkup -- hard-coded I18N-MSGs used instead, but displayed on qualification page NO!
|
||||
-- expiryNotification StoredMarkup Maybe -- configurable user-profile-notifcations are used instead NO!
|
||||
-- elearningOnly Bool -- successful E-learing automatically increases validity. NO!
|
||||
expiryNotification Bool default=true -- should expiryNotification be generated for this qualification?
|
||||
avsLicence AvsLicence Maybe -- if set, valid QualificationUsers are synchronized to AVS as a driving licence
|
||||
sapId Text Maybe -- if set, valid QualificationUsers with userCompanyPersonalNumber are transmitted via SAP interface under this id
|
||||
SchoolQualificationShort school shorthand -- must be unique per school and shorthand
|
||||
|
||||
@ -16,6 +16,7 @@ Tutorial json
|
||||
deregisterUntil UTCTime Maybe
|
||||
lastChanged UTCTime default=now()
|
||||
tutorControlled Bool default=false
|
||||
firstDay Day Maybe -- to be computed from time, but needed for sorting within DB
|
||||
UniqueTutorial course name
|
||||
deriving Generic
|
||||
Tutor
|
||||
|
||||
@ -52,6 +52,7 @@ User json -- Each Uni2work user has a corresponding row in this table; create
|
||||
examOfficeGetLabels Bool default=true -- whether labels should be displayed for exam results by default
|
||||
UniqueAuthentication ident -- Column 'ident' can be used as a row-key in this table
|
||||
UniqueEmail email -- Column 'email' can be used as a row-key in this table
|
||||
UniqueLdapPrimaryKey ldapPrimaryKey !force -- Column 'ldapPrimaryKey' is either empty or contains a unique value
|
||||
deriving Show Eq Ord Generic -- Haskell-specific settings for runtime-value representing a row in memory
|
||||
|
||||
UserFunction -- Administratively assigned functions (lecturer, admin, evaluation, ...)
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"version": "27.4.6"
|
||||
"version": "27.4.11"
|
||||
}
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"version": "27.4.6"
|
||||
"version": "27.4.11"
|
||||
}
|
||||
|
||||
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "uni2work",
|
||||
"version": "27.4.6",
|
||||
"version": "27.4.11",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "uni2work",
|
||||
"version": "27.4.6",
|
||||
"version": "27.4.11",
|
||||
"description": "",
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name: uniworx
|
||||
version: 27.4.6
|
||||
version: 27.4.11
|
||||
dependencies:
|
||||
- base
|
||||
- yesod
|
||||
|
||||
@ -10,6 +10,7 @@ module Database.Esqueleto.Utils
|
||||
, vals, justVal, justValList, toValues
|
||||
, isJust, alt
|
||||
, isInfixOf, hasInfix
|
||||
, isPrefixOf_, hasPrefix_
|
||||
, strConcat, substring
|
||||
, (=?.), (?=.)
|
||||
, (=~.), (~=.)
|
||||
@ -154,9 +155,9 @@ alt :: PersistField typ => E.SqlExpr (E.Value (Maybe typ)) -> E.SqlExpr (E.Value
|
||||
-- alt a b = E.case_ [(isJust a, a), (isJust b, b)] b
|
||||
alt a b = E.coalesce [a,b]
|
||||
|
||||
infix 4 `isInfixOf`, `hasInfix`
|
||||
infix 4 `isInfixOf`, `hasInfix`, `isPrefixOf_`, `hasPrefix_`
|
||||
|
||||
-- | Check if the first string is contained in the text derived from the second argument
|
||||
-- | Check if the first string is contained in the text derived from the second argument (case-insensitive)
|
||||
isInfixOf :: ( E.SqlString s1
|
||||
, E.SqlString s2
|
||||
)
|
||||
@ -169,6 +170,20 @@ hasInfix :: ( E.SqlString s1
|
||||
=> E.SqlExpr (E.Value s2) -> E.SqlExpr (E.Value s1) -> E.SqlExpr (E.Value Bool)
|
||||
hasInfix = flip isInfixOf
|
||||
|
||||
-- | Check if the first string is a prefix of the text derived from the second argument (case-insensitive)
|
||||
isPrefixOf_ :: ( E.SqlString s1
|
||||
, E.SqlString s2
|
||||
)
|
||||
=> E.SqlExpr (E.Value s1) -> E.SqlExpr (E.Value s2) -> E.SqlExpr (E.Value Bool)
|
||||
isPrefixOf_ needle strExpr = E.castString strExpr `E.ilike` needle E.++. (E.%)
|
||||
|
||||
hasPrefix_ :: ( E.SqlString s1
|
||||
, E.SqlString s2
|
||||
)
|
||||
=> E.SqlExpr (E.Value s2) -> E.SqlExpr (E.Value s1) -> E.SqlExpr (E.Value Bool)
|
||||
hasPrefix_ = flip isPrefixOf_
|
||||
|
||||
|
||||
infixl 6 `strConcat`
|
||||
|
||||
strConcat :: E.SqlString s
|
||||
|
||||
@ -681,7 +681,7 @@ defaultLinks = fmap catMaybes . mapM runMaybeT $ -- Define the menu items of the
|
||||
{ navHeaderRole = NavHeaderPrimary
|
||||
, navIcon = IconMenuCourseList
|
||||
, navLink = NavLink
|
||||
{ navLabel = MsgMenuCourseList
|
||||
{ navLabel = MsgMenuCourseIcon
|
||||
, navRoute = CourseListR
|
||||
, navAccess' = NavAccessTrue
|
||||
, navType = NavTypeLink { navModal = False }
|
||||
@ -689,30 +689,30 @@ defaultLinks = fmap catMaybes . mapM runMaybeT $ -- Define the menu items of the
|
||||
, navForceActive = False
|
||||
}
|
||||
}
|
||||
, return NavHeader
|
||||
{ navHeaderRole = NavHeaderPrimary
|
||||
, navIcon = IconMenuCorrections
|
||||
, navLink = NavLink
|
||||
{ navLabel = MsgMenuCorrections
|
||||
, navRoute = CorrectionsR
|
||||
, navAccess' = NavAccessTrue
|
||||
, navType = NavTypeLink { navModal = False }
|
||||
, navQuick' = mempty
|
||||
, navForceActive = False
|
||||
}
|
||||
}
|
||||
, return NavHeader
|
||||
{ navHeaderRole = NavHeaderPrimary
|
||||
, navIcon = IconMenuExams
|
||||
, navLink = NavLink
|
||||
{ navLabel = MsgMenuExamOfficeExams
|
||||
, navRoute = ExamOfficeR EOExamsR
|
||||
, navAccess' = NavAccessTrue
|
||||
, navType = NavTypeLink { navModal = False }
|
||||
, navQuick' = mempty
|
||||
, navForceActive = False
|
||||
}
|
||||
}
|
||||
-- , return NavHeader
|
||||
-- { navHeaderRole = NavHeaderPrimary
|
||||
-- , navIcon = IconMenuCorrections
|
||||
-- , navLink = NavLink
|
||||
-- { navLabel = MsgMenuCorrections
|
||||
-- , navRoute = CorrectionsR
|
||||
-- , navAccess' = NavAccessTrue
|
||||
-- , navType = NavTypeLink { navModal = False }
|
||||
-- , navQuick' = mempty
|
||||
-- , navForceActive = False
|
||||
-- }
|
||||
-- }
|
||||
-- , return NavHeader
|
||||
-- { navHeaderRole = NavHeaderPrimary
|
||||
-- , navIcon = IconMenuExams
|
||||
-- , navLink = NavLink
|
||||
-- { navLabel = MsgMenuExamOfficeExams
|
||||
-- , navRoute = ExamOfficeR EOExamsR
|
||||
-- , navAccess' = NavAccessTrue
|
||||
-- , navType = NavTypeLink { navModal = False }
|
||||
-- , navQuick' = mempty
|
||||
-- , navForceActive = False
|
||||
-- }
|
||||
-- }
|
||||
, return NavHeader
|
||||
{ navHeaderRole = NavHeaderPrimary
|
||||
, navIcon = IconMenuQualification
|
||||
@ -849,6 +849,22 @@ defaultLinks = fmap catMaybes . mapM runMaybeT $ -- Define the menu items of the
|
||||
, navQuick' = mempty
|
||||
, navForceActive = False
|
||||
}
|
||||
, NavLink
|
||||
{ navLabel = MsgMenuCorrections
|
||||
, navRoute = CorrectionsR
|
||||
, navAccess' = NavAccessTrue
|
||||
, navType = NavTypeLink { navModal = False }
|
||||
, navQuick' = mempty
|
||||
, navForceActive = False
|
||||
}
|
||||
, NavLink
|
||||
{ navLabel = MsgMenuExamOfficeExams
|
||||
, navRoute = ExamOfficeR EOExamsR
|
||||
, navAccess' = NavAccessTrue
|
||||
, navType = NavTypeLink { navModal = False }
|
||||
, navQuick' = mempty
|
||||
, navForceActive = False
|
||||
}
|
||||
, NavLink
|
||||
{ navLabel = MsgMenuExternalExamList
|
||||
, navRoute = EExamListR
|
||||
|
||||
@ -263,8 +263,8 @@ decodeUser now UserDefaultConf{..} upsertMode ldapData = do
|
||||
userEmail <- if -- TODO: refactor! NOTE: LDAP doesnt know email for all users; we use userPrincialName instead; however validEmail refutes `E<number@fraport.de` here, too strong! Make Email-Field optional!
|
||||
| userEmail : _ <- mapMaybe (assertM (elem '@') . either (const Nothing) Just . Text.decodeUtf8') (lookupSome ldapMap $ toList ldapUserEmail)
|
||||
-> return $ CI.mk userEmail
|
||||
-- | userEmail : _ <- mapMaybe (assertM validEmail . either (const Nothing) Just . Text.decodeUtf8') (lookupSome ldapMap $ toList ldapUserEmail) -- TOO STRONG, see above!
|
||||
-- -> return $ CI.mk userEmail
|
||||
-- | userEmail : _ <- mapMaybe (assertM validEmail . either (const Nothing) Just . Text.decodeUtf8') (lookupSome ldapMap $ toList ldapUserEmail) -- TOO STRONG, see above!
|
||||
-- -> return $ CI.mk userEmail
|
||||
| otherwise
|
||||
-> throwM CampusUserInvalidEmail
|
||||
|
||||
|
||||
@ -41,9 +41,9 @@ getAdminR = redirect AdminProblemsR
|
||||
getAdminProblemsR :: Handler Html
|
||||
getAdminProblemsR = do
|
||||
now <- liftIO getCurrentTime
|
||||
let cutOffPrintDays = 7
|
||||
cutOffPrintJob = addLocalDays (-cutOffPrintDays) now
|
||||
cutOffAvsSynch = Just $ addUTCTime (-nominalHour) now -- update at most once per hour
|
||||
let nowaday = utctDay now
|
||||
cutOffPrintDays = 7
|
||||
cutOffPrintJob = addLocalDays (-cutOffPrintDays) now
|
||||
|
||||
(usersAreReachable, driversHaveAvsIds, rDriversHaveFs, noStalePrintJobs) <- runDB $ (,,,)
|
||||
<$> areAllUsersReachable
|
||||
@ -56,7 +56,7 @@ getAdminProblemsR = do
|
||||
(Right AvsLicenceDifferences{..}) -> do
|
||||
let problemIds = avsLicenceDiffRevokeAll <> avsLicenceDiffGrantVorfeld <> avsLicenceDiffRevokeRollfeld <> avsLicenceDiffGrantRollfeld
|
||||
-- mapM_ (queueJob' . flip JobSynchroniseAvsId cutOffAvsSynch) problemIds
|
||||
runDBJobs . forM_ problemIds $ queueDBJob . flip JobSynchroniseAvsId cutOffAvsSynch
|
||||
runDBJobs . forM_ problemIds $ queueDBJob . flip JobSynchroniseAvsId (Just nowaday)
|
||||
return $ Right
|
||||
( Set.size avsLicenceDiffRevokeAll
|
||||
, Set.size avsLicenceDiffGrantVorfeld
|
||||
|
||||
@ -44,7 +44,7 @@ single = uncurry Map.singleton
|
||||
|
||||
|
||||
-- Button only needed in AVS TEST; further buttons see below
|
||||
data ButtonAvsTest = BtnCheckLicences -- | BtnSynchLicences
|
||||
data ButtonAvsTest = BtnCheckLicences -- | BtnSynchLicences
|
||||
deriving (Enum, Eq, Ord, Bounded, Read, Show, Generic)
|
||||
instance Universe ButtonAvsTest
|
||||
instance Finite ButtonAvsTest
|
||||
@ -546,7 +546,7 @@ mkLicenceTable apidStatus dbtIdent aLic apids = do
|
||||
dbtProj = dbtProjId -- Simple $ \(userAvs, user, qualUsr, quali) -> return (userAvs, user, qualUsr, quali)
|
||||
dbtColonnade = mconcat
|
||||
[ dbSelect (applying _2) id $ return . view (resultUserAvs . _userAvsPersonId)
|
||||
-- $ \DBRow{dbrOutput=(_,_,apid,_)} -> return apid -- return . view resultAvsPID -- does not type due to traversal
|
||||
-- (\DBRow{dbrOutput=(_,_,apid,_)} -> return apid -- return . view resultAvsPID) -- does not type due to traversal
|
||||
, colUserNameLink AdminUserR
|
||||
, sortable (Just "avspersonno") (i18nCell MsgAvsPersonNo) $ \(view resultUserAvs -> a) -> avsPersonNoLinkedCell a
|
||||
-- , colUserCompany
|
||||
|
||||
@ -222,6 +222,8 @@ postAdminTestR = do
|
||||
usrCryptoFileName <- maybeM (return "no-user_id") (fmap toPathPiece . mkCryptoFilnameUser) maybeAuthId
|
||||
usrCryptoUUID <- maybeM (return "no-user_id") (fmap toPathPiece . mkCryptoUUIDUser) maybeAuthId
|
||||
|
||||
UniWorX{ appSettings' = AppSettings{..} } <- getYesod
|
||||
|
||||
let locallyDefinedPageHeading = [whamlet|Admin TestPage for Uni2work|]
|
||||
siteLayout locallyDefinedPageHeading $ do
|
||||
-- defaultLayout $ do
|
||||
@ -311,6 +313,18 @@ postAdminTestR = do
|
||||
|]
|
||||
i18n $ MsgPrintDebugForStupid "DebugForStupid"
|
||||
|
||||
[whamlet|
|
||||
<section>
|
||||
<h2> Some Active App Settings
|
||||
<dl .deflist>
|
||||
<dt .deflist__dt> appJobCronInterval
|
||||
<dd .deflist__dd>#{tshow appJobCronInterval}
|
||||
<dt .deflist__dt> appSynchroniseLdapUsersWithin
|
||||
<dd .deflist__dd>#{tshow appSynchroniseLdapUsersWithin}
|
||||
<dt .deflist__dt> appSynchroniseAvsUsersWithin
|
||||
<dd .deflist__dd>#{tshow appSynchroniseAvsUsersWithin}
|
||||
|]
|
||||
|
||||
|
||||
|
||||
|
||||
@ -335,6 +349,7 @@ getAdminTestPdfR = do
|
||||
, qualShort = qual ^. _qualificationShorthand . _CI
|
||||
, qualSchool = qual ^. _qualificationSchool
|
||||
, qualDuration = qual ^. _qualificationValidDuration
|
||||
, isReminder = False
|
||||
}
|
||||
apcIdent <- letterApcIdent letter encRecipient now
|
||||
renderLetterPDF usr letter apcIdent >>= \case
|
||||
|
||||
@ -17,8 +17,20 @@ import qualified Data.Set as Set
|
||||
getCDeleteR, postCDeleteR :: TermId -> SchoolId -> CourseShorthand -> Handler Html
|
||||
getCDeleteR = postCDeleteR
|
||||
postCDeleteR tid ssh csh = do
|
||||
Entity cId _ <- runDB . getBy404 $ TermSchoolCourseShort tid ssh csh
|
||||
deleteR $ (courseDeleteRoute $ Set.singleton cId)
|
||||
{ drAbort = SomeRoute $ CourseR tid ssh csh CShowR
|
||||
, drSuccess = SomeRoute $ TermSchoolCourseListR tid ssh
|
||||
}
|
||||
(cId, activeParticipants, existExams) <- runDB $ do
|
||||
Entity cId _ <- getBy404 $ TermSchoolCourseShort tid ssh csh
|
||||
activeParticipants <- exists [CourseParticipantState ==. CourseParticipantActive, CourseParticipantCourse ==. cId]
|
||||
existExams <- exists [ExamCourse ==. cId]
|
||||
return (cId, activeParticipants, existExams)
|
||||
if
|
||||
| activeParticipants -> do
|
||||
addMessageI Error MsgCourseDeleteActiveParticipants
|
||||
redirect $ CourseR tid ssh csh CUsersR
|
||||
| existExams -> do
|
||||
addMessageI Error MsgCourseDeleteExistExams
|
||||
redirect $ CourseR tid ssh csh CExamListR
|
||||
| otherwise ->
|
||||
deleteR $ (courseDeleteRoute $ Set.singleton cId)
|
||||
{ drAbort = SomeRoute $ CourseR tid ssh csh CShowR
|
||||
, drSuccess = SomeRoute $ TermSchoolCourseListR tid ssh
|
||||
}
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
-- SPDX-FileCopyrightText: 2022 Sarah Vaupel <sarah.vaupel@ifi.lmu.de>
|
||||
-- SPDX-FileCopyrightText: 2022-23 Sarah Vaupel <sarah.vaupel@ifi.lmu.de>, Steffen Jost <s.jost@fraport.de>
|
||||
--
|
||||
-- SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Handler.Course.ParticipantInvite
|
||||
( getCAddUserR, postCAddUserR
|
||||
, getTAddUserR, postTAddUserR
|
||||
@ -20,15 +22,37 @@ import Data.Map ((!))
|
||||
import qualified Data.Map as Map
|
||||
import qualified Data.Time.Zones as TZ
|
||||
import qualified Data.Set as Set
|
||||
import qualified Data.Text as Text
|
||||
|
||||
import Control.Monad.Except (MonadError(..))
|
||||
|
||||
import Generics.Deriving.Monoid (memptydefault, mappenddefault)
|
||||
|
||||
-- import Database.Esqueleto.Experimental ((:&)(..))
|
||||
import qualified Database.Esqueleto.Experimental as E -- needs TypeApplications Lang-Pragma
|
||||
import qualified Database.Esqueleto.Utils as E
|
||||
|
||||
import Utils.Occurrences
|
||||
|
||||
|
||||
type UserSearchKey = Text
|
||||
type TutorialIdent = CI Text
|
||||
type TutorialType = CI Text
|
||||
|
||||
defaultTutorialType :: TutorialType
|
||||
defaultTutorialType = "Schulung"
|
||||
|
||||
tutorialTypeSeparator :: TutorialType
|
||||
tutorialTypeSeparator = "_"
|
||||
|
||||
tutorialTemplateNames :: Maybe TutorialType -> [TutorialType]
|
||||
tutorialTemplateNames Nothing = ["Vorlage", "Template"]
|
||||
tutorialTemplateNames (Just name) = [prefixes <> suffixes | prefixes <- tutorialTemplateNames Nothing, suffixes <- [mempty, tutorialTypeSeparator <> name]]
|
||||
|
||||
tutorialDefaultName :: Maybe TutorialType -> Day -> TutorialName
|
||||
tutorialDefaultName Nothing = CI.mk . tshow -- Don't use user date display setting, so that tutorial default names conform to all users
|
||||
tutorialDefaultName (Just ttyp) =
|
||||
let prefix = CI.mk $ snd $ Text.breakOnEnd (CI.original tutorialTypeSeparator) $ CI.original ttyp
|
||||
in ((prefix <> tutorialTypeSeparator) <>) . tutorialDefaultName Nothing
|
||||
|
||||
data ButtonCourseRegisterMode = BtnCourseRegisterConfirm | BtnCourseRegisterAbort
|
||||
deriving (Eq, Ord, Enum, Bounded, Read, Show, Generic)
|
||||
@ -50,7 +74,7 @@ instance Button UniWorX ButtonCourseRegisterMode where
|
||||
data CourseRegisterAction
|
||||
= CourseRegisterActionAddParticipant
|
||||
| CourseRegisterActionAddTutorialMember
|
||||
-- | CourseRegisterActionUnknownPerson
|
||||
-- | CourseRegisterActionUnknownPerson
|
||||
deriving (Eq, Ord, Enum, Bounded, Read, Show, Generic)
|
||||
instance Universe CourseRegisterAction
|
||||
instance Finite CourseRegisterAction
|
||||
@ -63,9 +87,9 @@ data CourseRegisterActionData
|
||||
| CourseRegisterActionAddTutorialMemberData
|
||||
{ crActIdent :: UserSearchKey
|
||||
, crActUser :: (UserId, User)
|
||||
, crActTutorial :: TutorialIdent
|
||||
, crActTutorial :: (Maybe TutorialName, Maybe TutorialType, Maybe Day)
|
||||
}
|
||||
-- | CourseRegisterActionUnknownPersonData -- pseudo-action; just for display
|
||||
-- | CourseRegisterActionUnknownPersonData -- pseudo-action; just for display
|
||||
-- { crActUnknownPersonIdent :: Text
|
||||
-- }
|
||||
deriving (Eq, Ord, Show, Generic)
|
||||
@ -97,7 +121,7 @@ courseRegisterRenderAction act = [whamlet|^{userWidget (view _2 (crActUser act))
|
||||
|
||||
data AddUserRequest = AddUserRequest
|
||||
{ auReqUsers :: Set UserSearchKey
|
||||
, auReqTutorial :: Maybe TutorialIdent
|
||||
, auReqTutorial :: Maybe (Maybe TutorialName, Maybe TutorialType, Maybe Day)
|
||||
} deriving (Eq, Ord, Read, Show, Generic)
|
||||
|
||||
|
||||
@ -121,38 +145,77 @@ getCAddUserR, postCAddUserR :: TermId -> SchoolId -> CourseShorthand -> Handler
|
||||
getCAddUserR = postCAddUserR
|
||||
postCAddUserR tid ssh csh = do
|
||||
today <- localDay . TZ.utcToLocalTimeTZ appTZ <$> liftIO getCurrentTime
|
||||
postTAddUserR tid ssh csh (CI.mk $ tshow today) -- Don't use user date display setting, so that tutorial default names conform to all users
|
||||
handleAddUserR tid ssh csh (Right today) Nothing
|
||||
-- postTAddUserR tid ssh csh (CI.mk $ tshow today) -- Don't use user date display setting, so that tutorial default names conform to all users
|
||||
|
||||
|
||||
getTAddUserR, postTAddUserR :: TermId -> SchoolId -> CourseShorthand -> TutorialName -> Handler Html
|
||||
getTAddUserR = postTAddUserR
|
||||
postTAddUserR tid ssh csh tut = do
|
||||
cid <- runDB . getKeyBy404 $ TermSchoolCourseShort tid ssh csh
|
||||
postTAddUserR tid ssh csh tutn = handleAddUserR tid ssh csh (Left tutn) Nothing
|
||||
|
||||
|
||||
handleAddUserR :: TermId -> SchoolId -> CourseShorthand -> Either TutorialName Day -> Maybe TutorialType -> Handler Html
|
||||
handleAddUserR tid ssh csh tdesc ttyp = do
|
||||
(cid, tutTypes, tutNameSuggestions) <- runDB $ do
|
||||
let plainTemplates = tutorialTemplateNames Nothing
|
||||
cid <- getKeyBy404 $ TermSchoolCourseShort tid ssh csh
|
||||
tutTypes <- E.select $ E.distinct $ do
|
||||
tutorial <- E.from $ E.table @Tutorial
|
||||
let tuTyp = tutorial E.^. TutorialType
|
||||
E.where_ $ tutorial E.^. TutorialCourse E.==. E.val cid
|
||||
E.orderBy [E.asc tuTyp]
|
||||
return tuTyp
|
||||
let typeSet = Set.fromList [ maybe t CI.mk $ Text.stripPrefix temp_sep $ CI.original t
|
||||
| temp <- plainTemplates
|
||||
, let temp_sep = CI.original (temp <> tutorialTypeSeparator)
|
||||
, E.Value t <- tutTypes
|
||||
]
|
||||
tutNames <- E.select $ do
|
||||
tutorial <- E.from $ E.table @Tutorial
|
||||
let tuName = tutorial E.^. TutorialName
|
||||
E.where_ $ tutorial E.^. TutorialCourse E.==. E.val cid
|
||||
E.&&. E.isJust (tutorial E.^. TutorialFirstDay)
|
||||
E.&&. E.not_ (E.any (E.hasPrefix_ (tutorial E.^. TutorialType) . E.val) plainTemplates)
|
||||
E.orderBy [E.desc $ tutorial E.^. TutorialFirstDay, E.asc tuName]
|
||||
E.limit 7
|
||||
return tuName
|
||||
let tutNameSuggestions = return $ mkOptionList [Option tno tn tno | etn <- tutNames, let tn = E.unValue etn, let tno = CI.original tn]
|
||||
return (cid, Set.toAscList typeSet, tutNameSuggestions) -- Set in order to remove duplicates and sort ascending at once
|
||||
|
||||
currentRoute <- fromMaybe (error "postCAddUserR called from 404-handler") <$> getCurrentRoute
|
||||
|
||||
confirmedActs :: Set CourseRegisterActionData <- fmap Set.fromList . throwExceptT . mapMM encodedSecretBoxOpen . lookupPostParams $ toPathPiece PostCourseUserAddConfirmAction
|
||||
$logDebugS "CAddUserR confirmedActs" . tshow $ Set.map Aeson.encode confirmedActs
|
||||
-- $logDebugS "CAddUserR confirmedActs" . tshow $ Set.map Aeson.encode confirmedActs
|
||||
unless (Set.null confirmedActs) $ do -- TODO: check that all acts are member of availableActs
|
||||
let
|
||||
users = Map.fromList . fmap (\act -> (crActIdent act, Just . view _1 $ crActUser act)) $ Set.toList confirmedActs
|
||||
tutActs = Set.filter (is _CourseRegisterActionAddTutorialMemberData) confirmedActs
|
||||
actTutorial = crActTutorial <$> Set.lookupMin tutActs -- tutorial ident must be the same for every added member!
|
||||
actTutorial = crActTutorial <$> Set.lookupMin tutActs -- tutorial ident must be the same for every added member!
|
||||
registeredUsers <- registerUsers cid users
|
||||
forM_ actTutorial $ \tutName -> do
|
||||
tutId <- upsertNewTutorial cid tutName
|
||||
registerTutorialMembers tutId registeredUsers
|
||||
|
||||
if
|
||||
| Just tutName <- actTutorial
|
||||
, Set.size tutActs == Set.size confirmedActs
|
||||
-> redirect $ CTutorialR tid ssh csh tutName TUsersR
|
||||
| otherwise
|
||||
-> redirect $ CourseR tid ssh csh CUsersR
|
||||
|
||||
((usersToAdd :: FormResult AddUserRequest, formWgt), formEncoding) <- runFormPost . renderWForm FormStandard $ do
|
||||
whenIsJust actTutorial $ \(tutName,tutType,tutDay) -> do
|
||||
whenIsJust (tutName <|> fmap (tutorialDefaultName tutType) tutDay) $ \tName -> do
|
||||
tutId <- upsertNewTutorial cid tName tutType tutDay
|
||||
registerTutorialMembers tutId registeredUsers
|
||||
-- when (Set.size tutActs == Set.size confirmedActs) $ -- not sure how this condition might be false at this point
|
||||
redirect $ CTutorialR tid ssh csh tName TUsersR
|
||||
redirect $ CourseR tid ssh csh CUsersR
|
||||
|
||||
((usersToAdd :: FormResult AddUserRequest, formWgt), formEncoding) <- runFormPost . renderWForm FormStandard $ do
|
||||
let tutTypesMsg = [(SomeMessage tt,tt) | tt <- tutTypes]
|
||||
tutDefType = ttyp >>= (\ty -> if ty `elem` tutTypes then Just ty else Nothing)
|
||||
auReqUsers <- wreq (textField & cfAnySeparatedSet) (fslI MsgCourseParticipantsRegisterUsersField & setTooltip MsgCourseParticipantsRegisterUsersFieldTip) mempty
|
||||
auReqTutorial <- optionalActionW
|
||||
( areq (textField & cfCI) (fslI MsgCourseParticipantsRegisterTutorialField & setTooltip MsgCourseParticipantsRegisterTutorialFieldTip) (Just tut) )
|
||||
( (,,)
|
||||
<$> aopt (textField & cfStrip & cfCI & addDatalist tutNameSuggestions)
|
||||
(fslI MsgCourseParticipantsRegisterTutorialField & setTooltip MsgCourseParticipantsRegisterTutorialFieldTip)
|
||||
(Just $ maybeLeft tdesc)
|
||||
<*> aopt (selectFieldList tutTypesMsg)
|
||||
(fslI MsgTableTutorialType)
|
||||
(Just tutDefType)
|
||||
<*> aopt dayField
|
||||
(fslI MsgTableTutorialFirstDay & setTooltip MsgCourseParticipantsRegisterTutorialFirstDayTip)
|
||||
(Just $ maybeRight tdesc)
|
||||
)
|
||||
( fslI MsgCourseParticipantsRegisterTutorialOption )
|
||||
( Just True )
|
||||
return $ AddUserRequest <$> auReqUsers <*> auReqTutorial
|
||||
@ -261,32 +324,59 @@ registerUser cid (_avsIdent, Just uid) = exceptT return return $ do
|
||||
|
||||
return $ mempty { aurRegisterSuccess = Set.singleton uid }
|
||||
|
||||
upsertNewTutorial :: CourseId -> TutorialIdent -> Handler TutorialId
|
||||
upsertNewTutorial cid tutorialName = do
|
||||
upsertNewTutorial :: CourseId -> TutorialName -> Maybe TutorialType -> Maybe Day -> Handler TutorialId
|
||||
upsertNewTutorial cid newTutorialName newTutorialType newFirstDay = runDB $ do
|
||||
now <- liftIO getCurrentTime
|
||||
runDB $ do
|
||||
Entity tutId _ <- upsert
|
||||
Tutorial
|
||||
{ tutorialCourse = cid
|
||||
, tutorialType = CI.mk "Schulung"
|
||||
, tutorialCapacity = Nothing
|
||||
, tutorialRoom = Nothing
|
||||
, tutorialRoomHidden = False
|
||||
, tutorialTime = Occurrences mempty mempty
|
||||
, tutorialRegGroup = Nothing -- TODO: remove
|
||||
, tutorialRegisterFrom = Nothing
|
||||
, tutorialRegisterTo = Nothing
|
||||
, tutorialDeregisterUntil = Nothing
|
||||
, tutorialLastChanged = now
|
||||
, tutorialTutorControlled = False
|
||||
, ..
|
||||
}
|
||||
[ TutorialName =. tutorialName
|
||||
, TutorialType =. CI.mk "Schulung"
|
||||
, TutorialLastChanged =. now
|
||||
]
|
||||
audit $ TransactionTutorialEdit tutId
|
||||
return tutId
|
||||
existingTut <- getBy $ UniqueTutorial cid newTutorialName
|
||||
templateEnt <- selectFirst [TutorialType <-. tutorialTemplateNames newTutorialType] [Desc TutorialType, Asc TutorialName]
|
||||
case (existingTut, newFirstDay, templateEnt) of
|
||||
(Just Entity{entityKey=tid},_,_) -> return tid -- no need to update, we ignore the anchor day
|
||||
(Nothing, Just moveDay, Just Entity{entityVal=Tutorial{..}}) -> do
|
||||
Course{..} <- get404 cid
|
||||
term <- get404 courseTerm
|
||||
let oldFirstDay = fromMaybe moveDay $ tutorialFirstDay <|> fst (occurrencesBounds term tutorialTime)
|
||||
newTime = normalizeOccurrences $ occurrencesAddBusinessDays term (oldFirstDay, moveDay) tutorialTime
|
||||
dayDiff = maybe 0 (diffDays moveDay) tutorialFirstDay
|
||||
mvTime = fmap $ addLocalDays dayDiff
|
||||
newType0 = CI.map (snd . Text.breakOnEnd (CI.original tutorialTypeSeparator)) tutorialType
|
||||
newType = if newType0 `elem` tutorialTemplateNames Nothing
|
||||
then fromMaybe defaultTutorialType newTutorialType
|
||||
else newType0
|
||||
Entity tutId _ <- upsert
|
||||
Tutorial
|
||||
{ tutorialName = newTutorialName
|
||||
, tutorialCourse = cid
|
||||
, tutorialType = newType
|
||||
, tutorialFirstDay = newFirstDay
|
||||
, tutorialTime = newTime
|
||||
, tutorialRegisterFrom = mvTime tutorialRegisterFrom
|
||||
, tutorialRegisterTo = mvTime tutorialRegisterTo
|
||||
, tutorialDeregisterUntil = mvTime tutorialDeregisterUntil
|
||||
, tutorialLastChanged = now
|
||||
, ..
|
||||
} [] -- update cannot happen due to previous case
|
||||
audit $ TransactionTutorialEdit tutId
|
||||
return tutId
|
||||
_ -> do
|
||||
Entity tutId _ <- upsert
|
||||
Tutorial
|
||||
{ tutorialName = newTutorialName
|
||||
, tutorialCourse = cid
|
||||
, tutorialType = fromMaybe defaultTutorialType newTutorialType
|
||||
, tutorialCapacity = Nothing
|
||||
, tutorialRoom = Nothing
|
||||
, tutorialRoomHidden = False
|
||||
, tutorialTime = Occurrences mempty mempty
|
||||
, tutorialRegGroup = Nothing
|
||||
, tutorialRegisterFrom = Nothing
|
||||
, tutorialRegisterTo = Nothing
|
||||
, tutorialDeregisterUntil = Nothing
|
||||
, tutorialLastChanged = now
|
||||
, tutorialTutorControlled = False
|
||||
, tutorialFirstDay = Nothing
|
||||
} [] -- update cannot happen due to previous cases
|
||||
audit $ TransactionTutorialEdit tutId
|
||||
return tutId
|
||||
|
||||
registerTutorialMembers :: TutorialId -> Set UserId -> Handler ()
|
||||
registerTutorialMembers tutId (Set.toList -> users) = runDB $ do
|
||||
|
||||
@ -29,7 +29,7 @@ import Handler.Exam.List (mkExamTable)
|
||||
|
||||
getCShowR :: TermId -> SchoolId -> CourseShorthand -> Handler Html
|
||||
getCShowR tid ssh csh = do
|
||||
mbAid <- maybeAuthId
|
||||
mbAid <- maybeAuthId
|
||||
now <- liftIO getCurrentTime
|
||||
(cid,course,courseVisible,schoolName,participants,registration,lecturers,assistants,administrators,correctors,tutors,news,events,submissionGroup,_mayReRegister,(mayViewSheets, mayViewAnySheet), (mayViewMaterials, mayViewAnyMaterial),courseQualifications) <- runDB . maybeT notFound $ do
|
||||
[(E.Entity cid course, E.Value courseVisible, E.Value schoolName, E.Value participants, fmap entityVal -> registration)]
|
||||
@ -145,7 +145,8 @@ getCShowR tid ssh csh = do
|
||||
}
|
||||
| otherwise
|
||||
-> return . modal $(widgetFile "course/login-to-register") . Left . SomeRoute $ AuthR LoginR
|
||||
registrationOpen <- hasWriteAccessTo $ CourseR tid ssh csh CRegisterR
|
||||
registrationOpen <- hasWriteAccessTo $ CourseR tid ssh csh CRegisterR
|
||||
mayMassRegister <- hasWriteAccessTo $ CourseR tid ssh csh CAddUserR
|
||||
|
||||
MsgRenderer mr <- getMsgRenderer
|
||||
|
||||
@ -164,9 +165,10 @@ getCShowR tid ssh csh = do
|
||||
dbtRowKey = (E.^. TutorialId)
|
||||
dbtProj = over (_dbrOutput . _2) E.unValue <$> dbtProjId
|
||||
dbtColonnade = dbColonnade $ mconcat
|
||||
[ sortable (Just "type") (i18nCell MsgTableTutorialType) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> textCell $ CI.original tutorialType
|
||||
, sortable (Just "name") (i18nCell MsgTableTutorialName) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> indicatorCell <> anchorCell (CTutorialR tid ssh csh tutorialName TUsersR) [whamlet|#{tutorialName}|]
|
||||
, sortable (Just "tutors") (i18nCell MsgTableTutorialTutors) $ \(view $ resultTutorial . _entityKey -> tutid) -> sqlCell $ do
|
||||
[ sortable (Just "type") (i18nCell MsgTableTutorialType) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> textCell $ CI.original tutorialType
|
||||
, sortable (Just "first-day") (i18nCell MsgTableTutorialFirstDay) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> cellMaybe dayCell tutorialFirstDay
|
||||
, sortable (Just "name") (i18nCell MsgTableTutorialName) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> indicatorCell <> anchorCell (CTutorialR tid ssh csh tutorialName TUsersR) [whamlet|#{tutorialName}|]
|
||||
, sortable (Just "tutors") (i18nCell MsgTableTutorialTutors) $ \(view $ resultTutorial . _entityKey -> tutid) -> sqlCell $ do
|
||||
tutTutors <- fmap (map $(unValueN 3)) . E.select . E.from $ \(tutor `E.InnerJoin` user) -> do
|
||||
E.on $ tutor E.^. TutorUser E.==. user E.^. UserId
|
||||
E.where_ $ tutor E.^. TutorTutorial E.==. E.val tutid
|
||||
@ -194,25 +196,30 @@ getCShowR tid ssh csh = do
|
||||
E.where_ $ participant E.^. TutorialParticipantTutorial E.==. E.val tutid
|
||||
in return $ E.val tutorialCapacity' E.-. numParticipants
|
||||
return . toWidget $ tshow freeCapacity
|
||||
, sortable Nothing (mempty & cellAttrs <>~ pure ("uw-hide-columns--hider-label", mr MsgTableActionsHead)) $ \(view resultTutorial -> Entity tutId Tutorial{..}) -> sqlCell $ do
|
||||
mayRegister <- (== Authorized) <$> evalAccessDB (CTutorialR tid ssh csh tutorialName TRegisterR) True
|
||||
isRegistered <- case mbAid of
|
||||
Nothing -> return False
|
||||
Just uid -> existsBy $ UniqueTutorialParticipant tutId uid
|
||||
if
|
||||
| mayRegister -> do
|
||||
(tutRegisterForm, tutRegisterEnctype) <- liftHandler . generateFormPost . buttonForm' $ bool [BtnRegister] [BtnDeregister] isRegistered
|
||||
return $ wrapForm tutRegisterForm def
|
||||
{ formAction = Just . SomeRoute $ CTutorialR tid ssh csh tutorialName TRegisterR
|
||||
, formEncoding = tutRegisterEnctype
|
||||
, formSubmit = FormNoSubmit
|
||||
}
|
||||
| isRegistered -> return [whamlet|_{MsgTutorialRegistered}|]
|
||||
| otherwise -> return mempty
|
||||
, guardMonoid (not mayMassRegister || isJust registration) $
|
||||
sortable Nothing (mempty & cellAttrs <>~ pure ("uw-hide-columns--hider-label", mr MsgTableActionsHead)) $ \(view resultTutorial -> Entity tutId Tutorial{..}) -> sqlCell $ do
|
||||
mayRegister <- (== Authorized) <$> evalAccessDB (CTutorialR tid ssh csh tutorialName TRegisterR) True
|
||||
isRegistered <- case mbAid of
|
||||
Nothing -> return False
|
||||
Just uid -> existsBy $ UniqueTutorialParticipant tutId uid
|
||||
if
|
||||
| mayRegister -> do
|
||||
(tutRegisterForm, tutRegisterEnctype) <- liftHandler . generateFormPost . buttonForm' $ bool [BtnRegister] [BtnDeregister] isRegistered
|
||||
return $ wrapForm tutRegisterForm def
|
||||
{ formAction = Just . SomeRoute $ CTutorialR tid ssh csh tutorialName TRegisterR
|
||||
, formEncoding = tutRegisterEnctype
|
||||
, formSubmit = FormNoSubmit
|
||||
}
|
||||
| isRegistered -> return [whamlet|_{MsgTutorialRegistered}|]
|
||||
| otherwise -> return mempty
|
||||
, guardMonoid mayMassRegister $
|
||||
sortable Nothing (mempty & cellAttrs <>~ pure ("uw-hide-columns--hider-label", mr MsgTableActionsHead)) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) ->
|
||||
cell $ linkButton mempty (msg2widget MsgMassRegister) [BCIsButton, BCPrimary] (SomeRoute $ CTutorialR tid ssh csh tutorialName TAddUserR)
|
||||
]
|
||||
dbtSorting = Map.fromList
|
||||
[ ("type", SortColumn $ \tutorial -> tutorial E.^. TutorialType )
|
||||
, ("name", SortColumn $ \tutorial -> tutorial E.^. TutorialName )
|
||||
, ("first-day", SortColumnNullsInv $ \tutorial -> tutorial E.^. TutorialFirstDay )
|
||||
, ("room", SortColumn $ \tutorial -> tutorial E.^. TutorialRoom )
|
||||
, ("register-from", SortColumn $ \tutorial -> tutorial E.^. TutorialRegisterFrom )
|
||||
, ("register-to", SortColumn $ \tutorial -> tutorial E.^. TutorialRegisterTo )
|
||||
@ -235,7 +242,7 @@ getCShowR tid ssh csh = do
|
||||
dbtExtraReps = []
|
||||
|
||||
tutorialDBTableValidator = def
|
||||
& defaultSorting [SortAscBy "type", SortDescBy "name"]
|
||||
& defaultSorting [SortAscBy "type", SortDescBy "first-day", SortAscBy "name"]
|
||||
(Any hasTutorials, tutorialTable) <- runDB $ dbTable tutorialDBTableValidator tutorialDBTable
|
||||
|
||||
(Any hasExams, examTable) <- runDB . mkExamTable $ Entity cid course
|
||||
|
||||
@ -696,18 +696,23 @@ postLmsR sid qsh = do
|
||||
|
||||
(action, selectedUsers) | isRenewPinAct action || isNotifyAct action -> do
|
||||
numExaminees <- runDBJobs $ do
|
||||
okUsers <- selectList [LmsUserUser <-. Set.toList selectedUsers, LmsUserQualification ==. qid] []
|
||||
okUsers <- selectList [ LmsUserQualification ==. qid -- matching qualification
|
||||
, LmsUserEnded ==. Nothing -- not yet deleted
|
||||
, LmsUserStatus ==. Nothing -- not yet decided
|
||||
, LmsUserUser <-. Set.toList selectedUsers -- selected
|
||||
] []
|
||||
forM_ okUsers $ \(Entity lid LmsUser {lmsUserUser = uid, lmsUserQualification = qid'}) -> do
|
||||
when (isRenewPinAct action) $ do
|
||||
newPin <- liftIO randomLMSpw
|
||||
update lid [LmsUserPin =. newPin, LmsUserDatePin =. now, LmsUserResetPin =. True]
|
||||
when (isNotifyAct action) $
|
||||
queueDBJob $ JobSendNotification { jRecipient = uid, jNotification = NotificationQualificationRenewal qid' }
|
||||
queueDBJob $ JobUserNotification { jRecipient = uid, jNotification = NotificationQualificationRenewal qid' False }
|
||||
return $ length okUsers
|
||||
let numSelected = length selectedUsers
|
||||
diffSelected = numSelected - numExaminees
|
||||
when (isRenewPinAct action) $ addMessageI Success $ MsgLmsPinRenewal numExaminees
|
||||
when (isNotifyAct action) $ addMessageI Success $ MsgLmsNotificationSend numExaminees
|
||||
mstat = bool Success Warning $ diffSelected /= 0
|
||||
when (isRenewPinAct action) $ addMessageI mstat $ MsgLmsPinRenewal numExaminees
|
||||
when (isNotifyAct action) $ addMessageI mstat $ MsgLmsNotificationSend numExaminees
|
||||
when (diffSelected /= 0) $ addMessageI Warning $ MsgLmsActionFailed diffSelected
|
||||
reloadKeepGetParams $ LmsR sid qsh
|
||||
_ -> addMessageI Error MsgUnauthorized -- should not happen
|
||||
@ -772,5 +777,4 @@ viewLmsUserR msid mqsh uuid = do
|
||||
let heading = [whamlet|_{MsgMenuLmsUser} ^{userWidget user}|]
|
||||
siteLayout heading $ do
|
||||
setTitle $ toHtml userDisplayName
|
||||
$(widgetFile "lms-user")
|
||||
-- $(i18nWidgetFile "lms-user")
|
||||
$(widgetFile "lms-user")
|
||||
|
||||
@ -40,26 +40,29 @@ single = uncurry Map.singleton
|
||||
|
||||
|
||||
data LRQF = LRQF
|
||||
{ lrqfLetter :: Text
|
||||
, lrqfUser :: Either UserEmail UserId
|
||||
, lrqfSuper :: Maybe (Either UserEmail UserId)
|
||||
, lrqfQuali :: Entity Qualification
|
||||
, lrqfIdent :: LmsIdent
|
||||
, lrqfPin :: Text
|
||||
, lrqfExpiry :: Maybe Day
|
||||
{ lrqfLetter :: Text
|
||||
, lrqfUser :: Either UserEmail UserId
|
||||
, lrqfSuper :: Maybe (Either UserEmail UserId)
|
||||
, lrqfQuali :: Entity Qualification
|
||||
, lrqfIdent :: LmsIdent
|
||||
, lrqfPin :: Text
|
||||
, lrqfExpiry :: Maybe Day
|
||||
, lrqfReminder :: Bool
|
||||
} deriving (Eq, Generic)
|
||||
|
||||
makeRenewalForm :: Maybe LRQF -> Form LRQF
|
||||
makeRenewalForm tmpl = identifyForm FIDLmsLetter . validateForm validateLetterRenewQualificationF $ \html -> do
|
||||
-- now_day <- utctDay <$> liftIO getCurrentTime
|
||||
flip (renderAForm FormStandard) html $ LRQF
|
||||
<$> areq textField (fslI MsgPrintLetterType) (lrqfLetter <$> tmpl)
|
||||
<*> areq (userField False Nothing) (fslI MsgLmsUser) (lrqfUser <$> tmpl)
|
||||
<*> aopt (userField False Nothing) (fslI MsgTableSupervisor) (lrqfSuper <$> tmpl)
|
||||
<*> areq qualificationFieldEnt (fslI MsgQualificationName) (lrqfQuali <$> tmpl)
|
||||
<*> areq lmsField (fslI MsgTableLmsIdent) (lrqfIdent <$> tmpl)
|
||||
<*> areq textField (fslI MsgTableLmsPin) (lrqfPin <$> tmpl)
|
||||
<*> aopt dayField (fslI MsgLmsQualificationValidUntil) (lrqfExpiry <$> tmpl)
|
||||
<$> areq textField (fslI MsgPrintLetterType) (lrqfLetter <$> tmpl)
|
||||
<*> areq (userField False Nothing) (fslI MsgLmsUser) (lrqfUser <$> tmpl)
|
||||
<*> aopt (userField False Nothing) (fslI MsgTableSupervisor) (lrqfSuper <$> tmpl)
|
||||
<*> areq qualificationFieldEnt (fslI MsgQualificationName) (lrqfQuali <$> tmpl)
|
||||
<*> areq lmsField (fslI MsgTableLmsIdent) (lrqfIdent <$> tmpl)
|
||||
<*> areq textField (fslI MsgTableLmsPin) (lrqfPin <$> tmpl)
|
||||
<*> aopt dayField (fslI MsgLmsQualificationValidUntil) (lrqfExpiry <$> tmpl)
|
||||
<*> areq (boolField . Just $ SomeMessage MsgBoolIrrelevant)
|
||||
(fslI MsgLmsRenewalReminder) (lrqfReminder <$> tmpl)
|
||||
where
|
||||
lmsField = convertField LmsIdent getLmsIdent textField
|
||||
|
||||
@ -86,6 +89,7 @@ lrqf2letter LRQF{..}
|
||||
, qualShort = lrqfQuali ^. _qualificationShorthand . _CI
|
||||
, qualSchool = lrqfQuali ^. _qualificationSchool
|
||||
, qualDuration = lrqfQuali ^. _qualificationValidDuration
|
||||
, isReminder = lrqfReminder
|
||||
}
|
||||
return (fromMaybe usr rcvr, SomeLetter letter)
|
||||
| lrqfLetter == "e" || lrqfLetter == "E" = do
|
||||
@ -94,17 +98,17 @@ lrqf2letter LRQF{..}
|
||||
usrShrt <- encrypt $ entityKey usr
|
||||
usrUuid <- encrypt $ entityKey usr
|
||||
urender <- liftHandler getUrlRender
|
||||
let letter = LetterExpireQualificationF
|
||||
{ leqfHolderCFN = usrShrt
|
||||
, leqfHolderID = usr ^. _entityKey
|
||||
, leqfHolderDN = usr ^. _userDisplayName
|
||||
, leqfHolderSN = usr ^. _userSurname
|
||||
, leqfExpiry = lrqfExpiry
|
||||
, leqfId = lrqfQuali ^. _entityKey
|
||||
, leqfName = lrqfQuali ^. _qualificationName . _CI
|
||||
, leqfShort = lrqfQuali ^. _qualificationShorthand . _CI
|
||||
, leqfSchool = lrqfQuali ^. _qualificationSchool
|
||||
, leqfUrl = pure . urender $ ForProfileDataR usrUuid
|
||||
let letter = LetterExpireQualification
|
||||
{ leqHolderCFN = usrShrt
|
||||
, leqHolderID = usr ^. _entityKey
|
||||
, leqHolderDN = usr ^. _userDisplayName
|
||||
, leqHolderSN = usr ^. _userSurname
|
||||
, leqExpiry = lrqfExpiry
|
||||
, leqId = lrqfQuali ^. _entityKey
|
||||
, leqName = lrqfQuali ^. _qualificationName . _CI
|
||||
, leqShort = lrqfQuali ^. _qualificationShorthand . _CI
|
||||
, leqSchool = lrqfQuali ^. _qualificationSchool
|
||||
, leqUrl = pure . urender $ ForProfileDataR usrUuid
|
||||
}
|
||||
return (fromMaybe usr rcvr, SomeLetter letter)
|
||||
| otherwise = error "Unknown Letter Type encountered. Use 'e' or 'r' only."
|
||||
@ -114,17 +118,16 @@ lrqf2letter LRQF{..}
|
||||
getUser (Left mail) = getBy404 $ UniqueEmail mail
|
||||
|
||||
|
||||
data PJTableAction = PJActAcknowledge
|
||||
data PJTableAction = PJActAcknowledge | PJActReprint
|
||||
deriving (Eq, Ord, Enum, Bounded, Read, Show, Generic)
|
||||
|
||||
|
||||
instance Universe PJTableAction
|
||||
instance Finite PJTableAction
|
||||
nullaryPathPiece ''PJTableAction $ camelToPathPiece' 2
|
||||
embedRenderMessage ''UniWorX ''PJTableAction id
|
||||
|
||||
-- Not yet needed, since there is no additional data for now:
|
||||
data PJTableActionData = PJActAcknowledgeData
|
||||
data PJTableActionData = PJActAcknowledgeData | PJActReprintData
|
||||
deriving (Eq, Ord, Read, Show, Generic)
|
||||
|
||||
type PJTableExpr = ( E.SqlExpr (Entity PrintJob)
|
||||
@ -259,6 +262,7 @@ mkPJTable = do
|
||||
= let acts :: Map PJTableAction (AForm Handler PJTableActionData)
|
||||
acts = mconcat
|
||||
[ singletonMap PJActAcknowledge $ pure PJActAcknowledgeData
|
||||
, singletonMap PJActReprint $ pure PJActReprintData
|
||||
]
|
||||
in renderAForm FormStandard
|
||||
$ (, mempty) . First . Just
|
||||
@ -283,11 +287,19 @@ postPrintCenterR = do
|
||||
(pjRes, pjTable) <- runDB mkPJTable
|
||||
|
||||
formResult pjRes $ \case
|
||||
(PJActAcknowledgeData, Set.toList -> pjIds) -> do
|
||||
now <- liftIO getCurrentTime
|
||||
num <- runDB $ updateWhereCount [PrintJobAcknowledged ==. Nothing, PrintJobId <-. pjIds] [PrintJobAcknowledged =. Just now]
|
||||
addMessageI Success $ MsgPrintJobAcknowledge num
|
||||
reloadKeepGetParams PrintCenterR
|
||||
(PJActAcknowledgeData, Set.toList -> pjIds) -> do
|
||||
now <- liftIO getCurrentTime
|
||||
num <- runDB $ updateWhereCount [PrintJobAcknowledged ==. Nothing, PrintJobId <-. pjIds] [PrintJobAcknowledged =. Just now]
|
||||
addMessageI Success $ MsgPrintJobAcknowledge num
|
||||
reloadKeepGetParams PrintCenterR
|
||||
(PJActReprintData, Set.toList -> pjIds) -> do
|
||||
let countOk = either (const $ Sum 0) (const $ Sum 1)
|
||||
oks <- runDB $ forM pjIds $ fmap countOk . reprintPDF
|
||||
let nr_oks = getSum $ mconcat oks
|
||||
nr_tot = length pjIds
|
||||
mstat = bool Warning Success $ nr_oks == nr_tot
|
||||
addMessageI mstat $ MsgPrintJobReprint nr_oks nr_tot
|
||||
reloadKeepGetParams PrintCenterR
|
||||
|
||||
siteLayoutMsg MsgMenuApc $ do
|
||||
setTitleI MsgMenuApc
|
||||
@ -310,6 +322,7 @@ postPrintSendR = do
|
||||
, lrqfIdent = LmsIdent "stuvwxyz"
|
||||
, lrqfPin = "76543210"
|
||||
, lrqfExpiry = Just $ succ nowaday
|
||||
, lrqfReminder = False
|
||||
}
|
||||
def_lrqf = mkLetter <$> mbQual
|
||||
|
||||
|
||||
@ -247,10 +247,11 @@ notificationForm template = wFormToAForm $ do
|
||||
NTExamOfficeExamResults -> Just $ NTKFunctionary SchoolExamOffice
|
||||
NTExamOfficeExamResultsChanged -> Just $ NTKFunctionary SchoolExamOffice
|
||||
NTCourseRegistered -> Just NTKAll
|
||||
NTQualification -> Just NTKAll
|
||||
NTQualificationExpiry -> Just NTKAll
|
||||
NTQualificationReminder -> Just NTKAll
|
||||
-- _other -> Nothing
|
||||
|
||||
forcedTriggers = [NTUserRightsUpdate, NTUserAuthModeUpdate]
|
||||
forcedTriggers = [NTUserRightsUpdate, NTUserAuthModeUpdate, NTQualificationExpiry]
|
||||
|
||||
aFormToWForm $ NotificationSettings <$> sectionedFuncForm ntSection nsForm (fslI MsgNotificationSettings) False
|
||||
|
||||
|
||||
@ -97,11 +97,14 @@ mkQualificationAllTable isAdmin = do
|
||||
maybeCell (qualificationDescription quali) markupCellLargeModal
|
||||
, sortable Nothing (i18nCell MsgQualificationValidDuration & cellTooltip MsgTableDiffDaysTooltip) $
|
||||
foldMap (textCell . formatCalendarDiffDays . fromMonths) . view (resultAllQualification . _qualificationValidDuration)
|
||||
, sortable Nothing (i18nCell MsgQualificationRefreshWithin & cellTooltip MsgTableDiffDaysTooltip) $
|
||||
foldMap (textCell . formatCalendarDiffDays ) . view (resultAllQualification . _qualificationRefreshWithin)
|
||||
-- , sortable Nothing (i18nCell MsgQualificationRefreshWithin) $ foldMap textCell . view (resultAllQualification . _qualificationRefreshWithin . to formatCalendarDiffDays) -- does not work, since there is a maybe in between
|
||||
, sortable Nothing (i18nCell MsgQualificationRefreshWithin & cellTooltip MsgQualificationRefreshWithinTooltip) $
|
||||
foldMap (textCell . formatCalendarDiffDays ) . view (resultAllQualification . _qualificationRefreshWithin)
|
||||
, sortable Nothing (i18nCell MsgQualificationRefreshReminder & cellTooltip MsgQualificationRefreshReminderTooltip) $
|
||||
foldMap (textCell . formatCalendarDiffDays ) . view (resultAllQualification . _qualificationRefreshReminder)
|
||||
, sortable (Just "qelearning") (i18nCell MsgTableLmsElearning & cellTooltip MsgQualificationElearningStart)
|
||||
$ tickmarkCell . view (resultAllQualification . _qualificationElearningStart)
|
||||
, sortable (Just "noteexpiry") (i18nCell MsgQualificationExpiryNotification & cellTooltip MsgQualificationExpiryNotificationTooltip)
|
||||
$ tickmarkCell . view (resultAllQualification . _qualificationExpiryNotification)
|
||||
, sortable Nothing (i18nCell MsgTableQualificationIsAvsLicence & cellTooltip MsgTableQualificationIsAvsLicenceTooltip)
|
||||
$ \(view (resultAllQualification . _qualificationAvsLicence) -> licence) -> maybeCell licence $ textCell . T.singleton . licence2char
|
||||
, sortable Nothing (i18nCell MsgTableQualificationSapExport & cellTooltip MsgTableQualificationSapExportTooltip)
|
||||
@ -116,6 +119,7 @@ mkQualificationAllTable isAdmin = do
|
||||
, singletonMap "qshort" $ SortColumn (E.^. QualificationShorthand)
|
||||
, singletonMap "qname" $ SortColumn (E.^. QualificationName)
|
||||
, singletonMap "qelearning" $ SortColumn (E.^. QualificationElearningStart)
|
||||
, singletonMap "noteexpiry" $ SortColumn (E.^. QualificationExpiryNotification)
|
||||
]
|
||||
dbtFilter = mconcat
|
||||
[
|
||||
@ -432,6 +436,10 @@ mkQualificationTable isAdmin (Entity qid quali) acts cols psValidator = do
|
||||
E.&&. quser E.^. QualificationUserValidUntil E.>=. E.val nowaday
|
||||
| otherwise -> E.true
|
||||
)
|
||||
, single ("tobe-notified", FilterColumn $ \(queryQualUser -> quser) criterion ->
|
||||
if | Just True <- getLast criterion -> quser `quserToNotify` now
|
||||
| otherwise -> E.true
|
||||
)
|
||||
]
|
||||
dbtFilterUI mPrev = mconcat
|
||||
[ fltrUserNameEmailHdrUI MsgLmsUser mPrev
|
||||
@ -442,6 +450,7 @@ mkQualificationTable isAdmin (Entity qid quali) acts cols psValidator = do
|
||||
, prismAForm (singletonFilter "validity" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgFilterLmsValid)
|
||||
, if isNothing mbRenewal then mempty
|
||||
else prismAForm (singletonFilter "renewal-due" . maybePrism _PathPiece) mPrev $ aopt checkBoxField (fslI MsgFilterLmsRenewal)
|
||||
, prismAForm (singletonFilter "tobe-notified" . maybePrism _PathPiece) mPrev $ aopt checkBoxField (fslI MsgFilterLmsNotificationDue)
|
||||
]
|
||||
dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout }
|
||||
dbtCsvEncode = Just DBTCsvEncode
|
||||
|
||||
@ -25,15 +25,14 @@ getTEditR, postTEditR :: TermId -> SchoolId -> CourseShorthand -> TutorialName -
|
||||
getTEditR = postTEditR
|
||||
postTEditR tid ssh csh tutn = do
|
||||
(cid, tutid, template) <- runDB $ do
|
||||
(cid, Entity tutid Tutorial{..}) <- fetchCourseIdTutorial tid ssh csh tutn
|
||||
|
||||
(cid, Entity tutid Tutorial{..}) <- fetchCourseIdTutorial tid ssh csh tutn
|
||||
tutorIds <- fmap (map E.unValue) . E.select . E.from $ \tutor -> do
|
||||
E.where_ $ tutor E.^. TutorTutorial E.==. E.val tutid
|
||||
return $ tutor E.^. TutorUser
|
||||
|
||||
tutorInvites <- sourceInvitationsF @Tutor tutid
|
||||
|
||||
let
|
||||
let
|
||||
template = TutorialForm
|
||||
{ tfName = tutorialName
|
||||
, tfType = tutorialType
|
||||
@ -56,6 +55,7 @@ postTEditR tid ssh csh tutn = do
|
||||
|
||||
formResult newTutResult $ \TutorialForm{..} -> do
|
||||
insertRes <- runDBJobs $ do
|
||||
term <- fetchTermByCID cid
|
||||
now <- liftIO getCurrentTime
|
||||
insertRes <- myReplaceUnique tutid Tutorial
|
||||
{ tutorialName = tfName
|
||||
@ -71,6 +71,7 @@ postTEditR tid ssh csh tutn = do
|
||||
, tutorialDeregisterUntil = tfDeregisterUntil
|
||||
, tutorialLastChanged = now
|
||||
, tutorialTutorControlled = tfTutorControlled
|
||||
, tutorialFirstDay = fst $ occurrencesBounds term tfTime
|
||||
}
|
||||
when (is _Nothing insertRes) $ do
|
||||
audit $ TransactionTutorialEdit tutid
|
||||
|
||||
@ -44,9 +44,10 @@ getCTutorialListR tid ssh csh = do
|
||||
dbtRowKey = (E.^. TutorialId)
|
||||
dbtProj = over (_dbrOutput . _2) E.unValue . over (_dbrOutput . _3) E.unValue <$> dbtProjId
|
||||
dbtColonnade = dbColonnade $ mconcat
|
||||
[ sortable (Just "type") (i18nCell MsgTableTutorialType) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> textCell $ CI.original tutorialType
|
||||
, sortable (Just "name") (i18nCell MsgTableTutorialName) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> anchorCell (CTutorialR tid ssh csh tutorialName TUsersR) [whamlet|#{tutorialName}|]
|
||||
, sortable (Just "tutors") (i18nCell MsgTableTutorialTutors) $ \(view $ resultTutorial . _entityKey -> tutid) -> sqlCell $ do
|
||||
[ sortable (Just "type") (i18nCell MsgTableTutorialType) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> textCell $ CI.original tutorialType
|
||||
, sortable (Just "first-day") (i18nCell MsgTableTutorialFirstDay) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> cellMaybe dayCell tutorialFirstDay
|
||||
, sortable (Just "name") (i18nCell MsgTableTutorialName) $ \(view $ resultTutorial . _entityVal -> Tutorial{..}) -> anchorCell (CTutorialR tid ssh csh tutorialName TUsersR) [whamlet|#{tutorialName}|]
|
||||
, sortable (Just "tutors") (i18nCell MsgTableTutorialTutors) $ \(view $ resultTutorial . _entityKey -> tutid) -> sqlCell $ do
|
||||
tutors <- fmap (map $(unValueN 3)) . E.select . E.from $ \(tutor `E.InnerJoin` user) -> do
|
||||
E.on $ tutor E.^. TutorUser E.==. user E.^. UserId
|
||||
E.where_ $ tutor E.^. TutorTutorial E.==. E.val tutid
|
||||
@ -73,8 +74,9 @@ getCTutorialListR tid ssh csh = do
|
||||
linkButton mempty [whamlet|_{MsgTutorialDelete}|] [BCIsButton, BCDanger] . SomeRoute $ CTutorialR tid ssh csh tutorialName TDeleteR
|
||||
]
|
||||
dbtSorting = Map.fromList
|
||||
[ ("type", SortColumn $ \tutorial -> tutorial E.^. TutorialType )
|
||||
, ("name", SortColumn $ \tutorial -> tutorial E.^. TutorialName )
|
||||
[ ("type" , SortColumn $ \tutorial -> tutorial E.^. TutorialType )
|
||||
, ("name" , SortColumn $ \tutorial -> tutorial E.^. TutorialName )
|
||||
, ("first-day", SortColumnNullsInv $ \tutorial -> tutorial E.^. TutorialFirstDay )
|
||||
, ( "tutors"
|
||||
, SortColumn $ \tutorial -> E.subSelectMaybe . E.from $ \(tutor `E.InnerJoin` user) -> do
|
||||
E.on $ tutor E.^. TutorUser E.==. user E.^. UserId
|
||||
@ -89,9 +91,9 @@ getCTutorialListR tid ssh csh = do
|
||||
, ("capacity", SortColumn $ \tutorial -> tutorial E.^. TutorialCapacity )
|
||||
, ("room", SortColumn $ \tutorial -> tutorial E.^. TutorialRoom )
|
||||
, ("register-group", SortColumn $ \tutorial -> tutorial E.^. TutorialRegGroup )
|
||||
, ("register-from", SortColumn $ \tutorial -> tutorial E.^. TutorialRegisterFrom )
|
||||
, ("register-to", SortColumn $ \tutorial -> tutorial E.^. TutorialRegisterTo )
|
||||
, ("deregister-until", SortColumn $ \tutorial -> tutorial E.^. TutorialDeregisterUntil )
|
||||
, ("register-from" , SortColumnNullsInv $ \tutorial -> tutorial E.^. TutorialRegisterFrom )
|
||||
, ("register-to" , SortColumnNullsInv $ \tutorial -> tutorial E.^. TutorialRegisterTo )
|
||||
, ("deregister-until" , SortColumnNullsInv $ \tutorial -> tutorial E.^. TutorialDeregisterUntil )
|
||||
]
|
||||
dbtFilter = Map.empty
|
||||
dbtFilterUI = const mempty
|
||||
@ -104,7 +106,7 @@ getCTutorialListR tid ssh csh = do
|
||||
dbtExtraReps = []
|
||||
|
||||
tutorialDBTableValidator = def
|
||||
& defaultSorting [SortAscBy "type", SortAscBy "name"]
|
||||
& defaultSorting [SortAscBy "type", SortDescBy "first-day", SortAscBy "name"]
|
||||
((), tutorialTable) <- runDB $ dbTable tutorialDBTableValidator tutorialDBTable
|
||||
|
||||
siteLayoutMsg (prependCourseTitle tid ssh csh MsgTutorialsHeading) $ do
|
||||
|
||||
@ -20,13 +20,14 @@ import Handler.Tutorial.TutorInvite
|
||||
getCTutorialNewR, postCTutorialNewR :: TermId -> SchoolId -> CourseShorthand -> Handler Html
|
||||
getCTutorialNewR = postCTutorialNewR
|
||||
postCTutorialNewR tid ssh csh = do
|
||||
cid <- runDB . getKeyBy404 $ TermSchoolCourseShort tid ssh csh
|
||||
Entity{entityKey=cid, entityVal=course} <- runDB . getBy404 $ TermSchoolCourseShort tid ssh csh -- TODO: use getKeyBy404 if was optimized to no longer retrieve the full entity from the DB anyway
|
||||
|
||||
((newTutResult, newTutWidget), newTutEnctype) <- runFormPost $ tutorialForm cid Nothing
|
||||
|
||||
formResult newTutResult $ \TutorialForm{..} -> do
|
||||
insertRes <- runDBJobs $ do
|
||||
insertRes <- runDBJobs $ do
|
||||
now <- liftIO getCurrentTime
|
||||
term <- get404 $ course ^. _courseTerm
|
||||
insertRes <- insertUnique Tutorial
|
||||
{ tutorialName = tfName
|
||||
, tutorialCourse = cid
|
||||
@ -41,6 +42,7 @@ postCTutorialNewR tid ssh csh = do
|
||||
, tutorialDeregisterUntil = tfDeregisterUntil
|
||||
, tutorialLastChanged = now
|
||||
, tutorialTutorControlled = tfTutorControlled
|
||||
, tutorialFirstDay = fst $ occurrencesBounds term tfTime
|
||||
}
|
||||
whenIsJust insertRes $ \tutid -> do
|
||||
audit $ TransactionTutorialEdit tutid
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
-- SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>
|
||||
-- SPDX-FileCopyrightText: 2022-23 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,Steffen Jost <s.jost@fraport.de>
|
||||
--
|
||||
-- SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@ -45,8 +45,6 @@ embedRenderMessage ''UniWorX ''TutorialUserAction id
|
||||
|
||||
data TutorialUserActionData
|
||||
= TutorialUserPrintQualificationData
|
||||
{ tuQualification :: QualificationId
|
||||
}
|
||||
| TutorialUserRenewQualificationData
|
||||
{ tuQualification :: QualificationId }
|
||||
| TutorialUserGrantQualificationData
|
||||
@ -100,11 +98,7 @@ postTUsersR tid ssh csh tutn = do
|
||||
acts :: Map TutorialUserAction (AForm Handler TutorialUserActionData)
|
||||
acts = Map.fromList $
|
||||
(if null qualifications then mempty else
|
||||
[ ( TutorialUserPrintQualification
|
||||
, TutorialUserPrintQualificationData
|
||||
<$> apopt (selectField . fmap mkOptionList $ mapM qualOpt qualifications) (fslI MsgQualificationName) Nothing
|
||||
)
|
||||
, ( TutorialUserRenewQualification
|
||||
[ ( TutorialUserRenewQualification
|
||||
, TutorialUserRenewQualificationData
|
||||
<$> apopt (selectField . fmap mkOptionList $ mapM qualOpt qualifications) (fslI MsgQualificationName) Nothing
|
||||
)
|
||||
@ -115,16 +109,16 @@ postTUsersR tid ssh csh tutn = do
|
||||
)
|
||||
]
|
||||
) ++
|
||||
[ ( TutorialUserSendMail, pure TutorialUserSendMailData )
|
||||
, ( TutorialUserDeregister, pure TutorialUserDeregisterData )
|
||||
[ ( TutorialUserSendMail , pure TutorialUserSendMailData )
|
||||
, ( TutorialUserDeregister , pure TutorialUserDeregisterData )
|
||||
, ( TutorialUserPrintQualification, pure TutorialUserPrintQualificationData )
|
||||
]
|
||||
table <- makeCourseUserTable cid acts isInTut colChoices psValidator (Just csvColChoices)
|
||||
return (tutEnt, table, qualifications)
|
||||
|
||||
let courseQids = Set.fromList (entityKey <$> qualifications)
|
||||
tcontent <- formResultMaybe participantRes $ \case
|
||||
(TutorialUserPrintQualificationData{..}, selectedUsers)
|
||||
| tuQualification `Set.member` courseQids -> do
|
||||
(TutorialUserPrintQualificationData, selectedUsers) -> do
|
||||
rcvr <- requireAuth
|
||||
encRcvr <- encrypt $ entityKey rcvr
|
||||
letters <- runDB $ makeCourseCertificates tut Nothing $ toList selectedUsers
|
||||
|
||||
@ -353,7 +353,7 @@ postUsersR = do
|
||||
, dbtExtraReps = []
|
||||
}
|
||||
|
||||
-- $logInfoS "UsersFormResult" $ tshow usersRes
|
||||
-- $logInfoS "UsersFormResult" $ tshow usersRes
|
||||
formResult usersRes $ \case
|
||||
(act, usersSet)
|
||||
| Set.null usersSet && isNotSetSupervisor act ->
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
-- SPDX-FileCopyrightText: 2022 Steffen Jost <jost@tcs.ifi.lmu.de>
|
||||
-- SPDX-FileCopyrightText: 2022-23 Steffen Jost <s.jost@fraport.de>
|
||||
--
|
||||
-- SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@ -333,9 +333,9 @@ guessAvsUser (Text.splitAt 6 -> ("AVSID:", avsidTxt)) = ifMaybeM (readMay avsidT
|
||||
extractUid (Entity _ UserAvs{userAvsUser=uid}) = return $ Just uid
|
||||
in maybeM maybeAvsUpsert extractUid $ runDB $ getBy $ UniqueUserAvsId avsid
|
||||
guessAvsUser (Text.splitAt 6 -> ("AVSNO:", avsnoTxt)) = ifMaybeM (readMay avsnoTxt) Nothing $ \avsno ->
|
||||
runDB (selectList [UserAvsNoPerson ==. avsno] []) >>= \case
|
||||
[Entity _ UserAvs{userAvsUser=uid}] -> return $ Just uid
|
||||
_ -> return Nothing
|
||||
runDB (selectList [UserAvsNoPerson ==. avsno] []) <&> \case
|
||||
[Entity _ UserAvs{userAvsUser=uid}] -> Just uid
|
||||
_ -> Nothing
|
||||
guessAvsUser someid = do
|
||||
let maybeUpsertAvsUserByCard = maybeCatchAll . upsertAvsUserByCard
|
||||
case discernAvsCardPersonalNo someid of
|
||||
@ -417,19 +417,19 @@ upsertAvsUserById api = do
|
||||
$logInfoS "AVS" $ "Creating new user with avsInternalPersonalNo " <> tshow persNo
|
||||
candidates <- selectKeysList [UserCompanyPersonalNumber ==. Just persNo] []
|
||||
case candidates of
|
||||
[uid] -> $logInfoS "AVS" "Matching user found, linking." >> insertUniqueEntity (UserAvs api uid avsPersonPersonNo now)
|
||||
[uid] -> $logInfoS "AVS" "Matching user found, linking." >> insertUniqueEntity (UserAvs api uid avsPersonPersonNo now Nothing)
|
||||
(_:_) -> throwM $ AvsUserAmbiguous api
|
||||
[] -> do
|
||||
upsRes :: Either SomeException (Entity User)
|
||||
<- try $ ldapLookupAndUpsert persNo
|
||||
$logInfoS "AVS" $ "No matching existing user found. Attempted LDAP upsert returned: " <> tshow upsRes
|
||||
case upsRes of
|
||||
Right Entity{entityKey=uid} -> insertUniqueEntity $ UserAvs api uid avsPersonPersonNo now -- pin/addr are updated in next step anyway
|
||||
Right Entity{entityKey=uid} -> insertUniqueEntity $ UserAvs api uid avsPersonPersonNo now Nothing -- pin/addr are updated in next step anyway
|
||||
Left err -> do
|
||||
$logWarnS "AVS" $ "AVS user with avsInternalPersonalNo " <> tshow persNo <> " not found in LDAP: " <> tshow err
|
||||
return mbuid -- == Nothing -- user could not be created somehow
|
||||
(Just Entity{ entityKey = uaid }, _) -> do
|
||||
update uaid [ UserAvsLastSynch =. now ] -- mark as updated early, to prevent failed users to clog the synch
|
||||
update uaid [ UserAvsLastSynch =. now, UserAvsLastSynchError =. Nothing ] -- mark as updated early, to prevent failed users to clog the synch
|
||||
return mbuid
|
||||
_other -> return mbuid
|
||||
$logInfoS "AVS" $ "upsert prestep result: " <> tshow mbuid <> " --- " <> tshow mbapd
|
||||
@ -464,7 +464,7 @@ upsertAvsUserById api = do
|
||||
}
|
||||
mbUid <- addNewUser newUsr -- triggers JobSynchroniseLdapUser, JobSendPasswordReset and NotificationUserAutoModeUpdate -- TODO: check if these are failsafe
|
||||
whenIsJust mbUid $ \uid -> runDB $ do
|
||||
insert_ $ UserAvs avsPersonPersonID uid avsPersonPersonNo now
|
||||
insert_ $ UserAvs avsPersonPersonID uid avsPersonPersonNo now Nothing
|
||||
forM_ avsPersonPersonCards $ -- save all cards for later comparisons whether an update occurred
|
||||
-- let cs :: Set AvsDataPersonCard = Set.fromList $ catMaybes [pinCard, addrCard]
|
||||
-- forM_ cs $ -- only save used cards for the postal address update detection
|
||||
|
||||
@ -24,7 +24,7 @@ module Handler.Utils.DateTime
|
||||
, fromDays, fromMonths
|
||||
, weeksToAdd
|
||||
, setYear, getYear
|
||||
, firstDayOfWeekOnAfter
|
||||
, firstDayOfWeekOnAfter, daysOfWeekBetween
|
||||
, ceilingQuarterHour
|
||||
, formatGregorianW
|
||||
) where
|
||||
@ -44,6 +44,7 @@ import qualified Data.Csv as Csv
|
||||
|
||||
import qualified Data.Char as Char
|
||||
|
||||
import Data.List (iterate)
|
||||
|
||||
-------------
|
||||
-- UTCTime --
|
||||
@ -283,6 +284,9 @@ dayOfWeekDiff a b = mod (fromEnum a - fromEnum b) 7
|
||||
firstDayOfWeekOnAfter :: DayOfWeek -> Day -> Day
|
||||
firstDayOfWeekOnAfter dw d = addDays (toInteger $ dayOfWeekDiff dw $ dayOfWeek d) d
|
||||
|
||||
daysOfWeekBetween :: (Day, Day) -> DayOfWeek -> Set Day
|
||||
daysOfWeekBetween (dstart, dend) wday = Set.fromAscList $ takeWhile (dend >=) $ iterate (addDays 7) $ firstDayOfWeekOnAfter wday dstart
|
||||
|
||||
addOneWeek :: UTCTime -> UTCTime
|
||||
addOneWeek = addWeeks 1
|
||||
|
||||
|
||||
@ -7,9 +7,7 @@
|
||||
{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
|
||||
|
||||
module Handler.Utils.Invitations
|
||||
( -- * Procedure
|
||||
--
|
||||
-- $procedure
|
||||
( -- * Procedure
|
||||
IsInvitableJunction(..)
|
||||
, Invitation'
|
||||
, _invitationDBData, _invitationTokenData
|
||||
@ -435,7 +433,7 @@ instance InvitationR b => InvitationR (a -> b) where
|
||||
invitationR cfg _ = invitationR cfg
|
||||
|
||||
|
||||
-- $procedure
|
||||
-- $procedure
|
||||
--
|
||||
-- `Invitation`s encode a pending entry of some junction table between some
|
||||
-- record and `User` e.g.
|
||||
|
||||
@ -4,12 +4,15 @@
|
||||
|
||||
module Handler.Utils.Occurrences
|
||||
( occurrencesWidget
|
||||
, occurrencesBounds
|
||||
, occurrencesAddBusinessDays
|
||||
) where
|
||||
|
||||
import Import
|
||||
|
||||
import qualified Data.Set as Set
|
||||
|
||||
import Utils.Holidays (isWeekend)
|
||||
import Utils.Occurrences
|
||||
|
||||
import Handler.Utils.DateTime
|
||||
@ -31,3 +34,46 @@ occurrencesWidget (normalizeOccurrences -> Occurrences{..}) = do
|
||||
exceptTime' <- formatTime SelFormatDateTime exceptTime
|
||||
$(widgetFile "widgets/occurrence/cell/except-no-occur")
|
||||
$(widgetFile "widgets/occurrence/cell")
|
||||
|
||||
-- | Get bounds for an Occurrences
|
||||
occurrencesBounds :: Term -> Occurrences -> (Maybe Day, Maybe Day)
|
||||
occurrencesBounds Term{..} Occurrences{..} = (Set.lookupMin occDays, Set.lookupMax occDays)
|
||||
where
|
||||
occDays = (scdDays <> plsDays) \\ excDays -- (excDays <> termHolidays term) -- TODO: should holidays be exluded here? Probably not, as they can be added as exceptions already
|
||||
|
||||
scdDays = Set.foldr getOccDays mempty occurrencesScheduled
|
||||
(plsDays,excDays) = Set.foldr getExcDays mempty occurrencesExceptions
|
||||
|
||||
getExcDays :: OccurrenceException -> (Set Day, Set Day) -> (Set Day, Set Day)
|
||||
getExcDays ExceptNoOccur{exceptTime} (occ,exc) = (occ, Set.insert (localDay exceptTime) exc)
|
||||
getExcDays ExceptOccur{exceptDay} (occ,exc) = (Set.insert exceptDay occ, exc)
|
||||
|
||||
getOccDays :: OccurrenceSchedule -> Set Day -> Set Day
|
||||
getOccDays ScheduleWeekly{scheduleDayOfWeek=wday} = Set.union $ daysOfWeekBetween (termLectureStart,termLectureEnd) wday
|
||||
|
||||
occurrencesAddBusinessDays :: Term -> (Day,Day) -> Occurrences -> Occurrences
|
||||
occurrencesAddBusinessDays Term{..} (dayOld, dayNew) Occurrences{..} = Occurrences newSchedule newExceptions
|
||||
where
|
||||
newSchedule = Set.map switchDayOfWeek occurrencesScheduled
|
||||
dayDiff = diffDays dayNew dayOld
|
||||
|
||||
offDays = Set.fromList $ termHolidays <> weekends
|
||||
weekends = [d | d <- [(min termLectureStart termStart)..(max termEnd termLectureEnd)], isWeekend d]
|
||||
|
||||
switchDayOfWeek :: OccurrenceSchedule -> OccurrenceSchedule
|
||||
switchDayOfWeek os | 0 == dayDiff `mod` 7 = os
|
||||
switchDayOfWeek os@ScheduleWeekly{scheduleDayOfWeek=wday} = os{scheduleDayOfWeek= toEnum (fromIntegral dayDiff + fromEnum wday)}
|
||||
|
||||
newExceptions = snd $ Set.foldl' advanceExceptions (dayDiff,mempty) occurrencesExceptions
|
||||
|
||||
-- we assume that instance Ord OccurrenceException is ordered chronologically
|
||||
advanceExceptions :: (Integer, Set OccurrenceException) -> OccurrenceException -> (Integer, Set OccurrenceException)
|
||||
advanceExceptions (offset, acc) ex
|
||||
| ed `Set.notMember` offDays -- skip term-holidays and weekends, unless the original day was a holiday or weekend
|
||||
, nd `Set.member` offDays
|
||||
= advanceExceptions (succ offset, acc) ex
|
||||
| otherwise
|
||||
= (offset, Set.insert (setDayOfOccurrenceException nd ex) acc)
|
||||
where
|
||||
ed = dayOfOccurrenceException ex
|
||||
nd = addDays offset ed
|
||||
|
||||
@ -1446,8 +1446,8 @@ dbTable PSValidator{..} dbtable@DBTable{ dbtIdent = dbtIdent'@(toPathPiece -> db
|
||||
|
||||
let
|
||||
rowCount = fromMaybe 0 $ rows' ^? _head . _1 . _Value
|
||||
-- | selectPagesize = fromMaybe 0 $ rows' ^? _head . _1 . _Value
|
||||
-- | otherwise = olength64 rows
|
||||
-- | selectPagesize = fromMaybe 0 $ rows' ^? _head . _1 . _Value
|
||||
-- | otherwise = olength64 rows
|
||||
|
||||
rawAction = tblLink
|
||||
$ setParam (wIdent "sorting") Nothing
|
||||
|
||||
@ -6,6 +6,7 @@ module Handler.Utils.Term
|
||||
( groupHolidays
|
||||
, getCurrentTerm
|
||||
, getActiveTerms
|
||||
, fetchTermByCID
|
||||
, module Utils.Term
|
||||
) where
|
||||
|
||||
@ -61,3 +62,17 @@ getActiveTerms = do
|
||||
|
||||
fmap Set.fromDistinctAscList . runConduit $
|
||||
E.selectSource activeTermsQuery .| C.map E.unValue .| C.sinkList
|
||||
|
||||
fetchTermByCID :: ( MonadHandler m
|
||||
, BackendCompatible SqlBackend backend
|
||||
, PersistQueryRead backend, PersistUniqueRead backend
|
||||
)
|
||||
=> CourseId -> ReaderT backend m Term
|
||||
fetchTermByCID cid = do
|
||||
termList <- E.select . E.distinct . E.from $ \(course `E.InnerJoin` term) -> do
|
||||
E.on $ course E.^. CourseTerm E.==. term E.^. TermId
|
||||
E.where_ $ course E.^. CourseId E.==. E.val cid
|
||||
return term
|
||||
case termList of
|
||||
[term] -> return $ entityVal term
|
||||
_other -> notFound
|
||||
@ -324,7 +324,7 @@ determineCrontab = execWriterT $ do
|
||||
, jIteration = fromInteger nextInterval
|
||||
})
|
||||
Cron
|
||||
{ cronInitial = CronTimestamp $ utcToLocalTimeTZ appTZ nextIntervalTime
|
||||
{ cronInitial = CronTimestamp $ utcToLocalTimeTZ appTZ $ toTimeOfDay 23 30 0 $ utctDay nextIntervalTime
|
||||
, cronRepeat = CronRepeatNever
|
||||
, cronRateLimit = appSynchroniseLdapUsersInterval
|
||||
, cronNotAfter = Right . CronTimestamp . utcToLocalTimeTZ appTZ $ addUTCTime appSynchroniseLdapUsersInterval nextIntervalTime
|
||||
@ -337,6 +337,8 @@ determineCrontab = execWriterT $ do
|
||||
, Just syncWithin <- appSynchroniseAvsUsersWithin
|
||||
, Just cInterval <- appJobCronInterval
|
||||
-> do
|
||||
now <- liftIO getCurrentTime
|
||||
let nowaday = utctDay now
|
||||
nextIntervals <- getNextIntervals syncWithin appSynchroniseAvsUsersInterval cInterval
|
||||
|
||||
forM_ nextIntervals $ \(nextEpoch, nextInterval, nextIntervalTime, numIntervals) -> do
|
||||
@ -345,12 +347,12 @@ determineCrontab = execWriterT $ do
|
||||
{ jEpoch = fromInteger nextEpoch
|
||||
, jNumIterations = fromInteger numIntervals
|
||||
, jIteration = fromInteger nextInterval
|
||||
, jSynchAfter = Nothing
|
||||
, jSynchAfter = Just $ addDays (-7) nowaday -- at most once per week
|
||||
})
|
||||
Cron
|
||||
{ cronInitial = CronTimestamp $ utcToLocalTimeTZ appTZ nextIntervalTime
|
||||
{ cronInitial = CronTimestamp $ utcToLocalTimeTZ appTZ $ toTimeOfDay 22 0 0 $ utctDay nextIntervalTime
|
||||
, cronRepeat = CronRepeatNever
|
||||
, cronRateLimit = appSynchroniseLdapUsersInterval
|
||||
, cronRateLimit = appSynchroniseAvsUsersInterval
|
||||
, cronNotAfter = Right . CronTimestamp . utcToLocalTimeTZ appTZ $ addUTCTime appSynchroniseAvsUsersInterval nextIntervalTime
|
||||
}
|
||||
| otherwise
|
||||
@ -367,28 +369,28 @@ determineCrontab = execWriterT $ do
|
||||
}
|
||||
)
|
||||
Cron
|
||||
{ cronInitial = CronTimestamp $ utcToLocalTimeTZ appTZ nextIntervalTime
|
||||
{ cronInitial = CronTimestamp $ utcToLocalTimeTZ appTZ $ toTimeOfDay 22 0 0 $ utctDay nextIntervalTime
|
||||
, cronRepeat = CronRepeatNever
|
||||
, cronRateLimit = appPruneUnreferencedFilesInterval
|
||||
, cronNotAfter = Right . CronTimestamp . utcToLocalTimeTZ appTZ $ addUTCTime appPruneUnreferencedFilesInterval nextIntervalTime
|
||||
}
|
||||
|
||||
whenIsJust ((,) <$> appStudyFeaturesRecacheRelevanceWithin <*> appJobCronInterval) $ \(within, cInterval) -> do
|
||||
nextIntervals <- getNextIntervals within appStudyFeaturesRecacheRelevanceInterval cInterval
|
||||
forM_ nextIntervals $ \(nextEpoch, nextInterval, nextIntervalTime, numIntervals) -> do
|
||||
tell $ HashMap.singleton
|
||||
(JobCtlQueue JobStudyFeaturesRecacheRelevance
|
||||
{ jEpoch = fromInteger nextEpoch
|
||||
, jNumIterations = fromInteger numIntervals
|
||||
, jIteration = fromInteger nextInterval
|
||||
}
|
||||
)
|
||||
Cron
|
||||
{ cronInitial = CronTimestamp $ utcToLocalTimeTZ appTZ nextIntervalTime
|
||||
, cronRepeat = CronRepeatNever
|
||||
, cronRateLimit = appStudyFeaturesRecacheRelevanceInterval
|
||||
, cronNotAfter = Right . CronTimestamp . utcToLocalTimeTZ appTZ $ addUTCTime appStudyFeaturesRecacheRelevanceInterval nextIntervalTime
|
||||
}
|
||||
-- whenIsJust ((,) <$> appStudyFeaturesRecacheRelevanceWithin <*> appJobCronInterval) $ \(within, cInterval) -> do
|
||||
-- nextIntervals <- getNextIntervals within appStudyFeaturesRecacheRelevanceInterval cInterval
|
||||
-- forM_ nextIntervals $ \(nextEpoch, nextInterval, nextIntervalTime, numIntervals) -> do
|
||||
-- tell $ HashMap.singleton
|
||||
-- (JobCtlQueue JobStudyFeaturesRecacheRelevance
|
||||
-- { jEpoch = fromInteger nextEpoch
|
||||
-- , jNumIterations = fromInteger numIntervals
|
||||
-- , jIteration = fromInteger nextInterval
|
||||
-- }
|
||||
-- )
|
||||
-- Cron
|
||||
-- { cronInitial = CronTimestamp $ utcToLocalTimeTZ appTZ toTimeOfDay 22 0 0 $ utctDay nextIntervalTime
|
||||
-- , cronRepeat = CronRepeatNever
|
||||
-- , cronRateLimit = appStudyFeaturesRecacheRelevanceInterval
|
||||
-- , cronNotAfter = Right . CronTimestamp . utcToLocalTimeTZ appTZ $ addUTCTime appStudyFeaturesRecacheRelevanceInterval nextIntervalTime
|
||||
-- }
|
||||
|
||||
whenIsJust appQualificationCheckHour $ \hour -> tell $ HashMap.singleton
|
||||
(JobCtlQueue JobLmsQualificationsEnqueue)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user