From e6577832b4c526237623ff6401941fded7f94975 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Sun, 22 Jan 2012 20:32:25 +0200 Subject: [PATCH] Scaffolding uses boilerplate (#234) --- yesod-auth/Yesod/Auth.hs | 2 +- yesod-core/Yesod/Handler.hs | 6 +-- yesod-core/Yesod/Internal/Core.hs | 2 +- yesod/Scaffolding/Scaffolder.hs | 2 - yesod/scaffold/Foundation.hs.cg | 2 +- yesod/scaffold/Settings.hs.cg | 5 +- yesod/scaffold/config/settings.yml.cg | 1 + .../templates/boilerplate-layout.hamlet.cg | 0 .../templates/boilerplate-wrapper.hamlet.cg | 42 ----------------- .../default-layout-wrapper.hamlet.cg | 46 ++++++++++++++++--- .../templates/default-layout.hamlet.cg | 2 +- yesod/scaffold/tiny/Foundation.hs.cg | 2 +- yesod/scaffold/tiny/Settings.hs.cg | 5 +- 13 files changed, 57 insertions(+), 60 deletions(-) delete mode 100644 yesod/scaffold/templates/boilerplate-layout.hamlet.cg delete mode 100644 yesod/scaffold/templates/boilerplate-wrapper.hamlet.cg diff --git a/yesod-auth/Yesod/Auth.hs b/yesod-auth/Yesod/Auth.hs index d1b2df4a..f9ad052a 100644 --- a/yesod-auth/Yesod/Auth.hs +++ b/yesod-auth/Yesod/Auth.hs @@ -241,7 +241,7 @@ requireAuth = maybeAuth >>= maybe redirectLogin return redirectLogin :: Yesod m => GHandler s m a redirectLogin = do y <- getYesod - setUltDest' + setUltDestCurrent case authRoute y of Just z -> redirect z Nothing -> permissionDenied "Please configure authRoute" diff --git a/yesod-core/Yesod/Handler.hs b/yesod-core/Yesod/Handler.hs index 266ba74b..3f9b22ad 100644 --- a/yesod-core/Yesod/Handler.hs +++ b/yesod-core/Yesod/Handler.hs @@ -75,7 +75,7 @@ module Yesod.Handler , deleteSession -- ** Ultimate destination , setUltDest - , setUltDest' + , setUltDestCurrent , setUltDestReferer , redirectUltDest , clearUltDest @@ -478,8 +478,8 @@ setUltDest url = do -- -- If this is a 404 handler, there is no current page, and then this call does -- nothing. -setUltDest' :: GHandler sub master () -setUltDest' = do +setUltDestCurrent :: GHandler sub master () +setUltDestCurrent = do route <- getCurrentRoute case route of Nothing -> return () diff --git a/yesod-core/Yesod/Internal/Core.hs b/yesod-core/Yesod/Internal/Core.hs index 7a0c2585..e5525551 100644 --- a/yesod-core/Yesod/Internal/Core.hs +++ b/yesod-core/Yesod/Internal/Core.hs @@ -382,7 +382,7 @@ defaultYesodRunner handler master sub murl toMasterRoute mkey req = do Nothing -> permissionDenied "Authentication required" Just url' -> do - setUltDest' + setUltDestCurrent redirect url' Unauthorized s' -> permissionDenied s' handler diff --git a/yesod/Scaffolding/Scaffolder.hs b/yesod/Scaffolding/Scaffolder.hs index c494bb58..e5bcb623 100644 --- a/yesod/Scaffolding/Scaffolder.hs +++ b/yesod/Scaffolding/Scaffolder.hs @@ -172,8 +172,6 @@ scaffold = do $(codegen "templates/default-layout.hamlet") writeFile' "templates/default-layout-wrapper.hamlet" $(codegen "templates/default-layout-wrapper.hamlet") - writeFile' "templates/boilerplate-wrapper.hamlet" - $(codegen "templates/boilerplate-wrapper.hamlet") writeFile' "templates/normalize.lucius" $(codegen "templates/normalize.lucius") writeFile' "templates/homepage.hamlet" diff --git a/yesod/scaffold/Foundation.hs.cg b/yesod/scaffold/Foundation.hs.cg index cf12bb92..87eecad8 100644 --- a/yesod/scaffold/Foundation.hs.cg +++ b/yesod/scaffold/Foundation.hs.cg @@ -89,7 +89,7 @@ instance Yesod ~sitearg~ where encryptKey _ = fmap Just $ getKey "config/client_session_key.aes" defaultLayout widget = do - y <- getYesod + master <- getYesod mmsg <- getMessage -- We break up the default layout into two components: diff --git a/yesod/scaffold/Settings.hs.cg b/yesod/scaffold/Settings.hs.cg index 9f57f34d..60884f3c 100644 --- a/yesod/scaffold/Settings.hs.cg +++ b/yesod/scaffold/Settings.hs.cg @@ -61,8 +61,11 @@ widgetFile = Yesod.Default.Util.widgetFileNoReload data Extra = Extra { extraCopyright :: Text + , extraAnalytics :: Maybe Text -- ^ Google Analytics } parseExtra :: DefaultEnv -> Object -> Parser Extra -parseExtra _ o = Extra <$> o .: "copyright" +parseExtra _ o = Extra + <$> o .: "copyright" + <*> o .:? "analytics" diff --git a/yesod/scaffold/config/settings.yml.cg b/yesod/scaffold/config/settings.yml.cg index 98eb297f..4e255122 100644 --- a/yesod/scaffold/config/settings.yml.cg +++ b/yesod/scaffold/config/settings.yml.cg @@ -2,6 +2,7 @@ Default: &defaults host: "localhost" port: 3000 copyright: Insert copyright statement here + #analytics: UA-YOURCODE Development: <<: *defaults diff --git a/yesod/scaffold/templates/boilerplate-layout.hamlet.cg b/yesod/scaffold/templates/boilerplate-layout.hamlet.cg deleted file mode 100644 index e69de29b..00000000 diff --git a/yesod/scaffold/templates/boilerplate-wrapper.hamlet.cg b/yesod/scaffold/templates/boilerplate-wrapper.hamlet.cg deleted file mode 100644 index 258cbbfa..00000000 --- a/yesod/scaffold/templates/boilerplate-wrapper.hamlet.cg +++ /dev/null @@ -1,42 +0,0 @@ -\ -\ -\ -\ -\ - - - - - #{pageTitle pc} - <meta name="description" content=""> - <meta name="author" content=""> - - <meta name="viewport" content="width=device-width,initial-scale=1"> - - ^{pageHead pc} - - \<!--[if lt IE 9]> - \<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> - \<![endif]--> - - <script> - document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/,'js'); - <body> - <div id="container"> - <header> - <div id="main" role="main"> - ^{pageBody pc} - <footer> - - \<!-- Change UA-XXXXX-X to be your site's ID --> - <script> - window._gaq = [['_setAccount','UAXXXXXXXX1'],['_trackPageview'],['_trackPageLoadTime']]; - YepNope.load({ - \ load: ('https:' == location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js' - }); - \<!-- Prompt IE 6 users to install Chrome Frame. Remove this if you want to support IE 6. chromium.org/developers/how-tos/chrome-frame-getting-started --> - \<!--[if lt IE 7 ]> - <script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"> - <script> - window.attachEvent('onload',function(){CFInstall.check({mode:'overlay'})}) - \<![endif]--> diff --git a/yesod/scaffold/templates/default-layout-wrapper.hamlet.cg b/yesod/scaffold/templates/default-layout-wrapper.hamlet.cg index 9eb5ec90..26621eec 100644 --- a/yesod/scaffold/templates/default-layout-wrapper.hamlet.cg +++ b/yesod/scaffold/templates/default-layout-wrapper.hamlet.cg @@ -1,8 +1,42 @@ -!!! -<html> +\<!doctype html> +\<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]--> +\<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]--> +\<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]--> +\<!--[if gt IE 8]><!--> +<html class="no-js" lang="en"> <!--<![endif]--> <head> - <title>#{pageTitle pc} - ^{pageHead pc} - <body> - ^{pageBody pc} + <meta charset="UTF-8"> + <title>#{pageTitle pc} + <meta name="description" content=""> + <meta name="author" content=""> + + <meta name="viewport" content="width=device-width,initial-scale=1"> + + ^{pageHead pc} + + \<!--[if lt IE 9]> + \<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> + \<![endif]--> + + <script> + document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/,'js'); + <body> + <div id="container"> + <header> + <div id="main" role="main"> + ^{pageBody pc} + <footer> + + $maybe analytics <- extraAnalytics $ appExtra $ settings master + <script> + window._gaq = [['_setAccount','#{analytics}'],['_trackPageview'],['_trackPageLoadTime']]; + YepNope.load({ + \ load: ('https:' == location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js' + }); + \<!-- Prompt IE 6 users to install Chrome Frame. Remove this if you want to support IE 6. chromium.org/developers/how-tos/chrome-frame-getting-started --> + \<!--[if lt IE 7 ]> + <script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"> + <script> + window.attachEvent('onload',function(){CFInstall.check({mode:'overlay'})}) + \<![endif]--> diff --git a/yesod/scaffold/templates/default-layout.hamlet.cg b/yesod/scaffold/templates/default-layout.hamlet.cg index 64019974..bef70857 100644 --- a/yesod/scaffold/templates/default-layout.hamlet.cg +++ b/yesod/scaffold/templates/default-layout.hamlet.cg @@ -2,5 +2,5 @@ $maybe msg <- mmsg <div #message>#{msg} ^{widget} <footer> - #{extraCopyright $ appExtra $ settings y} + #{extraCopyright $ appExtra $ settings master} diff --git a/yesod/scaffold/tiny/Foundation.hs.cg b/yesod/scaffold/tiny/Foundation.hs.cg index 2ab861c2..f85a0ed2 100644 --- a/yesod/scaffold/tiny/Foundation.hs.cg +++ b/yesod/scaffold/tiny/Foundation.hs.cg @@ -66,7 +66,7 @@ instance Yesod ~sitearg~ where encryptKey _ = fmap Just $ getKey "config/client_session_key.aes" defaultLayout widget = do - y <- getYesod + master <- getYesod mmsg <- getMessage -- We break up the default layout into two components: diff --git a/yesod/scaffold/tiny/Settings.hs.cg b/yesod/scaffold/tiny/Settings.hs.cg index 04df5d1f..07805e3a 100644 --- a/yesod/scaffold/tiny/Settings.hs.cg +++ b/yesod/scaffold/tiny/Settings.hs.cg @@ -50,8 +50,11 @@ widgetFile = Yesod.Default.Util.widgetFileNoReload data Extra = Extra { extraCopyright :: Text + , extraAnalytics :: Maybe Text -- ^ Google Analytics } parseExtra :: DefaultEnv -> Object -> Parser Extra -parseExtra _ o = Extra <$> o .: "copyright" +parseExtra _ o = Extra + <$> o .: "copyright" + <*> o .:? "analytics"