From 727b89bf4b80b1f5c83e3f6eeebe5c9da7226596 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Sat, 11 Jan 2020 23:57:23 +0100 Subject: [PATCH] fix: improve labeling of button to switch exam occurrence --- messages/uniworx/de-de-formal.msg | 1 + messages/uniworx/en-eu.msg | 1 + src/Handler/Exam/Register.hs | 5 ++++- src/Handler/Exam/Show.hs | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/messages/uniworx/de-de-formal.msg b/messages/uniworx/de-de-formal.msg index ba9234bc4..4ebfac7e6 100644 --- a/messages/uniworx/de-de-formal.msg +++ b/messages/uniworx/de-de-formal.msg @@ -13,6 +13,7 @@ BtnCourseApply: Zum Kurs bewerben BtnCourseRetractApplication: Bewerbung zum Kurs zurückziehen BtnExamRegister: Anmelden zur Prüfung BtnExamRegisterOccurrence: Anmelden zum Prüfungstermin/-raum +BtnExamSwitchOccurrence: Zu Prüfungstermin/-raum wechseln BtnExamDeregister: Von der Prüfung abmelden BtnHijack: Sitzung übernehmen BtnSave: Speichern diff --git a/messages/uniworx/en-eu.msg b/messages/uniworx/en-eu.msg index de38ca936..effb79604 100644 --- a/messages/uniworx/en-eu.msg +++ b/messages/uniworx/en-eu.msg @@ -13,6 +13,7 @@ BtnCourseApply: Apply for course BtnCourseRetractApplication: Retract application BtnExamRegister: Enrol for exam BtnExamRegisterOccurrence: Enrol for exam occurrence/room +BtnExamSwitchOccurrence: Switch to exam occurrence/room BtnExamDeregister: Leave exam BtnHijack: Hijack session BtnSave: Save diff --git a/src/Handler/Exam/Register.hs b/src/Handler/Exam/Register.hs index f040df069..744c76625 100644 --- a/src/Handler/Exam/Register.hs +++ b/src/Handler/Exam/Register.hs @@ -14,6 +14,7 @@ import Database.Persist.Sql (deleteWhereCount) -- Dedicated ExamRegistrationButton data ButtonExamRegister = BtnExamRegisterOccurrence + | BtnExamSwitchOccurrence | BtnExamRegister | BtnExamDeregister deriving (Enum, Bounded, Eq, Ord, Read, Show, Generic, Typeable) @@ -23,10 +24,12 @@ nullaryPathPiece ''ButtonExamRegister $ camelToPathPiece' 2 instance Button UniWorX ButtonExamRegister where btnClasses BtnExamRegisterOccurrence = [BCIsButton, BCPrimary] + btnClasses BtnExamSwitchOccurrence = [BCIsButton, BCPrimary] btnClasses BtnExamRegister = [BCIsButton, BCPrimary] btnClasses BtnExamDeregister = [BCIsButton, BCDanger] btnLabel BtnExamRegisterOccurrence = [whamlet|#{iconExamRegister True } _{MsgBtnExamRegisterOccurrence}|] + btnLabel BtnExamSwitchOccurrence = [whamlet|_{MsgBtnExamSwitchOccurrence}|] btnLabel BtnExamRegister = [whamlet|#{iconExamRegister True } _{MsgBtnExamRegister}|] btnLabel BtnExamDeregister = [whamlet|#{iconExamRegister False} _{MsgBtnExamDeregister}|] @@ -76,7 +79,7 @@ postERegisterOccR tid ssh csh examn occn = do audit $ TransactionExamDeregister eId uid addMessageIconI Success IconExamRegisterFalse $ MsgExamDeregisteredSuccess examn redirect $ CExamR tid ssh csh examn EShowR - BtnExamRegisterOccurrence -> do + btn | btn `elem` [BtnExamRegisterOccurrence, BtnExamSwitchOccurrence] -> do runDB $ do now <- liftIO getCurrentTime void $ upsertBy (UniqueExamRegistration eId uid) (ExamRegistration eId uid (Just occId) now) [ExamRegistrationOccurrence =. Just occId, ExamRegistrationTime =. now] diff --git a/src/Handler/Exam/Show.hs b/src/Handler/Exam/Show.hs index cc31d91f1..e072b9e71 100644 --- a/src/Handler/Exam/Show.hs +++ b/src/Handler/Exam/Show.hs @@ -118,7 +118,7 @@ getEShowR tid ssh csh examn = do , Just (Entity occId ExamOccurrence{..}) <- mOcc , isRegistered <- (== Just occId) $ examRegistrationOccurrence . entityVal =<< join registered , mayRegister' (Just occId) = Just $ do - (examRegisterForm, examRegisterEnctype) <- liftHandler . generateFormPost . buttonForm' $ bool [BtnExamRegisterOccurrence] [BtnExamDeregister] isRegistered + (examRegisterForm, examRegisterEnctype) <- liftHandler . generateFormPost . buttonForm' $ bool [bool BtnExamRegisterOccurrence BtnExamSwitchOccurrence . is _Just $ join registered] [BtnExamDeregister] isRegistered wrapForm examRegisterForm def { formAction = Just . SomeRoute . CExamR tid ssh csh examName $ ERegisterOccR examOccurrenceName , formEncoding = examRegisterEnctype