update template render function
This commit is contained in:
parent
e06bac7f2f
commit
beb60e3321
|
@ -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]
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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"])
|
||||||
|
|
|
@ -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))
|
||||||
|
|
||||||
|
|
Reference in a new issue