diff --git a/src/Handler/News.hs b/src/Handler/News.hs index 54b761d8c..8c451ad90 100644 --- a/src/Handler/News.hs +++ b/src/Handler/News.hs @@ -25,18 +25,18 @@ import Utils.Schedule.Week getNewsR :: Handler Html getNewsR = do - muid <- maybeAuthId + mUser <- maybeAuth defaultLayout $ do setTitleI MsgNewsHeading newsSystemMessages - when (is _Nothing muid) $ + when (is _Nothing mUser) $ notificationWidget NotificationBroad Info $(i18nWidgetFile "pitch") - case muid of - Just uid -> do - newsSchedule uid + case mUser of + Just user@(Entity uid _) -> do + newsSchedule user newsUpcomingExams uid newsUpcomingSheets uid Nothing -> @@ -89,8 +89,8 @@ newsSystemMessages = do -- TODO: deprecated; update once ScheduleR is finished -newsSchedule :: UserId -> Widget -newsSchedule uid = let schedule = weekSchedule uid ScheduleOffsetNone in $(widgetFile "news/schedule") +newsSchedule :: Entity User -> Widget +newsSchedule user = let schedule = weekSchedule user ScheduleOffsetNone in $(widgetFile "news/schedule") newsUpcomingSheets :: UserId -> Widget diff --git a/src/Handler/Schedule.hs b/src/Handler/Schedule.hs index 1cf749d96..545667f84 100644 --- a/src/Handler/Schedule.hs +++ b/src/Handler/Schedule.hs @@ -13,7 +13,7 @@ import Utils.Schedule.Week getScheduleR, postScheduleR :: Handler Html getScheduleR = postScheduleR postScheduleR = do - Entity uid User{userScheduleView} <- requireAuth + user@(Entity _uid User{userScheduleView}) <- requireAuth -- TODO: local instead of global get params? mOptions <- lookupGlobalGetParam GetScheduleOptions @@ -94,7 +94,7 @@ postScheduleR = do ((optionsRes, optionsWidget), optionsEnctype) <- runFormGet scheduleOptionsForm schedule <- case optionsRes of - FormSuccess ScheduleOptions{scheduleView=ScheduleViewWeek,..} -> return $ weekSchedule uid scheduleOffset + FormSuccess ScheduleOptions{scheduleView=ScheduleViewWeek,..} -> return $ weekSchedule user scheduleOffset other -> formFailure2Alerts other >> return mempty siteLayoutMsg MsgMenuSchedule $ do diff --git a/src/Utils/Schedule/Week.hs b/src/Utils/Schedule/Week.hs index a035c3e90..8df4cc955 100644 --- a/src/Utils/Schedule/Week.hs +++ b/src/Utils/Schedule/Week.hs @@ -18,8 +18,8 @@ import Utils.Schedule.Types import Utils.Schedule.Week.TimeSlot -weekSchedule :: UserId -> ScheduleOffset -> Widget -weekSchedule uid scheduleOffset = do +weekSchedule :: Entity User -> ScheduleOffset -> Widget +weekSchedule (Entity uid User{userWeekStart}) scheduleOffset = do now <- liftIO getCurrentTime tz <- liftIO getCurrentTimeZone ata <- getSessionActiveAuthTags @@ -112,14 +112,13 @@ weekSchedule uid scheduleOffset = do _ -> True in filter isRegularWithoutException occurrencesInSlot - -- TODO: Internationalize default week start (and/or make configurable) -- TODO: auto-hide saturday and sunday (if there are no events scheduled)? week :: [Day] week = go dayNowOffset where go d | dayOfWeek d == firstDay = [d .. toEnum (fromEnum d + 6)] | otherwise = go $ pred d - firstDay = toEnum $ fromEnum Monday + dayOffset + firstDay = toEnum $ fromEnum userWeekStart + dayOffset -- TODO: make this configurable timeSlotsDefaultDisplay :: Set TimeSlot