siteLayout instead of pageHeadings

This commit is contained in:
SJost 2019-02-14 19:25:15 +01:00
parent 24eec86bd6
commit 23706c36ce
6 changed files with 32 additions and 20 deletions

View File

@ -231,6 +231,7 @@ HomeHeading: Aktuelle Termine
LoginHeading: Authentifizierung LoginHeading: Authentifizierung
LoginTitle: Authentifizierung LoginTitle: Authentifizierung
ProfileHeading: Benutzereinstellungen ProfileHeading: Benutzereinstellungen
ProfileFor: Benutzereinstellungen für
ProfileDataHeading: Gespeicherte Benutzerdaten ProfileDataHeading: Gespeicherte Benutzerdaten
ImpressumHeading: Impressum ImpressumHeading: Impressum
SystemMessageHeading: Uni2work Statusmeldung SystemMessageHeading: Uni2work Statusmeldung

View File

@ -836,7 +836,7 @@ instance Yesod UniWorX where
NotAuthenticated -> [whamlet|<p>_{MsgErrorResponseNotAuthenticated}|] NotAuthenticated -> [whamlet|<p>_{MsgErrorResponseNotAuthenticated}|]
PermissionDenied err' -> [whamlet|<p .errMsg>#{err'}|] PermissionDenied err' -> [whamlet|<p .errMsg>#{err'}|]
BadMethod method -> [whamlet|<p>_{MsgErrorResponseBadMethod (decodeUtf8 method)}|] BadMethod method -> [whamlet|<p>_{MsgErrorResponseBadMethod (decodeUtf8 method)}|]
fmap toTypedContent . siteLayout (Just . toHtml . mr $ ErrorResponseTitle err) $ do fmap toTypedContent . siteLayout (toWgt . mr $ ErrorResponseTitle err) $ do
toWidget toWidget
[cassius| [cassius|
.errMsg .errMsg
@ -845,7 +845,7 @@ instance Yesod UniWorX where
|] |]
errPage errPage
defaultLayout = siteLayout Nothing defaultLayout = siteLayout' Nothing
-- The page to be redirected to when authentication is required. -- The page to be redirected to when authentication is required.
authRoute _ = Just $ AuthR LoginR authRoute _ = Just $ AuthR LoginR
@ -888,10 +888,21 @@ instance Yesod UniWorX where
makeLogger = readTVarIO . snd . appLogger makeLogger = readTVarIO . snd . appLogger
siteLayoutMsg :: (RenderMessage site msg, site ~ UniWorX) => msg -> Widget -> Handler Html
siteLayoutMsg msg widget = do
mr <- getMessageRender
siteLayout (toWgt $ mr msg) widget
siteLayout :: Maybe Html -- ^ Optionally override `pageHeading` siteLayoutMsg' :: (RenderMessage site msg, site ~ UniWorX) => msg -> Widget -> Handler Html
siteLayoutMsg' = siteLayout . i18nHeading
siteLayout :: Widget -- ^ `pageHeading`
-> Widget -> Handler Html -> Widget -> Handler Html
siteLayout headingOverride widget = do siteLayout = siteLayout' . Just
siteLayout' :: Maybe Widget -- ^ Optionally override `pageHeading`
-> Widget -> Handler Html
siteLayout' headingOverride widget = do
master <- getYesod master <- getYesod
let AppSettings { appUserDefaults = UserDefaultConf{..}, .. } = appSettings master let AppSettings { appUserDefaults = UserDefaultConf{..}, .. } = appSettings master
@ -964,7 +975,7 @@ siteLayout headingOverride widget = do
footer :: Widget footer :: Widget
footer = $(widgetFile "widgets/footer") footer = $(widgetFile "widgets/footer")
contentHeadline :: Maybe Widget contentHeadline :: Maybe Widget
contentHeadline = (toWidget <$> headingOverride) <|> (pageHeading =<< mcurrentRoute) contentHeadline = headingOverride <|> (pageHeading =<< mcurrentRoute)
breadcrumbsWgt :: Widget breadcrumbsWgt :: Widget
breadcrumbsWgt = $(widgetFile "widgets/breadcrumbs") breadcrumbsWgt = $(widgetFile "widgets/breadcrumbs")
pageaction :: Widget pageaction :: Widget
@ -1600,6 +1611,7 @@ pageActions _ = []
i18nHeading :: (MonadWidget m, RenderMessage site msg, HandlerSite m ~ site) => msg -> m () i18nHeading :: (MonadWidget m, RenderMessage site msg, HandlerSite m ~ site) => msg -> m ()
i18nHeading msg = liftWidgetT $ toWidget =<< getMessageRender <*> pure msg i18nHeading msg = liftWidgetT $ toWidget =<< getMessageRender <*> pure msg
-- | only used in defaultLayout; better use siteLayout instead!
pageHeading :: Route UniWorX -> Maybe Widget pageHeading :: Route UniWorX -> Maybe Widget
pageHeading (AuthR _) pageHeading (AuthR _)
= Just $ i18nHeading MsgLoginHeading = Just $ i18nHeading MsgLoginHeading

View File

@ -284,7 +284,7 @@ getCShowR tid ssh csh = do
mRegAt <- traverse (formatTime SelFormatDateTime) registered mRegAt <- traverse (formatTime SelFormatDateTime) registered
(regWidget, regEnctype) <- generateFormPost $ identifyForm "registerBtn" $ registerForm (isJust mRegAt) $ courseRegisterSecret course (regWidget, regEnctype) <- generateFormPost $ identifyForm "registerBtn" $ registerForm (isJust mRegAt) $ courseRegisterSecret course
registrationOpen <- (==Authorized) <$> isAuthorized (CourseR tid ssh csh CRegisterR) True registrationOpen <- (==Authorized) <$> isAuthorized (CourseR tid ssh csh CRegisterR) True
defaultLayout $ do siteLayout (toWgt $ courseName course) $ do
setTitle [shamlet| #{toPathPiece tid} - #{csh}|] setTitle [shamlet| #{toPathPiece tid} - #{csh}|]
$(widgetFile "course") $(widgetFile "course")

View File

@ -87,9 +87,8 @@ postProfileR = do
let formText = Nothing :: Maybe UniWorXMessage let formText = Nothing :: Maybe UniWorXMessage
actionUrl = ProfileR actionUrl = ProfileR
defaultLayout $ do siteLayout [whamlet|_{MsgProfileFor} ^{nameWidget userDisplayName userSurname}|] $ do
setTitle . toHtml $ "Profil " <> userIdent setTitle . toHtml $ "Profil " <> userIdent
[whamlet| Benutzereinstellungen für ^{nameWidget userDisplayName userSurname} |]
$(widgetFile "formPageI18n") $(widgetFile "formPageI18n")
postProfileDataR :: Handler Html postProfileDataR :: Handler Html

View File

@ -133,14 +133,15 @@ postAdminUserR uuid = do
let userRightsForm :: Form [(SchoolId, Bool, Bool)] let userRightsForm :: Form [(SchoolId, Bool, Bool)]
userRightsForm csrf = do userRightsForm csrf = do
boxRights <- forM userRights $ \(school@(Entity sid _), E.Value isAdmin, E.Value isLecturer) -> boxRights <- forM userRights $ \(school@(Entity sid _), E.Value isAdmin, E.Value isLecturer) ->
if | Set.member sid adminSchools -> do if Set.member sid adminSchools
cbAdmin <- mreq checkBoxField "" (Just isAdmin) then do
cbLecturer <- mreq checkBoxField "" (Just isLecturer) cbAdmin <- mreq checkBoxField "" (Just isAdmin)
return (school, cbAdmin, cbLecturer) cbLecturer <- mreq checkBoxField "" (Just isLecturer)
| otherwise -> do return (school, cbAdmin, cbLecturer)
cbAdmin <- mforced checkBoxField "" isAdmin else do
cbLecturer <- mforced checkBoxField "" isLecturer cbAdmin <- mforced checkBoxField "" isAdmin
return (school, cbAdmin, cbLecturer) cbLecturer <- mforced checkBoxField "" isLecturer
return (school, cbAdmin, cbLecturer)
let result = forM boxRights $ \(Entity sid _, (resAdmin,_), (resLecturer, _)) -> let result = forM boxRights $ \(Entity sid _, (resAdmin,_), (resLecturer, _)) ->
(,,) <$> pure sid <*> resAdmin <*> resLecturer (,,) <$> pure sid <*> resAdmin <*> resLecturer
return (result,$(widgetFile "widgets/user-rights-form")) return (result,$(widgetFile "widgets/user-rights-form"))
@ -160,5 +161,7 @@ postAdminUserR uuid = do
addMessageI Info MsgAccessRightsSaved addMessageI Info MsgAccessRightsSaved
((result, formWidget),formEnctype) <- runFormPost userRightsForm ((result, formWidget),formEnctype) <- runFormPost userRightsForm
formResult result userRightsAction formResult result userRightsAction
defaultLayout let heading =
[whamlet|_{MsgAccessRightsFor} ^{nameWidget userDisplayName userSurname}|]
siteLayout heading
$(widgetFile "adminUser") $(widgetFile "adminUser")

View File

@ -1,6 +1,3 @@
<h2>
_{MsgAccessRightsFor}
^{nameWidget userDisplayName userSurname}
<form method=post action=@{AdminUserR uuid} enctype=#{formEnctype}> <form method=post action=@{AdminUserR uuid} enctype=#{formEnctype}>
^{formWidget} ^{formWidget}
^{submitButtonView} ^{submitButtonView}