From aeeacb3bfbdeb4515ef2374d6e72748694dff622 Mon Sep 17 00:00:00 2001 From: SJost Date: Tue, 3 Jul 2018 16:50:03 +0200 Subject: [PATCH] Bugfix: Sheet Edit Button and some Page Headings --- messages/de.msg | 6 +++++- src/Foundation.hs | 27 ++++++++++++++++++++++----- src/Handler/Utils/Form.hs | 2 +- src/Import.hs | 1 + src/Model/Types.hs | 18 +++++++++--------- 5 files changed, 38 insertions(+), 16 deletions(-) diff --git a/messages/de.msg b/messages/de.msg index b9eb9af92..6ae62ced3 100644 --- a/messages/de.msg +++ b/messages/de.msg @@ -59,6 +59,8 @@ Deadline: Abgabe Done: Eingereicht Submission: Abgabenummer +SubmissionsCourse tid@TermId courseShortHand@Text: Alle Abgaben Kurs #{display tid}-#{courseShortHand} +SubmissionsSheet sheetName@Text: Abgaben für Blatt #{sheetName} SubmissionWrongSheet: Abgabenummer gehört nicht zum angegebenen Übungsblatt. SubmissionAlreadyExists: Sie haben bereits eine Abgabe zu diesem Übungsblatt. SubmissionEditHead tid@TermId courseShortHand@Text sheetName@Text: #{display tid}-#{courseShortHand} #{sheetName}: Abgabe editieren/anlegen @@ -70,6 +72,7 @@ SubmissionAlreadyExistsFor user@Text: #{user} hat bereits eine Abgabe zu diesem CorrectionsTitle: Zugewiesene Korrekturen CourseCorrectionsTitle: Korrekturen für diesen Kurs +CorrectorsHead sheetName@Text: Korrektoren für Blatt #{sheetName} Unauthorized: Sie haben hierfür keine explizite Berechtigung. UnauthorizedAnd l@Text r@Text: (#{l} UND #{r}) @@ -112,6 +115,7 @@ Users: Benutzer HomeHeading: Aktuelle Termine ProfileHeading: Benutzerprofil und Einstellungen ProfileDataHeading: Gespeicherte Benutzerdaten +ImpressumHeading: Impressum NumCourses n@Int64: #{display n} Kurse CloseAlert: Schliessen @@ -164,4 +168,4 @@ PointsNotPositive: Punktzahl darf nicht negativ sein FileTitle: Dateiname FileModified: Letzte Änderung -FileCorrected: Korrigiert \ No newline at end of file +FileCorrected: Korrigiert diff --git a/src/Foundation.hs b/src/Foundation.hs index 51303d52b..61720964e 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -765,6 +765,12 @@ pageActions (CSheetR tid csh shn SShowR) = , menuItemRoute = CSheetR tid csh shn SSubsR , menuItemAccessCallback' = return True } + , PageActionPrime $ MenuItem + { menuItemLabel = "Blatt Editieren" + , menuItemIcon = Nothing + , menuItemRoute = CSheetR tid csh shn SEditR + , menuItemAccessCallback' = return True + } ] pageActions (CSubmissionR tid csh shn cid SubShowR) = [ PageActionPrime $ MenuItem @@ -846,6 +852,8 @@ pageHeading (AdminTestR) = Just $ [whamlet|Internal Code Demonstration Page|] pageHeading (AdminUserR _) = Just $ [whamlet|User Display for Admin|] +pageHeading (VersionR) + = Just $ i18nHeading MsgImpressumHeading pageHeading ProfileR = Just $ i18nHeading MsgProfileHeading @@ -870,32 +878,41 @@ pageHeading (CourseR tid csh CShowR) = Just $ do Entity _ Course{..} <- handlerToWidget . runDB . getBy404 $ CourseTermShort tid csh toWidget courseName -pageHeading CorrectionsR - = Just $ i18nHeading MsgCorrectionsTitle -pageHeading CorrectionsUploadR - = Just $ i18nHeading MsgCorrUpload -- (CourseR tid csh CRegisterR) -- just for POST pageHeading (CourseR tid csh CEditR) = Just $ i18nHeading $ MsgCourseEditHeading tid csh +pageHeading (CourseR tid csh CourseCorrectionsR) + = Just $ i18nHeading $ MsgSubmissionsCourse tid csh pageHeading (CourseR tid csh SheetListR) = Just $ i18nHeading $ MsgSheetList tid csh pageHeading (CourseR tid csh SheetNewR) = Just $ i18nHeading $ MsgSheetNewHeading tid csh pageHeading (CSheetR tid csh shn SShowR) = Just $ i18nHeading $ MsgSheetTitle tid csh shn --- (CSheetR tid csh shn SFileR) -- just for Downloads pageHeading (CSheetR tid csh shn SEditR) = Just $ i18nHeading $ MsgSheetEditHead tid csh shn pageHeading (CSheetR tid csh shn SDelR) = Just $ i18nHeading $ MsgSheetDelHead tid csh shn +pageHeading (CSheetR tid csh shn SSubsR) + = Just $ i18nHeading $ MsgSubmissionsSheet shn pageHeading (CSheetR tid csh shn SubmissionNewR) = Just $ i18nHeading $ MsgSubmissionEditHead tid csh shn pageHeading (CSheetR tid csh shn SubmissionOwnR) = Just $ i18nHeading $ MsgSubmissionEditHead tid csh shn pageHeading (CSubmissionR tid csh shn _ SubShowR) -- TODO: Rethink this one! = Just $ i18nHeading $ MsgSubmissionEditHead tid csh shn +-- (CSubmissionR tid csh shn cid SubArchiveR) -- just a download pageHeading (CSubmissionR tid csh shn cid CorrectionR) = Just $ i18nHeading $ MsgCorrectionHead tid csh shn cid +-- (CSubmissionR tid csh shn cid SubDownloadR) -- just a download +pageHeading (CSheetR tid csh shn SCorrR) + = Just $ i18nHeading $ MsgCorrectorsHead shn +-- (CSheetR tid csh shn SFileR) -- just for Downloads + +pageHeading CorrectionsR + = Just $ i18nHeading MsgCorrectionsTitle +pageHeading CorrectionsUploadR + = Just $ i18nHeading MsgCorrUpload -- TODO: add headings for more single course- and single term-pages pageHeading _ diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index 3b0d963a4..06bab241f 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -266,7 +266,7 @@ posIntField d = checkBool (>= 1) (T.append d " muss eine positive Zahl sein.") minIntField :: (Monad m, Integral i, Show i, RenderMessage (HandlerSite m) FormMessage) => i -> Text -> Field m i minIntField m d = checkBool (>= m) (T.concat [d," muss größer als ", T.pack $ show m, " sein."]) $ intField -pointsField :: (Monad m, HandlerSite m ~ UniWorX) => Field m Points +pointsField :: (Monad m, HandlerSite m ~ UniWorX) => Field m Points --TODO allow fractions pointsField = checkBool (>= 0) MsgPointsNotPositive Field{..} where fieldEnctype = UrlEncoded diff --git a/src/Import.hs b/src/Import.hs index a10200156..cdb0ec16f 100644 --- a/src/Import.hs +++ b/src/Import.hs @@ -4,3 +4,4 @@ module Import import Foundation as Import import Import.NoFoundation as Import + diff --git a/src/Model/Types.hs b/src/Model/Types.hs index ce2057442..b19a851f1 100644 --- a/src/Model/Types.hs +++ b/src/Model/Types.hs @@ -40,14 +40,14 @@ import Data.Typeable (Typeable) type Points = Centi -toPoints :: Integral a => a -> Points -toPoints = MkFixed . fromIntegral +toPoints :: Integral a => a -> Points -- deprecated +toPoints = fromIntegral -pToI :: Points -> Integer -pToI = fromPoints -- TODO: do we want to multiply? +pToI :: Points -> Integer -- deprecated +pToI = fromPoints -fromPoints :: Integral a => Points -> a -fromPoints (MkFixed c) = fromInteger c +fromPoints :: Integral a => Points -> a -- deprecated +fromPoints = round data SheetType = Bonus { maxPoints :: Points } @@ -57,9 +57,9 @@ data SheetType deriving (Show, Read, Eq) instance DisplayAble SheetType where - display (Bonus {..}) = tshow (pToI maxPoints) <> " Bonuspunkte" - display (Normal{..}) = tshow (pToI maxPoints) <> " Punkte" - display (Pass {..}) = "Bestanden ab " <> tshow (pToI passingPoints) <> " von " <> tshow (pToI maxPoints) + display (Bonus {..}) = tshow maxPoints <> " Bonuspunkte" + display (Normal{..}) = tshow maxPoints <> " Punkte" + display (Pass {..}) = "Bestanden ab " <> tshow (pToI passingPoints) <> " von " <> tshow maxPoints display (NotGraded) = "Unbewertet" deriveJSON defaultOptions ''SheetType