update template render function

This commit is contained in:
Gered 2014-03-24 18:13:44 -04:00
parent e06bac7f2f
commit beb60e3321
6 changed files with 57 additions and 47 deletions

View file

@ -54,7 +54,7 @@
(.printStackTrace e) (.printStackTrace e)
{:status 500 {:status 500
:headers {"Content-Type" "text/html"} :headers {"Content-Type" "text/html"}
:body (layout/render "error.html" {:error-info e})})))) :body (layout/render-template request "error.html" {:error-info e})}))))
(def app (app-handler (def app (app-handler
[auth-routes home-routes posts-routes files-routes rss-routes app-routes] [auth-routes home-routes posts-routes files-routes rss-routes app-routes]

View file

@ -4,6 +4,8 @@
[noir.util.route]) [noir.util.route])
(:require [blarg.views.layout :as layout] (:require [blarg.views.layout :as layout]
[blarg.models.users :as users] [blarg.models.users :as users]
[ring.util.response :refer [status]]
[ring.middleware.head :refer [wrap-head]]
[noir.session :as session] [noir.session :as session]
[noir.response :as resp] [noir.response :as resp]
[noir.validation :as vali])) [noir.validation :as vali]))
@ -14,7 +16,9 @@
(defn login-page [] (defn login-page []
(if (logged-in?) (if (logged-in?)
(resp/redirect "/") (resp/redirect "/")
(layout/render "auth/login.html" {:login-error (session/flash-get :login-error) (layout/render
"auth/login.html"
:params {:login-error (session/flash-get :login-error)
:html-title (->html-title ["Login"])}))) :html-title (->html-title ["Login"])})))
(defn handle-login [id pass] (defn handle-login [id pass]
@ -31,9 +35,7 @@
(resp/redirect "/")) (resp/redirect "/"))
(defn handle-unauthorized [] (defn handle-unauthorized []
{:status 401 (layout/render "unauthorized.html" :status 401))
:headers {"Content-Type" "text/html"}
:body (layout/render "unauthorized.html")})
(defroutes auth-routes (defroutes auth-routes
(GET "/unauthorized" [] (handle-unauthorized)) (GET "/unauthorized" [] (handle-unauthorized))

View file

@ -17,7 +17,7 @@
(let [p (ensure-prefix-suffix path "/")] (let [p (ensure-prefix-suffix path "/")]
(layout/render (layout/render
"files/list.html" "files/list.html"
{:html-title (->html-title [(str "Files in " p)]) :params {:html-title (->html-title [(str "Files in " p)])
:path p :path p
:files (files/list-files p) :files (files/list-files p)
:tree (files/get-tree) :tree (files/get-tree)

View file

@ -7,11 +7,13 @@
(defn about-page [] (defn about-page []
(layout/render (layout/render
"about.html" {:html-title (->html-title ["About"])})) "about.html"
:params {:html-title (->html-title ["About"])}))
(defn projects-page [] (defn projects-page []
(layout/render (layout/render
"projects.html" {:html-title (->html-title ["Projects"])})) "projects.html"
:params {:html-title (->html-title ["Projects"])}))
(defroutes home-routes (defroutes home-routes
(GET "/about" [] (about-page)) (GET "/about" [] (about-page))

View file

@ -43,7 +43,7 @@
offset (* currentpage posts/per-page)] offset (* currentpage posts/per-page)]
(layout/render (layout/render
"posts/list.html" "posts/list.html"
{:posts (posts/list-posts (auth/logged-in?) posts/per-page offset) :params {:posts (posts/list-posts (auth/logged-in?) posts/per-page offset)
:prevpage (- currentpage 1) :prevpage (- currentpage 1)
:nextpage (+ currentpage 1) :nextpage (+ currentpage 1)
:atlastpage (= currentpage lastpage) :atlastpage (= currentpage lastpage)
@ -53,13 +53,13 @@
(defn list-by-tag [tag] (defn list-by-tag [tag]
(layout/render (layout/render
"posts/listbytag.html" "posts/listbytag.html"
{:posts (posts/list-posts-by-tag (auth/logged-in?) tag) :params {:posts (posts/list-posts-by-tag (auth/logged-in?) tag)
:tag tag})) :tag tag}))
(defn list-archive [] (defn list-archive []
(layout/render (layout/render
"posts/listarchive.html" "posts/listarchive.html"
{:months (posts/list-posts-archive (auth/logged-in?))})) :params {:months (posts/list-posts-archive (auth/logged-in?))}))
(defn show-post-page [year month day slug] (defn show-post-page [year month day slug]
(let [date (str (string->int year) "-" (string->int month) "-" (string->int day)) (let [date (str (string->int year) "-" (string->int month) "-" (string->int day))
@ -67,14 +67,15 @@
(if (not-empty post) (if (not-empty post)
(layout/render (layout/render
"posts/showpost.html" "posts/showpost.html"
{:post post :params {:post post
:html-title (->html-title [(:title post)])}) :html-title (->html-title [(:title post)])})
(resp/redirect "/notfound")))) (resp/redirect "/notfound"))))
(defn new-post-page [& post] (defn new-post-page [& post]
(layout/render (layout/render
"posts/newpost.html" "posts/newpost.html"
(merge (first post) :params (merge
(first post)
{:all-tags (posts/list-tags) {:all-tags (posts/list-tags)
:html-title (->html-title ["New Post"]) :html-title (->html-title ["New Post"])
:validation-errors @vali/*errors*}))) :validation-errors @vali/*errors*})))
@ -94,7 +95,8 @@
(posts/get-post id))] (posts/get-post id))]
(layout/render (layout/render
"posts/editpost.html" "posts/editpost.html"
(merge post :params (merge
post
{:tags (tags->string (:tags post)) {:tags (tags->string (:tags post))
:all-tags (posts/list-tags) :all-tags (posts/list-tags)
:html-title (->html-title ["Edit Post"]) :html-title (->html-title ["Edit Post"])

View file

@ -1,23 +1,27 @@
(ns blarg.views.layout (ns blarg.views.layout
(:require [selmer.parser :as parser] (:require [selmer.parser :as parser]
[ring.util.response :refer [content-type response]] [ring.util.response :as resp]
[compojure.response :refer [Renderable]] [compojure.response :refer [Renderable]]
[noir.session :as session]) [noir.session :as session])
(:use [blarg.views.viewfilters])) (:use [blarg.views.viewfilters]))
(def template-path "blarg/views/templates/") (def template-path "blarg/views/templates/")
(deftype RenderableTemplate [template params] (defn render-template [request template params]
Renderable
(render [this request]
(content-type
(response
(parser/render-file (parser/render-file
(str template-path template) (str template-path template)
(assoc params (assoc params
:context (:context request) :context (:context request)
:user-id (session/get :user)))) :user-id (session/get :user))))
"text/html; charset=utf-8")))
(defn render [template & [params]] (deftype RenderableTemplate [template params status content-type]
(RenderableTemplate. template params)) Renderable
(render [this request]
(-> (render-template request template params)
(resp/response)
(resp/content-type (or content-type "text/html; charset=utf-8"))
(resp/status (or status 200)))))
(defn render [template & {:keys [params status content-type]}]
(RenderableTemplate. template params status content-type))