From 268d9e0b1cfc2a41079d42415fccc075ba909ee7 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Mon, 21 Oct 2019 15:51:22 +0200 Subject: [PATCH] fix(i18n): get started on i18n-breadcrumbs --- src/Foundation.hs | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Foundation.hs b/src/Foundation.hs index 3ba6f09bb..64e0bd6ee 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -1908,16 +1908,27 @@ applySystemMessages = liftHandler . runDB . runConduit $ selectSource [] [] .| C Nothing -> addMessage systemMessageSeverity content -- Define breadcrumbs. +i18nCrumb :: ( RenderMessage (HandlerSite m) msg, MonadHandler m ) + => msg + -> Maybe (Route (HandlerSite m)) + -> m (Text, Maybe (Route (HandlerSite m))) +i18nCrumb msg mbR = do + mr <- getMessageRender + return (mr msb, mbR) + instance YesodBreadcrumbs UniWorX where - breadcrumb (AuthR _) = return ("Login" , Just HomeR) - breadcrumb HomeR = return ("Uni2work" , Nothing) - breadcrumb UsersR = return ("Benutzer" , Just AdminR) - breadcrumb AdminUserAddR = return ("Benutzer anlegen", Just UsersR) - breadcrumb (AdminUserR _) = return ("Users" , Just UsersR) - breadcrumb AdminR = return ("Administration", Nothing) - breadcrumb AdminFeaturesR = return ("Test" , Just AdminR) - breadcrumb AdminTestR = return ("Test" , Just AdminR) - breadcrumb AdminErrMsgR = return ("Test" , Just AdminR) + breadcrumb (AuthR _) = i18nCrumb MsgMenuLogin $ Just HomeR + breadcrumb HomeR = i18nCrumb MsgMenuHome Nothing + breadcrumb UsersR = i18nCrumb MsgMenuUsers $ Just AdminR + breadcrumb AdminUserAddR = i18nCrumb MsgMenuUserAdd $ Just UsersR + breadcrumb (AdminUserR cID) = do + uid <- decrypt cID + User{..} <- runDB $ get404 uid + return (userDisplayName, Just UsersR + breadcrumb AdminR = i18nCrumb MsgAdminHeading Nothing + breadcrumb AdminFeaturesR = i18nCrumb MsgAdminFeaturesHeading $ Just AdminR + breadcrumb AdminTestR = i18nCrumb MsgMenuAdminTest $ Just AdminR + breadcrumb AdminErrMsgR = i18nCrumb MsgAdminErrMsg $ Just AdminR breadcrumb SchoolListR = return ("Institute" , Just AdminR) breadcrumb (SchoolR ssh SchoolEditR) = return (original (unSchoolKey ssh), Just SchoolListR)