diff --git a/messages/de.msg b/messages/de.msg index d244e7fdc..d8e1aa7a0 100644 --- a/messages/de.msg +++ b/messages/de.msg @@ -1,4 +1,4 @@ - SummerTerm year@Integer: Sommersemester #{tshow year} +SummerTerm year@Integer: Sommersemester #{tshow year} WinterTerm year@Integer: Wintersemester #{tshow year}/#{tshow $ succ year} PSLimitNonPositive: “pagesize” muss größer als null sein Page n@Int64: #{tshow n} @@ -9,16 +9,19 @@ Term: Semester TermPlaceholder: W/S + vierstellige Jahreszahl TermEditHeading: Semester editieren/anlegen +LectureStart: Beginn Vorlesungen + +Course: Kurs CourseNewOk tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} wurde erfolgreich erstellt. CourseEditOk tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} wurde erfolgreich geändert. CourseNewDupShort tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} konnte nicht erstellt werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester. CourseEditDupShort tid@TermIdentifier courseShortHand@Text: Kurs #{termToText tid}-#{courseShortHand} konnte nicht geändert werden: Es gibt bereits einen anderen Kurs mit dem Kürzel #{courseShortHand} in diesem Semester. -FFSheetName: Name TermCourseListHeading tid@TermIdentifier: Kursübersicht #{termToText tid} TermCourseListTitle tid@TermIdentifier: Kurse #{termToText tid} CourseEditHeading: Kurs editieren/anlegen CourseEditTitle: Kurs editieren/anlegen +Sheet: Blatt SheetNewOk tid@TermIdentifier courseShortHand@Text sheetName@Text: Neues Übungsblatt #{sheetName} wurde im Kurs #{termToText tid}-#{courseShortHand} erfolgreich erstellt. SheetTitle tid@TermIdentifier courseShortHand@Text sheetName@Text: #{termToText tid}-#{courseShortHand} #{sheetName} SheetTitleNew tid@TermIdentifier courseShortHand@Text : #{termToText tid}-#{courseShortHand}: Neues Übungsblatt @@ -46,6 +49,7 @@ DeprecatedRoute: Diese Ansicht ist obsolet und könnte in Zukunft entfallen. UnfreeMaterials: Die Materialien für diese Veranstaltung sind nicht allgemein freigegeben. UnauthorizedWrite: Sie haben hierfür keine Schreibberechtigung +Submission: Abgabenummer SubmissionWrongSheet: Abgabenummer gehört nicht zum angegebenen Übungsblatt. SubmissionAlreadyExists: Sie haben bereits eine Abgabe zu diesem Übungsblatt. SubmissionTitle tid@TermIdentifier courseShortHand@Text sheetName@Text: #{termToText tid}-#{courseShortHand} #{sheetName}: Abgabe editieren/anlegen @@ -54,6 +58,8 @@ SubmissionArchive: Zip-Archiv der Abgabedatei(en) SubmissionFile: Datei zur Abgabe SubmissionAlreadyExistsFor user@Text: #{user} hat bereits eine Abgabe zu diesem Übungsblatt. +CorrectionsTitle: Zugewiesene Korrekturen + EMail: E-Mail EMailUnknown email@Text: E-Mail #{email} gehört zu keinem bekannten Benutzer. NotAParticipant user@Text tid@TermIdentifier csh@Text: #{user} ist nicht im Kurs #{termToText tid}-#{csh} angemeldet. diff --git a/routes b/routes index 37e2ebecb..1b9668fbc 100644 --- a/routes +++ b/routes @@ -57,6 +57,7 @@ !/sub/own SubmissionOwnR GET !free !/sub/#CryptoUUIDSubmission SubmissionR GET POST !owner !corrector +/corrections CorrectionsR GET !free !/#UUID CryptoUUIDDispatchR GET !free -- just redirect diff --git a/src/Application.hs b/src/Application.hs index 33a3fd07b..f44313256 100644 --- a/src/Application.hs +++ b/src/Application.hs @@ -47,6 +47,7 @@ import Handler.Term import Handler.Course import Handler.Sheet import Handler.Submission +import Handler.Corrections import Handler.CryptoIDDispatch diff --git a/src/Foundation.hs b/src/Foundation.hs index b175e2f9c..c770f110f 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -656,6 +656,8 @@ pageHeading (CourseR tid csh CShowR) = Just $ do Entity _ Course{..} <- handlerToWidget . runDB . getBy404 $ CourseTermShort tid csh toWidget courseName +pageHeading CorrectionsR + = Just $ i18nHeading MsgCorrectionsTitle -- TODO: add headings for more single course- and single term-pages pageHeading _ = Nothing diff --git a/src/Handler/Term.hs b/src/Handler/Term.hs index 59c103e28..5f3c681e7 100644 --- a/src/Handler/Term.hs +++ b/src/Handler/Term.hs @@ -52,7 +52,7 @@ getTermShowR = do $else #{termToText termName} |] - , sortable (Just "lecture-start") "Beginn Vorlesungen" $ \(Entity _ Term{..},_) -> + , sortable (Just "lecture-start") (i18nCell MsgLectureStart) $ \(Entity _ Term{..},_) -> stringCell $ formatTimeGerWD termLectureStart , sortable (Just "lecture-end") "Ende Vorlesungen" $ \(Entity _ Term{..},_) -> stringCell $ formatTimeGerWD termLectureEnd diff --git a/src/Handler/Utils/Table.hs b/src/Handler/Utils/Table.hs index b85ab899b..5f863e58f 100644 --- a/src/Handler/Utils/Table.hs +++ b/src/Handler/Utils/Table.hs @@ -35,6 +35,9 @@ numberColonnade = headed "Nr" (fromString.show) pairColonnade :: (Functor h) => Colonnade h a c -> Colonnade h b c -> Colonnade h (a,b) c pairColonnade a b = mconcat [ lmap fst a, lmap snd b] +i18nCell :: RenderMessage site a => a -> Cell site +i18nCell msg = cell [whamlet|_{msg}|] + -- Table Modification encodeHeadedWidgetTableNumbered :: Attribute -> Colonnade Headed a (WidgetT site IO ()) -> [a] -> WidgetT site IO () @@ -91,3 +94,5 @@ headedRowSelector toExternal fromExternal attrs colonnade tdata = do return ( catMaybes <$> collectResult selectionResults , encodeCellTable attrs (pairColonnade selColonnade colonnade) (zip [0..] tdata) ) + + diff --git a/src/Handler/Utils/Table/Pagination.hs b/src/Handler/Utils/Table/Pagination.hs index 03b46992f..aafad7369 100644 --- a/src/Handler/Utils/Table/Pagination.hs +++ b/src/Handler/Utils/Table/Pagination.hs @@ -1,6 +1,7 @@ {-# LANGUAGE NoImplicitPrelude , ExistentialQuantification , RecordWildCards + , NamedFieldPuns , OverloadedStrings , TemplateHaskell , QuasiQuotes @@ -15,7 +16,7 @@ module Handler.Utils.Table.Pagination ( SortColumn(..), SortDirection(..) , FilterColumn(..), IsFilterColumn - , DBRow(..), DBOutput + , DBRow(..), dbRow, DBOutput , DBTable(..) , PaginationSettings(..) , PSValidator(..) @@ -49,6 +50,7 @@ import qualified Data.Map as Map import Data.Profunctor (lmap) import Colonnade hiding (bool, fromMaybe, singleton) +import qualified Colonnade (singleton) import Colonnade.Encode import Yesod.Colonnade @@ -103,6 +105,10 @@ data DBRow r = DBRow , dbrOutput :: r } +dbRow :: (Headedness h) => Colonnade h (DBRow r) (Cell site) +dbRow = Colonnade.singleton (headednessPure "nr") $ \DBRow{ dbrIndex } -> + textCell $ tshow dbrIndex + class DBOutput r r' where dbProj :: r -> r'