[start using RenderGlobals to pass around stuff to pure render function thomashartman1@gmail.com**20080919173009] hunk ./src/Controller.hs 1 -{-# OPTIONS_GHC -XPatternSignatures -fno-monomorphism-restriction #-} +{-# options_ghc -XPatternSignatures -fno-monomorphism-restriction #-} hunk ./src/Controller.hs 11 - +import Text.StringTemplate hunk ./src/Controller.hs 41 + hunk ./src/Controller.hs 43 - mbUser <- liftIO . getmbLoggedInUser $ rq - templates <- liftIO getTemplates - unServerPartT ( multi (tutorialCommon templates mbUser) ) rq + ts <- liftIO getTemplates + mbU <- liftIO . getmbLoggedInUser $ rq + -- THIS FIXES THE WEIRD PORTS ISSUE, BUT BREAKS ONLINE. FIX ME. + let bd = "http://localhost:5001" -- (\(h,p) -> "http://" ++ h ++ (if p==80 then "" else ":" ++ (show p))) . rqPeer $ rq + rglobs = RenderGlobals ts mbU bd + unServerPartT ( multi (tutorialCommon rglobs) ) rq hunk ./src/Controller.hs 52 -tutorialCommon templates mbUser = - [ exactdir "/" [ ServerPartT $ \_ -> ( return . tutlayoutU templates mbUser [] ) "home" ] +tutorialCommon rglobs = + [ exactdir "/" [ ServerPartT $ \_ -> ( return . tutlayoutU rglobs [] ) "home" ] hunk ./src/Controller.hs 55 - , exactdir "/tutorial/consultants" (viewConsultants templates mbUser) - , exactdir "/tutorial/jobs" (viewJobs templates mbUser) + , exactdir "/tutorial/consultants" (viewConsultants rglobs) + , exactdir "/tutorial/jobs" (viewJobs rglobs) hunk ./src/Controller.hs 59 - lastPathPartSp0 (\rq tmpl -> ( return . tutlayoutU templates mbUser []) tmpl ) + lastPathPartSp0 (\rq tmpl -> ( return . tutlayoutU rglobs []) tmpl ) hunk ./src/Controller.hs 61 - [ dir "login" [ methodSP POST $ withData (loginPage templates mbUser) ] - , dir "newuser" [ methodSP POST $ withData (newUserPage templates mbUser) ] - ] ++ (loggedInActions templates mbUser) - , dir "users" (userProfile templates mbUser "viewprofile") + [ dir "login" [ methodSP POST $ withData (loginPage rglobs) ] + , dir "newuser" [ methodSP POST $ withData (newUserPage rglobs) ] + ] ++ (loggedInActions rglobs) + , dir "users" (userProfile rglobs "viewprofile") hunk ./src/Controller.hs 66 - , dir "consultants" (userProfile templates mbUser "viewconsultantprofile") + , dir "consultants" (userProfile rglobs "viewconsultantprofile") hunk ./src/Controller.hs 72 -loggedInActions templates mbU = [ dir "logout" [ (logoutPage templates mbU)] - , dir "accountsettings" [ methodSP POST $ withData (accountSettingsPage templates mbU) ] ] +loggedInActions rglobs = [ dir "logout" [ (logoutPage rglobs)] + , dir "accountsettings" [ methodSP POST $ withData (accountSettingsPage rglobs) ] ] hunk ./src/Controller.hs 76 -viewConsultants templates mbU = [ ServerPartT $ \rq -> do +viewConsultants rglobs = [ ServerPartT $ \rq -> do hunk ./src/Controller.hs 80 - (return . tutlayoutU templates mbU [("consultantList", consultantlist)] ) "consultants" + (return . tutlayoutU rglobs [("consultantList", consultantlist)] ) "consultants" hunk ./src/Controller.hs 84 -viewJobs templates mbU {- (TablePagination currpage resperpage) -} = +viewJobs rglobs {- (TablePagination currpage resperpage) -} = hunk ./src/Controller.hs 101 - (return . tutlayoutU templates mbU [("jobTable", jobTable)] ) "jobs" - ] - - -{- -viewAllUsers = [ ServerPartT $ \rq -> do - users <- query ListUsers - url <- return . rqURL $ rq - tutlayoutReq rq [("userList", (paint url users) )] "users" + (return . tutlayoutU rglobs [("jobTable", jobTable)] ) "jobs" hunk ./src/Controller.hs 103 - where paint url users = intercalate "

" . map (paintUser url) $ users - paintUser url user = "" ++ user ++ "" --} hunk ./src/Controller.hs 106 -userProfile templates mbU template = [ ServerPartT $ \rq -> do +userProfile rglobs template = [ ServerPartT $ \rq -> do hunk ./src/Controller.hs 110 - errW msg rq = ( return . tutlayoutU templates mbU [("errormsgProfile", msg)] ) template - tutlay rq u = (return . tutlayoutU templates mbU [("username",username u)] ) template + errW msg rq = ( return . tutlayoutU rglobs [("errormsgProfile", msg)] ) template + tutlay rq u = (return . tutlayoutU rglobs [("username",username u)] ) template hunk ./src/Controller.hs 123 -tutlayoutU templates mbU attrs tmpl = ( toResponse . HtmlString . tutlayout templates mbU attrs ) tmpl +tutlayoutU rglobs attrs tmpl = ( toResponse . HtmlString . tutlayout rglobs attrs ) tmpl + +loginPage :: View.RenderGlobals + -> Model.UserAuthInfo + -> [ServerPartT IO Response] hunk ./src/Controller.hs 129 ---loginPage :: Maybe String -> UserAuthInfo -> [ ServerPartT IO Response ] -loginPage templates mbU (UserAuthInfo user pass) = [ +loginPage rglobs (UserAuthInfo user pass) = [ hunk ./src/Controller.hs 133 - then do startsess templates user ( {-traceWith dbg -} rq ) - else ( return . tutlayoutU templates mbU [("errormsg","login error: invalid username or password")] ) "home" + then startsess rglobs user + else ( return . tutlayoutU rglobs [("errormsg","login error: invalid username or password")] ) "home" hunk ./src/Controller.hs 137 -startsess templates user rq = do +startsess rglobs user = do hunk ./src/Controller.hs 139 - addCookie (3600) (mkCookie "sid" (show key)) - ( return . tutlayoutU templates (Just user) [] ) "home" + addCookie (3600) (mkCookie "sid" (show key)) + let newRGlobs = RenderGlobals (templates rglobs) (Just user) (basedomain rglobs) + + ( return . tutlayoutU newRGlobs [] ) "home" hunk ./src/Controller.hs 144 -logoutPage templates mbU = +logoutPage rglobs = hunk ./src/Controller.hs 151 - ( return . tutlayoutU templates mbU [] ) "home" + ( return . tutlayoutU rglobs [] ) "home" hunk ./src/Controller.hs 154 -accountSettingsPage templates mbU (ChangeUserInfo oldpass newpass1 newpass2) = +accountSettingsPage rglobs (ChangeUserInfo oldpass newpass1 newpass2) = hunk ./src/Controller.hs 163 - ( return . tutlayoutU templates mbU [] ) "accountsettings-changed" + ( return . tutlayoutU rglobs [] ) "accountsettings-changed" hunk ./src/Controller.hs 168 - where errW msg rq = ( return . tutlayoutU templates mbU [("errormsgAccountSettings", msg)] ) "accountsettings" + where errW msg rq = ( return . tutlayoutU rglobs [("errormsgAccountSettings", msg)] ) "accountsettings" hunk ./src/Controller.hs 171 -newUserPage templates mbU (NewUserInfo user pass1 pass2) = +newUserPage rglobs (NewUserInfo user pass1 pass2) = hunk ./src/Controller.hs 179 - startsess templates user rq + startsess rglobs user hunk ./src/Controller.hs 182 - where errW msg rq = ( return . tutlayoutU templates mbU [("errormsgRegister", msg)] ) "register" + where errW msg rq = ( return . tutlayoutU rglobs [("errormsgRegister", msg)] ) "register" hunk ./src/View.hs 35 -tutlayout templates mbU attrs tmpl = - -- THIS BREAKS ONLINE. AND DOESN'T EVEN FIX LOCAL! FIX ME. - --basedomain <- return . (\(h,p) -> "http://" ++ h ++ (if p==80 then "" else ":" ++ (show p))) . rqPeer $ rq - let basedomain = "http://localhost:5001" - attrsLoggedIn user = [("loggedInUser",user)] +data RenderGlobals = RenderGlobals { templates :: STGroup String, + mbUser :: Maybe String, + basedomain :: String + } + +tutlayout rglobs attrs tmpl = + let attrsLoggedIn user = [("loggedInUser",user)] hunk ./src/View.hs 46 - mbU - in tutlayout' templates attrsL basedomain $ tmpl + (mbUser rglobs) + in tutlayout' (templates rglobs) attrsL (basedomain rglobs) $ tmpl hunk ./src/View.hs 109 + hunk ./todo 3 - Link to happs mailing list thread about windows install in prerequisites.st "see here". + incorporate Justin Bailey's patch for colored code. hunk ./todo 6 + What's with the random ports? does this have to do with opendns? + answer the mailing list guy that complained about this + + Link to happs mailing list thread about windows install in prerequisites.st "see here".