From a710cfedadf1aeb6572eb1789315911dfc5bf358 Mon Sep 17 00:00:00 2001 From: Shane O'Brien Date: Thu, 27 Mar 2014 18:13:49 +0000 Subject: [PATCH] Generate the login/logout link server-side instead of with javascript. I added a template variable `loggedinuser :: String` which is set to the name of the logged in user if there is a user logged in, and is unset otherwise. This means the login/logout links in the userbox can be generated server-side now, and the javascript previously used is redundant. I changed the userbox code and removed the javascript accordingly. This techically changes the public API, as `filledPageTemplate` now takes a `Maybe User` argument which it didn't take previously. Probably the version in gitit.cabal should be bumped if this change is to be merged. --- Network/Gitit/Layout.hs | 8 +++++--- data/templates/getuser.st | 14 -------------- data/templates/page.st | 1 - data/templates/userbox.st | 10 ++++------ gitit.cabal | 2 +- 5 files changed, 10 insertions(+), 25 deletions(-) delete mode 100644 data/templates/getuser.st diff --git a/Network/Gitit/Layout.hs b/Network/Gitit/Layout.hs index 3c4f3d53c..98e565044 100644 --- a/Network/Gitit/Layout.hs +++ b/Network/Gitit/Layout.hs @@ -66,13 +66,14 @@ defaultRenderPage :: T.StringTemplate String -> PageLayout -> Html -> Handler defaultRenderPage templ layout htmlContents = do cfg <- getConfig base' <- getWikiBase + user <- getLoggedInUser ok . setContentType "text/html; charset=utf-8" . toResponse . T.render . - filledPageTemplate base' cfg layout htmlContents $ templ + filledPageTemplate user base' cfg layout htmlContents $ templ -- | Returns a page template with gitit variables filled in. -filledPageTemplate :: String -> Config -> PageLayout -> Html -> +filledPageTemplate :: Maybe User -> String -> Config -> PageLayout -> Html -> T.StringTemplate String -> T.StringTemplate String -filledPageTemplate base' cfg layout htmlContents templ = +filledPageTemplate user base' cfg layout htmlContents templ = let rev = pgRevision layout page = pgPageName layout prefixedScript x = case x of @@ -101,6 +102,7 @@ filledPageTemplate base' cfg layout htmlContents templ = setBoolAttr "ispage" (isPage page) . setBoolAttr "pagetools" (pgShowPageTools layout) . setBoolAttr "sitenav" (pgShowSiteNav layout) . + maybe id (T.setAttribute "loggedinuser" . uUsername) user . maybe id (T.setAttribute "markuphelp") (pgMarkupHelp layout) . setBoolAttr "printable" (pgPrintable layout) . maybe id (T.setAttribute "revision") rev . diff --git a/data/templates/getuser.st b/data/templates/getuser.st deleted file mode 100644 index 5061fc232..000000000 --- a/data/templates/getuser.st +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/data/templates/page.st b/data/templates/page.st index e1a1725f5..e587d216f 100644 --- a/data/templates/page.st +++ b/data/templates/page.st @@ -41,6 +41,5 @@ $javascripts$ $expire()$ - $getuser()$ diff --git a/data/templates/userbox.st b/data/templates/userbox.st index 532a473d5..9a844b013 100644 --- a/data/templates/userbox.st +++ b/data/templates/userbox.st @@ -1,9 +1,7 @@
- -   +$if(loggedinuser)$ + +$else$ - +$else$
diff --git a/gitit.cabal b/gitit.cabal index 07a76f786..786c823ec 100644 --- a/gitit.cabal +++ b/gitit.cabal @@ -75,7 +75,7 @@ data-files: data/static/css/screen.css, data/static/css/print.css, data/templates/logo.st, data/templates/markuphelp.st, data/templates/pagetools.st, data/templates/sitenav.st, data/templates/messages.st, data/templates/listitem.st, - data/templates/expire.st, data/templates/getuser.st, + data/templates/expire.st, data/markupHelp/Markdown, data/markupHelp/Markdown+LHS, data/markupHelp/RST, data/markupHelp/RST+LHS, data/markupHelp/LaTeX, data/markupHelp/LaTeX+LHS,