From 795dd29aa3510b2c755c6b5b11b085c84d496683 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 23 Jan 2019 13:15:03 +0100 Subject: [PATCH] Refine MenuSheetCurrent --- messages/uniworx/de.msg | 2 +- src/Foundation.hs | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/messages/uniworx/de.msg b/messages/uniworx/de.msg index 7b8ee21b6..76f338b6e 100644 --- a/messages/uniworx/de.msg +++ b/messages/uniworx/de.msg @@ -565,7 +565,7 @@ MenuCorrections: Korrekturen MenuSubmissions: Abgaben MenuSheetList: Übungsblätter MenuSheetNew: Neues Übungsblatt anlegen -MenuSheetCurrent: Akutelles Übungsblatt +MenuSheetCurrent: Aktuelles Übungsblatt MenuSheetLastInactive: Zuletzt abgegebenes Übungsblatt MenuCourseEdit: Kurs editieren MenuCourseNewTemplate: Als neuen Kurs klonen diff --git a/src/Foundation.hs b/src/Foundation.hs index 09a0869ff..535241b0c 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -1236,14 +1236,19 @@ pageActions (CourseR tid ssh csh CShowR) = , menuItemModal = False , menuItemAccessCallback' = do now <- liftIO getCurrentTime - [E.Value ok] <- runDB . E.select . return . E.exists . E.from $ \(course `E.InnerJoin` sheet) -> do + sheets <- runDB . E.select . E.from $ \(course `E.InnerJoin` sheet) -> do E.on $ sheet E.^. SheetCourse E.==. course E.^. CourseId - E.where_ $ sheet E.^. SheetActiveTo E.>. E.val now + E.where_ $ sheet E.^. SheetActiveTo E.>. E.val now E.&&. sheet E.^. SheetActiveFrom E.<=. E.val now E.&&. course E.^. CourseTerm E.==. E.val tid E.&&. course E.^. CourseSchool E.==. E.val ssh E.&&. course E.^. CourseShorthand E.==. E.val csh - return ok + E.orderBy [E.asc $ sheet E.^. SheetActiveFrom] + E.limit 1 + return $ sheet E.^. SheetName + case sheets of + (E.Value shn):_ -> (== Authorized) <$> isAuthorized (CSheetR tid ssh csh shn SShowR) False + _ -> return False } , MenuItem { menuItemType = PageActionPrime @@ -1260,7 +1265,7 @@ pageActions (CourseR tid ssh csh CShowR) = , menuItemRoute = SomeRoute $ CourseR tid ssh csh SheetListR , menuItemModal = False , menuItemAccessCallback' = do --TODO always show for lecturer - let sheetRouteAccess shn = (== Authorized) <$> (isAuthorized (CSheetR tid ssh csh shn SShowR) False) + let sheetRouteAccess shn = (== Authorized) <$> isAuthorized (CSheetR tid ssh csh shn SShowR) False muid <- maybeAuthId (sheets,lecturer) <- runDB $ do cid <- getKeyBy404 $ TermSchoolCourseShort tid ssh csh