From 6ce79d673f392b78b4854e410f4dc47ae711de04 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Wed, 30 Jun 2010 21:21:49 +0300 Subject: [PATCH] setLanguage uses user session --- Yesod/Dispatch.hs | 13 ++++++++----- Yesod/Handler.hs | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Yesod/Dispatch.hs b/Yesod/Dispatch.hs index 30297ddf..b006ec2b 100644 --- a/Yesod/Dispatch.hs +++ b/Yesod/Dispatch.hs @@ -321,14 +321,17 @@ parseWaiRequest env session' = do cookies' = map (S.toString *** S.toString) $ parseCookies reqCookie acceptLang = lookup W.AcceptLanguage $ W.requestHeaders env langs = map S.toString $ maybe [] parseHttpAccept acceptLang - langs' = case lookup langKey cookies' of + langs' = case lookup langKey session' of Nothing -> langs Just x -> x : langs - langs'' = case lookup langKey gets' of - Nothing -> langs' - Just x -> x : langs' + langs'' = case lookup langKey cookies' of + Nothing -> langs' + Just x -> x : langs' + langs''' = case lookup langKey gets' of + Nothing -> langs'' + Just x -> x : langs'' rbthunk <- iothunk $ rbHelper env - return $ Request gets' cookies' session' rbthunk env langs'' + return $ Request gets' cookies' session' rbthunk env langs''' rbHelper :: W.Request -> IO RequestBodyContents rbHelper = fmap (fix1 *** map fix2) . parseRequestBody lbsSink where diff --git a/Yesod/Handler.hs b/Yesod/Handler.hs index 7c714214..5f3ebbf5 100644 --- a/Yesod/Handler.hs +++ b/Yesod/Handler.hs @@ -382,9 +382,9 @@ setCookie a b = addHeader . AddCookie a b deleteCookie :: String -> GHandler sub master () deleteCookie = addHeader . DeleteCookie --- | Set the language header. Will show up in 'languages'. +-- | Set the language in the user session. Will show up in 'languages'. setLanguage :: String -> GHandler sub master () -setLanguage = setCookie 60 langKey -- FIXME shouldn't we use session for this? +setLanguage = setSession langKey -- | Set an arbitrary header on the client. setHeader :: String -> String -> GHandler sub master ()