diff --git a/messages/uniworx/de-de-formal.msg b/messages/uniworx/de-de-formal.msg index 45a6a6e53..1ca265cc8 100644 --- a/messages/uniworx/de-de-formal.msg +++ b/messages/uniworx/de-de-formal.msg @@ -1,5 +1,7 @@ PrintDebugForStupid name@Text: Debug message "#{name}" +Logo: Uni2work + BtnSubmit: Senden BtnAbort: Abbrechen BtnDelete: Löschen @@ -143,6 +145,7 @@ CourseDeregisterUntilTip: Abmeldung ist ab "Anmeldungen von" bis zu diesem Zeitp CourseFilterSearch: Volltext-Suche CourseFilterRegistered: Registriert CourseFilterNone: Egal +BoolIrrelevant: Egal CourseDeleteQuestion: Wollen Sie den unten aufgeführten Kurs wirklich löschen? CourseDeleted: Kurs gelöscht CourseUserTutorials: Angemeldete Tutorien @@ -610,6 +613,7 @@ RatingExceedsMax: Bewertung übersteigt die erlaubte Maximalpunktzahl RatingNotExpected: Keine Bewertungen erlaubt RatingBinaryExpected: Bewertung muss 0 (=durchgefallen) oder 1 (=bestanden) sein RatingPointsRequired: Bewertung erfordert für dieses Blatt eine Punktzahl +RatingFile: Bewertungsdatei SubmissionSinkExceptionDuplicateFileTitle file@FilePath: Dateiname #{show file} kommt mehrfach im Zip-Archiv vor SubmissionSinkExceptionDuplicateRating: Mehr als eine Bewertung gefunden. @@ -740,6 +744,8 @@ StudyTerms: Studiengänge StudyTerm: Studiengang NoStudyTermsKnown: Nicht eingeschrieben StudyFeatureInference: Studiengangschlüssel-Inferenz +StudyFeatureInferenceNoConflicts: Keine Konflikte beobachtet +StudyFeatureInferenceConflictsHeading: Studiengangseinträge mit beobachteten Konflikten StudyFeatureAge: Fachsemester StudyFeatureDegree: Abschluss FieldPrimary: Hauptfach @@ -958,6 +964,10 @@ SheetCreateExisting: Folgende Pseudonyme haben bereits abgegeben: CorrGrade: Korrekturen eintragen UserAccountDeleted name@Text: Konto für #{name} wurde gelöscht! +UserSubmissionsDeleted n@Int: #{tshow n} Abgaben wurden unwiderruflich gelöscht. +UserGroupSubmissionsKept n@Int: #{tshow n} Gruppenabgaben verbleiben in der Datenbank, aber die Zuordnung zum Benutzer wurde gelöscht. Gruppenabgaben können dadurch zu Einzelabgaben werden, die dann mit dem letzten Benutzer gelöscht werden. +UserSubmissionGroupsDeleted count@Int64: #{tshow count} benannte Abgabengruppen wurden gelöscht, da sie ohne den Nutzer leer wären. +UserAccountDeleteWarning: Achtung, dies löscht den kompletten Benutzer unwiderruflich und mit allen assoziierten Daten aus der Datenbank. Prüfungsdaten müssen jedoch langfristig gespeichert bleiben! HelpTitle : Hilfe HelpAnswer: Antworten an @@ -2037,4 +2047,17 @@ ShowSex: Geschlechter anderer Nutzer anzeigen ShowSexTip: Sollen in Kursteilnehmer-Tabellen u.Ä. die Geschlechter der Nutzer angezeigt werden? MenuLanguage: Sprache -LanguageChanged: Sprache erfolgreich geändert \ No newline at end of file +LanguageChanged: Sprache erfolgreich geändert + +ProfileCorrector: Korrektor +ProfileCourses: Eigene Kurse +ProfileCourseParticipations: Kursanmeldungen +ProfileCourseExamResults: Prüfungsleistungen +ProfileTutorials: Eigene Tutorien +ProfileTutorialParticipations: Tutorien +ProfileSubmissionGroups: Abgabegruppen +ProfileSubmissions: Abgaben +ProfileRemark: Hinweis +ProfileGroupSubmissionDates: Bei Gruppenabgaben wird kein Datum angezeigt, wenn Sie die Gruppenabgabe nie selbst hochgeladen haben. +ProfileCorrectorRemark: Die oberhalb angezeigte Tabelle zeigt nur prinzipielle Einteilungen als Korrektor zu einem Übungsblatt. Auch ohne Einteilung können Korrekturen einzeln zugewiesen werden, welche hier dann nicht aufgeführt werden. +ProfileCorrections: Auflistung aller zugewiesenen Korrekturen \ No newline at end of file diff --git a/src/Handler/Admin.hs b/src/Handler/Admin.hs index 307c7acf9..5bcf4359a 100644 --- a/src/Handler/Admin.hs +++ b/src/Handler/Admin.hs @@ -214,7 +214,7 @@ postAdminTestR = do siteLayout locallyDefinedPageHeading $ do -- defaultLayout $ do setTitle "Uni2work Admin Testpage" - $(widgetFile "adminTest") + $(i18nWidgetFile "admin-test") [whamlet|

Formular Demonstration|] wrapForm formWidget FormSettings diff --git a/src/Handler/Corrections.hs b/src/Handler/Corrections.hs index 4d2c37aba..9b3937a5d 100644 --- a/src/Handler/Corrections.hs +++ b/src/Handler/Corrections.hs @@ -605,7 +605,7 @@ postCorrectionsR = do , prismAForm (singletonFilter "term" ) mPrev $ aopt (lift `hoistField` selectField termOptions) (fslI MsgTerm) , prismAForm (singletonFilter "school" ) mPrev $ aopt (lift `hoistField` selectField schoolOptions) (fslI MsgCourseSchool) , Map.singleton "sheet-search" . maybeToList <$> aopt (lift `hoistField` textField) (fslI MsgSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev))) - , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgRatingTime) + , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgRatingTime) ] courseOptions = runDB $ do courses <- selectList [] [Asc CourseShorthand] >>= filterM (\(Entity _ Course{..}) -> (== Authorized) <$> evalAccessCorrector courseTerm courseSchool courseShorthand) @@ -650,8 +650,8 @@ postCCorrectionsR tid ssh csh = do -- "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))) , prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgCorrector) - , prismAForm (singletonFilter "isassigned" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgHasCorrector) - , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgRatingTime) + , 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) ] psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway correctionsR whereClause colonnade filterUI psValidator $ Map.fromList @@ -681,8 +681,8 @@ postSSubsR tid ssh csh shn = do [ prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgCourseMembers) , prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgMatrikelNr) , prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgCorrector) - , prismAForm (singletonFilter "isassigned" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgHasCorrector) - , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgRatingTime) + , 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) -- "pseudonym" TODO DB only stores Word24 ] psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway diff --git a/src/Handler/Course/List.hs b/src/Handler/Course/List.hs index 7e815fba2..a9075cee3 100644 --- a/src/Handler/Course/List.hs +++ b/src/Handler/Course/List.hs @@ -176,7 +176,7 @@ makeCourseTable whereClause colChoices psValidator = do , Just $ prismAForm (singletonFilter "lecturer") mPrev $ aopt textField (fslI MsgCourseLecturer) , Just $ prismAForm (singletonFilter "search") mPrev $ aopt textField (fslI MsgCourseFilterSearch) , Just $ prismAForm (singletonFilter "openregistration" . maybePrism _PathPiece) mPrev $ fmap (\x -> if isJust x && not (fromJust x) then Nothing else x) . aopt checkBoxField (fslI MsgCourseRegisterOpen) - , muid $> prismAForm (singletonFilter "registered" . maybePrism _PathPiece) mPrev (aopt boolField (fslI MsgCourseFilterRegistered)) + , muid $> prismAForm (singletonFilter "registered" . maybePrism _PathPiece) mPrev (aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgCourseFilterRegistered)) ] , dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout diff --git a/src/Handler/ExamOffice/Exam.hs b/src/Handler/ExamOffice/Exam.hs index 87f5bbf10..320822663 100644 --- a/src/Handler/ExamOffice/Exam.hs +++ b/src/Handler/ExamOffice/Exam.hs @@ -369,7 +369,7 @@ postEGradesR tid ssh csh examn = do , fltrStudyDegreeUI , fltrStudyFeaturesSemesterUI , fltrExamResultPointsUI examShowGrades - , \mPrev -> prismAForm (singletonFilter "is-synced" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgExamUserSynchronised) + , \mPrev -> prismAForm (singletonFilter "is-synced" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgExamUserSynchronised) ] dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout } dbtParams = DBParamsForm diff --git a/src/Handler/Profile.hs b/src/Handler/Profile.hs index 7e133098e..170ce5dc4 100644 --- a/src/Handler/Profile.hs +++ b/src/Handler/Profile.hs @@ -373,6 +373,7 @@ makeProfileData (Entity uid User{..}) = do let ownTutorialTable = [whamlet|Übungsgruppen werden momentan leider noch nicht unterstützt.|] let tutorialTable = [whamlet|Übungsgruppen werden momentan leider noch nicht unterstützt.|] lastLogin <- traverse (formatTime SelFormatDateTime) userLastAuthentication + let profileRemarks = $(i18nWidgetFile "profile-remarks") return $(widgetFile "profileData") diff --git a/src/Handler/Users.hs b/src/Handler/Users.hs index 2d405561e..e11f6a557 100644 --- a/src/Handler/Users.hs +++ b/src/Handler/Users.hs @@ -390,7 +390,7 @@ postAdminUserR uuid = do } userDataWidget <- runDB $ makeProfileData $ Entity uid user siteLayout heading $ do - let deleteWidget = $(widgetFile "widgets/data-delete/data-delete") + let deleteWidget = $(i18nWidgetFile "data-delete") $(widgetFile "adminUser") diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index 937d3eec3..73bcdb18e 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -925,8 +925,8 @@ jsonField hide = Field{..} boolField :: ( MonadHandler m , HandlerSite m ~ UniWorX ) - => Field m Bool -boolField = Field + => Maybe (SomeMessage UniWorX) -> Field m Bool +boolField mkNone = Field { fieldParse = \e _ -> return $ boolParser e , fieldView = \theId name attrs val isReq -> $(widgetFile "widgets/fields/bool") , fieldEnctype = UrlEncoded diff --git a/src/Handler/Utils/Table/Columns.hs b/src/Handler/Utils/Table/Columns.hs index a5a0f72e2..150b3ffcd 100644 --- a/src/Handler/Utils/Table/Columns.hs +++ b/src/Handler/Utils/Table/Columns.hs @@ -203,7 +203,7 @@ fltrAllocationActive cTime queryAllocation = singletonMap "active" . FilterColum E.&&. E.maybe E.true (\t -> E.val cTime E.<=. t) (allocation E.^. AllocationRegisterTo) fltrAllocationActiveUI :: DBFilterUI -fltrAllocationActiveUI mPrev = prismAForm (singletonFilter "active" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgAllocationActive) +fltrAllocationActiveUI mPrev = prismAForm (singletonFilter "active" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgAllocationActive) ----------- @@ -355,7 +355,7 @@ fltrApplicationVeto :: OpticFilterColumn t Bool fltrApplicationVeto queryVeto = singletonMap "veto" . FilterColumn . mkExactFilter $ view queryVeto fltrApplicationVetoUI :: DBFilterUI -fltrApplicationVetoUI mPrev = prismAForm (singletonFilter "veto" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgCourseApplicationVeto) +fltrApplicationVetoUI mPrev = prismAForm (singletonFilter "veto" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgCourseApplicationVeto) colApplicationRatingComment :: OpticColonnade (Maybe Text) colApplicationRatingComment resultComment = Colonnade.singleton (fromSortable header) body @@ -407,7 +407,7 @@ fltrApplicationFiles :: OpticFilterColumn t Bool fltrApplicationFiles queryFiles = singletonMap "has-files" . FilterColumn . mkExactFilter $ view queryFiles fltrApplicationFilesUI :: DBFilterUI -fltrApplicationFilesUI mPrev = prismAForm (singletonFilter "has-files" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgCourseApplicationFiles) +fltrApplicationFilesUI mPrev = prismAForm (singletonFilter "has-files" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgCourseApplicationFiles) --------------- -- Files diff --git a/templates/adminFeatures.hamlet b/templates/adminFeatures.hamlet index ea5e214b6..db3db4626 100644 --- a/templates/adminFeatures.hamlet +++ b/templates/adminFeatures.hamlet @@ -1,18 +1,19 @@ +$newline never
^{degreeTable}
^{studytermsTable}
-

_{MsgStudyFeatureInference} +

_{MsgStudyFeatureInference} + $if null infConflicts

- $if null infConflicts - Kein Konflikte beobachtet. - $else -

Studiengangseingträge mit beobachteten Konflikten: -