refactor(messages): sheet-folder

This commit is contained in:
Winnie Ros 2021-04-02 15:53:10 +02:00
parent 607fb12fa4
commit f51679697f
35 changed files with 328 additions and 337 deletions

View File

@ -74,6 +74,15 @@ TableExamName: Name
TableExamTime: Termin TableExamTime: Termin
TableExamRegistration: Prüfungsanmeldung TableExamRegistration: Prüfungsanmeldung
TableExamResult: Prüfungsergebnis TableExamResult: Prüfungsergebnis
TableSheet: Blatt
TableLastEdit: Letzte Änderung
TableSubmission: Abgabenummer
TableRating: Korrektur
TableFileTitle: Dateiname
TableFileModified: Letzte Änderung
TableCorState: Status
TableCorProportion: Anteil
TableCorrector: Korrektor
#headings #headings
HeadingLegal: Rechtliche Informationen HeadingLegal: Rechtliche Informationen
@ -84,7 +93,6 @@ HeadingProfileData: Persönliche Daten
HeadingSchoolList: Institute HeadingSchoolList: Institute
HeadingAdminCrontab: Crontab HeadingAdminCrontab: Crontab
HeadingAdminTokens: Tokens ausstellen HeadingAdminTokens: Tokens ausstellen
SheetPersonalisedFilesDownload: Personalisierte Dateien herunterladen
HeadingCorrectionsAssign: Zuteilung der Korrekturen HeadingCorrectionsAssign: Zuteilung der Korrekturen
HeadingUserAdd: Benutzer:in anlegen HeadingUserAdd: Benutzer:in anlegen
CorrectorsChange: Korrektoren ändern CorrectorsChange: Korrektoren ändern
@ -99,7 +107,7 @@ EmailInvitationWarning: Diese Adresse konnte keinem Uni2work-Benutzer zugeordnet
FormFieldWorkflowDatasetTip: Mindestens ein gekennzeichnetes Feld pro Datensatz muss ausgefüllt werden FormFieldWorkflowDatasetTip: Mindestens ein gekennzeichnetes Feld pro Datensatz muss ausgefüllt werden
Corrector: Korrektor:in
Aborted: Abgebrochen Aborted: Abgebrochen
Remarks: Hinweise Remarks: Hinweise
@ -160,7 +168,6 @@ ExamOccurrenceNoCapacity: Zu diesem Termin/Raum sind keine Plätze mehr frei.
CourseNotEmpty: In diesem Kurs sind momentan Teilnehmer angemeldet. CourseNotEmpty: In diesem Kurs sind momentan Teilnehmer angemeldet.
CourseApply: Zum Kurs bewerben CourseApply: Zum Kurs bewerben
FFSheetName: Name
TermCourseListHeading tid@TermId: Kursübersicht #{tid} TermCourseListHeading tid@TermId: Kursübersicht #{tid}
TermSchoolCourseListHeading tid@TermId school@SchoolName: Kursübersicht #{tid} für #{school} TermSchoolCourseListHeading tid@TermId school@SchoolName: Kursübersicht #{tid} für #{school}
TermCourseListTitle tid@TermId: Kurse #{tid} TermCourseListTitle tid@TermId: Kurse #{tid}
@ -184,88 +191,25 @@ CourseRegistrationDeleteToEdit: Um Ihre Anmeldungsdaten zu editieren müssen Sie
TutorialRegisterFromTip: Ohne Datum ist keine eigenständige Anmeldung von Studierenden erlaubt. TutorialRegisterFromTip: Ohne Datum ist keine eigenständige Anmeldung von Studierenden erlaubt.
TutorialRegisterToTip: Darf auch unbegrenzt offen bleiben TutorialRegisterToTip: Darf auch unbegrenzt offen bleiben
Sheet: Blatt
SheetList tid@TermId ssh@SchoolId csh@CourseShorthand: #{tid}-#{ssh}-#{csh} Übersicht Übungsblätter 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 SheetNewHeading tid@TermId ssh@SchoolId csh@CourseShorthand: #{tid}-#{ssh}-#{csh} Neues Übungsblatt anlegen
SheetNewOk tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{sheetName} wurde als neues Übungsblatt im Kurs #{tid}-#{ssh}-#{csh} erfolgreich erstellt. SheetTitleHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh} #{sheetName}
SheetTitle tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{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 SheetEditHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh} #{sheetName} editieren
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}
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 Kurs #{tid}-#{ssh}-#{csh} herauslöschen? Alle assoziierten Abgaben und Korrekturen gehen ebenfalls verloren!
SheetDelOk tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh}: #{sheetName} gelöscht.
SheetDelHasSubmissions objs@Int: Inkl. #{objs} #{pluralDE objs "Abgabe" "Abgaben"}!
SheetDeleteQuestion: Wollen Sie das unten aufgeführte Übungsblatt und alle zugehörigen Abgaben wirklich löschen?
SheetDeleted: Übungsblatt gelöscht
SheetUploadMode: Abgabe von Dateien SheetUploadMode: Abgabe von Dateien
SheetSubmissionMode: Abgabe-Modus UtilSheetSubmissionMode: Abgabe-Modus
SheetExercise: Aufgabenstellung UtilSheetType: Wertung
SheetHint: Hinweis
SheetHintFrom: Hinweis ab
SheetHintFromPlaceholder: Datum, sonst nur für Korrektoren
SheetSolutionFromPlaceholder: Datum, sonst nur für Korrektoren
SheetSolution: Lösung
SheetSolutionFrom: Lösung ab
SheetMarking: Hinweise für Korrektoren
SheetMarkingFiles: Korrektur
SheetType: Wertung
SheetInvisible: Dieses Übungsblatt ist für Teilnehmer momentan unsichtbar!
SheetName: Name
SheetDescription: Hinweise für Teilnehmer
SheetGroup: Gruppenabgabe
SheetVisibleFrom: Sichtbar für Teilnehmer 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
SheetActiveFromParticipant: Beginn Abgabezeitraum
SheetActiveFromParticipantNoSubmit: Herausgabe der Aufgabestellung
SheetActiveFromTip: Download der Aufgabenstellung und Abgabe erst ab diesem Datum möglich. Ohne Datum keine Abgabe und keine Herausgabe der Aufgabenstellung
SheetActiveFromUnset: Nie
SheetActiveTo: Aktiv bis/Ende Abgabezeitraum
SheetActiveToParticipant: Ende Abgabezeitraum
SheetActiveToTip: Abgabe nur bis zu diesem Datum möglich. Ohne Datum unbeschränkte Abgabe möglich (soweit gefordert).
SheetActiveToUnset: Nie
SheetHintFromTip: Ohne Datum nie für Teilnehmer sichtbar, Korrektoren können diese Dateien immer herunterladen
SheetSolutionFromTip: Ohne Datum nie für Teilnehmer sichtbar, Korrektoren können diese Dateien immer herunterladen
SheetMarkingTip: Hinweise zur Korrektur, sichtbar nur für Korrektoren
SheetPseudonym: Persönliches Abgabe-Pseudonym
SheetGeneratePseudonym: Generieren
SheetAnonymousCorrection: Anonymisierte Korrektur
SheetAnonymousCorrectionTip: Wenn die Korrektur anonymisiert erfolgt, können Korrektoren die ihnen zugeteilten Abgaben nicht bestimmten Studierenden zuordnen (Name, Matrikelnummer und feste Abgabegruppe der Abgebenden werden versteckt)
SheetRequireExam: Anmeldung zu einer Prüfung voraussetzen?
SheetRequireExamTip: Wenn die Anmeldung zu einer Prüfung vorausgesetzt wird, können nur Kursteilnehmer 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 Kursteilnehmern erlaubt.
SheetRequiredExam: Prüfung
SheetShowRequiredExam: Vorausgesetze Prüfungsanmeldung
SheetSubmissionExamRegistrationRequired: Um die Angabe für dieses Übungsblatt herunterzuladen oder Abzugeben ist eine Anmeldung zur genannten Prüfung erforderlich.
SheetFilesExamRegistrationRequired: Um die Dateien dieses Übungsblattes herunterzuladen oder Abzugeben ist eine Anmeldung zu der oben genannten Prüfung erforderlich.
SheetFilesMissingPersonalisedFiles: Um abzugeben muss zunächst ein Kursverwalter personalisierte Übungsblatt-Dateien für Sie hinterlegen.
SheetArchiveFileTypeDirectoryExercise: aufgabenstellung SheetArchiveFileTypeDirectoryExercise: aufgabenstellung
SheetArchiveFileTypeDirectoryHint: hinweis SheetArchiveFileTypeDirectoryHint: hinweis
SheetArchiveFileTypeDirectorySolution: loesung SheetArchiveFileTypeDirectorySolution: loesung
SheetArchiveFileTypeDirectoryMarking: korrektur SheetArchiveFileTypeDirectoryMarking: korrektur
SheetFormType: Wertung & Abgabe
SheetFormTimes: Zeiten
SheetFormFiles: Dateien
SheetErrVisibility: "Aktiv ab/Beginn Abgabezeitraum" muss nach "Sichbar für Teilnehmer ab" liegen
SheetErrDeadlineEarly: "Aktiv bis/Ende Abgabezeitraum" muss nach "Aktiv ab/Beginn Abzeitraum" liegen
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 ab" angegeben, muss auch "Aktiv ab/Beginn Abgabezeitraum" angegeben werden
SheetWarnNoActiveTo: "Aktiv bis/Ende Abgabezeitraum" sollte stets angegeben werden
SheetNoCurrent: Es gibt momentan kein aktives Übungsblatt.
SheetNoOldUnassigned: Alle Abgaben inaktiver Blätter sind bereits einen Korrektor zugeteilt.
SheetsUnassignable name@Text: Momentan keine Abgaben zuteilbar für #{name} SheetsUnassignable name@Text: Momentan keine Abgaben zuteilbar für #{name}
SheetSubmissionModeNoneWithoutNotGraded: Es wurde "Keine Abgabe" eingestellt, jedoch nicht "Keine Bewertung". Kursteilnehmer werden nicht abgeben können.
Deadline: Abgabe Deadline: Abgabe
Done: Eingereicht Done: Eingereicht
Submission: Abgabenummer
SubmissionsCourse tid@TermId ssh@SchoolId csh@CourseShorthand: Alle Abgaben Kurs #{tid}-#{ssh}-#{csh} SubmissionsCourse tid@TermId ssh@SchoolId csh@CourseShorthand: Alle Abgaben Kurs #{tid}-#{ssh}-#{csh}
SubmissionsSheet sheetName@SheetName: Abgaben für #{sheetName} SubmissionsSheet sheetName@SheetName: Abgaben für #{sheetName}
SubmissionWrongSheet: Abgabenummer gehört nicht zum angegebenen Übungsblatt. SubmissionWrongSheet: Abgabenummer gehört nicht zum angegebenen Übungsblatt.
@ -444,16 +388,6 @@ NotAParticipant email@UserEmail tid@TermId csh@CourseShorthand: #{email} ist nic
TooManyParticipants: Es wurden zu viele Mitabgebende angegeben TooManyParticipants: Es wurden zu viele Mitabgebende angegeben
AddCorrector: Zusätzlicher Korrektor AddCorrector: Zusätzlicher Korrektor
CorrectorExists: Nutzer ist bereits als Korrektor eingetragen
SheetCorrectorsTitle tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: Korrektoren für #{tid}-#{ssh}-#{csh} #{sheetName}
CountTutProp: Tutorien zählen gegen Proportion
CountTutPropTip: Wenn Abgaben nach Tutorium zugeteilt werden, zählen diese Zuteilungen in Bezug auf den jeweiligen Anteil?
AutoAssignCorrs: Korrekturen nach Ablauf des Abgabezeitraums automatisch zuteilen
Corrector: Korrektor
Correctors: Korrektoren
CorState: Status
CorByTut: Zuteilung nach Tutorium
CorProportion: Anteil
CorDeficitProportion: Defizit Anteile CorDeficitProportion: Defizit Anteile
CorByProportionOnly proportion@Rational: #{rationalToFixed3 proportion} Anteile CorByProportionOnly proportion@Rational: #{rationalToFixed3 proportion} Anteile
CorByProportionIncludingTutorial proportion@Rational: #{rationalToFixed3 proportion} Anteile - Tutorium CorByProportionIncludingTutorial proportion@Rational: #{rationalToFixed3 proportion} Anteile - Tutorium
@ -461,7 +395,6 @@ CorByProportionExcludingTutorial proportion@Rational: #{rationalToFixed3 proport
RowCount count@Int64: #{count} #{pluralDE count "passender Eintrag" "passende Einträge"} insgesamt RowCount count@Int64: #{count} #{pluralDE count "passender Eintrag" "passende Einträge"} insgesamt
DeleteRow: Entfernen DeleteRow: Entfernen
ProportionNegative: Anteile dürfen nicht negativ sein
CorrectorUpdated: Korrektor erfolgreich aktualisiert CorrectorUpdated: Korrektor erfolgreich aktualisiert
CorrectorsUpdated: Korrektoren erfolgreich aktualisiert CorrectorsUpdated: Korrektoren erfolgreich aktualisiert
CorrectorsPlaceholder: Korrektoren... CorrectorsPlaceholder: Korrektoren...
@ -587,13 +520,9 @@ NotPassed: Nicht bestanden
RatingTime: Korrigiert RatingTime: Korrigiert
RatingComment: Kommentar RatingComment: Kommentar
SubmissionUsers: Studenten SubmissionUsers: Studenten
Rating: Korrektur
IsRated: Korrigiert
SheetTypeIsExam: Anrechnung „als Prüfungsaufgabe“
RatingPoints: Punkte RatingPoints: Punkte
RatingDone: Bewertung abgeschlossen RatingDone: Bewertung abgeschlossen
RatingDoneTip: Das Korrekturergebnis ist nur dann für die Abgebenden sichtbar und kann gegen etwaige Prüfungs-Bonuspunkte verrechnet werden, wenn die Bewertung abgeschlossen ist. RatingDoneTip: Das Korrekturergebnis ist nur dann für die Abgebenden sichtbar und kann gegen etwaige Prüfungs-Bonuspunkte verrechnet werden, wenn die Bewertung abgeschlossen ist.
RatingPercent: Erreicht
RatingFiles: Korrigierte Dateien RatingFiles: Korrigierte Dateien
RatingFilesTip: Hier hochgeladene Dateien ersetzen ggf. die bestehende korrigierte Version der Abgabe vollständig (nicht erneut hochgeladene Dateien werden gelöscht). Die original abgegebene Version bleibt erhalten. RatingFilesTip: Hier hochgeladene Dateien ersetzen ggf. die bestehende korrigierte Version der Abgabe vollständig (nicht erneut hochgeladene Dateien werden gelöscht). Die original abgegebene Version bleibt erhalten.
PointsNotPositive: Punktzahl darf nicht negativ sein PointsNotPositive: Punktzahl darf nicht negativ sein
@ -603,13 +532,9 @@ RatingPointsDone: Abgabe zählt als korrigiert, gdw. Punktezahl gesetzt ist
ColumnRatingPoints: Punktzahl ColumnRatingPoints: Punktzahl
Pseudonyms: Pseudonyme Pseudonyms: Pseudonyme
Files: Dateien
FileTitle: Dateiname
FileModified: Letzte Änderung
VisibleFrom: Veröffentlicht VisibleFrom: Veröffentlicht
AccessibleSince: Verfügbar seit AccessibleSince: Verfügbar seit
Corrected: Korrigiert Corrected: Korrigiert
CorrectionAchievedPoints: Erzielte Punkte CorrectionAchievedPoints: Erzielte Punkte
CorrectionAchievedPass: Bestanden CorrectionAchievedPass: Bestanden
@ -700,7 +625,6 @@ IllDefinedUTCTime: Der angegebene Zeitpunkt lässt sich nicht zu UTC konvertiere
LastEdits: Letzte Änderungen LastEdits: Letzte Änderungen
EditedBy name@Text time@Text: #{time} durch #{name} EditedBy name@Text time@Text: #{time} durch #{name}
LastEdit: Letzte Änderung
LastEditByUser: Ihre letzte Bearbeitung LastEditByUser: Ihre letzte Bearbeitung
NoEditByUser: Nicht von Ihnen bearbeitet NoEditByUser: Nicht von Ihnen bearbeitet
@ -728,8 +652,6 @@ CampusUserInvalidSex: Konnte anhand des Campus-Logins kein Geschlecht ermitteln
CorrectorNormal: Normal CorrectorNormal: Normal
CorrectorMissing: Abwesend CorrectorMissing: Abwesend
CorrectorExcused: Entschuldigt CorrectorExcused: Entschuldigt
SheetCorrectorState: Status
SheetCorrectorProportion: Anteil
CorrectorStateTip: Abwesende Korrektoren bekommen bei späteren Übungsblättern mehr Korrekturen zum Ausgleich zugewiesen. Entschuldigte Korrektoren müssen nicht nacharbeiten. CorrectorStateTip: Abwesende Korrektoren bekommen bei späteren Übungsblättern mehr Korrekturen zum Ausgleich zugewiesen. Entschuldigte Korrektoren müssen nicht nacharbeiten.
DayIsAHoliday tid@TermId name@Text date@Text: "#{name}" (#{date}) ist ein Feiertag DayIsAHoliday tid@TermId name@Text date@Text: "#{name}" (#{date}) ist ein Feiertag
@ -777,8 +699,6 @@ BothSubmissions: Abgabe direkt in Uni2work & extern mit Pseudonym
BothSubmissionsTip: Abgabe kann, nach Wahl des Teilnehmers, entweder direkt in Uni2work oder extern mit Pseudonym erfolgen BothSubmissionsTip: Abgabe kann, nach Wahl des Teilnehmers, entweder direkt in Uni2work oder extern mit Pseudonym erfolgen
SheetCorrectorSubmissionsTip: Abgabe erfolgt über ein Uni2work-externes Verfahren (zumeist in Papierform durch Einwurf) unter Angabe eines persönlichen Pseudonyms. Korrektoren können mithilfe des Pseudonyms später Korrekturergebnisse in Uni2work eintragen, damit Sie sie einsehen können.
SubmissionNoUploadExpected: Es ist keine Abgabe von Dateien vorgesehen. SubmissionNoUploadExpected: Es ist keine Abgabe von Dateien vorgesehen.
SubmissionReplace: Abgabe ersetzen SubmissionReplace: Abgabe ersetzen
SubmissionCreated: Abgabe erfolgreich angelegt SubmissionCreated: Abgabe erfolgreich angelegt
@ -940,9 +860,6 @@ InvitationFromTip displayName@Text: Sie erhalten diese Einladung, weil #{display
InvitationFromTipAnonymous: Sie erhalten diese Einladung, weil ein nicht eingeloggter Benutzer ihren Versand in Uni2work ausgelöst hat. InvitationFromTipAnonymous: Sie erhalten diese Einladung, weil ein nicht eingeloggter Benutzer ihren Versand in Uni2work ausgelöst hat.
InvitationUniWorXTip: Uni2work ist ein webbasiertes Lehrverwaltungssystem der LMU München. InvitationUniWorXTip: Uni2work ist ein webbasiertes Lehrverwaltungssystem der LMU München.
MailSubjectCorrectorInvitation tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName: [#{tid}-#{ssh}-#{csh}] Einladung zum Korrektor für #{shn}
MailSubjectTutorInvitation tid@TermId ssh@SchoolId csh@CourseShorthand tutn@TutorialName: [#{tid}-#{ssh}-#{csh}] Einladung zum Tutor für #{tutn} MailSubjectTutorInvitation tid@TermId ssh@SchoolId csh@CourseShorthand tutn@TutorialName: [#{tid}-#{ssh}-#{csh}] Einladung zum Tutor für #{tutn}
MailSubjectSubmissionUserInvitation tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName: [#{tid}-#{ssh}-#{csh}] Einladung zu einer Abgabe für #{shn} MailSubjectSubmissionUserInvitation tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName: [#{tid}-#{ssh}-#{csh}] Einladung zu einer Abgabe für #{shn}
@ -974,7 +891,6 @@ SheetTypeInfoBonus: Bonus Blätter zählen normal, erhöhen aber nicht die maxim
SheetTypeInfoInformational: Blätter ohne Anrechnung werden nirgends angerechnet, die Bewertung durch den Korrektor dient lediglich zur Information der Teilnehmer. SheetTypeInfoInformational: Blätter ohne Anrechnung werden nirgends angerechnet, die Bewertung durch den Korrektor dient lediglich zur Information der Teilnehmer.
SheetGradingBonusIncluded: Erzielte Bonuspunkte wurden hier bereits zu den erreichten normalen Punkten hinzugezählt. SheetGradingBonusIncluded: Erzielte Bonuspunkte wurden hier bereits zu den erreichten normalen Punkten hinzugezählt.
SummaryTitle: Zusammenfassung über SummaryTitle: Zusammenfassung über
SheetGradingSummaryTitle intgr@Integer: #{intgr} #{pluralDE intgr "Blatt" "Blätter"}
SubmissionGradingSummaryTitle intgr@Integer: #{intgr} #{pluralDE intgr "Abgabe" "Abgaben"} SubmissionGradingSummaryTitle intgr@Integer: #{intgr} #{pluralDE intgr "Abgabe" "Abgaben"}
SheetTypeExamPartPointsWeightNegative: Gewichtung darf nicht negativ sein SheetTypeExamPartPointsWeightNegative: Gewichtung darf nicht negativ sein
SheetTypeExamPartPointsWeight: Gewichtung SheetTypeExamPartPointsWeight: Gewichtung
@ -995,16 +911,6 @@ SheetGroupRegisteredGroups: Registrierte Gruppen
SheetGroupNoGroups: Keine Gruppenabgabe SheetGroupNoGroups: Keine Gruppenabgabe
SheetGroupMaxGroupsize: Maximale Gruppengröße SheetGroupMaxGroupsize: Maximale Gruppengröße
SheetFiles: Übungsblatt-Dateien
SheetFileTypeHeader: Zugehörigkeit
SheetArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}
SheetTypeArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName renderedSft@Text: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-#{foldCase renderedSft}
CorrCreate: Abgaben registrieren CorrCreate: Abgaben registrieren
UnknownPseudonymWord pseudonymWord@Text: Unbekanntes Pseudonym-Wort "#{pseudonymWord}" UnknownPseudonymWord pseudonymWord@Text: Unbekanntes Pseudonym-Wort "#{pseudonymWord}"
InvalidPseudonym pseudonym@Text: Invalides Pseudonym "#{pseudonym}" InvalidPseudonym pseudonym@Text: Invalides Pseudonym "#{pseudonym}"
@ -1175,10 +1081,8 @@ MultiUserFieldInvitationExplanationAlways: Es wird an alle Adressen, die Sie hie
LecturerInvitationAccepted lType@Text csh@CourseShorthand: Sie wurden als #{lType} für #{csh} eingetragen LecturerInvitationAccepted lType@Text csh@CourseShorthand: Sie wurden als #{lType} für #{csh} eingetragen
LecturerInvitationDeclined csh@CourseShorthand: Sie haben die Einladung, Kursverwalter für #{csh} zu werden, abgelehnt LecturerInvitationDeclined csh@CourseShorthand: Sie haben die Einladung, Kursverwalter für #{csh} zu werden, abgelehnt
CorrectorInvitationAccepted shn@SheetName: Sie wurden als Korrektor für #{shn} eingetragen TutorCorrectorInvitationAccepted shn@SheetName: Sie wurden als Korrektor für #{shn} eingetragen
CorrectorInvitationDeclined shn@SheetName: Sie haben die Einladung, Korrektor für #{shn} zu werden, abgelehnt CorrectorInvitationDeclined shn@SheetName: Sie haben die Einladung, Korrektor für #{shn} zu werden, abgelehnt
SheetCorrInviteHeading shn@SheetName: Einladung zum Korrektor für #{shn}
SheetCorrInviteExplanation: Sie wurden eingeladen, Korrektor für ein Übungsblatt zu sein.
TutorInvitationAccepted tutn@TutorialName: Sie wurden als Tutor für #{tutn} eingetragen TutorInvitationAccepted tutn@TutorialName: Sie wurden als Tutor für #{tutn} eingetragen
TutorInvitationDeclined tutn@TutorialName: Sie haben die Einladung, Tutor für #{tutn} zu werden, abgelehnt TutorInvitationDeclined tutn@TutorialName: Sie haben die Einladung, Tutor für #{tutn} zu werden, abgelehnt
@ -1810,30 +1714,10 @@ SubmissionDoneAlways: Immer
CorrUploadSubmissionDoneMode: Bewertung abgeschlossen CorrUploadSubmissionDoneMode: Bewertung abgeschlossen
CorrUploadSubmissionDoneModeTip: Sollen hochgeladene Korrekturen als abgeschlossen markiert werden? Bewertungen sind erst für Studierende sichtbar und zählen gegen Examboni, wenn sie abgeschlossen sind. CorrUploadSubmissionDoneModeTip: Sollen hochgeladene Korrekturen als abgeschlossen markiert werden? Bewertungen sind erst für Studierende sichtbar und zählen gegen Examboni, wenn sie abgeschlossen sind.
SheetPersonalisedFiles: Personalisierte Dateien
SheetPersonalisedFilesTip: Sollen zusätzlich zu den oben angegebenen Dateien noch pro Kursteilnehmer personalisierte Dateien hinterlegt werden? Nur die jeweiligen Kursteilnehmer 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 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 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 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:
PersonalisedSheetFilesDownloadAnonymous: Anonymisiert PersonalisedSheetFilesDownloadAnonymous: Anonymisiert
PersonalisedSheetFilesDownloadSurnames: Mit Nachnamen PersonalisedSheetFilesDownloadSurnames: Mit Nachnamen
PersonalisedSheetFilesDownloadMatriculations: Mit Matrikelnummern PersonalisedSheetFilesDownloadMatriculations: Mit Matrikelnummern
PersonalisedSheetFilesDownloadGroups: Mit festen Abgabegruppen PersonalisedSheetFilesDownloadGroups: Mit festen Abgabegruppen
CoursePersonalisedSheetFilesArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-personalisierte_dateien
PersonalisedSheetFilesArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-personalisierte_dateien
PersonalisedSheetFilesMetaFilename uid@CryptoFileNameUser: meta-informationen_#{toPathPiece uid}.yaml
PersonalisedSheetFilesDownloadAnonymousField: Anonymisierung
PersonalisedSheetFilesDownloadAnonymousFieldTip: Sollen Verzeichnisnamen innerhalb des Archivs von personalisierten Dateien anonymisiert werden (sie enthalten dann keinerlei unmittelbar identifizierende Informationen zu den Kursteilnehmern), oder sollen die Verzeichnisnamen mit einem Merkmal versehen werden und die Metainformations-Dateien zusätzlich persönliche Daten enthalten?
PersonalisedSheetFilesIgnored count@Int64: Es #{pluralDE count "wurde" "wurden"} #{count} hochgeladene #{pluralDE count "Datei" "Dateien"} ignoriert, da sie keinem Übungsblattdatei-Typ oder keinem Kursteilnehmer zugeordnet werden #{pluralDE count "konnte" "konnten"}.
PersonalisedSheetFilesIgnoredIntro: Es wurden die folgenden Dateien ignoriert:
SheetPersonalisedFilesUsersList: Liste von Teilnehmern mit personalisierten Übungsblatt-Dateien
PersonalisedSheetFilesDownloadRestrictByExamNone: Keine Einschränkung
PersonalisedSheetFilesDownloadRestrictByExam: Nur Prüfungsteilnehmer
PersonalisedSheetFilesDownloadRestrictByExamTip: Sollen nur personalisierte Übungsblatt-Dateien exportiert werden, für jene Kursteilnehmer, die auch Teilnehmer einer bestimmten Prüfung sind?
AdminCrontabNotGenerated: (Noch) keine Crontab generiert AdminCrontabNotGenerated: (Noch) keine Crontab generiert
CronMatchAsap: ASAP CronMatchAsap: ASAP

View File

@ -73,6 +73,15 @@ TableExamName: Name
TableExamTime: Time TableExamTime: Time
TableExamRegistration: Exam registration TableExamRegistration: Exam registration
TableExamResult: Exam result TableExamResult: Exam result
TableSheet: Sheet
TableLastEdit: Latest edit
TableSubmission: Submission-number
TableRating: Marking
TableFileTitle: Filename
TableFileModified: Last changed
TableCorState: State
TableCorProportion: Proportion
TableCorrector: Corrector
#headings #headings
HeadingLegal: Legal HeadingLegal: Legal
@ -83,7 +92,6 @@ HeadingProfileData: Personal information
HeadingSchoolList: Departments HeadingSchoolList: Departments
HeadingAdminCrontab: Crontab HeadingAdminCrontab: Crontab
HeadingAdminTokens: Issue tokens HeadingAdminTokens: Issue tokens
SheetPersonalisedFilesDownload: Download personalised sheet files
HeadingCorrectionsAssign: Assign corrections HeadingCorrectionsAssign: Assign corrections
HeadingUserAdd: Add user HeadingUserAdd: Add user
CorrectorsChange: Adjust correctors CorrectorsChange: Adjust correctors
@ -97,7 +105,7 @@ CourseNew: Create new course
#general warnings #general warnings
EmailInvitationWarning: This address could not be matched to any Uni2work user. An invitation will be sent via email. EmailInvitationWarning: This address could not be matched to any Uni2work user. An invitation will be sent via email.
Corrector: Corrector
FormFieldWorkflowDatasetTip: At least one of the marked fields must be filled FormFieldWorkflowDatasetTip: At least one of the marked fields must be filled
@ -161,7 +169,6 @@ ExamOccurrenceNoCapacity: Occurrence/Room has reached maximum capacity
CourseNotEmpty: There are currently no participants enrolled for this course. CourseNotEmpty: There are currently no participants enrolled for this course.
CourseApply: Apply for course CourseApply: Apply for course
FFSheetName: Name
TermCourseListHeading tid: Courses #{tid} TermCourseListHeading tid: Courses #{tid}
TermSchoolCourseListHeading tid school: Courses #{tid}, #{school} TermSchoolCourseListHeading tid school: Courses #{tid}, #{school}
@ -185,88 +192,25 @@ TutorialUsersDeregistered count: Successfully deregistered #{show count} partici
CourseRegistrationDeleteToEdit: You need to deregister and reregister to edit your registration. CourseRegistrationDeleteToEdit: You need to deregister and reregister to edit your registration.
Sheet: Sheet
SheetList tid ssh csh : #{tid}-#{ssh}-#{csh} Sheet Overview SheetList tid ssh csh : #{tid}-#{ssh}-#{csh} Sheet Overview
SheetNewHeading tid ssh csh : #{tid}-#{ssh}-#{csh} New Exercise Sheet SheetNewHeading tid ssh csh : #{tid}-#{ssh}-#{csh} New Exercise Sheet
SheetNewOk tid ssh csh sheetName: Successfully created sheet #{sheetName} in course #{tid}-#{ssh}-#{csh}. SheetTitleHead tid ssh csh sheetName: #{tid}-#{ssh}-#{csh} #{sheetName}
SheetTitle tid ssh csh sheetName: #{tid}-#{ssh}-#{csh} #{sheetName}
SheetTitleNew tid ssh csh : #{tid}-#{ssh}-#{csh}: New Exercise Sheet
SheetEditHead tid ssh csh sheetName: #{tid}-#{ssh}-#{csh} Edit #{sheetName} SheetEditHead tid ssh csh sheetName: #{tid}-#{ssh}-#{csh} Edit #{sheetName}
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}
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 #{tid}-#{ssh}-#{csh}? Any associated submissions and corrections will be lost!
SheetDelOk tid ssh csh sheetName: #{tid}-#{ssh}-#{csh}: #{sheetName} has been deleted.
SheetDelHasSubmissions objs: Incl. #{objs} #{pluralEN objs "submission" "submissions"}
SheetDeleteQuestion: Do you really want to delete the below-mentioned exercise sheet and all associated submissions?
SheetDeleted: Successfully deleted exercise sheet
SheetUploadMode: Submission of files SheetUploadMode: Submission of files
SheetSubmissionMode: Submission mode UtilSheetSubmissionMode: Submission mode
SheetExercise: Assignment UtilSheetType: Marking
SheetHint: Hint
SheetHintFrom: Hint from
SheetHintFromPlaceholder: Date, correctors only otherwise
SheetSolutionFromPlaceholder: Date, correctors only otherwise
SheetSolution: Solution
SheetSolutionFrom: Solution from
SheetMarking: Marking hints for correctors
SheetMarkingFiles: Correction
SheetType: Marking
SheetInvisible: This exercise sheet is currently invisible for participants!
SheetName: Name
SheetDescription: Description
SheetGroup: Group submission
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
SheetActiveFromParticipant: Submission period start
SheetActiveFromParticipantNoSubmit: Assignment published
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
SheetActiveFromUnset: Never
SheetActiveTo: Active to/Submission period end
SheetActiveToParticipant: Submission period end
SheetActiveToTip: Submission will only be possible until this time. If left empty submissions are allowed forever (if at all possible)
SheetActiveToUnset: Never
SheetHintFromTip: Always invisible for participants if left empty; correctors can always download hints
SheetSolutionFromTip: Always invisible for participants if left empty; correctors can always download solutions
SheetMarkingTip: Instructions for correction, visible only to correctors
SheetPseudonym: Personal pseudonym
SheetGeneratePseudonym: Generate
SheetAnonymousCorrection: Anonymized correction
SheetAnonymousCorrectionTip: If correction is anonymized, correctors cannot see which students are involved in submissions that are assigned to them (names, matriculation numbers, and registered submission groups are hidden)
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.
SheetRequiredExam: Exam
SheetShowRequiredExam: Required exam registration
SheetSubmissionExamRegistrationRequired: Registration for the specified exam is required to download files associated with this exercise sheet and to submit.
SheetFilesExamRegistrationRequired: To download files for this exercise sheet or to submit you must first register for the exam mentioned above.
SheetFilesMissingPersonalisedFiles: To submit a course administrator has to first assign you some personalised exercise sheet files.
SheetArchiveFileTypeDirectoryExercise: exercise SheetArchiveFileTypeDirectoryExercise: exercise
SheetArchiveFileTypeDirectoryHint: hint SheetArchiveFileTypeDirectoryHint: hint
SheetArchiveFileTypeDirectorySolution: solution SheetArchiveFileTypeDirectorySolution: solution
SheetArchiveFileTypeDirectoryMarking: marking SheetArchiveFileTypeDirectoryMarking: marking
SheetFormType: Valuation & submission
SheetFormTimes: Times
SheetFormFiles: Files
SheetErrVisibility: "Submission period start" must be after "Visible from"
SheetErrDeadlineEarly: "Submission period end" must be after "Submission period start"
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
SheetWarnNoActiveTo: “Active to/Submission period end” should always be specified
SheetNoCurrent: There is no currently active exercise sheet
SheetNoOldUnassigned: All submissions for inactive sheets are already assigned to correctors.
SheetsUnassignable name: Submission for #{name} may not currently be assigned to correctors. SheetsUnassignable name: Submission for #{name} may not currently be assigned to correctors.
SheetSubmissionModeNoneWithoutNotGraded: The sheet was configured to be "No submission" but not "Not marked". Course participants will not be able to submit.
Deadline: Deadline Deadline: Deadline
Done: Submitted Done: Submitted
Submission: Submission-number
SubmissionsCourse tid ssh csh: All submissions for Course #{tid}-#{ssh}-#{csh} SubmissionsCourse tid ssh csh: All submissions for Course #{tid}-#{ssh}-#{csh}
SubmissionsSheet sheetName: Submissions for #{sheetName} SubmissionsSheet sheetName: Submissions for #{sheetName}
SubmissionWrongSheet: Submission does not belong to the given sheet. SubmissionWrongSheet: Submission does not belong to the given sheet.
@ -444,16 +388,6 @@ NotAParticipant email tid csh: #{email} is not a participant of #{tid}-#{csh}.
TooManyParticipants: You have specified more than the allowed number of submittors. TooManyParticipants: You have specified more than the allowed number of submittors.
AddCorrector: Additional corrector AddCorrector: Additional corrector
CorrectorExists: User already is a corrector
SheetCorrectorsTitle tid ssh csh sheetName: Correctors for #{tid}-#{ssh}-#{csh} #{sheetName}
CountTutProp: Tutorials count against proportion
CountTutPropTip: If submissions are assigned by tutorial, do those assignments count with regard to the set proportion?
AutoAssignCorrs: Automatically assign corrections after expiration of the submission period
Corrector: Corrector
Correctors: Correctors
CorState: State
CorByTut: Assign by tutorial
CorProportion: Proportion
CorDeficitProportion: Deficit (proportion) CorDeficitProportion: Deficit (proportion)
CorByProportionOnly proportion: #{rationalToFixed3 proportion} parts CorByProportionOnly proportion: #{rationalToFixed3 proportion} parts
CorByProportionIncludingTutorial proportion: #{rationalToFixed3 proportion} parts - tutorials CorByProportionIncludingTutorial proportion: #{rationalToFixed3 proportion} parts - tutorials
@ -461,7 +395,6 @@ CorByProportionExcludingTutorial proportion: #{rationalToFixed3 proportion} part
RowCount count: #{count} matching #{pluralEN count "entry" "entries"} RowCount count: #{count} matching #{pluralEN count "entry" "entries"}
DeleteRow: Delete DeleteRow: Delete
ProportionNegative: Proportions may not be negative
CorrectorUpdated: Successfully updated corrector CorrectorUpdated: Successfully updated corrector
CorrectorsUpdated: Successfully updated correctors CorrectorsUpdated: Successfully updated correctors
CorrectorsPlaceholder: Correctors... CorrectorsPlaceholder: Correctors...
@ -587,13 +520,9 @@ NotPassed: Failed
RatingTime: Marked RatingTime: Marked
RatingComment: Comment RatingComment: Comment
SubmissionUsers: Submittors SubmissionUsers: Submittors
Rating: Marking
IsRated: Marked
SheetTypeIsExam: Rating „as an exam part“
RatingPoints: Points RatingPoints: Points
RatingDone: Rating finished RatingDone: Rating finished
RatingDoneTip: The rating is only visible to the submittors and considered for any exam bonuses if it is finished. RatingDoneTip: The rating is only visible to the submittors and considered for any exam bonuses if it is finished.
RatingPercent: Achieved
RatingFiles: Marked files RatingFiles: Marked files
RatingFilesTip: Files uploaded here completely replace any existing corrected versions (i.e. files not uploaded again are deleted). The original version as submitted will remain untouched. RatingFilesTip: Files uploaded here completely replace any existing corrected versions (i.e. files not uploaded again are deleted). The original version as submitted will remain untouched.
PointsNotPositive: Points may not be negative PointsNotPositive: Points may not be negative
@ -603,9 +532,6 @@ RatingPointsDone: Correction counts as marked iff “Points” is set
ColumnRatingPoints: Points ColumnRatingPoints: Points
Pseudonyms: Pseudonyms Pseudonyms: Pseudonyms
Files: Files
FileTitle: Filename
FileModified: Last changed
VisibleFrom: Published VisibleFrom: Published
AccessibleSince: Accessible since AccessibleSince: Accessible since
@ -701,7 +627,6 @@ IllDefinedUTCTime: The given timestamp cannot be converted to UTC
LastEdits: Latest edits LastEdits: Latest edits
EditedBy name time: #{time} by #{name} EditedBy name time: #{time} by #{name}
LastEdit: Latest edit
LastEditByUser: Your last edit LastEditByUser: Your last edit
NoEditByUser: Not edited by you NoEditByUser: Not edited by you
@ -729,8 +654,6 @@ CampusUserInvalidSex: Could not determine sex during campus login
CorrectorNormal: Normal CorrectorNormal: Normal
CorrectorMissing: Missing CorrectorMissing: Missing
CorrectorExcused: Excused CorrectorExcused: Excused
SheetCorrectorState: State
SheetCorrectorProportion: Proportion
CorrectorStateTip: Missing correctors are assigned additional corrections during later sheets. Excused correctors are not assigned any additional deficit. CorrectorStateTip: Missing correctors are assigned additional corrections during later sheets. Excused correctors are not assigned any additional deficit.
DayIsAHoliday tid name date: “#{name}” (#{date}) is a legal holiday DayIsAHoliday tid name date: “#{name}” (#{date}) is a legal holiday
@ -778,8 +701,6 @@ BothSubmissions: Submission either directly in Uni2work or externally via pseudo
BothSubmissionsTip: Participants may choose to submit either directly in Uni2work or externally via a pseudonym BothSubmissionsTip: Participants may choose to submit either directly in Uni2work or externally via a pseudonym
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.
SubmissionNoUploadExpected: No upload of files expected. SubmissionNoUploadExpected: No upload of files expected.
SubmissionReplace: Replace submission SubmissionReplace: Replace submission
SubmissionCreated: Successfully created submission SubmissionCreated: Successfully created submission
@ -942,9 +863,6 @@ InvitationFromTip displayName: You are receiving this invitation because #{displ
InvitationFromTipAnonymous: You are receiving this invitiation because an user who didn't log in has caused it to be send from within Uni2work. InvitationFromTipAnonymous: You are receiving this invitiation because an user who didn't log in has caused it to be send from within Uni2work.
InvitationUniWorXTip: Uni2work is a web based teaching management system at LMU Munich. InvitationUniWorXTip: Uni2work is a web based teaching management system at LMU Munich.
MailSubjectCorrectorInvitation tid ssh csh shn: [#{tid}-#{ssh}-#{csh}] Invitation to be a corrector for #{shn}
MailSubjectTutorInvitation tid ssh csh tutn: [#{tid}-#{ssh}-#{csh}] Invitation to be a tutor for #{tutn} MailSubjectTutorInvitation tid ssh csh tutn: [#{tid}-#{ssh}-#{csh}] Invitation to be a tutor for #{tutn}
MailSubjectSubmissionUserInvitation tid ssh csh shn: [#{tid}-#{ssh}-#{csh}] Invitation to participate in a submission for #{shn} MailSubjectSubmissionUserInvitation tid ssh csh shn: [#{tid}-#{ssh}-#{csh}] Invitation to participate in a submission for #{shn}
@ -976,7 +894,6 @@ SheetTypeInfoBonus: Sheets marked "bonus" count normally but do not increase eit
SheetTypeInfoInformational: Sheets marked "informational" do not counted anywhere. They are marked only as feedback for participants. SheetTypeInfoInformational: Sheets marked "informational" do not counted anywhere. They are marked only as feedback for participants.
SheetGradingBonusIncluded: Achieved bonus points are already counted among the achieved normal Their marking points. SheetGradingBonusIncluded: Achieved bonus points are already counted among the achieved normal Their marking points.
SummaryTitle: Summary of SummaryTitle: Summary of
SheetGradingSummaryTitle intgr: #{intgr} #{pluralEN intgr "sheet" "sheets"}
SubmissionGradingSummaryTitle intgr: #{intgr} #{pluralEN intgr "submission" "submissions"} SubmissionGradingSummaryTitle intgr: #{intgr} #{pluralEN intgr "submission" "submissions"}
SheetTypeExamPartPointsWeightNegative: Weight may not be negative SheetTypeExamPartPointsWeightNegative: Weight may not be negative
SheetTypeExamPartPointsWeight: Weight SheetTypeExamPartPointsWeight: Weight
@ -997,16 +914,6 @@ SheetGroupRegisteredGroups: Registered groups
SheetGroupNoGroups: No group submission SheetGroupNoGroups: No group submission
SheetGroupMaxGroupsize: Maximum group size SheetGroupMaxGroupsize: Maximum group size
SheetFiles: Exercise sheet files
SheetFileTypeHeader: Belongs to
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}
CorrCreate: Register submissions CorrCreate: Register submissions
UnknownPseudonymWord pseudonymWord: Invalid pseudonym-word “#{pseudonymWord}” UnknownPseudonymWord pseudonymWord: Invalid pseudonym-word “#{pseudonymWord}”
InvalidPseudonym pseudonym: Invalid pseudonym “#{pseudonym}” InvalidPseudonym pseudonym: Invalid pseudonym “#{pseudonym}”
@ -1170,10 +1077,8 @@ MultiUserFieldInvitationExplanationAlways: An invitation will be sent via email
LecturerInvitationAccepted lType csh: You were registered as #{lType} for #{csh} LecturerInvitationAccepted lType csh: You were registered as #{lType} for #{csh}
LecturerInvitationDeclined csh: You have declined the invitation to become course administrator for #{csh} LecturerInvitationDeclined csh: You have declined the invitation to become course administrator for #{csh}
CorrectorInvitationAccepted shn: You are now a corrector for #{shn} TutorCorrectorInvitationAccepted shn: You are now a corrector for #{shn}
CorrectorInvitationDeclined shn: You have declined the invitation to be a corrector for #{shn} CorrectorInvitationDeclined shn: You have declined the invitation to be a corrector for #{shn}
SheetCorrInviteHeading shn: Invitation to be a corrector for #{shn}
SheetCorrInviteExplanation: You were invited to be a sheet corrector.
TutorInvitationAccepted tutn: You are now tutor for #{tutn} TutorInvitationAccepted tutn: You are now tutor for #{tutn}
TutorInvitationDeclined tutn: You have declined the invitation to be a tutor for #{tutn} TutorInvitationDeclined tutn: You have declined the invitation to be a tutor for #{tutn}
@ -1803,31 +1708,10 @@ SubmissionDoneAlways: Always
CorrUploadSubmissionDoneMode: Rating finished CorrUploadSubmissionDoneMode: Rating finished
CorrUploadSubmissionDoneModeTip: Should uploaded corrections be marked as finished? The rating is only visible to the submittors and considered for any exam bonuses if it is finished. CorrUploadSubmissionDoneModeTip: Should uploaded corrections be marked as finished? The rating is only visible to the submittors and considered for any exam bonuses if it is finished.
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.
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?
SheetPersonalisedFilesDownloadTemplateHere: You can download a template for a ZIP-archive of personalised sheet files with the structure that Uni2work expects here:
PersonalisedSheetFilesDownloadAnonymous: Anonymised PersonalisedSheetFilesDownloadAnonymous: Anonymised
PersonalisedSheetFilesDownloadSurnames: With surnames PersonalisedSheetFilesDownloadSurnames: With surnames
PersonalisedSheetFilesDownloadMatriculations: With matriculation numbers PersonalisedSheetFilesDownloadMatriculations: With matriculation numbers
PersonalisedSheetFilesDownloadGroups: With registered submission groups PersonalisedSheetFilesDownloadGroups: With registered submission groups
CoursePersonalisedSheetFilesArchiveName tid ssh csh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-personalised_files
PersonalisedSheetFilesArchiveName tid ssh csh shn: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-personalised_files
PersonalisedSheetFilesMetaFilename uid: meta-information_#{toPathPiece uid}.yaml
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?
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.
PersonalisedSheetFilesIgnoredIntro: The following files were ignored:
SheetPersonalisedFilesUsersList: List of course participants who have personalised sheet files
PersonalisedSheetFilesDownloadRestrictByExamNone: No restriction
PersonalisedSheetFilesDownloadRestrictByExam: Restrict to exam participants
PersonalisedSheetFilesDownloadRestrictByExamTip: Only download personalised sheet files for participants also registered to a certain exam?
AdminCrontabNotGenerated: Crontab not (yet) generated AdminCrontabNotGenerated: Crontab not (yet) generated
CronMatchAsap: ASAP CronMatchAsap: ASAP
@ -1837,8 +1721,6 @@ SystemExamOffice: Exam office
SystemFaculty: Faculty member SystemFaculty: Faculty member
SystemStudent: Student SystemStudent: Student
ChangelogItemFeature: Feature ChangelogItemFeature: Feature
ChangelogItemBugfix: Bugfix ChangelogItemBugfix: Bugfix

View File

@ -257,3 +257,5 @@ CourseApplicationsTableCsvSetComment: Kommentar hinzufügen
CourseApplicationsTableCsvExceptionNoMatchingUser: Kein:e passende:r Benutzer:in CourseApplicationsTableCsvExceptionNoMatchingUser: Kein:e passende:r Benutzer:in
CourseApplicationsTableCsvExceptionNoMatchingAllocation: Keine passende Bewerbung CourseApplicationsTableCsvExceptionNoMatchingAllocation: Keine passende Bewerbung
CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: Kein passendes Studienfach CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: Kein passendes Studienfach
CoursePersonalisedSheetFilesArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-personalisierte_dateien

View File

@ -256,3 +256,5 @@ CourseApplicationsTableCsvSetComment: Set comment
CourseApplicationsTableCsvExceptionNoMatchingUser: No matching user CourseApplicationsTableCsvExceptionNoMatchingUser: No matching user
CourseApplicationsTableCsvExceptionNoMatchingAllocation: No matching allocation CourseApplicationsTableCsvExceptionNoMatchingAllocation: No matching allocation
CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: no matching study features CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: no matching study features
CoursePersonalisedSheetFilesArchiveName tid ssh csh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-personalised_files

View File

@ -0,0 +1,109 @@
MailSubjectCorrectorInvitation tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName: [#{tid}-#{ssh}-#{csh}] Einladung zum Korrektor/zur Korrektorin für #{shn}
SheetCorrInviteHeading shn@SheetName: Einladung zum Korrektor/zur Korrektorin für #{shn}
SheetCorrInviteExplanation: Sie wurden eingeladen, Korrektor:in für ein Übungsblatt zu sein.
CorrectorInvitationAccepted shn@SheetName: Sie wurden als Korrektor:in für #{shn} eingetragen
SheetNoCurrent: Es gibt momentan kein aktives Übungsblatt.
SheetNoOldUnassigned: Alle Abgaben inaktiver Blätter sind bereits einem Korrektor/einer Korrektorin zugeteilt.
SheetDelHasSubmissions objs@Int: Inkl. #{objs} #{pluralDE objs "Abgabe" "Abgaben"}!
SheetDeleteQuestion: Wollen Sie das unten aufgeführte Übungsblatt und alle zugehörigen Abgaben wirklich löschen?
SheetDeleted: Übungsblatt gelöscht
SheetArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}
SheetTypeArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName renderedSft@Text: #{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}
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
SheetActiveTo: Aktiv bis/Ende Abgabezeitraum
SheetSolutionFrom: Lösung ab
SheetSolutionFromTip: Ohne Datum nie für Teilnehmer:innen sichtbar, Korrektor:innen können diese Dateien immer herunterladen
SheetTitle tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh} #{sheetName}
SheetTitleNew tid@TermId ssh@SchoolId csh@CourseShorthand : #{tid}-#{ssh}-#{csh}: Neues Übungsblatt
SheetName: 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.
SheetRequiredExam: Prüfung
SheetFormType: Wertung & Abgabe
SheetFormTimes: Zeiten
SheetFormFiles: Dateien
SheetExercise: Aufgabenstellung
SheetHint: Hinweis
SheetSolutionFromPlaceholder: Datum, sonst nur für Korrektor:innen
SheetSolution: Lösung
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.
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.
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?
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
SheetActiveFromTip: Download der Aufgabenstellung und Abgabe erst ab diesem Datum möglich. Ohne Datum keine Abgabe und keine Herausgabe der Aufgabenstellung
SheetActiveToTip: Abgabe nur bis zu diesem Datum möglich. Ohne Datum unbeschränkte Abgabe möglich (soweit gefordert).
SheetHintFrom: Hinweis ab
SheetHintFromPlaceholder: Datum, sonst nur für Korrektor:innen
SheetHintFromTip: Ohne Datum nie für Teilnehmer:innen sichtbar, Korrektor:innen können diese Dateien immer herunterladen
SheetGroup: Gruppenabgabe
AutoAssignCorrs: Korrekturen nach Ablauf des Abgabezeitraums automatisch zuteilen
SheetMarking: Hinweise für Korrektor:innen
SheetAnonymousCorrection: Anonymisierte Korrektur
SheetAnonymousCorrectionTip: Wenn die Korrektur anonymisiert erfolgt, können Korrektor:innen die ihnen zugeteilten Abgaben nicht bestimmten Studierenden zuordnen (Name, Matrikelnummer und feste Abgabegruppe der Abgebenden werden versteckt)
SheetErrVisibility: "Aktiv ab/Beginn Abgabezeitraum" muss nach "Sichbar für Teilnehmer:in ab" liegen
SheetErrDeadlineEarly: "Aktiv bis/Ende Abgabezeitraum" muss nach "Aktiv ab/Beginn Abzeitraum" liegen
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.
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?
SheetCorrector: Korrektor
CorrectorExists: Nutzer:in ist bereits als Korrektor:in eingetragen
SheetCorrectorState: Status
ProportionNegative: Anteile dürfen nicht negativ sein
SheetCorrectorProportion: Anteil
Correctors: Korrektor:innen
SheetAccessibleSince: Verfügbar seit
Files: Dateien
SheetSheetType: Wertung
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"}.
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?
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?
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
RatingAchievedOf achieved@Points possible@Points: #{achieved} von #{possible}
RatingPassed: Bestanden
RatingNotPassed: Nicht bestanden
SheetInvisible: Dieses Übungsblatt ist für Teilnehmer:innen momentan unsichtbar!
SheetActiveFromParticipant: Beginn Abgabezeitraum
SheetActiveFromParticipantNoSubmit: Herausgabe der Aufgabestellung
SheetActiveFromUnset: Nie
SheetActiveToParticipant: Ende Abgabezeitraum
SheetActiveToUnset: Nie
SheetShowRequiredExam: Vorausgesetze Prüfungsanmeldung
SheetSubmissionExamRegistrationRequired: Um die Angabe für dieses Übungsblatt herunterzuladen oder Abzugeben ist eine Anmeldung zur genannten Prüfung erforderlich.
SheetFilesExamRegistrationRequired: Um die Dateien dieses Übungsblattes herunterzuladen oder Abzugeben ist eine Anmeldung zu der oben genannten Prüfung erforderlich.
SheetFilesMissingPersonalisedFiles: Um abzugeben muss zunächst ein Kursverwalter/eine Kursverwalterin personalisierte Übungsblatt-Dateien für Sie hinterlegen.
SheetSubmissionMode: Abgabe-Modus
SheetType: Wertung
SheetPseudonym: Persönliches Abgabe-Pseudonym
SheetFiles: Übungsblatt-Dateien
SheetPersonalisedSheetFilesArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-personalisierte_dateien

View File

@ -0,0 +1,110 @@
MailSubjectCorrectorInvitation tid ssh csh shn: [#{tid}-#{ssh}-#{csh}] Invitation to be a corrector for #{shn}
SheetCorrInviteHeading shn: Invitation to be a corrector for #{shn}
SheetCorrInviteExplanation: You were invited to be a sheet corrector.
CorrectorInvitationAccepted shn: You are now a corrector for #{shn}
SheetNoCurrent: There is no currently active exercise sheet
SheetNoOldUnassigned: All submissions for inactive sheets are already assigned to correctors.
SheetDelHasSubmissions objs: Incl. #{objs} #{pluralEN objs "submission" "submissions"}
SheetDeleteQuestion: Do you really want to delete the below-mentioned exercise sheet and all associated submissions?
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}
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
SheetActiveTo: Active to/Submission period end
SheetSolutionFrom: Solution from
SheetSolutionFromTip: Always invisible for participants if left empty; correctors can always download solutions
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.
SheetRequiredExam: Exam
SheetFormType: Valuation & submission
SheetFormTimes: Times
SheetFormFiles: Files
SheetExercise: Assignment
SheetHint: Hint
SheetSolutionFromPlaceholder: Date, correctors only otherwise
SheetSolution: Solution
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.
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?
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
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
SheetActiveToTip: Submission will only be possible until this time. If left empty submissions are allowed forever (if at all possible)
SheetHintFrom: Hint from
SheetHintFromPlaceholder: Date, correctors only otherwise
SheetHintFromTip: Always invisible for participants if left empty; correctors can always download hints
SheetGroup: Group submission
AutoAssignCorrs: Automatically assign corrections after expiration of the submission period
SheetMarking: Marking hints for correctors
SheetAnonymousCorrection: Anonymized correction
SheetAnonymousCorrectionTip: If correction is anonymized, correctors cannot see which students are involved in submissions that are assigned to them (names, matriculation numbers, and registered submission groups are hidden)
SheetErrVisibility: "Submission period start" must be after "Visible from"
SheetErrDeadlineEarly: "Submission period end" must be after "Submission period start"
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.
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?
SheetCorrector: Corrector
CorrectorExists: User already is a corrector
SheetCorrectorState: State
ProportionNegative: Proportions may not be negative
SheetCorrectorProportion: Proportion
Correctors: Correctors
SheetAccessibleSince: Accessible since
Files: Files
SheetSheetType: Marking
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.
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?
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
RatingAchievedOf achieved possible: #{achieved} of #{possible}
RatingPassed: Passed
RatingNotPassed: Failed
SheetInvisible: This exercise sheet is currently invisible for participants!
SheetActiveFromParticipant: Submission period start
SheetActiveFromParticipantNoSubmit: Assignment published
SheetActiveFromUnset: Never
SheetActiveToParticipant: Submission period end
SheetActiveToUnset: Never
SheetShowRequiredExam: Required exam registration
SheetSubmissionExamRegistrationRequired: Registration for the specified exam is required to download files associated with this exercise sheet and to submit.
SheetFilesExamRegistrationRequired: To download files for this exercise sheet or to submit you must first register for the exam mentioned above.
SheetFilesMissingPersonalisedFiles: To submit a course administrator has to first assign you some personalised exercise sheet files.
SheetSubmissionMode: Submission mode
SheetType: Marking
SheetPseudonym: Personal pseudonym
SheetFiles: Exercise sheet files
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
SheetPersonalisedSheetFilesArchiveName tid ssh csh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-personalised_files

View File

@ -6,6 +6,7 @@ module Foundation.I18n
, UniWorXMessage(..), UniWorXTestMessage(..), UniWorXSettingsMessage(..) , UniWorXMessage(..), UniWorXTestMessage(..), UniWorXSettingsMessage(..)
, UniWorXHelpMessage(..), UniWorXNavigationMessage(..), UniWorXWorkflowMessage(..) , UniWorXHelpMessage(..), UniWorXNavigationMessage(..), UniWorXWorkflowMessage(..)
, UniWorXCourseMessage(..), UniWorXAllocationMessage(..), UniWorXExamMessage(..) , UniWorXCourseMessage(..), UniWorXAllocationMessage(..), UniWorXExamMessage(..)
, UniWorXSheetMessage(..)
, ShortTermIdentifier(..) , ShortTermIdentifier(..)
, MsgLanguage(..) , MsgLanguage(..)
, ShortSex(..) , ShortSex(..)
@ -142,6 +143,7 @@ mkMessageAddition ''UniWorX "Workflow" "messages/uniworx/uniworx_new/workflows"
mkMessageAddition ''UniWorX "Course" "messages/uniworx/uniworx_new/courses" "de-de-formal" mkMessageAddition ''UniWorX "Course" "messages/uniworx/uniworx_new/courses" "de-de-formal"
mkMessageAddition ''UniWorX "Allocation" "messages/uniworx/uniworx_new/allocation" "de-de-formal" mkMessageAddition ''UniWorX "Allocation" "messages/uniworx/uniworx_new/allocation" "de-de-formal"
mkMessageAddition ''UniWorX "Exam" "messages/uniworx/uniworx_new/exam" "de-de-formal" mkMessageAddition ''UniWorX "Exam" "messages/uniworx/uniworx_new/exam" "de-de-formal"
mkMessageAddition ''UniWorX "Sheet" "messages/uniworx/uniworx_new/sheet" "de-de-formal"
mkMessageVariant ''UniWorX ''CampusMessage "messages/auth/campus" "de" mkMessageVariant ''UniWorX ''CampusMessage "messages/auth/campus" "de"
mkMessageVariant ''UniWorX ''DummyMessage "messages/auth/dummy" "de" mkMessageVariant ''UniWorX ''DummyMessage "messages/auth/dummy" "de"
mkMessageVariant ''UniWorX ''PWHashMessage "messages/auth/pw-hash" "de" mkMessageVariant ''UniWorX ''PWHashMessage "messages/auth/pw-hash" "de"

View File

@ -546,7 +546,7 @@ pageHeading (CourseR tid ssh csh SheetListR)
pageHeading (CourseR tid ssh csh SheetNewR) pageHeading (CourseR tid ssh csh SheetNewR)
= Just $ i18n $ MsgSheetNewHeading tid ssh csh = Just $ i18n $ MsgSheetNewHeading tid ssh csh
pageHeading (CSheetR tid ssh csh shn SShowR) pageHeading (CSheetR tid ssh csh shn SShowR)
= Just $ i18n $ MsgSheetTitle tid ssh csh shn = Just $ i18n $ MsgSheetTitleHead tid ssh csh shn
-- = Just $ i18n $ prependCourseTitle tid ssh csh $ SomeMessage shn -- TODO: for consistency use prependCourseTitle throughout ERROR: circularity -- = Just $ i18n $ prependCourseTitle tid ssh csh $ SomeMessage shn -- TODO: for consistency use prependCourseTitle throughout ERROR: circularity
pageHeading (CSheetR tid ssh csh shn SEditR) pageHeading (CSheetR tid ssh csh shn SEditR)
= Just $ i18n $ MsgSheetEditHead tid ssh csh shn = Just $ i18n $ MsgSheetEditHead tid ssh csh shn

View File

@ -259,11 +259,11 @@ courseUserSubmissionsSection (Entity cid Course{..}) (Entity uid _) = do
[ prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgCourseCourseMembers) [ prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgCourseCourseMembers)
, prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgTableMatrikelNr) , prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgTableMatrikelNr)
-- "pseudonym" TODO DB only stores Word24 -- "pseudonym" TODO DB only stores Word24
, Map.singleton "sheet-search" . maybeToList <$> aopt textField (fslI MsgSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev))) , Map.singleton "sheet-search" . maybeToList <$> aopt textField (fslI MsgTableSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev)))
, prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgCorrector) , prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgTableCorrector)
, prismAForm (singletonFilter "isassigned" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgHasCorrector) , prismAForm (singletonFilter "isassigned" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgHasCorrector)
, prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime) , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime)
, prismAForm (singletonFilter "submission") mPrev $ aopt (lift `hoistField` textField) (fslI MsgSubmission) , prismAForm (singletonFilter "submission") mPrev $ aopt (lift `hoistField` textField) (fslI MsgTableSubmission)
] ]
psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway
(cWdgt, statistics) <- lift . correctionsR' whereClause colonnade filterUI psValidator $ Map.fromList (cWdgt, statistics) <- lift . correctionsR' whereClause colonnade filterUI psValidator $ Map.fromList

View File

@ -126,7 +126,7 @@ getMaterialListR tid ssh csh = do
| otherwise -> anchorCell (filesLink materialName) iconFileDownload | otherwise -> anchorCell (filesLink materialName) iconFileDownload
, sortable (Just "visible-from") (i18nCell MsgAccessibleSince) , sortable (Just "visible-from") (i18nCell MsgAccessibleSince)
$ foldMap (dateTimeCellVisible now) . materialVisibleFrom . row2material $ foldMap (dateTimeCellVisible now) . materialVisibleFrom . row2material
, sortable (Just "last-edit") (i18nCell MsgFileModified) , sortable (Just "last-edit") (i18nCell MsgTableFileModified)
$ if seeAllModificationTimestamps $ if seeAllModificationTimestamps
then dateTimeCell . materialLastEdit . row2material then dateTimeCell . materialLastEdit . row2material
else materialModDateCell . row2material else materialModDateCell . row2material
@ -220,7 +220,7 @@ getMShowR tid ssh csh mnm = do
return matFile return matFile
, dbtRowKey = (E.^. MaterialFileId) , dbtRowKey = (E.^. MaterialFileId)
, dbtColonnade = widgetColonnade $ mconcat , dbtColonnade = widgetColonnade $ mconcat
[ fmap (<> indicatorCell) . sortable (Just "path") (i18nCell MsgFileTitle) $ \(dbrOutput -> Entity mfId MaterialFile{..}) [ fmap (<> indicatorCell) . sortable (Just "path") (i18nCell MsgTableFileTitle) $ \(dbrOutput -> Entity mfId MaterialFile{..})
-> let matLink -> let matLink
| isVideo | isVideo
= CourseR tid ssh csh . MaterialR mnm . MVideoR <$> encrypt mfId = CourseR tid ssh csh . MaterialR mnm . MVideoR <$> encrypt mfId

View File

@ -142,7 +142,7 @@ newsUpcomingSheets uid = do
textCell $ toMessage ssh textCell $ toMessage ssh
, sortable (Just "course") (i18nCell MsgTableCourse) $ \DBRow{ dbrOutput=(E.Value tid, E.Value ssh, E.Value csh, _, _, _) } -> , sortable (Just "course") (i18nCell MsgTableCourse) $ \DBRow{ dbrOutput=(E.Value tid, E.Value ssh, E.Value csh, _, _, _) } ->
anchorCell (CourseR tid ssh csh CShowR) csh anchorCell (CourseR tid ssh csh CShowR) csh
, sortable (Just "sheet") (i18nCell MsgSheet) $ \DBRow{ dbrOutput=(E.Value tid, E.Value ssh, E.Value csh, E.Value shn, _, _) } -> , sortable (Just "sheet") (i18nCell MsgTableSheet) $ \DBRow{ dbrOutput=(E.Value tid, E.Value ssh, E.Value csh, E.Value shn, _, _) } ->
anchorCell (CSheetR tid ssh csh shn SShowR) shn anchorCell (CSheetR tid ssh csh shn SShowR) shn
, sortable (Just "deadline") (i18nCell MsgDeadline) $ \DBRow{ dbrOutput=(_, _, _, _, E.Value mDeadline, _) } -> , sortable (Just "deadline") (i18nCell MsgDeadline) $ \DBRow{ dbrOutput=(_, _, _, _, E.Value mDeadline, _) } ->
maybe mempty (cell . formatTimeW SelFormatDateTime) mDeadline maybe mempty (cell . formatTimeW SelFormatDateTime) mDeadline

View File

@ -633,10 +633,10 @@ mkSubmissionTable =
<*> view _2 <*> view _2
, sortable (Just "course") (i18nCell MsgTableCourse) $ , sortable (Just "course") (i18nCell MsgTableCourse) $
courseCellCL <$> view (_dbrOutput . _1) courseCellCL <$> view (_dbrOutput . _1)
, sortable (Just "sheet") (i18nCell MsgSheet) . magnify _dbrOutput $ , sortable (Just "sheet") (i18nCell MsgTableSheet) . magnify _dbrOutput $
sheetCell <$> view _1 sheetCell <$> view _1
<*> view _2 <*> view _2
, sortable (toNothingS "submission") (i18nCell MsgSubmission) . magnify _dbrOutput $ , sortable (toNothingS "submission") (i18nCell MsgTableSubmission) . magnify _dbrOutput $
submissionCell <$> view _1 submissionCell <$> view _1
<*> view _2 <*> view _2
<*> view (_3 . _entityKey) <*> view (_3 . _entityKey)
@ -775,15 +775,15 @@ mkCorrectionsTable =
schoolCellCL <$> view (_dbrOutput . _1) schoolCellCL <$> view (_dbrOutput . _1)
, sortable (Just "course") (i18nCell MsgTableCourse) $ , sortable (Just "course") (i18nCell MsgTableCourse) $
courseCellCL <$> view (_dbrOutput . _1) courseCellCL <$> view (_dbrOutput . _1)
, sortable (Just "sheet") (i18nCell MsgSheet) . magnify _dbrOutput $ , sortable (Just "sheet") (i18nCell MsgTableSheet) . magnify _dbrOutput $
sheetCell <$> view _1 <*> view _2 sheetCell <$> view _1 <*> view _2
, sortable (Just "cstate") (i18nCell MsgCorState) $ , sortable (Just "cstate") (i18nCell MsgTableCorState) $
correctorStateCell <$> view (_dbrOutput . _3 . _entityVal) correctorStateCell <$> view (_dbrOutput . _3 . _entityVal)
, sortable (toNothing "cload") (i18nCell MsgCorProportion) $ , sortable (toNothing "cload") (i18nCell MsgTableCorProportion) $
correctorLoadCell <$> view (_dbrOutput . _3 . _entityVal) correctorLoadCell <$> view (_dbrOutput . _3 . _entityVal)
, sortable (toNothing "assigned") (i18nCell MsgCorProportion) $ , sortable (toNothing "assigned") (i18nCell MsgTableCorProportion) $
int64Cell <$> view (_dbrOutput . _4 . _1 . _Value) int64Cell <$> view (_dbrOutput . _4 . _1 . _Value)
, sortable (toNothing "corrected") (i18nCell MsgCorProportion) $ , sortable (toNothing "corrected") (i18nCell MsgTableCorProportion) $
int64Cell <$> view (_dbrOutput . _4 . _2 . _Value) int64Cell <$> view (_dbrOutput . _4 . _2 . _Value)
] ]

View File

@ -93,7 +93,7 @@ makeSheetForm cId msId template = identifyForm FIDsheet . validateForm validateS
<* aformSection MsgSheetFormType <* aformSection MsgSheetFormType
<*> submissionModeForm ((sfSubmissionMode <$> template) <|> pure (SubmissionMode False . Just $ UploadAny True defaultExtensionRestriction False)) <*> submissionModeForm ((sfSubmissionMode <$> template) <|> pure (SubmissionMode False . Just $ UploadAny True defaultExtensionRestriction False))
<*> sheetGroupAFormReq (fslI MsgSheetGroup) ((sfGrouping <$> template) <|> pure NoGroups) <*> sheetGroupAFormReq (fslI MsgSheetGroup) ((sfGrouping <$> template) <|> pure NoGroups)
<*> sheetTypeAFormReq cId (fslI MsgSheetType) (sfType <$> template) <*> sheetTypeAFormReq cId (fslI MsgSheetSheetType) (sfType <$> template)
<*> apopt checkBoxField (fslI MsgAutoAssignCorrs) (sfAutoDistribute <$> template) <*> apopt checkBoxField (fslI MsgAutoAssignCorrs) (sfAutoDistribute <$> template)
<*> aopt htmlField (fslI MsgSheetMarking) (sfMarkingText <$> template) <*> aopt htmlField (fslI MsgSheetMarking) (sfMarkingText <$> template)
<*> apopt checkBoxField (fslI MsgSheetAnonymousCorrection & setTooltip MsgSheetAnonymousCorrectionTip) (sfAnonymousCorrection <$> template) <*> apopt checkBoxField (fslI MsgSheetAnonymousCorrection & setTooltip MsgSheetAnonymousCorrectionTip) (sfAnonymousCorrection <$> template)
@ -186,7 +186,7 @@ correctorForm loads' = wFormToAForm $ do
-> FieldView UniWorX -> FieldView UniWorX
-> Maybe (Form (Map ListPosition (Either UserEmail UserId) -> FormResult (Map ListPosition (Either UserEmail UserId)))) -> Maybe (Form (Map ListPosition (Either UserEmail UserId) -> FormResult (Map ListPosition (Either UserEmail UserId))))
miAdd _ _ nudge submitView = Just $ \csrf -> do miAdd _ _ nudge submitView = Just $ \csrf -> do
(addRes, addView) <- mpreq (multiUserInvitationField . MUILookupAnyUser $ Just previousCorrectors) (fslpI MsgCorrector (mr MsgLdapIdentificationOrEmail) & setTooltip MsgMultiEmailFieldTip & addName (nudge "corrector")) Nothing (addRes, addView) <- mpreq (multiUserInvitationField . MUILookupAnyUser $ Just previousCorrectors) (fslpI MsgSheetCorrector (mr MsgLdapIdentificationOrEmail) & setTooltip MsgMultiEmailFieldTip & addName (nudge "corrector")) Nothing
let addRes' = addRes <&> \nCorrs oldData@(maybe 0 (succ . fst) . Map.lookupMax -> kStart) -> if let addRes' = addRes <&> \nCorrs oldData@(maybe 0 (succ . fst) . Map.lookupMax -> kStart) -> if
| existing <- Set.intersection nCorrs . Set.fromList $ Map.elems oldData | existing <- Set.intersection nCorrs . Set.fromList $ Map.elems oldData
, not $ null existing , not $ null existing

View File

@ -47,11 +47,11 @@ getSheetListR tid ssh csh = do
sheetCol = widgetColonnade . mconcat $ sheetCol = widgetColonnade . mconcat $
[ -- dbRow , [ -- dbRow ,
sortable (Just "name") (i18nCell MsgSheet) sortable (Just "name") (i18nCell MsgTableSheet)
$ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> anchorCell (CSheetR tid ssh csh sheetName SShowR) sheetName $ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> anchorCell (CSheetR tid ssh csh sheetName SShowR) sheetName
, sortable (Just "last-edit") (i18nCell MsgLastEdit) , sortable (Just "last-edit") (i18nCell MsgTableLastEdit)
$ \DBRow{dbrOutput=(_, E.Value mEditTime, _, _)} -> foldMap dateTimeCell mEditTime $ \DBRow{dbrOutput=(_, E.Value mEditTime, _, _)} -> foldMap dateTimeCell mEditTime
, sortable (Just "visible-from") (i18nCell MsgAccessibleSince) , sortable (Just "visible-from") (i18nCell MsgSheetAccessibleSince)
$ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> foldMap (dateTimeCellVisible now) sheetVisibleFrom $ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> foldMap (dateTimeCellVisible now) sheetVisibleFrom
, sortable (toNothing "downloads") (i18nCell MsgFiles) , sortable (toNothing "downloads") (i18nCell MsgFiles)
$ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, existFiles)} -> listCell $ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, existFiles)} -> listCell
@ -68,11 +68,11 @@ getSheetListR tid ssh csh = do
$ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> maybe mempty dateTimeCell sheetActiveFrom $ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> maybe mempty dateTimeCell sheetActiveFrom
, sortable (Just "submission-until") (i18nCell MsgSheetActiveTo) , sortable (Just "submission-until") (i18nCell MsgSheetActiveTo)
$ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> maybe mempty dateTimeCell sheetActiveTo $ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> maybe mempty dateTimeCell sheetActiveTo
, sortable Nothing (i18nCell MsgSheetType) $ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> cell $ do , sortable Nothing (i18nCell MsgSheetSheetType) $ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, _, _)} -> cell $ do
sheetTypeDesc <- liftHandler . runDB $ sheetTypeDescription sheetCourse sheetType sheetTypeDesc <- liftHandler . runDB $ sheetTypeDescription sheetCourse sheetType
tr <- getTranslate tr <- getTranslate
toWidget $ sheetTypeDesc tr toWidget $ sheetTypeDesc tr
, sortable Nothing (i18nCell MsgSubmission) , sortable Nothing (i18nCell MsgTableSubmission)
$ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, mbSub, _)} -> case mbSub of $ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, mbSub, _)} -> case mbSub of
Nothing -> mempty Nothing -> mempty
(Just (Entity sid Submission{})) -> (Just (Entity sid Submission{})) ->
@ -81,7 +81,7 @@ getSheetListR tid ssh csh = do
cid' <- mkCid cid' <- mkCid
return $ CSubmissionR tid ssh csh sheetName cid' SubShowR return $ CSubmissionR tid ssh csh sheetName cid' SubShowR
in anchorCellM mkRoute (mkCid >>= \cid2 -> [whamlet|#{cid2}|]) in anchorCellM mkRoute (mkCid >>= \cid2 -> [whamlet|#{cid2}|])
, sortable (Just "rating") (i18nCell MsgRating) , sortable (Just "rating") (i18nCell MsgTableRating)
$ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, mbSub,_)} -> $ \DBRow{dbrOutput=(Entity _ Sheet{..}, _, mbSub,_)} ->
let stats = sheetTypeSum sheetType in -- for statistics over all shown rows let stats = sheetTypeSum sheetType in -- for statistics over all shown rows
case mbSub of case mbSub of

View File

@ -396,7 +396,7 @@ getPersonalFilesR cId mbsid = do
formResult psfRes $ \PersonalisedSheetFilesForm{..} -> do formResult psfRes $ \PersonalisedSheetFilesForm{..} -> do
archiveName <- fmap (flip addExtension (unpack extensionZip) . unpack) . ap getMessageRender . pure $ case mbSheet of archiveName <- fmap (flip addExtension (unpack extensionZip) . unpack) . ap getMessageRender . pure $ case mbSheet of
Nothing -> MsgCoursePersonalisedSheetFilesArchiveName courseTerm courseSchool courseShorthand Nothing -> MsgSheetPersonalisedSheetFilesArchiveName courseTerm courseSchool courseShorthand
Just Sheet{..} -> MsgPersonalisedSheetFilesArchiveName courseTerm courseSchool courseShorthand sheetName Just Sheet{..} -> MsgPersonalisedSheetFilesArchiveName courseTerm courseSchool courseShorthand sheetName
sendResponse <=< serveZipArchive' archiveName $ sourcePersonalisedSheetFiles cId mbsid Nothing psffAnonymous psffRestrictions sendResponse <=< serveZipArchive' archiveName $ sourcePersonalisedSheetFiles cId mbsid Nothing psffAnonymous psffRestrictions

View File

@ -56,12 +56,12 @@ getSShowR tid ssh csh shn = do
-- i18nCell ftype & cellContents %~ (\act -> act <* tell (Any True)) -- i18nCell ftype & cellContents %~ (\act -> act <* tell (Any True))
-- , colFilePath (view _1) (\row -> let fType = view _3 row in let fName = view _1 row in (CSheetR tid ssh csh shn (SFileR (E.unValue fType) (E.unValue fName)))) -- , colFilePath (view _1) (\row -> let fType = view _3 row in let fName = view _1 row in (CSheetR tid ssh csh shn (SFileR (E.unValue fType) (E.unValue fName))))
, sortable (Just "path") (i18nCell MsgFileTitle) $ \(E.Value fName, _, E.Value fType, _) -> anchorCell , sortable (Just "path") (i18nCell MsgTableFileTitle) $ \(E.Value fName, _, E.Value fType, _) -> anchorCell
(CSheetR tid ssh csh shn $ SFileR fType fName) (CSheetR tid ssh csh shn $ SFileR fType fName)
(str2widget fName) (str2widget fName)
, sortable (toNothing "visible") (i18nCell MsgVisibleFrom) , sortable (toNothing "visible") (i18nCell MsgSheetVisibleFrom)
$ \(_, _ , E.Value ftype, _) -> sftVisible ftype $ \(_, _ , E.Value ftype, _) -> sftVisible ftype
, sortable (Just "time") (i18nCell MsgFileModified) , sortable (Just "time") (i18nCell MsgTableFileModified)
$ \(_,E.Value modified, E.Value ftype, _) -> sftModification ftype modified $ \(_,E.Value modified, E.Value ftype, _) -> sftModification ftype modified
-- , colFileModification (view _2) -- , colFileModification (view _2)
] ]

View File

@ -37,7 +37,7 @@ postSubAssignR tid ssh csh shn cID = do
$logDebugS "SubAssignR" $ tshow currentCorrector $logDebugS "SubAssignR" $ tshow currentCorrector
let correctorField = selectField $ optionsPersistCryptoId [UserId <-. sheetCorrectors] [Asc UserSurname, Asc UserDisplayName] userDisplayName let correctorField = selectField $ optionsPersistCryptoId [UserId <-. sheetCorrectors] [Asc UserSurname, Asc UserDisplayName] userDisplayName
((corrResult, corrForm'), corrEncoding) <- runFormPost . renderAForm FormStandard $ ((corrResult, corrForm'), corrEncoding) <- runFormPost . renderAForm FormStandard $
aopt correctorField (fslI MsgCorrector) (Just currentCorrector) aopt correctorField (fslI MsgTableCorrector) (Just currentCorrector)
formResult corrResult $ \(fmap entityKey -> mbUserId) -> do formResult corrResult $ \(fmap entityKey -> mbUserId) -> do
when (mbUserId /= fmap entityKey currentCorrector) . runDB $ do when (mbUserId /= fmap entityKey currentCorrector) . runDB $ do
now <- liftIO getCurrentTime now <- liftIO getCurrentTime

View File

@ -41,7 +41,7 @@ postCorrectionsGradeR = do
[ prismAForm (singletonFilter "course" ) mPrev $ aopt (lift `hoistField` selectField courseOptions) (fslI MsgTableCourse) [ prismAForm (singletonFilter "course" ) mPrev $ aopt (lift `hoistField` selectField courseOptions) (fslI MsgTableCourse)
, prismAForm (singletonFilter "term" ) mPrev $ aopt (lift `hoistField` selectField termOptions) (fslI MsgTableTerm) , prismAForm (singletonFilter "term" ) mPrev $ aopt (lift `hoistField` selectField termOptions) (fslI MsgTableTerm)
, prismAForm (singletonFilter "school" ) mPrev $ aopt (lift `hoistField` selectField schoolOptions) (fslI MsgTableCourseSchool) , prismAForm (singletonFilter "school" ) mPrev $ aopt (lift `hoistField` selectField schoolOptions) (fslI MsgTableCourseSchool)
, Map.singleton "sheet-search" . maybeToList <$> aopt (lift `hoistField` textField) (fslI MsgSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev))) , Map.singleton "sheet-search" . maybeToList <$> aopt (lift `hoistField` textField) (fslI MsgTableSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev)))
, prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime) , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime)
, prismAForm (singletonFilter "rating-visible" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingDone) , prismAForm (singletonFilter "rating-visible" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingDone)
, prismAForm (singletonFilter "rating" . maybePrism _PathPiece) mPrev $ aopt (lift `hoistField` pointsField) (fslI MsgColumnRatingPoints) , prismAForm (singletonFilter "rating" . maybePrism _PathPiece) mPrev $ aopt (lift `hoistField` pointsField) (fslI MsgColumnRatingPoints)

View File

@ -483,7 +483,7 @@ submissionHelper tid ssh csh shn mcid = do
-- Maybe construct a table to display uploaded archive files -- Maybe construct a table to display uploaded archive files
let colonnadeFiles :: _ -> Colonnade Sortable _ (DBCell (HandlerFor UniWorX) ()) let colonnadeFiles :: _ -> Colonnade Sortable _ (DBCell (HandlerFor UniWorX) ())
colonnadeFiles cid = mconcat $ catMaybes colonnadeFiles cid = mconcat $ catMaybes
[ Just . sortable (Just "path") (i18nCell MsgFileTitle) $ \(mOrig, mCorr) -> let [ Just . sortable (Just "path") (i18nCell MsgTableFileTitle) $ \(mOrig, mCorr) -> let
Just fileTitle' = submissionFileTitle . entityVal <$> (mOrig <|> mCorr) Just fileTitle' = submissionFileTitle . entityVal <$> (mOrig <|> mCorr)
origIsFile = fmap (isJust . submissionFileContent . entityVal) mOrig origIsFile = fmap (isJust . submissionFileContent . entityVal) mOrig
corrIsFile = fmap (isJust . submissionFileContent . entityVal) mCorr corrIsFile = fmap (isJust . submissionFileContent . entityVal) mCorr
@ -491,12 +491,12 @@ submissionHelper tid ssh csh shn mcid = do
in if in if
| Just True <- origIsFile -> anchorCell (subDownloadLink cid SubmissionOriginal fileTitle') [whamlet|#{fileTitle'}|] | Just True <- origIsFile -> anchorCell (subDownloadLink cid SubmissionOriginal fileTitle') [whamlet|#{fileTitle'}|]
| otherwise -> textCell $ bool (<> "/") id isFile fileTitle' | otherwise -> textCell $ bool (<> "/") id isFile fileTitle'
, guardOn showCorrection . sortable (toNothing "state") (i18nCell MsgCorState) $ \(_, mCorr) -> case mCorr of , guardOn showCorrection . sortable (toNothing "state") (i18nCell MsgTableCorState) $ \(_, mCorr) -> case mCorr of
Nothing -> cell mempty Nothing -> cell mempty
Just (Entity _ SubmissionFile{..}) Just (Entity _ SubmissionFile{..})
| isJust submissionFileContent -> anchorCell (subDownloadLink cid SubmissionCorrected submissionFileTitle) (i18n MsgFileCorrected :: Widget) | isJust submissionFileContent -> anchorCell (subDownloadLink cid SubmissionCorrected submissionFileTitle) (i18n MsgFileCorrected :: Widget)
| otherwise -> i18nCell MsgCorrected | otherwise -> i18nCell MsgCorrected
, Just . sortable (Just "time") (i18nCell MsgFileModified) $ \(mOrig, mCorr) -> let , Just . sortable (Just "time") (i18nCell MsgTableFileModified) $ \(mOrig, mCorr) -> let
origTime = submissionFileModified . entityVal <$> mOrig origTime = submissionFileModified . entityVal <$> mOrig
corrTime = submissionFileModified . entityVal <$> mCorr corrTime = submissionFileModified . entityVal <$> mCorr
Just fileTime = (max <$> origTime <*> corrTime) <|> origTime <|> corrTime Just fileTime = (max <$> origTime <*> corrTime) <|> origTime <|> corrTime

View File

@ -95,7 +95,7 @@ colCourse = sortable (Just "course") (i18nCell MsgTableCourse)
$ \DBRow{ dbrOutput=(_, _, (_,csh,tid,sid),_ , _, _, _, _) } -> courseCellCL (tid,sid,csh) $ \DBRow{ dbrOutput=(_, _, (_,csh,tid,sid),_ , _, _, _, _) } -> courseCellCL (tid,sid,csh)
colSheet :: IsDBTable m a => Colonnade Sortable CorrectionTableData (DBCell m a) colSheet :: IsDBTable m a => Colonnade Sortable CorrectionTableData (DBCell m a)
colSheet = sortable (Just "sheet") (i18nCell MsgSheet) $ \row -> colSheet = sortable (Just "sheet") (i18nCell MsgTableSheet) $ \row ->
let sheet = row ^. _dbrOutput . _2 let sheet = row ^. _dbrOutput . _2
course= row ^. _dbrOutput . _3 course= row ^. _dbrOutput . _3
tid = course ^. _3 tid = course ^. _3
@ -105,12 +105,12 @@ colSheet = sortable (Just "sheet") (i18nCell MsgSheet) $ \row ->
in anchorCell (CSheetR tid ssh csh shn SShowR) [whamlet|_{shn}|] in anchorCell (CSheetR tid ssh csh shn SShowR) [whamlet|_{shn}|]
colCorrector :: IsDBTable m a => Colonnade Sortable CorrectionTableData (DBCell m a) colCorrector :: IsDBTable m a => Colonnade Sortable CorrectionTableData (DBCell m a)
colCorrector = sortable (Just "corrector") (i18nCell MsgCorrector) $ \case colCorrector = sortable (Just "corrector") (i18nCell MsgTableCorrector) $ \case
DBRow{ dbrOutput = (_, _, _, Nothing , _, _, _, _) } -> cell mempty DBRow{ dbrOutput = (_, _, _, Nothing , _, _, _, _) } -> cell mempty
DBRow{ dbrOutput = (_, _, _, Just (Entity _ User{..}), _, _, _, _) } -> userCell userDisplayName userSurname DBRow{ dbrOutput = (_, _, _, Just (Entity _ User{..}), _, _, _, _) } -> userCell userDisplayName userSurname
colSubmissionLink :: IsDBTable m a => Colonnade Sortable CorrectionTableData (DBCell m a) colSubmissionLink :: IsDBTable m a => Colonnade Sortable CorrectionTableData (DBCell m a)
colSubmissionLink = sortable (Just "submission") (i18nCell MsgSubmission) colSubmissionLink = sortable (Just "submission") (i18nCell MsgTableSubmission)
$ \DBRow{ dbrOutput=(_, sheet, course, _, _,_, cid, _) } -> $ \DBRow{ dbrOutput=(_, sheet, course, _, _,_, cid, _) } ->
let csh = course ^. _2 let csh = course ^. _2
tid = course ^. _3 tid = course ^. _3
@ -151,7 +151,7 @@ colSGroups = sortable (Just "submittors-group") (i18nCell MsgTableSubmissionGrou
-> mempty -> mempty
colRating :: forall m a. IsDBTable m (a, SheetTypeSummary SqlBackendKey) => Colonnade Sortable CorrectionTableData (DBCell m (a, SheetTypeSummary SqlBackendKey)) colRating :: forall m a. IsDBTable m (a, SheetTypeSummary SqlBackendKey) => Colonnade Sortable CorrectionTableData (DBCell m (a, SheetTypeSummary SqlBackendKey))
colRating = sortable (Just "rating") (i18nCell MsgRating) $ \DBRow{ dbrOutput=(Entity subId sub@Submission{..}, Entity _ Sheet{..}, course, _, _, _, _, _) } -> colRating = sortable (Just "rating") (i18nCell MsgTableRating) $ \DBRow{ dbrOutput=(Entity subId sub@Submission{..}, Entity _ Sheet{..}, course, _, _, _, _, _) } ->
let csh = course ^. _2 let csh = course ^. _2
tid = course ^. _3 tid = course ^. _3
ssh = course ^. _4 ssh = course ^. _4
@ -208,7 +208,7 @@ colCommentField = sortable (Just "comment") (i18nCell MsgRatingComment) $ (cellA
(\DBRow{ dbrOutput=(Entity _ Submission{..}, _, _, _, _, _, _, _) } mkUnique -> over (_1.mapped) ((_3 .~) . assertM (not . null) . fmap (Text.strip . unTextarea)) . over _2 fvWidget <$> mopt textareaField (fsUniq mkUnique "comment") (Just $ Textarea <$> submissionRatingComment)) (\DBRow{ dbrOutput=(Entity _ Submission{..}, _, _, _, _, _, _, _) } mkUnique -> over (_1.mapped) ((_3 .~) . assertM (not . null) . fmap (Text.strip . unTextarea)) . over _2 fvWidget <$> mopt textareaField (fsUniq mkUnique "comment") (Just $ Textarea <$> submissionRatingComment))
colLastEdit :: IsDBTable m a => Colonnade Sortable CorrectionTableData (DBCell m a) colLastEdit :: IsDBTable m a => Colonnade Sortable CorrectionTableData (DBCell m a)
colLastEdit = sortable (Just "last-edit") (i18nCell MsgLastEdit) $ colLastEdit = sortable (Just "last-edit") (i18nCell MsgTableLastEdit) $
\DBRow{ dbrOutput=(_, _, _, _, mbLastEdit, _, _, _) } -> maybe mempty dateTimeCell mbLastEdit \DBRow{ dbrOutput=(_, _, _, _, mbLastEdit, _, _, _) } -> maybe mempty dateTimeCell mbLastEdit
@ -620,7 +620,7 @@ assignAction selId = ( CorrSetCorrector
correctors' <- forM correctors $ \Entity{ entityKey, entityVal = User{..} } -> (SomeMessage userDisplayName, ) <$> encrypt entityKey correctors' <- forM correctors $ \Entity{ entityKey, entityVal = User{..} } -> (SomeMessage userDisplayName, ) <$> encrypt entityKey
cId <- wopt (selectFieldList correctors' :: Field (HandlerFor UniWorX) CryptoUUIDUser) (fslI MsgCorrector & setTooltip MsgCorrSetCorrectorTooltip) Nothing cId <- wopt (selectFieldList correctors' :: Field (HandlerFor UniWorX) CryptoUUIDUser) (fslI MsgTableCorrector & setTooltip MsgCorrSetCorrectorTooltip) Nothing
fmap CorrSetCorrectorData <$> (traverse.traverse) decrypt cId fmap CorrSetCorrectorData <$> (traverse.traverse) decrypt cId
) )
@ -654,9 +654,9 @@ postCorrectionsR = do
[ prismAForm (singletonFilter "course" ) mPrev $ aopt (lift `hoistField` selectField courseOptions) (fslI MsgTableCourse) [ prismAForm (singletonFilter "course" ) mPrev $ aopt (lift `hoistField` selectField courseOptions) (fslI MsgTableCourse)
, prismAForm (singletonFilter "term" ) mPrev $ aopt (lift `hoistField` selectField termOptions) (fslI MsgTableTerm) , prismAForm (singletonFilter "term" ) mPrev $ aopt (lift `hoistField` selectField termOptions) (fslI MsgTableTerm)
, prismAForm (singletonFilter "school" ) mPrev $ aopt (lift `hoistField` selectField schoolOptions) (fslI MsgTableCourseSchool) , prismAForm (singletonFilter "school" ) mPrev $ aopt (lift `hoistField` selectField schoolOptions) (fslI MsgTableCourseSchool)
, Map.singleton "sheet-search" . maybeToList <$> aopt (lift `hoistField` textField) (fslI MsgSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev))) , Map.singleton "sheet-search" . maybeToList <$> aopt (lift `hoistField` textField) (fslI MsgTableSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev)))
, prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime) , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime)
, prismAForm (singletonFilter "submission") mPrev $ aopt (lift `hoistField` textField) (fslI MsgSubmission) , prismAForm (singletonFilter "submission") mPrev $ aopt (lift `hoistField` textField) (fslI MsgTableSubmission)
] ]
courseOptions = runDB $ do courseOptions = runDB $ do
courses <- selectList [] [Asc CourseShorthand] >>= filterM (\(Entity _ Course{..}) -> (== Authorized) <$> evalAccessCorrector courseTerm courseSchool courseShorthand) courses <- selectList [] [Asc CourseShorthand] >>= filterM (\(Entity _ Course{..}) -> (== Authorized) <$> evalAccessCorrector courseTerm courseSchool courseShorthand)
@ -699,12 +699,12 @@ postCCorrectionsR tid ssh csh = do
[ prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgTableCourseMembers) [ prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgTableCourseMembers)
, prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgTableMatrikelNr) , prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgTableMatrikelNr)
-- "pseudonym" TODO DB only stores Word24 -- "pseudonym" TODO DB only stores Word24
, Map.singleton "sheet-search" . maybeToList <$> aopt textField (fslI MsgSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev))) , Map.singleton "sheet-search" . maybeToList <$> aopt textField (fslI MsgTableSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev)))
, prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgCorrector) , prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgTableCorrector)
, prismAForm (singletonFilter "isassigned" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgHasCorrector) , prismAForm (singletonFilter "isassigned" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgHasCorrector)
, prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime) , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime)
, prismAForm (singletonFilter "submission-group") mPrev $ aopt textField (fslI MsgTableSubmissionGroup) , prismAForm (singletonFilter "submission-group") mPrev $ aopt textField (fslI MsgTableSubmissionGroup)
, prismAForm (singletonFilter "submission") mPrev $ aopt (lift `hoistField` textField) (fslI MsgSubmission) , prismAForm (singletonFilter "submission") mPrev $ aopt (lift `hoistField` textField) (fslI MsgTableSubmission)
] ]
psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway
correctionsR whereClause colonnade filterUI psValidator $ Map.fromList correctionsR whereClause colonnade filterUI psValidator $ Map.fromList
@ -732,11 +732,11 @@ postSSubsR tid ssh csh shn = do
filterUI = Just $ \mPrev -> mconcat filterUI = Just $ \mPrev -> mconcat
[ prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgTableCourseMembers) [ prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgTableCourseMembers)
, prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgTableMatrikelNr) , prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgTableMatrikelNr)
, prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgCorrector) , prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgTableCorrector)
, prismAForm (singletonFilter "isassigned" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgHasCorrector) , prismAForm (singletonFilter "isassigned" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgHasCorrector)
, prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime) , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime)
, prismAForm (singletonFilter "submission-group") mPrev $ aopt textField (fslI MsgTableSubmissionGroup) , prismAForm (singletonFilter "submission-group") mPrev $ aopt textField (fslI MsgTableSubmissionGroup)
, prismAForm (singletonFilter "submission") mPrev $ aopt (lift `hoistField` textField) (fslI MsgSubmission) , prismAForm (singletonFilter "submission") mPrev $ aopt (lift `hoistField` textField) (fslI MsgTableSubmission)
-- "pseudonym" TODO DB only stores Word24 -- "pseudonym" TODO DB only stores Word24
] ]
psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway

View File

@ -70,7 +70,7 @@ tutorInvitationConfig = InvitationConfig{..}
invitationRestriction _ _ = return Authorized invitationRestriction _ _ = return Authorized
invitationForm _ _ _ = pure (JunctionTutor, ()) invitationForm _ _ _ = pure (JunctionTutor, ())
invitationInsertHook _ _ _ _ _ = id invitationInsertHook _ _ _ _ _ = id
invitationSuccessMsg (Entity _ Tutorial{..}) _ = return . SomeMessage $ MsgCorrectorInvitationAccepted tutorialName invitationSuccessMsg (Entity _ Tutorial{..}) _ = return . SomeMessage $ MsgTutorCorrectorInvitationAccepted tutorialName
invitationUltDest (Entity _ Tutorial{..}) _ = do invitationUltDest (Entity _ Tutorial{..}) _ = do
Course{..} <- get404 tutorialCourse Course{..} <- get404 tutorialCourse
return . SomeRoute $ CourseR courseTerm courseSchool courseShorthand CTutorialListR return . SomeRoute $ CourseR courseTerm courseSchool courseShorthand CTutorialListR

View File

@ -673,7 +673,7 @@ uploadModeForm fs prev = multiActionA actions fs (classifyUploadMode <$> prev)
submissionModeForm :: Maybe SubmissionMode -> AForm Handler SubmissionMode submissionModeForm :: Maybe SubmissionMode -> AForm Handler SubmissionMode
submissionModeForm prev = explainedMultiActionA actions opts (fslI MsgSheetSubmissionMode) $ classifySubmissionMode <$> prev submissionModeForm prev = explainedMultiActionA actions opts (fslI MsgUtilSheetSubmissionMode) $ classifySubmissionMode <$> prev
where where
actions :: Map SubmissionModeDescr (AForm Handler SubmissionMode) actions :: Map SubmissionModeDescr (AForm Handler SubmissionMode)
actions = Map.fromList actions = Map.fromList

View File

@ -393,7 +393,7 @@ fltrApplicationFilesUI mPrev = prismAForm (singletonFilter "has-files" . maybePr
-- | Generic column for links to FilePaths, where the link depends on the entire table row -- | Generic column for links to FilePaths, where the link depends on the entire table row
colFilePath :: (IsDBTable m c) => (t -> E.Value FilePath) -> (t -> Route UniWorX) -> Colonnade Sortable t (DBCell m c) colFilePath :: (IsDBTable m c) => (t -> E.Value FilePath) -> (t -> Route UniWorX) -> Colonnade Sortable t (DBCell m c)
colFilePath row2path row2link = sortable (Just "path") (i18nCell MsgFileTitle) makeCell colFilePath row2path row2link = sortable (Just "path") (i18nCell MsgTableFileTitle) makeCell
where where
makeCell row = makeCell row =
let filePath = E.unValue $ row2path row let filePath = E.unValue $ row2path row
@ -402,7 +402,7 @@ colFilePath row2path row2link = sortable (Just "path") (i18nCell MsgFileTitle) m
-- | Generic column for links to FilePaths, where the link only depends on the FilePath itself -- | Generic column for links to FilePaths, where the link only depends on the FilePath itself
colFilePathSimple :: (IsDBTable m c) => (t -> E.Value FilePath) -> (FilePath -> Route UniWorX) -> Colonnade Sortable t (DBCell m c) colFilePathSimple :: (IsDBTable m c) => (t -> E.Value FilePath) -> (FilePath -> Route UniWorX) -> Colonnade Sortable t (DBCell m c)
colFilePathSimple row2path row2link = sortable (Just "path") (i18nCell MsgFileTitle) makeCell colFilePathSimple row2path row2link = sortable (Just "path") (i18nCell MsgTableFileTitle) makeCell
where where
makeCell row = makeCell row =
let filePath = E.unValue $ row2path row let filePath = E.unValue $ row2path row
@ -411,10 +411,10 @@ colFilePathSimple row2path row2link = sortable (Just "path") (i18nCell MsgFileTi
-- | Generic column for File Modification -- | Generic column for File Modification
colFileModification :: (IsDBTable m c) => (t -> E.Value UTCTime) -> Colonnade Sortable t (DBCell m c) colFileModification :: (IsDBTable m c) => (t -> E.Value UTCTime) -> Colonnade Sortable t (DBCell m c)
colFileModification row2time = sortable (Just "time") (i18nCell MsgFileModified) (dateTimeCell . E.unValue . row2time) colFileModification row2time = sortable (Just "time") (i18nCell MsgTableFileModified) (dateTimeCell . E.unValue . row2time)
colFileModificationWhen :: (IsDBTable m c) => (UTCTime -> Bool) -> (t -> E.Value UTCTime) -> Colonnade Sortable t (DBCell m c) colFileModificationWhen :: (IsDBTable m c) => (UTCTime -> Bool) -> (t -> E.Value UTCTime) -> Colonnade Sortable t (DBCell m c)
colFileModificationWhen condition row2time = sortable (Just "time") (i18nCell MsgFileModified) (conDTCell . E.unValue . row2time) colFileModificationWhen condition row2time = sortable (Just "time") (i18nCell MsgTableFileModified) (conDTCell . E.unValue . row2time)
where conDTCell = ifCell condition dateTimeCell $ const mempty where conDTCell = ifCell condition dateTimeCell $ const mempty

View File

@ -1,7 +1,7 @@
<div .scrolltable> <div .scrolltable>
<table .table .table--striped .table--vertical> <table .table .table--striped .table--vertical>
<tr .table__row> <tr .table__row>
<th .table__th>_{MsgSubmission} <th .table__th>_{MsgTableSubmission}
<td .table__td>#{cid} <td .table__td>#{cid}
$maybe Entity _ User{userDisplayName, userSurname, userEmail} <- corrector $maybe Entity _ User{userDisplayName, userSurname, userEmail} <- corrector
<tr .table__row> <tr .table__row>

View File

@ -11,7 +11,7 @@ $else
<table .table .table--striped> <table .table .table--striped>
<tr .table__row .table__row--head> <tr .table__row .table__row--head>
<th .table__th> <th .table__th>
_{MsgSheet} _{MsgTableSheet}
<th .table__th> <th .table__th>
_{MsgNrSubmissionsTotal} _{MsgNrSubmissionsTotal}
<th .table__th> <th .table__th>

View File

@ -8,7 +8,7 @@ $newline never
<div .scrolltable .scrolltable--bordered .corrections-overview__section> <div .scrolltable .scrolltable--bordered .corrections-overview__section>
<table .table .table--striped .table--hover> <table .table .table--striped .table--hover>
<tr .table__row .table__row--head> <tr .table__row .table__row--head>
<th .table__th rowspan=2>_{MsgSheet} <th .table__th rowspan=2>_{MsgTableSheet}
$if groupsPossible $if groupsPossible
<th .table__th rowspan=2>_{MsgNrSubmittorsTotal} <th .table__th rowspan=2>_{MsgNrSubmittorsTotal}
<th .table__th rowspan=2>_{MsgNrSubmissionsTotal} <th .table__th rowspan=2>_{MsgNrSubmissionsTotal}
@ -53,7 +53,7 @@ $newline never
<div .scrolltable .scrolltable--bordered> <div .scrolltable .scrolltable--bordered>
<table .table .table--striped .table--hover> <table .table .table--striped .table--hover>
<tr .table__row .table__row--head> <tr .table__row .table__row--head>
<th .table__th rowspan=2>_{MsgCorrector} <th .table__th rowspan=2>_{MsgTableCorrector}
<th .table__th colspan=2>_{MsgGenericAll} <th .table__th colspan=2>_{MsgGenericAll}
<th .table__th rowspan=2>_{MsgCorDeficitProportion} <th .table__th rowspan=2>_{MsgCorDeficitProportion}
<th .table__th colspan=3>_{MsgCorrectionTime} <th .table__th colspan=3>_{MsgCorrectionTime}
@ -70,7 +70,7 @@ $newline never
<th .table__th>_{MsgGenericMax} <th .table__th>_{MsgGenericMax}
$# Always iterate over orderedSheetNames for consistent sorting! Newest first, except in this table $# Always iterate over orderedSheetNames for consistent sorting! Newest first, except in this table
$forall _shn <- orderedSheetNames $forall _shn <- orderedSheetNames
<th .table__th>_{MsgCorProportion} <th .table__th>_{MsgTableCorProportion}
<th .table__th>_{MsgNrSubmissionsTotalShort} <th .table__th>_{MsgNrSubmissionsTotalShort}
<th .table__th>_{MsgGenericNumChange} <th .table__th>_{MsgGenericNumChange}
<th .table__th>_{MsgNrSubmissionsNotCorrectedShort} <th .table__th>_{MsgNrSubmissionsNotCorrectedShort}

View File

@ -1,8 +1,8 @@
$newline never $newline never
<dt .sec> <dt .sec>
_{MsgCorProportion} _{MsgTableCorProportion}
<dt .sec> <dt .sec>
_{MsgCorState} _{MsgTableCorState}
<dd> <dd>
Nutzer, die von einem Kursverwalter beauftragt wurden bei der Korrektur von # Nutzer, die von einem Kursverwalter beauftragt wurden bei der Korrektur von #
einzelnen Übungsblättern oder Prüfungen mitzuwirken.<br /> einzelnen Übungsblättern oder Prüfungen mitzuwirken.<br />

View File

@ -1,8 +1,8 @@
$newline never $newline never
<dt .sec> <dt .sec>
_{MsgCorProportion} _{MsgTableCorProportion}
<dt .sec> <dt .sec>
_{MsgCorState} _{MsgTableCorState}
<dd> <dd>
Users that are authorised by a course administrator to collaborate in # Users that are authorised by a course administrator to collaborate in #
the correction of single exercise sheets or exams.<br /> the correction of single exercise sheets or exams.<br />

View File

@ -19,7 +19,7 @@ $newline never
_{SomeMessage (MsgMailSubmissionRatedIntro (CI.original courseName) termDesc)} _{SomeMessage (MsgMailSubmissionRatedIntro (CI.original courseName) termDesc)}
<dl> <dl>
<dt> <dt>
_{SomeMessage MsgSubmission} _{SomeMessage MsgTableSubmission}
<dd> <dd>
<a href=@{CSubmissionR tid ssh csh shn csid SubShowR}> <a href=@{CSubmissionR tid ssh csh shn csid SubShowR}>
#{csid} #{csid}

View File

@ -13,7 +13,7 @@ $maybe descr <- materialDescription
$maybe matVisibleFromWgt <- matVisibleFromMB $maybe matVisibleFromWgt <- matVisibleFromMB
<dt .deflist__dt>_{MsgVisibleFrom} <dt .deflist__dt>_{MsgVisibleFrom}
<dd .deflist__dd>^{matVisibleFromWgt} <dd .deflist__dd>^{matVisibleFromWgt}
<dt .deflist__dt>_{MsgFileModified} <dt .deflist__dt>_{MsgTableFileModified}
<dd .deflist__dd>^{matLastEdit} <dd .deflist__dd>^{matLastEdit}
$if hasFiles $if hasFiles

View File

@ -138,7 +138,7 @@ $newline never
_{MsgProfileGroupSubmissionDates} _{MsgProfileGroupSubmissionDates}
<div .container> <div .container>
<h2> _{MsgCorrector} <h2> _{MsgTableCorrector}
<div .container> <div .container>
^{correctionsTable} ^{correctionsTable}

View File

@ -2,10 +2,10 @@ $newline never
<table .table .table--striped .table--hover> <table .table .table--striped .table--hover>
<thead> <thead>
<tr .table__row .table__row--head> <tr .table__row .table__row--head>
<th .table__th colspan="2">_{MsgCorrector} <th .table__th colspan="2">_{MsgTableCorrector}
<th .table__th>_{MsgCorState} <th .table__th>_{MsgTableCorState}
<th .table__th>_{MsgCorByTut} <th .table__th>_{MsgCorByTut}
<th .table__th>_{MsgCorProportion} <th .table__th>_{MsgTableCorProportion}
<td> <td>
<tbody> <tbody>
$forall coord <- review liveCoords lLength $forall coord <- review liveCoords lLength

View File

@ -10,7 +10,7 @@ $maybe descr <- sheetDescription sheet
<section> <section>
<dl .deflist> <dl .deflist>
<dt .deflist__dt>_{MsgAccessibleSince} <dt .deflist__dt>_{MsgSheetAccessibleSince}
<dd .deflist__dd> <dd .deflist__dd>
$maybe invisible <- visibleFrom $maybe invisible <- visibleFrom
^{invisible} ^{invisible}

View File

@ -2,7 +2,7 @@ $newline never
$maybe _ <- mcid $maybe _ <- mcid
$maybe wdgt <- correctionWdgt $maybe wdgt <- correctionWdgt
<section> <section>
<h2>_{MsgRating} <h2>_{MsgTableRating}
^{wdgt} ^{wdgt}
<section> <section>
@ -32,7 +32,7 @@ $maybe _ <- mcid
^{fileTable} ^{fileTable}
$if maySubmit && not (null lastEdits) $if maySubmit && not (null lastEdits)
<h3>_{MsgLastEdits} <h3>_{MsgTableLastEdit}
<ul> <ul>
$forall (mbName,time) <- lastEdits $forall (mbName,time) <- lastEdits
$maybe name <- mbName $maybe name <- mbName

View File

@ -7,17 +7,17 @@ $if submissionRatingDone sub
$maybe (grading, points) <- mTuple (preview _grading sheetType) submissionRatingPoints $maybe (grading, points) <- mTuple (preview _grading sheetType) submissionRatingPoints
$case grading $case grading
$of Points{..} $of Points{..}
_{MsgAchievedOf points maxPoints} _{MsgRatingAchievedOf points maxPoints}
$of PassPoints{maxPoints} $of PassPoints{maxPoints}
$if fromMaybe False (gradingPassed grading points) $if fromMaybe False (gradingPassed grading points)
_{MsgPassed}, _{MsgAchievedOf points maxPoints} _{MsgRatingPassed}, _{MsgRatingAchievedOf points maxPoints}
$else $else
_{MsgNotPassed}, _{MsgAchievedOf points maxPoints} _{MsgRatingNotPassed}, _{MsgRatingAchievedOf points maxPoints}
$of PassBinary $of PassBinary
$if fromMaybe False (gradingPassed grading points) $if fromMaybe False (gradingPassed grading points)
_{MsgPassed} _{MsgRatingPassed}
$else $else
_{MsgNotPassed} _{MsgRatingNotPassed}
$of PassAlways $of PassAlways
#{hasTickmark True} #{hasTickmark True}
$nothing $nothing