Merge branch 'master' of gitlab.cip.ifi.lmu.de:jost/UniWorX

This commit is contained in:
Gregor Kleen 2018-06-12 19:42:39 +02:00
commit 16681d594e
2 changed files with 13 additions and 20 deletions

View File

@ -49,6 +49,7 @@ import qualified Data.Text as Text
import qualified Data.Text.Encoding as Text import qualified Data.Text.Encoding as Text
import Data.List (foldr1) import Data.List (foldr1)
import qualified Data.List as List
import Data.Set (Set) import Data.Set (Set)
import qualified Data.Set as Set import qualified Data.Set as Set
import Data.Map (Map, (!?)) import Data.Map (Map, (!?))
@ -110,17 +111,6 @@ type MsgRenderer = MsgRendererS UniWorX -- see Utils
pattern CSheetR tid csh shn ptn pattern CSheetR tid csh shn ptn
= CourseR tid csh (SheetR shn ptn) = CourseR tid csh (SheetR shn ptn)
-- Change this to use breadcrumbs, but only last breadcrumb should match
isSubrouteOf :: Maybe (Route UniWorX) -> (Route UniWorX -> Bool) -- DEPRECATED
isSubrouteOf Nothing _ = False
isSubrouteOf (Just (CourseR t2 s2 _)) (CourseR t1 s1 _) = t1 == t2 && s1 == s2
isSubrouteOf (Just (TermEditR)) (TermShowR) = True
isSubrouteOf (Just (TermEditExistR _)) (TermShowR) = True
isSubrouteOf (Just r2) r1 = r1 == r2
-- isSubrouteOf _ _ = False
-- Menus and Favourites -- Menus and Favourites
data MenuItem = MenuItem data MenuItem = MenuItem
{ menuItemLabel :: Text { menuItemLabel :: Text
@ -195,8 +185,8 @@ liftAR op sc apdb apg@(APHandler _) = liftAR op sc apg apdb
trueAP,falseAP :: AccessPredicate trueAP,falseAP :: AccessPredicate
trueAP = APPure . const $ return Authorized trueAP = APPure . const $ return Authorized
falseAP = APPure . const $ Unauthorized . ($ MsgUnauthorized) . render <$> ask falseAP = APPure . const $ Unauthorized . ($ MsgUnauthorized) . render <$> ask -- always use adminAP instead
-- TODO: I believe falseAP := adminAP
adminAP :: AccessPredicate -- access for admins (of appropriate school in case of course-routes) adminAP :: AccessPredicate -- access for admins (of appropriate school in case of course-routes)
adminAP = APDB $ \case adminAP = APDB $ \case
@ -363,9 +353,6 @@ evalAccess r = case route2ap r of
(APHandler p) -> p r (APHandler p) -> p r
(APDB p) -> runDB $ p r (APDB p) -> runDB $ p r
-- TODO: isAuthorized = evalAccess'
-- Please see the documentation for the Yesod typeclass. There are a number -- Please see the documentation for the Yesod typeclass. There are a number
@ -454,10 +441,11 @@ instance Yesod UniWorX where
courseRoute = CourseR courseTerm courseShorthand CShowR courseRoute = CourseR courseTerm courseShorthand CShowR
in (c, courseRoute, ) <$> filterM (menuItemAccessCallback . menuItem) (pageActions courseRoute) in (c, courseRoute, ) <$> filterM (menuItemAccessCallback . menuItem) (pageActions courseRoute)
let highlight :: Route UniWorX -> Bool let highlight :: Route UniWorX -> Bool -- highlight last route in breadcrumbs only
highlight = isSubrouteOf mcurrentRoute -- TODO highlight = let crumbs = mcons mcurrentRoute $ fst <$> parents
-- IDEA: highlight on last route in breadcrumbs only actFav = List.intersect (snd3 <$> favourites) crumbs
-- toHighlight = undefined -- TODO: last breadcrumb in order only highRs = if null actFav then crumbs else actFav
in \r -> r `elem` highRs
-- TODO: Lookup theme in Cookie/DB and set variable accordingly -- TODO: Lookup theme in Cookie/DB and set variable accordingly
-- let currentTheme = "theme--default" -- let currentTheme = "theme--default"

View File

@ -87,6 +87,11 @@ maybeT x m = runMaybeT m >>= maybe x return
catchIfMaybeT :: (MonadCatch m, Exception e) => (e -> Bool) -> m a -> MaybeT m a catchIfMaybeT :: (MonadCatch m, Exception e) => (e -> Bool) -> m a -> MaybeT m a
catchIfMaybeT p act = catchIf p (lift act) (const mzero) catchIfMaybeT p act = catchIf p (lift act) (const mzero)
mcons :: Maybe a -> [a] -> [a]
mcons Nothing xs = xs
mcons (Just x) xs = x:xs
--------------- ---------------
-- Exception -- -- Exception --
--------------- ---------------